From 08ba782bd5fd1d0392b70e675db99702ff349b7f Mon Sep 17 00:00:00 2001 From: George Papadopoulos Date: Thu, 26 Mar 2015 00:43:41 +0200 Subject: [PATCH 01/85] [FBX] add support for multiple animations (by using LocalStart/LocalStop in takes) + change key type from uint to int (fixes bugs from negative int_t becoming a junk uint_t value ) + detect and ignore channels with no keys in the specified take start/stop window + add test model with multiple animations --- code/FBXConverter.cpp | 158 ++++++++++++++---- code/FBXDocument.h | 10 +- code/FBXParser.cpp | 106 ++++++++++++ code/FBXParser.h | 3 + code/FBXProperties.cpp | 7 +- .../2013_BINARY/multiple_animations_test.fbx | Bin 0 -> 34576 bytes 6 files changed, 243 insertions(+), 41 deletions(-) create mode 100644 test/models-nonbsd/FBX/2013_BINARY/multiple_animations_test.fbx diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 7bd15736f..1698d6d93 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -1968,9 +1968,12 @@ private: // strip AnimationStack:: prefix std::string name = st.Name(); - if(name.substr(0,16) == "AnimationStack::") { + if (name.substr(0, 16) == "AnimationStack::") { name = name.substr(16); } + else if (name.substr(0, 11) == "AnimStack::") { + name = name.substr(11); + } anim->mName.Set(name); @@ -2014,12 +2017,18 @@ private: double min_time = 1e10; double max_time = -1e10; + int64_t start_time = st.LocalStart(); + int64_t stop_time = st.LocalStop(); + double start_timeF = CONVERT_FBX_TIME(start_time); + double stop_timeF = CONVERT_FBX_TIME(stop_time); + try { BOOST_FOREACH(const NodeMap::value_type& kv, node_map) { GenerateNodeAnimations(node_anims, kv.first, kv.second, layer_map, + start_time, stop_time, max_time, min_time); } @@ -2043,9 +2052,27 @@ private: return; } + //adjust relative timing for animation + { + double start_fps = start_timeF * anim_fps; + + for (unsigned int c = 0; c < anim->mNumChannels; c++) + { + aiNodeAnim* channel = anim->mChannels[c]; + for (uint32_t i = 0; i < channel->mNumPositionKeys; i++) + channel->mPositionKeys[i].mTime -= start_fps; + for (uint32_t i = 0; i < channel->mNumRotationKeys; i++) + channel->mRotationKeys[i].mTime -= start_fps; + for (uint32_t i = 0; i < channel->mNumScalingKeys; i++) + channel->mScalingKeys[i].mTime -= start_fps; + } + + max_time -= min_time; + } + // for some mysterious reason, mDuration is simply the maximum key -- the // validator always assumes animations to start at zero. - anim->mDuration = max_time /*- min_time */; + anim->mDuration = (stop_timeF - start_timeF) * anim_fps; anim->mTicksPerSecond = anim_fps; } @@ -2055,6 +2082,7 @@ private: const std::string& fixed_name, const std::vector& curves, const LayerMap& layer_map, + int64_t start, int64_t stop, double& max_time, double& min_time) { @@ -2147,13 +2175,19 @@ private: aiNodeAnim* const nd = GenerateSimpleNodeAnim(fixed_name, target, chain, node_property_map.end(), layer_map, + start, stop, max_time, min_time, true // input is TRS order, assimp is SRT ); ai_assert(nd); - node_anims.push_back(nd); + if (nd->mNumPositionKeys == 0 && nd->mNumRotationKeys == 0 && nd->mNumScalingKeys == 0) { + delete nd; + } + else { + node_anims.push_back(nd); + } return; } @@ -2185,6 +2219,7 @@ private: target, (*chain[i]).second, layer_map, + start, stop, max_time, min_time); @@ -2200,6 +2235,7 @@ private: target, (*chain[i]).second, layer_map, + start, stop, max_time, min_time); @@ -2212,12 +2248,18 @@ private: target, (*chain[i]).second, layer_map, + start, stop, max_time, min_time, true); ai_assert(inv); - node_anims.push_back(inv); + if (inv->mNumPositionKeys == 0 && inv->mNumRotationKeys == 0 && inv->mNumScalingKeys == 0) { + delete inv; + } + else { + node_anims.push_back(inv); + } ai_assert(TransformationComp_RotationPivotInverse > i); flags |= bit << (TransformationComp_RotationPivotInverse - i); @@ -2230,12 +2272,18 @@ private: target, (*chain[i]).second, layer_map, + start, stop, max_time, min_time, true); ai_assert(inv); - node_anims.push_back(inv); + if (inv->mNumPositionKeys == 0 && inv->mNumRotationKeys == 0 && inv->mNumScalingKeys == 0) { + delete inv; + } + else { + node_anims.push_back(inv); + } ai_assert(TransformationComp_RotationPivotInverse > i); flags |= bit << (TransformationComp_RotationPivotInverse - i); @@ -2249,6 +2297,7 @@ private: target, (*chain[i]).second, layer_map, + start, stop, max_time, min_time); @@ -2259,7 +2308,12 @@ private: } ai_assert(na); - node_anims.push_back(na); + if (na->mNumPositionKeys == 0 && na->mNumRotationKeys == 0 && na->mNumScalingKeys == 0) { + delete na; + } + else { + node_anims.push_back(na); + } continue; } } @@ -2320,13 +2374,14 @@ private: const Model& target, const std::vector& curves, const LayerMap& layer_map, + int64_t start, int64_t stop, double& max_time, double& min_time) { ScopeGuard na(new aiNodeAnim()); na->mNodeName.Set(name); - ConvertRotationKeys(na, curves, layer_map, max_time,min_time, target.RotationOrder()); + ConvertRotationKeys(na, curves, layer_map, start, stop, max_time, min_time, target.RotationOrder()); // dummy scaling key na->mScalingKeys = new aiVectorKey[1]; @@ -2351,13 +2406,14 @@ private: const Model& /*target*/, const std::vector& curves, const LayerMap& layer_map, + int64_t start, int64_t stop, double& max_time, double& min_time) { ScopeGuard na(new aiNodeAnim()); na->mNodeName.Set(name); - ConvertScaleKeys(na, curves, layer_map, max_time,min_time); + ConvertScaleKeys(na, curves, layer_map, start, stop, max_time, min_time); // dummy rotation key na->mRotationKeys = new aiQuatKey[1]; @@ -2382,6 +2438,7 @@ private: const Model& /*target*/, const std::vector& curves, const LayerMap& layer_map, + int64_t start, int64_t stop, double& max_time, double& min_time, bool inverse = false) @@ -2389,7 +2446,7 @@ private: ScopeGuard na(new aiNodeAnim()); na->mNodeName.Set(name); - ConvertTranslationKeys(na, curves, layer_map, max_time,min_time); + ConvertTranslationKeys(na, curves, layer_map, start, stop, max_time, min_time); if (inverse) { for (unsigned int i = 0; i < na->mNumPositionKeys; ++i) { @@ -2422,6 +2479,7 @@ private: NodeMap::const_iterator chain[TransformationComp_MAXIMUM], NodeMap::const_iterator iter_end, const LayerMap& layer_map, + int64_t start, int64_t stop, double& max_time, double& min_time, bool reverse_order = false) @@ -2443,21 +2501,21 @@ private: KeyFrameListList rotation; if(chain[TransformationComp_Scaling] != iter_end) { - scaling = GetKeyframeList((*chain[TransformationComp_Scaling]).second); + scaling = GetKeyframeList((*chain[TransformationComp_Scaling]).second, start, stop); } else { def_scale = PropertyGet(props,"Lcl Scaling",aiVector3D(1.f,1.f,1.f)); } if(chain[TransformationComp_Translation] != iter_end) { - translation = GetKeyframeList((*chain[TransformationComp_Translation]).second); + translation = GetKeyframeList((*chain[TransformationComp_Translation]).second, start, stop); } else { def_translate = PropertyGet(props,"Lcl Translation",aiVector3D(0.f,0.f,0.f)); } if(chain[TransformationComp_Rotation] != iter_end) { - rotation = GetKeyframeList((*chain[TransformationComp_Rotation]).second); + rotation = GetKeyframeList((*chain[TransformationComp_Rotation]).second, start, stop); } else { def_rot = EulerToQuaternion(PropertyGet(props,"Lcl Rotation",aiVector3D(0.f,0.f,0.f)), @@ -2475,17 +2533,20 @@ private: aiVectorKey* out_scale = new aiVectorKey[times.size()]; aiVectorKey* out_translation = new aiVectorKey[times.size()]; - ConvertTransformOrder_TRStoSRT(out_quat, out_scale, out_translation, - scaling, - translation, - rotation, - times, - max_time, - min_time, - target.RotationOrder(), - def_scale, - def_translate, - def_rot); + if (times.size()) + { + ConvertTransformOrder_TRStoSRT(out_quat, out_scale, out_translation, + scaling, + translation, + rotation, + times, + max_time, + min_time, + target.RotationOrder(), + def_scale, + def_translate, + def_rot); + } // XXX remove duplicates / redundant keys which this operation did // likely produce if not all three channels were equally dense. @@ -2507,6 +2568,7 @@ private: if(chain[TransformationComp_Scaling] != iter_end) { ConvertScaleKeys(na, (*chain[TransformationComp_Scaling]).second, layer_map, + start, stop, max_time, min_time); } @@ -2522,6 +2584,7 @@ private: if(chain[TransformationComp_Rotation] != iter_end) { ConvertRotationKeys(na, (*chain[TransformationComp_Rotation]).second, layer_map, + start, stop, max_time, min_time, target.RotationOrder()); @@ -2539,6 +2602,7 @@ private: if(chain[TransformationComp_Translation] != iter_end) { ConvertTranslationKeys(na, (*chain[TransformationComp_Translation]).second, layer_map, + start, stop, max_time, min_time); } @@ -2558,17 +2622,21 @@ private: // key (time), value, mapto (component index) - typedef boost::tuple< const KeyTimeList*, const KeyValueList*, unsigned int > KeyFrameList; + typedef boost::tuple, boost::shared_ptr, unsigned int > KeyFrameList; typedef std::vector KeyFrameListList; // ------------------------------------------------------------------------------------------------ - KeyFrameListList GetKeyframeList(const std::vector& nodes) + KeyFrameListList GetKeyframeList(const std::vector& nodes, int64_t start, int64_t stop) { KeyFrameListList inputs; inputs.reserve(nodes.size()*3); + //give some breathing room for rounding errors + int64_t adj_start = start - 10000; + int64_t adj_stop = stop + 10000; + BOOST_FOREACH(const AnimationCurveNode* node, nodes) { ai_assert(node); @@ -2593,7 +2661,23 @@ private: const AnimationCurve* const curve = kv.second; ai_assert(curve->GetKeys().size() == curve->GetValues().size() && curve->GetKeys().size()); - inputs.push_back(boost::make_tuple(&curve->GetKeys(), &curve->GetValues(), mapto)); + //get values within the start/stop time window + boost::shared_ptr Keys(new KeyTimeList()); + boost::shared_ptr Values(new KeyValueList()); + const int count = curve->GetKeys().size(); + Keys->reserve(count); + Values->reserve(count); + for (int n = 0; n < count; n++) + { + int64_t k = curve->GetKeys().at(n); + if (k >= adj_start && k <= adj_stop) + { + Keys->push_back(k); + Values->push_back(curve->GetValues().at(n)); + } + } + + inputs.push_back(boost::make_tuple(Keys, Values, mapto)); } } return inputs; // pray for NRVO :-) @@ -2623,7 +2707,7 @@ private: const size_t count = inputs.size(); while(true) { - uint64_t min_tick = std::numeric_limits::max(); + int64_t min_tick = std::numeric_limits::max(); for (size_t i = 0; i < count; ++i) { const KeyFrameList& kfl = inputs[i]; @@ -2632,7 +2716,7 @@ private: } } - if (min_tick == std::numeric_limits::max()) { + if (min_tick == std::numeric_limits::max()) { break; } keys.push_back(min_tick); @@ -2832,6 +2916,7 @@ private: // ------------------------------------------------------------------------------------------------ void ConvertScaleKeys(aiNodeAnim* na, const std::vector& nodes, const LayerMap& /*layers*/, + int64_t start, int64_t stop, double& maxTime, double& minTime) { @@ -2841,36 +2926,40 @@ private: // layers should be multiplied with each other). There is a FBX // property in the layer to specify the behaviour, though. - const KeyFrameListList& inputs = GetKeyframeList(nodes); + const KeyFrameListList& inputs = GetKeyframeList(nodes, start, stop); const KeyTimeList& keys = GetKeyTimeList(inputs); na->mNumScalingKeys = static_cast(keys.size()); na->mScalingKeys = new aiVectorKey[keys.size()]; - InterpolateKeys(na->mScalingKeys, keys, inputs, true, maxTime, minTime); + if (keys.size() > 0) + InterpolateKeys(na->mScalingKeys, keys, inputs, true, maxTime, minTime); } // ------------------------------------------------------------------------------------------------ void ConvertTranslationKeys(aiNodeAnim* na, const std::vector& nodes, const LayerMap& /*layers*/, + int64_t start, int64_t stop, double& maxTime, double& minTime) { ai_assert(nodes.size()); // XXX see notes in ConvertScaleKeys() - const KeyFrameListList& inputs = GetKeyframeList(nodes); + const KeyFrameListList& inputs = GetKeyframeList(nodes, start, stop); const KeyTimeList& keys = GetKeyTimeList(inputs); na->mNumPositionKeys = static_cast(keys.size()); na->mPositionKeys = new aiVectorKey[keys.size()]; - InterpolateKeys(na->mPositionKeys, keys, inputs, false, maxTime, minTime); + if (keys.size() > 0) + InterpolateKeys(na->mPositionKeys, keys, inputs, false, maxTime, minTime); } // ------------------------------------------------------------------------------------------------ void ConvertRotationKeys(aiNodeAnim* na, const std::vector& nodes, const LayerMap& /*layers*/, + int64_t start, int64_t stop, double& maxTime, double& minTime, Model::RotOrder order) @@ -2878,12 +2967,13 @@ private: ai_assert(nodes.size()); // XXX see notes in ConvertScaleKeys() - const std::vector< KeyFrameList >& inputs = GetKeyframeList(nodes); + const std::vector< KeyFrameList >& inputs = GetKeyframeList(nodes, start, stop); const KeyTimeList& keys = GetKeyTimeList(inputs); na->mNumRotationKeys = static_cast(keys.size()); na->mRotationKeys = new aiQuatKey[keys.size()]; - InterpolateKeys(na->mRotationKeys, keys, inputs, false, maxTime, minTime, order); + if (keys.size() > 0) + InterpolateKeys(na->mRotationKeys, keys, inputs, false, maxTime, minTime, order); } diff --git a/code/FBXDocument.h b/code/FBXDocument.h index b4099550b..9f1849132 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -871,7 +871,7 @@ private: std::vector mappings; }; -typedef std::vector KeyTimeList; +typedef std::vector KeyTimeList; typedef std::vector KeyValueList; /** Represents a FBX animation curve (i.e. a 1-dimensional set of keyframes and values therefor) */ @@ -1015,10 +1015,10 @@ public: public: - fbx_simple_property(LocalStart, uint64_t, 0L) - fbx_simple_property(LocalStop, uint64_t, 0L) - fbx_simple_property(ReferenceStart, uint64_t, 0L) - fbx_simple_property(ReferenceStop, uint64_t, 0L) + fbx_simple_property(LocalStart, int64_t, 0L) + fbx_simple_property(LocalStop, int64_t, 0L) + fbx_simple_property(ReferenceStart, int64_t, 0L) + fbx_simple_property(ReferenceStop, int64_t, 0L) diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index 62f8d9c0c..a9fe97a5e 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -431,6 +431,43 @@ int ParseTokenAsInt(const Token& t, const char*& err_out) } +// ------------------------------------------------------------------------------------------------ +int64_t ParseTokenAsInt64(const Token& t, const char*& err_out) +{ + err_out = NULL; + + if (t.Type() != TokenType_DATA) { + err_out = "expected TOK_DATA token"; + return 0L; + } + + if (t.IsBinary()) + { + const char* data = t.begin(); + if (data[0] != 'L') { + err_out = "failed to parse Int64, unexpected data type"; + return 0L; + } + + BE_NCONST int64_t id = SafeParse(data + 1, t.end()); + AI_SWAP8(id); + return id; + } + + // XXX: should use size_t here + unsigned int length = static_cast(t.end() - t.begin()); + ai_assert(length > 0); + + const char* out; + const int64_t id = strtoul10_64(t.begin(), &out, &length); + if (out > t.end()) { + err_out = "failed to parse Int64 (text)"; + return 0L; + } + + return id; +} + // ------------------------------------------------------------------------------------------------ std::string ParseTokenAsString(const Token& t, const char*& err_out) { @@ -1062,6 +1099,63 @@ void ParseVectorDataArray(std::vector& out, const Element& el) } } +// ------------------------------------------------------------------------------------------------ +// read an array of int64_ts +void ParseVectorDataArray(std::vector& out, const Element& el) +{ + out.clear(); + const TokenList& tok = el.Tokens(); + if (tok.empty()) { + ParseError("unexpected empty element", &el); + } + + if (tok[0]->IsBinary()) { + const char* data = tok[0]->begin(), *end = tok[0]->end(); + + char type; + uint32_t count; + ReadBinaryDataArrayHead(data, end, type, count, el); + + if (!count) { + return; + } + + if (type != 'l') { + ParseError("expected long array (binary)", &el); + } + + std::vector buff; + ReadBinaryDataArray(type, count, data, end, buff, el); + + ai_assert(data == end); + ai_assert(buff.size() == count * 8); + + out.reserve(count); + + const int64_t* ip = reinterpret_cast(&buff[0]); + for (unsigned int i = 0; i < count; ++i, ++ip) { + BE_NCONST int64_t val = *ip; + AI_SWAP8(val); + out.push_back(val); + } + + return; + } + + const size_t dim = ParseTokenAsDim(*tok[0]); + + // see notes in ParseVectorDataArray() + out.reserve(dim); + + const Scope& scope = GetRequiredScope(el); + const Element& a = GetRequiredElement(scope, "a", &el); + + for (TokenList::const_iterator it = a.Tokens().begin(), end = a.Tokens().end(); it != end;) { + const int64_t ival = ParseTokenAsInt64(**it++); + + out.push_back(ival); + } +} // ------------------------------------------------------------------------------------------------ aiMatrix4x4 ReadMatrix(const Element& element) @@ -1205,6 +1299,18 @@ int ParseTokenAsInt(const Token& t) +// ------------------------------------------------------------------------------------------------ +// wrapper around ParseTokenAsInt64() with ParseError handling +int64_t ParseTokenAsInt64(const Token& t) +{ + const char* err; + const int64_t i = ParseTokenAsInt64(t, err); + if (err) { + ParseError(err, t); + } + return i; +} + } // !FBX } // !Assimp diff --git a/code/FBXParser.h b/code/FBXParser.h index e6fa25d22..150b6267a 100644 --- a/code/FBXParser.h +++ b/code/FBXParser.h @@ -206,6 +206,7 @@ size_t ParseTokenAsDim(const Token& t, const char*& err_out); float ParseTokenAsFloat(const Token& t, const char*& err_out); int ParseTokenAsInt(const Token& t, const char*& err_out); +int64_t ParseTokenAsInt64(const Token& t, const char*& err_out); std::string ParseTokenAsString(const Token& t, const char*& err_out); @@ -214,6 +215,7 @@ uint64_t ParseTokenAsID(const Token& t); size_t ParseTokenAsDim(const Token& t); float ParseTokenAsFloat(const Token& t); int ParseTokenAsInt(const Token& t); +int64_t ParseTokenAsInt64(const Token& t); std::string ParseTokenAsString(const Token& t); /* read data arrays */ @@ -224,6 +226,7 @@ void ParseVectorDataArray(std::vector& out, const Element& el); void ParseVectorDataArray(std::vector& out, const Element& el); void ParseVectorDataArray(std::vector& out, const Element& el); void ParseVectorDataArray(std::vector& out, const Element& e); +void ParseVectorDataArray(std::vector& out, const Element& el); diff --git a/code/FBXProperties.cpp b/code/FBXProperties.cpp index 13b354442..5676d9d5e 100644 --- a/code/FBXProperties.cpp +++ b/code/FBXProperties.cpp @@ -88,9 +88,12 @@ Property* ReadTypedProperty(const Element& element) else if (!strcmp(cs, "int") || !strcmp(cs, "Int") || !strcmp(cs, "enum") || !strcmp(cs, "Enum")) { return new TypedProperty(ParseTokenAsInt(*tok[4])); } - else if (!strcmp(cs,"ULongLong")) { + else if (!strcmp(cs, "ULongLong")) { return new TypedProperty(ParseTokenAsID(*tok[4])); } + else if (!strcmp(cs, "KTime")) { + return new TypedProperty(ParseTokenAsInt64(*tok[4])); + } else if (!strcmp(cs,"Vector3D") || !strcmp(cs,"ColorRGB") || !strcmp(cs,"Vector") || @@ -105,7 +108,7 @@ Property* ReadTypedProperty(const Element& element) ParseTokenAsFloat(*tok[6])) ); } - else if (!strcmp(cs,"double") || !strcmp(cs,"Number") || !strcmp(cs,"KTime") || !strcmp(cs,"Float") || !strcmp(cs,"FieldOfView")) { + else if (!strcmp(cs,"double") || !strcmp(cs,"Number") || !strcmp(cs,"Float") || !strcmp(cs,"FieldOfView")) { return new TypedProperty(ParseTokenAsFloat(*tok[4])); } return NULL; diff --git a/test/models-nonbsd/FBX/2013_BINARY/multiple_animations_test.fbx b/test/models-nonbsd/FBX/2013_BINARY/multiple_animations_test.fbx new file mode 100644 index 0000000000000000000000000000000000000000..7999e690c566d3c4a77c58f9cb46305b55bc7ecf GIT binary patch literal 34576 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 DHi)xP literal 0 HcmV?d00001 From 8666b614c6ec3187f3d6da73190a8990852eed1a Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Thu, 26 Mar 2015 22:45:00 +0100 Subject: [PATCH 02/85] Fix non-determinism in XGL importer output due to std::multimap value ordering not guaranteed < C++11. One step closer to a fully reproducible regression test suite. --- code/XGLLoader.cpp | 6 ++++++ code/XGLLoader.h | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/code/XGLLoader.cpp b/code/XGLLoader.cpp index b00c9a5f2..6c22709d2 100644 --- a/code/XGLLoader.cpp +++ b/code/XGLLoader.cpp @@ -431,6 +431,12 @@ aiNode* XGLImporter::ReadObject(TempScope& scope, bool skipFirst, const char* cl throw; } + // FIX: since we used std::multimap<> to keep meshes by id, mesh order now depends on the behaviour + // of the multimap implementation with respect to the ordering of entries with same values. + // C++11 gives the guarantee that it uses insertion order, before it is implementation-specific. + // Sort by material id to always guarantee a deterministic result. + std::sort(meshes.begin(), meshes.end(), SortMeshByMaterialId(scope)); + // link meshes to node nd->mNumMeshes = static_cast(meshes.size()); if (nd->mNumMeshes) { diff --git a/code/XGLLoader.h b/code/XGLLoader.h index e9675af01..232b50c8f 100644 --- a/code/XGLLoader.h +++ b/code/XGLLoader.h @@ -86,6 +86,7 @@ protected: private: + struct TempScope { TempScope() @@ -122,6 +123,16 @@ private: aiLight* light; }; + + struct SortMeshByMaterialId { + SortMeshByMaterialId(const TempScope& scope) : scope(scope) {} + bool operator()(unsigned int a, unsigned int b) const { + return scope.meshes_linear[a]->mMaterialIndex < scope.meshes_linear[b]->mMaterialIndex; + }; + + const TempScope& scope; + }; + struct TempMesh { std::map points; From 9e4a49938365ba68f7eef8b1ee8958296cd7e981 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Fri, 27 Mar 2015 11:04:23 +0100 Subject: [PATCH 03/85] Fixes assimp/assimp#509 --- .../jassimp/src/jassimp/AiNodeAnim.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java index 43b4ce66b..34fcb5097 100644 --- a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java +++ b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java @@ -3,7 +3,7 @@ Open Asset Import Library - Java Binding (jassimp) --------------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2015, assimp team All rights reserved. @@ -68,9 +68,9 @@ import java.nio.ByteOrder; */ public final class AiNodeAnim { /** - * Size of one position key entry (includes padding). + * Size of one position key entry. */ - private static final int POS_KEY_SIZE = 24; + private static final int POS_KEY_SIZE = 20; /** * Size of one rotation key entry. @@ -78,9 +78,9 @@ public final class AiNodeAnim { private static final int ROT_KEY_SIZE = 24; /** - * Size of one scaling key entry (includes padding). + * Size of one scaling key entry. */ - private static final int SCALE_KEY_SIZE = 24; + private static final int SCALE_KEY_SIZE = 20; /** @@ -103,14 +103,13 @@ public final class AiNodeAnim { m_preState = AiAnimBehavior.fromRawValue(preBehavior); m_postState = AiAnimBehavior.fromRawValue(postBehavior); - /* c data is padded -> 24 bytes with 20 bytes data */ m_posKeys = ByteBuffer.allocateDirect(numPosKeys * POS_KEY_SIZE); m_posKeys.order(ByteOrder.nativeOrder()); - m_rotKeys = ByteBuffer.allocateDirect(numRotKeys * 24); + m_rotKeys = ByteBuffer.allocateDirect(numRotKeys * ROT_KEY_SIZE); m_rotKeys.order(ByteOrder.nativeOrder()); - m_scaleKeys = ByteBuffer.allocateDirect(numScaleKeys * 24); + m_scaleKeys = ByteBuffer.allocateDirect(numScaleKeys * SCALE_KEY_SIZE); m_scaleKeys.order(ByteOrder.nativeOrder()); } @@ -141,7 +140,7 @@ public final class AiNodeAnim { * Returns the buffer with position keys of this animation channel.

* * Position keys consist of a time value (double) and a position (3D vector - * of floats), resulting in a total of 24 bytes per entry with padding. + * of floats), resulting in a total of 20 bytes per entry. * The buffer contains {@link #getNumPosKeys()} of these entries.

* * If there are position keys, there will also be at least one @@ -340,7 +339,7 @@ public final class AiNodeAnim { * Returns the buffer with scaling keys of this animation channel.

* * Scaling keys consist of a time value (double) and a 3D vector of floats, - * resulting in a total of 24 bytes per entry with padding. The buffer + * resulting in a total of 20 bytes per entry. The buffer * contains {@link #getNumScaleKeys()} of these entries.

* * If there are scaling keys, there will also be at least one From bdf813ecf0532c13423019a33ebb435a3d5dd42b Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Fri, 27 Mar 2015 18:09:39 +0100 Subject: [PATCH 04/85] new function to get aiVectorKey size --- port/jassimp/jassimp-native/src/jassimp.cpp | 8 ++++++++ port/jassimp/jassimp/src/jassimp/AiNodeAnim.java | 4 ++-- port/jassimp/jassimp/src/jassimp/Jassimp.java | 7 +++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index 14d9cb2d4..710168e98 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1340,6 +1340,14 @@ static bool loadCameras(JNIEnv *env, const aiScene* cScene, jobject& jScene) } +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(aiVectorKey); + + return res; +} + JNIEXPORT jstring JNICALL Java_jassimp_Jassimp_getErrorString (JNIEnv *env, jclass jClazz) { diff --git a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java index 34fcb5097..c084accd6 100644 --- a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java +++ b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java @@ -70,7 +70,7 @@ public final class AiNodeAnim { /** * Size of one position key entry. */ - private static final int POS_KEY_SIZE = 20; + private static final int POS_KEY_SIZE = Jassimp.getVKeysize(); /** * Size of one rotation key entry. @@ -80,7 +80,7 @@ public final class AiNodeAnim { /** * Size of one scaling key entry. */ - private static final int SCALE_KEY_SIZE = 20; + private static final int SCALE_KEY_SIZE = Jassimp.getVKeysize(); /** diff --git a/port/jassimp/jassimp/src/jassimp/Jassimp.java b/port/jassimp/jassimp/src/jassimp/Jassimp.java index 238456c1d..25b8f6371 100644 --- a/port/jassimp/jassimp/src/jassimp/Jassimp.java +++ b/port/jassimp/jassimp/src/jassimp/Jassimp.java @@ -96,6 +96,13 @@ public final class Jassimp { } + /** + * Returns the size of a struct.

+ * + * @return the result of sizeof call + */ + public static native int getVKeysize(); + /** * Returns a human readable error description.

* From d2d41a8aee2704c849c34dec31abc43871a68338 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Fri, 27 Mar 2015 19:03:58 +0100 Subject: [PATCH 05/85] jni header update due new function --- port/jassimp/jassimp-native/src/jassimp.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/port/jassimp/jassimp-native/src/jassimp.h b/port/jassimp/jassimp-native/src/jassimp.h index 6f90bb3b6..fadea4fe6 100644 --- a/port/jassimp/jassimp-native/src/jassimp.h +++ b/port/jassimp/jassimp-native/src/jassimp.h @@ -7,6 +7,9 @@ #ifdef __cplusplus extern "C" { #endif +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize + (JNIEnv *, jclass); + /* * Class: jassimp_Jassimp * Method: getErrorString From 11b9d83d4c1da81c9564c5e6baf0fe9e56a4b915 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 28 Mar 2015 10:50:32 +0100 Subject: [PATCH 06/85] openddlparser: latest greatest ( contains fix for correct handling of data array lists ). Signed-off-by: Kim Kulling --- contrib/openddlparser/code/OpenDDLParser.cpp | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/contrib/openddlparser/code/OpenDDLParser.cpp b/contrib/openddlparser/code/OpenDDLParser.cpp index 1c9006f38..104471965 100644 --- a/contrib/openddlparser/code/OpenDDLParser.cpp +++ b/contrib/openddlparser/code/OpenDDLParser.cpp @@ -856,6 +856,14 @@ char *OpenDDLParser::parseDataList( char *in, char *end, Value **data, size_t &n return in; } +DataArrayList *createDataArrayList( Value *currentValue, size_t numValues ) { + DataArrayList *dataList = new DataArrayList; + dataList->m_dataList = currentValue; + dataList->m_numItems = numValues; + + return dataList; + +} char *OpenDDLParser::parseDataArrayList( char *in, char *end, DataArrayList **dataList ) { *dataList = ddl_nullptr; if( ddl_nullptr == in || in == end ) { @@ -865,20 +873,19 @@ char *OpenDDLParser::parseDataArrayList( char *in, char *end, DataArrayList **da in = lookForNextToken( in, end ); if( *in == Grammar::OpenBracketToken[ 0 ] ) { in++; - Value *current( ddl_nullptr ); + Value *currentValue( ddl_nullptr ); Reference *refs( ddl_nullptr ); DataArrayList *prev( ddl_nullptr ), *currentDataList( ddl_nullptr ); do { size_t numRefs( 0 ), numValues( 0 ); - in = parseDataList( in, end, ¤t, numValues, &refs, numRefs ); - if( ddl_nullptr != current ) { + currentValue = ddl_nullptr; + in = parseDataList( in, end, ¤tValue, numValues, &refs, numRefs ); + if( ddl_nullptr != currentValue ) { if( ddl_nullptr == prev ) { - *dataList = new DataArrayList; - ( *dataList )->m_dataList = current; - ( *dataList )->m_numItems = numValues; + *dataList = createDataArrayList( currentValue, numValues ); prev = *dataList; } else { - currentDataList = new DataArrayList; + currentDataList = createDataArrayList( currentValue, numValues ); if( ddl_nullptr != prev ) { prev->m_next = currentDataList; prev = currentDataList; From aa9dd6a14b84c4039c23e4464a7f55908859773b Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 28 Mar 2015 12:08:59 +0100 Subject: [PATCH 07/85] - check property name before setting up the primitive type for meshes. - fix lookup for vertex attribute type lookup. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index dc571efad..7188ce018 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -529,8 +529,10 @@ void OpenGEXImporter::handleMeshNode( ODDLParser::DDLNode *node, aiScene *pScene if( NULL != prop ) { std::string propName, propKey; propId2StdString( prop, propName, propKey ); - if( "triangles" == propName ) { - m_currentMesh->mPrimitiveTypes |= aiPrimitiveType_TRIANGLE; + if( "primitive" == propName ) { + if( "triangles" == propKey ) { + m_currentMesh->mPrimitiveTypes |= aiPrimitiveType_TRIANGLE; + } } } @@ -571,7 +573,7 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene if( NULL != prop ) { std::string propName, propKey; propId2StdString( prop, propName, propKey ); - MeshAttribute attribType( getAttributeByName( propName.c_str() ) ); + MeshAttribute attribType( getAttributeByName( propKey.c_str() ) ); if( None == attribType ) { return; } From fafe5584b6efc1b98c5fb3d9ead63805392e610c Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 12:12:53 +0100 Subject: [PATCH 08/85] gen_db.py no longer generating dumps for files blacklisted (settings.files_to_ignore). --- test/regression/gen_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/regression/gen_db.py b/test/regression/gen_db.py index d405af9db..87d656d16 100644 --- a/test/regression/gen_db.py +++ b/test/regression/gen_db.py @@ -164,7 +164,7 @@ def gen_db(ext_list,outfile): num = 0 for tp in settings.model_directories: num += process_dir(tp, outfile, - lambda x: os.path.splitext(x)[1] in ext_list) + lambda x: os.path.splitext(x)[1] in ext_list and not x in settings.files_to_ignore) print("="*60) print("Updated {0} entries".format(num)) From e0dd061dcbc152fe67c3ee695e9e6264bd387814 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 12:46:15 +0100 Subject: [PATCH 09/85] CompareDump: add debug trace of past push/pop operations to assist debugging. --- tools/assimp_cmd/CompareDump.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/assimp_cmd/CompareDump.cpp b/tools/assimp_cmd/CompareDump.cpp index 5027a1fc4..9940c18a6 100644 --- a/tools/assimp_cmd/CompareDump.cpp +++ b/tools/assimp_cmd/CompareDump.cpp @@ -137,12 +137,13 @@ public: else history.back().second[s] = 1; history.push_back(HistoryEntry(s,PerChunkCounter())); - + debug_trace.push_back("PUSH " + s); } /* leave current scope */ void pop_elem() { ai_assert(history.size()); + debug_trace.push_back("POP "+ history.back().first); history.pop_back(); } @@ -250,11 +251,15 @@ private: last = (*rev).first.c_str(); } + ss << std::endl << "Debug trace: "<< std::endl; + for (const std::string& s : debug_trace) { + ss << s << std::endl; + } return ss.str(); } - /* read from both streams simult.*/ + /* read from both streams at the same time */ template void read(T& filla,T& fille) { if(1 != fread(&filla,sizeof(T),1,actual)) { EOFActual(); @@ -291,6 +296,8 @@ private: typedef std::deque ChunkHistory; ChunkHistory history; + std::vector debug_trace; + typedef std::stack > LengthStack; LengthStack lengths; From e2addcee77473218b9480ce40089cb4a188fd310 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 12:51:46 +0100 Subject: [PATCH 10/85] CompareDump: fix reporting bugs. The top stack entry was missing (!) and we had an off-by-one in the index computation. Also, all of this should be rewritten from scratch. --- tools/assimp_cmd/CompareDump.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/assimp_cmd/CompareDump.cpp b/tools/assimp_cmd/CompareDump.cpp index 9940c18a6..514ce3abd 100644 --- a/tools/assimp_cmd/CompareDump.cpp +++ b/tools/assimp_cmd/CompareDump.cpp @@ -134,7 +134,7 @@ public: if(it != history.back().second.end()) { ++history.back().second[s]; } - else history.back().second[s] = 1; + else history.back().second[s] = 0; history.push_back(HistoryEntry(s,PerChunkCounter())); debug_trace.push_back("PUSH " + s); @@ -244,10 +244,10 @@ private: const char* last = history.back().first.c_str(); std::string pad; - for(ChunkHistory::reverse_iterator rev = ++history.rbegin(), - end = history.rend(); rev < end; ++rev, pad += " ") + for(ChunkHistory::reverse_iterator rev = history.rbegin(), + end = history.rend(); rev != end; ++rev, pad += " ") { - ss << pad << (*rev).first << "(Index: " << (*rev).second[last]-1 << ")" << std::endl; + ss << pad << (*rev).first << "(Index: " << (*rev).second[last] << ")" << std::endl; last = (*rev).first.c_str(); } From ce7b3af1d758197e478b479d23a944225de67563 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 12:53:08 +0100 Subject: [PATCH 11/85] CompareDump: fix typo in light compare code. Brings regression suite local runs to 100%. --- tools/assimp_cmd/CompareDump.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/assimp_cmd/CompareDump.cpp b/tools/assimp_cmd/CompareDump.cpp index 514ce3abd..0c7a52b46 100644 --- a/tools/assimp_cmd/CompareDump.cpp +++ b/tools/assimp_cmd/CompareDump.cpp @@ -746,7 +746,7 @@ void CompareOnTheFlyLight(comparer_context& comp) { const aiLightSourceType type = static_cast( comp.cmp("mType")); - if(type==aiLightSource_DIRECTIONAL) { + if(type!=aiLightSource_DIRECTIONAL) { comp.cmp("mAttenuationConstant"); comp.cmp("mAttenuationLinear"); comp.cmp("mAttenuationQuadratic"); From 98039ee76e9309e06de29817bb1e3b66ebfb9fd9 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 12:53:24 +0100 Subject: [PATCH 12/85] Update regression db. --- test/regression/db.zip | Bin 1091452 -> 1186737 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/regression/db.zip b/test/regression/db.zip index 265548832663f10766a7a555da0fab219be88dfe..decad75bb80661950c5efd7e506d8fb86b1caa40 100644 GIT binary patch delta 964664 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%0DHS0y=VkkT;7 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


ondrks=Y3{7`fj7_`(`;$0wd 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�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 z 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

dYeA+v|pbj2Ln zfUV6I#YlUF{VvzYbg+BMIDVgUYalI;F#$IJ=Y($$0zfZ#fe061E`d0&Hr_zuVqDU)YDlvE!W zgWm!t+(Vc}2wTRWi|)P@hteV`pyoW43TGM;{{NHnt>BS{_y^8+y+j`hHpVMBWJ_^$ zj?@eBBBWmgZ&PmM2+gPn4qXF^qux-Z085B^6!ob72+s()`$VPA@l%ADco2pM6xOe+ z`40sXb&$i@U-?Y`bj~CTdeee7#^9YHD?sYw@H4+ES!I@VzdjI1ANl`fCEMT1N!Pg8 z&r@5(`%lpJ8>nB9_2g{HaX+S#P>eaHp%Xo-XW!E&7 zPg?p?Qab9pwBZ=@65Cgw{nOG1V?H3Rjjz`pEf1e*epemBmMupSr(jv_U}n78_< z*%s#n2C{*=cTjOr^KY1FKRs<&;OTdKV%G<4Vnbm;s{wvlNckoM&r;rkksyDTT2K z;Pu3+J1%FFrSz^(##-vzUg;Bv8S-Xv)URIyS6xr}>aSmAPe`DQQ}bZz)(#HAw)<-k z?Ucebh1aE(VJc|ZNNIV|STW%AzUqQ1hc|1M zDv#?Tbn`j7>)AP-8DXAxSwGShN)mV-u#7(+@yJ+^K;&}ZRBFyO-ek0dp3xYF0Y->Jc2=dMJujo1q_ zXMV}yhEw=`Jta1V7WVd&b(2la{cYiS8?cXn zbmqcRPzCvvVVOgq^NPpHs0!-T63{gpeq3Ea^qSXlx2n@mDVXCzX35o|*VG7QqL7q@ z7BDHd?a6Yrb7@-G#vEb>xA_s>cyZHLaVIfzJo<8EHod35Tt9X2sth9^*4v~q^7f477SowHznEWZM z+v@45WnD56bwh|rxj4xN7Idmn_?uhVJNYuoE=y_bvWBvvQ12*F%yiA+DuFPDA%#B( zy`3p2uPHGhlBX~e3C(&jjYTtlq*m!6^{|i2XT0MizWwlaL>Tgk$ItuRm*4g4Crit> z#yl4qe)1VU*1lP&v9XUAe)5l-!c2o3gn4aHMdfk_SWk%<7%n0GU?4n&R#>rlQscFIeBbYK`wA!kcvgc`GX)C|ubU6B-8E3S$l#Bd}MApP^Z zbUm_&7kX-eJ~wTw+I$92au#r$#aV37r#0Zj)G#D9^U#DP zKS-lX&PteeUaFI;sZ0l>$@#f@=wIW-kOaXAcc!ndJNmDWU5}4-=H&Dlu8IegNk((Y zVo)(&stvD6nO;%9@2DN#wms);10E~IDtqW*$T#sXXD1P!`7*-$Q&FnvUEhn>DN=5M zD7MNVCCnsW#0>T41xeE0IqFMvujMThncs`d0B=E+m5BKlc1f-{#bdVfEiYKvzS#%( zvwVIjd4f?UA1}T(x_h`>FY#)hCq&xGxqOhyyXQidKmLW&zR430>9$Iz9x!^d{yM-2 zi5fH1w*PkH<6w*uvmnBC>X!9@D{1(fHfMMv#)~GI@%dT3Lswha`%IBNX*E3sj2SH%3ST2NDsIB^0t@tjZgcJgP;RH z2`s;RP|hc%v_XR>T%PyBpUxMQou?lwEQ{Kl4Q8KwS0HJ)*Gz~uKxo*Y3@K_EB0QktR{@qM&hO9@)A&nuiS;wS2ETh5*eQpkgu)=~gTA43Zb>rLo~xA{AXDo!Re7Oz(rlE-C(h5I#2)D4?i zn~d~1PriOzrSV;9R6EvN~fIg!^0P^Cl2gpt$rfX8$zC%$~fus4LsYD4i& zA3zz>OqtP|(J_oqde2gfImg9jBsvapEDBpyT@VA0m`OyvNnT=DP3uU+24q3Z!EVmU zGIcx_3n@8Q`QsagG;3%C@+F7)3ot+TKkn@RS3*1Q-X0ZAYBAi-o@UA3-u^F8JI((D z=nn{E{U`1uP?T$#01Te|3+`lLASVy{eF?5r|2>UGF*QilRuDQ#XDm?r=BE)7zuqT|!cvMyWb%Rl5+fG(bn! z3L8xH^Pjr@&ALM$+!x>m_XU1KHJE{0WE{WdX8$5r=zned{>&A^1~-1#UUC)Fim0%# zFvXhaLjSy65L0#Yn*SrO7*+NHlFjAl6A>#bqf@u0N`-E)(3mzlE9gfbOcxIBpVpnN z3uL<;$aoGO52zxGZG!zQ&r~mBi=D2EVxBSQa8gB(G0{?0lvqMX-!C33kbC=O?1-C# z-aVq2R$w+i=o=+2Jch{=q@VkxkwXx3i z(+;mwzk9!vl9HEhC|BGR7xL9g-;$uNv>935d|9^NvI0XV)ODQqA@Q~u-(nY6iry{d z2&R3+;q+@-?npA~E;#scBbA8fS^d7VY2NT_6Oy3x^HW_T8+S@=WK5+##H!rK^e)2Z zTgR%TSa_xiFvNN$3aK}k5b3M8_23U&yaBupK(`{isTNjr=Hob1ifDO zY2~_><|e|Z{IEr-StnB!A{3Wi{De+b^cm)#E`+u$gKuiST{BGgp9e^;rR&EeH3z*` zI?Q*h_*!6OGSwWQ3_V>_&IBB``EDl$y2SZ{jjN%DCqyGg<2=WsWFG%mtu@G4`g{_5CQ{+}X*A=UGy)brg)NIyT)!uL?!?XpF zT+B-Y#O0YRTc8on(&J6hyJ@j+dc_zn2xs!4GCYlO@m{p=L^7-2&Yj?+IdzHyrL@3e zL?~RM4%ZfvnLGK5Tm?2;01NtUgZWkxiX1zXB%hs-e+s;Agqw7jE6F#M5?3@er#4eL zy7{)LQmZNz&7<~N>6(i4PJ+}4+yj6JcoJVQ8<3FEECDO3%+(rI;I#5@t2sKJVCh!1iARTjpJdC1Y4-9krX zAj1oFey7XoI=PF{o38ZFA3*9Yht2gZi9T(uxfvS#D-u{(_SU`+xw#sQ2E*jF_A(|cGs3|wq42k#Y^zxNP1&DmHj!HaBF^Ea-())|pxJGLaQ+E1*05Unk? zBsMlI+H0sfrIL>|UqV(ZXEK3>9rps4rFqYizyKbr zj^LNoBQPl_JmrIB9#9y3c_`|1;EtY~vlp;YlR8D+%cgYWt!eqGcV5JoBO#WEWcU`u zD-~1}`au5o7(*H;@&HWQ^~5|Fr+6dki7upOc>^f}3Z|qYPV^c4WSt&qyWv4rSU_q#_U}P2dd6PVzN)NpFQ%?#6);{cLx-Uy2Ss{zAs!rPaj)i^VA;y=_6|b`|zPbp2o}bs-Aa3syYlM(N zKszK7kOCh78MxOQD|hYig-!DrK5{Q*)#ZE7w1R&vl71(=y=SX^W8-scN|FZ}TlnL| za#6#D0$?asSd~W@l7A!|W0NLiAZz0wm}*` zGn+~>th#&zWiAl7SpTxQP4nZ$v5^@@rwFfsBkti1u}7P1=%UJC^;^ zDqAhemoW-5ZP1!O0xzNx%Hsri<}EZn8z`9+zy{1=EaM#jce*hCrq-N8)XM*40{$9) zb*5*m{4V+#+T|6@{xodVS??wG-`IZ`Ga;sGf8z#{3+0LKK<^JLF-|i~42_NctoFk8 zO~t;sz?5l+@*x%Qvr%!d2;u3mG5U)|i8)Vz^<}aFugF#>6(pcIPTrY1WbcbRto}^os@;+Ce{$iNyMJ~6JV@FU9>|3 z3T5KZb2oBC6oB>XO>?uIwfTYH5+s@}3ZY-3N)_f~*DN=+nqQQKF+ z`}rnm`&;0Utx^gHr!?5skF9X6cYGSDaynJIV)ETwi@;pLO_TNI&k`=wp?aLO>^2FB zLD3k0mJ@}11>=52j{Lq+nzNbnaf71_RyBKmrs*kZseTBG00j+EARy)_vzEgJPdvq0&;2h9*KJxH~-{U@@GG2f-OA!kx=HI1~DltFafXYjm$mrT)HW{-x@Lgn>VKtu+Gx)*t> ztr7Y#g6pE2{bO6r;ZW+3<&g3$P8|!SOjGrSvZ@R)fBnhAenNMCRJB=$c>uVu2p0$N zQm@{`iOk@_7%Vr{<8erRtoM<2gyxJRi-(LVOO4!|aJ$RjzP>GX^SIw_%H1pXXbz>n zwE5A^wNYPvFEHgw*sdgM2s_V^FbL@olG5ia8Pjb}&yKkGlH7rHj!rk|5!+Y|uk=uN zCIF_ynld!S{q!XgCgKspk^*p|xQWY4kBEJT-`8zsFy?!-nC~*@b-I(e_yb&DfrqaI z_fW);!Uz_HZ?Bei(P5rSh@_^xw^SWPZhkcGXR8;9ygkBN<6_LX#wpKE^>W^AUP)~+Oj5xjF~(4^sPOh%_e)E z9|7~et+wR|Mhvt8SV(;9GZUwd)Fsh<&(7BrI~~^sGg&iJ-F$pNyke4{$*a-W?NZcP%fg*ib(3e!W*5 z+FEKdAgpt!j?}+;v5u$c?t`*I_QHoHRg=Aasm?2*#CeJ8jSBv=oH4*8&?&-+0sv1M z0dJzy8@HDSoPO>zlHSWQX%}YW`v6SZwl;uPCjA~%zKORfArNcU>VW^Ue(b4UXw?zN zTQJ-Jb_I|JbwQc%+SkCl`oJ-_t1H-BVQzElyY{WGp~`aRR~z#QrAOgS-?GOC=NAt` zkTW*A)e?TN-{}H|%P29vDvn}{jn~7qWKM@8nhn&kr5mrJXo$CB)yUdTiwgrItyCs6 z38`Z7Zv3eioe8rt@$DpgR~U=-)uuOfEN$OO#sI`&g4N%f(yAG@X>def9l*JicIg1^ zq_^Qf`TT{gsDd0&Il*N7X#-tFD0H2kqCy+rDfCR3dBneumMUCD+=vY|EZ5&!(1Olz z!CXUKp5c>;%Gv`8`w6=gtU8II55!i|Y?3R?%@me!IIn}Cr1CanMIcc9fgKubFM|iY*PGfsK3wG*8~TGCYO(wn)oNiVd>dH*zuYltAz z=%k7KTzGpOw-|O$Yda#_Im)`SRCY%gFP=LXc-N@b(mz^1P>@ql>ej?XdTmA%OH#nn zZH8821dI7T=;eiTb!aYzHj?+4ng5EJFwphr0i9Ec&WXO6IM^^8zuC-mOEcy>)@SA^ z%=6%G@Xs`Yzl0 z9$VL{S?9W$f47%90ETTPi`P{tQE!s8pzNEMLDN0h+>3Mz3)mCy^>I zfJ>~;$!_;BC3P$opA+HgBC}4WbI;jks(BWX49$;fWH;s{Op@;BXIzR#o*ewK*-?Ba z{`<$27ZbFLi-4^Om+zWk>lc1xN8QaGuRL!*QE|gom)2!UbF1U8O{`~C$?~kt+^g!_h8_4ny;V%r#|JEY;F9znH)Y@ML zX6(1MtiNJru)<6r`kNrjH=)^iL0vZRxS~HL@6BJ5clLJ%WaLB?R>QK*2>Wkg^=kKt zC_NT@V*s)~34CxCMv;8WEee?zNN7Af;RnuxwG-thUv$=HaUWDjNXhmPeB51#&oJz( zP^F%b(6)qOUt&%q&>@O#RQazCS6tvNNfZ^2mgs3hdC2qeI%SLN7fun0ry<+N|--!f=Rw3UhEX<`zM zlauwZeo0T8Uj4#apP8^s?|GR^>xng)laaa6(}wqqa2n*8k^MHaK@}Ya(0RYs>AM#1 zWkNb@>yuKxx)n48S>im^co_2vhrK4t?ZXB(4|nv0;V50jy53O!bSwA0^Ao-9qr);V zmaJ$@M>nLP*t*bQeZgfz&1Ygsk$sbG&J)-5bleP_I&!Lg?!ai@MOyIuypbB366%L^ zO}n_zZuR*2Y5n>8N>|X-JweFs^tb1+>=`qpG!|o)!18uH=@vyeMQ$W`s^WKYap#4) zNs%;IZ04pV=?z-`upA|LNIYPja?? zS0_r3M|2-Z;Ixy(K_c5knyPST@EC1bwcZ6XUuwvsrwedJQHq@~giC2$A}0K%4w(=L zGmaP?vFJDc zEY~lWL~+|;IOyFe;$Qr+e`a}slisjEK3K4%AoMfD&@Q6(dlLf9G zVD8SDunT7jX2isJJ{MKY?qJHtT8Vy-;+sOmD!q7tui61`%HWXJ@SOPx$EWF2{T102 zDxXR?^m~IBv%c4i^{@v*2%7x}npWT-aaPgA-~7K|kP~ZgNMIU4#BD$eWn&8qr7$lZ zzB)m=*S@hIzo-cbnYP>n-HgJpq5=a`nBCXFkA+S_0jsw{-0mJMhIP;&<4#B-VBR60 z&!<7uFg8Z|zhQ+aisWD|F=#2jBVi_UDA1dD>u$u^)d0%oVCrB@Y@^jby9BUh>4j-Q z_u~W=|6?m#%ABOD0SjDHH~qb) z2K9c0exdxQb@uP@?FiTL=aFX~QP<-t!|~3{@)hN8#}&Xb#@uMxkQIK_ufPMS3Nw)D z34$`P>sKH(Iw^D?v2uv1dtSji0lTYf(mTZdV*OO?etzP+j7_KI%|_^{te==Ngy4Y; zU8K#e)>D_`>A6YeGQcRCNr-ju^dx z+by^eaB}M>QNkVb`;~soj`sc)%``Ss5>ezB0XQ+$meBjZC0E0MaEqy^-v>38ix(<^ zq}`CoQ3Pdc;S#7IG_qhAd7?mURH)`ajB;JTE=)q32K(n3`DnH*A-j?yA>=<_J?oEt zC_sW8A=ltH|2KL#k2#we7b`Evv9^l!XJhQ=rC7c_b2r)psotzSWATNXa1^TpQYUel zL3ezx1pR$LdZvid#>zsxJ(>ijR%pK`(^DrwlZ77G;CV(#;*JsTjn#hJ$!L_yWw)Yg zJ|yhv%VM;4|G0MgmFhS&H1tEgtAW~_RQ<%roJ**FKRXA*eEJwn@`U2KRf)0+d-`R6 zSw74wLz%l=RFbf416PB5`yt(W#MS}9TE+Y#Qw`2y_3Y27$d|b+O+z)feYVK@$tGR- z^Jzff$og#`7hlxWHF*de9w7%ar0THwHC$4YA3Qw&v9!%6Y00a(Bsj3j=c$sI-zV5H}T{mDp@r z@Zm(@fTQxIh$GWskH&dBQFI3`EFYBxX!?hN`wh9R&MuOR*MX05{jr~6C`}9lmBrs( zMy}JFEGj-7B25(P>t$4yi zl-ur`1KbEgYgKIeV%>exLXK5B9{1Ryz$Ulqde+O{Nj5Tk;m0IJV151|Go)nE0~pH% ziXYrEU4PwMKIurY!1IOl-FzCUJ3HoxEhGMX)|yi*Z}Vj<+Y@K&xc zOTJEu>-qA!#yQEHg&>vQES>u5KFl`^=+;B6t*BNv=j7B&iiYXCVs#Z1eWqY5S5R`W z;4@HWZ&Ir0L8_Ki*{j65Q(jrJtB)x-z#;o0 z@p@;dA89B_ik4=0ixw3TTH|Z!(Z?cq2o1Nbp3e@_dD6S4l$>})Dnt{o2xP8e!kQPl zVUwRGbnTyO7f1Fe9>Nd)R56OT(zY9cx1Z_XqqX?Bc{nXOSy|^aSEGKy_D#h+^u!Kc zw*biq&0%4a-+mq#C~(Jv!Fgq{FNK3>k)gPx_kB=t#sMc)7)(!dZ2&R1++e=;*~Ids z9&WHPJr_qOzTq9-5!my!a@i$rTxQW9e3k2+rliT>0$nM=SR6_dRr_8u*84c`btS#D z8~C;olH~T`;dTU7_q@u+aG^P(uWfvS0TNia+$$#9A%@iC1v17(^%2C!lvX;rT>J3} z86ea*l~o)6^jv&}lfqD5So#F9L4Po`HPST-JO>@B!RBAMV19T<(M1CN9{P$sFOnwY zM>)I_(f-1I68@gXb=jY{dJb4c z8Wh{J)}DK;IbqogMaV;Mg<=Bqy+3b_Iy6(oe9l>zb4EiqXbspaT(<-`rZfuo70NnbIQ+xDAzBT0>u z!;;;!Rs!FTOU;8dzB&M8{dYTp-7Zfxx<}s{Y}Ur`DT8OqTCDWq5#W$tM^4D zD#K00NlS99wDQqtObkpu?agX4y=y zX_`bsqg~AD%%)KbIGAjgF<3ZvZ$Wq{kw$;Ky;zNhK(2#GN}%Ze+sB_;8xkpymZP6h z`nQR%P0@@O5q_8q8qr%Q_~4=>zYYaH)VLOo@*IxR4H@1!0)LDijA4Wo%>YDbgb?88 z)R19wK;smz=+$>UPw9{`uhtcj&2LUEAcrrbR=)`Nm2bj276K+O-hUYQVJtxP4t0Hg zg*l~qqR7kvsX+&^G!2B|hK#4c2NMA+_Jnrr@!PZ}0yC4mf}%34ofhl}nA3|WYbWRB z?`$b=i>N4ogv}v(ET(4gE<^iWnn6-zMHZKKgYnv0wjY2 zP*jy5vKEZvSE+`!Q0~vm0@L51a^k(C)(yCUAc78t#uBIE05#h|G0~#UbSj-SzImI3 zzLZHE=bn+kC~Y=R#(`KKnO&17?46YBptCogdf2Glp4}M33)$_aOikI zg=j1>^b>1c55MjMF23hhvGv7{ zd(w6)VE2cdA1BjobHkUGNk>6so;4eVwzi$+)gQcf^_uU?=W6c-DcGAI7!~c~Z(F2X zRu;RJ%{*M~7Hl@c>d(KqpeP-=KYsoWB=mf=U+!SNN>}YDSvcV`YR)BXFcmo|Gw-In z@Z?{#Vt(mJWcvi*V|-&b`hmEphI_^)AmTx#ViGwEJh zjcP(~^*Qu4BA!oIR0_N!6X9O=}d!9KWU`D7mKDm<{WI? z?3TxxV5@~1KCn$bJ)`t7AN~zuH0ngra&9q|)%?_m`h9&Oo=JMP*CFae`Be!HS}eE4Z5wJh`|fd&}oC)JX@Nv2g4*d zCjCKbtVktHMbe`eyn`4)GDj53rcse$Up7Kx@=-k0+$6C9>S-4$>Y2Pre5Qpz1p7nC z*u^+u*^bR&og*;BW{GbKXhOOYpMTH~)&iwNc9dW%5%CxXoi|ilj$V-jOH~+TEj7J- z$ysvqgu5As3{+6Q8y__HiM2Cyx)IOH8J zk;5vdyWtu8pY*pU?{j_C$>LDmgtb2InW;^s(+6#B9<`maoJwYp7_IwVGcBA*h3W$z zKVsxho&>@g96PzLUhbSV$E6o87of}R5uVVYZ~!irnuEWT)lS=a9W&tQ!J2+e7s|Ne z^y)wpD;=%m($!>H$hvPys0P`^ZE8>*qI6o{%|K@Oh~~k~kD|*M?}lkH&Lu|Jnw*Me ztWXL-L?2V(lt$ODl8OJymyu;>HtQVsqC_Z8YozUxkWX>7IHNf ztd{1rBEvHq(XUp3x0LR$=8$Q0Z1H@^%U`cFM#_1G5384>TA5W+0t{U~=s*Fh^?8zp zkuOpntxd&W->}hlT5DEDcd>5o=LvBI{C9w!(Z)lNsqcfdYz1x()aS z8-IE@y2An{(8T?{i6Nx z0p^d(pZ?wmvLED22*3wU{!CHLX`n075_@ny%VT~e*0Wj?iC^)i35UfrI#d)1Q`X9Z z1{|Y`=I)O5@|7!k{91biUJn>u4itTbBZ&AK){#Q?{7B8WUL;9rMoRK*BOxB-cRzmL zneH_;YYVpl*m?QrPJ6jR#N)lqSdMB$EqY{q1Iyq3p%bzj0*IBSFQ2K9iQ!6)bWyYCS zQ3N|zydIAW_k6P<)mlVWH>7Z5wZxNELr&t!{&f z2@QN)5f~~X(xPfVNa_?0nCFEuD6I;Pad$Xq?E?ZTdW3r1#!4GAK7pSAzbnoO`l{8U z(o*~|8=T|~VI%R@LH~C+sa~AR2=rtZWg>IcB7y#*^KXV^rUJU}Uo*VHp;22*+AJri zRp+_D2KILZ?I-F-ty{b3OctpMNWnHvoYAY8y%ycP4ObkIRm5JX=6&vyHR!=QV|ZPr zn8xM2PoJ@md;qhX%s*_ABWl6`tGK-1oV>rzC&p2`-F^FB@03%gAIAvcS!F18J*khn z2d;(nKHh?sA~%{T8kNnu*v{w27?WbQHO{4c{r<`!=iyWEB=~M)DD%l(|BIKh}SCp;lyVFO@OaWBUElvowA%5F; z_2YefBE1m()A&#QhoebFUm>l5INp2SU6%ahcW?5lMN{l5daGz4tXVE?+h2cv99uo; zRatU7-YR_v5D>9gzyL{q1+3oMv?-IMi|kHJLev;fH+uY7^B%W%SorvmAn^QPoa#0n zd~4$I6iWVJSp5(oAaXeLp7-Fc@Z{kOx$op*eCx&D5x*<&>F#b2<>`eP&|cUmk{m9_ zk!)>{%m#1d<$8}KY49vM^rQ#tmqD^Oc*0Kjy35AFbbTAlQ`_a7UdraWu-OHx=@3VK zhO!>f%*fJnLHdj%|a=g`6z!NM1VzPsVzAHQ80-(4BMUGUfV`!VoO z?peCXJ_qms?Yk9O8L0v=gs;Nv&vm!bLRM@I7%?0#FO?B-*b(h zN`z-lRqiS6g`Eo3nqAtWW} zd<>r0J{!77FMu~9JP8WPS1yER^5w`=UpEkIvP*6ix*IzUctG&2?Z#FRX5$sv;jUszv-1&NE$o+DYo*x7&R8vDp1Yf6#X3*d z!xW~e*a^|*8c??aGy!BiD1Z%#0MxsSCx_=G?X>Wl&)lhnu#SI#PoFd6@O z^0+wE*-a7DLiAUlpZ@?x5U0YZJTW%=6G;F%H2_dFGi3vsAYt$qq3}Vncu1tb(B3le zk4}jo8(Xx0dC>Lj|KXG~BsC-!D3TPB>(|hnozXBHNGS*Hul)b2zsLLhd;dS2fRFd5 z9ctVGJd2XAMF+o}|04hB@MmUeXCxPjI^IvJ!!w5Bi&}nl3y$6uLel|Nhtc`GWz2Hi74>D zKS09!9}JKvQ2pNrNJRfX43Lxz?a2>c2I(*s>+s@v)LN z1Ah*uyNZ^<=}BD0_@oYnS*xHfN>o^o1@{GT5~1S-V^J3?!zI?RvH>!xAa)>v=;GSEViGPISekADT~JK25InbAJbTKsrsnv3)&6l@ zbI{xA>``F-&HuyNJ4VO(uYaSlZQHipG`4LtR%1-uxbehn7&HMZ z8Yib1hM8H73xdi9S_N?E2RsTbw3G^Qi&#bR&*I{9%rn#;si%%eXlM}6*wGbSsw2u> zT|xzEz+nlrJq0HrC_qOK&8Pjx0kh00;sL5=DMY*_Ome9u1LQIPs|Z!+Hm_Jod3xl3TNNRRrkPee`# zu)i4OaB-91h|LgQ+%UBsElOafdZ6muaGQKJ>X`Ho@C0TsrLO-@sf%^zY%_McZ*IF8 z9a2i+3}B!IHG%G8?c-n(UX>Dk@GvTak(3U-+t4PncvHuFDkf{Pn_aCGAC1&H)$WPMeT~w-)eH?qO$echWraLpE91`bP~d z^+=AO_Ht4rcKivgSaNF|)29@D8q(DG+-uyp@Im=$G4l6gvG=8UmHYJ3qNmIGA_l5o z<~tY-(2#ufo$yDjB*7La(=wa^DF$xH#aof|@KLZ(d=1*cKMhixe>=cCjp%&g%}L2~ z2q7KO+a(5YJUf07pk)o)ZE2?sxuCw#l{6QBcEl<__cTixVM)aHZ|TQ})ZP%{nA)fl zS;KVAa9^3XvTd19Uc~6~*PvwSTn-&o6&@qL>1odZYr7nco#Jt2W-S-}{OH9w<^gnv;|+2H8F`hY4Y18m z$X#_`7hxxVF5|cDeYwbBQDxI6n;P^&Ce21mARVgJet0vK* zI&f$WAn5ddlU$vwzIV>jN#AaknO@qrLujmaFPfffgduR84+q!^JFb|f^{I<;?SxRy zKP+jBysY$-#(I9$`oQtUvzAI|g)#ihUH0MB6#j?41;@r=qREOg=R%w;pXKsl{O?4l z_mVQ^<|LmLy!oa=D%-11VXBa1b@f$+p$E^2fCC-5iCBvqywJrL$#3lC~A65BdF;{T`T0l*_hD*ipG+s zqpnxaF9O?UCl$TFFsDM;&pj%_%7)o}G?R%ay;Nhrnm+&-ZyL#V&7gxEBFb+}rf6Ih z0Ii^G&GD85vc5B8%$@AgvyXRoUg-o{H-pb4;V!(X(kMBl=*yB593wWai3F7Nbx=w*b5+wSDWvoX z@mV?pf0aYy_PTtoT!goHXf)gE1hWe21Q^IBON@;@LnUZrh$4f0k+#YNTe*aJbU(n0 zNbA8pQpgt?oJ6?0iiKg8Zo8$HE;rl|Yr*GGoed!S0s?Kysjrm3=4A!}IAPv!*bx1) z6D{D`InCCuqh5mn56C7scjZ|2HBu|K`^N;rB)$_!Poku^&Ag9Uq05+e*Af0CbZKF) z1Yv}i@iT|y<@k^=UG!6_7E^}kKKMLO8n%(ifnC5$fj>G?t?N^t!h;-m@z==T^TJ+C< ze61UW<6UfFsQHQbB}YJiR0u-cB+|um<2TX>z}#xcnE!R>M!_BuqSe*aq zfB7%nf8;8pJ}~kQ zQs7%%9hWaxHH`gHJaNppK_36}^jeq&isOCn7&mOj@t>Vh2Rgz#UW0@3MB?s?a34}U zA5m}LN#W1an;Pg08?d@SHW(NmNz%~Rld;rL@uwJ&+Si&n#6%iZ^UmuWPqIr?0qIxkUpYNCy z$zq?FsL0qZ6ZeLGPSSp;D*paOw0GG`dsajIf{gDXZFqOwR}irk;NkJv&vrgdxi|HY ztF1*7W{|Ilxv}DNB!8COVTAeu z5=E_~KAP5bXy3>FNYTSnqpYLBbdqUd2O8v&v}bf<`9b_cEDY89I*FQyA`5gjwN-J9afvz{n!E!9+n){? zbEV@23!eI8X52T`+_3M~Kzf$a5YHV;5D92BBOSl*k#@`@xmcZ>ixN%nAN~cKuKM32 zK%G61DpV!9>sfL|&>zHlInf{N6xKV<~nSzAW z2248NU(likdWP1QgdR*BGBk@nrmM_{q@sl;mI1CZ6gZMF!r!{tY?oA)(3TEVE`V(z z?;7uiKyzP|{6-=PbGowqc&S39G~bI^lVXGVNDyrX%E~)?1omH%y|ntm-JVFY#Pdn3 z5*SgRkTLQtx&+h!`!<6g6fZDMc&og#TdY~K?n%_FiWOQ#E9RrQHl>YoJ;l#)#FDBu z03nYA4=!x0hnWWa= z36XQ9)6N`0L?t3Daz0bukKPOvJ3qCQB z)b78bA^*>J*(O}-J?hlIV0(>i=KH?=Yrxyg)hk)+4}ry1QeQ2b_occ3z-{`|>pkzn zS?*iQ#M}C@&$G0=-7nL~BasNgXJ!E6WR zGeiwB_0zHV-8o=SwUKlPCKKLbRetwFU;fpd3?7r?x?blyy$Z3+n5DSzl0U4`OI7%C z>7X{OXRf$}XFKzhzjff*7Sz>gpuIT^+^Ps~wIu6biI%EJAnZ>EEu#I3^IA>ak1ohk zUe(G>sjY@wryNBk95&)#@t79xylMBln6JV}AxUK)36q38aftE$39vX1f{eul@W_N! zD+P0PS#!IIK$9#GS@kzbrNt$AIqZPA3p>yJf7}WhL;_K!Ah@3w?tkw-7Ce^xpg)dN zkWJ|i(G}}ZS|1!iCqDg=!OMApDvEpltY|7ae#W-TNTS!mGZAT>)YNJ=UOfu7T@y>_ zpp?P~y-kl*YAPDKKe`b>@dm!#T~6Ycbkbn6D3-5Q^{}<--TFL!-|qdK7-?{}G8dy| z!SV~)em<*=N1oX|ifc|oP4U|ROHAB%meNwmtL^w;0hgNdLlYt`@1Hi_gS92hRmaUA zO@G(c&SKCv?K)0j{GQ`39WwsO?iP@kBrt%v*4-SXUCTVe-FlV}0Ps7j_Dl3PM3uh< zM~(JqRv-3)Z0Tp=?_Y?ep4cSzVFmQ6!Sr_+oa4F%NmBV^B4+8FC$HT@aboFwpC=_) zO97Z#y5S!_eve-&t!WFNB~Vp>SRf_ zxCsQ{zlC-sr^>?z}2~uvOkSqRZbS+kzz{IiNSpa69}uFgf4fuy_4a zZm+x88ozWNlu5Sg`^dYK=Z!!R0CsmAZyfF}+T|Sav$-$dbb1gnsW9-C)WLLsM#OD2 zOtxo#^?9=EI3y6gdGn`lu zjem?>rd(Y7yxi;->j~`gy<%8{vn%4?8KUHIoAU+I3uA+I=Ey#yGb0ci968Gxt@O6a z4;%J5z7n)N%VxbQb<`mPDiy{0#4ox<&woF>pXIh1c(iI~3m&=jZzm8_xyqcAlM(Y! zC?#=aElkUf@>44ndbb(X6xC~c>sOj8Z_=L*(}CqXVACtZwyy>tB}q5>uOl{-sJy~K zD11Ap#aaL`u2MG8G>`$3-!Df6)~hQrulzdI#0T(wNUEF)5#9~}OXHNH#)5hWbyVN1h;n`u`@bwunK_; zP~U;we(*h9PkcJ`^hrwJ?t%irkm=gpK^W#sSi#*bz zFFAfRNy`d^!4X^iL83`xFME%Zqny`PY+jq2wS!ze_Ez4yX-glr)BS}weF?1^8*gv= z7p@g+7uUTS?8$Vs1PA3k^KsrAgb~cY0-*fr1YgMJ2xE6bm>NTDV%|c`Vilt^wM_Ib zp|CQv&RniH9|7;9HQtEiGYQo(a=4?6CgCcq!5)_}RbLH55sHtPZL91V>+U3WRMuHm zljr5(I#F*i4p0tiU|3}iB$L$3`KEX241*_X3v*YUMBkTiLhe08_>FN$Q*vJG0kgft z7v_j?>*4Q<7q3u9j1(pj>ViGws(ZZsP-3HGGDqSAekX~pW00R(Q1o!kXKcnwrG>bE zsKaZ*?3+mWg|8kU1h zr6V7sR$bvrVC1uwkQm_~m!18_0x+BMnb*$fgZHozu+#6?s~>lr2anX_y%w3%hE7j} z6dWziYL-G2KxI%7?ZVuU5|QG7rjms$=pvLU3OqxYA1i$j%+O@TsxHc4g8d@xbG z5r;;;T+430ZHcZ6k44=$8E*Hz%X)uYcjKvL95mBkZGhd;ldFb-9F8%CS>==jM4_uA zh%$xsDE?AZbT_q8r!(lZ#lKpBtPkS8@0!?v4Kb7wko_zeFIT+nQFA=ZoNb6^xY%xK zr?GLVpiN3{#aA*=djM#LaG^Jm2RB5Znv3}%|L*>po@o&4N&Y#2TB0#n3;N1RuZicw z*oiBvm9)UAr0Eu1?AG?s_h$wuz$xAdW0!{AmX&3KGqmaoL-tLLgl)UU%qU{1JZ*aq z@GP)BOLi57T&r|$6k+Z*v21f2q#H>=`Y4|wmpRQ7c(>YdhhJqwUIP)Fk@GXYkg`?z zq~j`O)#rx)@#NCg8!%6T`}x4&6s#R=fQxkzWh>f5-8}ZjVqR&laK}6r@E|#_q|nXq z)2Cz76`3|2z_Ez-2on?gTG=6wUI*CbD_<5|iZp)T8HW>eI+*Zp*XZ!ve4y%i+-{!d z*w4g#2*f^z7CE|Bg!rQ0<*Bsw+y>>>wR`mjUf!znJ`nb%2>)sxupw$Q@2CI+uFQ#CmGfJ|Nu(2-03KFLX+D_*7*;bd+NnZyQ@nTvbn{tpd&y_Bvw7H(y&% z;z%6xi(4{n-278fh#kB4jptpSJ$tunM9p$^1p$9ndktr?X2Fq!IC^$9;s^8-trR4AD;*r_qNah^kPuciug&Z)FybT zE@Bb+x90c~;_}!ei36u`otYyOEm+6A&=wzhxa`ML9Dv zSY%QqOk>+sOK`WL*-5QvU}SI(iL&Ys;SX=_ig)rp>O_|a0A%^}-rX^UE|IG?yD?9U zm@P3F$=5;$%Qrr~L|X3*N@x)O7Mz@r@o&M&4BP#AcfrhX zurnuONQz=hb)V>~R!EKTp>bhr?nC;Vbz!d&haSK{TyfuDZ4tQttu5j=c08~h6HXx2 z0|FkHGlh&|icq&U!2RrhK6IArz7Qa)d@bNx-H3Uj%;`||zNy=p`wJdz6SP}>ZQscG zMS_-F-pE^Oa}isqL&-6{{j@K5F7M_Lw1)^0@&)@-Dsj96+&BKeNB5&1V5eD9s2~DG z`4O?nj%5BdY0ik`6V}*Yar|V$ElBa-pca7O3XnLg@gUY&WbT)V@W)ac{?cLUbW6Om z4={gA$omIY#YftI^UrlT~PT9 ztL%JGn70ASJ`_mvIi^|lQ75AM^0yvhJ7m**p?)ef35bFB=SE`_od%iS8|%7-)o)<- zP?s;ap9@_D=5eN4^!OcYo?nkwo$kr^q@9gm--XjQVOk+RJ?iL!-^nsmrA8P)2~m-d zuw(PDg`STFGN0zfeULTWE>ijpC57Q1#1uhWRrm=2@@9-I?CP_%CMG^RAK&x`%Gbs? z6?GHSFbzj?n(0`~Di6~mP`JuKDusT4(8P*l)IlQ`NlA>8Ro&g6Qqmvpl=;(XZ(CCl zMaZU~{ioCZGw1m?Rc!uhzp+dBlu{q|q}oG?&!;==LTSFcg~#T)>7Y`3dR5On$581& zYk;D!s1K0?Em9aG?TnTrgJ8g!z1I=fk;h$gZQ=fp-Y=3Wd@9G(qc~k0s z`Z1YH(x~?GFH7{F!RSM=3dGk4pc*Uef2rH~zc0fAk=3ls6O*%lC~AISz9cviKvw|? zi3lnF!J^OX3n*J#>Q84&+{CZPkNotPFi1$qcWH8wxFNbw970eswP4jwwk|N=_c+MB zdx$=HfX&%!=b;u~kZT0bz1aJ;J9W=oKi~U{G?5N9K-Qe@_ebkQ!VBwf54u!V%kXb4 z-XIRcbWGPi@5<4Nq<80fTDq7*AeATGoqYex9y>655g!I*BtfJX`418vH1Yl8+yncc zB>d%{c)#u7n7M*Ev-Y++E}&`+G`aeatHhXDklAMwNR1@;Z{9&V{k-*b!rc9+c>90; zGZYj!OT;|;v?T~C{&+kNQYeBG)6`%vI(Bw&c22ZRNamQp;bpLDI0;;t_4oJNe@~7= z0X)X2yr6zME7L5$gIsrjaNR%B)FW#YP_Y%koO{tMuS2OYN^vLSx?z|iVcwZinTBN4 zu3V9hdZbagP6+veZ`*M|xD2_r`GCT607G)&d)V%@(vbrhGaY@x$+2)+4Sh5Y#$X0p zRts5!9K=QUcIt*He{+T5rfv$(48a{w3QTB2#3T#c7Rtj)_yfEDg|Q(n!NCHf9Kh8P!~%9p!SYh7t((S*t|!M&JJ#6^;coDnUU5B7KKJZA{ce=KS0E+gf4%OA2^w1WotRz`SPBQHi0CkxcWDW0 zVaG1El=OZ?1CiDUynKWsU=0(m4zM*-m4#{I8d6Xin;vD5fh8=5oa=|=;NdTpVWs9| zuB^j5!y)n73WgvE29o@QcY;m@2i36ytD#}B{`xk}933mb0PP*1@c{N%gT#Y_Ujz9G ztB|2rn}*Se%!4Pt3Wm@-*l$h<1n*UtWd-*1dY!Hc;%xS=RVvD=^3zssPlbc272sjB zA^dPDEVGeOgr^pWlTxKz`^Lb)l{fHO7$oPA_jMPwj3;|}aQ(^U&QVwpgPS(i(SPOK zNknkd`^C!h)ZSKavkH)3p$X@l-_GM%+*xSPdEUU|>|1#!XBXyQS?J@?&rsf8P&1MU zu{#-Z_=^8{K=^K`)i6%_`MTqx!HLay6KA_UKWe1LJN8Vm20Lqs7T0B$Jm-K_ySd5OPCMZ|@pnQi7TGsknhJ`@ar(r+Pm8RRiWvyJs zWq<0okz$k}kj0am{tWta^J4tAkxYW1g7e!OhM}X`^*se=Gv;VpA2W=gj43M*W+vp7 zUrJZQqj&Dt`=o+N&ZGd&_(obIM$8wQW|SP|ujv4teU`jI1txY~iLdE8YHBi|tHhP1 z&sbk#0_-6>ro1ExN75rb+2)%BCwKGmvMtRe581gYdiB;F0yt|okp;b_v)T1cuT?PZ zSt}2`NTU9oC0A)=y*s+1ty%dtCFpTwbpM}g%;@+xC3{PQh>XTaqJ)dI+EA2xnhC&u zW4#-A0@ghO=#A^MMP{0~iORt~%TCxKMt7sppQKosor7Ive+(V}B9VpWe0>U~ou&44 z(zifNNPIU=lz|u~7D)RDR~#cESna{en(GNM)1M>-E{(^Fy|_* z!Ixr2B5I#5jNdBfw`obKqdXc447W^J{NE~$F~GiL;ifg}ob5S&J9Yc<$>u#%E86&I zNUg5)(#K5)%^x8fFbE&0S=vYx1vq=WoLdQq2uP_<0RP<97uZ0U4L}*W1>^*hxsnjf zZa1jasjcGA$I-2z(8d)iN3WFqh)k)s)jyms@S(IeZ8JLbxwW157yzM;*|dvA{q-So zhBAbu+7Gw3&si?aR%~S{D_YZXiy}s?dOYUIJkRh$ckM1jKiV$%#sUg*)}3R`^<9;_ zGdo+?MN{t5@1u5BtT!0h0pHr|S1}ehRXWm%%5pv%Ep)8_{}As)h1+%%Y>7!rHj#-KaIsUhkP-;sU6%}M`e}pys*?+ zazl9AYE~2xUU|)bY4QMkI;1-dxA4b^EbL|cH5J=?K?XpQ`anAhbH|_QQmCAOK(h@WyYl;A_|ANwaajZgG@%6&Q`o1}Mh!=#7nA z*`3PR_cw7)gR8&f0FQ3YY(9y)T0SN#ZPsN*)^knPWfPp=wt4RTaCs)rOrPHLAn#w_ zDAw4YHH#j4u0hYI#}wnBxh-Pm9c#0IuC4q`V*8d_TmH;6HtE(qDMAovxV}GqiSwcD zS>>@9;~t#)EE~o*X40UKWccKZ{7>GR6jq!nYFuSyf_vq00I`!2c4JcqUQUQE+Mt7L zWl*lw{$ZTpbVislTk0N8+d}M?LCF_z)vjRlwhmGg8vXO_l>>>oh7Nd32W|n9;FkIX zR1*n1_9AG{bUwFT!6`IOuQ2dDY6ctCw@@F6Y^`#iz)c!PjXL}&*kiquYE)R@pvVI{ zBJm~ww<8e<7)1Goq;S+tD2URQTfti9Vn}z!jdjmU_k*~uxcXAZ#5VJ;JiS(R3}qD&p};h8vxDaZJ5n@ zRP9x-SLvDB)F7IGx&5Lt;~3>o=kCHm|^fJg(dRi*3C>e@cLSgskHYO6zt|_3vblLLrg-x1XTDe zWsGfWhX?mv3MQoU-8G4>W9|M!Iay6xdd-8V6@Xtp$HXSX#Y6Xy&QYIr)&R4YP_}76 z#oi~UfJ(ipfg%Z0#ikIa;~SU!QU(I*?NKXNjt2WK7MSNe?F z=sCM?YgoZ19`QB7w>6p5rf}rT9JECm1kCK1%9rK=xfrhel!rmCk4&$gxsLBMG*=Xn z06;I$klS|pcvB~qwixfaJucbvBDMz5_9%!A$`n>IZb=F>V)a1Krre zL}O}MU5#TYyt8997p~*e8%CuEjm~vefC1f4Uf6x-9P5*2XO{1hNi`}4oJM0Yf6_nh zUo%HKW4rSP*Qlh{r}1UYkWL}qb6o{C=W|O@54kR(|I0M+ZeBhM9LGcXFOu*7 zH>CmAd*AnHGMWzl(=_luV}X2d{&Y3!f|`o?KEm>daa%OUpmB>oK2isC!C9Mpsv6Xg zZNuYCT>dLdtX+Lp-A#tQ&)hVglgFJ+IS7LV&46i3N=B1rYHoECIk;q82vYVfS}WpL5d|Oigy) z8jIMsY_jKgP)hGkEoZ6rkvrY&(IA;1XP$=~7&|KD=}B98zrZ-or%h1BR+d-?aeU`yIlQJ@a*4L2e zKw@=hY)G>6ePDDw8V5k;s2isQ9N%x~D9ByAxH1U!>4LRqgs|nZ-R`f*H=1L41w#-0fnY{9N5BT2EEB%2+hWmK)B5oUJmS*C z%uFb~#M+nRGLJT-5&&i(l!gYtbaK7O`?b{_Qp$O%)Vj(8Zg{cvjrDr(wtX|xn=^e` z-rW2{|rz>*yK8Z&cl$6V}E=R)bk5wh= zgv9Er^TVlSMEX~SN^g_50J8mEr#6Jv2U3KvEz&DJDlh8G%-rrGpJrym5E&x;||`=e^;lH22Pn^-x-@$=0 zHHdWoQ||a5XK*9v4EFuov6&kbf&fH{L;WwP1J^&DGJmzwv%bM`0^7tO(17W2s7ffV z;=kWgo338p-#`k`!^Yb<)Lf{)Hs_{j&y@_|`935r$bAjU&dqTs*Qsp4rjLLVUo804 zQ^XwA&vSy%6Wr-6jHO_BWnQ40q%fpV(<*$bI7!mxedlyRrg=k!^D`Ls^88|ZjAquV z7Tz8`btP!fR~M8nzlDDDq? zzz^tqho%8LdS=bMrJ@p*;R4v+qOt)_?XSsS06RdFk2EFgc^{2bMN^g}qu6yBz*E2M z7j%p;C3*U?Dc$#Oi_2f#W5}C=m3WB0&>a;gAMQ^sJQAFL>3_W5a#`8GOG;M{5OpIn z;*xn{$WUHW2H>nNXFb+S9q)HH7atLvN*CtgKeZ|CjLxaYLiEo^?AoyG)?tzv-Kp9N z04SiE{a?7z+(yGOWr`eh$v3`_QMqkAdT9R|;G=jwrP>!;99W7AmpSCrka2S-^r0GU zesUH6#iIfDJOxM0Je0^Zs@BA=mX2$NDb``N^lg-1y>vdLQ2UtrXQDS_;k#mE^ttloO0Hx!(P_6NxAffC71U%BFa=wLnz+=HNzxq%O ziFz^kzFLX@0yVUqjNTjD6_&>oQmf?EJX+YD82P76-^S{jjVJfvhzIo*B}w610u4vt~teLX7WdG4s2MK{Wp&po|=Jw=%UDnx(hS zaCX+LF}I8wY+Ry{*UGuZ{Z=Y+I&PfR{mC6R7oqw-KGJ_H#YCj$-e2yO)m;>LfzCuv zCKpckQIg)u5$AiXltywe&1opaHYg_g$oB{IW3UP*i#p@rz^Wa(%a2*heO>n0h=qy+ zMa3c}IA*pq;TPczz-U=#c!wzYr?Tmi$xi4>op$R+9 zoxAON>N>H~cFlFxCY();F+{J~z3M{5EsZhg2A=!jxkfP`03TMZN>+yh`Qo{COy1?j zUu`$V{FUL#PdL9+PWB7z-tiOb@O=j}KL%=S>ReHJMFGMJj35C4O~i;EeN}DT;Elcw z5~ja-(n_2L6ZgkfdLNFcRFFEPW%KZU-ms75rb}+OEjzv9`tMlzF`~`^rNj4@D1ny8 zzTUIb?pLnN02toeqF`i_JUo<+CCDc&NWieX*>NzG78Z4o8QTofoIKJxfRig4kA$x; z(ClEu%GuEtq7%@s(mW8)=X95{xmo#hyV$bq`*~oc(;bvJUuHJ{Xv1xSwILU#;VwQ7 zOS??%w3@KpDE!d5MbnuJgy2`(CZ3)=&?B`;_fN+F7n5!T=zR~7B;21&q3ahKB7WAG z8p_W^@+-K%oSNMq`jgU2KRi!<+s^q?>Uqe>SN(eh=X}*|{aflq}bZQI>bqnjbs|Z+ZA6G7|=- zh&sF80ExZvOp=&`36-XNa>tv|;o9c)LxS|)kpwSD#=(fvZm+(do!MN!77`fZ#A9Fd z$SS19$q6)FVm7#V+XF~LZMxVoW-a2-(-r`Ng}mb*zCOJ>t-Sds1(`1uowlF>`NQo9 zxa0YyoCscFU%(WOm5MFn&=vGb$Jk$F<+WYf05Jdlo2Y(bbk>gp8a6rpw_cK$-HhMN zl*4pg&r?Hv_#Oa9(M0B<3f>)FLZ%tN+b$bS!9dZkgh?eq2VPnbzZIpUvREGs4c!e< z@FNQPY9kaIo9Up%OxOLC#lx_*#BVc{sz~VkAuV)*q6B{xUpAu)S9-A;*j)4;$uO@hjm`{|-$!^+b#uEgKW!CoP49TpCYNJ}KMdm(tDYEFwb(pL@6p<9VdA;Byt}Z}(Wv)#t3wFnb zT0CrAq5uRDW{$|4S$zW=7^I#%Wyhu>a0xSzyNQy82LI5&8MkCrTSUy%tE~_~(eezk zA1;nGL@WYVD1rv}-zc%bj*ps~GzZ8dP1K{2uC^e^@ml=@egmh+E0S8iT)4BoS;RQZ zFzKlN&i-634R}~fXJ^4ysG67{SeWNW`(~%q-wu!?%rl1QYHb#}H?=OVioUD=t|Tqe zBR|Gb$8f@!A}{?>a?|01_(wq^9=$I_Qk}E@fnI$-c6&*)5p`zMsDBX8BxZ5Jw%45h zn7)*5MU|J85woM7n0Vf_0RP0)A;p4HYJpQV(Od4VJv^+19`AO_Q*B-W>AT-XSYWBy zSULe{ZLV^9>on6mjMB57nL$2$t9X$7A<37U1#7iIBHn)K*DV$T;ogEVY4rfMDwy5< zswr}!uG%;}86qgLZy2DbXeNv3Bz-@N;VnDtu~DBJmiM5gKTUhzd=}?}hp$#VX>Uyp z=CIgCeV!>$ea?I9+`G`;kN*mlN6Vwbe6a$ci`e*5AE6W{7m3(-y)i%v|JHDbD(Zk* zVOvX$#oB6);5bHta@QXf(V=vlE*(CozBFJ=Uj$B?6_86~t9UG{6D^xqxGmBA0w;KW zrAPElHKf}kjW)8wE?B&3#|*;Y(!S4M)UqaO@EBA3Rbi;4N1<|qYawAJbMWgf4b3vZ zo3CaR?F^< zC=X-%?Tm+LJ8@D7PuQcD3XKoB8!UdJPda3OZZeyumUqHWf^AJ}$CozD4*60KK-`aZ z-?)Sh7YEgz_XMp-@%H)Qi}&IsenJ2<(n&@w!KRNtp6|3V`CK3krr&1J=cxwiWz^87 z_k~)pH61I+LJz>_;`_2+q&@(0nk^cWUUkAWVW`4H;08rbCNC!I4A>`LSN7$Mg);K9 z_hl+HFYf@FH<@GR$Y9w72eNx?0HTFMiwvlbBEtQ%EA^YzH1bG$U^#amBinDZ`>%Hx z!R(B#GE5z{yY%%o!vtBm<6z|jOFeY~)D;D_cIh!(`e5Ol^(*=xBAzEti4lde4K6wt z=VT;=HjnsHgw3d`mxM5^>`!_*1WhCEyZ6Aa@sumcm5zpDCZc0%t~;@k0q{Gyb(9rf zVYfrvU;2;>kxPH;bDExoLKf7Ux>Oh;?_3sg=0-TaGC-Z9o}1Jc`836ytaX91FmWr= zVR`QKYuGx>cFyOaJJq;bd=pun^^Vfbwp<3~&sQ8G#5uw$S<#R@-^-!_0ACfCIGy3ql~#Ko8R}u3jiS zX~(7;zg?m`>4&1^L6c*mb#MO1yLIRvL4?Pem!MU*}6la1V`j} z6Qf{BkDC_-w5+utFIyia3g4?2lw?&cnhTxM$&)>tAqJ)u)p|E=T)=djGH7{RjogUl zv2B+o0xH>}X*=7FI3JF&e8ltp)eCdm_nxne^$L4}257`=za|db z(m2Gq`q)S|tfb~)&1mHF0c^VwX6vyI(|pXAqjFGz9Efeh8&QMV?k1NB7yX4iaJ|bC zN9aiANeC&(TT>A#08kWrKy=!71D%_)>&Qk*IoZrZS_AwQ+opkUESaj%QACc{w zGgsi5dW5Htw=A@jV8R}0;!URuk4=B%Mu4bw@X!#7C?gE&ip#>fvXq% zSymN4N!HD`v%#8}79xH0*!O_h&O+&5RU{(sZ{i!G=$PRlRw@OuMB={Ik5D|} zeuFqpQ7^mq1Cc7hp;Bf_m86z)zqQ;i!l2Dl8}Y$E=L}^7Sg`_!#z~UX~WluuM?OhImf8lzHk|Id*O$9KeC10J#JCB zX&ic zTqq-;`b!Jow1+q*bc#MNmHt3jmf0;jrJ<895X#gz36TrEvyk}0(f6Gu1Om#$x6zdi zkWQ)K%T7c>fF+spIu+L2XV`rTdpFfzoHNGxQ>9mj-htP)ODq!R>UlXU`hm<4l_O&S z4OtY~6*QYz_y6lD|08d7TMBAJf;a3Uy-$!B3q<>BmD()>HGE(}4& zG))d7IB)}?P%t39qIyP~m~T|1dpnfHf8lb)>h%nqmaICqX*jO&9YfLI3%W}iV}67sS}5>$>-zf_)DQypg6|_I?W+ z%a)b6uxf}WYV=dBXBfk`@zsWm;bIrB&9@a)4?;!GU*3*nbJ5#B8jP0eVWeR#Y3}EZ z)Xc9x5%hfS!t$k6;d$h>m9F4W;B22blkEqHE}HOoCkF4iwN&H~SOZe849-w1kBy^{ z6$(wg+C{6mtVGdWN;6&`t~^YZZ|X!m#qP<6z#0FmT|f%%qP>X6yL4BJLS@*|DSoIf4d7=T|I5YmnLoZJs zUJj9J51%gyWBSdVhMqL~Q`6vBcvF*itWMvr;IMJR5_zXaOh&n*CB-`k1}1y>>dk0W zj{!&R%&(amcTmts_0+pxt@c?3q8D8NN~)3ELJ!;DI0fyQP+9N+aU6TUcYxXKamF+F z3_rEO9_HSe>iwUrQyCI}Vv(yPMO(n5K*-&<$TcB1$)|bZBd#|lSND0N_a*5Xc*Sdf zAa1PQZ(~RY7hHgfT9EF{rvM(7oC=An1~)7lC2jtt3x$q@R)=(`3Lc|4HOB2!8@R>tOQj;&(sT$Xlhz4OdQSgB`9s z_+3LsC{>ccGa2d6gXh4hW`0b*)8`Kcg~zByzdOibXr1!o`X8KebUz0J7AAGJMw8X# zifz6TEQrt#$i^xqQpv&Hc@2GT19X8WblZ}%@ppdA(xrncvYNyj;GP{iDWE+`o2MbTOg;YZOGM`_o!F91Tb{@3CrhygU`1>-NtC~haBn?KkPzg!Y-a01OKs%?e)x> zpKN?#c-Nr$xLbA#0cH>Y=$0n<##pJzl^(5j$jhxDl_5r+meafRkQPCotf(%qJ3r%3c(K<+q^qPwhPCUKCyNdF z|3%naM#Z&tY1_C52<~pd-Q7L7yF&=>R=5_PPDbyr@n^p%o`0phy)FeVz)0Jk`rl+5om_?ARPjpaILm2Ae#)) z`>zR1pwt}Ux?U>shGPf(c}?^Fbf1sYY`Sg1y3}UKj$4J~Z)ahdU_pyQQ8+Y3^GKrs z$hBhmND;`00ZF0pyyb58^u;||*5(Fhz zG_`li4v>db1E5qi()$V2Ql%=maC#d2F^BG+c?Z2pAOzb8q*`7U64m{_LzjPG0#Sb# zky_s7R0i(ypimxmP|nx%2Q^h$2n6T=h_vqy9CQ>0<`dsw`kc(0hp%3*Oovw`jdaR( ze?T9S9x9@p#J{Cw;{51~*_0l7E2sVQ^U{1OM4{!=Ar~cZ?zgjf&gxX`TRVjM*hR{8 zyJe~mwmc4E(IX|xW1Xz}zT9B@jBAkTT$+q(DX&&6%asETYpzI*Su*`+)zOq!Kou9$ zow-r1|BwBuHd6d*%OToRwz%Fi+_Iq;kLy@HDhD(k7@X*ab>}=YY1ciy{WKnxmt*=X zOH{n?3zoSCqgKPPN;oQG&Dh?uqvNUK0ZZvgMZ951YS$E4AIb*ujxe&cc)mMU)GdiD zwKu%!{jx8U4v5*C`=+t`iT=~@XMnys26l^zvx3o7ZqS?;XFF@HnAV86e~u9H(16`8 zpfHIY(74;Emy010#{PtB3uL&mk*9!l`uX%HZ!mtc(8utH)bIeetNLb7NB3ioH*??8 z_rhJzE|FcwZ=_$q$6mA8Pxw^amv=OaL*93sIjpNs?CkO=-MrK~p6fbu3V;ju)@NCL zoFVh}^NUZS)Be7Q)UqI~b$E&vxTetitP%&Ni6OV;RJKp2B){pTd z^B{yypM+<6-PTr1{@hoC3}RI_l{YCn8EO(GiT0;UD+5_<$88|}PS(LL|1sx{3FZ#L z1ONd2!`^^?;p5V2>DsKfEMSmA5&ZeDq^@Bh8P*S6sqABS+Xio03M7n!P0w&?_d)k8 zFF{c8B1NAO8TJ_33QsugD(?)Y1afO__5&+Hmm51*;);6#q8W0ki5TjLO4KB3oHY0j zkCfRq4bP0rtX=XQ#=`nTfzB0AeG^Tsk1yuF*miWwYaOuaEygxV040rAN!ZWciOJzw zJJYufDhL~`(VyOxRwO^TIwsXr^K}l0x_FWCxz#O1YIH7$)R~XWep~-sS3pCbpSxY$ zW+E?9dSw%h+1F!a_%({K>?wb;OXwOROIPH>Gu|=e=pA_Lxb`uk?2~KjYk)+?iYmF* zo7Axfc!-M8o~q7r0e87AGc#AuhVY0>i&d&QPQ~YBugAKSJu6RP;)#bZ*xxteZPc-_ z-PyiBYHUyMj>v}Y3}Rz?PeWh*plvrD8c?olR$`ME3aX95V~KCQk%-1IKYn0Xc9ViN z)6Ap4vU&E@pt^PECO0d$yXvqc+*`kx^2YFM-9R@PW0rVPs0gJUro_ViV0X_j){VA1s$$8NM;=$iVXv6I2_ zjuq~WAX{pJ6(CZ43Dt`hT67v93m%=1MCypD;K8{uAMBF;p+CD7LVD$^isN#VvE16b zlgu_!um(lJw|kBz#P_{%N^4HC-(5omggZU$t^8ePCS^2@)oK9!`gMA6cAX1(FI$A0 zgDB~TcOQLeGO*hr_q{5tp@fEhHgCJFjcmgORds(FP*=o^HJ}6TEg!a8^?YG&PA7QU zC@wh0DH%W0Et+C^rx|zt=Ea$I9vhKWDUC5!fh_e|hB?tOhu{fGo{QmoXy-NO*Bm`; zDV7f=BUi;^dBw@_q$JlR`RgPjmCMWH8V>%kuNN8`y*MTAOgXsd8g82V(-w(CL52@{ zUBcf!0;=oU@>Yxf`lBZcWZzdO>kF(zuKccmLL53Bp0JGgoXAjDccWKj*|n%O7CYkX zNOGWicg4|g|J>vOac>6;v^%M}SB9}`d*RxHwMu&b$*c1(%)s-9I(*D_Jo0x6t^$ns z0%TGcbcT1bW43o5wZV1ej&JAjneeWwG#ustI8Y*x*Swzi)))Axozz}Q>9z;fXIT8r z4E94gc=^h4V71?^rr&5I7%HotPbB0pRYSM8$#lDwTOc1B?f4o%H~sCGQ#t3o;dW#n&T}a`jNLMKJBi8t%E-ycJ`9P98^F@R{Ok^CTTeY-qw~!k zJOH-tdIbFVmWdV55e**3WX7WUo%ua$gXJg+KD!Ty16s91H|5}Eo% z*vNe5pWMO5i_I9u?6c+MnB;oy&GRtl-o9jKp8PCbN4*k-yKRk_=!PMG+?HR2Z0Bw& zomdjhFQ6r=y9&rop>+`3pTzTQ>!M*!{?o;iwx;XQb_n5XRbCcIUxm#?$ST!HK_YADWEifdbqmM>oHl-i(TE9lT7oM>lH_ zh!l|u({cWsEF|KLBklAhs1tSU)Us3P+$OkS>sXnSE_Hm)_PE%arM%RKS3}Ik&FO%D zLK3|J;=P2+gg(KDK$xIFY{*J}&{l;fs9@1|2>p7@i%2*mKUnMk-cW()6gxIa!P%Dw zoOYA_77rk&?B)1$wWE$-ouCu-MG_FRes;=;coh|_-^eWVb+`C_kd6RYvE#J0EVpFNNCYF^%RNQq zjvJnX-7!YSF`WH+YP|s?O)lt_Ih?3sEGNz3*iTEVvyZzP+@-rU=9tjWGtBjWYGyC=(cPs!o1iyFkvi$yOayelrN~1{_5VXc6BU6T8c)Hs`WSag_zK z?HLbl{22wfx+9P;hp3Q7zohX|4RCF?!Fv<2erAZPoYCn)ovIV z{JaW*-`)CNCoHH@ii|k)gP>$D%{UGhG1&$PGD)`dn+J%Od`s|px7BH;wh z@fZT|+%Emy+$|W}+J}I5|NBUx28>ne5Fcf}LQ%V43F*V;geB+R%hZzfO$ea`N+)mR zlEuY*IMx=>WP@r9lAZ&86A<2~KANNbk{)Z=Cfy8N&z941yk@p%332qe^MEWpC(mGni zR9|%IW_Lu(AG6H{OpRM94jw3_y`W@2?E8vh)q@QS0}!uxO(8ul+g@@=y?Ma7Kiq8=R^}Ys7N(s4w7eB~J;;MjIQ}nkEw|dgL8|}%>|^g| zJ~*iXEDap${e9Y_zq=SE{@=JCyCpF02aoJ(IMRX}^P3~IM&2+0Miukh594ikpwr(O zp9OHn2gx#MEDq|ofhbXuv4&pRW){dexNLOf?Mw{4ym7&YL&XmO%*mk~!%EOO=pBuy zT0*!%9115R`*2GY0&p-Y2qLdJl4IE*mYk>;L#A0gWYV|5^PVR zTG`MwpNRH70aY!8RxSw8RDD^PuIe!us)qh#PtW8QLLj3NUW$z5^G5i}(!3x}k)$Ob z@+hgJV!CbzD)czBuyr4Ntb+{e3CS9aIV9Jg*g{>G){wfcSwUNJ*y7j%Dz69R)xBvk z%EZU-Bko?M*FuF%G0J@9FC%;Q*Bq82bkTpS;B!*HtxZxE? zPUJfHn(l4FF{rI=Q7#i_8jT3Hwl@7Q;2k%dMgOl60c=C(%4Umn08S0PxSQ1u{{G)T zRpN4E1=tH|T8&clJr}j*>OA7Vjg2sE+!>%MqqU+Pm`zVd!E-r;&Er05m7Kn0J-pH< zXXNE-^tWdjjcg=692VY{VP{(l@|ZsNou<^4zb<@VDR);?J~gfbSAl3J0a|nQxZ0Kn zYr2Gn@21b7hSE;A`F46(>6PB0dS9+?L5p{5pz+HnOjilzPwzBI;OMnINR3YiaULJ-Zt zeuJbIlay%a7ivAI%)wIMgqLBb{?kqXZg(4qc&ws>s*#ZF+7q7W3KRZG zdN6#icTNp{VDFBpFx4GfTE z1;tz-5Q6#&Q91u^x=t7O7XZy8{a=0C|6Bn7g`dQ4{EYme3-Vw83eDd{L2j$E3r&!a z8OkT6|CzamqJV~_gqFZ$mWD$}z55EA!I%Jdb$5H~dZVu98hr+d8qG%{87J|G?cC;R0GFDvw2g_)C69X~@GX=piloe%=_(mitOibmo% zOg{tTEq;#Gn<10WrQ!6IKD>kMMkpwR}3DVur-75RN}_SZ4qj`&Lp%i6Wm`7 z`|ou9-x#q>Tsy=emyN!p+1#-{qAFBkIN1`-|L$(x4r)0+#V1Yqjf_ROZGZr0s|Fo? z8N?Zssg;?S21*0z8KBIBA)td;aS+EjrY@n=E|Stybkfzu zU05gnj_XUpQ?}5g!=XT>Le&SU5vmnPee5AZ+aiT~+NTmici=V8UdaI}3?!^G2Ql08yh**K0G z5EMuy+8_8D{<}Ld-`4y}{IVw~o+Hf<9L-l$o-i%EDe<>JDT-gxXryG}Z0Va{_9~gX zud^#x6|vDM)hlml?9>$>Zqa=6vxEnf`EdiYaTojc+O;0)CCe8EOlAL=62^JQo6t!6 zlf)t9;ds1Y_6i|Rz1Q9b6}T#SatYx<2`Z7U7`%8s;{uvVG|~B4XshKvX)TyW0* z6DM~klU)NQjvHWYqVi-uET^M}a>nns$NQ}p%*ZFq%*O8bPp5xt6NMO2NPQ&{?SE0! zG#vDGCo-5tv|jpQS1}Ox$#oSg+3#s62mL-&u#hGSXA-;FRr3)_@W9@~#ifk_q#PH2$QkZ{p>WV);bN z#S&(U2MJn7fg=Pc*RuVshW`sbuSI4BWk&dufWrz7&Io-45i6uv>aU20$KMHmWeOu8 z^azwLI$VBpAYQ7SS`5Y=3RoHMe)cl^HNyUPE6u(C5KUH9R+JUAILpv2I$R{KKSmJZ zYF8JG?%V3JE1lJ(QKej{yquLnvfVGEs3iGNF(inG-bwkw8u>kN-ebx;VuO3Nb zsFs0Lq)yJFw(O9JRc?svf)KK`qQnlMJ3It-B)>RRsNY>>5K6%y=PYzCl%KkOXX7XU9*9WxDYs_fBQ+0cYi3U-{M_BJ6`a5ZJ|oS5b$!L-ovmWa#9A z;BQgK#6K4O0&UWuVS}tiKYaX1V#E302q3wTWuPEFBpd)4bOMQgQE#_TG}srdmaM=& z%DNhXq8PMHgr{;Nj44e;4uy+5U>3*reT*$Pi7$LN-Mlw&NO?Ea6pFJq3bOWg0FL0E zG9w^kW9IENjiUhtMU$CKc!)}+I%FtxH}#)6d5-m$H!Se182?YNH0Xf^0SnN?beBtU zOQEU-!zRIPsIO;d9)s;eH?P##&d6Ask#=T7qsu!kDY zc$!D9ApE?7E_gFxur1ARmjVv)k9F=kJZBS_ z15~g-E%m(0XHd*B)LrM!5lEy=XL}^oZhxTEeo6h!>fcM`!z!{PvGd~?@HATO0h<%= zilC`FKlvLg_CuG(R)5=d&iFVhkmnGTmdHiQ9)4Bwtw*dNw$p=6*Tf9jJOv6QT zpx&Kv*wgdzOvFaw%$7F!E87@0t2-(X$^})laxz8v;#*~Q3D@JwrsJeC;PhMJv1KY~ zLl^*n@Zo{1gE&#TyvQxXjU!`2jpP+!1ZhIiec7K071T~)Kkpu(&?!HVNsVMK6f2X9 zc>)OqxUNlecVF?E4+AFE`C`oX9T)TlDw!|Ae67^Iz^=p+Hi6sPIsrC^+0`~nCIE<)ND8R^ZcZKM_X z#|0N_a5tGVICBK^@5~Xesihe=8xP-}mLXV%h}H4-J>4=4%~AwKBYoDPB0cd4coL0m zqn8w1Hnf&ix}Ki3W@UvLVum;Z@<|Z)Ns>p3qGLjja{DBQg5-mM;)jR?@F@mm)6?^N zT1#7d);Daxw>t4!TXkNv9;~}sUAS{|pI3gV@+|^>cgVoIg*_dY+&y;U(caxeiW!Mk z81=w$l?sbX8l%dOk1byKy%20Y>Cw7!fE$(HVi+LTL*dbS{N+p5+yu8$j?OuPybh(u zN6b3ji1FSfjR_iOZbx4gKvEMx=zV5`s8yTtmJd3|ZAzYdjA-AL&%}ppD7-1EM2wNk zCrS}jbd95s=lfv6w?lzY@g59HGj$@U$!x<#8LZQ#X{IqZ!*Z{4r})N5Z%hRmu=eZz;g#3?XtE-Q#o=B> z=&8$rilXahoiyGSKzTfTdxYnJAG7{+Oi8A`ZxAVxz9K7A;jgcFXiadWjq|$(osWle zn}mA-pTATH?HG+jK~9FORMsY+bhP<*mNiv8thJ1A2lxzZEQFK?&3EX?rC30c5VvOIl)RQ<1CN?y}YhsN0 zUYChA332urA6*RvTgk^n;)K+j>E@Cgr(kNh8)x=EZA4TEAZ-L0wr19~fC~+Ue zOh8}2NF;zZC1Eui_gVT~_GA-eWvMhm5cfxu+b$sOmB-)bTrqvh*EW__uu1c=SlDvh z|BKrVzcR0IKWGXQG6aUwnBC%Tfo8qCI^7Bw&B zk2#mmP&+yno>+#zkovQ?qUhEZRmcv(1>~cDM3)Q@a8_?VKtN#A|EtEx#lddM#%{sA zrt7VNxj;e!gI$j;saNNq>MVhX{!NP96J63-%n29r0~Hy#W2F>13Q(?K7-NWqy{gA_ zXYyrDk6{;X+3uvH-fm^Vr=+~0qTa4rcyCQ$Sn)h7LF~}`B7TssSINPu<050j6SOhL zV!z#2R)=QV(04Byp6n_`*M7+rK9qjMz+HnP3QvtYc0B;9bR5$a(ZT0LIyWa%M zweCCjMV`>!gV*r(``=J@fK|(^R-cI_iO3H#S*8$`4{t)Rc4*mvkU9bEI+NSaD3YCG zvxArZs5s06J#$dRaX|b|YJR<(JTCM3&}JFkreqENSgeN}fJi65qRWAGo2`9hMrWaK z`M3eTtzEqqM)UDx2xHXh@jfNtE)Go1*svdMTKcY=$S0HDf+%^6rsFPs8n!A*$k(V4 zY#nmg)7f`)svw1uTkb9kMhxOHw(N4%;$KeYt6GF|2KRGBa@{-lwT-SCuxeEc%Nsen z=@<`m{Z+5H0F;;kG9E!rsr1ac*`;Qx`^AR}NDP6zT}@Fl5xl32SZ}I($pOJv^aibD zaWP-i7hI|w&kbWqvCn#1w20$6xn*gMYkvLIn#Tx4AsSt0B4*p#DoR{&OZwVpANBUih274 z9ni|ElAM29$-IxZ(-}AunPrQhzEPdGBnx9z@S>i__L0vd8ZRZyWYj2TW;cXj?^gEtBE9!Oe!2bQtF15|A5n3dB7Ks)OAU?bjnv zqWl9Z;9ZJy7D{eaxsXzc>RjLb{F{4C*2)jhBG|+x9*2#eDUnr!rZgBJZyasvFa?x) z6AYfiEg1QWv1s#e>tmSZy2ZSg5>TJ{j4>9^_yPNM(tnD# zRJl4w1FxsECb$ec@NHbaFI4I4(WK4$rK3gAjE9hLB%3TLB%190RJ=4aBU+r2LVM^m zfbcCNMSYl?gvb3!NY^2N7RoXaGU$ujn|O-nmG4LJ`0MdNrE}P|nK8#qo)_;=v3JPH zGC&3`9M)s!mM>0Dh!yK7#=5N3oN!wh{|0F|>A{VsJrj-I)5!Wvdj8q4Ddme0V|k>+ zmZ?zuPLt7_P=EE+FPQ{#UiRm#hApS6x<7>bmlurNsYWY&z+Kr=JSFE{Mjw;jEeqQa zMyC6k^`0Pq$zHu7!)g%opIoJ*ANjQ$?0|!Ls*4T#vdl-~FHM4N1xnuh_D`~Cy$`!R z&oyqFx3XvzExSS04B%!(T1WiCb%xMFnS+p`!|{C%x*sHrHjE8e>3pp}B`BkS1O9ag~iCKNy7&awfCi7H(AcZ&zD@970-^Sy;4xLpcH zPps2YXa=5#qGQEzn{w?W(trerA!9|=O_CMswA`mviWE!K`bU5m~#R|*bVY98vm_fG%Rm(A!+At(8D?uOW8*Ts$u-ypzC%b@-6 zc2iZypBNL{11zr{h55sP26U96Q3&NSq$5_*J6Iuu<|b?&lVcDH6r{+y>h>F23QF)= zCl6Zwnn+*BT#UXm^!{5~@n-airbAcTABm5T59f2Mfx7SL;R!}A_=+pi!RUZ(80^sF zn=`vUu}yd&Fp@(q*9O>Eeha{pVt;!SCB*1BvyJHM^rfT7LmwmKM$b6r~ ztIb+Eq%%FVynN`?pDlYn;f}mTEjq$I!P7eYh_#QuPHk_cLhsg55fLM(;k1#qw94M( ztU#VRRnB1HS+p6fhl_W*glT}shxU3UIk`l1YK(wAs9Duvgtnc890*V!K$)0W$-5R; zbX-3;eXXECCAwwUKR=jns#E7hh(dWP%371fy5)i|rlVt^lw`pu%bB3a?c!bBK$(L3 zxyu7x$5!=f703-?%HhP^=m2K}9f-!5(cOgoWb)0DLzFPE3jb$p&lvIHBC5Qdj&Qfwurl6{&7b+wvQ8>BlvKRF zCkM#jr#wPo;HkL`f;o_=dFht6Fo-s!F*5Tgf1Kh_!-agsAo}r(h8=Djrf_X(yo?v_ zb+sXR6Xhcc%hWKJ`LXRSCWCU~MWV&%>!g+ly?hcg-&bHs1(1%5T6>bsY(yaaMuA^k?#hC8y^3_8S?O=>lk_bh)I*s5M~PSUft%a0Ib{I+f`$0RTMnsMo0Eu*?K%eMItPNkn1` zPFMH;lrAzbPn?`~lCt@3~AS@tt8(!_wwa!I|XP=E*se9+&BrzMRE#m~8e2 zieE6fp3lWyPhLJ-xe4iEXERHX4d)WRV<5Q`ZpOm0G-<{q=J87=UcexS(}7RkXO`>7 z7JDU^Y=G8xN*c2FODTV*BtEFM)4H)b#aLx)1yf;xRTuN@=5%py`E;$`_r(R51>TQH zq{r$B-;>XiGeM=(*iWf362gA5bOIdT@xy-_d6IuiP13oEAZx&Uiw|HiFO!1kkR|Vc z3~wI9k4A=^2fg1vqx302Uq6RGkE_;`H2CXK1^}*WtoS6R3dub*;EXx7Ciy^<4!W#R z*PeoN?wl*!xxJT%d?1Kot0ZeEM*iZ6;)mOwW) zHJiQ4=O`5d{(DU%Da05i5UM}K?5LWF1bMRWH~c48=!wI0VtKWEC=r-pYRQU`gtQ8j zYe3Oflxs^rsz5artbv_jPZ9;~s21S@^?GebuFOFPEc9TrR9=>J-ru=&U97Kcbk$R|64WfR{U-bg{59?3-^Ab0bY>h$BU# z%;ZYbO;I1SsjmpQR49PR9nKtxVYo4p27uJ4S4(y-GGq^`OGgCQs1sbJ5Y&uJDck28 zxz&*=+v;!12CG-F^>gAM;hlFncGrKIO!h!z91&+2!pLP&&!_`$7D&`4_^RZ+$Hfjd zu(I^=jt%3!?KG*>xl4SlS3wt_ZK`~%y(4?sNVd0t+uc)TN8T^fyk<{EG3Jq@5dqLU zd#u6N`=8nXO@E8N=>gQoCgi(a3?d1zuaH!oYU~7s9>1yn(evF3IL?abHm{;=@-;ve z1l3boeNN^??VjvgJG1d?U-O`5o<|6y?`xf~q}KNsf!2%B_R#t|isAOt%dx0YMz_|Q zXX3myx1p3c_IrmbB=akR6iZ(WvIRinhwM&peMBg)2i>^+J-eLEZSpk%?mV;c9|S9r zHWsh1*IqdMI~AB;m`ZfH?okkeGHx8TZVv86=8!9zP7#cny@cwnV?Qb_J0ip)eX9Jk z&XroVz!ti2!~NL3MYtZp_Q7i$&QGyCX{WuGuky-qWnKvNYk@T2Q>Ak^+RHIO*{l71 z#W3MG8880wgfYjMxV=)>6%H5K66gjO+IZ&rXH+*EmxtubIxSMfdlpLMMnm(0N9@;? zj6p1M2~ru;gsp+Q0v6R!&KN$wg>fBSuQc{nrLXirZ*m1)12+TwQe&aAW(sT_1LI=Z zmhy@Q9G0^?{7uep`m_6A3ni5Sf7s!}8}NP#t^`;nYm=(wi{My0+U>kI(b+MDE}w98 zm0?abolT(1@0R1^JMHw6O8n^7e7A@~ISpF|&%$l9lk&*P&5&kDn(T*c_3G&#SLU=4 z>y5erMrdB*wkXG}nCnXOpRhlUeh<5j-gn>#a+)r0N|vV)gtX=~WDv(TAplFW#H(?y=G~WUS6Ai- zmuahCsX7Y6${9c|u(zO#fOV?a*T7vP)LUs%pOufcKGTK#n`6wpcCnpNv;$K6j*|m5 zty#zRV{xYkP^Ebjh%Z}!Vbf$2%~`%ZlS-Vx0f%(iPLe|jGy#fADnr%n;5wC1=|1(} z;k6Q^#KH4Db#q^xsYJ?ud|jt&BvOC&AehS^563D_sPRqFmI*w=L0XQ)!|f~oGMT>B>b_TO5V{z~kJK6PuDfD3^e;MNonrzaG}|K7y^KfLNZpmI;BYRFNL zu@@8r?4|J+8OuiUYGmU7$nuZpfh!>(RVt)UGXG$x*0MMJmwWhsGgR3;5aXPc$CQ}l zQAQ?*oySJU<~Wo;S>f%2f-VrK0o)uCV`iad77*KDq1Yufz91PlYt*jR0PfxaXpxPT zbJ4sd(u<9T4%s3AFTo0Wdv$gj=mjmW6y8i^TJ-;5071IaD-w#Jha^GZqL-GGv^2Hwg+GUO-37k> z`Y$_~Hq;CphRkPXJkT67A{#)lI8dCtlZ=h8HXnm#5^7<_1Wm0J(gLw-mIiWkV0*VO zbF9tH;8@cX6{?tJLRJy7WL!!MrRS#&2PA!irKo)JH3bLS=LS|+`8NN32&1TIl6jGN9t1R>S5mkg7+{np}o>_gWa|#E{reP#Q`Bxo47Di;_h#w?e?TeTC>@Eji8dfo|ztfBB zRSeYz#*?m(#dR8HE#0^4mbyQ&E#jTtwdUQ;^-|hGW-*jT5ZeL*0Pj2GeXp<+UpC(n z?i;(AA^DkcS|SW{VYJjf>aM7p?M!{F?j5hoA^a_N`jV;Fr=~oIMHdSYma*!yTEyb~ zT#qdgk;l?^zSUH45{jo!)J&-loE0-}zgOyg? zV1zF#p=M|}Nty5nP#sBXk{oTL3cg2Z%+x$XcQoa=C@BgiI%Gz@gaq$f2`5{u=1*F! z(`F)se>J|EmtQK?qV@skTK!(|xa3u5u%Zz;QX9xeRh8sxcZtk~G^&q1dz|K0+_1)p zZz4y)mA*zHyo6EUjD6*>@0+~DyhA#13~}bGZ?b)wy*_J?OZpg>7Eo36*Tz-*cYLg7 zYZcQX^$JEZ1FT2R>)rTW3*Ks2-KHYZil05aL&J4NUnAN$Q;qRE1uy7c{{bEtYhQ4t z0U4pe-~!+^uoeggwOOkJxuVk}E2<-MgMU&WjAi|z8@Ehcq#L0p{)kMFtD|D>Z33jA z%f(^~FQUWnVha`s43C5rXp1zX7{Fi~kTlNiXf?&#&qzaYoe-E1IB=e@aJIgG05>dd zw6|`+SsNRBekL8|Go9{62I+<}#_5?HRen(QfdjCp>&2?ZHPqBL)Yn$4>cx_9G`I># z-Ao4FHxs{X$^7YLVzQR%54EA(u_8B~)J>mCE!yP8JzJfUTDBQ&c21cBOj5s?yf5y2f%8?wIp3U`hKRG=kRL@Qt_+6oVVYsHgH3HQN+yKrlc!ELU+Pdf4 zPxo`45r$B+Zd!fL1?{${heuivePu5Zru8RGcsB(re=y9Voz%9(53rSbE=DQiAyT9|6xq)1uHC*N`;&a!^ABJ8n z&5MS70IiDK8YpMMdUHWJ*ebzp76<_ZXs*Vg=F`k{DqZgHmWPr9TOV^JnF}Y>K8!(n zn!o8i(#*=~{V4$-<+_+_(_td;q8aNx0D4L!eL?0RZqOdNofHqXovn26I*~cpTP@* zGTBASDp3~~6Kc|9PACT|wxx+5A=DR0Z6OH)?eQ&)aQDqWU1!!<^h}il1HE@5gGk24uxP3d)=QIq#U^OkP@P z-#cQ@S~;J;@&*Od(^rWn`^E|lTY&FcgTCDEOMTvuuO-V6R~W7GNxb`be8n^L`}s3? zwIZg24L#va*}TH!5%bAPPhWto~Pn{Rv4we5Kg#nYQ17*MCdz5kN1{) z@hwdE;8Aa?AoDuuD_0RWF~Os*rrZ$a*@l-+`J?;6J50OVgTDnqHy#Q`5RM~YwV*-5 zJ1lhjZ+Z~(I<-!?!b}5yF%E+DF)I^XoAYaFU%Sc$SU2YZS=Nz-_`{67im)?1uGmen z@JOoz(6A0W-qBd;iL|UL&mP$)T}(oB^sB$2;T?{=#NA*v?K?A z9j4P}1MmbO+ftKdCa|sG)@7P#+~?|+zXTmd)FidTA3i?^5pizw$*C+;eaw~4_MVp< z{DQn<3~UW1JQzt~aDSSzZLnoq`6BZ__f3UJ2;ZnC~URJ3k7f5^05NYt^V2~pTATLg<3Cqwm-%pVK1{j z?YDU;cMw0PobInPM6S{*l`gp1#9xBP8!*hY%NI9wIwOu6wEW@P4kqq*I?|@BuLtme zSEBYLj0mc}6mLGpLZB{@Hpu)+s$&Od{LS#MLlnd9cU7|inEdk2`iw~@Z9RCP#o!&w zOIV9 zEAvfHpoBL?;DJ-_(p&IDx2K@2dT@*UGZh>!R2h_a9Ga~MaLWJDhO#+sr=z#4LtvSW zkeA*F{)PzI=H4gg1>I@U*cs}fnwkfm7oZpu;uZISQ$YPt7$K;-gbw;<8eIpO=osH` z&?x=S_bGn_UW8u$%YgN%BNV4w4x~N4Xxn@5oR_Y0+R4Oo$o-wRe$&mW3Zh|GgP%*W z;;5_PF2tI>*3dGs+K5hLZBLQg{O8lB3*aY`T!;r|%!14hqcFRsHxs&DU+>Z|0V4No zSl}7-?L=q&8w63k#OBLW?4=L!!ZgS#9>Zl*>-$M+DjyE7a;qj(gv6C_wmIjx2e!** z!}k*}@bci)23{Uk75p&0QF+pd>2|xA7#9+q?~$7(#sxQDWF(;`KT6huka%aI>Q{tl zP|9vVgzSOl^~;&styi1^xtn3|#ab|26gxQK8X&;@iQZr%WG}Y?`W$?#4Xm-(y49!7DU8c3oA9-DBzk0a_ zWLb&eWV!~N(K`}Dqbd+Sl3*XUd^@noT_Rpa=7q6aIFrM6vJnm*f9mT3m}KWsj+4lW z@SDhl<~BQLhXNXV;1dWYyb?W3b)0sM zD~X~%yLAtu|6#yoij6`>o(`{TYZ3B46v0;N!zK0poO4+4v$OaLC9ap~;IL|6B=ji# zZ1y!5g7%NGFmMobp#@fX&ee1zUv3!FVJXGwa~K~R^^?#B^MewZ7&8*Ehpxn6@%242 z?AsgeM(G|Y@BK!*0dZNXYtqs@$?-*%A}fl!X`lwHTl{#p&kS-Wx_31evw%6ul&i+E zO7}EMjHy;+Wp?}%!G*l2lzNMyIsI#(IUzp$E1m?Ohn!^Ie7zOmwc=7cH=tK3>C&fm zC$+-nsYH&^^y!pq_Raf?s^|hEP0q2Eqs5tf#;QxaPadM@r_{=lK8k=<$|xV}W7Im% zEle7-{bZw}`CaC;Ru1EosCmE~bqd?cd5&_av$V&6Zz}MQM$TdB>*(%7L!rfR(R+y^ zqxnmskh^o(fK4et6(f0?!jD7V+b!z#q1>FE3D24;<;psP(XJJM!0yl(GOWW%7f)As zJe+nCv$y2sx7OCrt~F6Kqq}l0)<}4h3j8sMO~%qIeSOwO@6G=F#2aH-cdLJN>vXQl z*=R?bJWX8z_bXkHI`2KoGdBxFRlRd&xgC}Ol4;Eeed8q@Z?2_Ffbw)xtoR!Q zFF5IX4d3l+L|C+?r<+kn8<@2V=T%rJR#SlwN+Oh}6<^5-{pc;zzg)E+Y%6O%U20Ai zb=#sUNY5=)UjvSY+~V;1M&wrM#|thY9W+=EY)-^5XLyZkN0Vb+pa$FSLXi=RQ=5 z(995H?%@w|vlkHNt5$1e%T}Y;SDbv@iINDg9$u$mkEJ9RURXD0D%$bDO8?3Q#%fRA z?-hAnW7ZT}eOLSg^pdV@*PR_01_Mm^d}+)9cNiSGb}Gd9Z1UO7^Y4{N)j*C){NuNw zr5KFT4J&pWNm6kE%mC`~@TQSu=V*{TW1fSmwV~vm1D2gypdNckx{Jy}|D>Fh=I7>T z@oAyg$uifL?u&z*j))Xi{3y#8)#nb7g~q%l%#$NsUhM)_H83V)UmX*(Lz2{>Q?w3X z;de;~|ADYvCG738S`dFtgCy5?@;YSpSBc9kGYxR~kynu9*Mv$@_Oe4VZQg)>9m#Ot zLW|f{`_$5ke=6`(LE&_N56y4371eAY_zJBWh->yf)z0oBW;K*G>@{#jAYYiBJaeHt zoTR!ouzqv;#9bm|32>t-!mWLHm3#vzmnkq)YA-6MSfe?bUo-=l!_+kKbI?OBQr-P` zI~e3i)WwB;3p)+`a}L)zJobd;)8-K8>VHgF5E)oT6aD_2#NeTRJ?2j6J6R{9Uff5b zEbG2SuO1%~`x#R%aU;=lV*T$KHo2PzUj(8?Jk0+End}^3BK(p6m42z-0}!V8McVH| zx3wr?x&FeMf~wZtkmc10mLA}q+4hY~EF1XsR0#furmFsF4Z_J*h2lV+3CC_rLn;yO zmxlrNf7ZO>fTr4iIafdZ+qufYX=cXBYiYHYJT4EGxeux{>E!!d?n`MEWv~7+rUNjg zs|iLiAqXL0Br4UEBQGfp6@;xmv-`(&1o{(QOn`gk(v2i9x4SH?BHkUXaJbjHH*?-4 z4VY~+%>axP*JFOOg`Y|mRO;6q3>pcUG%DxQBVZY7Yq!hXkW_ylI!hkbit?@b(gIUY zore+b$^d4IQaa>BWJJ`Mp)&FmrvPe|E5lpd8{E#i`6$b*3(IyShK&aODPHtZ{s>x% z-{32J%$1sgthQ%sE{+R0D^BubP5I6K50(XK6I&b`CZN~RozolCMQwEAuBGr-yZSHv z$Y$F&TTW%EN18?tCwP-=8cmtQ78$yJxAr^f-6{g?D3}JHgqPTCzVgXRjVTktbFM?C z5i&QnhVJS}1k*^iyCRCDsfE)As27#a;aW)+6bOSTt3SR;u?y>m^WVUSom+$Yh0lm@|iC9VI_X`duY(6=xXGd%uTZv0c+)dy~ms9|{} zCf36=|=esTGvIAAj{0Ot zxEg6MX2YTZcG>@f4Lq&N1nSVdWnh)&zkNkQ6CEDx(gbJ)0e zYMXd#QF;er3Aq=$SrzjLR5H=>KVs4MI z>tY^~Ws?6e$vAvDtT;&*h4#UjgY(9D?k|B?#ov`#^d=oLD>iX9l&(cEyFFMG6;vq< zhhu>_{Q9@EsJXZw{|fF~I`I72glrtOk8jgL4tqzei^%2{1x~ih2Ev~MQVv^SDj*{B zhc7XM{(bNxW`*E}zi3|{x7PvY3iA8O1N8V308thkA|T^n5j*_jDlEJNohxQ$*NEm1 z#RU0x4C9MsdnAa0_Wz26`~%$#Iq9e5K;UwxuEg<{JL8`yNU&$uck#) z%o$B0iv~E!QjJgMErBil!)A)9PKFVtY$gWW91jsR3P9!L{{N4*cZ{yX?b>}~+iKXL zv27b|*w}Vstk`MNXvMZ|qp@wHvC(L+{vW;1^S*nZbM_b~AM$C9e967;dCxho>vx&% z)L!M?b+l;|V*%vVl7G4nH(jibJ`5iE2wrq})$3K2tx6`JrH5arYPO@`)@0NS-9^b& z(k7Kf$lgTCBC1`#@T+YLu#yT?Z5}J>p@QBiqzNcR!G`My6T>O%I0cQ3PS(MnPuMZd zlD6r$gx+YzoPxD04ffxa->YV%yiFlv0Le%|sIF(FGr|}R%Z>IU4as>9|x%vGz za+=5OzOr?>I;oyf@wZroxG-n-(K)HY)+rYM9Q+v~+g1KyW4eeB`qhbdyZG3PXDSh6-m>K{ol+RqwQTV3GUVRzrX^O?V`UY(qHE#J zt`xBg@tu9cO!$`{b-ZC?7b1sR2Y-Dn{SD{9@-@amKF}5UtFEd^t~|_!`ndb#9s!$9sx6J@n2fKDwtTl)W_lN)!c%%KMk*T?S z#`OdfuqBjwH}T8tmO~Nk$eJPMOu~(|E%13SlZHZBHW1tVbTeLd6k@nuRX;t8xe505 zYFkE#ed$>YIee{_Ku9fihUTDXjYvi6rVa)M5O(#^fPcJ-2+_vcKIf?v8T`mvl2JE1 ztr8$8y1BOWX`yS^N5xMNT2#>LH(fs}H*9y42pEJ2yqGlMsL~zU3w{#s-RJHu?S5yf z2OunZre0JL88ny%!~()DKFKJ&Xmr5#WuAFXRY!(XIx$IEVNq#oP)R2vxXv~FRFRqY zx++Z{>`6!f29*h1U%h%SdqqZHp8wYdX-~k@G?6!XCWY4r4P;CSCJE=;k60rxzA?X& z9><)?AV4_4aqFa1a}e16959K>J{>Vz^6edP z7ui?*mZ)1k<@Q1z&K~HSZoLA%h$<(WL7QWCMxOcXLot~s#ve+?q|7KRDg-NCM6=KA z0XMN{Ku*Yr9Up>n$$15ayUS&0SNBybvwEpQy~>M|68R!p$*n;7_)Q!knnnsdKPEYO z*OjG0Z=ruush3ckJs|;kGaJbZOv<>o!FX~FJ!)Ni^@X#mBtJ%bt-PtHOk}Nmv8X{A zJ7)hg2LZ3EHZw}wYDf2;Z)t@75jfL>VtQALyo|m83>yHo1*@=G{}Dx^*@U~h(=N1 zPo!n!h0ei6|wX^7Q1-#pi>8$kVUYw=ce=t9I{)f%n3kQ&AzW4_&^re6(D;_j69YS{g$@XA1WQG% z2d4_l+6OA_{vnC7e@e5g+1Ia@j#uRPa|rdETZ+;~idi)46hdSy)~P2W*ne0u^`rQoakijBQ{8J?l;E9F6q z%Cye1l6)GKbePq*^vAie1lCW(H__RNnV-tuY;j%A*GJI1W^&JED?6y12W)$5wCzO! z0Q;de$LY-3;ry53&vurX1d}@e&XB5S&P|V2Hs|>@dGzV)R_>e1@JaTT2rl_A?wQqM zmtH4wC%f@oz=msi{#bj5<(o45{-hmcw}XlW1XR6)%G275_o)VkK=YzkS@;3JYd-jp zn_0b|NfrniutK*PrC%I6gPuEB^*o#Hl2b!i|Wi) zR&9NqmR^y$_rEgh^zfXUcLjFqqZ>8eE8UOU3cogTc@RHqYlbPcqGJ{;a6MAlEYue4DI_`KY| zesOF)U9(CDsF%AqFL_&toYWbMvT;xJ4tzP&FoA)MYrEnP`hF%**|Rg*bn6_J?VC(wPGJpkenZ{c4)-=hq^o4m}2 z@9laKXtu1mKX+_iv#s~KZFZSo0k7=U1_3{P`%0}No^b4O=h)^uQp{|a0bVXk*AN1BvY%;#^r*w_HWN#O^|@EOz0*#NRCHnjdyHPoTfElW8vf zx~d|JZn^#XN&`*y-;>c8s24WKQWQVyijmvs`0#O8UCz& znzoj0WKKylDMt%Cbq$;@rc-OcQ!r{i{2p*8YOH;%eQw7nnGq+5Q3|Q+Bd`Vw4i5ko zX+QPB3>;Z0F>Vf_qkb%1HFIQn1%#P_^PGklcyH+FQjZZI_OgK zP+k#4ji4*hafpHPzc)%K(?3GajZ#CpLNPP?HnB7w<%Ij>@o?Ur!k4dpfgJB89$Vd9 z&{mCx!u6176(2OmBdg(XIl-Az!Rb+c9DBo*gQ+T#%Xf}nSOV_H@C|(Q_aS!v6AytO zHp2k?%@6rMc*p-!>jLhB%G2Z{0BH!J|EGP;2U4;|ffN%)ApXSP5EQJOT&6~5JRE1L zBbyRi&M}+xP@MM2h(OvoX zSnGx=D+_=c%fswQH-$6?cO1v&V^6zG?YddECg`2Zp$$q-!+s9!n4-Rp793zF(v{|&#shp}IJ^;Zo@<0p9Ksd|z!i~y17w6l7~MO0qv?Y7 zVbDqm$ckDe?8nq7ZswDCJ|3E62Z^BkR_UIYnaBABm)dSSbIqR{qyTFGXH%Fn*gKH% zLn0upv#CBw+MDB8pA!j>kSS9sdinkluX^!o!@%Qh%(#i_4GUhh6o0`%)f@6IXe}(} z+(6Bt{>+YT#c3$r4j}M(wc{H9E@1IJpb!FL(69q#*YIc%OcMM#H4;%=uYX`_k3Rb; zZ(PCs!28GV7HyP+b}|QOX#XQj2;b%1Ir1c|Ur}pzgemB0hOTs<-N1$UO_~ zWTxv0$wtf(q1eeuYnZJ4M_R5aMwJ%7fZ}wK>0%S2(>_tlgb9NJf67qi}d zgrRM{TcW-?U)mt)Q>9X2)o^_NdWRvq;QDlv2wp*`$hk___|nXwV~s1-}ci zqIQ_0HTQx_(zZAG@p6jA@%iRpe-ybZH8_Gk>jG=>C!xuN)ViEnz_3N6UvSTkFUQj;DA6t4=QuGrEF&)y<#_*a<@n8UPEJPN6z}bCb0)n%aq0m^cz##5epXg~ zNI-{kL}~yMxnT)*-#0OTL62uBhNX3Ya*VKtiL0ZTg0h_LZnE8_aBRMVwn289O9fTMd zQ$|$A0wx^dniu95X49GZ(W*nvcry>|r%04oN=Pe;YS@BBQzY)ClXvv5<&Vv^V*zdqM}UTEELMaJ|>#=G5RflA#{>FFHnP1;%k1deOz^hb0!i zi7cU0-L|AM3PqJg6Pt%jn0DmIIN<#q!CqSSJ@=u(g zd8IXkRsi$7LnNylEei+plJQ4)2O>xg1C=o_*>c2Kj51!x@BIj}`Popgv{r5sIdCOc!-`IPHL1-NTUZBdvxI4ntC ze>P=569FISR^AU7M-wwb(xNQ0oOID$hB1Ttj}fZ4(6xde(7+A$ljwgt(JcSMO8s|P zD`rUtywF;zB2Xa=s32Y)2M&kt#$!HtjC(1QBnL~k}Vtxqyuz)mIL-9W6C`GN)m9sP_}G1gTj;O%T*15z_XUvK|O z@XlLtHmPISL$+XW4-qNPy-v`L$r5dqteJGFfu>f`vd1jXp368dV>#(eqnJm7#A>#R z#m%Lgctbz&IPwKR>8r10I%56vft!j&r}Ampcv1$D3YuQ;dCl-)Sc6;k;Ca@U zWdCd1*3!LQ^R^?g%-5b=Mrf*sX3FeER`6zA*NK=*e;i*OF0?^5M`q*WE-+@i*wtQp$oRyOwa|F{I~1u7 zncA(UgCFQ@-(|3jILx6k%LY6g4)NI>z3Aw&Nb~$MHO|&r)vq_n{(yp=v9G0adDh>! z+g`(kGOyvi{um}?wRuMHG+u6=u-I5HV61KA`*IGrEoUk*hverZ_HFxC@wS(3&V_Q} zs=Yo`{_Z)jJ&G*#L4Gvzc5=(kr1P!WdbuJ6^IKxq;MdHsW+wY;d*Iu>y}tZ8Kl)=S zd177k-OnpNU`s6kuvhEbzJ4`hs1g$7M{|!{l&@fhSCMsSYz0!OI;-bP=I>p-pR&#h zk>~)3zGfuzmN}md4!mK+tC!T)S_O68oeG{`^WNp{w*j`F%x z`PlolkQdM0ohIY_cbn;c#FuHSF1n{Nb=zn_>5cXBv#DpFe{_V$;b&`Kle13V;itV! zi50~-vW#Dxy=hBN_}|jZu3Z+4!Vp zmzNGB7wlcp1St*TF-lvqK3$g$?}rMF#)O>H;x1e%tCXCTzm})-=$0Pv5Axb7Rt)|C zT%oYFYc`ow`94~p;96H5+AqJp$JLJZQdUWvnRu%$Jkhjo?WQgjoefJdPR=IJFH^Pb zB`k#^*ryQ=2Hc&EEMQk~dOn z`$|f8f<)>K+0e;8c1GcPpam3dIocL7w2_$wctWyGIz$2&6fh?j78|xb2t1J!Eh=8S z&JFOVJ5oCj?Pz*G?b(efCwnizt*9#Gb-2Rqga!5~PlhF<%f{U-q{rZN6cR*Yr0 z+I+k*3%o!UEEPB{@^*!YAyCARsTXCOOhgT$7I{CPXUC5k_4ZjGpz~zQLzdS$&qK^} z`i(%>p~u8c`o%^1=0(h;rIZxF*_yAJD>IBtqT9O3mOjJ}m2%f7z4{{tjM8m=Z|qC8 z18Wl0qY!d37ZwgeFnV^iffF~@0j?|vP&st^y^8A=u)X=LA2Oi=)}0Q31w#XSxymGZ z|0xzDu-hZ(0oXfb!ob^>K|mlU1OsC^0%W{Rf@bJs%fx1DU|lwmjOPIQgqt#;$v|$zz$|QHj-Vm^sNcl7_}Rx<%`<8pKRI`XWLw3; zK#W|z7(n5qhBloF#qZQHKAt)?W{1%)lMXu#C-=2O3VS~Eep02rfo5Br>w3m1Z%{TG z*n%GK4}lWXO%jPE8D+n(9;3^Q@A0xOfa7BHh!hs&Gf03#-!IbDKy}G5jijpM%#NSm zv>LL%Cn3rfulh3i_>TX;tjBb#z4?4=aUHD=j$OI-bAx6)0ZB-BA;q^*-9IlUOs}iCP<%{p79V5MnaJ z(q*~L7t{S0(m{THcQTC+<)MwkZM$T&NKr6sQ#Sai2yyXA@hm$j)TY-H#=IQAMGd;h zTKgB-@O>J96m|yHs9qr;uSymj?)P&))K&U;(U0iLN!pp(EGOEMr()c!4>6V_r}h=A zG2;9H`)J9G63GR<6nJ?FsTT;fb79!f$DuZ5O56 z&FV7^Cckp(y7mT&V63%f(pgXOAqF=N}dsC<#wJ)tX# z#s*qb}n-Ey>AYeNt7;h?QT*Ak^M8@==C{fO5QE9o<)qj^P6k9yyEf# znXI4t*nXHqV*plmBt8*li#E@2y*kNgm*mUx0$qpd#GD2H!r#Z zn3Jt%68dyRePiHtSsvVUl7`p&|2(k?JtdM`M)j@OW<{>1N>DhC6zKw9YExpVfPx2j` zd+_?P!%A$n$43d5yVfP`$M*Kk-e?uSZ9?`&>| zD@FGD2&3v)T+on0#u;2(;k)2(j|DJH8`XA)rac48y8*V2;$j2%kzUxY9$2{Rnd5ZF zA^)Z_HiloifdVC+I|%7aY`U{90Bfz_Z_52hzmL{LCsM9Hd9G+;yVW!~Wp}4QCUCns zg0mf*?bMv3scc&h^tSR6*2W|UxE#@_<8FZuB2RuwsorNz4et<^rFg=oB{;&m9ilAj z4%UBThU2|0^&2cGO#~)?`jj&Xmpl9XjhthHXKz0BA{tpFVrBgrrXXbs0^l6qzlf$L z(>4nnMCEBL(ECxD+HKx=TTt2`)iU7A*StW}SS7cI2t$GtmcC1yKp|Z{Ld@$ef)&Wc zo*+q*KJpb_UTNRzGVKeQr;Jha*EDQ5`%%qR&Pn@d_N>xNJf?~>sfo`7qazlOGX%Ea z`Mc4+^LhNhCmp#&_N#k-Xuvg*NZy>-pfGt2%&`*_$jZp8Wl}QNR^+?V#*~Jn-1f1s z6@LT7uAq3WX_;u0;8nUw!06o782o15Xv@nefb zjTnCD-AS^e8RayzzmW5)Sb+ZowiNSMC&ShnuDU5QiWUyssM<452G3fSmHdTpM3}l> z>RkPP6O1xU6Ag`uA25Y138~+nm{blryE=T3ECbhAyu`#@i8dbOeX>t&csLfn5`D$~ z?)}9lw7MB_vmu=PP6a?M1KHF>i}Xaorj5X`it`))AdJ`DM3`-#M$vxsO{|;fB0|XC zy3etp(tS3@ZFBCc`>HxKRGDv{(PWrUhxQNGL(7Is6>F4@+S4;^3ByXoOhf|HAoM$zTR9 zo1xU_0KJD%NWou$F=h}1z@}joS`sXXdH=EMzbupgMy@UDmEZIKZ3xtfN5z905)&Q+ zl089x_>0f#Z|o}yBy2*Z1$<;qoE`dV{s}5c6bT8#2CWV+2M;D0Cfl1ZJ2ekjAqay9 zfF6NJA%V#knHW-FmB)@##N_*CerM~jSJPzWeo>=%wGCXlcYVmR5Kx1Q^~>3A;V#M2 z_2ymrx%4aF$$b15@}_5@Id>xWJGrZoOnV!Bvo<=C_s;zb7$wk#D3PCd?d@I7)&Hp= z%C-yn;q0x)^+^ADW&*ROssew)SLeZ;JU$sD91dvyMaX~>yqR{)tZQt_VZGHx<$V5b z#>iN%L}G1OabL~4jhm&WuFY^k{^YcB-$2-qVC(Pb1crB?-pvd;BlGyAHqUGQ7#;2X zYpR+Cj^He8>}t)2hxs&qi6_j$*M90_RMW6S+Dgd&6|K;nIj?WC%zqR_3d2c?M4t`wb1RnmMMA>-D1FFB;v=`G^ zPbdFwp@~)DA3@ zG@H|2s!z+&1x-Y+&>db6M+z|rzp3B+xXfqE3o8Oh-5s_}_OA%v*d$ zh1Fe0S#MOKZgdR*w0&*K#~#(TCe$8?Q)f(CaK@jj3qBoxByxYU!9!kbg5QmneO1j} z+hVYZ-;zgTBtSXXVJ2Op7&G`l^2#@xmO82KE^Mf$plpv0-dJ1(1PF6iEYSy}!{>a+&CccFhfc2N17jzE%bnv{$$|qU0cGj@b=nF6pe}(xA;C%JQxfhSUt|+* zf>X^mYbvRbU8lFRTgtGL()r9(VM0r*Y^`e=8*v~uL>@zUO{i5&0eea-?~gTA8`=g*GJjUZa;usgIyJ#6h< z59HaSO|&b5tXY@qi7g&~b*JRGV$a|wTNKZ868*AB{oE)pzj!wpt6hBb8++=7=X2f7 z{_uUVk0PAH>e~ikW&8P=cWLK|>xL>RSHt!3tz6;Y2h%BqquY@BQ5F> zax+(pi~!dX-hf6y^DhYkd)B)BY3VrgFDBvg=;zHM@e)*sJ2pQ$h|h2gJ4ajEhHEA6 zVW`FAj-e2s%A8cD1*LPBEyKFEa zuR8TvrU-)*xa?xlH@Z!3e}3u~Gn-Aq&3fEVP zOA}SW&d`y&Jve}Ja{v3;Ie7I;TW*5wA}J2tBt8E=O_JQwO>v!005cutDJ)&2r-{no zWy$x70qGib-Po`y-PUA-{F0s+LH<$OoE^n%5^p$h*VnWJ8E$+g>4_n?aUNFpZ zbateZTVaop6mV({312E^cQrY1t2hT@!@|wldmxq=yRQHRWeNq(L+;20Ds~J_IWIU% zD3v6FzZK_(b%lRFZtqX@fb`{-ilE8Z&kz?n4#)u)H-sg7Rl65WsG?+EaIP~5E9hwNuT>~ zYlx@#TVn0FsP$p1lwyHfAqJNOeTW<1nId;u_vywcJS_}`nDk?zzou4WAG`N2hGW)q z%BW9G1uZ48d?l+;I7U?>Py|G#H4`sbqBUp_pt%D&mP;9S>et88a;=0Hun4`}qgkgr zRAg8?`OW#WFx4SQ(kizy>{XZ=X@3Df?Y0yK1MBR@M;?FNo5)+Ci=>MTqX|Ipr+qHk z6#`dt)7>;c{{qDZjh^W9I{W^@FASi_-tsvJ-e>1BVIt^O*MG7&smP)mz_x)>|`EW>X#x zL*w-?e|bnYRsw{I!?>6*#3g!y8WD0W%624*Y2fZZ|FEsCK^&$!Elgb78K{HR?{T{{ zBN46=jH&xoStt~+CE~DUOcih6`9#Lk-ptJ-(3F~BNSvm)idw-cFYW3(Z#y?#=KlyPaI?R|#bPT@Ec(e_93cy)sncT}P zup9Hc>vhKU0R4E+>nl&N$SULn+arEA&l%JYtv;6RMTwxe(w&d`x9mWZ>tSJ(U+H#K zgmXPHkdkuLkTdw+*T3`c1ZMz^BAqb41XHx6^{HB)E6-aW)|(awD^K)X(LK5S@T%Rw zc$x53IW{U%%6z8Eqwd)0(5eEnpj3T`w2+>~xsuft_Us1x2W**S5!L5JfTkkf2;q*= zq;RpZoMby<#==KyK1|c|6irYJTceFzI$^$97#hdarjcApMApVSq*Vis_}*y6>$C(- z#lz4~DTX=kjv5CU&@tN13^N73CoSO7k_%!7xDGi?1BY`>?-(=a;A#}|+}&vtI5h(d zj&CH14aJHUOMQxP8BV(?UqzhsesJBwIoXA_+G$7O@s(^)(!7fPSN!oGj{uXXyfGiB z*h0gA0VNa>(E)PSm>}ly)pThwv<4#<%qN7n6n^gj2+go-TW3ObE>hm zPtl08(E#D;;IshJ;-is*sYl4K-}Zk78>m;V{pywC=VFUbLJ64K>4hZO>pCln13-1^~@lkcix1)sjU*rJ8%AeHdQt@O}M<~Az^Niwg-UM0-7krrF?99 ziu=gq+4zx=h^>(EHS#whUligX+*1qJrEE|bd8>ZEx!v}5HTQ0WW=6;fcf0sd1i{78 zg|p#u4gm1M1If^T(JJ5Vn8<~sMdQaHdK6>h#s6VFiE7^sH(1zF3@$Yr>s>q{t1*jXE z?I-$cksvEeof;0rTv4fBqug-l=s-CRPSuYx)rf$27-#Hw&a_T0jPUm4m!H4e2}CUR zrW}f|Rtz5Hotq*h87P8|*v-Bp{ID3eR!Ljg^7vu3DeYoQwUA`?3(JPMsv2K3UNkd| zosk_MFP(8F_xDPao!en zrVJ0t{hWq%$62vrY2?eb0i50`zM7s7h5YV<0&jcr7b0gtp6A+t3g5%4ukX)RC9$w~ zef>nf$u4v2nb@YjkpHZmf0fSg95lUJAou_Rjog1*EdRffO2~lL%F#;W3^XN3GV)9d ze<>z@0>KMl2moPhY<~yvM}7c#bFAc%kY0pcHO(9?jT9Z6tn^Arm^bk82u^GGkhIzj zg%~-?rPZOpEjdYD|KczutP`14H3<&cRYL8)JwH?t!<4l4WLgVRpJeN9ubNKmx2)Yu zm_^(OH+kmwA<))#98ZZfQTW z&d$h2ZWkb-vXh#RC)9(|Y>2aA@wxq%1i5O&nNaa^nUTqrL;d5LfP&BPgnt={jBQr; zfx7Al|ARj8Kl5Dv3bX=fAfW*#)DeOaJ;cfxq+wH*Pa#4pt)* zqqBs+xa)%#l_bTM(x@RzgJ=XW6ZLH}g>z$?oltfqbnrDbV-ssGu!qJed}U{|F#aMz zJ2lZ!)%;3wRo|9qEN}W9I`pIZ0oAcoR8}O zDpO9%J3np!geXKA>wQzuvK~6o{n>!H0ff)E%_~__IH@#EtJ{rWH;sL_+-sI60ZE ziyX%tNG&MZad_o^XYu{=a_b;Cs$(<@pljF=NS#>V&DfSy0%toKpC1I&%6Q;d}VX+=T5J@Q`vW$Gl-+rC<9dO+oTvW&lSGW?)XdSbtU)0M^K-5d_n91PYSc1DgkmyUtS^^PJNdS(789GY(U&i^Z)_1`V8f7~&U&Bk&t>kk+Oee#{ts6iq%di_jrhc@cWy-yAB_E`R@GSj?W?qinEB2!Ms zEv)*d!kogh+{i-y?>h8q$K4QQS7xNyVi>GLNK2?-Sw~4TJu^KkM;3W%#I+I3@1*mz z%m9DYL)?#4=1HnXrNPPN2+kP&d;P=-W9_#(CIj?S4zU06lqVdAXNnK`pG4pF|IQ?= zn}Re2|Lc+eDzlq53%Yx`DgL2-Fk|Im=jJlzIs*#W&k7U$WU`$(s31*bttO>Nj253j z%nz5H$u5N`5y6(&kw_$`ZVad7YqWt)2oFQ;)+TgEwO5FV>ikp?Xiw=P&6LS=aR^S#F0_@>^bdfTfJArjyIJ zm%BSD`8P=Cs4OPW0RKb6uE+;&IX5&y!`MuNttXTn3M5w7ZMIPVhG;HLW@KUr zib_vytW^4<+%MmlG5s)`BY9yp?JlIUR))5b%F|mSr!bM#4H=Nla(Oy7W+CMg9Wpin z*KbF6qZ-beqLC!W_JR60^KhH1s}TZBeoR^SfHm*Bw-)d7-2)omZgap})Z~j+){{uq z6Is@iv*694&q1iqft2@wl+VGS_rajg0n>}f8^XchRX4Xb`upQL6@Qx2cV*PFpb6_a z<2RRLd#I>aouJ)>7A{!~$ahl~4A`+o6Jp+@!#mzVHU^a{X5J!%s3lxImRI0OZmJ1% zroCm+SE7T+^>uQ_d>O4|kz0<`-g#~EJVlJDR>&dPsWBfw4VW@*lANBrc?NCGrVDHblqaW!kaCU4nORs$)WLA5Ty(d(ZtP!K)v3`u zqo6xHc^`>Sx_LtQk&-_#H}&57JRVTX1f?$9dETy{&xiV>ecVHJNwV%ZGo|!K{=xLiI(Z;?>yA-{ zyEUq~z{$)DT@pW>kz$*h^b^aL!c)lOC)$70V2jg-C6Tt~lZDYOp^HaPebB}JsnXTd$Kpod*Fxc22`M5zXd7{5 zQ5RFo(Ga#?=>hkH94zBAQOBKtUgSPN^e~X!CQQTnDZ|WcbFHEVaC&WLsuVqvK3VViZFGm&O#q-UM0&Aa?Q}n5|@5Eu;;#K8c;vs}0zlbdgd}}x37plzf zFX*r4`bhP_WnQgWk~=rdg&b>{Ig&E;dBFFd;(oG$dp8ev50kBgiy8IrP1Z}DZyVar z`w;W*^kZyrtOLB}~8d@8vSI5#UV#&zfv!BXY1MrBl>L~G~QdDU>Kax~W*^(HJPSyrUH{=gr# z?Pz@9d$g%CE9vq0VJEjWi$}*;gPv2>*^*;FrF##qGWVd`0am<>xAjwr4lj!h4di`? zN59?i?0M04KYrt}&`au0GD*hSE2tB>Vf1@@cE7yRADiDV-BbxLr}0UtdqL97^$c{6 z@OQ6dtAVlQjc{aw+@uF@3Kxj(V-uVnk&ia3?eE*28fj?qlaN-$@;DA#Nkm$fo zB@__5QO)}Op~+tv<@4Xz5ZWg(%E0|sxc{N0WB>QR*2MG%hXDCklVX6tq*ribnPBg6@fqBG26lYK$-{30K2Hh!6!O@yHU-^2Uwz%YQvp zd|>Qny2R9JMf+B!iRE}=-+cd*Q|+sWxWjgEUxzb~`9ubvjDno4%`l82hU5Mj zzX$=qQRN$oMDCRZJ+ZcMjr6z1JQ3Q#C8+ZcAw=n>JZBD(OAu@mNQMQANp3UUnZq9& z5>;tCdQ(bphj5xAc_#MC9cf<6x?y@D3<(W0A-Umj>HXg(x^71`@nZAie_rb%W6w!K zaJR+sffI_KnsP?_82yg>mcI}WSU@~G=rO_pI1w7Om_=n1cW}4)W_YV>f0wgT*8iTL zWOuF(WF!gwiYwxUnD4svNm(l2se-qaiEW*1TO!bpN*J}9x_8n7 zxA1HjXWZ;2m-ei5%+X<`h+l^?0a!#$Ic0F<5=yY6OlFazc*}Df^=&Xa=&2!f=Cu_= zH+Mq1xqoc6^&!K8pB;g-M|VBnmt~G!Bb4tmB27NKu4PA67^J_~#c6BgW3 zt{nf(teoKE;jo{O%CdK&5`&_HQMl>gQ|{C{Rs{~@9{Obm_5 zTq%vnDlks}g{rpu{|Qxn4`u}a5hNB^ogJzA5Vy?a(`3E&+rzRloAh0W?N8w z9flTD`ny}cHB*bte5Hr^@9Xv=;A9p^9|7U~fd=au5hI>Wj@Iy+-a(*y3bu3}tQN|^ zD&Ei3*wM)dWM|-Iyenmf^`FBv|5yk%e?U$LW2ju80*1ZHN?I@+$-;&LKxA=F9q`@$ zL$y|I;yTqo$$-TM?ZW?)X3aptZBPjMwg&v;+X}42L;mpJapwQYg1IDurUT+Q%(RQZSKe|dSa=jDD?A?ByMP=Lc9XiiUoTDXTtiO|^TsSwQNX%{fpuTwe-rndW6l*(qi4yiczq%-Bmeq7sCe^_(r9&tg7J24pBS1P1-w$HIQhIs_ zGj-FW2YrQd^7{wiDAON=I0B-mivCx_@ef#nb92Dt<5CtcvDG58$}~#86cGG>k@l8R zac$eWDDLhq!2-eE-CcqOcX!vq-K~NJ*Wm7wK=9!14#C~wR%w^o5KhgyVz`C5L>+!D7@$D$2lU3yQ@=q1t6O zghmD)F(MHESv&{4tkNN0+0PI81$4S~Io%}iGqbcgi5Pp03%esUVO^1q# z;bthFR$mw1u;&*38|p5w^fzE(l9g4T;k!o5P^+SqJqi?j|0pHt)P<1pkW>;b*P90c zLM{oX0x}$W1yJB0?<=_mR3dyn`7_0v5&-{@C&WMdypb9L>4)8hZ-_6B@`R!NeKz;Sm_VRrCxXKvT=L)Ikmc5_$ zD?WTBrqiTdp3Fa8-E+)5ESuM&0l6hs&kJ{R!Y<&q9t6Lz@kSDqz*(u?DWeoH>>ou9 zSrHF9b$4T7LOs6fcyV|d%XLgyeUhJ#z|l~G77kP(U8Ghg{2E6>H4yZ)zjG952hEo@o32#xWx>)!)-iU==R~p%-(f>{jv&X>n6}DZpv(JN6A1_s#5DdD12|kZUD#pv zoK&ru3TK;leeu${nZHh^al~864Z`(3v`!*LbV2=t>v;1DoP5F zak#^VhP6ZF67!XyS}6}5xh~=vCS7V0W(X6OaJQXf8Dj5kmU>&rDF=Wo$)?h!2ygQJ zc##jV5;9O(Mm>42(0I>WjBA1_ji+XAi6LFCXfve0u%l>ijGa5WZ40X=!PN& zfcQGt;vHDxLGRyxp3o4%;)r^O{RzwaponbQ^ebX!p=q z0I~89fXLFG$#r%jFMa!Uc6+#NHdhdZuXy?PlSXWdB(z72aql2*^BiZ>C3L}OrV0zy zQrxS<%nKsZ*5-;f+?J3F?^gGBDu9YB#N(uM5MAdNY)GwjNArSuz^lP$~<(y zWWeo>B`kZ16k0||o1Rv+@E5QJ5}dSnfqdk;Vewmc>5P^!aow6in6~$bed;}Ba=Lmc z8p0qPktoSLf>1yB4zr9(SQ0lZk(JON=(PQ?p6!-byR9T=3a=f_*uKxwnM~O zHc|5id#6)x$+qcXqLGwTw&@4oe|KfSj~j&&5H$tB^)^%zz*nuxPZ9|E#xrgz>_*c# z{l*@P0&vikQ#Z=wZ94(fS{7u)b3M^;BA=)Al^wXh` z6JJr@g?A4$_Bjg`zk)UL{z}|8-4nx!6N37{3XnXZX1Gjxj9mDE5py95Uc=9i zd&6N~)#dh}f&HsYQe;*oa;F?+r-6d()2)a# z!8<4(Kftpanp1S!iCmaj2KZXOe80=uvvc!stdqF++53Irfo}^4u+l?p%F=G^h;5W( zt+&R-!*;o7x49$>!y^6M&3AM)*)4a}p~J zt_4&yQY{NGyvlEvv-a5xBZCs|%OgFj)F2U;G_bbyAriHW?FpZF!>@$M`Q$xq;5YSP zc)rPXF~VQoe)*-}`K8SHsayT-@F>22Q+;3(JE5Qr@nY_05Yg0I!@b>!@-Z#^~unq*Ki*|PbPKm z0^GYGL?)u2W4l>AY``pCgPg`{_GBM+JdAcG?W-lQ=+b)i!Lwe{oC3W}>wtz803Mcah>hN8`uu!D(NEASGYuOO zrCR3`a^$wj3hgxyB4VdDPhay?`lt$8GzatYD)-JTG5oOsHLv?QH#?6Mlx4L6!=#4HqCTm2%on* zl&8Vi-$D#tg5po0OeH{|4I>(vzD7;4MFygq$b^MUJ{T!BF2O#~-SY@D#H0NjC8KF? z&pv5C{YYy6hz2Bwu}u@%Cx=wqym{E$#RIS_QHN#Fpg9ERKz}|L`6YN!YRwGfOmyHY zVmv(eRIUNv_v&e*k7y4xL~;A5A_y%zE0jR-OR_IcJ1t9Yo?=J`je*V?)1TW2^XKzi z{C)n|bAlx2&Gy-SCK`k3!)S@9Z*P@!Q?X>TS7CI*60u_bv2#kpw~}|iSjZQ!Uv%Z! zS+yI!tRe3qh#J?o+^rJMkY?s*x-^wtQ=u4aCEjZzzUW_w^vWi? zsx{zT{~IuI+!4hHEFlG_{r~P&MABgynu*E4DgFvt@|QBL?FQD~!qKYy|3t!8K(0R5 zQyupp^h-^Ete5#Y0H~J&ONrRRBJw+O35JpYBoCE^#{)3FQ$RA0=b4D(`HeoI*03;h zGn0R;gTxMHMIe2AGc1WP{U-EeMEg;ozwwb9`k*Ai64@DrYmP}mn>rR$l6p9g~rlki1Pep`Ln zx@mX{VKjvsRl+r6HVLz#LNaVX(KTQ~@ZpU%{TuYtCWB~%!g6FRvx+R@q3VjHDw9Z$ zfg!7DxXHvPUG*uY$Ow24Gvda}rNs{M|z zOn}D_wN@h&vJxI_ieI<_9H|vvx*RXi-f8fmb-uRFj448BbNFf%R$SgTSk^eFHu?LT2%l9nqB?100 zgtjN|#CN3Dpl*N)BI+u|`@3ksjorfwNP-Fd4`u!L;fRqfG$zmo6Z-K_cT%ecx6-X=ZT!#Y;cw>6NC;6*41@GAm;BqrFRCMY!8 z^31+=s*L*3xcj(u`3<8=z1+hBJ7qZa@@qOzjd7Kg!a#lLSf))Zji`;n_htLpHuJ9p zt>`6b=6C$p>rvK*sV1{O%ICq|YL*(gUp;PwUW@4U#1Gtf#)?e6bx$Fu!F&*0W3R0y z%E_>f(z!^2hdyNibmCoz2&zkL>ShF_-*AqR4vgXRxOiGV(&er8#v4ujdVO{DIL9|e zz4m^=T=4v?=2uaMc6PAbt}gQIYkhFAvrDOX-$mNF zqK3NNS3<-;-Q6*PxgPci@>KV}$PJfcHVD07s3{R~3lGTv$Pv+ve8CT9Om~av4}NQ})g`x>XQa{#V$v#1sm3lybP!&o83dkSfFBX>>x4E$q3x_cXLbaI@#{227)$C9HPJ$^(Ob1$K0X6Sb71LcHA{^QX z6+u#tGkrCTI-QDbadpeg!5b6$i0OQzKPPu%HTbQt8G+;%-;g}UyyQ}ps_&)|wZmGx z#Trerd$mXRlkf>2pbOvjgZn}3O!#10`(Bf7_0X*M*V?)A)wHA8rAjtv+9sP_kJPU< zbr$Lz{I(Q8y!e>PA=ePdHWBnZLX8C}%y9cShU2Y(QnkZw_9CVa;u^ZzyM zOCts~c6HdeXs9<%p=;g^`;nTBd22Kx7#xBP!-zhnxm=M02RHN<+u#>_A%y$$Il-B(8?T<#9er>9PoX#cE|*dM5?{Arxb z%i^E8@QpOCLbP{I@PxJ&4xngVj&-Ij*n{4@`yT#wHYv(7$NLV9 zr$WO8{6Xti%Qu=!xkM--$kJyBLR7Hp(It&TbIEX8is;f z48Ksq^3os%eNbXXq*tE-1{JO@4+<^__9LcJ?N4nd?m)-QEy5naw`Vjj>rDO@0!)C2M8|7r^%Cn}= z{gwwNHYlg#C~7lhp%&Y&NiMWrGO=X)O`q+!B<2^!mBJ-LJ^pL8f&0SaFA2PTfTxxC+dloj30a_}9cTLE_|Gu+mnrk@ zA4m%rGy;bObR2@g0*r!zc(}fSk%60#NwV%W`59tJNa(Qmc(-6yZWb^wYGiBMQ0x|< z^Q6?br**xjPF(8Ot0f1W&)jeT*$-gRZ;YQzp-h)S9?YbDu|Mk##z9zAHQFFdSv^P- zoV%I#CnPl~Jx$|N7Q*xpUZdjKM=j{%cK6 zQHT4NPD6tYobu1#V6_*a6%8B#9ajYY@4w;y%@bsaqOFo2lB=8w1<$u|a$~szJXYF1PNG}>^ry5%{Z4k`QarrO zeH*LkW)UucKan({bzGq{BJ^p}MD*11JRjua;F%AR~DmmF`)$KqDar+{D zReSKi(}#D&gF#%xlz(b2SvCI)#QJm627~hxbi3t+QI%`pq?p=gNLvd+NNqG)Ljh2A+u73F{Hb13t33`c}%x7sb-Z z+G&=}5!}2;HkQwnxBC!MrBo2^D%mU>_B$vX@qCf7owIQ>fS>WUJARrWZrc2O1BY^7 zI{u6fUmAGws#PB^aQ#N_mRl;XVkZ$RUn9k?`daq7Xiyc79dfECZi!5_Uf&?TjqWHI z+=;|pm^d(t^CcnI03czxB+oPL;_b^hmaT+nA^k;$g?s|q2fl{?x&e(hJcbLGVApyv z{G6dC^W7V(sBG0B;_ryrpFg|waiwT_lo3!CmsfC=Kwo_GOC1!LI~XM_~V z917SzgqmKfFTX7-2SJvV5=pR*1^BxBEeT)m%aQCC0)O}#hj5}?9?I4A1;G)j%+myl z=ytvTlQBy)j2AnYKlp&5$oD&AcHboUa;TinzSo}O>k{?pu=yHLg$LgT<@Vw;Ynh;d zeI2@>55Oyjc?-OW|FFI>q0?49A81DH%Rq?A)@W?Lm0V>ZZ;dH~HT@y%fM>%^OeliX zZuPvQ#}u>Jot4@yx{pK#lYXl zrO6YJ1i&#j6bxX-B0M4xo*(`YsKbXK@aJs;;{s%Xf(l6gFbVo6&I>SG0jU%m0F+cj zVum*>Uwcz-weDU50u+&a!5^ES6_IGciGB}r{g!Zgra%v&y(E}Q`w zp(Bomr>ccUCz7YxrE)L4|HZ_IFo_KnY!Rg-r=ENCWUZdm5``5sa5(#55dX6-NpJnV z&>6&_Eh&t2g}v5$2Q^?O$^(>uyUnj-kG*-Uo>8b)59kRp+)|zNgcU^AE3=Q>3!P+a@nc>A)1C6+rt3=( zV;`XidXQ%vU`=(vt(1cr|2^J-j-a2xfF}#X<+|9IqF!sv|GnyV!`TMWDT6bieGQO* z584@j%F8GOrhkLzM^Zjg#=@>=P`VZ-feK753yNMI$V`Re2IzDj zBWMQztdH$=+s$ER-|Nex@g(@G!4Sbirw9wfOMC`r%kxa3My_KQ^>r1S`5$fpEb55d ziP;e0pQ4P-$pj^2o>-QOp0Vq7nk5I~=p;a`faN6HM+^j7iSbr8L3c!4`Wk5L|EXE~ z-LilI)#p+ED(`L7M|>cz%Rlj-{w`@Ta)E0HCA$;5!o3Ig0!q5V#r&zw@o(#+z_S`8 zJOI2rmL}eSh1&;F+D3hb*!nA3g|g!fX|WvUgN zjTh1aU#SUHtYf7B{!si}L<$?{#AAlpalaR8E863Sc!@vEt~w+4_%d8kkASOpcc(elYU zG=+A5R&5>-zG;-X;$#N0@VOl>4e^#_b1ExrgfhUki!und46_jB*$ z5P`v(NLJyXT13a7o0aeMxVL@EHjKx$wb&RFja=EvQD>QaF`m6%D(uZ{D6`Nw{0!t3 zSUDoU_hWFz7}t@FW0qKsMlgJzQ6O$7lV1vx16Wiwt``VU)zs>DsE*z7A+Fe-Ka1b- zuD1KlDy2M zmhd)aMA>m`&nWxVD|vF}vBJz98`@1e9Ex25xpL2fxIi#^vR5=)?)7vc@|^#b<2kNW z5yD~p(QM@~?42ifAA*Pccu=!2y7UNV;B~8OyVn;*v3u=F$}{+-y$68YlYm8Bmt^{9 zx1}h#e#d2JwwN*5!0S6`;Yk~E&+dwv)ed_Tz;2DdPRs!R;&T;cg#nvhnV!MPER(Mh z1f^|gkiXT<$+*%M$26{Iq(@EK9`hO87P%xMYVGov4R?EnPWD{5!P7p6lI$^#bwXRD zwQr5+vTGg~%4hRXZ7RU_=6iJ(PY(`65_gAgA-PK~gbr-JyQ^hj6}Bff+kg`WD$6I& zh*fHRbUKzw&ktNFR}y0Ex^qqXD-CM)uMI9RHv_ZR8AIMUYtM8r#j}T-Q}U49u3UKX zz766Vhq^xO*qK5T8{DRy7zs;9qMcS+edFU>65PP68*uca^SRXG+NNPvsXz_4K z)qgHVU#6-HePw9ri|_6imzhkS+rlgZ1S6GXl3S+i1U%;ku)Z&P5I-pyy?*)nb04a7 zF`-sx3+P;&KY9TK(l_Y{s+?@hznqJ&&U$|P5M0XSnr!rNW6bU8j->lA_Py`oEOhfx z&5MWUDNew_KU(gq&ZUkoV^H#?7>@|8P>PM4&Lv`Dj-M^hdJD9p`j}4ZfxZ3OvnGss zAIf%(0YRccf|Oy^0qzd5_A|z+7u&*%3S0Qg)SV0NtdAi8oaO=A3rZjBC8%SXx|>@W zpX^c}!%J!f+SjirmbbFvioQcA=PmCTlaBV3`nj?ejgtGkpdO*f*L6|v9SHAQ)KTdl%Sk+!X<06qwK}Ejg z6VB;4i@?{($l4l3n)ZqKnKsNh+GD53iqu9{fMSWmD?-kkiYjAE%bKh(-H?aBOYL9oAYirIj>zQ6In^htGoEu<|X=-@;mrUDZqfiA|3I}brKoAJsyUJ#fl6EE_AKuC&8@&G$ph* z05%JnKLBS<2)%3@53CVd^7?(1GW#g|+^R25Es$<&`4 zS~Y{_Y<$G4s#$|QZOomKiBk|6&cy|c*uD7s6JtRil`O5xV$MVn=DItaF z@v^&0G~0E3L=C=D0`6`!yHe!hqmGtAZZ(;G?a=xZWIa*xk8bJ>rCb2B{yXh@9#MS* zWPro!7vEKo6>q{lf{D+4N1#8-ChSa063m^)yLTzmV~7L|BKS-i6-7gLiK2J!w=dt- zl*>k`e)5m94f7kruc1#b+;O{(PUGJ}XtOpJ(RN3E5$!vL+uefTkv3@^DYUfw;jcL0 z*~~YgoO?x@aKPW5DqUhHcCg_fZWhWlKktJRDhk&!_w1uGup&!nC5S^HQG`Hlz;Vh1uxz;i+iU+-$00W;o1g#uPbhI(?xk&J@D*d`vQ zW*cGgfJDm(@B`p|VbobK5g}8C zs2JO;CH7Ei(EuX_RaZQ~f(uf~qxn8+BSQDQwUL|a7JW|EOLcJD8>zmT=DovbrP zcvUm7={#={0s|KR_1jT_Hc3M52RZm@oMchSk2*xDZ*NB@ zB6y3bgT{DO?7g_#xe&ySXakIrC$8{+!y4^Wx2!Hf&Cet1e@!4b*_k=mO<9;vH2!6h zq`n0B)cA=OO9jU+`rRV6ojSdp*wK)f%7F;#B=gYECY?K6zWRqrP#W_s*?Ui{3njD^ z)sIjj*Y7>i-k_`XeVN+TXflzpQu3Q1F8cXw^%xUTDVr*acHLgOE+y>l_x$Sb3ucKm4AzHW%r0LcN zc!|7|r=qV<5<40X7aS|zE$9k=8M&_DLU2wyKVIHI4PfxT(IpX*rzq@vYI-&OfK0;# z2o!1SVH8Vv+VC+xQpHAgrau6U8B@7W5b{`H(ms zf1?)7O1e@qFLtV)lcAKac=&*nR61GbpZyDSceEV{zcC@LVQdRPUAKNaGpi&k3?crJoJ9+fsTXTqdzf=q<^U=f6r;e zP!dDl_?-Km0z4HSH>0P87%*Ud#+lEEsLh~v7zod;$0ZxR1J(B|9950gnG)e zi-N=;_MwrHuVnF06&OqG(ijTU^wM%vtOHvshC&Fo#l<=4LX^ED%cyQT0 zp2$Q$ReFE5SuM&_3&`hh_Dwv7R4J`wM3{fX{m|fco$yPU6d?0G21AOtnBB1v6Yq(Y ztk(#e*TfscC%>|$dnSB^ZR3fm8DPscuUt^7DJ1s}{)dV+e<>yAH;a@j9f_aYg~3@* zTT$fbW-UzSbxeDoA9fdyTD#>&^Bg=mJeZ=qL?)$O@vwi@MWPOk0S;wB8=15P=}-=O|`HT&Hp{*Y^%a07xPqJTEAKLa`IzYXM$ zhH)Ah5$GCP>cZ);hS}3yErx_xWtv2^9$9AE*L#<5OEs3ePF|7bI`G&7klPK07x1F(3N{`#zFG%3cFjs=Q(JkJ3fhY$1YEa~DBq=;; zlyWg;M;X>fTI?|A*Y5zCGIG~D2vNEB4_{Jw2v7sB@Q>U7cLYtlwCsop99?{AwGT`Geox5z!&J4evrj zMMI2JgaasPzDK$ZeiMauhQ|I8s8pb>m+B@D^+rr*Ty{`cOQ)W9@(C7vFs<(2NohOKE$4))Fs0pni!WqardqCY>I9|Ak9VD_b@IDM+ z3L6}?#@!CNa z*CA4|u#O!bniV1XG_tf8j1VVy2KeZp^dTNatFZi1yzQl(zmg&Sms&H!QfKgszu-y` zFb?(?qy?0xz%mwmpI8-R=KFf%V2kkgK$ua{1Eu(aMSivGenGHenln&A~^@tO_@d&^wR zwqoHG7*F3%xA5pr_gcSudmVYcI^&}?89*WCp{5=)=2+U3%rv(!ABf?~d?!h;FIfsu zN3Z?0)6%!YtscUwflWFQwAEB4Sp6W>ra>Wo zsNj{U>7XIP(ns7?vhOY8t6*J{gnt#igPG zf*-lx$g^Pp61Cr=H81HVXqsJEAfjRcUg$0LqO|2yR|37A}dH(J@j zHK|ux#vJsJqp|06iI(~bbFvoGBZUm8pEiWLyYT0k zSimTx0yiA_{wf+lu)#a~c&Nets}i2wgaKu4Y#wbeu8!|IC>S17Y2ako{!FI;_6Vm3 zQqw5Ae5^CMO6G)?NCPXdDpl%xtmQshbBsKiK&j`6S{d3V8CBh@F^qtfd6r_(t4P(A zGDd`kt%d`~geYhZ9b{wOSJ-dFBz?3^7CIH?9FhEH5eCqaD<*yKf@xYy5ewf7?LF1d zM|03Pfx&l{Paz5`<)QdM=^+7fF{KZ($N&>N5ObZ|=-0Wz??~w|cy3O#!CLzd$fE|k zpqvA_G=mS#3nKfd7>!seaHFxDhMWdxf}|yhq<mGe)9oYGB?b z_sn1d>*)-EdjM&dY-!Ou%k&M(JP!duC}E$pBT5W!-GL@B-s8g}u%&w4U`73AGYY&1 zk8uL{T-1|m%6TVB*N=zpV1A}%Facfd8iMl$wDwI2$$NiTb5?) zYMzBN?AXg15pfTKkrDx^UCky$KK8_Jis!!yzP6gq^W8B`Ev6}n%P@2_dCKfI_O>#% z=Mm~o?0g#cTNVD5?cQ%mc0;%M<$Q}Z%SdT_m>FN@pmF+9J#nG{ML$=Bt_m;P*s|`@ zR^Jm;gVH1K0&|D}OEM6!ciyuy5Y0STN+aMx8=)2it(?&U;o^Wb_6@E8UEe!yVfR#I zXI@zENCej&sr^x?2}siPGPsi_V5u-{mP-j7yV;S1L42+VlS-hI>m#wjM3$UVkI{E* z_BXNoPsE6M(O}mz8`xlNn=4q~&onAEB6CGV+tyBhCH`VtBWh4sDxD`jNfQ;-3@5!V zRT;nf;lk%s@H!4?&%u}8FaUNyvwz_Db-LzhPh&Mxe|8Tsv^XN9HVWef3mf|h*<4n> z04Cqyg?Q|{U4cgM5cqUyZ>OWM6<>U=(G{4U%F3l6vXW{D=+>zRS84g%M3jEO0Y6Bz zX8L}n$?z*m!jSI7sz7qQu{3ZeBX&_+LuEQR`3+SLJ5dHO$@l(L!?GzT-Q<(lJG2h> z4FO_!A9E$oaw2*_xI%NlUdMbjo8`}sLkQ=kNxbXyKH=HIP9EQ8=%;ltfGr{PwYE4D zxc<*lQ<(VA@yxFxdp&m_x1Axp%cDE=vZu`6I#T$LlFAvlg4IwRZWRR9SZLiI%Al_^ z^A25mn4nz&;|{FX4i6TG>1W5CRNciN>#1A+QNfD%>DW z>Yt|Q&N7~9$jUtY`eJa28)Qh@VNVNtsjFzjx!&8DKf)r7num4X zSF#=RdzUu!aXV;;9bM|rr$^#}`TnVl5MWLd2UE3A3aGmqiCyAtZ zmLaVmK!_4>43I*aqiG15K30wtum)7e#&W3=bWBkHMH0F;fN2EsLPht4WgOg~^C<8+R`fk`RM zf09Yf`cA~u`X0WStiTFfyMwboxC?KgXcoQ5clOa`{|?E)G+j0jJ7qv3wABU~jGb5% z6WeNSfPK96fOf@tIR0JQgXho2?c)QdD56*H!`WAR z3;+%=7Xy1&Sc8T}=E`&qP53+i3tvC`_ltw>p?Tu5p5AvErdQO$n9Hp26NRBKI->Pp z)9jwDd6Dra@ADVceK00$qmLmiQI6ruF{ZQn&%4%6Ek6pr%V>txg=QbYaf4yU4(F4x zJT)Y6@L+d}RCz~GjppwaQs8y8P!Q!-4+EGVDo;DLOp=VUe6(GFvHY|ur(BWgEMMRz zg;|X=KNiz21wK}~<_8{Y(%oRsYjU4wZ?)Cu=JL`@7_b*wmW_2p4gDRJ!t%Z=GEFCq zImdDcnxQ@y(;a}mDL%sV=T#pnfj<;Of9@`B!;b3Zg*f~GM#WHds2mD5Agdcd4Ppz> zXvaOj#M9maUZ49@*!4W|_f*iwreL3f2roB?3540=bZ)@e=a^5Q?{vouCZ>K}XN&wMoIwe2+VA#1B*=&Mqe zv0FG<&9xP%3{Xc{(o@8NXBhnih4{@f!3-5Fs>`cwFj`rw+n_5PRK*+Fygu?tWT3QQ z1?#22FkSIe=PxeQ@qK0;dlLV;U`5@y^>ZD6N}6JnS6wtB4u2Z#D}R z$^6}Q(F*46n%r=)5<$cCqMyD1q7eVPoXD0UW_c%srQo6>?bN-|{i?VTnL<#@bcg0G zTW&h%K285z2hntvvrdM%QwdM)4ngi=x{G3Bu|Sy6VH&keR)ZN|IXJT44QDR?g+f9| zu~3-M7N->?g#>%kFo7_@h5JB9A|vv%IsWSmE4z6IL8(dCor$1I@Vo_qi*dydc{Tt? z(rzqj9Q)p9I~)^9dLMW?0q?8`QQ*RKEOoS-BsCx%b*+=xpB-??hTnweQrvIfJc`a8 z^xhsih>>ajg0Jm84yg$ft9G$cjva0l{P+1RZb8xUvrW z#BmihqGrE2YSmQ$OvZR>k0nCCBlDwAed){6mE`zTv&5EjqBkf>SZ9jPNsl9kv5hj3 z!VGpv-gorwC-Dr|=@i~nOXNFExVb1Vv5{juVtamr7J zDI=71QRuhKX_^=m>`hZEd}wlutc z2tH0}amKF2Xl(B(nhj>asm%qg?P%LAN9^RmS)z1TTWhKYPwL>eFk73T_$VXE+6Soy z^$DH+qN(;R&xewAd+xrR_9szrV*AUz>IoNf#+qYzI_>N2nuj z!_?0Z=$=Rhi_Rp4N|rrFH6arPO6@@(eH=W<`hEclfUhqjUs%g>JrJ|IBHNrLYbrr` z98O3he>uZ!a3TDaB#;RIOP8tyW03(qnrehT(h2qeg@%I2 z(g6vXYgAzJns?s^^-(Mj^J;M@R9aeypYNz%rKVrX=^%OAAvOt(&gLKtAgUrK2s$w@ty?9BtaioiaNDS`8qz7aXQNj`=kxED}=HUA;rBHe5FQ{e6?If6B(k zCnrZ%^bVrXYXyM5TSdBQmppuvF@Ps>&^)H1KPdZiUTR;4%sar7$Xoi5m3W%jTJh+W ztnsM3`J-st8#HNlRj@23Mx$EG%XN2GKwR9_EOeIQe2mf;#udR%TGO^&cTJW=$wec$ z#T@t%wvi8!k(c+rgZv^UZj&!ctLFfBXV%12g2fVO4_YyXNS0;w9N#wbUw}4~;k#%$ zIYx1f%YD}P$?KwDvu$TVZo#)%oip5+7aO(VFXKvzlyznlADT8knnh5tn73yoNs+?K z&qDLtRP#4CtD^DHI3m1UEvmI?6rD79z+!n*s(NBryuBuh*Ue*|nq(=cRHU0NrNAnf&Pv_- zI!~nZeYSJd7tHRkp3K9i%F&cx*DBZ@Cl>Hz^c#Qtd^&iY3Tb>-B!ap4 znmC(7#18s-ga+wyXY@IFeBKU`oV#1HB0H!OJPlNCp;cNQTJ3NBcl;Q%71*`G=CFG@ zuv~PLAE5edAVE*;58~XMs;?f`@v+WOl@V1N;|!`b1!T`41VEiXSSj>;yEHcRU^HgqlUv+^O)I%wq(0TKe5tD7sB`tS}7>8<@zq|F*vWL)Hy9FF6BxY5gyp z1wrI5ETDcV3M%lcI5sjDH+FX!-W3L06gFdA+HZ`QZXDKWFr(A^KCMJ>_-I%kitDjoo@9_KqGZU3R(~n@H6H z94>&~oOuv*SMM3*b+v+nb=!n%)gekO&;0ABw{4(%LzuD`PM+7y+m}{&0-7E#@NS6G zI(M`~>=p9O*hppLk}OlDc)d*HD#NW#a*-|&7OU5 zSTHuRu-Qbj$f_9H)l*ejJ6Qv}5$_NZ87=^%&Su`lgDZl7rUlxkpfixmAYdtiBYqcX$mpd0Tin@>nkXhJb}UXW_p@j}afdiU1G^O- z(BQ~y@p{7ERh7ZV&n_O#%`#x*?kk~zhl%bn>X0}=?$6FRwQeXK;wcX|N4@qeL>nr9Ea!D<<~kRig>J>wf@F zzX$5RDsZGgWY~W)uKJtR6!5q8O!6a$SeFWma`uNWyV-{Kxcwit@;sa@Y+M}NT&rq- zp;ZgHO&`%6^i65)R2=6ivCI42)hua6^Fv9T;ZufAD~La@YMWDA;Wpa7A)c(h_3DV8 z6>+_RT^x_KJ0zvMXBI1;lihD@clup*p1lOR{TBl+ zi}{qv6VVG`&z(qS zevpYV;b;c6cQZ1^CZpQ-AZV8fFTLE`)>Q)(>btcc+qP}n zwrw}IwPRa5YRtBA8mqCnR zj^9h;Po@zKJqo4v*-Fj=x8d>wQ1+~q$}32TVR#V(&`X}AMU-PQFqckq&sXLkX@qjp ziYDsmNJbP4jp!-ZGt=%z7fTT5rGFea@!_hviD`SUqj;cA>m)Zdtly8_;Y7cM!7E8Z3H~(@6A$kPI{1Y8S%W~w+py>EF$PXKr zB^wvN&AR44L?E^=VLS35=z#c_h!upP5|}UH5{Qu`{`8|f%S(|{u*+rTtV9J>w>nuUVOjXddXnwDtJ5&5E~O@9%% zA2`S@goFHje+(~8%>_C@9pWd#9+Md{TOmdKyvtLvYKb=y?9F?9rkMDf~}zm~N~5ZmyFhU;2^)XPwy5ynY=3gsx=gd8-WyNaOI${y$7Y|FEg*$(VdiTY(HV@r_%f$>z#L(|BfljFc@Tl!uC z)#XR*!3`d-{A|^lmzzLyhQNQj+rKkMR1#!z3usjB_RnQ`D;_H@UJhRFbuECY!@L?+ zuNUD{X@9l|9~!bpSeX2Zvj9Sp#^~sQSN(N|_qRT;>mL3GKp^go;y6Q%Su4$H&psWa z6!4~v#+p+@Kv0mIGfzcv*%M&nPZe3>QSo*+%P040td5XXgPD$vqkG|Mh3I$2*Q_xf zo{J6V-R(Zd&i=?MLeGJmSC&0yh2=3N^Y$fGmpVtjk$x<9JFnulZujzKzg-{-jabYU zPWnZO7-N^fbt7B|MXyAAH67P2v2BP;LY(CQirK#k5#v{pWORfI)Gh#AM+^l5#fR9l zO{Hke!6Oml^JK^qbIOYl;1N&wD+MaV@qRq)YCvaYEAsC6{lY>lA(>>`Lm|)b$O$qF zc)OMP?IpBlRV2WbNuWO8cO_kOl(|66 z&avOqJw`aj`8Y|VM6Iq1GIeMt@fd0RQthwAWnOJ_R?mibfI;tinQntR2AVCNub)<^ zG7FOZojRfeBNPjt#o-14h)u8NLTu7WNp)==SrdBs&m1$g895#{OOwd zG1sY6;3NAY<)mim;-`LtgV7ITi=U!C`YqFA0wp9fM^xaw%5iWCl$d`?y;J9kBA@s6 z*Pac$dkpf0=~il+`jXJz1@@*oy11EE3O*oUW$x9&wYaPyVl2RoROp5L9r%8gAKcjk z#Zy+AC)g{o-GBoa`uO@c^X|`J8(eNc^$tj!e~g|lF#9dCw2rR+yGbGPYJ@OpOT+2IO!XLLr@>BqqE*o6~ z-cQn}a;J0THk^wjexcvUTfX*l4lQYakm+tQt<%9S?dWVZk!V<>19WsD0}P(OHP;@l z4(_kp9F~X7Ic<{_4Fn_B`T@;wP?SiJ;7W14r>e)q(dXHaJo;V1V5i4_h03@z!>i<^*uA95ZshENLJOMZ@h7m=eKagZ3nDOxJ)^JDTw$R~R5 zJrWIsr{Fm&s&B78GE1ZalH-cclYr@fVs1&1&b zOzUX7A*!6(EwbR(IvxZab5m(f4S*MDu#~a_2}vWSOupH0q2PN5+BNAioc4To>D*~w0mFnzij9<+=GqMt*u{CR1MZu*hU;DCW4bNtr=5=a8Y zZq0Abw{GC0r8)KhfTQRjYSCey~kFhcJ!<_X8Cy>iU3-A z-b&l_+8#sMO6iSjcIT!UHehE)=rXJn@uWPl`O$#qW;3fTYPx^2uBB-BMM2Lds$9H$tVbOk^Fkq&S_~ho@3VC&Hd@42bJ9S{2M?3$ata`FT}^g z??Q4$#T@s-Me%)7U<7WSwJr9N>^Sf~E~aNSI^@Qi&#@VWKPFQbf*N`L>~_4RQ|5`(NrZ`-9DGP2zx#Xd7{sieXQC02#@OV$_tCl@b!q7}6l8}h zP8NrJviG%qyiyY%oizc*_paukZN;GvYuM$}j`J7|O*@$F7zcswB-wrePoT|G`-IRYc_t$>T(fC21uiJS}&?2bxYh5s?RP|(9iRtz>fU5b^FAn?w|o{ z#>^m}6oNgA5^PRy+7q3-4%FIRw?VGZ*s|IBtav0z20JB1l(<&M~O5 zE2CWGO(q>vR%!%1DEQNZi9cw#eLN_~I9PYg(n6jmhLkxm3?<@~daOrOjJa(^mg>=lb3Jk#<{)ZE;%!O} z>zcrYcj})o65?TEF_&`!dv{n>wKnGzxf1~uh*8r(X)V? z|8oZhwWT$p=GwUEWG5I{rwlIo5TNV{1wqj(LcAx+4n|ly`~{ZLgFYEX(3|xmTA-&m z^7XAU((U7I>|(AkY*kxZVJCBR+nzA0O!6v)8>;1~vE@{9IsO%)7={af z_X)KkyhT_6&^Pqb@*a9?*xeBC^I<7y4-ENj_6d<4ofn3%aHaq33tnc|Ezb2?SB`Hg zj9907{MffL9WS@unc>jB`CZOySp%0?TqvoQ&^28EQ_AO`6mE7`6yN5?G9UA#dFdVk zYjtp0M>34pSXVURhHEFu8y;EGDi;o@9o&L>AU}~fz|Q}|ZbF!;wdDAE28K7i@WBO{ z<$|}>hv^FMAndKXMP_HmPiLh1481gF=pdENQj;`mIriR{)RBZO`Fi$brz}b7xNDRy zpjS~Gki+&WFWCRfmrO)%M0bs?Lin?VA&n8wb&;*H9??hL0jTGrN!k*_UW6}Cl!E#- zu_U#Wg1lFc_rX6M4nvi@zoj<8E-OZGc&sMxw>T>$HzR!*} zK>$COXQ^pm889Fj7`x`$O)x3ml5eG<@a&4+TXtF^_AkTT}LOAE(WK~Rm{Ky{R2(*!X+)({ zX#yJM{YokB6B2t;gbhpFk#k>Wv+T--VrscAg-Wxcr?mW4Ka~eC9=jYd>2{X9T>{$0 zl^11aNb4?o)PVzvu7?p*_+#>_C&5e;^`{M)bB~w2F9L~7cq^8B_!BVqrzDrWo%2GH zY(s;686>eRDBk+Aq_3v)ES=6y3x*TeJaRhXp%yxe@BxsuuvRth79S zrfI$KL~YlW;H&QLR|;&#ci^?0oHMceR?pGQ4;wm1S)D;>g#l zxqfWQ<<-M@o0(!#%nM__3VS2ZKdaCyVp~TwC(o6!W~ddFe?oSxK)}sqj~AVSyqqLW zCH0>PPwsz6MSXKGp)vUxFFXiv;=Qn?ix_xz$O+p3x6d*B)cht5P6hXrYg82ZNOB&N zclMNrbb}j0Ok-{K>Q0+|Z^0+zh$&U@GMhOtX#C|I7G-v*vtW{&Rd+y-`kdFUPb?Ou z@o70fzAf=Wjw5#%4OtY~{iM|G9WFW18G+Pm&t|UXDIM6mgr=(rk~=Ga{Tw)Vr%Tq2 zNL2`WQZ)^+EjMHMRJF9?1qS&{|5m$(+Dj-WERX0LrYIjx{-{bvABlNC`F&vlJW&%X zh9E!h!lb+0iX?Oyn-Vp+xY(sAjXEa9IsF6Xm>TQ+Cx5MJqDQ`;xLpGiwiHWuT&rF` zg>6P^euzcO`HbI6MCxG!!UWyS3Ks4eD}Rz z1Jwo`DPHE}y=zUuJ#^F1x^kGQM(XsmY7jhRRyG&GD3z6F?W9>UC1#PjERv1Jy)tL z_#o-UNTG}1l!X1n0eY7&z-{hT%`M=t_2BM~yv4Un{(27z87C5vf?U@lpZnvBrWot> zL(OUzjIHz6Nc;H442w1fvoQ%cY7RKc8boLW``jP6kI094LM`~&Tu__ zqY-C!G&OT`#TdwfzCLuRUN zTq!u7jxhGCG2kU3j?@}#Ws?9U=o`1jE>Lw3iMbE~IoPG_!q`B(#_#eY3?{WT>jLN| z2hQ3P0kzby3oF7Wm$AJ3G?A@;QA1?_8mKEWgo`_#g;F(x+9No;9ZQ^j?xU=AMC{r0 zHSQ<4s+0?$itpMkcXpi-qe3dMl^zw&m~l3(!f|0&0DTwuhx8_!)kLMxklPaokbKrw zuzY>O`pCBJSY`o?Wqg0X=(l%53;|{o4EQ38Uk1YF8B9vkKjabMP%0OpDa{l+ z209L6jknMfpLOUVywv$XfxmPYr>;WTD~pjP`8>#P4Ovo}HGD=Zv{5UE@lYIpZGcEP zgQJl5MH_v*r?+bPPIXfGaBN2OfQgN-6>FGLHb9u(Rh`o#$)Dr_O*Y|yINdNgqRK+M z2oNif%jwkw%L%2Y)k$lzyi;j(pvgOFGGlps{+7QKjGw}JF%_w*np{Dmp)~!$0Ya^p zD*Sn`o#3IZwkP{R<8|1nXCEvLcKs_Pim#|Zwf!hgSl5n)j^F2$`}ac$)r7=j8DC}Y zGqp!PR?Id#nIu_RM%Ls)dZsmA)_|4nfdMcwys3fN4l>`i4+5aXS~Ue2Ki8m5ZfHex znn#trjT)XEgkdzE+0j(he>9eZL!&XDlbG?s28|~Tn-UU3Si6%r2MLfP zLB3g|j{R)t!fA4^04AG^CrL1cH@+N1gPF01y*tukO2+J>VNW)#aUcdRH3UwDI_JH( z$ane^!o9f;3@gj30S4D9^)w-(-f0ucJzQj(J(mFtwN57WBG_vWi_}`yLGp*S{7==? zd%i?W%Ad#saQ%ESeTXzNO1ronJ>#w4r5CKbEI#0&P=@g1)}6kIeDXq@tMya zU@wsGkIi4^MAPSY(tXj_;Ff#u%1HNuk^J2oV#AC$`}LS1d2z;(*N--Tun#>u^9vg! zRqGa86@=J5ZU_qF;_1Bi!@7&}SUkcwwE>s>Majrh{S~X+aSRn;n64pu zz`c5Chca=RN^Tex*blzTw-Nj$uFHjWvr2jg#nsX*)OMAam%#=}m&Ll)5At(wEr#hu zjC#8LCL{gI}9McHPq-Od{TInY%@>wG&V zb3wXENj0u*{nN{Vqr`%QVT*peN~Uym+DL?`^i;;++)s>V>Qe?|W1$IB;P`rkEb6&p zgsHGp(Eg|OH4c3B;9BM6Dm=P3ip5flL}$sa$158nIc%4&2@IvihkG0+TtCb(cL}Be z0LVf|Eeas|@!7|X1v@#wu!ItKuZyyVmX%cGP{L~6AcyD989JU|%9IWh8%)l9C<^OS z=yNJStq?z;%r=XsSq3NbfO@P5ggYW!I zSzz1pi)n?gPoc+D#Bemkt=4a_wypE=$?^%yo^EBT2V1kl)K(dwr1dNXt?HMW9;H({ zckUF5*5iY%8JyP|PjIk7W$ob+oEW-yCFVYgH-lc?QwOje$%v)zF0@rv(vp)N()9b1 z@%wwsDrkrSUQLwF^#|!2kPqX;o;ELBN9!i2dd}IBaXHeWWy(3r`wxUGlSv2-H>?^> zjB`g>zfw?FSpX|!9|VPo>o$X8Ql^jzi4lM&D_goV1Q;gMtXOeUo2*sO!BTleRaNoT zkCmVcTbm%oXC8>2N+^u>#=nIu$>WoD?i8oK1D>Ba*^G9rDgENyZRctB~j5SzU3ijDSzS$WJF))I3G!a}zKJztvyq zgQwtT+pT@!Iww72_HNL=-Ul_jMz3#rHD6iSVk%O&(z(24W0eurZxeEz?qf9j z)%PnV_b9+m`AA&6;67>V2T9P?iQCGKi)WZS;t};`a=h)4Cg#6I@5Qwy*X^wi7Zeh~ zFLhjHCQFmNc%4nx^h0#gR?;$(h4%78Cw_mZW#_r-&yP7giKkQmT31+U^)6n!8L^3y zyx~mNbMi`KA6333ZJE^>l8W@#$_L`^8BUXra{)S-KOjc3f1_SdY{Y+9ZZKr2kon~k zSKSe5&l!Nja68c}??FUOu&(qlG{B-u32)OHSyEY=HQK6{=m}k%o2k%mYM0xhRufhN zgkiIO)2f)O`5`AFbfz!gEu63Wd1_FrHYoA-5=(0U=L2`vEFv63Bg6cWP3maq`n`Ui zNCtqsq4`s~QT6Xf{ZyAWb8Y4`jg9Da;B`Vbr=ExpG!s4-BErHQDQl5`mfKj%HLJL$z|#>qxUk*34-I*Oo~>k9{#go}q}ddzM-@;3_Y3Q*YK ziolWS+>3*#doE>3;oU+R7s9&0q5085z6v;;oN&&0O@8T8$xj><~6{m}kn60a7} z$TgtnUvk}SY1C4?$B#Qj-?D~M*G57N&CwQ#?^oHX*@1N-k7$PNxCY-?cOj2)2`&#C z_6R7~)QtO~cut7w;^Uj>e-;zcy~swTNZVHZaxOb~qDyp#GV@Y=c)+9dGg!kA0P_A9 z)!NglD1M7Z*#4G*o$yH%U%MDrcf5|A>uWhjb%k6U*BzMsT~&k$gE(s%7V$^yi6U#R z^`$9`Wg*Hp={UaZOY*Yl8J8 zA{>bqfMrg19TJ6U%`NaUpC$_*Fsqv%C+OKs23j?Hot>^G604!jOBP5yg2w%+$jsFY zO3Av!;oD8zFKfZur?Jk)1AF62mjp<-Sh^jbedaNP*uKqWLpYRF!=&gKTQGkqDN_VR z%eS)f;&gSK;|~B|!w2Xau$6mi>A%G0nSlOQ%E^VWAO@?>P=#6t&O8^MxT4#3+Ea!9ZX)PsMBh4^Yj#>1Ao8~*$vdG^}^xS!GXYKeDYaf0qI4(rP5PHJ-5}1BVq!{(GdTVK@pzUyL17kjS+DGQy`)k+Qx?>9q8*aTzC!XFA**3@qY&R z@e-)rSXO!KihV|Eh!+7-9*3m>Cx6BH$O^$+63nYsp>MBRZ!f@>-iX;{DhbZ2H(?J`TOx=< z{AY-*w2|N{UAJf$UFir6#(gSCe^!v6`6P+8<;)mU`rB2p-Hi1oxbO#HwC*)(2q z1Fb!r=eho2l!w~h-O~^4=TK3$nu6}GDZlL-houIQA6B^Pt8tU!Z+YVK@`IH2u|wt81RG+D+GDsAyx(D4J)S{LEmo%`|Q2bY#y>fUAb z!~SP9$G(-4Nr49Wx&L%4X18LqwB+KqTGv_!afYxq%)|^C7`- zI8fLGpY}=+LP4A%P#?r6I!AtmE<+?-_oTaS%gMdk?3%jk9$%dshc$F$SFYg?3Hc)KO zDhXgyP{*m=QLbLs&ImFu0Rkr9Ao$YMr@4_OL?md=3|gqq>U$@@s42+1)}n zlJ)e}miW0-GaIJ6^q*H5KIv%0l85+|?)R%c11bbD7kuJ*kyAIcwUP_sFX6 zWd^22eY~I7ydG2F5Mb@Q_aI9%42*n5K0o6abEfemQ|yvtyl(T8FcisObh2 zfN_Jn=JFSgn{V%Y0QKyVj~kkr%R;2n25oj^G$f~Y)jM{3i+5=-$7ED)t1V{Jv{p(ND+I0encZ*y))RJz(P%5Zr)MBtB5y&TS$}7v?$MUn! zl--}wiBP8==7s6+!1{gqYQgWxv8jOr0O`KUWS7cA(>hhBfOjj7CIJvU-~m5gJ)6AU z8JLQ?)dlSkpLSQHFO$g*R9#JA-$t$ianBHn&Ue&))GL9~`cV5o{al#BU!)0VTjLI6Eb5 zQ{eAOJjQnP0wNq|EN+(cR|FiX7)Aa{OAVYH*6rrZAVsNXusp5=AZQR@pz}^!aL~{{ z`@w1onDc1Bq0~jO|1_LF`KOcBtNG~KF-0zL3&gDAM^p#--`Tq|k`1{{-Z;f~( zjd=`34~4%J;9?R$q3?*qT$z(dNJK~}k5*C~gu|`iALL;ZaQG3K6p&$OWG1l!jjt6EQJ-nEUZE`35=(y0#-8QX zsm0)I>4Wa3u`Dm`@`7ml1m1b(qqGu>2%ltg)?8r?u8 zix1t+l?MZ!o~=D_M#>DruV}XzLjb5?T4vMW$G85+C;C6XWEKqg5)Q8dMvt@Jed9U^ ztb2XFMz|4%`6@JNI`GK<*a@aP8zH5&mfs!F0ValhB~nhx%`t?irw6vsQB0-f34uc` z)0}d7cD^k6-ArK@HovkL^`{d-K5nX=R-xB?%D6oG;Tm@~20J<(Hc|x#wlW~zzCvI< zyiK)JoP%qVkvCU8YpYtmsQo13m-qsvbfXMEYG4X)YgWB#1S~n{vhK~nijH?|U(@q2 zqY2(GmYn>{IFe)8Zl)VdhiAm5(f29R!N*x)gfl?VRCF89`Bx`p;v6H9IFaKQ9;WqSimGX+jq? zzK}{EN#n$l?V#i-Hz!3qh^!6^L$!d3gRLPU9d=K`cQbDM#Ra- z{=-JVR!9Euc~XUa+nhrrdu(+_#X~l(wE4oYS9IyyUR73!yYwCQqBrKI?yJ`uE5MHc zi1r}^-2fnVETRZ4%melV{FxtpAlJ|w&jo~Pilg2?Exl$+aHL`pg)#+q_(fG@Q1f`w ze7`$%s5(@m@@?MB<5`CTSaBScZFscuqp`-Ch-v@hm1iG_#16?f!yaiA4jtJrc0<@0>>vPa$zP>~l}0hmF^8Gym_oIkMEfK3 zNsuk%4aRA%Pxi4TSFlE|jd-_jnUX--I9K1ol~~o1`Lf-@g%lp?lF8jQLM5+pQt=N8 zUKTLsg-a$v8NEP&hfF#QFIfj!1CEd>Q2{=yFBc-f7y-lgHJdNQ+Rv5WFc)ms5q~jT zWXP-*G;_GOXhAB**l7DU-Q$PL`*5kO_r0i%PCrW(veGjPFVw1x)#Pg#m!uN9FB@VP zgDhR&7+F#bp~9KF^I2`cGx{12-AeHN`TFC(MceOMD*on`yBw%G4)gzm=@?_4q90=# zmG_#Qm{evOV`cdEXSrz_SS$rj1O$0ip@A?v2cKc7{+NOW6P?TfeYxQOujdXVbz}a_GRzz-iuD{M5-1P<>Z9tnuM0&Zum3|<%^8c;$`vb(8o>5d`QcPqWovBuunVJ6s z#o72>0g`effiN&?fgI)y129!I7;+vEZXFT|_68PqD)5k!;ldRfUkA1cE=3`MPddr)^Jl<>>P~4eeZy<)|04+#7Zf^Ldp@Ii5qc zHXG?o?A@H^{Z!JKux=zg#yVN)ADvnv^8M+AXFbvczq>DStVN-F!0iaYd^19086PTA zd4}xQV@DwPbX*Lu_LrV-ui#X6S=wT?lLXoM15H=HF-gb{z$F%6_*H=H{9&evAL;w> zoqQ!&w{Y@ZVTxxH__t|=<04~ymvAK+DhA8M;GgNXPQRL)9z%)v3YV)}WGT~`iml@V z!P4PxTyOJ(6TFxGg4zJiy*aG!e|DeVuaPYH$@OWq<+gWkhUU&o!YPYwuyoahk-}!9 z;6%j}mq5{2qVunkSMP+x(wXy{9Hl9tDJN^@Eiu?p!Nh%hND0!oYoPwUh6|#8F}jmU z*Y+hI;Mgp5KY~2{cW{0no6zd?)fYN~ib5DE-^32r8Rnfham~~VC}E1h;{16Se5{{b zIb|q}7}qCDB_((3Sn*d`ui3fi5AP;2L>ZS7=T%jP_P7_r&Q>cH?fYO?f`bJ(us8k& zZ19x-UI!E}MI!-lsXy%>4k75^e2_rVPvff5TX7VLqoXQ8E+YwJ8&gS3T~}UPz8%o4 z1?}YL=|PF3nh5#wE||nwxRj8sn9hoBjrlYRPB~+6>s{~krTa8K3C%oB3ks%B?$=to zj7r;^c?g&B+;(&+Y0<}jFSnIKkUgw;cW6_h!9^6C_$vh8U(lABQOK&6t<^-4po*l~OB1LJ7f6qe=(-NW)gz`fKmR+jhwA4Shrl>Z*wdtOXK( zHtcjzHc_-+K_kpJcWR52)A~y|?#zu67y!@Sq;DLNlqi|DA>j)b_ogz*ZH^qZPJhkj z(=Q#sEEhOHH;y`{E7|T7CZ=l7G~><3^2gzby3d_YZt+bbq;r|HK0LcV4<=>0ckDy? zLH8BU7jf?X9`+5J5D`C=W1_+E4XO<`WP&$u5H6Vgm0RX}Ii`PNUOR7-Sdg zmO=h#9584YNU@#CjcLM2|C94c(X23(4=G#BdvoXt&!={I$BCYK1z~f+o9UdEBs1OHq{g2xbHV@qy0&vv;(N5vcu z|Ib?l+yKBCQ}dkCubn%P|Wlw`MvU+t{KOagMSiiUd+X zzjTI-4HYY-CJGc2gvW>Qg98#z!jb;5?6irz4)6jN86bcx&wjI`3T>r8-I()Y=s9VI zseyy} z>#rSjrQplU9>30~Csu&~gTi0g)E|fgioa2}eEkxu!JA>wy}ac7&0e9~#*tZ9jpqBu zLKdeG08TG=%^@_8n_t~}5WU)^mn)tIU^diYgECthwj#4_p%wpgy#oymthCYq+a&rx zu|6-C4_48e=0XqXVC9twznh!@d+$?kux@*g++n5(PKyxF(K|eXg$#oN^o8qR9q73UV$Fr%u zz17dLyK9A91iC(Am1cFD#4evmh!K%(YwAcoN4)-VJlpz#i&q!=V#&7&-VJ5z$M-ex z3?1K$8WmLiDi9HMs@uCVx*S!o#mInH@-&pIbHk2z&!phH;k8g0Q0d;>!`(Om_>5Ec zM7nIRH@3uCc0PV>-{(k-9*i@djQb5CFhUC!dr4u7f1C?U`4pBzHdvZJPo9J7&d_hm z`NoQj5do6gG=dz@Tn!3z&M^SyoR{)-===*pL_3n>*0;+_jc%AchSGVyc*g*zn=ncm7o~_^vc?QIi6{< zu{CpWHFEI$3sgeQZ5%95hP-onJhXRES$2SRda!>;ja@m|#xFexrcF2^==X~sMtT@a z3y1pPfcChYS{u|JDatD=GW=AOSIQ=KUs#T&hrrJE*!TzPh-Vgd;}l}g6-tCcCP*jR zJBW%0EKEg`gxHe@?x!O8s#=6>&p=q!(VJQMYDB6HAz{7w$(^|#lxRl(>UAgH_z*Z_ zH&LRga@yn0pZBb^j2dV0oig<)5m2!dKItilVK)vws-{P}qy3oZ*eG(Gtn+tcCAiHyyMpf%5DNW<68f_dU< zz`JgLcZEIgw`hW7$hu&9ljR?Y=M#=T`@5U1&+A)u+?E|_BjKxWz2huwy%`PXt=m28 zqDv?*4yG%96!)LG2bPmhUzMydFpUA)XuLtCL&aACn#2_jpFY_j2Y$Dje%YKHio83v zWUg5x(V=VM?TNohZO(xtS#%_{bu&_3{ zvopzoq>L2ZvKnl(?Hs_>vIa9yGPqVYxzL5-h(j#o3f3w8&&fjWWa7}7IbNAOv<*5P z*bO2^I;SFoxxb!S5+n^>ih(kjB3eZY9XB&AcRN)R(nlD%BYQAA@a(9agvqY3g%T^O zLNfg=0|<>e7^`dYk28~s%q+tdD_B)4N#O0i7GVNdS*2Ked-?U|dqkn;ap?RN*`C^2E0!4_XVoXHT)fiT~^a#jWmaGu72~nbn z9zBbP%c+gvH9>trd}-=6da#eWZqFV1u$OK65IPUtS#m#1v3(RW(y+#ppjkQj+T>&4 zg2?6VktjS0i;ck#>-%uOzjrpj7<;+-o+}SX8U|4QV%kMgx2Q5a4w26YYHcsOm~I3H zfwA|7|6q7@8F=Mcq7K2du#@JaGBBgYRmY6^W_|~iGjW_^cG+)sN~_{t6|zC1=;g!DkK3`O z*O32er2HHz zd5gVGrW7+^ zh3ls}XMD_@%>q&2<@G?2ffVvEKjCy)9#46{Gz@-BP`u}o8CFlS3Ji(z{00cg)JtUV z2h5o)%UAt~-rrbhg1Y-?U&8TYG8;=aoOCyqHxw6~TGbI_m(qs0K`9JS| z){7%9aBA>>>Nc?bjb*iV3rPzU8G>K?bKuKK14r!y+6*E6u@t>h{-njmp~c1qdb>7p zwES=2Qg(0nBzZ`V+XT%xd>N$wW*iz4Y!;P01UGcl2UBIkn{oiz5IT3Jk(+0TpHXOP zG150{mb`8}x`X`WRvo$w(@2gX2k?MkpM}_5*h%n(Jc~-FfobX^vK0qQu`v%>=}%CD zw=iKp5WHd;y6Z#1&V)=?0xkiiU+RsuhAvWmbp-=v@_xNUi!NMlK9z2WT)1=xjnw%E z%xUi*uD`$E2cd0(V4EWlZKH@&YT&syM0gvdSXtS5v2EZ{7bv{RyycY@fdbBOO@FS5 zQ0JLy3osx8`oFQG{}0+Xd3h$)ACn#`Q)BW>ai}Vj%6Fqm%nD2j(^U(<+ePVY_O!sk zN)$BUY85=y9~E3wLi9!osMneQPX-Y?FDDnf4JQZ$w)tDy+_V0{Q2;A|LW7Nq^vRm6&o8G_J#JJtC{Y`D%_OtL_x~`mLMDdC4Y#cYf!w;_SURGD-J&_1%ORX2=VXsq^>1i`CU+ zKoNh^>l2XW3TeT8gue4{)2Ro25x5QD>>VV%&fhBF|3m(813ezh3P|HKV{V|HD)J1| znCtZDr2Mt&xPmgv9H$Ds4W2WQJq8jBasYuHC_9GC0ujCj^c_PcGDMg20Ar_e>Ys7} z8#7HvqNSES=aM($_8Q8WtUL44Q1Dz4;XR|LkDo<10lF*U_8OnEzM$jTISS#&UY(c*yNH~)DmzjfYXIAcw|tBe%NYsd$?3I@3OS|L0P$%{Naqcj63hG}wzT_Uqwu{h?CI9#?O8#WmjDfKWE zF?^Jau@p`m9`@L`i~E_G@zP8ZvQG3ITx_zh0zB*~f`=Sr*5BNPlJ=f5&!EQZ6MEZF z2bf^2kD!yAiBdV87aB;<6rWysmojT#onWzAVdE_MV$kC$ z#Vu&WWCe<#X-35>r~L|7SQWNk>HJQOp$#WF`?vH&=xqDkW?z>A?R_S;x7pjzl*E|la4_X z*op^-!di46#vB9ol}HRpfzuxbCTi55kHu;w-JWL>lI@3N2p8f)pp`Jg{3A+=0}qoc z1aPYvF$}oL2SaUaYhJ-TtAr>MqYtW)a8f|)RDYJGgv?UH3uF075|*wH zGH!P-pQ1Zsvbp)IMH>x??elx#T}u!)Q@BG7@{4~QqDH!+2S)rXH@nz-)PA7yI-CFy zx%B^0c9v0bW$V_)-Q8V-ySux)y9akd;jTdn_h1R`9vlJ$4<1~CyUSPUzW1CyefzWe zMGb1~vG-nE)_UJLp9u?(%bv+P10l}D>&29=^kRg=;d`^YI|BJ#ZvHQOi zR#DSCPYl33187jOM;1#B4`AR>`uSx#BrK+o@vt`Ks5-6vv>~h@)D#cCuC{Y6(}>o_ z8ko7X_M_-xYB1!0EZK-Z6%_V!Nao0@4fRnLnz&tB3JM?FQ{lwFPV3oR8z=>8s* z7yk62=WOC`A{%pUtxTZfzP1E|X&dLGe8?F(bajelt28QLVQO(pXnAI5n}ATTTORgX zV%PWN3D1pRS^J^#hGzYRWCtpU@7nTBXQK&$(cxaAmETUX5zGa zTIyJfFD8QlWp;E$KMC!19W2v@Vt*oc6Dg*fcMUy;*%VF&u|US6S-n7zhJMA|$Tby1 z6(4HuDR<-5<=?BT&dGoOS=#^0&IJ|;;Ev!(vbN zEv}<#sirh7+@=RtQIN}F>xVCv&r2Scg~l~(SesbC6RCT#!`6#J)Dv6iV!J{stK76X0xZ;8e_ei#9mbjJDY+~ zzdobgBd~r!3)P9P_aSfnYD+jZ6KN%<)y4M=uB#n7uhIEa0ZJ~OK5n~F4}MX0*i#NI z+?@3ts0AIe-uKl`4zoCmDc776i*w=T23>DE8Y5kD-c(l~<7uJKUbhdk#Fn!ncCb^R z-!lV$+jmioPDLdOy;ZDf9*&tjCZ^;_y;9PZuc+o+P==GU=n%fB>N3?h!^z6fC#4>b zO`E=>1j(ER61u`$%GukC~4taQ-bo(sN_#ZGI|JdQ$40LW+}CI({3Ac@}?$Y?6AtE1$5KA z{ik%kWsn(0M5!I90o2`@cbPJ!>M&Hc57~Go96m+$`nRQ* zEpUJexN!eZlr#4K?9u^25+lz)+Jo#tbaX&ZiGK=@{YP2SAML@8V;HO!L`h_#KbLOm zbKeM~(7?dHOa2R=U}4E_W?{{{YXI+oIZu#R%9J`&KPq9#q^@meHL%*ABP1w1 zHH=$zCJReHof$&vb`V-Y%1aN6BsOG*J2zDr&6lj89-*AE$W1hzBC2yZTfp7M?=90Z z0_)pF4$ppx-0SK?H^BL|QxU=|dbF-MHG@HpTfz_a$X~~R)D-LmZi*$zH5TU#@8bSZ}z)`&lX% zuk8&t=OB^NR)A(nrX!~5yXMYIYSBQS8d6bXZl^c}6koD%jpR%e7eelr0lBRNU1DT) zwWls6X*TA!aK$>K)GgxZPtq7Xw=zs$wZ1{+n|JUIDpDX(xvZOHYcULZ$;I3m>A;vHT7P1H91z;eMJTPDn+vBcXQh1KaZL16u ztbQ^mFJ|Nw$}NvYC$s`5C3ApU*^JF`AMp>6{ILWTB?i^@$rl=Fj7Kx4uGlaX$EKfj zz&HRuSUVxS5q}YKP{IKhrl@mINqYDzt(2&YR1(OMej8lvR#}WJI&4ErxKj`bW~&;> zwnPbjeHqaOe$A;90hRSeG2zJwzgDds7aR7Iy_GiTmKnr}zn-#=2loKsbs=rf+>rSn zCg#U_M|wQPMZmgjQh3@Ds0t-we?T5|T>)mnu0sbe+ek!RKZlQdu-@L0c2&lOog4un zN>2)(aKH6kLfS=)ewp4??XPr^C>i9p`|wJEdV zTlLL|+X}MKMhMMcW+xn$m#&s z!5s{Vlr$Ti&9n$=Cca##K+i=sTzH~Yv)ovyKx-8&CfMg3gc{EJV{I9l=uY-WmY~k# zUh<%0X2KmelxqyGgCG_a64Zi@E>2_gWeXOyP!!&WKyce{%~!9+Vxh)GFxv;MPp<`h zxWp0t5dyZav64+R5aPIC2h+V*VAp`$6uBW8?JBic5J_Ht&0#m~aJ!qR(P+6GNMxHU zDz3x%-1k{pXdbubWFY>rr$dEMZbQW81H^BTJa@N`69^=qa{2^0itnz%U>%y%D^~m? zC=Fw_JovyfaY|5-+a6h$h&7&IJbYS8sWT*E0@6dub?m9yEQf;gO{$W>12DMNAtYr~ z2PS$qTOOBKtv`p2_*H#*MLPb}K@D=WK7)P6si+hd_ss;Go+71)M|D-xwk|l$;xbp4 z%*VAQ(huYIzBwY=t@ary+a7wt*Z%~kfKMa*>T8w!7H8}+l0eRub>D!;6&41NH@wq) ziLn6n`985^nEl?w;#pz*2!LB@F95za-_)g(Jmt1O7v{L~<#N6y6jMR_0aOdc0rK7* zcsy=DR(NcX`g%OY+C`{9%pi~3c)cH8(d}9!+(&#GN*zIk!fwPisAFAScC+=LbYo10cKEJ+xAe0jY`A zMk?MFz5%`|#~twDgNT?;o)VaG*uK}7-vrx-zYF>)>*Z~RM*2ojwzPfL-?6Rc>TZl$ z6SULLbMU!QW*&P|P84|)`fT!TI@Tt%{dV-hiQ6}Pm1dNqh#_ZI7S_-Gd?-7HXRxQT z^^)?X)q8+FrgE9p4nVa97q9O`#n;{GVVGP@J(NJsYg`sJk)k6>g=mliNp&T|s7(d` zb>j#QL)d6lTAl%Y%w(xa><)g+c$-2mL*PSk#%>&oPGD1q2b=dZIYk0)0u&g^TX1jC z_K)&>D)%MS42v{El*Zl}<$;SCM1LbHnW}ahtcDw|YOi=_Y`|}hytP76l%;?cyzCI8 zL4mA#h@3hcMz{R&`_DUzF``p4{eij=GrQIDIHoupy%Z&5N@<AyOvQq!u_*1~kW`7!~nC7!B!f}BhLy@m3A{3|6(eS$& zP4g_K_kIX1*#Ha{bNsy)gyV9k&Zi=ZF`;pGS*^i79mHk5(d*=WUN+Nm3K=M7z{;>h zABDwX6tk6%pF6JHmA#*eX#eU<#{ef^>od_eOeLNRRU&6Scv}klLGY{{n78Dq@u6Lj zYe`IObPz+n{td1`Z>1TtV5y0z+)%NB2)MqHEPcXI1b6_|Ckrw;ilGbWne3Pgm!ig; zZ!;Pf^(hFngaZA;iXV11#$r4%V?PV`T3|*wFc$r~KGhf1*f)zaUpruZX2`QG;@oPN z^K}86x;|UPpW^kFKeA?xP`Q-Fq_55%W{m^3XAR7r}OLuDk7!2(&|(L6s|V`fbxn!w$YB~ z&M8sJ;@iXJbGd9OqH{k~tgW@kI=szrn(_L~j1f^tjbWH5Tfgs}NVc!- zZ>p|qo#_2KJ|)qZv#YHx$kjtgJq$BMgXgqDGai_;hTVb0Q;JUB;>mj&NPuO`cxiT4 zgC`Ow&Mu=n@QDzSxQ_-6>_~tC%J^j!Ne#dlPc7HmbpyqO4&G}LAwlPahKXcDr#4}& zB_QjuO1W-UFmeAwWCwO>hcc#zJ2%;buwL72+*c~X)hgB{Wl9oef5SI~T1PEdhI*tS z#u^L-d|kHbt;d?04hY+BBNh4?q``A%(7vM226S(Ei*i_BdJg``iQQZWjRHd{pWqQe zfnC0@dh$@%=DvSP^k=4`%!WdUsVSW^0C-k6ZYUL}9bRC)OxAmI0{W%IH+&1KocCJSvkE2Bv;Hf(q^kg$hihFPpfH8v-1%4zV13l; znnKjahkVW#iF(6z&f;N)!7dYFbzH)kVx%Zda!_)6Z+@|>>ogu8)-Pt9h^p3(sVrw( zN-YqO!!^kW?zcRq_;{b+!zHIwjK z#k^8WX~ayI^@+aF+hcZFM{Jn~U||@jz6xIWT?GDM>B)SWgfli!etkw_aNQ`-8`Z??s7|b6qOURL@Z*D<#(MU8FhjS|F6im?g)vR2;y6zx@>2 zppBqZA8bEoktpglNE6Kn7}=BImcv?MT{&o$D_Y2f?to6q^|qP@p!WToJL5g52_G@m zY!Oe9ycM&=$8roos-dEp(Z%*-x8Q4;Wh%qaLx+DN2NBxQ-4@bBTahqz0BA&*iczYO=$ax1^uMN6Vb}zO6HF z_TszCTB-ogcGquWJZOLZMT{4jQc4Wto&Nl8ZkTu1<>n~oOz40VVIuQxkA$-*wAMlW zxzc_ueQ9Xzvo_p)_}JxvL@rbNYPtz8Lo8xWz!E^L{nvG2Fseu8H`SM)LLN5^g6hqE z$;eoGA|Ue$h+)2|Y0V-8>gW!o<{FKDatrthTr+X#TKtSp^zE1i#A%mLj@PW^V4nk# z+WC$%0liH$8n;@$7X${;(U+!bbM@b&^gjbrq-%0{NsleLd9M&R_ep$z58tjeq=1PG~ckSljPQj-q9@l(t^Ilf1dEwTGI49JflO zt5buHD$80`U*3Gp^$0It=154aV~gcV>Ok#yqH~z6CAV;zM2#-L3{UOd2dATf*u-gW zD_VKWeJLE{-sUk?1#?{*t&}tp05(17AVQOgb!)*m=055ok3I)sI1ajDBv0V!#X<|P zfk55!Ns@t&Vs9KNvr&v=ol2SeX#*MC_pLKOGPWu`i~A1e5Ppc%tWYH2VM3~f-#zH z_*0mppYxjJhYiAn`jnM1sN|F*n(3Z=-pU${ImtUR{&j}rzFgj?GgMHt!tllJi2cJ&j7M?p2+!)%J(aKp)K}lXz^%AJ`iwL?3P=KMY`6FWVkNIbaJ9v?VMN@#mF2`t~yTSt_|! zr-aj%Vnw9>F(tGVbYA+u)gLGg(mz6?+Wf-!K8Y*&s-GlhfVuw*_)EbG-0-{1S-imiE_0WvXjp!# zn5u7^5~+$Rf?6KqHth7fdR4uH;w^ewpYLv8F&*e1+K?D;f0NUFzLu6O2KAz^|J94; zW3%Ao;^hP(zLgXp+0fROLrkz^XuD(qXxPx+b{*n%wz$2aAw^RXEYKj;C-O0Fwxfb` zm*4Hd()x7vf!H(UE1beBS$pGAHH~}w1?#>uEm+bs0g#}e# zX!n6(>~$$`=5z26{5}3xYE!$oOxTQ4JSsK|LdcycU1 z8BQdZ1Zd8|`Ovx~=^)yBB~%QcVuW)eiJhp!Eu$9Y2>Pr3N3xFKjWCQfP1(Xv^Ry%A zR_I<-q_q1pb(ohllGIYon+x!;9jiT$F(6rQ0wF#{iSqH5ZRZCm?UAS`hto(-w{n&S zieh*g$@1aw4dN{9hgvE-CLzKYC~~jX;}2Ye?YUs$l>e#C zMD+plyDlTUlZX(B9)k0KHl=~neK43nF9;aSKT2LaVN5H)UkeET4-y4XnG73P`wN*6 z_-F`=-Qu%|PznBL1>2Pgj^@w5es7$JgNvPw-JI>OqMP5Yk~>JgG$bIeI|{w>|L97w zY5X5_nXVoQ@XRB!O!B{*QRkzIlXTIj$gT}8mv{3Diq?45f2cG827mQPHG@|sL%Z8q+N?$e|n>{9QQ_BCEWu(49~ zvSnsC=0K$KKpmY&9;(vIRZS_3jmw4eEdg26Q1K-*8e(rWFk|J}zv>Ba@Uh9Td?q7y z{DLyq@K?E3%lTJGn7vFGep=L=WM&;{3ub*gSCeTi<($>b- z#`dmkinxeRbYf?V;@JK96I|FXTc zNBOXoH<@1b2XPXj?U&-%3=pc?vya~ZT~Lrn0bnq)QMBhAtevLP=Twf zA52yQU(R-KbyAcUNmW>ydA7^fSk_fr-e&tBUs_b=SIYS3mi?Wb;}c|>s@!+_83n+o zq5=a`gacG`sQBwKKIxOju*3-g&Aa8`>jQ{EAG5!7jWU%?>({Lxz;bFuv*v=#1IU!f z_OWd&_pJ87$1pRPabR?*{CUlI8Q6H}Ik;+|)?h5bW{Ocu9zferpLGNEp4i7&10bUb z;kcpgA*Ha?{mlEK#F4_>3>TqnB!n1xW#tJ4B^G(c5f@O~c>WI;&K@xM437FwWrZCx z8s#4zLw^RLBxzvt6%4)7e_k^X6p;V-yxd$+POcEUMl43`M~-*fe~HOu03zGK5@6x- z;^75F1;fYuSHloX4<8RmE`W>!!1?Wtq)UQX?nO&V$pG5hxPJ#P{j#`v2o@C)&3DXS zhe`vB(LpYR_+6$MY3YVAlRP3+y^Orxf&D}ab;EsAJXTl0gDs<%6&T4X5rS&jnim{Q zPEUT$BDw%>6o)_YOpHXgM@TttzlbzoaGnX6bcK$1I5*0$`^9&_2N5!NylDcK$nun))ITS*T)Y^xi zb_x{_;7Cce7jolFtp32TLRcb-TcxkHdrHfnJ!HQH%5}GV=*h+s5FZhk8l7)zRf zGSda0fa6L*wI zTmX{MrP5IJui*v1FZRfh`bi+k(m#o_{;tjY?-w65kXQ^65BQlK38AHA3BK}AKUnx# z)h}5f5;HQru83FC`UkhHsNM@C(0rAi#V{a1sFK*Qg!SpaEJ+90A85 z`=TID+$iL@y?Zji8=AoHH`(!faUAExL>1(5ZubIYawIgJppTglA35-XU4AHjhqSYE zgbiYc4RVAfBaE6SvYtq79F7#q-SJ+6mRQU-*@~?M4CeTO~?$7B&B0ho^(CHBTAEp!k zD0%yN2;Tk2JY;)cRU9bv>!0Q!?0?hB1tUV^0bOL_iCa2;XimRz#vCxT5uBJ_hA@X;hlezR>uE}v_g8HNKCl`Z(e*kUuAx`3~>?wvr`9F z_uF;XwDKGnVdpZ{W@HAFrMJB8}8SL46 zi>e#AocjwH`~_V85AB?-P$=CgFrN+?58yBdLM1dQI4PuUO~fLp$A-wwYL(+SH5Wup z&4-iR)~i~lL=$IN_KjPvEWW##oa%TBZ87TfpKtgnl7d?2QS4^TNpx zMTwzji$D!B!CE@p;8m!mY}ZPedJhIWjbU4WNx|D>4v80*7q3?c-8RwN(d#<1U7|DD zwHHhwpU1PXgNC0V_;=j%1u&-{xXVj4d}$pd;^8K4F>D`F8QwjZQ$#v`=jK4>->88o zRlvoZ!Ol5XmMi|od_=YmV*;B2Nc8#jEd%Luu?p#aq#CDyBpfRFdvPRPJ7Ikxf@eM- z5#HxKRI*!>XTN=kV^|Rz*i+}TVU4LZs4A(c#jtyld*2{Z%o7@_(&ka~rIF*iIBBYF zKTVf1!NYp`sVDKeq=@EnV~DiFvXPI{AEC0eMw>1rBLZ-Xs1;6od-S2h01Z16;rI55 z)bwfKO4q*6*iqFw4~&KKN@mXZ%@#7KtsYwPp>ddcLJ4Wjyc&`grC3L^4N?{yQe(Rf z(}on(;Ij|D0;>_Wn>*4uG`Ip?%ar7X?0Hm^sXI?zP#oSPMRXb(L(I>p(3d?Z*{^?- zg|YNiK)nA7WR*fD0bH2;&h3hd34wRQj*(J=Mnzyk0LAX4I@R0ZUJk!so-qhOyg3!{ zX%G&&$H@Bt^Y74|#7xKThwjYqo$JTPq5!M8ibOq~76W5j&8Vt0SDi7dCdKO7d=|@k zedZJ)UD-mhFJ+{AKgeQj`pf--l?;uUw3wmYv;ZXB@RUs`@mWnU{oK@nmaVy9FT+zu zp!l7&`PY%RU7%}g%+$lRC<8SciOg5uuui1bq7$+ig;oV!rchN!dF5xhv;4v6E1zSe z3Jxn8q<2X+;3f*g7BlcjzLYcer0Bj$EMmqOS7qok7z#1-XJ>o<2^_PbJVNEMs*ugG z1%Rv6po;TXzb7xGECvlYCh<4;xsIfL@X|=i{$Ua|7=;g2yeif~22BRnF)J9<=y^9bg@l?B z1WcMvIglp^QTSRer5A>h=C>z^JChUefHd7mzkZ_>f@Z*Z7}zohqlwsGWwiBn%1R1 zYd$u!T}>qiOf{@7yP{^hmsQ=~Z=zZw6cRHf*b3Ql*#HWJDqF~3G+4&$EGG;cDZI`z z1Ue7k%uwFu=uk$juA4tqJJ5SiCB+(h3IJcz?yRh{GUet9wuV3%3|4zN?q{8e0-$&r z-F6TzQ*2z?uyZDH;uWp#KmHloAxtacD_WA71#ZU-RG!X(Rq${61@h&J7 zf5&iWR4xZ(-@;@vDTV2Zej<6{6~<(&ShoRF+KuACq)%rvr%s~e=Neu79754!_}wuv zLjUQB)C>A(md(hwvo590{amo+6Dq^r-0VV{H((*PL0}tE%;ubTeTa^oslLf`>Bx!3uU`;KEbwal3h#ZF4xP#}iwF!iQuUhQ`zglKpX-7;{XsyKwrGbIgcg;$e(T$4j zFomDyG*uaS<{`&WL+HKC4yB6M7{w90ZYsfVr){5?KWXTFQs3t+_xAx%U0FG^Ts<6B zZXJF+ErTPjnRYXxv`!3@hZPFbw8?3hs0PG!y;Bl6TM-|lf~i4on5V4L^RAYKe3`W5UfF{wkJsXC#p?_BBjXYL95i@yTn}M zJTt&yPJ2KsTzP+)u}uSa);ZA^U8$INg|f{}VXz^NukG#~;EI6@2YEclNRMC0>b{EH3p#AS2!MEl{W+d&_x$65S*#yOcze=&#eryq;vt*e*KdW=;dve$U zs*3!Va|7vZl*|ZpKTiLPk-^1gZehV;!2?2R{S&81X(5ft-Uv(6*42uoQk8Dja)x-6 zltZrNf6pnxMG43m-4WOquyJ#{MFsUjP#VE+SYx#S3~rEB3XGpZEe03052YLGRyupi z@NQ0W=Mm%=;t%)7vP}mYN^cC;DNxRuI%=TejA3EHZz70!_k=?9eCBv8BK>fRX}lgm z0mHY`Z}oG*zb%_s^P~`lQp9?O58jXafVNwExLmDS-87`Z8#G>{S|FGc5$2B?N=`c~ zXIg-}xf}Oru8Nx=r-;gA$s8oyI!p%)Z;)oHAqp;dzHoPL9-vFO>155W*!2W{5$bs2 zX?9|Hw4yfXhxADa^>LyzX}3s7hDfh3@iS@vEAt|@=-6Q4o*7U!xJglR?lx|b*R5}0 zlUvXP+z~$Vd~tt{BHg3XT2${Enw^rn-x?r$wIlB(6cPaI1ws^oi4aBhK)eF20<>Uw zh(TdN8Ofn~!XM<)>7vgm523>{2N1_7>_B~qfloQJ==8DUK$qojKdC7KgOmt{#wuH( zJLdJ~Q7+Pr_k{4ds4ON1!AUfj=W)lBc=~K;&oJY~Bb-bgzkmouI{!^50!03SC`$QH zL{VvXJ_u3tH$qWR;eJ_3p5kbko2>m=h#6ng&dg=SZp|HyyaBJ-V{bizwFzT~L9$q~ zKR9+4|8@*SkyS82hU6tVhnu#U3=tQ51Y6S2q8-jpB(T0s$rjQXs^**UR=0LXxpguX(|$5{|Elzc?4#i z?4~2@s^HJN@-M8BANhHHBHDblR~Z?(!S~)7IZSXI1_E+!!iM3SrhDkzK&d+u{>j|fuEA&=D#;(8Y`#L+P+53n2vG5?}Yxnq1Sc)Z((8BkQZGM zpi();zf0woTox9<<`x88wf`}}XZ^QTmM{Gi(cir2o)_R|8qmlVxOb+|G8z*ZtK*&H z*E5~>tEog9LS((H&q2UV7H~pt?O$ov z!8|f~iNZ=1=mWra?TfXYQxip-4EYQv>|Bp=@_;Q?+Wtm76=$Zv?1gpQ z7Lvv{v?+)r$O8zxDDoi4Q*c{EJy*ta+}CZBp^MT|A*Ml_U5xRe=$#C9+$hAbK=n0Q$6e3Y(aUm2xB(?#}XqQc+3RGYQ`S;gqJKY?6v0 z%E#no8-=2oXeR?Jo>ATbs2KsS&LquGOP&lBMpWd78k*c}YEBq^zPIx=F&*#9BIQEV@{=WioCk>)H9-0S=& zsV?V#mK}ktU6A8{ENMmdS_X!IUv80z09n;1+IUzeh1lP)#Cd|r)Lz@mT?w6orXtD* z@Rq4GHFNIyxfYcz1y0@}drC+_!jo@UHDU-(Dpo^UO@7N&0lY=L^ zs028>TL=_RQ#3Z#d3!auiAlzkMNp1%2lVDL?!p=~RnhFvqoL;)#*0uPzIl}?^eW}5k4KT7B%b zGi;%yN)Y{eT1FrH18g%^!Yj!rXH-?9*sb~0L;sn{!$F0p-}&YAbn*V{Cg3%|>=>j8 z%^T4FJoE)P=9~MtxLpk+e6-)FqZ`TJvJQ7`^AGNcWarpzF8{4P8$tsY}uG-eko6vf(Lzt~_#}Sj~FI8^_IU z?{M|KFy9sR{WI}nIBDDM58XGDE94{Z*S%5KbddMV3qzAC&xD)AO{8sXhrp%`L&=yAJF4c;ey{vJRt0o z(|$Tx6|6!TcxJp0uy{D3@(i_r-MlmUy61iIW#Y`=ut#frvP(PuiRHHME47=`gfM{i z!Q{o;{@~~XqloSbn%E6m;G~IvT_5TXT=c+ZVS*axm!s?jnf1uvDFE-@9Ru?+NkCrj z_De}Z2#r3v(Hu7kiLI*{g$h=Zn%G%Ct+xdsOd}tYd`#X#xeO1R2)q$wvo&HV1^Foa z9v(>ty^l6qk|V2Sj;$*9aZEqod{mUawphDVU4f6PKgER}jH8`vUA;y7GnG`j0*%`v z6B7#jT)9b{GW7E}1>jqn=Clhx|JbRUWR`i>w>XAkpvA}48eaW~@@%Q;^9(D`4=T>J zgW1^Ls5gUYnrh!KWwT|epjf?%xW-JC8QO~|XDxxjR1;v2W`YC-2l0|IT>D<c9-?V)!P%a&wO_5eqmLrl9Mop-&*Bghw0?(*Vfz7%Q|(%J&_Xf>LO3 zHiO%DEZA$A_M!7CV3pMm!I&pDZc-4jIwIYx{j>@<5PR@C%AK{P+6S!7XkW-OaYxx5 z2>58pd0|K2zRSL%S10Uvr|9=i&?>ZtId4Wd@T^I=v;UaxlF=`;Cth>5T6>$as$poA zYUOVyC2NA%!vqwCBS~qN6;11|$N{xv`LXGywMb!aOjg{f%>PkGYaeh{2_w+uUIf}XrL}c)k2f?O znY)(~?ehixgYLP&BG|gn^Xw01YurVV@FC|*JXc8JFtH&PQNb|!H zvrekw6PFeiq?w4dr)kgPlG2f!n#wDs$_sQC4nl~HSh;H9@NMpzVgnuvh0l3-alS z6svW-?H!Nn&UR_8QhZ}&ZEi+}O$%T3U`3$rv5s(%V;G0bxc#{#&#lWPzLkAGF)l8~8S0B-m10(Z9-0;xYd8DOGa z>?Ll0;yc)-<>W@%U-nU_issTu)C8%49go{=QO>bg&jbQnO;_gPv}Jww))YgNC}5zG zGf$~}OWWPC6=^k@tXJ6H^6eWtVnd730nzEp^COnAQ$m+wvZEj}HYPF`>11kLx0h;Qx?5Yq@V*1FnaL;C*?X#!$ z1~X!&HD_ol6v#SvjAv3h#$3JO=fy%o?_nEJj3m`ul2D91%H>?&7j`Uuij@#G^l+Iv z1B~sCXEu_-p#*M@-F-M)+rN78_2x>8nWPEtEWvmoVbR7?YL$>;mg4%((d!FA?o76G z<@%E?@lBVs-ty+?bMTdECJWsAPmJnIE;5)LEf%MoM(hmy*eUF4cFfgD7!#WA#&0D_ zz>0T8Z%X%q!-PaE?g3g*{yLRzZ=A2UCIITe!Ohx(@FpZvorQ zzWco>LB^B_^P{IRge-zS#-sth_@A%csa%A@?z%;gYf2`$^1{5iy=jFAF~MU#tl#zt z^zK4t((3jkb7A5>exP~zFkZu@s&K;X)w1ww;hcPq>G-D~ZE>KVAo9hJU~jZ%)*R?s z8L>KXMX~T1$3?kxumiLMMz#uObUgqb;Z?J$&N6N>v>vWxh3*%;o*;>ncg-yri`o&J z$xT{JafQ?3QZ#-%WwjynYM-2YSO*KuZJbq%qrk1@T6%ykfmry+)(KD`FowpI_N zR`z>LN)k$%84arTrKO)f8X03>POvjg>0EJ5tmov8<#8Mzx33JZld|Mbx>cDYe>8-&V1{&WJGFB@&CWt9Aq%?jUh;*Lchp%E6cB_Tt4zp^Na=Od3cU zpN@65Ac(u;tIq~sSKz+KFy_)@wiLAk_GyqF#)pDE=`Pc&T?uSPMxmUgj8P(1o~5mr zVxIDUC7Q*geX7y@)Y=DcU#Dlzwsf5UGswhq?KTGAYu+$t{sRsH8Ya)Y zq6RLz)O9#E9W2Clj3jZCE$h-e!nCL+AXdy-uw#hnpoR6o7OOqNu2QV<1##UCk)Ijt zLL!>NU>|9iz= z#Kny~w6FThlB+I8$4HY()wFKD%{l=xN17d0YY{t1^t=;iK zn+RKGCO+2kHgj@cE6d>i_jIALTy48!CO-=NRP466%8hkeX*>BM8yNBV^!$je2P>34 z=^FPM>>ZCq#?{QGY>2#(DGmQukiKMl>Lf-Q7l)xHP$`&==^Lo`f( zjHD0|xnV$RyFPNltEc4YM7R6`q^m<|HUGhinlHFpAr1&e6|0^6q^h50@?hWScaB7W>6`r?oowgZEX`5&;_RRDGQf(!JD@_2*F z$w!x|y&v)IDgYBEgsQ2Y6YXN=+sy^98R-u+{xvYr!Z!xgrAu1Hrzib2C;D86r=X3G zhzK?;d?GwRO5n1`ZdNxZj$3iIsovx= zqtEpdJN8kbokAEl9q{UT+DprrR>Dwfu3+a)$kkaEj$HD!U~Gb|aHOpMZY%b!!-_ds zZ8{t7{X5Q#+BA!$MUo6t^96j2@G4>7uJ8C?So^K<>h^Lr_v3HA%H7S>8DRJL90t>z zF10(38$Z!H)&lOU6eP`37CM1+u!Q}6r58M*gU3g{eccw*>429z>z>wjrz=0&R{_TL z$Kh$ola-Dl436j5&-m^qD46#u1d2vEP<_>F-da6YAPu6?K{uzcieZn z(tTzLuVrDxSOl=A8yO%8B0>PQ99Z>l1kA?6!&ylOEVW}{2at$YAh!5ZLC0;l#Dxrv53j)BIb z-OJ>{ERXc%@4eBJ%U8EeynXd*Z{K@pZ#7FeJ2aBcZUDAga9p+!2`sgyu?FOcZ5Vnx z%WMk(i7>3U0c8}2pH13Y&y)QGcb9%DiJoYo8 z{FK>GtO}Uz+_9ZQfR8_WL5Q<{y(Yn%SSzhDn8v!?={dbC6nrm4JF}&1$XW^1SBTG!j4?TGqC6-+9Qkaah2dQ{vYTPmSLG z9vTHq>Z*IjK&xEVIuBVL1oh`20u>OidfY?}o zcOn4B{mJcuwt9MQS7Vje$j+C-n4@ThyF|#iB`B-2WbXDuX%69vo&Gi|sRV;D*_6>{ zHwNvu^gDA^T4QB_cZxxMo?&y*!s1HpXtWQ@5Yi{Egao zhpWoUF-r2`wamRVsYO(TBa&AYv$j9(z<7)1O38-3+w{sx!$`+kAHy4C8Z%`0wp9+0 zzrEUBfQz-oHJ~oUNLU%|n?xlVj%1q9O>;cH5c~Yj?7qIYmuJ(f0FjCj_FYJAw{FM5 zM}?lwdv=@(AIJ09=u`5-Uu|!+j??Eu3~Qu5)3sw_Dx1xTk#f2v3Mu%2Ti4N<2!VoT z-h1}vyeV6FrSHiJ`l-@FCAiZ4KgA6IpE&IVCy-?<5IfV9(~`pc@L4}TOy9?t%~%;R zU<5Km+OL#0S*#i-=Z8@@fWYDG4UYucFA2I4moGobS~4_-8dIj`XdvQB-@+Q0?dAlZ zuj)DLX0)_j`pn|2#ShVeoX~;+;f(R^4ReioGOSq(mz9PyaT}Y!Z`0)zq{&l&`_4A# zVm;q0ENKlNaqtpOOy7G$J%UejjZ0(R=A6HNX#+V~F3+!srZR}Vv%r%BJ?WGTEo;Y= zF-M72KcEx1UVG2kL9mpWQME@`3nt4we{GtZt;CxCS+wrT=A0_|?K72JvjGp)jPd&NSAEm*cuHf?L(~)U z-2wS5o93@9AqHTLwKe(h{xNWdVe^QPAI!<8gTM`qKW72m^%L=4Nv37BZft*!b_=96hm0Yct8s4Xz zoQCP=7H#3yhJaUMPM(DD_lM!~3^OiPUtoS{F+RNtgbD2O zde~hJylnR+z&kp<0z`YsNY-n&CU_!W*QjqpBKn_nWyq3iM_BZq(sb$%7YsE)`IVvE zg*1RV(ysviIVc)>Kf9JTQ^HCKao3s+racit=(R3-i7k zB&(j!Cfa*zA}IF>d?-IL!jEU=K^lcki5H818A5>yJ!+rx0OSX}1Qpb!Q;C%+izK~0 zHX`dydxHH+kS>>7rT0k`@==kd8t0I38*?0By$#v(VMsm?xL#FpP#Jn;?`t|k{Q>bP z4Y23eLu+wL2XqQhgoB)K1RLMCtnt%WZIJgWqN6n!IpRD|FdY*w-nl10N&{YQmXjHD zh_I?B0#?D60sBT2#SG8ekX5*=>h#(?{su@*PD#^nSL>$VvxO!nT#@WMGan#lXE+Zx zYD*^_pyF-#d*DL&Q4>&C2}pVXzi?giY&kn@Ke7T*M)Q9k+TEK}uvTWI{S~eXx`V%& zE1oTUw}LSrUPh3Gh|mAx?Jc9?(AF(&+}+(FKyY^r?(PJ43GNgY+^ukT3oZ#7B)CIx zf&{nVPFJ$`Ia|)Yef#$4@B3Y&#;8%t-u13I=abZUoZNo+hH7*~-1$eya7h(l%ioSV zQJC4MiTDb_UlGW#g4}z(^ZBZB7jc=E*WFyq$V^0wr<}5YD zXC9Vc8B+e@a5Rf1-C%c@023xZG&ZAI*UfHiV7Ii^`-c>Ib+_DpY3Z_CGjeIO1sdnL%RfaKtS0UIx+JB9i zUi<~&YoQi_)G8Os6*7SL``6LHY%j9bp$mk#$k6lo!NJDwekD+P$Gl;& zrjx^KU)PKZ=CxQh{Ac>OeD5>m;|+5poA18kJG-XLRc~Mb%iU=(0Xy-Z+f{s?3%2l* zy}qqsSS*pQ$$wH1f0KSgSQ4mU>W~C`ZaP?yDJ}@)<(W>GPm4ovQ9kx6jWt!a=v@_* zZyB_XK0P%qknf5b5@EMyyKB8$4mlc50*IGPM*;VgX-4hm!gP;$t71*}h$8&gK=7_~ z71r^U5U+X`ZXEkCK&*+f;)lY@v?#_p`Gbzbf=uqNTySsZ+W3mLUg@m^t!K&QXg3d7PL<7a7kT)jtk{eqsn$XBKKf@I53Xfsw$6L<-VOtsmQMv=4^vJ11WHcE$@0JOT&dpV3Vy;26GrDbTxCHe z+%a5MQzQN|EgscPAR$$2;--9@Vi4^YR0R)_&d81t37~-jeS_|5uQ}|&U_4zmZ6;>h zX=K1C=8J+}&!hS3a25O_9aCf{X{N&=@47r38ESFvwXaH1w9|Z#u|H2DCKI90-bLZ` zejlXESi+<8qPD7M4Xx#y%P%I`aZ;PQErbi zjqR6N0Nn=+JIW}B7Sh|klU9BqNA7M`zRMnbo@-nhieDXAa!F*kQ{x2RaNn&;85@21Dmu$cKz%Br$DCP)RBEY9V@UpyK+ z2=j^XMRrUoBbaol1)ArRvV8b{f-6BFDFh$x0MN53U!#;^t5|F3pm3T@&ZOC3ha7Z) zsAtt~poYb#X?GHAAm42-J5Ol|4d(6Ar(m!6q{829ca(QXyYxpB zssNr?gB4xc;WoZyijQ945$ouiBtx#O(8Y-;Fk|y|Vc$w7r`p!D^Z6F5M~^zN&fCN6 zkSg}$H%2ZE6j;zxD*I#C9*fY`0d0{)T|gSk=*;8P^v~6CJw+ZCMaR5}2A0wf7ZkCe zkTYpflTg-)^f$Ni2)-!&&qonk3%$uadh|fX*L89=FgR!FI6ruC7SkZ>&-}D`D}~E} z5oa>N0FeDs`wqI@-(%GsOAUvf!DLFK(ZE)4?)=-7@3^--8#>FJf9m7H}DCf#P;Z=4ALkOgvHIfx~*3>}XmGYhdKA=4U=I7Q?MIEKS1 z%^5N#=vtAdb&Ex&GcuJs%NzPX0-yx&v)#jN(HIrovDloN=PHHrYlo}|a@fy45{phK zc!2_G((9s>5QLtZHUZC#CoeF+Pk2PI-}3PVxJ9>s5V8L>;~W1fXlRj-1*d@g?WreW z8v+Z+y8(gmYxcfwm@R$)euaXhllY%1hgf6a$441KOe7`+*|`w~)-eUfaU-A#3<5Sl zdlZQ^3O#Zv5Lr2f4-*pdH(N>G<0HnOZ6$KZn2Gx;NYW(_5J|`=GcuULchF|yeDS@g z4Ly|XO|*5iyoHG-w(-?Q;LZyHM~?-gm!kqU8SMzt4PZ{_EGwv|S9SMSUH$-2w;@yX zTx7{pG$0zDp)3&KeEs6_pe@>WmPyzL=H#U5Z($fgJ_Al#xh}HG_W6|iwCj2O2kK;M zA*^4OkT<*CJTTp~dDEk3=ed75`UP@M-|%rA3&=bgNF&E8re6ioCm@0pWhW`g@_+`% zE>?>P2U(m&W`lENYVCAk_NVlp!yZe z*`*FGcu2*FHt-Vsdvkyo3>8dbmi# z|Gwollr5K?;RKc4C>++h+tZ6Ee;(0bs+&mN!X~YnUGpBPO_N&ak_BR;L>zdc2*_(g z9WN)EuaQXdyDTb-N|VeY^!@9<31NVB*~m2T9H7^c?@s7?Awb1tIJ&o>(f_NllJ(!J zr~lGexy~%y(8@;DR8Z7N%lRv3Q;4C9R+w3MM(~v|-JdcyTfu<&vIzK)-Jd@LIrEX2 zVDk9!M65%BxvD6k0L6fhY4BzOsAAZ(eIzd*)=@v(%F0~}-@kQ4{k;2D5$3>g0d?Tz z;6{8Da#Q%~8WF(6m*4C_02qY`Oafp5aAn!8I`kXNSEcmw1h2Y{OkgvtVa;s8trf|d zClnZ_Mj*Z6E$EnMO_T|KC@{z{4$F^%A5I4HDN^&6N;6Zl!!uSl;?+dJ62JmMGBI4J zce{|Rz^Pa8e1JWahOp3dSs9!6hPoDt^rLpvR%wC5LjeVk+q22j1${)>?bG^tklBgD zLF#%|ZG%P#90Q@?2_oq%iBO+qe|jQeShy*uB|$c^WDzu)^_?3i$q{@#m{59Lw7>JN zYO{Irgg_7RlaT*D_{z3@(cCF#O~$7oB^O2Pv5sv#*A(8$KX z6OE0Hltr9jDAC3X&gg)KQb~CWU>Y{-a>EPuxvjD%^ z!%^5=l=#1Fpk6)PJeRe^J?J^E|EOFubk(@?@+kFdYZh@?2WQ-X$S?*?K(UyXU(@f` zpY$2BDV#Xm;5X=IH-T%O^Dle#?`G;j?@4h)aZvK_@4>%GuLO>afg7)o$s|-Er$H{= zJTh8PIPwUHO%b}Qh11Fe{VLuDnM@8$$4%5mg-sQ&dp4KXWdNnf5PHWW{{AtjZ+kRR zR=$Doh;>vE0!IK?R|=1VhXx}-@u!{O=lTzofbzrz4#9)diT&sL|MwB{U#|bIdJ5Jx z<==C4senIrQ8A&6k@@?8t;$FTB9IE#;C$JTeH&o+#qjwESazqI2iLF4u}*Fjb6amF z`(b=?yu7Z3!OAx)L)Eojw0d|~!I1jtG zLENdVNiYa=(wpfltXdmlvM|_ijYOBoOI5a+Y1ya^0?)ks3jb;(B314s%p*~6SA4Q! zIBg{$=MV%rWc(I1P)HL=0T6g)7u4~S&uM{FM_U#pgw`(7KBp+xAi^) zI#Or7FLAbDw2!EO5_z?s0~vt&iZ85-uI3CF5Sq@y@OXjQur+hxqN;k)9q5QKYu6i4 zCXU8QT{SDI9fFt%HU@_CO8N>KQWK2c^4F%(DD1O?R9jQ#4E_V~CtJ=>@pS|$wPV&_ zY&jMtpmrt;C;Pu_Ire|pa`q_16H9*Dax#9oa;$MhJ;&NPK8(t5w#!U^97cUd-ijGT zw)YvtL<(JsfpdR_Q1Ar(1XEVW-%%$5&essK}7_ zYT@8+BO3(27{AdfrUe#cU{zP*ebq6zFTGoT*=Y5K2_S*S1M?An5CEa2EaF}8U%hh5 zu>`bBHtHu3T+*EQY;P^d*A^M(f^(!$j>{Kme-2L(N!^>JD*SLB`RGj7#5w(SY5Ad+ zQad+xe|YQacy{$^cQI6`C{0c2EpW|1ZQLPl3^u!G%a^clu(5j{^j<*S-9p^;ZLNKM z+y2^efH#`FPv5-Paarc{`%hmEUmR;tE#Q|ihryIcO#SswV-Cg*ZmQyg`B>w+?C|5@ zGr|&cfM0=R_nN9l$WqtWbx#(L@L$H9`NF4v8*@s38gs(`?aP^z!H^ua=KPm0$1A;T zRC~riVnKAU?mD4b@;!S>g(#cn0nbJv;b;+ndPYq?p17BXVL@UnIihp8%(!hu?OT`6 zNrn5Kx+eV`5Ap%Y8mXe+;;Mq*v$vF!o70V2NUWB1T?u-FoY;3XgI~rRZ>a%?6q@WC z`+Rc@P+aihmX>0`@4g(IYLcJ69AJ76(s0`dJSlA^eh`K?KH(GncT-6Axb4}24zp1+QBzL+Cy&iD9)G>O ztvHW(0D&x<@c*#6|F@wXzffvFBRY701p$DY0Ks8UXn`FLs91D341!&N_1)lyKs$c2 zWq-r=@VRr+tA|&@HS1lE!e}pLEwJeiJAjT3An7g)@vC-@MKxQ*MrLd)Uj9kYH}p_J zfXuo-D3{KnWso8{9zZu1STfA7MyS1b-WV=PY-$&>aQjoxk!PuhaQH%IpuBE{3KoUD zceLZupthde#CvO#KogoWWO|kl0a&}grMFX5zW0Lu(|-I@t@7>ekr;Sx1o7XWkSzkn z5QD$xqHJ@6V$*+qJz4HiJrfvu1WBjyA4lYWo2=l(ILH8VF0e)Xq&i|Sj2Sh3$rcrf z7s~o4ya%wo6b0`WyyBM|I%F11>;ULn3ri>e*V6-nLj3+Zm=#QmoSoa1Gtlejgw?Mcri_{ zJ}SE)o^%7GlcI&UB)nU67(Ovvkxn2FFDuX+CKD3*8XOek&d>t}kB?^rvlaSOC4w~D zkPA(eNY;UTOv;bNI=p$(~wgFK8VHE$tolXmU)Q80c3I(86{Sj^h9Ib)I{9T$C3HlWI4eW2u z_l^6`0bq&sKh2Q;x>pf-3P%KFw}H?GQCXvHAm08Oy-+oBUSbKMt|r$g$MxAYyilW^XX6<8ASVG;h((q z@VHH)sU7aVWqXGg51SQ7w+rsJy(UBJeEI|4`Fk+1#rS1M`+D~ipm$_BDqna;YV$`^ zGb;NBvFEyTzk=trtU6n(o?*i1Ji*YNpc5pIyLVI0_;^JMSFDj#3ntIPpZPV+a> zG=&zY4#Mp-#|MaKD`yCpghoCX|I$rJgvTLH+^LoSj5 z8BUxHdG12Lg^Y(saKx&S$Yg=Su?%Iy%#YOzCVgbAG5CBKg?KGkl>yO5el5}r3M2pm zN&2i1XDdt*%oR0JIGCp_%lSyfr$>|wdK{c@W0iZw{>pvmhqRwpS znWPn%#$*^i&q5*K!+}yb-dhiYE^V*>_Zz3qpHqTa%H?ksBe>rwdJ`=k(gd%perT3Ygt`1G!A1qjX!Ira))O&+I?*!13rhfm% zhP9)XCl^OG!iKS*3^p|a#^dEgH*%yBfMGzyZC7jE{#7K@E! z3fIKTC`p|(1^Ph|UQpPzl1Ko7i+ZXkX0BqXnf#NUo(IA4dr$c!(zTTo2R}beE9<2C zy0dMK<717xqmv`qNqny?N0IIH`8~zeOQAP=%Q{?bYC5^5_iNL{6qlggEJyv`ELB) zr>pXV;NZ>FzBk#YNzy6@hTvV(TZp(|-Oaa@eeeNQ#%i3zui%w(v>2yN-@a*f zj&0B(eyzSfr7zJZx&SJI#x#Rf-qVV*ozFUbrfw+{wFxavBjew2HLa;2pqQsm-YXdq zeE(=UaeNSWckI&ZONRJ zroh5SIbb_bsi5Tx8J?Krg@~af2-C8Iwa<8~^^L}N4=Q%|RNK6pM^J zDf1E9A$lhSs)2a21FbnCXD&dATuT1S`}}{cff|E-Sb$zXApZe(S^vk%{_k;@F#JB= z13V88w>%$t4t~)trT$I3%+pg=Ey>F?%qq>x)Q7;5kx|VHd$Od1N)&Ok3*0$+qS&i2%VHZ(1@;&s6a=B$lw3U*^e!&V1nfWd zTi{?A&1B{s>vwab+s& z70D+AdMSWNM7pnG(Iv@?VEYR;gJ!pcL7!rjoD-E~HcD zEGrVBUr5hml1P390!T-qgU#THJ4dsE6PS(!s2dStcL)_3E*$!DNi6n1g{+bb!Q50! z5XPXc(Z4l2{J^GXBwX$=*7?Miacwz~1%6QJ42~b}5KhhtN_Umug!)s3`t!zVMLFIG z#At@42mHO{`#(t45)|_ze!5KjS@_{eLj0+)e3(#$V|b5;howVi!OAMKi3Nj~zW~D1 z6ApfZuFDot$<)RAH#%;gYO_Brp8+=>8eN278)bL8NL_a9y%)?5d^{+%;sQuMiA)Z- znfBNWmoP@17CblNg#gs{7kXJL4|^M_<4Z-CB}+;(YQp!9u!`cJOagyma2(n<7AAP zhu>WlnJkN68x;C92vov`AOQRv+V4)9Uxz_0NM-1MWqg=%n6UA%^BAwHkID9mpsm^T z0F)h}6UYz{Xc{$WaX1ku5U`<9JFv_$?Oe^1l8>6F^^lb~dLH1M#MOkY?6pgY*yWu=bcensfFQyj5$ zIozU~t-HG%vw~^&<&KU#Tn_mmTkgw{@Zk*6F6o;*8WTOrj)^eY3gxJgme9RNi56$J zE#J&#DDrb6SEKM8;HlVtl){xIdXn~F#qt0#M&a8^U@k<~WGM3`hQnuMOLT;>G)({L zLhZEhFhABJfQhU;LUKqsNVU>BMCh@d4%U1YLZ(pgBv!&@uwr?Rh=~kV1lj^g_c73ZQ6A(Rr6ioZe+e z&>GVj?iI+RX$gUl&l;+HFp-rv@sOKP3m6hp0dbtnjzJIM`#SCE5Wq zo*p)m?YWF<&s9d;4#K?HNm?3+^^Tc*irJ`*Pmiuf^ncGM({z_w2muFxfkFLy)J<8; zSWS71S--0)fGo^-<0~j?B|)A)ep;BDkHqm&n*0rtkzx61dEy(#I1*i{tzkO`pQD98 zC*`fVz6=HrEtyz*D8m>c2?$tw=G=I#7fG$2=zJ>7>=PB3w99R~r*1YTgs#N+4=P7W!mFB1}z% zZ0+OmO2`jesBo!3ri~r(Cl?5qjv7+>9Y@q8_I?aWfU8Bg^RD09dEXSbo#F?PlS;A` z!UG4QzIQ~m1n(K-vNnaz%fCvJ>_AOLI6;PR>uE|lh1qSc)Gz3V$H%EQQvs6~3iPE$ zsTO{i*u$IUGH=y^P$P(0*U`edl1SgDHcOJFS{KggHoMr2B}2%1ne%nhMn3x1K(4S9Luk z&O{#v+C8+bmjJdnmwkgQ>Fe7_@yP7bxHeym{y_WLo~}{IzdQ z4*8joO7;-2@JD`H8W0@gj7X#kDLI-unwt*nQ2D)VMSv@oB~^*pPVw$%*B%Ts%vn#Y ze$dG+5dk{62P4U+CXG;mXD0{*z-w9*MsRbW>kNv|;Hu*)m&nyVzHduzy= z%n=@Imc4kekY`L;(a5sPLZKC=7XiwqUYK5@Bw~Z#V_i{k7d8!l&MidYK~K|y%(ykI z%Be0Y2#>fSelLc&Qp(RZZYC&?R-0)}fOTx1)xh@58(3cE;qckqGW=&;S< z^4Xd3E4vF?3hW8_*E=%Uj|1hg$*i0!=J7xu*cW8uy{u zwjM6*TTC?}7kRHOo8O%(V!fLXmWbXgAPLT$kFm_9C@U(1jS=eXhUr|F<>j0qn>Dsx z@_M)?IB;7A#&CLSzT?rPxRC3R^jZMAZae zFjU=ix5EUOw4bEh;WYzl#a<722i$#eOr9Xo#4=!yOVQyk-cDPqwn_wqOAM>zj_6t@ zXb@?7i2}2>u~XsUy>P3z7PiqEITgMYCKBm{Pb_STsbASRF;Eq>+a$RVn-S{BG%Cu( znrd{{=VVj41g|H4ODnRT1aC+hMRhKlU1Cq7bux^-qm zQ>LkPx~a3tXJL-k9wn0~8)9%nLkD8HG2%(K12_l$^FvkYH$q{1lqfL$h z29iqLtqxEhMf;Vx?**ojwYmvEl)n7pt)tpxTo-2?YYf%3l0cLqx+~m+cf#bbiojbo?%0gfV8T^K zBfyQ2t0z;f+_Zm4ppU*B2-w23tOLgLarQ){m!~-LK+1ye5jt@A+Uw7lCOJey0^X5 z9oy3`G`xUyL)NczWi)|xxj)T}7Vq2?yTNeWpE-;Rm>zuvIh$L~Xh8$mAC8uRs0y$5 zF~<}H7jV>l0P)sWcq~YA-^m#B$Ti*v| z9{uF4r}t2_6fknQji*3Ujc`3&v6El zoG_NXI?yFABmQ8Qlh48+4qAQH*?|0i-B@c%w?{AV*UQcf&M95lQOAh$chFT=YD zHwO!w1v}@lhLYn93z6F=n`qWI&_sZ5K?SU6(o_coT#b6~9I5A} zkux!C!`aJ<`|v2fNXgES5wgpOg#Nomv3kwkVM-HnvA%9cTblTmd-<972F2y3?hFB-Myafq zuqm4{(7D%wqdU;r!=vr+AzvY4=jg$TD|1O*y{0U-;GQv{vdkysHHaK>8)v`8AV#Vb z-L!*2WZx1fo-d57T|Sd1F=V=Mv5FxkNGbR7$!A(QgbuY8+JbWr2<8r+U)eU~(ld9} z7HB?(>iVP>tz1`e2&{bCjY|FVvKsSg#Cj?aoNm>d(q-E?IiAx*LGlfZg^ zWw8y*;9_Emw(klrpWC#`LHen?N}MFqBHZ|m!%^4Q#)DC#2q!?=0H7C;bTYE!nq}iZ zP>)kOW5yyln1p#%Tl;E6W-8|W;Ns**L80=ZlSmy*dza}2@*U11Hqaz-@^R!dZDk!# zRSgwI6r^k~4)!^kCcR&^cC14x?C))HFT1gf8nTx+vR^6O_7&?SFD2Vi0Ogx_S}aZY z45E4Rml049_N#N%$Q9BpqV-b{ZWeYbF|Ig$-qIh{WLoR;F_I3~&yx8rRyD)yLJmiP zyP4-L3r|G&r7o>ny9m%A{HLDE&-o_S;P!9>4A6nc0VH)PEsJ1%VW!5gmaR<9$3RMv z$UjilBUcxbP!4;>qo+nt4RwVR!(C4&I%i&8glYKp5|BP#s~%1Kk-Scmn7@gVkliO2 zlhny1o?hc%GO5!W2%PX)zhN5ouDr^x%Xdo;_9{y3zHa2AmW7m(byF!<*Gf&*qSq+a z)$!F~0_630sS41IiO37t>V9#DZ+cU@=HPxnn(5d~z~sd5$h#J|#=kt8pV72i@N!jV zAb}leLuVsRc2cW+SNgpEa^9XHNt-2776Q{{xd9WWVbm$sj=E%&e^}{8q|&J&N;|Jc zL$dj#pEdNwl$Xk7nt|0yJPT@dg^$EGdy12L8bDy~t`mAq(nmLW2^qo^DeehDc7Awy zboPjV<;#1`WxK1@u{5z{j(neGUL?0V)S+DUf(Gk1QJUnxfAQmU!`S&o3+Guj^exHu z+g?BTO@nv`)3+|Q3g&lPW@wXzW-sm+#GFn>chv!z3wck|?=SCmlT-m;v7?nKMxx4< z4*={CE;i0~w+x85)A^XUyelNKt%xrGW1}eE<(3~6b`IM5m?WGKh%WF-=0@dN5qqp( z3Rm)CbGh;DSWLw1X`m3T*UUT<3+^sIbw(T-2j5NE>y7qQ`*t)*WDEPqPxV5r4UmK( z(mjgB#*ZqbS;J6pUzZl*8ys-|cEBKm{Vwg?V`0F-2BuJh)Ba~-^WWe3MAKo(fKSxm z7D}Wd7Y2$s^{=5bAg9r?$=d+nlaCi7?4sU@0oPp8P$w-oVVUb-h4_Ix>}2W02t~Z) z7W}VvN^q!EN8Y*QZQzS!K!@L0v9ri;hjJ@#EI>pEvN6ONwSTF=6fluYwUd8)1QHvh;3PvvKuuZc z!|2$I24&5)&zg9ubOT46;qZCIDQ8KFcu?_*S>B5&OOPe0{w9|iW@nRAO~I27R7F85 zvyO&8QQHiJpCpokX}kC*Yv*o=pV2*j+#I%IBMmcHjp%4rc@^s(_(>N~m-ju&yg_{&x6!2Y zU2U3Z@Iso;aE&<5dg#;{L|ALPO7&X=EW)PN{aTbQhBM?FCXpAu%aRfo1&=1-bHIx^ zQ4NK9Iyl&Lh9+ZS->OzON64xfcHmKV&Qk2yMP`s}$mJTn&nby2;S_mNdB#-H^@9g`+$ z{5h=IT8;WbJfmIa$&+Z_l7}{LJNhN%#n|Jxl^WE+&uyOB0B=FdV(l|ZdknYYxb%6a zuISM*i>#?o-Sx6*Ihwc}0rx%zUDlS1?M4ITIxhu=IM)u7xj4fk>?oF- zi7^Zg&g?TH15$gG-yjDHF&>)I{pFe+@ujxUvbZ#y7UH1x00jPg@)Mk5C ztE78eVc|;piHWj(Zl05P?$cPjsbV8_ps74 z_ZfNB%J|L3Rp@cOvt0?KuPaF6odvX%?0_OWe^;IuO2UXu{%;fD00JSDaKka??Cs7I zfM@Rd!A%xJ7u5HgZXlQvm`x}zWRX_xZrtT&3Z+x1C-LT$@MEmb=rQnJX9~c#3--wn zY#$;^i>$Mn%7>k9hqgOeI-M-M0|>6i>QB$2xf0k%lsA1r8B%_n5Fj_De{ac*T9b}} zN$|yGH7%imLzk})pxt|4g!{n5$H>P^Q_>d_t{lhe$TCG|E2f?>6G0r}w{mf-?9co( z9X){TAnK~(Z0{M1CqQUe%O3+!L!r90L*?%-)~Od^C59>ns%&iII}7FxS~C{|$xA}G zE8Ci_1w~@U!c6CorN?Dcj+46SvN)rSR9A4BP4&~*i>uXjZIK>NsbW6vYM?Rbv-cd zFkQX0<4Eh*c#8is6j!Pyu{97>Odd_0fY1YNq=;F}h^mOoM z0ia!;@d!p|jGMUa4M%x6WH}4ncf?R7+)!@f&;O*ud|n_4-`)F?dz& z%HD%2w77L!%9XlM+^;c@ykBE;vXm9KsrO5oD{vif-M^J|*BNG`vz6A-xIq@b|9W-v z?7V^}VO2?*FN&3Ixf4LZ9e9Cq#M(_!y$CRL2Z!ye-bS~fWi6d52XZ#!3Zt?*b zv>)W$z8|*4DEe6eavvySuD|?PCBDCSBC-;IT~Z7@#Toq&Kny`kb8Uv0`38y zfN84E(bKrQ_%?vXGeD~ae=eLR=-woc$A@r{`eT$vT**+n=O^AfwoyqaFMQC8OD?PL zw~kw#1bt5Zblx{t$VVmL5$i>?(3`~ojA5KN_WO`|sT@6;)nZSNfrK#|EZO!2|>dH6p!Ha3$zK4I2IH^%C zlZ~X3ur)*dP<}7?-o|ZQ1U;XCi(sJETUPB1%P~65gF6EEwb5<7%=e$7tbx|ozr;VF| zPTx~d4-|B90=`*;Cl&e6=CsCN;#B`CQ~7a*98M?0NH04&Ix{lJXoQFVOVfv#14*eG z0FIFxt$hTXdV(j10|Uv|Hv@=zfxGCC)aYQLwil;Lx}QJ@B_{q!49z^C5ji9d(Wn&; ztwj+1e4w}P?`nUL*q;ZxBo+4H7HEhB%}X~)wgqbfoNerz&caxKV>CW0KWhAUaY+LX zSf>;a3IUGxf3CTa86RR+RQLfB0sexBp#xPuA(8^9F#8yOD)E2Q+(3s%fzV37>1`5d zU>d#)`}+RI0`JJK?bETW+48}cMv`7ClLy~LGu^J zOCK0SDcwXriV%L#mps~jsc+U#Hj3mHhcLQD)_(^bF_cc7k_N-Q@aNFDpGS30-tBxg zQ05!Tf4ok#u(A9b+4T=Pr5`RXkXu2Io1=-NkL~fZn;0GKjU2$b9z-HQFf%SBB(5Q_{>J(5D5jl~zNq#*Q( z<+zOFM3vBtuS}5zc1aoJHxTiS=cIs3$@AWNdAa{3Y$tdB45$-CnsD0)=W+1gk5YO0 zSm46`@@h>ZdaHcNa3v#Yk2HT`X1~~d|6m{bz=h;nJum^~8b;*U+&G9W{z%Yg0M_ax zESQWS{8)4YvEcNn9CjJLAaLP%0HR0GBjA!;ML3Bsn>)@faK{21*%r%n>8Q!IPmDBx;tn_1ez^Ix}1fPUV^B0cnHyYXDP9UG#{Ajv6 zP)Pum9B6-pfT0!ryD=e608w8lSWvo}eiR~pX*2p?6YComWM3ZIgd~C!ran0n2=PMB zK<;2A<{D2~%2g0dWH2*{;{2zp^UrCf@II#xSXT8-kHUo|Apc#N9)u>~?PJI%c zJ{Vvw<39!X|5Nn-PaxqhE)zbGhzZUe`*h{wQ_@XpV88Hqb;IesmLsZ~&wWcN6Py4z z!q4Az2Khb!9s;;LkM=*fz##*bzoO+3 zSP?17j@d0j`T~gKt9!vB>{GV0C_0iy8ylxL)zhBHoFvP9fI|&1+z>!c;0Y-t0U&+{ z%ETvrv%OEhwe)>nqzFxMQ3-YGPI9uPS!xkIYZ^qch@!Zxp*)W%9yiM`$w*={+BbqP z?uErM$eDP7p-crwo?PI}yUzQ2tGm{A3V5vb0=_&1S&+l-5w z6DW}jhx>n{6%ki`Eh`(Pss`bVaiO{;=z=+;CO!gzk<_53w)rO>8|pu(NLsZ)DiSeP zHo_4502{UdBtxJWCY%sN{HveZ5N_Z{Ot?3Qd1o-wM9Nz16y+wsY#caZi2NVGE*!WN z;3O6tJ%%j06HJs`h(T*D{3Mc5&KubTAQCnl`7e=mBKURD2vGDj6g~h`=HUw@J*_*# z!WDyMe<5Y!kurm}vQn+F1UR^gvPeA6(G}LG9LpZ}RJEfRGstWHtG+eC%cIC3?;Pl> z3A_4{`JvE|8^<;7hr7N$W44Qt%cpVn3Ge$mw~ON$f3t_MlHSZ&7@SiAEuq z_PGo(+9d5#6by|y!$MrG7{tf1`3V9tmy2A6!UGB_~1 zy*ztTGPCT6enHJlMwLL3gi`?aU6*>d2D#9vd{W$-BwYE2Qv?h^gv8YDNrLf~$cd{<)^z;roT$oEYKkuDW72I` znRL=)QTueCSVr0a5tM@8%d5Y#sK!=&oes`s>&OBmO{%&}%o(MqjR@`;FAcXb3w}qb z(hQqX(`;|Buo_3%%jz!;kZ-HuWi;o$f161I>oeU|H_j&zl@mFp^p&?*^lKIUeH?Xq zeFw4NeoQVl$z_oiRVHg<>N_TjY0>B+{Eo@p3oyy)861HLK*_5a!CkUafjt>5BdW2z zP;tLzNbhMxW?>^L1KUtkw*71j@9AiN?fy25!j=^Q_ed48MPgXWr0c?0$K7QEhY3p9 zmqlt^BouezbeuvYyJNoFN2Yc&0DNc%4 zt7VsW2;O)V1O`!whHo3k8FXJuLqzV}>X=6YGg2k)m`~2RJ|&oPGMLR*9TiOEjJ<%Z z8K6My%VuPB(v`x1ner^u~w)h1PcP>R~OF4`L@F0%Z=ndPjKuTyEt zXUdYr$CVbHl!^cC>9{MfUDhegE8{~-aKGE^ea4QGUZbT(aR+e}2TIZ;ZcI}YK!X0U z&ya`%xMnn~=i-(mO$}+Z;5@c|pQ6&`;_PHMLJz2n5QmZDaZcf3XMUS(=!@ZnQwTR9+WFNR1xu+{7M^TsEP{mA~#v*Iae>>+{Ngn1IofVINV0rSrc)tz@Q!ocHW3wo zJvxwJz%5i-ji(?YzsfM*&JRBq6O8%EK{NZ@$ZSj4EqVUqVv(0HJ^JuKx&gO}fe&jv zx*GQvj#KjxNpM(P_tg*{WFs?nibrhI{2?uFOU_dbj>YbjVXX-7;zZrcpvy#kvYwRT zu`|Y;((%Wglo_v!DHlIO&+)g;E0qAiTwo5JT7iaXm_*sU&Y(tDNi^*G4LsC7j9$8tBflp#IG=^Yg83uzkkDg;^*$rYuWi0cU zka7GGYx)%VWPj0#Kx9K>d)q(E?D1xM3KzO71mp=MO_YPkN*04xZ@3=|J_t z(nMMW(DrYqIfRn5(~sG9ry1F||0CqHo92GF>fN<5;=3|=-igO5IXwER*^%i8J1%pt z>4S_@BnXEE@8){G4=Ty1hFa%fj`MAv*T|lVHj;O?U8-2-X}JsTO|Zq{6} zKb( zG2IDn7va@r`^e0ben8_!@=`fZHz==Mf+$O~!X4;CeQ7v`%XI{Z#w`2hKx6LDPul*# z0PB>-t`uRDOP9`Oppt@eWAv@_e^K_#@+BY8DgS-3S4nczr?(PsExa$xYJi%cg zIDx_4-Q5x-5F7#|xJ%G)a?X`=?|a^Nt?wTO*6J>%tE+bPeyaEL!|2k#jCdjuK;s}M z46Ew_5LO2k`_kBZc9T+`{K|NFmu8CjcnOagPL7cI3R{CO;97*>gNS)y(fJZ%TbAx#Jc*=r(dQ1UL9HROr1dQf-W3>>?z7 zgfAUXLgcO=G!n+$QtX$r$?~{U@11#+Oklc??Nd4nCMR@rE%T$NqwcL0Iu@mnNH^#d zsS{#H+0l7**C2RO&;F`IW1vI(r&9jq)35sbm5tH(wL`fopcmCT<&kDF+HK{gkV8HQ;t`hR_ElB$3-0WSaCN zwK#ouUb*?~IQ|HZc~8XBU-aiRI^+o*wSWHWu^2Y8z)k`W9#i*(1{ke4Sta9c0Hm0_ zBN8FWg%)*KIZG-4FZCG-Eyc5iveqZY$DzfN!tBgL@{{Om)w+|P(u)p!sQoq#T2O|c zGW}PcC2p(R4iwF^#o_{9b#}pYF6S>1s3~q8gbEonO56BMTW%*sGnhY_fu-wTFf79u zVyM(vOn#9Gp<0qH)1aA*)|K2^7lMeez6XAc;Wm6{cBH~#*`Bk9z1N%(1IS&KO>*nv zJ$jV0l<9BuceVa{YrtUVb4(T$^Ug*K*%j)KhRa0jMW4={cDjKMrZ{91^IRaV@!dpR znD}DM7_Qp(S{g*om*~ln-6#2@i^B9XcIhmkN`_2zL|8)j^tN8GUCLC-C>aPJTDuvW zaby!*Ia8@16RigZDqL`xQTI3QE}?wqFvxC_r4~_t;KyUys-1;6;Pzkfzd<+1&6Nj& z)mxrby$jfLJ-C}Eu{o*??brKEgI2tx>ul=4N->tbJ!>KN&fH1YYom%^3+;`cR-oT- znF!z0IN(3&WdJaf8HgGTbF!Ec$K~j@3YTeFA1(7stP5MqP`xXQ3f-JshB8-*N=AN}t|qd?yxd|G zx9OdeJy9kZW>!*wKpbg9YFRWM9#eq}6YRbOGQX1Dm`jjLY_%#qLT&wH zznWqdxsnHHti8gAu5DZ+$ohc#UHofgahbetzsY1=HCcu=gOra&KMoSLsB3*ES$W0W z5b}rjbFJmQr(R%=F_ShF@jy+9!!lO?28lU!=1k=pdrJu2QG=J(G7J<2j^Rvk<;G7} z!ef$LqDkkrJ-t9wPY~DW4(im}x7n8(0~=zCJi)6}z7P=A@x=}tE~RmGhVbGs$&P!y z{ia?AW)<&31_{4UViU6fX^Z$hT9nTY7>)N$hq#DqX*&>n$!K=KC5OUo$S(Cc+xC&Y zkGhyywM?DNJ?ZNE=0R&=W{xH(6OvtLTw+XoZ_Wr5{3O9$4_?m8LaH3L8|z*N7XA=C zuZjOnViL-YmIkc`qa_zvk;A5?-pUR*6O~|Qu?hSF5+Y!tC1o4ySjCC%i36Br32L#03oyijya$p!nogwOb@mm`s4lWHX}P95qZ$gQT$@0 zfqdx|r(jy;WLI+)%8%f#k&RUqpZD)bhnF+G4_Wa*!1x-|Sb5;iljx<^ugB#cuA6xn z!NzqmA^Vc5P?wCr3ZD&F7tMOHO#+9PBJW0S+u>g}FM=MO@s`>wQu+!k1;jrt(E=q_ z*qP!I$SED2VniI8eIC_qFc@S2Cu>A231vd9Jy22|bfT5sxh)PwJG|ZH(&D(suog96 zQ*|ChdeLw7OHZWCmkU%^m`-gc;W;N|NBi5xFgOFuX3AkTF1am7!*m+{*QxH~-R&u%nv0LHGTw3AHaeI;{>U)AG`?mAv>n+cJjP^v1et7YscHmu+XeUt+LrFJ~3HWvd0&Y(*==PdCCAIC>nN0FP?dG2-7b*Q(Sanq5 zjzv0Q&163Q%>&VDTZO56uoD=hq>wopqs3ufeiqEFnAd?9cwvKf;&F&Bpeb`Acfr^U zypfAZci2`z`K2Pmdo9cmh54)9(kc?>S_upq8@)?T1eyY2ffR&4hn3>idcyl@42-rA zq5Q5NjJaqEjRB;YFy#RJ6~Lb;%iyIUPlY#;A z>nY){HxiPYsX$A?Go2&8#moIez>>!sm4NeNA6knaw{vN#6(>Vn&Ucw?6Q*@Zy{8R5 z9w{rTl^&O0P8hjV#`o}d!Aj)j%OMg(l`C&3sDoxz+ny$vk;^;`a70QQ85R9QLV|x_ ze@$-)W7Er=FckFslMH(_7=aw9D=gPNK!Y%t7f>ZY+rlidoo$A6~nA3B( zG%)3$w+EE;>RDkr@8ij3MBQ;(#V#iDtY?`)ccYiSSfX}h0cW5IVbmCZ`nTEkP2D+#(^cdfLe2ZB@+ zT`M5;p5{jfCPNvQ=DN*OcHO>N>)X0N>BhJ>Dnrf$eUK~few)1`qyS8onsPql_=HIb z*`_H$VhJW7&1w%JW;>Cs#rg_kZN(iOXAh9Ejdm= zqvRx_{ToeoRboK{y`Sej{aRk_DJwlW&mS*OIe2gf>M`#^b8hOdvIUJGR9>ENASjT) zoUIKw3PCZfaE<6>mK%;o*B$XIjNwGe7^e@x04sH+tBD1$yRK>S3XtrXoSt&nP0peK zHFCawb;^L(AY=gu7pqNezkK?sD||7lGmqofkaZtfwdjJ?{Um<_E;%_jg`h0 zRF$bz&VZF6iTDPQgnK_w3i~z=ghc8rxH$lr)N4NLPc0g6MRwnG9@2Rn?ry5D`c;Xm zQpyZhmV9A44!QzTSOly{k^&pWnL2{ElV-PDyTT^hI^H2Nak61~NV$9h;U^g{th|g5 zpQ4xO$RI+Y0JHH6Llod@ATB4HDhe>5%!cb2>w==~34|0@eVw&M{J;qsHbrE2Y#$@& z4=oEAC+$P@C}p!B=ZBGG3a}Z7xc$$=ikMSzpeG!?3{XTK+s~L8m@ISaG1>IU0iy6J z>t?Hkq_lZ(^pZ5bTUN|evc=3`c@b-^~TeO~>XI8M*20eH5UUo~5 zL|Kjhc)S>b;ZvHGePzc8F)|!=tI<*NF6gjFbJP?^#wwK%q2!3_Z2Krc(HR-+(J?I! zi}FAGWThxqgZh{v3{@~L3nKv;_mm>Wh>5Fdn!w!;BFo+)RS*=7n^X%bjXlap+&M(F z4YH7E8BaCMl`KIiTAAwa{i!_w$8S--=^o`NbrScx*&z|p4jUnO*$&YZPH7oF2VWSU*Xe!$1b(28?e9H(BJ2|SErE%bK< zdsTQ5>lDX9Q~>F#Yf2rCPAJ zs0LZP3{p(sDEb;BBT_$_)+0Q0e`;7nxju--LNo~E&vCPl5$G$J)-C+aEFGoJf-Wa$ zfWU(|9q_%h6HR7ftZ%^`Vk5D!ATRQVX`4=$>>HX$F#KHokAp71Wu;cUr+ZUcxVc@t zz&eGPo25gPMR2aI>Y#jjF&g)NadKOu&?s7)Cvwu}Z77-W2AYVU$H~2`t<52J5xqEf zj3_NA%3wJT0SNyKC2Yh@Hb#%s<55I_XljW!2@cr$vwrfiYTlAHqqxM8iuRjeGeH=eW0}_%c%V_heT$cjntAV)xF1LBp-7a$v)udK zx166w2|PyBm$^r=4o?i^h2$?W4`<52)= zw*%XG47v9)G7b#m^VRyD4}w+SrsE<3y-oA1(`y2(P;r2ACNNTuG)Km82q`8C_S2v! z8bk#idcOYs?i`7{AR#c{yEMB-lD5UMpTuygg_tx_PgE6@ z&eUt8kvVE#ec&NeJ$ER2mEtDX@;jI-MwnLLp`Zr1N8wYn!>h`?17zN5T@-@PpkOG> zrBk>NC$y+1OLR{KVnsf!xVAA%-IqyrRhG3*#LCsJl3sbt~u>Jm3r2Am->U=+j3b8zUs^{N;fhFb@PB9dA8P)GvdwV1!w zQ+BGQ$TrgV5)(kdtc{N7iwmgapYuPL?v?ax)$OPA!$l54)@#rgw%~wI3<%smI2|L# zHvIWaf}F@#GkLL4GLCjDL?nXq_>^nX3z#Fx4dLHuk>|;bAG$A>Hry&3 z;lW!E#@9j1kF_F!4k4#R&w9xwk=KQm&Gyo`z1b6{_i}}CEwi}i`IE1 zc|;|-?+g~p>rNeB8xxX7#2)=-7pw}QkqE$njiq~)JjfI;ekvkeA)%?6^=RA$ z{g^lzqa~w%K;Tc<$5diOlJeE1k?8#A5x6O@w-=?duXc)H9AbK{a7zU)pBpah4g^1) zIMfn=O4E{%aN;2g-}*d>a17vMD~+<~dZ`e$=4=Hoyz&LH_W?v|@Yeq&N{r8xQdhK4 zr``?UoW#AVF7Yze5I*VW_f!d9pLWp-29zpv1U5rq(BC$gI+(*ghMvaAdXzW{C_*k-StPu$pO>E%h__j@5_}@d{f3QNA?}036P2^{quzK2Qmjgsm zpBGBc8rt8`@RspR-cS39*?2Te_5FrvY9>M_GrBpN+04gj(c`qv8ArUa-_BsTn%c72 z{i`XWa=O>8{ZB?c3}@xF_`l+-{cHdrxIMC%y-o}k0xRAk;Evo_zfzFp;O_4gxQsx~ z{&nnkp~NGcaDN1>dcFLaWt7(oZZUmi#pG!VOFHsx{@J&tl<#nsyK3S1di^3NH{J(? zJGI4wCyjGn-hM@K=KX}mgO6)ED4DOq&hXKoVLfWa_p3I-!6qDTEd zj}~ne#t)Kc0@qrOtK1gbBu9@yhkEM$Q?fj82^_1&QenwkWa@r&xfhYzHU@q5_iDXV zA=eH2t}^AQ-}|76$`A`pW!a+!Pv7`k(R&-THyC-6o-+UOP3~9rF{pO>-vW`5tO9ua zP&I7K6RTKPl6X4jrZ0GGE+9x) zM68J{ykGnP61tq-I}Kl3;xbT-Dh%yg@}n&Ry}=+ERU6uFx!i2RZ565$v3KFxwA>Q% zY8o)nfq~jaiL+zZpRl1wCJfM3Y97%Cv9Kq*3RH&9eU$Eq>oHXf0_PwXL6) zATu9z=mK_wJvsykgu_CozUTHZQk3YlbGjpM)u8xKE49j$aXgibN~i6_1!p!7VbM&`PM_l!}R)7IeE~MEBcN*v)hR5J=(pgaRT4Ack zOyE0K72?!!eUX7Qav#8%_z@^s*;&sK?uJoh?b6m$2#1$yN71uoAqk5NBG29+bLQ8T zy{(3){fuWM<)FVGOZK?MI1Jvuro49M2JI-e&8!jHOeX?zF#Xwv$d$ahCH5{DX+Q+)UC5?h z&a0)+R>h%ws?5)}inP(f6i9maIw%XZaE61ERif9_P@wgeiVeK*jet$y@C7vL-=}s%Y2v4B%g)AN6<^uCmvbzhCWbQyw=2$widd&>!@QyKno=3BZ7728@Ex9fccubt6+bc-T<;r|L zHD~sD;}fc`npj<)wr^PUEJB4uCA~+QL?odcZqR=CqNm{l;s~kONc$K+ zQ+Ls+HfX1R8i>UC@@%LihOUsxw4;(JW@|24apm_qrq;at=$!hjPtK!ADQg5)PROOL z9WXI%{b450)37^po{_onjGHov{b_40;~#=f{AkjRidQ@XVRgsf>#0_+QOdUqV3}@& zH6(peoM2liy1Yfik65sMLWkEN!#k$Y-NUm-s1pdrkd0`T~hX=AQ~s z7C=N9#?9O-h>yNF|Fo@Q6%>>(tAT9GA^)0Rq@p;!p<`r)J9Y&?s=rx1JqT$8ALiqW zSi!R2z-ee`{3~A;2a1?d`DB1<*1GzZ=PS{wS77SWE5G-rcxaOPbB%Ad7CNv(%ndh49|Ra5qU0tnFpp3 zk*C!i!?y4)Uy8=@mjT{lfp2{Rztc@}__6k@M5WjBqne{HXJXz|e$FT1Id1hh)@Ll9 zwdfjw^;I`lMu1=pf>7{#P-@3Hl)qc&)22!XZ(3|{M|X-EYX^BBq*Zr1H6}aQON82& z?OMR++Cm1(OD*R!gXKQSQ1nCwJMQi;VZa zCx^TN;?66B5KPuN3$6^&V@+xY9OWQ2tgQ2{6tr%_*(!EG;p+`h1m<2?nXd_L969HL-1c(M5n;tq5CpIgSiAyTP34PES0Psz&z zzQ3PP)+aMS#UJH>eo88>Tz)Z~@LSqwnzMz8%lx-0IR0yZwC+Fnv1B`Ts_{{@Q6)%fb;(d!S3P01G&C24PKt3V@3IY;HI^}#DTslw}}z%ad3+i$#9*B;4-?_l2`4;0H!c zs_yF{6_xgm4_OJ1b?V)x@1%BULo1R?PkiKJo+yTb5KiqQJ>i{sDK&V9wu?O_7D{gT ztf8|(BjQN7fMX*uf^a|9r=M67oh;fTKd<^!T-nv(+%JiLW|>*>3ppKBKCG`R>i9&e zDiDCo?$ghb6DM7d{IY2$AxE#&Ew_rJ@?DK6yv5btWDbKNU=)TrKZiR_(ho_w{wBI+ z4o~2Vv$YFd{5yv}naasdTi&?+YZj$;97PwFOsn(R3r6P;;q#gTO?Ki`x+z{gSGZT6 zvGA{aUqVkWoD*u)y`(Y#4wr@Rqh#`6M}xi^xo-|L7(nXv2=xxz_LD$b8KP_4-UFJ9eTI2Q^*M^eiM%us4c|mj1+d zb!vLBq{2Jj9B151MhG!y-yv^q7*)5kq-v^OsZn~J%zfbmy3!|zhN&W^nbE8(9ms&! zhHK(!R`zT&lwv3ToNy~j54M(=!6d0@NF;F=o6@{rnSPPF+tTl^BrzF*ll+JGh#Y{8Dn6W#0>i}4?*M0%>0<@0&(xSp2x=F-Nv6gM=Gh-+5q?Y4i1z zqA!}7|AKHr$s#lZlo6uv`8>FeH^I+~J31ngMvEjE$f~4a!LK|wGT+yr@D!~C` zc)aFa2Wm9X>u=Yq=nX$bF8>gNzDcZQ;HGpF0aYL3;h)T~`y8Irqw(pUxEH1~Dmt&+ zza&yKy>*~_Lr;ZUHAmobh%kZo)%6EW<37-*bjDwl; zE$~))?t_wr)PfI8KMk4mSNNl~N5|yMs~SC)$V;ij($B2TVYR${iq?Msdf(@hYWe}^ z-1M!ksGK@=P3kL@ivfl~mq9wF7I){~21Bid!I}a;$_-E{7ZM&p>$B0=&A=d|{ku!pzG*g&^e5?g8?@Pf9wnS~Lp28t0MoHv z1NIO1Iu`w}B{YA3_h_7>@|PM7i>Vn-VoRD~#EpX(rN%IF&qk;xq~(ad*GU$U?JPPH zk9hVIQD&Um=1tIYp7cZWUcxm~qb5pXiMgA4ZZ@OB1vuw=XMzs!`htf;7nsRs&++jf zgDUa4Beh2tQ4yhqH)INuWC|Q+WPwp4qvcE~_4DhV^zV$84X_VEapb zsp%(b7Dd#RFS_j`3EwCZC+ImcM4hW}5Z)a3-@kdo0)~|K6RwI0Qkcb_w|!adojZgKO(7VPh2+u`Ebzj_1Y|(Ly?;)WfbI%=&*Vj=C?D*VqaeS1l{}Kf zFWHmzT7cY%2FLGx)15WdO|uci>i<}oP#P>g6S~Uk9IRY!=@66g$UKp>z3YIhG&47! z-ctRRX7;{s5O&MW?rXcTOTCsUcINZO47|lxe#F#+EFAG3lAF@EAr8ara~WsJ-3dwb zJjtM41Y7$u3>YSRg&}mZpGiwnXyeG8U_WEIbT#Np?gvI9fWLV=+e(IUUZVw_a_M#n z()g6G-RY?a5wK9@Z)jqh!_(bwH{d?L&6V-}rK)3N^+&ir%)!{j*s!W|IvUYqnMuXk z;}YaNIx;Hp8Lx^)<@W~=e(mE|q88z%xqs{sIP|N)c74yaLYs`B=0GYuMWi*qcrK9KYgYsb;Jb$de{Es(si3R@GT~=^mq)j!DjkQrouBv>h5T z&%t9Y?X5o^$L+(acHH^?D)OF#@G~e)w3}aoc1wDCL}DTb)G$0Bx#+t`>}eg)1eM- zdJGw)#?*NPvn1M;7lo^a$6|bF27h#iHYm&!Bv9{6bqp`c`APqwz&9&!eICMxn!kM; zo`YO>w=43L3NaZqPK@f^Go*_Kkr)t@XZstq^XD@o2u6GKfnj!zbij)XOB%r-TH2p; zggE84?SsQ%!FZ6`H2@iJCBW;Ja5wZo$_kAjX!Qhn1AFj(e>zxm*dmDLam2z_W6?j&w(RP)K{(NHK&bJaMbov8&NzuIc0;7NNLS+YK!~!!hD9 zA`OV%Nrxv{UI&)+pF?ot0{89bC5<&TC> zDKFq$S{YMn`l)BV>SzQqRkoWT`x2^thmoDd`_exEqzipbd8A=OwT@2R+!t?TOwiIl z7>tEUz6}s-Z*f0Ac27e|3H44%xT4LD7Te0DXcg#WUUC19<5^P|?%o@v_gT*5s?{Ok zbHpG%6D0ec4>`y9J$h1c&J>{2G}`d9e&Z-VQ9ro7@9xZg_b33=P4q(`tE+f9@uhA2 z#~a`J(dhuaiSUoN-UgU%LC;!j8|HdH_I`VmJ9Fh_quN-%w}BsUV#D@6>D`yv&Osp^ z3@z)wq}tTE#JLM^bXek^I3YuXE^e9)vA7jH>e?=Jzv3a@AOtsrFB;j94bI(eV)JZT zT8IRFeoSmEyjEfbWnTB?5lAnVA{&T4OWfG)5=H`zisKSvvSHsJx*A5<$8{xg$Xz2J z>f(Hv#Rx2dp9}4c=D~OT8V12NV@tSW#AOtCs7=!WZWVJ4d=H4$uY3UT*mW}S@5c?P zj6f$o=%yhpE5}P-lSmcobuyd>ZfSmmp!aq^EY|H+aEOB{7T(Bt=VZ20Fu3|?NIE_w z?di6_$*pUjl9~RVGgyBA!xTNn?Hu2i_qA&;lBU+@iT5bV+Ze`P(%6m(`r%nTrwj_C z*}o*y!V`YU5_+5KT4JFbwKWF(zc zD$j3W_=0OFJCW~G^PO}PItR}Pi^LbAi3lvn2K{0ul5VFZA zEV%s9zSqU3b(&YzZ!DiTN7EU0&Or*vD;Y_(tt+oqlDg{T{Fm4tRBhfIL;ziL9&83K z@yY#fGF$Bv{6wALa<4iRAfg%&uG@4{BrW$$oYZEdT1d(PUm_<6jQfBe2O$cVa$CN| zQUL93;(2iYxd~c#*JjRiL}a3k(zC+Kn4bBBa7f83%v&&!Zq3{tn{QEgmaO3rJEU@f zS9c_+Xlr`DCWCmFzyted2Qsh|pk|qH@tyU1I`^5`k-4G*`l)LJ{-?;b>pn+=ERYp!jJQ(@bP2<1#At}+s)?xKhL|{0FM6qm@ z6fIT(;yu5NAFGW%L2&cu5T|PtdZMzvXDruQvtn7T8_CVf4a&if8HD)}%-MGt z#QKPSQ(?S~7WWT_dzqUK%W4*aWsCh!xY}g}y9lJ-_TP~~xV8VYFaJ?+-STLQkoHfgn&xA+ z5;=r;2aVP6|L*`ihqv@Z#v5NU8vY9c6<9|IR)VQb+Br|J#VXc8kKqWEgP9^yTm#7u%*5mCQ9Ll2Dy{?oqf4FyW+*O&mYciGiL z4t9BS+n6xWOO6zxaOgeE&yJF23K9M4U#n_6{PTT2T;1H9Edfkwdx?q^h>0|5Abr$` zM4*fST)2V4`PIqo?MYsaYT1P%ga#I&Iyu09n7=d4gzX3?8VS(E;Xs>(>G=SBfTmUw z?WTX$)QjLQ#IR=i@3)P{8s_66dZIAnu7nf*V%+Oro5I#bQg((X#mqg#R@+|4jkE`}EA15>V-*5)2FaNqvfw zr3_OE2>7m|1hgd?{zrI12r7VB2%$4U{1s3!AzI9sBxEUQ(SQ5Clv?LskZcYquMW~7 zZv-$&5H+ICA>t2cl>e|)G1YIFF@%*GfBUaeV-YJWK3;w+!8M(=SeOe?u9dW}q4a@S zD-D?qGIEO7%Fs~ZFtT(6k$!+?giIz=iVp*564-7WQJhe){y=eDjKS3nUNpNy%2ncZ zUN-2&?SwgjGNhbl|8)ZOTyp7oM@bq?W+C`J2eg#%5!=0yh{~x+qRPl=9*1n9T(9Ef z*fm|F-6i#n`7%8F2G*CuDC~2;mLLACnupD9gx@T_hB>b@X2e(~D9HAge(G8m8xX_( z_R?_G4Kshb<(Hs<3sR*PF?sO4{{?EJ(!mvFFR4=|)mxO^^y)Q3;y=%*HG5qUlNOxA z5e*t!XJ~mdcK+4s&6>8>E8K209}G97vUhD1TyT=XL40B_0l|CixAxcf3(OV-wTq`E zVrg?_jc|uXyYtC6BP}=^)Y6lAo1IwC30r@-masy1tu2w3n3XNq36h#57`fsll7v?y zZzn=c_i5r~)hM@FN?@iZS%gz_{LU|Y7O@cZa35tMuM9fxIX|pT~}Ho6*7vLN8adz&DFIxeaey z>+rz&)n~`wx92x4#(HYa(UQWU43Nxu8QQDEm(&2>Ks#X?n6qLAN#Dek&OTZi7m5A z?Bnp+nrX=xKC#LSU-Kp=dMx{3)WFn%%@Dq|*do_diR6`8{`WRhVKNWQqHT`uRfRk+PI7wBMEVa3s2|Ja^=0?1eC$4C0~Z ze%-fkT2JJ3%GQM0+}D)c60-wXK1J03?P>Ja$-{S0c<&mr(DmT)&f9IZxHnK^w`e|!Uye1~JR!dI{y z*B?^REOT=atLlmKCcsTPC>x)%o$!u70>>4|P7lRYiFF{yj!X05)qvw;Xh-U^G@S z$z&oSD&@3)PFI?$KjP;i{K*7cH;69Gm`m3%x@t+jF{7IXLq~22?_3t<^N%ZB3;>4VP!3?!&XpI;-* z+o8?TP112@C6fUav1QrSlsI#e)rS&wHX^<_I_?*|)@G+Vo=2K#@*yF>o(Y4-PV z6-ET3>3~^>fv%ALbN#g97UbpTw&GpWo>3u(`Q$aqXgATcU2CD#rY}a!%eV5j2P3%FGn3egHv)4TY z3q+xSg?leTf;Cg|Wh>w{f4TmH@9xSWby~{Sk3E}UcYmW5qyokzXZZUGjT-3?oYFhF zm9V>c5)LM&Q#j*B`F4{x{6UeIuX>eN^B=T$5(1zOT=2^CC8M;?5rYfwle3k+$B$KL zaFTiuJd5t)Ps=@sblVP^QZ2LPyFgOhJgkFc1r;+(u?gU@Oxe7aZ94l>(XKPKDi!9K z)bWI>7-pz|Hc}?gFTa`%A|0RIoz#Xlx_}F`RGs9Y^lYWkLp!jaOG1;8X&TwX!Hmz) zCe{DE%_GtfVHXIE0s=MY`=7p2Q4(!5-k~@qFU?g^6Qeh7s8xD_br|fs{352|e^^Au zlxrqK!iW)F<&paKi-pktAfk`o&<|46$d=yaGC9nBm(j%a-5h(^+wsr)m7OBgX2!L_ znhyT#Xi+i69=}fbJ*NM)dlmt4+s9T9e+T)_@tDjZ_Bo!N1kV@$7uO%Nb&aQ9!9Hbr6UTh5V6~;WS7{lw|i>^ zB81ZsSVNdpGUAwbU7$uW21@A!A(~HgftG?Q7Mh_Ma77l|@|EV?$Oc@w*Y$xdm-c$M z;-j7=f^N?{E%x~D{LS+u&ke4;gT1;z{!|M#zb?79NBCQOQ`QetQ)jwgj-+!Bk0i%k z$=3n^VYz$XNA%Nlzh;L=P)7uydEjm1NvVxATUg|P<0L6FCP8ok)cW32Jew;AdS#!R}e3&9I9a4fZ?G{!|PmOu2q>=?K`e+*)+Jx+Eyo5<(=u48RYk%u#6JB9x) zWi&prDlv#d2Aju9hP?b6Lpl&MaDH&3FBI*YuJVE^uj4FrK165FS6O0-%94Ief5=We|E0S98`((+@CHyOEWa@} zvM?k6hLgFeakM9&;SE6HKM?2{5Vt@?MxxQZu#6$hA(~$FK_F(LFwC;w0m;J;f>#Mo z06MpNuR%2W$W4Q_{R>KDKS-|O$cs3?YoIDrl)hhEE6uYO4dduZ|0_o?C*QIchSBRs zw)3JvWWZu%-qV_y+LH>m=a#}Re9avsNMC04D$?+Fo%Pj{YmU1{!@NkV+lhLhVT6Xl zZX0?$yR6ggh||ImNFT4s9z?F4^R#6MGZjm5I@Sg)o|^yC?|%6ccmL$i9BMVicq2A( zcyv8gf78KPu|a)eT=(+cFE@DI3;V%z`uZlH#lK5?;JaDF1d&b2uM7Ub;%edA2aela zjDgh=1P_6)5?C57JThxSkl<4c9Z(JgMq1`USw4Lpaxo`hZKU3jY>SyVZqJ-v`EVpK ztJb`+u8r=q@w0=qDAO zIMnfKji)`2QN&Iijq?K^KAa$k%wdmyN1Dx+dY_kNPzZr!WTD3eB}Pdx5{n5By)N3@ zu?Z9SEw%gK3dWl_&8yH$L;w6I;&hon4H?A0i0JeFD?;KTCdeKGQGruf(Kt#glR!Qy zwIac&?GS0EKg?NgXo%aC!_9Pj8iMy4fe6G_8>Y%N#xZb))jpt;FAdd7HY$LmXQrU@ zWl@sZrb~3npt)>~hv&jDYZgrqX z@{c4|gXJnB)0o73$gw~8@|)l+;I#N$?iOv;QLV|W72|oBq^zX`s5|Xu1hO{o98;#Z z?DxOLV~!KtKFx79w-`({&%|guo_e^v?MNAMJa)YdT+Wm5L@BKqN4CNH7v1Xb^R^_; z_c>RXzq1?aKc532{%W{X|EKRJ&;QFq62`h^Rh#4-Rr&;giBMx4b1Fc{Gb21P$Ra#r z2zBUpFG{H$`(I-`guVl={{;co zmZfDpryAuH2IC~vFRD3YjqYzJ%01!SeT_;4ubME*7^#7^&s(dHzGshf<(5oOa~(64 zXf#wF0yw0GBG_SH7Fuj!o{ zikxqGY4Y!07|PCtQ~|G4Kz%{N;<2)ZH5~;Xhtv^dRo6tb9C`G^IfEIVNi*f zyIzb@#}WdXOO(^ZC_G$Q)tqM>PTQ8K3!T_L@NO$08Dm^b&OIM!<@MW>z!?iVWOns- z^xL&ekBogtI-p_TB735ws9v2Nx$wX8%C$fAj(L{xD!STHoEyI#IWp;YG%$RS;!t<~ zwB}9#Oz{=lB`h}Pv&P}9#WtQ@>Abw@TV0;|EF}pn%A_{_aZ5O885B^Mrdib~<@If1 zJ63K$$%|W?>D&18%gN*Y;ZuEvop6b=l13J=`SqUNS%w8s+e#lZ7QS;%zyaC!YpvP- zi@WpBhizEv%SuMZ-kLH^Op5ErMtMqC)ruHd^N}*gjpje+Vh!1{jAg%9$vvxf%pM>K zvtp={Ul^I$uJvmuP)#5v-NNhzu#VwXg`V*-g$qJ zesFU6fLA-7ex>s5ZVIC@&>6SC$!gx!V1B$MakCtUcVtcps9*UVnCGvS^^E_EsW>OJ|PJsK;EcI`#Y8bz_PZ8k*VHmOWG4U50#`IfRN@~4>V$G@{>ecu_=6)8r1i!uJs5FH6;n@ksNo(E!Zf#4s zap%q2T2y70b&i}LC&vlCIC+=X%a4Abi@A=Uj2Adlbr<}3-h#P%r<^MzjNgYZvt`b{ z1MMDQUIdC~*&f!aS|^7LzCKK$ITmtEx%)ETf@2 zd}e7KCG!sgN+o<$_rFV$x2L^kb)~;J*_iZvGQQI@2=qHrJFWmXC=@vc-OzfLq$@mM zQ$DI1^d5GolMOi<*LikyhAt8o3x8dH2EKP0?obcV2K}67-T#goE$f*XVGssj z?AEvT+LmhlmYId_c+Ph67;A6ke?6>dmuk|=cd&mVn?QL!57e0(zB0e=Y03W5F+b#_ zZTe~D_^C|lbgQl1-*HUOvOqX4X#%KSa#*DU1m^)y-#?-wwKYSj#!rl7CV(q{;GTx{ zYqn2^X^D41OJZKYAD0p_Fp?cq4J&%qJZF8-VtEY`@grBxbqK<(-%s*x;;Y^4E|cD( zCyd5E{20~el`tA#T;=;1dvq|w0N1Y!ZU_+w+!Hv}Et|egW@25x;SfJ>1Cw7cOr3v4 z;zU5OpmRtd<@Z{A#|GrLQh++QQE^B%sF6$SLQMXfQEw?F$ZHLqoF+odRm#f9%E<1w z4{tYvb)ubSI?lgR1{82=6(A=wXrey=`#WpKD^MpIraVdjMphT&tA9hBH*@0Fr$GnfQQY{1sC7{6#*M+J9t6&{;t<+%Mkxt+)Cl z86u_Su7mN3qnCh5(!mC6@p`-n5Q!NSDe#j0a@R?pA}Wyl?`VWaLg2w5crEx>5GkLf zxhanoAMZbdNcFlp5a+VUF+YZeA~@o_Q7zmn5SJ{7G(xOVY-p*GmGjcyXOcGVS__15 zHhPnQc&!)!={#PntEi6@y3rNFQcKXD0d%%Xv*^&^=NINGpY02hZzNJ$rNhz}=x1We zo2j|0tdFn!BZ)KxVYWVEYWa-s^n8_-;hi;B|LeZ<=r`@%ELDn+9AZtS#OVEUn_s&= z3tqk`e6i!7_bA?1BzmNFv;&r}-xWEIztWI-#rdw~CgWDhoQU^kqXe>~ZXW^I7Nzgf zqZ$%@;%C1#9VmX4VMWqE2Id?F7QSY&>?eU&Ozt;?MsfZ=I93Zcg4#vV|d z*KOF|F4W+>Ha33nX!Ky^g!WUg--N+nVnygsbnFsdTs^T7=?Bg!7Q{?fw@bA|swe|y zQY}d`p%W_x4WlH|*dVm)j;kFIOP@MkN>ufVv_{!ZxB)so1#8NW%2yZlw(uYwWY1 z3m-mkImAfvDh4TyMLpD74(H(<_V3fuzB(_r6T5bt(W~r&TMF`JPDdpBTZmgv^UpkM z@H0>TYx!?s%4@;J2kPoV!FlsH3JT1Q|4$UuZx89X*_htA+0+k@g1;Q3-JbVafbR`>6^bHWP_`OQ$B)g&l3cud=PohVmkcot!YP%nj zs)UfGjhFW=LGVXN+yt?j|3Xvw`EI)9D{0=5SS474J-76qt{{E^zA4_s( zgKmNm=;i))4{F)#RsN0E{hN_G7||VK8lxX#9F+AO9T`<*9AaVkHp0kYhCdF1q=Cc& zMUx?NA^f7@@#B&p*+IsB|9{i)DQ5s;VdV@0{6D}>3+^~)fJO?c#cAlmBs}Wy1WUEK ziA~jj2j-dCD0op6`WpxxFOn@w%|vn+96f|6UHnbLll)f_o@{W1oO}${4YWcJ!)X-s zqP@wvNNnQ<2cVLB^Itf5RLR6OSpWEcJWCGIxvg#m9SQWU+!H>I^^L2?XQXoMrBG1yT~s);lO2i%l~mXJFQZE;!qDR|APQZoB|6qrBV~QGXq0olBl5cu@tG+M zea3o%T+4R!wqMdi7lcO@q*-kBb+!_B(sz?LX)q?CytySR1!|`nDFnuVJg#_;Oq~ zn>PV&JW+VYYC0d$7xT2u11LzIBbqQzTlpiY8gOnoXbS;fxCq@WaQ|p-4PtRdYvduj zJ{VEkyrxly$ccn@h&MTF^MS~`Foz!#U8OK^7R`lP5XRLC4*Y;(^*%cLDBY*2?@ft` zB9n(EZqz}dI;g3|MjVpTe4N#92V65>; z;bnSTXz`F)!Di7-#A%Z}ND+e1y{|NBEgmq;*Y>IhoM02HHCOvicA*y)=SWq(qI1r} z*-k3-A92gigGac!Ka=G^l+q}~ zzXE*!UH#Ia@y}2DzrYZG;13-&uh`a9{((GDL4ekfVTmxmf!8N45MyScX80!IW?*uG z7$jc+M*@Vh)gnh7lpU2n(tOu|md)35tQHq*DEl2#K$%bR>lm}N!;2Q~k+Djr=|q}t z#|eURW1HNFF;U+xJDfvWR{+$77(}8Kq*-3?3REqR`t_=!`|6i_3Vqc$8~h0-~wd~|i6Wewk?1(}ph zD<@<$NCXLz6KIrZRQj>b{b@MrJP^s;s@h0a;Mr_Rsu~Saky*?jAojV5zud}z_gjIU z?fKrKtkberM8HukOEN!W_Rgx_n1^rg=Nf~jmZtd4-BhzHUA~0-Er-YX(^7aL#8g&< zP1F1D?(`-joAr65Lb?yiJ5Cs2;O}SrO-c;fp;eB%Kk#M9-H|p=isQ7FWg&p8m{s~n zIlT8mC?V&?f=ir)n6aG*^@d|7Rxl;Q;(Y11L$QK z;*<2F&#<*E>T^L6oK(^5(1JxRBRWF3CKqZ!PE>=gpylGJ1(9eWlM$UkT_F9!S6KcP zUx7D#haV&hs+vQ^2O{9E=L?KN5#};bm*M!?X7H7<))p0nFv9lU-*@_P@pY8akztFT zHJ8!*>B8)TB{{EQ%B>^$#gMea&&0=|`YN2wWbIU~%uuJ2-X5D}zU_#_%IR6h*1nY& z?NPwTeZGrcJlntHqc8K_=;VR1YcLg^rHIPJ)Uu;w?2b?jX0?Kd#rk+33i%r1JqLWs zKhY5#ZH?yO+kZhvepLtGAfpuQKzu#W^pbxo2mUuD5jHsw9~&iC5uJ!K3ky@csSW_- zx`v8n8i`H`1rWICO@gP zkj-9?;=1QE(frDda}U;mk)@Uyv!8qX9av$hXm{=q;>Qsjvk>wVgv|lR1Vc9ts1XD$ zB%`W=l8%t@aMhsy_P=B3%*M$AEfRs*fmA(8Y>Ym%CCS&9V6undTbdWoH2{GVA4Mlz zH2rYALH;H-Ls3FW>eS$>w4_vrR{IHQ7SveB)*1GP&l$xm#nQz#((0pQkr@ar zvmQWMD%&u_NU$ut$A~P9YO#3Oc)6vL&&s#XC$;f;8%+zU37#Kyj~p>Mp-~0;`_VCK z)yNx;0uo=5hn5m@_a>=j z#UJ>!YXx7Sq+xA>E2A>`$xrxd%ag}yLO5N$a~skHc@1PDh$@6s?(j;x4wxAI6wkZP z$%is`KZb4PV7WN8+KmEGU4k$Oz5A}xgS?UESpG@piejqs_-!w=Jv9AiQf&XTrQ{4B zXemH@6a0%xIk`k5ZqL1)1k0^UANecKDm8ZWv%c!!g)fN+hSN-NSTOod3%w7a#tKzs z>g8WHs)i=|jR>8_xfC4W=z%Tzwmi2D{>o-cNUX=sf%PGkZH_dC;tYrJi_FKiF)R=A zCI?!cim#_8Ym6%^Wy#ixc3AQ>Gj_Jk$Z1myK-tKyMoQyuIc~`f1_~Zoj}4_BynPa6 zI6yHV8$$vaij4ERg4|UONwlOT9r}BF15j!9_tw(vtx(k=!oi3gYTb75>Htx1(34ofQ%1GzN#pptU6CS6!8^0UR$ma83J)Rj4;mW7jRiB9m zSdn1jd7ff(HK?>r*&WyY^qehqcKo6h=VAD%y`u^es3oMY#S&$(6}$Gl$q^y-C5)hO zvkLG;8Y&7wf zO@VVcfHpvF;vBgxMm@e=!HnarPVi+5RQyI44UED-A=pGku+*ihG*JqN)_~`y`IS1& z=lDx;7G)Yaybn&D?sVe%vP8QHPMt0+lw+@k8a)k1tQ0nOYEczlmdx{Em@4QHB10icIN549bDXXH!m{yW5LNT{h zD=@{AF3O1;{+yfo4TC66T^_YEUGL223(+sdSrpSJ@)z^P#d2iaX0X$I8OLV^awFVZ z?d>z?AzODdyc+m8m>MNYXSlfx=BrknRKknzk+hESe^a7JZVm?5fLvdr()|~$?*F(P z_WWOKb$_jqfs_X5wYo_b!&b~=%c-ghAdU8G+N6Z?p+zpM3x zSOoAUTEUs!e0ZD=^#L48rO?32SElz9sg3wZRrC|7j`+}kcj_ZPRu%nODkDC);2rpw z7I+6f#tq(qk0mDUihd8oCx?6wiCqy~P6H(=Ki!9`CEJU>7D)BuiP<(Kfwb&UJhP!9#fvxWHI?3R_p-*5?;$! zQE=W##Jgjuj;L?VKO>rx^I~|NvM1IlHj2)q(U4q{AL>Wtw%+nxA{`3cEpgR4!C`cT zp#=pFjXeCwOEo}^)DF{MwID?>caRpGJSmNbrIL#02bOa!l~j6FMibWixtHWKZI#~Y zm5VCvwg_*vD;l!3?BA#d$R{JzgWZIM2Bw~UO|VQus$yNpOW+eCBCDti%(C`a9)EPi z)dngaI5J){SX4;C`AH>?4B_X(C!9#EgA5h32o6?7KGApJ`WQ$sLq&?x&o^fT8Lzn; z1hD&$08Qz36CO8-ud{=@a7(|kewJ8+MOONFjG^?tOU$YU?y^+kl{RYBM+!b4Fy)q zOUvVujW^+X&DgaL`iiX5NPp@OP_>zfJM6~$wgdSne8vCeMg3KzG}QIF_8@_!kc$75 za&WP8aI%}5@*QO(d0=T04wNj2(?KTr8X=TJJTi5%xuGc#D^vf$3cfb;(T*X zCmR!*O5gn%=Y3^W=~abbtfM7gzL}v-3cY5UXJe_q$xidqoaR{t&<5t9(C+Jcj>2?^ zT4wIrD4%}|pLKcy>kZFK^NYax(=LVvzv0?pGyUs0+&0I`)~a5E?3zUS)Uj`0-dlbg znPxAxvQk#eq8pKspFl*&U&;Flbpt2eL--;@Z5h3&H<*4Xzgud}RLusfujd!z+1E1* zaW|+vxb2m(LY0Dt4Sb)jz+QF(EYHiMPr|b;_aPvpJ&wb}403#@K?`yd4m1~GL{ z(VU_~dR(FwPqiy1O{J5WEUSUuDwgd2yF{%UDzz5MqPZMJxf>Z01Rk$h1LQ8oySE&NVoUW)VX=`<;*_LC{&O)tMiZb#w30H^$U9RRmmHuZxKy(ZSd0WWx)g+nV- zmbuW1&r)P(#$g^RqUmioY$L`+>Ae@dQ9b^~)`Mj-YxG>xFE%Xo`0G>I*8|MBdBv)) zCrMJ*0c~PV-a3vSEokr5ui1wKtuZV(xU<%5=q~m3rO7xrp!!b zgu7*dNk#(ILCRMp*Pkl}?Hkj0qpo~2>sq3(yj$M1Y(CZri@U^G%Y4cL6B2UZtz;H8 z_zrU&y|MMg`ea9YC-2QITA%u`LlI!kqgXfR_?Y+A-4&ptq2ZMK_5*JB^as6#w2AjY z?C*&VGJ66uLCR>a(4Y(MwZmm=0t$rWsiV={j4j)@hrjC)0~6 z=#^zH);D5CxhR~fc53%TknU?6fYl<bg{LG$smICc|3ho1_@=&05tw3#z^YNQ|TBou7Wr zP^YHZt+=8w{It_WZxB)*F1!r9!xwrwCFVa!r5M7av5&oG*IjNBW^?v(;?9*5_XOoi z>SusdzLzP~EnpTc4j)P+Cb$dgQ%F$m57)MWwHWE0 zCH5f%fYD*L&!5`Z?9&{9r=$-Vvx=n+t_gkt=eTtx)1zZ|66oF<#T(?s=6k3`*FP=t zJlboHJ^$;gVA|eB=R~9C|s;pd!~p@QY7h! zS3Z>)e}&E>?%ke!{OGen$n0v*%yYft0n_U-n~%B^&p+RDUfGF^onBeXk(qAlZPS3V zoX~HWT_Ov#ilaI6LD8#m8mun8nRi2QWYlgKGW|Kpcd&P-t-EykG*Reh-mjb>Ev-t| zt&roze$OBnV+{)hJZX%{8AuLpCiKb3Ih<|gF^x%Bb$@(ZSqrsaa^sqlu`R_lU~yD! zRMcIp;w$ZG=Cc97xuW(WMmh6!_-Diy=3o1uG-oWL&ld!7jI2o*j-ss=2bX@GZOn!Z^|8VfEHJ74`lS?$}^z{cVuH={gu~=VpMnQV@FIz7|iGNGRR$+jf#6anqjD2 zcxn85KNYTfAgd|VO#{-|=yl$f4Vru4{iO;U7T5^{kfLeDS?RM&Ux(%Ku9;IAOaHWL z7g{r3NkIhMQ>#*Y(7UPTw9>VmO)`-AUeY;jdNU~&$-iaoGFw{3J5;23;Eq)rDVHTQ zLT%O8@5@L~Yj^!Y&Xs}Yh>~T#SEJkQg4%t6#MW9a(8G&Oh>MB3yv<#cV|1B_ALv)u z1?733^f<#O(O9(Y5XRqJP1ie_aw5?>`eb+|`1#0p_tos|xZ4CP&UnNo)A&0woffMd ziimH-`N+eumj2dTerxVb-*=_s=0BA7=)Jppx3jQ-Yu!mwxSyY(d*2hSIIL>ikb}X| z*o{fB0knce8ub?N>cTG><`)pzN)Uqh+{~HsN##J9vGFN^F>)XU^XF~eW>fXe%iWKU z7-m*c`I@5v@B6YTOWBGgulSGJY0-u25$8Gv+?-FM+;fd_jtIRmKBJI2sT%}2RkLr3 z-cbt0-xZ|tM$Sfqo#my{3Y%%s_}`ONt&~&d2>>a;V}eA$i2VXH&24Q!I~{ND?^8 zeh<7CFYGh9=0yA0GOpO_T9YsGxzj>^DoY!m;L&ILscZc^MPRw^r%T4wC2Ydj7`a0Q zXUA<))u#Bibb30reMcT{1_p)?Lh_ALaf>#MMDrfYDYs!no6StJ^#Gbe02`*<17nmeOBkwRZwdTNnEmMn$4W<4%SYCZf9H&rWh5cgdd2 zEI9+qo10ml4d<;o@4Pj(jm4FpBjA-bzJ7W;;IK7DX{{a$<~U6s?Ci}& zCZ^#H8DV%F=KemQj(*aSK!4f74H)kVnut_?w6v-{?;Dm2I$Iq*SVrdMcn~Bze+dDG z89(;;_uE#pTx`ZWKA#vnKkw*QNN~G6+iu_;;NzryKISQ1FVZ zik?>IU{mo+`V6#qJR>QNoensjRU-cBB(6OwN`jy;Cw!*K25{c}<94=)*_2Tj$k0C? zt1I3x-w(U9O4V3GjeCGKG5}kWGI;Xu4+~^th(LqD241;o6<%zrg80M{=w<$clH&eT zarb|uq(qwP7}!`?xYh=H#s5J}`GE4}5DAH^5;HXjmC@gs)|DEn$Vk3sMV>Ak zfsobvi!To6EYL|!&q~e6)DHa&M-Y6uCqaVxO+7U;EhW<+S@-Rxu!RZYtW{6248H`AB27r5X{}eL+w;tVV?-+XK zK?PZ+7#=`(qm2go0VJd1R(zxZIsm014D94mT|E$XHp5>7K^DOhs`s*j zxl2~jtrU#kz!QTgf+;zXJu=UNx!o(HIE0~0d~&8>3q@HwR|Kv@(Q7#>FiEuK5s~^w zc)J}wDiV)-K8)}$GJ+%@A2zsaG#|w94vEM)@Vn%R1-Qps0H5Mr1E6LupR{U1k#TB7 zepE3+w-ccr+JcX6yR%#~gxH8&3$l!PTt;DNRDL32-z3D0rgVy5G!yP4FJFla3mXqT z2iF(q;a=m$& zxOx!LVJGdk;%2lE$0x@?V%MJNoV;x?Tnu`lUwy!DuUv8$Ex6z4xpxvkS+99&8Diij zw7y;<0tznH)8082dLDoEd$>aa@o#bnBtj;u8M-6MF(gr=ki0>ou;;z#C!!X`rClKF zwRZUz{u=5<&7W4OtPL!1K5`qQ;q|gqsL>xEv$;`j^m+ND$R9~!$H$!`sAcb5ojG=_ z>sLp~oH7lgG3;G7B=AlbJ`jS0e0P0&Iula~0$J>TI0vwDs5*uX4k~Sruo?rY!2+r})fn|+w-+@;q z4^AZdw)^8VW+?2|@@6?tt25w#vuf}QA0N4&YpE5K>~!Lrs3$sX1%7f2xxSGY!4M$V zPk~IfJ`9nJF(PGUFbzR*BQFg$u@1&VG(q84;rlDY+zeZ2<57*&<|U$Nk`%l8H zu!K^pv)PQnH7XTO6kqR6p8YV|OZ?$G%qlHsJRVw!7y*kERc|aCuMs;wMK^h%U(=Q( zdU*mIy-~1c;(r&Ai`ZQucsKYb!W+rq zV4O}uIrP6s-~!G6B!Q>5i87WzaVY?L^1luHjqL2&{}hh=9`->YNHF*y7a0Tu(1|7* z1}OFfo(P0Q1kVIgP6cqviS~XWE`yH!;-l;Q(plEuexfk^-0{+7chh0}uIlCD%i8nB zi=V#=x`mQrt-eb@2Ff5eWIf@-w+*{0A|$Q`mO7Z0FA#gEUWt?-wtN&EAY82|8qdzrp6^jV0+ zluj7EEip@RkkwmMvfuNg!c)#X73iiOo&G-?2)O>Isme9lC3Xlr2cXC@F;B^t$(Z9~ zfY_n{*l>{XI#P5}a3K9k03{DtuLjqfEjk+aF&X279oXtc+64P6>+MgiYJbNND-poC zPVfTiAb0qZ>7NZF>da8}Ahup;?35s79AX7My-XqGFk*<>M7-iJf4=0D-B&0sAdy^1 zGWcI`x*|83GU#gw90QPEQS%R(kUA@C9Xls@%Kb|LNX=y!Bn$2;I@s^q-YxmKi+!-W z^Me|vq_>GrvKK;=Xg~l~z~8Tb8#lcl&w6*Sh+2~sSvo)KW4?YxepX?ARvv0^Gh&M+ zeIMdw?eEDVDug16;7?ruD_Cj=>=g#Lr@&evBcoiW|CGTBTeLvs6avW9LR8}=4obK| zaU>oUWqO#HUq^?@!WSk63^qW1Z*1(RN0NP%i(hgq$6XU`q=ph#3d+w7 zX^1dj(Rb2)WMN;!X}Vf@f^GW^T8N88gJDL5Pn65;jvZ}ljgAj>@sq2ly}^|vlfFaw z<)=Z{msKd4?+e~p!EE7xmCEI@fG|@~DJ+&PR`arOwd)8%a%kUWK2i;N(=~K`R8h=Z z^=-8)W_DWc0V~nkZ392B{O+xdUQ*U+0xk{Ei|*?!hOvR#E|wD}Zoq(Xs13tNNgO;| za2xGn3*o9q6Gebo1Mz6>fa)}2pk!~6_+;WGUSI~Jo=hIKyRR^}E&7#mL^A9JdK_?V zkfP$`Qm+2satl-6MYa)?tvvL}4w|n~((x-bY#fQUvsr3D!M{^gu#%uXgYqMg|11hA zu&4n(o{hY2T5|HXGxzBIAlY)x95+RMWnHdZDA$08_h+7?wKYrYFJpZoU~_rAQ0l3~ zP}Kkkqo_CWvRQQgcC4X0MTCKL7@Sh^_oA9Z;jhBP!C~IR)`Ntlo@` z1_}71MT$G-7={=XV^LC<59z$BiY*tX1DmVRBt-JnYYDzvde4=x0Co;%*uN!3fxw1qFp;j|4T7~`K1$zI z<$AA?*mh_s!d5E6v-%4XlEd<`sEs6-I8MIi@vBBINNcG3Wk^E@R;L&eDxhS% zi;%eOq1!aa<)O|JPwqH@#9BHY-LeV9y=8E7(G1_Tu)>9vEakeMLzbB+LO!+%>;hC8 z$)N6yRi~jaWEKybYp0#VBhHK0KGa)6Z|{>-v~`jcL!^VN+TQbBPPep;*Ih$bL1X0U z!rK>(TsKbvgP7~SuxMBM_;vxi@j&UFPeKL_R{@=*{a)F?i5UY_UKsKE<6Pf^eX=#j zw!mk}0M8psWG<%{)3!%V!`jE~)2ge@w?8Vr=ZQFr#Y-F*b*g+Xge$+k<+3-Gc&5wL z^^R7z5^m87$$CvTD9ZFjk!$cve21P(?mX?HUB@nVRJJ>pyx~~;Anmuky%XT{EKemt z=~<2Tl4Wv0L;mhQM@Or@z3`@8P&4LuCcAX)=p6CD4%k&C_42I#8}jUVNl6|!WQ35u zwE5*UNBJT%tz3Rcq>($U0U}EWh97fwIlluX*t{2ck4mbIb+*Oo6XZ;!P80QKWUv9| zS^>s*E!54cACQYSNa+%;;~KznzgI=fi3i-V4wF%0*eQ2I?lLHr|lLave=P=aFbKT07dw5~{BCt7zGDk!T+6trYGZ&jG2A;hzdFOrY(WY}IO zaJS6Y(40Z5re_RuHJ#s7S-78sw7B`r5zhT+%n+2*Sjf_0ZeE~vJ}(BEOz2xC$t3?! zeAtf0nzsJ2bb7O1wlF>fYpj&15|TYjK}%~tWx!`Uqi9#vboNEk^4-^_y}~WUJz(5$ zL6Y5m*iF_)78+V=0S3?ZQU^(x4{BlAr4{1tlGJaao3T^+a8mMu;^fwi)+mpbzw!{J zjGO&fLh1dOlKBRy@l8B0kk$Ef`sm9$fyak@z0DsSIo->g35HLDD3PaHNSX+lz*0NX z*U7U7pFTD!IqK~#&JXb%%`hw;^mV32ND7{|8VsOPyrW4VA*0ZVoZaUK%aBntz%;q__CH&NM|oIh!a_I&(0>GD z(s;%VIMq=c#c_Ygnd-0OSPIXSf@2rOv~)9L_N2sEG%1%X;G5jQCr44*We^>WR)HB+ zL{^q)A6rH127z!-0Mpmx$QEHWbH66$9!TW*-SxaWuUg>2@G62^!n=Ffm!I`8OB93f zuB{}Aj_~#U!oQr&z>8oU5E&^V0j_EAw)4M~?oCFCymUNcplUt@DiE6pJf19|4_fWB zb$1lyn}x0J^nQG`0es4z_~r^E<_d#s{m?dXOaQfaD>r4!$A(xB?N|*QN$jw67?jBE zV<)!2>rsOIb_P6jvQ_jRki#?*jo9AXzc&hjCu<0>57_UYKW1)Dc6L5qUNdvRzbvwU z)liyD#mT!M|0ZYxAhsp`03I}?n93&vl?zUECbT<>(5RcW>JkLNhu{zWQAjJBKc70= z05Cn&?$fU2s#!xWawL*s988ptFs;FQFQVMv71-qZ)8Bm8;YYP86Pp-0+JcI7`)-)B z304^PtUUy*{Rr$h`Fc`Yo|@X!8_|_f5weN6z36+tvcaj?0Ax&}PmG8d7VrMhLs=;C z%EFYQfJ2H`HSGWg6m}fsLi+*-S8@=)NSH$}M9(dpGqdeNQP9;tIyZ~nyq&?`EK4&# zwB5WLkRdo=kvLR4dP*gre(ij@ew#X9!G>M$ksPsu!aXfV#x_~J@cu(<6q@`Sl33W=xmfevwT0P$C5TVehk%zVYrHlVmq;BCv z72awep-{JxhqnD?#`OoZMyZ54ywx#6pkt0$mz<`=X{#2EWBlC=YffM1 zX29F!xe@U8;e9KJ5;9Lz*K6LZ3ccWcQy#rtUNST=q>Roon=l#DUbV=R>iY-d4`&OR zR4as_IKkSjsfK9_51TUIhE#gMq+H1UN>4ym1FOEqq_~Mv$-F5kp2kHJd;7z?sE~y2 z1S4n4QH_wYi-J-JZ6x>fK?Ba>+z)P=tD{@ZKO+?5{8qlH-6NgE^KRw560D6KK-eLg zN-!h>qTlWnQ64aV%V7{&t2ViJ?0(iUnSi?}BCTE}e<_w|G<%)pJxOLGT;vJTSt{yP zZd3OUUYqPSeMXK1ev#?ipgdJo{~=Si0iCdVa;~#qhaZ;EDZOsAIXN=#J1V?geNPwJ zCB0Eda#S{`yXPNx5pfKV`kCiq&yu=Jo1=^er0C#IIK5XKYrnF5U%UTh|H9*W*?NC# z2ySm@$1lLqO!)ItfN)T)0r;%nzpse~-S`-MeGO0s>r%oJq!PwNPhfWoMF*Lbn~{Ov zGQpR!+F|EhtJ|u+i(ZPl%YiZs!g?pGP0_I&ZF*H=%i>q^L(FgMz2wiyo2NPTpTo95 z&e4f z@3;Mne7n=1OVhJh)9OWFVC6F`P+E`_yhF;22(*BAE-Fu%BD*sjYhOkEvjX?@$1N}C z@ja)zh1;wF$x3+@>5l@_xs2jVM9!PTN~A!yYItplwT;4_LLn6aK>>sYGiPGvjtR=s zsWkJmgt_7qLGDC0#5>cevXUyZu`YcYg7Kj z!I}L;L$8jMDBDeVgPp$ad92x8+4SkadQO{8=?MCyPIap2@(51w`IIhUC{wF5Tkx=^ z!uq9uga=j+WYqR;$7`q1vl;(9btY(6U@nHtr?vP)B_a4xP@eusyvqgvN8Odu?$m?H z7)Gh5Id)9|h4b)%DlCXOw~4azHW`9Bd`WEfylGROaIk7=fLFoLnOba%6%^7euwUVK z886ut2l>h62Vgkv6|~G*V;zUwtDSJa1cCoVE6aNNGJer;EAkB`n;RQFrup!k#m+wd zu`J0I;`E+wO7z&ty!tvYe<*clSrT8^-UNj(MV3E^R`vkGmGNUe8)(RE4CZMWw=f86 z#I}w&#nP&hi$*OsSw>c^hM}lQTgHVEP|Iuc^j3Gq4C0B92ow7QidIKETiCSnr@2>C zZ?l8!3X|N^gH|6(s|&htpZxle`JR;IFOdjkM9vH-uEqs(dZ4j^KR5*iiBYsV+u0

QOOUDZeWFrASu>`(>GztLWbPZ!aF$+M4buB)eb|@{!N!)SQ46B2UF6G8Eu?Z# zIb^2aZ|IU=5U?7QwYi{A@BZmfDxRm!_9FB&idrr%JFyM!9*Ef|x-jUV-3K{v+L7q@ zMj3lFV6$-t!aU~zFFz&i@i>w{1wd2FaAlTn^1kJ=cxl0Nq9Huh5%U@FSE=)B9=weNoZOj!_BEjB#s7vK{V#1jU9WG>Ts>T8 zfBAWWUZ^2)fVVveY_SM2rV#y&V5bu}_S=xds?n|K-t3L-*;Wk^lU8>_?FKP#%xbe= zz`-y3lNfR^P$59OTZ~Ihv#-6h&TMSq-^XfYtP!(hn#cfLh4QDZjraN)(KfD_ReMM? zU%5E%^=d}A*su#`)dH3(1rWmd8vVhd*gBP5o*l^g$RAf;Fbp%7h&6tTj2c0Bn3j@f z9B#*23~SbFqKj}Rz?WCD=4ZY zyBopfm0gf?bTHBe{aJwc8^~#5(b4W;cnYBS=8x(h0%b3`x@{IWa#_cYc7n+Wp%XQl>k6fQY5f~#D&y+>d+xRS%i8Z(u$+{B z>Nq2L45*oCeTP}Hg|j$-uvIy(`$c1ri~#yEM^ztHB16nr>A0xLX{(#4I0!1F-$Q;d zh5<#=A?`zIz=GW95t)H@P^@Ak(T67D_!jV`h+>~+2ib<9ZLnF@k_ZLxA>r9 zzI|fPoV3H3l?qAU>J2uE#4?{|&{g!82}3r+{99RdjT?>|39i5#z-rGw3NS7+b6!@k z+H+N7!XE3FX_u;A<+m7Ye{|eTojiV}KgS;9#6r#8wc3k)qn|{ghF{41OtRA}C zOf8&{@3)i}aSWm8E|Jc#TW=p%EANt3hZ;-_@uRSTRzt9J7tcwcLj6>!h)*g0;7pj| zBBG(OFSd9YWT0#twdO3Br>|qtD<g|ky{HJBIlQTx9WiX(t{z@& zyvG41WBtv=SQATzZ+*MRu}1Bi^i?7EYo_G;y5nVA9**eBzS}m-T?uNGW zs`kYpPX%A$34B`N@V$Zi?jZscB)!ylUL%JMM$3{vxwxmdxWB9SE~B~MJlpe);tkxr zPTBWu%8MPf#+;oc+r_%U8Z#5ga`&h_yWj6{&HGXt$YAGBPG@W(YZ&T_3a zLC_lLbh7_(&HptM9L@7inNewcbXI;`*$n^NZ?DQmf=JXJNND_pa(s{s9?~C(bk+vK z9_aHIg#Y3#&HnFJ;~=q4c%DX4gpIVG9LML#2GCgR>i`L;#OuDc(;=g@^aIRu5LNvE zK%05^aBWj(S`_~YQbu3uA|^Z2`N^nr+r^94gAI|*Tl;#F^RC?({fm`-lrL1mwo-W4 zZ+Y+cjK8(rl+;@xdF`{teWbU9cPj#>3s(xn0^;kSuepK0;Y{3uxaZ2CCpPd*Pyg{o z!(;~kmA2vNhucN{4>G;_aO&bv^U%pe^977XuPzGi;JERJ;^bhGa8{U_8h7{ zhQmAWUe}})3yZ`)z`-2&A%uX@5*ga2g+%~6Kn}Ih@Da9l#fP9f4QS*DdO@OGP{not z6PX{JFG&ylQ_w#y-**>2qfi(k{$IYKntyylN-+QiC>lKgt=@+OeG~pCSwh`(OwuJ$ zvW)4Ua1Gcu^k2D&{spdONqqMk*nR3#Vt^Mt2PP&V7)i162P&%}m?R7ES=BHR6CI{4$* z*~(${=>Hp>!IICCi=U6r{t*5j`=Qbw`=M0}zC`|GOUqB>8t-};tYm_`1gyWhZ}UZy zR@UMz{*DB!s4U#=S9ZMi}+NO?$lemFdPkbJ@U0?1q?^i z(|K5-nAGk@Lj&;^roqHa3j?Mk25egRH=GI9hL;9bp{gdd#FAq(w5Q}eccCYVr7iCZ z#cu@gr$0-5dax$kT9)vPg~KCJhq_DRgO9WpG43jKD#+Ub=Lve`iO@D4HQPp}VY~?} zRxRjzf4xq(qiJNs%u5574u|h=Y-O6WG1Twg8}sdh1rzDwW;IZ&95RGd`d$sdcr+Pk z|B%F``RwB*LSx!t%s2_#DOjRF?YkPiQUazkFoFS*G#=lNGS;LX%u*b-llwV^u3yE? zCIL0Af4>gAt2|11vab7NSyXd8vEc$J64urg$t_=)G3;O*scK6lvaEQ~dcHh#EjLiB zce?M}BVM-e*gxEUl=KRaWHXjHwWB6)phc8Iq&OidZy@v<0*p6c9N<1?`EDg$BHVy# zPt!EVD_8B;RAp$j-6PXjr&T(WT_;R=_B=>Zl8hB^VU8if!mXW}^HZETO@G}wlrroOQxwIGsTTap+S|=Z z#!LYON0;DB2*%7hVx;G0@7l{wdKba=oiII?l*XcO`{^Vk(BTeX!()r# zM8)A_?`t3Fp|0ccbL#KrLzxV`$A=lQ*Ec>!j1{0e)FcvQjB@gh~`6TUN70+s>26prXhVc_v zL5rJtv+uNo?HyuK4ZkBb7)mc)8XtUj`kD~oJ3=Gn$#Azk!rjj1CUY;5t{-!_EE_E? zsPy9?nVFq&B!Vj)tX@4_tIh5lY2T$z`Tft5S7>XCkzice zA$z_)@SJMSHneJ}4^EqszuYv8#w_{bci zvma`ZJX`Tod>rV%3NN7jS144FOxG$Q{8Jhe71&{9d(#!leTpTJ`^HQdJr`QP-h(uePy5x< zLb5rM5}{J`Ye$BMcAN$~bB)I#Eu}k7tQTJMp0}5 zn4Zz}Nb~`VHB#N%W;Led5YIfP$%X-oj}2~?k|O-h?wN!6y(8!l+Oc_|nd|rWjJqd# z*l2X>)E^A`hPO&A(4?bv<`N<`C5*VnA*~mPG4+CmTX#5qJ6N+99Fk&4Gd8Dzr*?tP z0MiMlFW48{^Lbwns|&xbPcxn6;J6fkXAGVkk1mciE;xtIk>C*`dO;ssquh9))B|bE z_Zl#;Ri|fdY5YAQ2qR7zqse)N4?UAj3-9UEc=XW&snj70O2nYh@!(shjDB7anF4=< z7B@rB_;cQDZ)Z1-UF3E@E%jY)`E0zMM=%3kaRgN292vssN;4 zt61IIk>eFpkr0_luDm(+j}L00+C|YZVoY5wpM7+FnRhV;0aCd%+O=o}EuBizb7oLp zdd5!Y`;NAQ1`&ga3mMONG-}JKBeKE#$%s@ocL{3j4&LRhi%0wAEZ(0LKPzHsr4$@c zQ9<@*tn!w&6x*I$nQNYA&_?uDms+|i`nu03A@Sy_a5OPcPWc*?i-x2(_BW&_svd*! z=a6-YI<`z8DTzF=}*oy65IO_Gq+> z`3gopn`8T=*NR_j@o1LL#n&BtkjpzOj887+Q=_)elr*T3NG#zy^EaS_MQM(dvAMUh z;acx}xH$AvFqL`1i9dmuHCgx}2cSW8BE_qSe_^*fV7fJEDx4j8NcC3p*KYxtQyS%a z>=6XIe}(uTsvlV8_@{{ZUsSO_v0<%H^@p!$6XC*Fk3!fr=Y%W}pGoX1X2k4e zAnNe$zMs=xLUmOL0_+75<+htAc2WMJgr|zmr=&V zeLUXSl3uNrb|aLKY~w&Bz#vL^tuUww7)0=luPx%#054L3EAyc%*RfgzSK?_E+Qic? z0&^D!QwdXPOU@xD4JiL^ualq#Rv&Jvkj^@{u&3}})tCPQZ-d?+!Be2q&?6yXBFXu1nO1f|pC(|ka-hYe znu03ABzA*8nPAp*ABi2Do#`dPo`kf$0aI@~ zS>Q@of0qhNYoT|xBMkhypZrle$~`|X^M)!~VlhGfulFzx34sokfeta9aGxM4lEzHk z?d?4XKNia*an{)X(ac!>>}CQd5J1>e#%9J&#*)S6NX%#!_>XE_rTRL`sp_b7gpyaD ze-x%iJ|=S{7vJ2{>)jtMW?aVN!t1MpK_sJ+RoRB z3xD#rtcHhnC;}-3(O|-CCbmDsd6&Ty>!!t$tiTFAAUF{@pYMl~nvR>bv_^oyvJ6fH zTO1JB4)zV@Kn{S4l44NuWT#<29>vOGf1?Ao`K1>BF}lI?FQJ}=)#6rvO0~H8&A0_E z1flWN2n7EbR8{*YM(f``chqxalQ*gBH_hwaRZ|y%H<<$`Fj!#bcb`xb5Oj49kyJ;7 z8wi8}?8ICLziRiOK|rc<$-GVo{c6}2-OD?zN2|gV*cETio(dZ4Is+u^>KbnLpmRV!nwUzyYXz z;h86_pFi+9R`Lan1ymFMn6shqo0@I|u z6z*l^Cu_8Pka#om5>Z@M%m_~gQ`Z`gqxwv_+SHcb`#U;>3`oTM&hX`kM$@zn3x;L+ zE+$F%Yt2!{nuD73A(~sHEV;n~83@}IC*n?#?(uF@e@0o&d3cXSQ%AN3@?p4Die9j1 z!-rN^{k3OtSr|TFm_eujy0_H&ks&@YVUw!Yo{AEy5EHla94c-BPqD6rH++7$ha4&@ z?BWhSy#>pND3BM807~eUmU;Xtvd-&386Dmb+sdRz!I|hXF8HPUozK)hCg%!|#d5H; zj9Bs^50D?9(zV#sJP7xES52S`jF_$KeT(ae+}i%hl>X4=(z#x>C^!{f%^p})?e8?t z%pL5ty+?22#G2v^c-hQvmLDWk_I@#3c=;X0?$az;m03s**28*o@97}Xvb7D5Bnc1~#S`m$+G?Svv zlc>;Bp}JaxL6pZ9Z-~vgMW){oYP{NG5(6JJ8KFboM))Z67LzRS!J7m82IQShHKh68 zA-(Q7i$yq;1~ah+#gq8X-Gz(i)`!&$CCOt*)N+%~SJczCubt`d*>{UT~ovI zact)>FCK&^c6sNlt15p8*%J+{p}2S`y%nCM>RwF0-0Q9q7Td=b{#cipg2j>G3)%@Y z^^GCK2q7hwo}*D*Cy&`#RpO2InsvpUTA-AQnWMp*3vn_%e2G}Ib_Fr4ZY`>TOm_gX zBLhNaQKcVqhl$vJe{$u-tei0=+<~IUJ5C1K&BlfVt<6TayjJ-9!t%Xik_x|oA@QS) zQV)f2iN`WMW_^Z_6nJAj->D`)ziD(tq zk{;{R+l-YznPhdpf#jtMh_VU@7iBX zzIzyVaFLH@{rq+BT%r2V)#a;2{a~?Hh*Ve5s^C;nZP5JbsKNBx@Cr(7-WIjEi^;@? zagN2-4{PlAzFn|D4_JW$WxIp;YhC=Lf#$ z0E}#5o$Qm1?^=5WalIPS^9cFZQSFs{VchC7vo@)ySr)I-US~^tlPWS{5$&9Tcvu{7 zFnHhZOk$?cmPDM|gXfD7(5B8Cg)1NjBP}L{#s_I-(Ri*RCJ@7RWH0_oT)&q`N-k%D z4@9PLifnjkfTx5h0r023LRh;ySoeS%lNre;k4N4qIp|Y~T@^u;yFPS~Guzp~Cs)5H zcq>j8V7`DG^_X>=F^G3o<%NT*p@mPyF7R--w5-oKA0T&h&XdDX*(Pw)~?jR z+1<7^yOd{g-)}p=T9c-+S)ly3(+;jvId#GZ*H1I$+&7gw@*7jxtlqueNBsk%j-u@t zc^)OEc~Go$i_#wF6Ov=oZ>4j|@C1H2Dd(pSjDgduTd7wm`kPd&&o0DgA-$6vJ3)9F zT?DMPZkke6>EdMmPI$#PBliu@PJExOWjI?3D`D)I4cNHt-|g}XHwwHOgMV@Q(T91b zU9i+w+HFE-ZJqB08Y*)&pS&-@icD7xhSw7pWzOpDbJ@!~pQ7l{Pg%CL)wb?W3+D&l zeq(U>e5q{0!R02eM}IoFG7OpisM4|%1F^&rOZ0kZ?a^exAVOl3OZvK)LLFygK?CW5 zG|{6(tPCXzC9M-w%e@JpPkx#k-ObB&9A^51s=DjM*?wccns}GLI0Vu`*+go|545{ zc=;E3DJtzCN2Wit?L8*N|67^Ic&H-A{YaBN@Ut7xrw2fq|1ngV;z!Y%6Rd5)1k)xQ z{n;y6^6>MRnF&BEfdGR4bWYX$y;p!zUjhlB6<;wBp?n3fPL|aRo&a9a5}Jtsqf<6j z{{*0^1FOf#t>sZ+Xxuf>8ag`F91e3@Kt%eoqd>*e%4>hA@6)2x6voapYQn-}8f?YR5{d z23EcB=Yb^yZ_%f0Z_sTPc9O%}tHGhMuz}B%S>#y;Qxo{vKeAo-qcq);)g|N3Y6= zZ)Lt|u~|UaRm}s16rplJ28-9$yEBKH-Sod{nk)gb>lJ0e6i8;vDdc{t)#cl zZTrB}E!vLnURl-r{Mynz`p=i)=48TBLuzRYFb@+ zl68H9tF%#fw{frxdV8y!MYtUeS*zmbJkTp3%hefsEV6E3<2sd6ya%SJL$60LSU0xz z=zL{d(eVxz0hk+F3QUZgY&AH3V>kAwE0Zkrjd*oT{D#X)R0Y?v3=iqdDWQbK@bj0_ z8y|VNvhgS5=xu7yxApO@<${%zP#j_(qeaYEL$-V_=Q;^#9_vFC4h=VKAtuXwz7rJ- zB&VWJW%*_#J^;zsD7S`GU!yW+`(r2B@q{LbK0G2BiT;AqS+TOf>JmA?Q5@c_I{PAd zA)ot(nL{6B*6=yec#UGg9rw#ti{h;zJ7yd8@YK;Y{oymLFZJ7r4Jv!J@x7IXr z0-8y=$NZibA;oHiR#L7bhUk3 z!{@AQMJUH@%Z6`@=I~Q|gsK(oCmsW=EV#WC7z|8Qtc1sq`k0bzE~qjvBFz^ouu%;A zXGK)rCm%7+v+_6kFz%~O`7qiP#+d9ri9i!o+%ro+mrR*K+UR#!pN0Jw?1I6RoshpS znIEGOM3s0BD3KlFzkCure?QskP3#cie~W)VHQi9=fpQ=rP(dVeQzB@rC5+Xd1$@i0 zXOcv1`T80g=ZXX0b6ajIu@6XzZ2h+bL2WQ#dM^X)Y)E3MFuUWRKJ|hqVp` zQQq@$F%}9IkhmjfWOpy6`lbGY8!v4||Kh%ZW$TL1@%_r~km{#TPs~M1c&qs4b>DM( zzQ^2y|M=K)tj8RpMw1rDV?UAf95t~&Ke&4xgTZ6hqcR75k%` zMiFBsm}acHt&;#;;cx&U+b8nH`G6(SBRQgArDG;(3JLlGdGe`@m;-BRng(neqgJU2 z$eQJT&&rvliH1!`&H;Uj#sOvo%QvD=bpQq|I5-%M6I}cyV86zA>Y*xLrunR6drrE;8Ul}Y%o5hEk0jwXn1q% zZ25Y|{NQII9KHrmLrf9m0ddPRL~~Kab73(@$edJXr-0gFsN?s$Qn3+NX9gxvwTh8z z1G$43|9(9@m#os%6hpDSr1TB%M$ z=5NqXghFktheBV20*9`f(>6IB8P=#}h_EWJMPKh-&m7uv$%1U}MZPM}PO0JHK2fF6 zh8Rs{3+TX8W!eS_5^%3-*b90%V1UY&DCVy8#>?dl^siWsT75cX4Q1u=>ZHb5IxAzlS0#}>)#G6T|m2PG80eTT$- z@nouZ4HUy_quu}dvFmuNgaqAa(k}sG(NVuV7b)cEW*~5yX2SRWktQYsTg0n(ZA~dc z$Cr#ZK!>``fU$VZl+a7TIbm!chNi~2vaG9%5CV4dDl0Gf^bt~17)olvCwe^_d zkwdEN=ev=@fjL=^T`1-{(K=2l`z0d8lOf;8u-x~ni{lM0zwv{)D;tK`TbFwV2b=W^ zT*EWacN7uYOT-_4>cg>2?)RK-GR7l!FNNSbA>rwKhf_j*U78!6Q=#M(Cqlz-j6s8# z?4iS@pjGbcm~Um8Y)I29UbMFpYQBg@n(f+S-WS77YF=IMOrUDAG&6^(TfC4KnPC{j zXi%hkdyU#%&QRi+jRNzU@0;(Xjc(f{dv!fl#sy1yWcC*3pDLY?Xn^cfmK>JzU5(sh z-#+$FWX@r;V;&AL5c0cijML9pRt`i@tDz<`V&S!JIN7mnO-*P$7@S*lS(013ayMv& zpHJ1P{`AH4L%pY&6i*z;;Y~b5IAo!LT&e8Un=H|QyXmmXDmJ2L*y7)oQFicOi2BZa zoF|43ib0Z%_H+b^^cVJXTyB$_s`BZpiCm?* zahsG`lEOqy?|FKkLj_n62=61ZFOIq~x~Z5EJFl&r@5ANzV*#oLVCVu8ioJgl98iD% z9iSU;#*;r0P&doqUwR-4$JZ>nIm6?B1CPn!e-F~J?IRprj(0OyGdjV8&^QB+9u$Bt z5Rj>Emo(;AzC-R1){y2Eu%PB$zEh-1BLyMuO-v<m~~$@P2UTC@_&NrH>ou^MqG3G_WS3Z+JcKjIHoKo{JPj2~C{zR!r2S>lzcdiY7% zMy9>(W5%&xY1evEb6DaKsl`dxF;zPyv>?SYQ1 zFS0nr0rZF%i{T$3ZP3F*5M`o~CmO`< z)rLfuash3vBs(iN1A(PGm}k+)UtpS&vldf>{8>rqZ05GYq^};fQ{L?U)D9mVy!sM^x zm0?av)TkcrI&^eRHt?h0-bE+0en-;H>;`9@07_#biXyvTBlo=g4kmbAIBz*(y z+cYYlHVPW_q2Jvkqt1YQV|sh(phS<^w<%_D^PGU~I4xj~+}aN=ZWFNf6|75}9Q9e; z4(6zU?3w&{@a^lw#8(U#dz}_+52A-G^5PqZ@Y8KUJlaIX*%*EGzzvnZuhi_DRR_g! zO3{;|_@nsYc2q+Y-uk=YThSJpZx(EIx^WyHOD>_Py$7C_ z{~|bC6ckZ~)ROVTjx?u(*Gun+NQ^~4aDc?UB0%CVA42kDQ^ z883&Rg#{Ov3H0+zL{vy(ad8h7G8URQqn9(kSb8eo+>*`%Qn>=^N<+d<2ls^cyLKsA z@^Yebv6Q04auNsvto6#K}n+O&5a@?Drnx2O$wc9-65l@4&$O zM9Y=k=FUyVl*?!D)z>`Fqbm67l=OoGf0T;|=L0f67o}A(P(L;ujY1t`V-1}G?^>8z zh-42>H>48c7|ZFchQ0lG<>BWbWFw={gT;V##=+Hy&l^><)~eFjT2n_ccdhPYqpA0} zPAL93CD1qCFE*DTuIDsP#KzBRg_fwi9Sq5-Lkou<_F|`l{N$W@OiUfoh2(-myhkXRg5m+2Fu>T%5~6J-QPfxM_AExmO!#f& zT~JBHUVouxDPMnC-1H{|Z(Gmgpy#y36kkZ!@)Ra#TAq&QEG1Kndlr*h(acbmJd4=? zOE%b;YQHe^d(TQiM(DDAff;0+j&evl>rrg;2CY`l%#nLO^-J~wzO;R#&8IMLq8ryi zpsF7CQ^iTt$_mKNBwaL(WbK_%IbRm5O?`^O>-{*Jt}ePWYxArw-cK)VByrs>%*d~J z(L;yXKj-v|Q3Lo~JI97!jzNdaEN)M)cDs}=dP4T!Oz6Jw@~*CSJMgqR-r}Z9e*CSs zpM1y}!|i3YU53$L9p{giQfgr{ybAVG)*?ffZIEe|{&~Fs|NHC3mpd}z`yba!v{LjR zmkKKs!wQ)c*H#yn9p`V!DZz=(Az6u`I&1+gdxzZ$=z!Y4#}bKOcll|7k-jaA!cPsN&#V}iJ8OCT)P4*U3lGK(BlHv_Oo_;F4eu7;zOe)GOa|iM zcEZAj2w`%CKf;FMy2yt?wFv7ZE02v8V52p_&RD>e3f-TQ1>&-BS+js;7_sbCS6ly!yU-F<;5}doQ%C z1)Eq32~CVF|8TO4z%Ov@@QVbRm}=ewA@o^4eN$w#US*ZRy-;o9^uW$Iz*8@9go2Kr zba4+XG|19Fg5|M%hd+V83vwq^f**OK*JC$MK;zdB(@dqZ>apEnfq9H& z2>dGN4ywJ;pCv;{EaOi)KUuGRjBXPrrUHL(*%CB3FLeCy?oBk|GG0N2@cD%56n%f4F|3yTZ9jDI*7<4pmdTBy&n^+~NCcU? zy08wi4!j-79Ke{;thWV@gP4$$!s-3ndd0T8NrO(;p3YZPmR5eRnF-l2Iu|G9u=fT< z1ZL*V%)-_#jyFDa(NMYACo(?_@`31ImTIuLCGX$AJUG~jI*7%gTxRc{=-_(W!9_Z#;23)#)c^tS%uY_M|#jy4j}pn?<>Ee%;sWO%DvSOf#w`Lw9tMwF}R+9&@HM(sRw#UA=wK z!{_66*i!G_z73_P7b-`;OZ}RPdFoq<9>o*1y~Lq6I_~<|l0$a~dlGkpG)QV_cSFa^ zqY`^}Q=ZR#4J9KfFJ=#Q8=~98!8)MJscY9aZ7jqqXN{<^+&>(Plx3IDI~!P`Y>fSk z4O7GrYq3{K)=2>Klv_V$iBVI#B~SIFNBDwyU)biUERk+^etmT_@nG6jwf7|vGefBWQ zCk$bVdo@}xS%E+6#LCK&YmqemQS;dIMbc!y=%iNrud^Tg%1&Z2{DdcZXZ)B%CgN!8 zYLAZdgFdOwWwKX#%!Z8Ei4J{h>F!j)qg(MxWgU5?+Z7?E;-XyS(d7}pI-}-;UTQ*2 zTA#8;RKG@cXD4bR^Z{ZX`mN@x+bHC%&8>cIdt$55c*;Ie(Y_Jr!wTK>_^nNy)`d3m zw?}r5#^206y@>X!U?Ukf3uN>;8f^abI93qsUalc~(ttS^$N0vY1e(4n2LIP_|D&~e z5?$L+0=4NtpoCbLqV*&inllmLD{aTBve;mYFxG%!hKF3cMCGQ6OX`f8lN97b#Q8)b zs!sKCuR}o}xQ^;XKHJHZ--uY2R&8mHmL}ypr%m%M6NQBC$W{9pF%w{+x2phVLe*9s zrsRj0G|ZbItFOU4wO#A#-{5>aw2}&+?*t!N);@(ey4VOs)$p__Gt{%T^B74aB0h}98<;le z99w5*hP`H>rIJd*S?BW+C^L~M9bs-|Nw*!+Y>?u~HsOEN3I?%+AF|bwui12ePmwMp z8w$rxbW!m(*EP2^dCK-7BWwJd<*}NtGZ6i)t?utPL9o_^N&v8e`}`lkGg>=WN-3@%zM{|l01x{Zj0;5#^ck@hH6RMUN99VhWv zldcY8q}U+AwpgKkV~@`{&L3uQOdpXibXCYE+{LCfZpzvRY%T|;+ajC4gMSVKwD!Y1 z&kz4VwCZ-l_b93MApMSL#r#uQSf~Xj3kSWsK_w%;IOU!DCl7{P!$}pYiw|V_7pC4{ z=Cc2uspokmh$Q`YsGihcP`zg<@cGqTgZSGv_qu2S1=zqY2g|=StVqR{ctFTwp1Kf#>l5*HgVZ(0rxIxCT;J$Wm1&VT5$ftJar zr3R>uyWo++Cqio@HdP!UtT@M?ZgLfH-Ct1L5iA!tY*zrMDqAfhH)n4iZ5mCR~8>DFk0Lh$%zC-;v-uJ=Py{kt+e(VOs<^Y zcYc>($A)UH~vE4Afl!+;3vXSuHc&L9cf z^S7fY{`8AJyM!Z4#0l}deaN~3+U5mffFc$Euoy12vELGyGpLs3*Dy}2mV+B%sPw-d zw&w~yWED`cH}F5FHoroa{|B+p&a8bbNZ&<7zesVZ84Tb>PN+o&DMoNrt7qXRR-gW~ z5|coq7?8*bF|9EfD246(ZSwqisKPL!Hh&-+rl7sSsFWx_N_^%myHRK^`M(K2EB>)m z+9AiP{%xs*ip(!y2+cr+tylL(d3d&8&6yS~W-8Azs=eGNR#T9%eW+{lb$4j#g`2y3 z8i{s+TYWtmp6?NL6$%su(h>tt>NGUwDgO7E~BS$^gn! z(q=M+e`r|pK<2hB60^~IT3V4!h`N25nO^^%=Y9vV3`oW}&=QlEnN!=@y{HMuB&q;L zqlJa1%FMbL=sagGEQa8736_w2z)}3PRwBqb5TP4NgGy6Tj&P$Z#49@=y3(vWkyJ{Q zKo6=Q{|vYL%B@!8gB7Z(eUp-armxVk-&>&aSxR*l9rhDGvX zvqkZnYQ|HmyC&MsFQi^$*I!xi3tZ)X%gna>B8_+(8zG86RXHBe$A89d7nBy9I+@DC z>oVD)qof{fi@1r$-&pvfTjOavyv4gwlh@pRXqXSl%fsDW<{{-wkNcWFCz-`daqw%t zPJArLMU`FG?J0ls)_JI2G1D}DcD|30E1{S*kGvNx)`FE={zH(iypx88CUIq&yd`1d zI$t)4ys2{xQEl1fhdDseG;Hfoar08FaK5vnJNEHbLbZ}hye53fGwiNaciuOlFXVai}Ci3uCJi!y%dca^AwM}U1WI~m=!m5^f!sUZ|20tvcE7?B1Xr+F|bF+ z^lV}hlMo&Tx2VxHEQTyvar2WibB32Bs}TGwZq$>b7f(3)&H<<9>yuROZ4~S z;wpE1(+>I>8AJ%__(3cUt*@0!*30!^3f#^0;>s;eHhmhjCY@V+^0@$)DDd%5EXm4MezT{ohjs%N_cxG>_l{mKXBSa~o)lNZ|Y^eHA) zsFYQI6(KrNq}45dxRk?A&zzcMmzu_7J0GZjr=Q(;xTBD^EC$W9wSlId`IuHZC0X>! zY?=bUA#|gC61n(=t@GosB-odKuL6zO`cJpV|8Cq$EQ9b1=;3-)4TU9ym^fVkY*{JJ zDFm~2jGG1?{iqeN*^v~bz})2kL4EN$BTM=zJ02ms)w6+0SnlthqI+(=g7EfPZSGTo3`b(;3`ZS-#6iEv!I$b?{aN$$ zqc;?9P?qAy&~c$rPE@jiXa2WZ2!i0SV@Q=>@h3jr<+e-3zl zSgBI^42vyt!l0#$m?S`BL;#c<5%Cec5G~Xd5s?laH5i(Xh)7NGqvQE{v%e(qgKqQZ z)Ya6K-`v!k3z}Pn{J&6;kwI?+P;s#HD>#15H^_j3wXldFiWoyQajP&U5k{CV*RdML zP(_API`NR3YtC10f1a^d=yg9UzB@DIDgy-mJu%e--@`G_PeGo68M{`?cYD?!X;)EP zE+g+xuc;rwrJ?p3bJmKza5_p6J9Tn4KgEk;miO0`@NmZ{b6n?44 zetg?`FWMcdpik4V|0QYTzbQshW8{HcCsFDVBr@nwllLH6q)=BS>}p~t)mv;@2pmj1 z=qwPBN|KA)-E2Da()d-xKtNS7l{Z5gTcwdk&;B7>&ouR(=j~k=)wlEB+tQV`1KAee zt#YsHW&YE%ymtemO~QMFu-E+>(;Ag%3>^mB$Fphv>oMX|7EAAn@BT(lho8v-CaeGQ z3<)G=f+&rNz0|lSCln&p$4@gwR!y*=bKaQLkl&sYqQvhTE>4lbs`eL50s$JfaJuk) zZ$WC23Gtn9g?B?~-0t90W{$R?sVyQ}daD!-)AS|dSQB^Lid`lZl_3~My|=)SVACM% z8Lqm&4UD@G#KDOB4`){&>roChY;f6t@yCV(%0hum{+}|@=yR$SJT>TjF$E{Dqag$+HFjS;`lv-aCbUX{)}HpL6T9MKYFWHeNqe(L>PI z{5Irj_rb*KDVWhsc(w6kUcy=xUcG*s2n4Qi9QoTvP4V5XutU7QXxH+6f%Rki4xB>d zclvXD_Am8(UR=dP?(08TzaLn3)Px~K4xEo~6}2rF*hRF>%kRo(TFqC#m-bmIz*S;S zjaG1&n$EdwLvNcOY>l$G;#keWlJ)$~a6SUx8N9AS+K(M#Uc5(_tA9UHbui3aQx2*d zuHj#xNsP3k2SKe}5O`4T->L}*+Z7@~^I^Y}=Qrwj6XZ}xI;EsloJJN?M|HL`1qnOq zhJZlz`CV7dSTJyIhCq=aXHBeT{hZ^K!}l0nZH&F>X_m8>8a@Q& zD*%y(O76*zgXWLrDW?(go<%>;PiAb0~d@oBT-N z;-e}JmOls2${`Z&+1RP!YaFq|l7WFcSV;}%RatndlhmwKm(yfBfy1JzbPn8vxuz4=cQ?SRH0p4Z zv-=e>VPg7RJ#jd-Nm3;&j4mZ2?Nn580_UJEmcHp>-oEM4v?`?!E!@MRr$>!?`Q z%daUDxS59XB;w_RqVV;jh<`b$eq36D3{JgNQ1&V$#{c|w{)twSNJ9ogZ|MLSP_zOh z9B6G7($l9maOnpw-;)fO#>nGBx6%7=LH?WB$mysPi3m0I5;RV2wE~MbNW{Y^JlTN$ zT~*jxm2*LmlfRZRUN1BQh%pKWvpFsfbhUGYV693U>u}vb%hHgEAkm*7+se0hYuTsQ z5&_h?23A;kM6OEaW2|QhqB*5QBhGyl;~R<)+s61w+``E7t1e0qdmZAu6*@XEU(P4k zmIgBpNpCPGAyYjcnvj;FrI(3TosCS{jsbff=*Ij(C)=>$Q0kw$X1jD_;;uZ{o@HpN z8CR09#1ima)uVVFCZQ(yL)aV%PZ-PwyL2>DtHE#a)c+vDbm8agP?6@IfqOjL8AF)x z1DWB|l72fq)n3QzCcN!7MoV%r7FRY?a>~ZVf(3U7aOD&*>?)WbNo_-;$1zBL)(-Dn z=tkXOPSu1z1JF3RO)U5Yc%VaGq13x* z1Z1qg-SR)vjY4-e0)z>1bYKh}@$}z6VP%d}FkGl~Nn=`1Pnv~}{;Rk0h?Y2vjNd`H ziQJ0JCf`})Vt^%@A-ZsC&objv6VjlsBi|DT2cX9PbIjpJCI24Uy!Sr@iSarGwUis$bJ1f8?bQ#F6A?Z~aTZu&A)5D_Ep`lAS?jiUCug0%P^ z1$b4YzEZ)^*H_J(p)_C0EcwnCb4ybP7N#mKsa&bAMB9}a*WB1zIoI@_hx+a#(&LK* zRsR~Q2@n*fAd_N40cik6s6zz+3F?Cj1VLaq>|vJyb9B6{l{`h={FSsnCUVHT5Alj+ z{;G3)BBXfHBiz%uqwe!1B^-mjkVk*MkbIUrye9nS97|7?70D!s zmwm{2y6e1-)k68?LPipz^XN-;%~T=sm1BIhC`g@tLwvyNo)L$s#JtxxvZAL%9<2BX zqk*at9cI@f4u!g;>}uP&>>|wvLn5QsywUDWr)OF3)wMxql_Y}yA8ltH6<4}#d$e#1 z?(XjH65N8jy95aktOyVsf`!6@yE`Gc1$T#_3GVLjD(OCby8HG!_uety`;##kP^0$V z-(G93xqh?lft{jA$v2NFt4945L%lq<=HQ?&IVJU#13)wbFg8~6%|$3-9=SQAl(V+B z?aMOcl|kc#Q-dBc<(po;ywLy(u)5qzZbCO{BS7Ea%WSJiwAZ4 zPQ!pIM)M_-rM6p`%>lnN>Iv5Pg#)WjEt6R=X<}1;biSrEy}4>^fSpJB_NGZiyeV9b z95bU?`zvg?Wmg0D4;talU(e;ZgF@~l5>#yYJaKa5I#I$by9;cdjl?;6kxo>C11^j96FOv-IDX^; zw#URS=tc@zOb;?0QCPr2mDV&442Wd0XapvC^;4-`Dip0m)h57 z*E2uKufNj)fxbMy>)8}3;Q2Z@*UwuFAR0@Yq-&6xjG3OE3fhB<@~qe&>v_>CWYW>Wv=*$_1r8BLIfKjRneIG*_c4+S*QdA^WDQ89i0&2Dl$~HroMz( zsZ3-+xIG?$Qm;WS=BT(ls4V63!$S&>rdHO^>;cxR2P1nX<+u-ZhwmMm4yoqLu0vPK zYs}}J&Aw+FI~o&i+Jz1Y$WVb$B@u$mV*c{SsI~h zF8{p^1=$K!tB7t#4kDjJq?7=HnTC(W-?KeXFtHECyxsB1cH#dN9hR^FLv!z#gx0Z( zlm~Y2ef_t4kEF`r9XLSjWqlGafD(@{(BzdW9tW8^Hl~aa#q>rO*mQTGs*VoooI@l7 z{=6V__!RWf;0qG=2lbYR(}IhipN;qMs=jMO=QKa=-)8zE0N=7wC7dH^-`17MDW! zC%w|Cu+h+QlAF_EG4J@~kot&w&wE$q7K&$O+0yH(pR-xzPLlEV2hbuJp(aE{s=Pq{ zeIR)t<{Rbd`&Ko3>6^&$f%=F`-@zr;6yWnMagkuBUWKvnl`ql=EL9hS(9U=e`& zkNg()8n zrty%MSlef6H?tG-SOE`T)yt%KiaMnMhurlPajWR2P|Ez1SqR-=q*5xZoEUeIs~jXW zg7IOk<|oX;t1{jx`@_k8L^ev$Q0x{qag^X`H|Ww_*+=0bwoaMNG-b$5yeUf``gqx3 z+a>R^edlS|k-7S{tDB!Kf#thT@|?FZ=9`R1X)5Co1p-Cce_xP->Z}VIhm> z(i_VPb0#^ZAstQu&w1vJQ?bmvj2ENyeCGWhV;ZZ`W>x&3GR_6@+upa~7K~5c*`EUa zxkQb}ZXH=xG4?O{22m{i1DV@*oo=J`Z=1>=p6Hrq`d;<`e()MBz;?=@;w;^6J8w8Kv`Ne&dUQGH&F-0nPC?v+wUngn_s&gzf zJ3&rC`5DZ!QLJPU!$LX($+);8E;_F)+W7lV5iel+@nb3Z&un0`FYArv7LT{AYTB+a zMxF34@8HI}sc2=C z((2eDF5%vs>E5dbtti&9sOh=%r_%?X=_f2ZA(Szcs>;9&7G6$JrQ zlY$_X$6N0;4xvnl6bv{oQIi-Y$G1hP2!lD`HR{Fiu-;EXWftX#H;6j4)DB&9BTO3t z{*6)Emam7Rxp34OJ>(Kujl0wl<>oQ_&}=Q#GI0~41m-^md!w2wf51sNU~;jcInS31 zjMYIUO?<A4&QqtQh63LVgLkx#)(?@NnB@^*P)0g*M9U(%Y z!~#ED)Fvpi4}&>G#eOt&%+nJxnud-#sH!aD^gY5br73)6YZURA#@C32>4%wzRFS8N{~em{6B^G z{qGG2SQ zPBzGa1cnQU4lc|xEKbHohPc?Ic!YO1n}hnl{diI4G8}1X69t4Mp06VMrAA-T(&)_fdA6MZSwJI?adpm*sYfw z`m9vdbi&xw^U*L}YGvd4tU(*T=ff$oS~+@PfENW2fcL~Cc15BB2%*)4*90>?GDCY% ztyu)#6g@M}t(Om8r#CPOY}Oqyf@%lG5+AeZJcM5~t=?Ei2=^;CQpQ~=7U8hBwCLNn zn`z?Ai!8~vT{ic|lxZM6z1AL#x9*EL7c3d;Z{PLvbOs8pQXJjCKv+UK+$u9$v2o1V zkM#xCa2D6gE1o{Zq;1E?e2U&LZH)tZJf)56736)yQ5#}>uDy5iwE3X__#=B7t5$bz zg><~7LHc|m9X&etYIcTS5mL+Xl_txr3d3RA!9)Eauq7zF<$}CA$&m;J<4s7kTKlO|mkgUn}EE$e|5O{s!w#K3omo0Dnj> z4miX@uOXVHdtr+Q^7+H1cT$I=dk;+U@_s1=5dTsNymd@splRr0^_0jI&gIu2*&2PG=JzDQZ6PausAw5}Xr$e8OKXeFVelkGH^~+^ew-=kE8o%^D;++BQjwUX z4rcfb(b*+Hx)Kx})p=a$HN*86^QJ1m+5?FQ^S52GYuc7PUdkjQ%&ePc!Yd2Lhml24 z=f)7fy`B|CJ0LGZ$AN!o7%TNz1^ce~*10{Zn|sKcF2)C&CN+lAq=Forn9XFrvz3xL zGo0wR^DWo_P#(0!`6Kx4KtH#4dy5Vq;FwV?QkCx=r;vlY2esTmtgIEm?pL=g&2caQ zU6vu9M^0xr91ov2yA8R-Hunojw|;H^z;s`@nKTJQwp7dpjK@x!Jf z2I;wRq`KniYbK;j%AnZmZ?rj zX7Oy&SZ%2dImFtJfLZTiBW*A}pwEmbaCI#y*(&z^0g0`JHpDl#^MIj>kZ=-3NFahc0M`S{M_? zUHQ$5z%^7tz}RIX#)7h#P+lZl{9UE`XWv+8t+g-sBmfznLlc6CU%_Gkq#4*E#j-)LVgPcW*=Im3PJk^P zIQf84mRVlr3_;Ov@e|+6SZ{8!G&Eg5Dj*HM(wKE6-iHw2$OqzDEm+CMJl9v_|`X9|E0KJiBYCD}^-)p?1;Q;P} zQZ?;8@5P4P$xC=)uL@DQ^m(SQ1!NT95LouwZl8OPkRMeu0=7m)0&ZcVs>2;u(+YMQ zH27&4h}Qrs>YqvO|2P;h8po))&%Jj$irrY10d& z(_)b_zjMMpIgNflFEl%dPp7tMCSgy;qiT|5uGY!)@H2zwiF`m+eW3vTrxSu@v4?>c zq>u_A1?nik0?98Z#I?}bC3*Cj^y_RR=}7eElstWOb!gJUqqq9vQ($m~4wNd5E@+G% z(1i4NE{*Ipc+w8!aH*HsT{s=AeK=W_cl4;&$t1YHi&8?rpV1^MWfuS5m z-_VB1Pi-3KR4+S;`%Du(eZX-~vssv~UBzE=(0q9#x{4yxcqE?()S0C%BlhU+%!1mF zX$D2hpVwKn_qilUx6xByF8FB4+ZjL)+n@AFBaeMUkZcPX@1X-}469sOn_7^&+_2o3 z15F%1z-ZVfl78B36Y{%mXqm3$fBS$))DG7Mpn1~G4@id|k5o~B)4LpgH!s5QDJFAA_kZ6{+*q ze45`cjCd|r{jm6fJy*gKR{Nm?ib|Z+iZdQ|D(>8eS_}0|KBz{!<_P?{~|u z^pRf_prN-&M4(4L1awdwDr5-O+6yVgAJUIc$An~NZ`$_`O=pRPK#XXRQNLQ;vqiBO z&|Ta=fjIsl97P4>P=-X%SRM~M`rG1fI386csEYNUMk0S7-(d&?FhMA62<^ZAuk&av z8weEiPoeN^e+y+<3xWm#4>}I(o>!l}*^GYJS)%22-Y~{K-}ya0y?Wle*2m3TP@31U z20lBr3Xd-#`|)5p;5|jo2OJ13>sbR|wv!xu{Yc9ysM*4Pm%;gHcel^`7E{an^>9mD zl658X_(+OaV>R^5JmiAjUqie})?m%70J0qdo1{Nzt?y})0^aOEzQ5+`Agw-R%wN+u zcI|#ePjHEs_{Z>rlZVsN-10Xk&))+u{wIK9EHYkxc1rGi@X(2sl{wl}2jn6TO$78# z#>3;oBRd@k`&B*&gQLcJ05UGVKRw>W(2_yI1$rC3COq#HKR{3VibbV+Y@p!b;qaO4 zQE4HYF%ILnWiiu;rNV|u2k5}cQOk~i8KRG}^CTg+ZRcYi@b zAw%I0BlkRrfxd=8W55+bV{Jp~W`IH;U@ZxP*x2Yf{tPDm`9&@Qt&c=OI6<(#fMkER z7yq|2v%iI_{9pG0U_j*G5lKOJHIRsu5PX%LB+Ux{VrF#{*|5;DS3y)m^Fnt+S_R8n zW#xca$)PFXKWzPo$kfo)0qK!LTmBMncr8t1^T1cm{*NoiZ)s}9Z*Ivqqb{t_t%~J0 z6H%`L$BX+`@{uk%xj~}3h+Cab0_i=nA;V?;+iJA)$=ErpW?31y=a97AG|7o&AjJ~| zZYz8E^j$T4ATH|m)@HhoO8+bF!zwM%(lEuS>ZGC55K75+0wDf|0S;r6S(~cH8DF7A zV>~<7wCe*yHOztNkZZ!VyIq7;xxuAc$NsIWbhjP()bs(%8=KN$Yy$3u-=Qd`5y?;E%FmTfztGvtP!cE;jauoG{9uaboUN5@ z99EYz#AKyLPBQ~X8?XH;DIWB?0g@C*z>WO{9jMw}$1a{zOVzw@{Cc}b&kiP&)vf_hf*-@ zjTLX|;1PHAhk}_x8fm8Ta?S?R8G!Di<@; zfP$vr2RhcLVhdE^!($`ogozh3W?EBwm!v$p2*M>P@?xiqCD;>hob#xe9x6kzaHtg$ z&2kcD8zLrA8Cm4xs79o^H-KP(QzH?hP@t+1^O)v=$&HR2|J+WM!eO#rkIk#$q@+A1 z`1@=&p9?o%)-)gxNqChUFSY(v@mqbX`vgyWNS{Ng>Sh_UYb7k73E6|Ea5GQLBn%%= ztmt_={CKyL> z0`Rv)n1DTO<8fbSNAR=oB+xj(>Hvw!jgcmRetXlmkMKgN{6Utaq%ski*+Z|Qf8zQ= zTYGFE66G_{Q5(qf?Eo%f{l0Ity<9t#qizXDB}iC9X+HjO}xywR8_f%wcfe? zA$0lm>26S%w!-C7C z>T{<<*^xmwNWNixudT$PVqZh+a&@dt*?1vbSbOzYz>8OwfKYA-D>Z?>qM?;KAe*Mu zWoF!~vpMGEg#;`!L%qAwJod-Y4XEa>#bTLD@EW)FDdWiDxb}qG*HR1Niazckf>g)M z^^XQX79BB1yO9C{xxMa$!^S~nBc>nD{jhP#yU}|iBlPyFzPn_n0x8`UaW?>u=#S$R z#mRQ4tf@~+)nqR_WlAt+>%ClqqXUV)H_pHG+@z|*Jgd1~xz`5UrGq2Ho zaJ(j3!>jKN9nH6hnb1=t><9mP@>8_3Kx8dF5uu4^X*3L*%Dh)%yK1T$1l>e zDw^LNQiNN1^jrpd4(|H3Vkp9m4!)m{)Rdc7dc@;LD8RKSfX8WdFi3yhI{0Dq0B%>9 zpx0v6*Z6>0))@#fJxVCni!uz~N@jq*=?_8Y-Jx@J=Fk2iR}9F-R|Kl8!Cf?L7u_&C zd|Fm;y$;=;UV7P9TEBW--~aUKy1;Gw4)&wi)}7eMC+M8)PQ>%;WBVvLEz;}d%=Al7 zW7pJb;aEq}>m~R5oQRD_+_!sIyt=bTyttLM;3;S1*fem-`19-+qy&vV_7b~(cgJY$*tW5#06Wopg^PGX^OauAVBc~Tr+p7jk|cm}EZB44g- z?-()Y_#srbo*)P%Sj;+XP*A|5`lidBeLDZd$?tZBik9h)b|Hd*uEa$PyrO)B7qr8r zE?Ll+8}YEO_48EVo=YQC;HK7}+dF103&bA#vT`m7=Tp`QywK=4c%z0DXEOeNt}GN| zvoGnB7u9RJ>Nx9YW&l9Hz*dhkf?~*FZ-q|dX)OOzGrBmn&<=yNWHA7?#LCU<`^5|} z8|*l-FU_XQ+}ADBi#b~a0+i7XYUU*)Z^EU!V~^jG8C|pttzf>J+!|o@SR1{Wa{z58wk#9{it}GBA;{fw( zKf1QGKg)Vu5>P?93w|M(_PpdXWOKgl3<>HM$rdsG$M4lgx$w~l3467hR)p)dY8T<5 z=@h()B8)Q!p83y;K&!5~%W;zutx?5?$zJ*dFP#_C*AX<{FkZ7fSCgG~^QN-INo+yp zU!xr~2-s*~6?6F*qTMw_ViVMX_$VdC`Jq~hkKvXokoCD@0RrAMD{LLXN$$=rIcgV=M^BMo@cB@SMPMqHGJ^FhT6ZJ5_rWdhSHX zfyXVeASFDqCn!@Ms*kGN_iGjg`}b}S z?Ik=N=%5i612i}LdyiVEHq8pM%7^`bBd&hNrQV`W%KJ@T{qro2vQ$nT$Vq}G`kQIYXcdvc(U3S(V z4&f+1j}e(!qRw+3yI18xrafg#t0-I@ix{_yQr37q#}`sxrIF4qZA;-Sd9u$O&uKEP zitd^}`XBmSUVQ-JE(IN=-!=I^KOCh#Dmq=>Gak<_F^-g1Kfi4pCE;u%I52g3z*jGg zIcTF6yS@+uYO+f#U)Rj<#CCs2fb({)6iKAn_p4gV%Kl!u3mY0>1;%j}t+uauFZ;*7 z6>AWVMd2XqSg>4-xfi< ziUhd5<=^zvyqCCk1UeveV-#vo`v*8!R49seGIsvjycY$but%Rk&J5_-Aj@<(Og`f^ z_`i-#Qp;|lN`Bh%<(N6xh@!{DaWemABE}#shinF2Qo;V0h}{3SKV*-PQ&0p`iD!QI zRQ`O|LsEfGhvA8UpP=(}1LiYR-erG4$c`s2veA3B)G6BV615FeL7+eO#g56i*OD63 z^aO^@=#%c0{8f-mYzp{$?l}l~M0=h)9`n+I!x4R~7=5~b_P*~8wePTd)|x#!zB7i_ z^4Zai7VZ~lJMc<-;C^-x^QbT>u4^Y%L-P1OR=-birQ+oyJc6?$W1XcxA7BPnuNh*u zV9h@MbaQP)^&}3rTo@$hf&)|#N_604&jYY%|Hud`?3z9kgEj-DJs}7vLz@S^BMmcD zpL(I-Chv=>5P&cEAKjSmq~)FRjnthW|Ey4Of!~muEmycg(gV527E(BLqn0Sait(;2B*^F|+VJkoys0AsHd45rYT7!@YMC zuAojmD9m5fv&^>^StFpMU<6#?*stiu8JwjO)sjG1V6dKer&7a`S#_NfQlRD+o!x9~ zoFrQgTgnBcWI2!Kk4|%8AKWZmk8{2dBzJ%aK>`!+vm* zD?Im1*pyHXT(uR&iUTl`90L=azfE0L2+;>}YWS#3wpE`f6J8%Bd8=*G{Mr9zN7O}1 z1U3(}^uZGijpdNw>*4amgd3*`^!R4s)0$ZKHcplikxkLJ!A#!AIngT-r}pJDUL&sQ zg-oAUYo*4V`cLQ9X-{Vc-EhX`Kp##N|FW^kcEyM{)1(eCF89Fh@y@o}$44xi7UV@1 zF$aQ&G!q|4JN#x>SWq~fE8sQ9Vrg?vN5&=qVJ;V%U<<)%#Hv8qJ#HEsQhG+eKM@bh zz9NOnnj$6L7rMn?+~^%)U}q#Us~4@m7S-z(bHa&-|lA|us1}gxRiD&9a2f3sjIUvnTnr`U-H3zPf5h)SU82a zff;#~#JJNF9V)PK2I~cssCY^uLZzJ*m&UJ;<1BI{y0O?RF!f^MPR_jA)_}}#Loq8< z6GG*dsn1I~>VN)Qk9K!-)AIywrh4JAfM5?d_+H1$SjL%d@Slk^8qCV4ORieLIjr#b z-k_sRQ-NhkC<4%?moRX)<%5u5IdI|?m@(8&x5~;dFN>`V)rnV|4;AC>0r6F|F z#hE#FE^^*B<&i!b)K@UXhp`lrDII>xl{=q}(BQO|I#ahd;tf4#Kiee*i|z6jILhaP zU{%jM;)He2l?eFI#Q1o$cP4{7f8N?qJGtxLI-K9S&9r@C6|` zPYW56K9NAD~&F3gm||&H0}tAplIiF|KhhP2YvXF`~1g}JiZUZ2RJBu!2+pg1h0X~y=Q z8mU#QYO)AYpyHD}_nYbFIcFM&g_jEV&CSgD>}v;gv*TfM0}UZkn|K@)aYJ+}&;7DA z(?b#zA<+QQ9I4tx**7%GVSSU1<@l_&Sl0w)qxKb9;_#o$^eJJbv9(P_3SnInPJX;@w^7ThDZOWQty9nJo-U{(~E0a zu=#tjC-|Rc=`4R`od7wZ|Cx2d7i$H#VIV6ZKI`gF7zA6xUXsF#N=8VD!MRDsvv2Y> z4LW-4XL#DfdjuO|ObKdE)d?w-ry%aoLp1)vW6?U9pw-jkZ^(s3n@6L+tz_TS)X>r-V2GbgI`-Hf4sJSt-V5$iCYzY z4{!}JnGrxn|MX`!42sa}OmYL5$y_9?_4m7SzbB>VAV9J)$^W(zD?Z2Rmzpe$Y_6kW z5Swa{nxGS0vDS&P5>H;t(J---Wf@@VE&=CA zppY>`OsRsQaoVwZiBUf=-I2uNIz!7uI9cmI(&4tZY@AYT6abu38uUtfXj`Y?m9vc;i)2?E zI>4V-M1JO!aFXZX>ViJZqx}DjDft<_4ux(B>fnIKN;-wd!x$$<9?h34PE18|6B<5% zC|Us7UjitJi#wlCoF|R)CDpGK&RP$VRt{V`EJ^#nk&%r6TtVOHVYz_*&)Vx;3q&?& zs6~;~0m*Q3*n*Ul(43OLVE`A#pire_R{%cIwOzm3sM>1SqtJE9GTcKky#9vOK5rLN z*#ov|OLkO76a5j^Z zwNtY)L)8gIou2#iU7{p3{&^&m!tx)=9rE-=h}k><);f6qnZKNml9QDaO-Hp8MynKY`bQkSTuEHL|8Ea6EaoBu zR%9xoQE-F=S}WEd&q5v2tvRpb0CU@W?`!@tG_tnfwGr#rlNOE+*f5K)pY1Z2| z1L~z}XFo@&+96f~75E)dl2;wy@Ui2)@tq;~yd#=A`8A>=;yrdFbXD~vFU*tRW1;cl zI)Owbr%R<`pqwC-GW3H`mJHOOK5VcAa}!Emj~a{OW;YgE^tp?&{KsrRln0JAhDdbf z5jLdH%_AsEZcgyLl3}Ij&<&;I+vKoH8;7@Bn|R(8U3vvgg%owOKsoa8#0%8^mb41=_u zlo)fA0_Q=;A`SDwHmBzHkpf@_*Tnnh(5Y(L0ZxRsDlzCIj%-s0;jCX#>-W)ZKXjK| zq5kz;h98Pt2PyC&{=?+?AF$5&px23z_@Ed|81%+DKExN0L_eJ=NMerP^uZ%B|35}z zmRwwX7Q7(Hdsv*mZx(`CNq;mG|B!*{;vOS6I>4%|bP8?rq7Qhos1UnI= zc=@o@kVi2y(Rib(C)0)PLJ|dpJF1+348TbCqBcJ#zkn2J8k13;n_;Q_ei?@Mdx8 zlNDxts=lX|y^KJ`tf&ES9-_3Jxs+6j#I&Z}^F%Rs=Gbi1mT#}C<^Ypv+N%RUA`sg-?CJf}f^m!wO1IZ574sR6#6G{Zi_VH&{yJH7 zG%2iN;%+{dk^@owq00twbJnT(P+wK@IJbc7W24d0HiMMgr)6DWbL$hj1Jvop<*v;4 z8x8#cwI_MZLX%*SswB%3Idxo1 zcNBQ2hQ{TQoVpfz11KZg#Bh3W=QZnOD=aPT&y(xGY6G;>0-~BHV9Ov z#=YLPS{cn{aJ7I<{!Yo@cG;^K&m*84R^jIx^3v^ttGgc)qZ^GS7407Cbo2?{NsIY0 z&4=7WnYa@RCP(SKnyKy4kV55LOWaIB!M8`=zKSsKq3exK_2SgznCV-R^;{w=@NEfc zhQnA(P1^Psp1_d;-@d5X4M&wCB{LyCFrHmB{;2D$g42cBq%8mVLBkXD(ho?%IC6PA zg-P4@Hyuz8)7PXg!6c0Yh{gC+5`j)V)gRqMTD%@8We)3Pd=#rzDuqde@cN0b1zI^q z@CT}N)Hm)_0H(y0jRi%PRCQ|S=vo#6q!XH~87DIhyIPuDiMd)KyDfKvWnEGJ@k(p+ z_0b1#u;`-bm+sN?mF}bK^MiYlKp#o=LWeEaFQR;AhQFI%e1fS;v4S#p$cAPZ`Q zBWWOn%c+Pa)X|B5Os+CnzhPSwvbfE!WzQbd*Wxt(Ys@i{pc!2yhl!NDxvV=N@%|2+qB7 zbqgnkz{PsW;l64U2<)_RCWP*wo1Wc5IC>q&@F+L-=8_RPi>3E3Maz4#l$40qtCRtjHQ?aga$SL9AU3$T;pwKam;ZAJu)gn;#g8Hzbn{VY$!s57t7kA@rQ3&=@d(~&Rtz2E(Ca>*dP(6D z&i-A3GgC|BKBG(352Yt>grwk&+2%V~WMZo^eYqvLDS+CP_jFIBuQIKW$x~WbO`5FQ(P;~=BU&!`$}7-CL)cVe6&5-3V~iB2x^;Wg%_gjZ@xkj*PN(i z0JOeyB!=V&g4oPsV=u{3p##jCFUdpjLaW*010#m{qRT_YvNfd)tmN|mm5ca@Wk^e+ z=xjXekJPl{XC!pI?vS!%=*758q5ukn-{M6T?+};lVQi7$H6ljQ>9P-06cgjb!*M7BLCa5<;(Ip^+No#FFL^Th;H^T zDl5C=GoVJ-Pp&>Du`A~f+U^oF-edRdg0@$S(2O+Qwa#Bv8J{pi)(av&u2)y=R6Wop`#8zrE@5i))$&y?IR41gDGA zg;zm>(?tz_rHdvzXW2m40iAXZ9=5)|5Fi-d{Bo+?i0Oa5>1e0wsp+JFJrb1HsrQ9IxkHi1f*gM#sNnlxRp3Rz)0NiEny+@> z%TLZzqo3sr@{UE_ySA^msf=~!bDHq3f^%fkz)7SSLbEcaR`Pdx7YW(94-m_b-euc1 z^qZ#U%dRU3o?y?3bS2d@HQ_nyBIfAhS4A~USo*Vs;-Xvzo^9oc|t z1!*8W`>$)rkK#jrTLo5VUGV(M7wv?)1PY)X?MFT!JlI}2sAwE9UeLT@<-Ma_b?dr& zGGH+CrTExvTAd^I0cxUw8Y^6H+z8dag7kQP=kuCV%;1{D2%dY_Qh08B?P!Zw@8e-# z1mGDjcK)j0!tPqtSD`H#$#~^7MITrf&SMl{P{nWa^z3~E)MdCG$GWNah{^G{+-?Uh zQ6-e*6y^CkU!zRUSwGfK`TNEc7I?6LN@fZ_y&lVv9a%VbTc0mR3MJiDb=AcBn0PGn z6>5G;WbE8_6Z<+NsqeEaikkAgzcuNbPQNhk8h$MnG;_ zywF~M>qSu-5c-=y`xzYVfuM&WXR=7j;Fr%@YRS<7?Fb2JDi4)|lWi()g{sTFCG@iuCA|WM@?qRQewB$Z@H4;QH=NR8`^LTMM^yubw5*M~_imA8(yXF}K{y z#udvKWbpS{=u0x^-)-}}&+Z?8yQ@3xERs|~Y@ zYGG`yY5+qhq^((pLY2OH2nb%mx0*c}u}m^qg9Aq0nXy5ha#NSRgx#qM-$>Z8`0sR< z2=Fq9Hf_^II$Q0vm_fP7(~r8@R;SBvQX?8CL(+4f{{&C^*%81vwy!{fr|%noL|s~# znVIo%nVGvGqh4L0j4OadqfwE6u8#lN>sQOc{+|Y!;NAd%r5|j3{}or2u@8g~OZVQi|VF z?|A>@#s-;!;b%pwAdeMvGJRObKeLUx7_5JSX0U&f>Du#@}5BhG)L zrm&+pRq?`>Tv~Oc5GIemfOoygF#|Vve{CPzodDtvx*{HgFyn7VSsL>L0A(V`PfQxM_%-lN^w|jc;;MQa9 z@uzjadYA>>LLOmH36BzA`v*vi?*uF-f@^0l`Xj*fAjBT!TWo*~8VztM_q@*kdAZSL z7W3+of2K*Kwx}IQXpb`Ku4CQT>3qF+9ol|lMHyFG<+w{;(LIkGBF*$=J*1zFggzjy%d5SE&ivulmoaTSs8gv3Um6-ftGBEeeFXcCRKJv zwJSmP=~2V zdG8#2$d*X@X>2l?`$e*v4t`E^QILgRS5*DNCqowil6f#yA|XSNLp5oOtsC zjP5&IO=o_-PqbtM%j+%BiVmj9@4*@wcWxip&_g}R{zBd)`UAkOVE_uvcW}w!-=WSX&G}&8yDmHFxgr&K* zkqH)z>lHgn9}3Wb=w)9+ReWbWpv*uZh|2M}5rQQIWlijVyys@;oww=r2%p1dcl>PL z=r?lgr-!I`1?1&i#C%~4={_!>WsV#Rg{eCXvm*;v*U>{v4-X>mK_QU(XY)3@rKPDQ zyXAi|Z+G!rR)>HEjgF=n&2=I=+l2$uRpQi9s;4UpiRk^+8muAWrsyXye(sx$A^)#U=PF|!4e_) zU-^=-6siiK>=JZL0yQ|gQD|3;|l8)0nkZ@{6ExemG$u(`#WAlb6L^ zOc2G)zZ1=+wUE0ys0RQ3;D5Jm*PQ@=B^uxp{+HD3JWiMFt z^UuqnQlo-4y1$A@T{@&Pi@MW;%Jt4eC7P&nNwDjLOPcQndi!cXw)$Ws|$Y5dI6}0f%Chl)S{n$s3gt){wt{CYb7r1-d&VSZ&i6P+y zbIvdfnOT~3o)}cV-cli&(q0a#^ua859RD10OW&gua0mtsg{jmJC|l(L@9t%U<4?R= z*7%mDDeK8dg5#T}XCfo;RSQI3;!I=qgzIJ)^f$=HshBjB4iJBynIun#U2ePy!SVde zW-0Y47&DI5IDtD!(c%Lv1~#g}m1Tk)oEy!wwR(++Ax{cQ{SKWEFAoCcMwQo%7H;TX zK%t=|NvC7>p|$UY0#-hQ>oKa184`~}b#9Is zG)6UfR;6KXb>9t*-2s75^lRLzz6f@^7u-hS;ds=*92rdP%dz3s=7WRL(a{dS)osxA zu?QL@?RLiF%EG6V<*^Jm9yY$uhN{-r;-=;j6tvs~9RBXXK4atL+<_7_Gba~C6Fs#} z+EZIbN_Jj6rzb4&V-~9=*z-C?W>?NP&Yst8x!s|`F$8lqiZ{vP-$O1AxtKVx9%(;o zhPIglyS_%jyO0tKIDNkFnaEXq4${vR=O&0Qov_h}mYI;O0e*mwtT;7Ze!dlQ^3PW) zkmfu~LA1Pgb$LisJM2z(gpQDXj)2p{K5)Dxx)0D72|YGOOjC4P05+nb5n^s;Km2IJ zi_E%6(xVVn^`2S^%JZ(6tff`jX3r$mqg(n0wECp1zOXx ztLWlvX*7jkOn$^MF{9NsW53*^Td4i5o1N&0n+)W8Yf>wKbXTJoG}m`NW;-g<1f*rKr26(n&YY8C_Zi zpm5}vym_kUrPC)xb+We=J2@u@g%9n*1t9A@eA<5)L=;RyIVQwDe?@LZ_ z$$Q7gCKZO(_4!{`Y}LQ~AI9D~Dz2v47lwpj2?Pli+y-Z`Ai-T`a1R6v?rs4F3mzN> zhXi+r;1b;3C3tWN!R6aL&wIXe*SUAyb^l;7FtvME{kpolx~jUmr{`O-qOx_(670Pz z`aYJ`A0f5b4!PNkIYTH$8@#}ow0@0v$mR9rXk^hx2+ZPkLB}O1hhErm+V0Kv!tYld zw{M9zG4dZ$N}SULy$#CbQ@+m3&e4PKZUl#FZ`j_ZQ)=mdHux#9IsMMs^269ez+|60}PG|ouImeucX8A{18=LPF z!^3|RW2eh<+qiR1blT=`xP1=(;Uq)SB&RJcK2kow!z2dueVtx0=>=-r}49ipd z!^rR|os*9C_E=<)Xzc7~z&F2oy&e--`c;lg)JAO8BQhy|_p{#wdQw6walh<53HM)n z|0oH44q=+Rbo=cwUwjKuBbyL_ea^g>9|&&;3XXOEY?}(d2R{hMVmdTWAuQs*f6)JS zcd?q%;y$hFed%=1_$k=9?+j&5PX;ck`thLc<^ExJQVmH+X};nw0>c|{A9=74sj zk|1tH&nv9(0_WQv`|&<)B!i%a4!3SKJc_jK&+cJ&eV!#arl{rBN1d08Fvt$w&oTZTFuY^w;hEVuW+So{jhwyRu5 z$`JgLZc0|YVELYgut(b4nrhLx%QbGq-WrqN=drYjSpRP& z(e^U#;@AE^l&)(su=m^yk*lncs)%|Xx?J<+0?hNmKjmGokYK+Oq;Eo4{PIV9me(!! z<)vYVcNF#`RU0gO3BU0Og}rrEBp#Jz_m|gW>$)RfyyFk{J!tbos#tH+jVu$mAW21~ z@y@X=J(O5g1PaK=;P<%y1%FgJlyAc^Z{C(8>*Ol&J!C2^#_)n=Xas&b0 zq?rMalaY?n60gL`3lo;lBF|$^$8mckF%yN<+E1U?Ki;C>SId8f*O3>s7ZgNyPzxSB zQsc_Btr5*LFTyqqpSm;Hx* z&88cMK!%rgbhE``PD>FF-9>J_^THd7t19CgUq4}Pbl5q)qq2raxjBM+>kLnY=J9RS zKxgTCdkwN+NxHtf7Qc&548=UACw8z}T1G{?n9B9GJV~k?`GN;uo?3a1iTpM)Ym2}~ zp>zg2x2$!#0j-_rx zd#%PA^YM8&wpe^S2Bx>aI~JjN7F(Z`Zx^uX@Z>l;{0=xN9~DIt!5RYf%ySFc5BL?} zTyjvtusP$}GE3JiU*FqdiK4m#hLaxSUmq^1r(wK#QDm$MJ~ix^mAn#beD<8U=8FfP zr+wbree(K>*5s6pK^`*aP?CXGV*{EzFgt8tz!UG9ATAHH9aUwCwTU0({S~K-RzP1a9$#_O?Q6SY=1Uqb_jB8Ztl%~DfhyflN%s9Z6^8;=0gw3-0 zBox#PqlP|T403s4w|+k)-)q~GNYUyv2?yZ{x%&N-V{i&1e1~KK@aME;WMcx%4s&)I&zaNe~n?uF1X>j?UXrQuiUaV z2;D0v_2~64VmzG2Kc6+sdwFwdF=t>WBD>VSDX8yZoR6Dv-U`i1kp1}O*C)X%dPTm# zC$*d|juVv|j_Nw&A0R_}eGo%GAG_!@nJOeDjw*z&_L{PJ*jSF3n<(wEG}S$OHaK*- z_)W~`>Z2;&U!<^^siMC_Op|bcD+g+?t^yLV1#XM_z2W2?kPDtav6pV)(|>jbr*J@{ z2W^%IOBY()bhw~^+xHSlB#$*NyAPJ)Bqi3qrNnRH5!Kq#LDfO{p{8QSj3+O)A`^%f zOM_=9Ru_1&^fz}cFgHu~?Dse|G@6D%9cQ7k)tNaj(k^o{k**UsrTDgUs!i?{Z`$5B zlHL&*sh~h0n#U&^sE0;qsWO@T63O>v)Dbl>gsi zfxFe-(|)U!_G@?3R-S>OqIoD7%LV2*j?z@n+RszZ6F=E76O zl8&`{37wqJp+hddJ(;+hf8A{@>371LX~;B!^gn8%2n zNA#{_Q@G|h&1R%TQfFkTW~o14)5R`{G_P=_4%Vk+-9WSkfN=#fF@ZqYx4X=N{rwyO z+E1KZa!|KVsydB{@jC2-&#)Tb5~4_LuTr{CTb3p-;Z^vF=7GP`76UxM0OCa?#2Pzy z5f9=BYn!#TtZQje$|u8 zbp~34SBU~pRp&xE63Jd4o1@}3LG4nYc=C==nGc{M-z(vEH6;Sb4eCa3102 zZ%t%|M$!G^Nt={8(n)W~CF=sJ?HKoii|t_aPSkP1Y?N*h0D3#1*M_lnbA+g>8OD}q zxM7NiSK64w{61%1is0;sG60; z0xa7_1ftDz;DA0Q0Nqa}`0C%kdh7GCK`Cfa>M&`ScG_X;umOf|C!X!WE8TtlW6rWFqGTNK3SI? z`b6HLmD@Osj25@_sYFuB4WD)~7#1PU4t3l4F=-n`Wb8Qsa(yT7eF)POZ4eFg#7-t@iUXJypP;7cbhdP3`{A=0`S%jmR9v#{pHT(I z=tU`aaqnK{wLj^}lStpaHW)-5?4l9OxfQMkES5)ZOd0X42iC@KiX1*G7B=+O|G|r5kdukDQpb}a} z2(mzB#{wDO+U}{@GaZCY7q_Kek6ph@fxNz0`7fr^KHCBU%ko$=vqL>%(9l#f56HD> zOCcyq&wyJeFly5jY?kf0B@p<26(L7|_B;c#&{rDu`Q-vYKD^ZAKiCKvj!XYMQ< z1wv%O@{tj-9Ld;m4k;vu%}+cpl_Xs78-~R8*y>Z$Np+6n9!zu^9l}@Hh(e1d7%UuF zNG|vHS|xb!mzmJrKIA1qB96by^4(=Z;V5X3`myfnIz9EGl%%2zE`nv;je27IK z4--;IMtn$UE~i8CRI%v{7as$u!gA{7#nL(GZ&C8Q|KfrpN6)C{$56e6Qy`TVHl|LKY{{3Q(y)UOMzQn?jEku^MBp$8rumQF^43h&S z$+B`#0b#S-2(Ev{Qe71f=+4V)I{RDk7#sR)!}~8{hL9P&AMX5Hy2;v1K2E3NG{xOm zGMgqOcFzny4y;09gkHt{0?aCS4!-euKbs2@qI94HG4uw%U}u=zjKIPbPa%12Gy#db z9aTJjjOXHen=-qe1En&03)@g3OB%$idF94$?4wP)ll8d7gISY0kFQIOz%Ymc@E0OSR;G_B)M(xcC+VyHY^)=1MgYNv)6W zbpn*4=Tki{DfY(G8uEvDWzEX~L>|z%ef0$&@f9Prt6wp$*=qAiupxL3hu-znXHJXQ zP3OhmvD&TZD|uTGt^|A4Y8sVPy#k!iM4;yhdRz%KiCua@{RQdbxjgc;p|tFve&xjm z^_#Jvq(s_WoNJZB$&D?bT2d2_&eLuqOT?a*J*S&Ol(aKYQL8Y8*&+=*eiPdjJ9i!H z!|$fg{qC)xWugSka`L6R5r&~ky~TBG2QXAHxS_2 zUt%I#DACF#eC5U$$Pi4OOVwKQL&oML?*b)pv`39rF4lUNqp~KqM6~-7ao|o_& z>y$RpADOLCq}lSmm$aJ-IQriQx!&$hCH$8NFgq2v91g^22Xb?G$5CkYUywL~sC7ZK zvXP*;u2?PcB=f^NTov3D=zmj&1C#)d*{)>CQ{AwCo8vT5A%NgOCSDr)f0J`30^PeF zVj!VLVfyHErCy&iGK`509vQi_jvUg!M0kunFzr|j zlKUoRr9Zis!s!ScFu{bmt7$?9w-&WxYl=@%3ci<#@*dWJbP0uf>p4 z$XfkIyYD4R>i(r=Tm9&A=5Q=a!*Usp*|2MZijLj}+k+D7g}nhEc)&vG@tWa5d~_axo^OP2Y`+v7-Dw5$0fLd7LOfEzr%azm zu4sv4z_}Qg2zaK`*m7k8Os)sj5*b*wF8j}WX6RqssK3Ml=j&w&@YM|tc~&CaEY-sF@TB`VO$!yjBk&$Q=T4h9P3GHwE}neT(ofW8yb+>b<-Ax9F~dRDV!45cb}D@xe=Y%`GvfV(4f!-xqO?dg3$mX3@?unI9sMCT`@NN zc(Pjc&#M)rURkJg_pl z3~diEOtk8+6&IPYE(2mBDFj!D>4zllw202QLvor)t4-Hcu9(nDmi(xgZ25LqXp4>6 zmQ!^{VkpJBy@dlTT;x=*|L>XTEVBL_*K4#>w9tQ5qvrmG_hc;#dHv4rOouo!2{c$D zz=W(8;)1(qOj<9YznHDV)mg#g@zj^FQ;0&^zaLK_Bk}zSR4B_aR}&j$&pS#92$=Pc z7@3!B+%<)M_wGd?AH#1Yv;?U%PJ{)-e+pT^Q-44+sGy+Rz??0}xfZaJQ>$p69t$L7!Ai`Yx7pR37+ri$P4RKhOg0gA1|RwBcD25efO6 z*f*&+{`~Nott0;ZlOrc-%H%pCyDp+un%1tO)FM|u)&UZ`?HqX=Tej;+!bX&P^^2|l zA$|T?(gfcMwOJM{mQ$299W|-ZSTZ1Z(X23j>=uXI1Q_M3)NlnPsOCVoZ}Em zzDqJvzXrO2CxU+^0_bo#)=zE(sll1bKn@cVWs$gq;PzvRRq32qgkI$=K@VSA>=g| zb|uoUT=qRR-^xizQQ^pP`r$IyXffJt6AclWO+7?#Fq*;)C|fV+xJ!ce&yN&G;b0U# z?1?4SmsB!xa70yp@%DIIq$G2WS~iAsYSEFD*RH;I526<>>vJGBV~k1 z3j0;^%OPMQP_z7}O}QNe7*vWQbv)0F1u94P3{<`$-ci5I7;5-uxhqX1*ZG{R!Oqr0 z+Z&XtMNY!o>*5kPc%EG@W|hc0zyarhb*K9J5V_;tqy}PL*=Y2lb~-utEwk5oJYDBC0MU-~CO z&lNs0KOyk^zh%U5KhH;ap77qTRtsgh39Kl?=DWLA_<(@S)_}Z}gT%Jg=PdUR7^FoP z(1V&4VGHF{%$YLMg?p~CSaky4BWS_ zrBmb2yL48gyBr#M#D->5Gg@l`%D%|%O0=uF%_}WCIeA}=HopEkXYzKXVvVie=VuRc zlA~~7ylzq^dw&{kP#=3iMO?B zbx@OBy@Wqp-PhjiGBi5D3A0<^Iy`Fr0w08$qYmXBs;!>V{_qO zeJNlwKI*gRan~w9Fua8G6=BjLs_p*CWcljD|_9o|e)p@?&7$EWYB)AJ}{bJyD}W%)9-T-SM^ES6^+UyF0i@L>!=>0PN=qQSd- zQqes&^LnyR-EO2_0kGsZ>ILbJZJ=v`NNNt|(On1<^owyA2SZ+?Upa2dy}e7^dkZ@>g2B89CNYM>?Ako_98A zAk&1E8tRc7{00c;hk#K=xCCu0HMv5(ekKCqWDf0X<}YS5vT3zGv=`_5wcm9cPl4y; z*pi{DfLz75Xi6;R1irouEM+FX*7*p~EjRbjSlD6A3sn*KzG`a8MJP?HI*J@ZFGM~7N z;#rN19OeT{rD(B;M;ZjBw!Ix!EZRzXcv9i7=M>D!g@{+ z676fN>#R{P9%RJ4M#vtT^5}=X*wn`fn9e4J!CC0780W-g@=t7oqMD|p3X_HKrM9&b z7!KPmz-{N9IZ{$2emSd;(%dxFyn;f?D>={w!4z$hmWHz~XjEr&43{3qfN{YJ^#`7d zE?QD_DN@psD+ack{%WDySg2y%3ED2uc~1uSW4LeV1%3mM5#q4UW~@;j6|DUYJIfr0 zftir}4d_qcrYr`Efp>VCBD))w&4t3m=Wtz>-ox!;m~)TR``PAQ*_My09W>55CP+zV z!VGo^*0XM*F9h{<>wVN3>WMBRNS)UY-?IK;F#wk7EuGDUAPnLapF8s_d_EocQ54CA zXGo#Uh5kg8X8`Z+QNPrL3yky(dC}EpwvpDhQ2B6WKOpLJ*#6PM|zZ^zn3$H=CLigWbVi|ujFq{N_BOY6?Jjz$N1)V~Z$CYtR3 zd4=j4&F0s@q`YfI#Kq5TQL&po3_6lWkdP#W6y3m-$#R^R4-jk^OAw>CIivciTpuw@ zP@$JdXx9;*PCp~cRQPjsvDBAXg34HNm2#G2x#)D1b~If`lwZ+lDRn}UrfRF5rs47y z-e^1~uj05or$P#+OIm-O{m?Y(feWd?D0NH{j-#bs{AHE-s(z+s7;8#}-?h1v9CD+j z@g**rN2)8{EMblcwlyB;+NaJ7xO*w{;#B2Dip~UoYG`C&QFy+ut>iqhek}d<_XuCG zE3lu2Kya<_$)N-4r_|}8;R{;H!ADdBgp9;yr__<^+DsBE2nlr^8_ge9Y>anT4$~An z$|1}f`p9R_%hi&>wj!Ws1!bp*d2JMbgcLhLc(n1vrBl`S?$4;7cf#+fENDB?a;C;{U0OLYM*Ds0>U z*pO+>%0EH`CfRnu<3AAxEnx5dV#S?`UjB!Yo$AS1mNC_>@-LH{#=su+pU*f( zj59SMy2DL7$LX5^nB%IU4a*$|b46m3s~0IWp|gSS(wXBt>+?EgBhh5TlQcfJ;RkrJ z15#2Nar_02&gSS=Su>8MS$NXDrp#c3o?#h<0Iu!luCa7{r2lMk+b}FKO{PT**nBgm7PrfuVGutz8kodV(YUtdF;*)Gz8BZVH1qTd zO%z1aR$+Q14eMukS+Ub+Qt5;DrIbvcgYom1YMNU&)0c(=>-3$*S+R26l#rrXR%(i1 zS`*4v*m;4YLj<^^WApGW{1^4bium4O>mRu1$jFd%VWv&iM5>0X73k#IJx>DWlJND9 zk_jhmRjiAXjrK2b<$a9(cHx814(wt$l>iU2c6*DW%BjopGxCFU26Bf!_(fXR^@N-7 z*XN|(8sX(Vw)L!YH0pUH&xYGF5rhf_Wue6!ut6`_qKkGRck_ZsE?C|~V-I2fK`{K; zYiE9j&pK~bb?C{OSWg^m+7S9N9cjvK@R(mq(|z*xxGd&P=3h>}h*xQv5}`Fqu)F=O z{3lnM=divbni|jh7aTBhTF>{#K5u6h1E+V{Ua2|a8xByNQ@CTAb z(xozcX>&eG0SD3GK%{=xO&;;~u)1y$v~Tsao);Q&IA3C*BaExsBYrAx#*a>*~qpY|)%QJY3z04fm7y|b8 z88_iBV`4nOQGYTA-zpV6m$);Br8BwcRV-uK z?M2{#U5r!dslUp}ybQ=J;g~s+3aU*anG|8no&B-aN?Qd#25hq=jC`8A$gdA$5=*GU z(tj&pmPX{5|GwJQV3J=?v_~e7Ts|+6)+8pJ?F$A%sp6ax>g0vG-gjfBFKo5oKhKyt zyS&Fd08X*5Rf?T(v8DGM3sb1n7+#*{DrASFM)Myg5z?<3n(v z_L+E{NKgCBaM4J@$LdI@s?KYSQvd9Z8*<6wc(4P~M2+(nn>fpryAKXn8;7em z*lRnYPEvgH_4st0&}i7-!%>*L@F6kYqz~@Hp&pliDQ{T$YkU@7I&OwyNC~}b>DS)k z56>Q`f7(4Vu3ivx*J0%W9-=?ANmQEIW|u~YuAc;9t;Y76bU!i)S^hGgNv%Wv99tOK zl6__tj>w(&d?cY#ZlueIN|w)vrYhthUiSJ#Y9*z_rBra(gb-j2dVj)UA>V zgE7%8)cPD6vZZhH%Q}!+V%Fh-RX^L^63Znd(_)uruxHP&%fMe6qX_o!>Nz!J)63N= zfi(yADU77b1RBGs(XSc+L{ThT)y^;8RP=3$iERl>rQTbiJL;D$Vxug$T#wzw)kj5h z9|r1SJjGm2ArsJ?HHgZ&{&`$^$&vC4lLY&yTDQM!#rH)TDgc2O5LVoTc#v((p?Ckq z=i3C7_eM&ZBC@9PB2@xKTC6S_eBBKruMugjnG0$&?fV_Q!QrtEkLJhGPjM{HCCRVZ zUHl?VqeIw6qgIX~2A8rhVt9(6fPq!Q3yA!j(e|E;0-n-j#zbII!oPMsYUu9<9+zs} z+@$RK3D1cc>4c{-$L+8<_N9~Q%aJaTrNi!HmnHk_RCm!rz+cbwyS-tE!GoI~;Utd0 z(eFgO`C<}KU)^Z7atJuV%41b!|Cd9{&dDndk1HI<-ahyf!ax}9&%eS1Wqw5#YV)#H z&*`Mp>4Q_ay??mpvlU2n75RIMOLi7A3#+E;c1g^6j=VnhzRfiV5N_0WJUbux`L7iJ%>CW5(floM_!xZpJAfYkMrxBY zC~rdS2X<(d9AT%lxK`PTj1wtz`I!JfBImU$`9L)+D9Iz~i)Ckb)&&OE(jIu@6a&j3 z$<5ZAG0O_=1N*9%i3T}k=0?m(b{W9^H^?Fix!pup1!pgRXGFl=iYfs zUWde8sq8FoU`aQg+uAr-^b%|IU#v%lQgm=Z1vu?fO&%xSdPWgMsGptCZhnmc19nHN zaY<}GQk;P2l$V8c1AX+>1F}_lkV$vmOK_hz+6Me?B)xVirCNfXs8Kg+ny47S`5(po z#-HymSq!7b{X*1Rs=A_8dX*syRLcBM!&}<4J|?58{(xO{nv404s(sXEP^Uip9c?SH zqUy`ZRe+A>?lU|T`~*FDC;$b~qY7Ty-ReybhcTxK2xF&)dtRc7E?JD#F>T+l6Z|bI z=J>A;{%0Vwd-E3e@Hk4Z!ywg{i)JS$zfe+Yy^e>%%)Qz?(}XWu{*RiRkA(ZArymY# z^J_*^9Q8A}>6}x-t|qcvZ9?o&P2l}c{7!B_w&;u*g3+qd>x;?PA(?p>mFF3kg0pV} z2mhmEPb`FrnsNdr6AS_vS6;H~GU$L{XopqMiF1Yis15p#O|38I*RlT8lsaOck38eT z|9jLSCj&#f0T|jN>Cr#_9T>nU`(K8ohkX7C?M+}{B~5Q&m)ZvLJjcwH>2LWAoF}WJ zFG{>F;$16|@e|OIF)%RS^%B6=lU<=d5C{0yJQM5mi}(k?eBV0VeqC^%y-QbHYZCu} zmwg6NC_5SUgKr)W#gd`eXisjuQa}3zs6lOKz3S}*7Pyq~!$?IZ4+B)T=%mzkG(pa? z*<>}BDK?B09j#>kD%Pt@)_vDx)qw3-FO2dzeSdOXGdO^kBwzTBz{ugki+SPVD zq!F)m7FKf^ph@1joMkqri&QQbRAc9#Qxet}{LNM1? z$A?01q1Chw;dFuk>@(%9Tmi&K&v}1G2Ereh@zL^FbQx{0#G`j4EoML3S&N{2R=nPR z+uX$*2NuL^{3IXcbcD4o7v&V;oOjNec*`h7{vFzmI zrQs{BX7frVuMYI^{UNz9y{$ue;Ty)l?57}cHw2RCjgXSk5^D-irpKfY7ywf)9<3=&UvM1T?mnie%Y-IrfE* zZ(Gu$Z$1p8W&oK)GNG|KlsP?+!A9u-Jnx-PJZobYBOSbKj>ZOMwt+yFz^;S2i6Im~ zxB=jXZn>f|r*}&d)CGB71q(|#a4-DizBpE4_%l2Ht)u>z(7@z{VP^6W9oR##-O-8> zXy@;i&d@nNXJK7^QfLEs)hMq%N!G<2_@->dD?AzaJ$-@C>2R_A57pYD&QKS_9~M(b zM$_+-#m(K&G>*qnBM?Jaq4?adm@(7Ex>eFv$6Fk}B&_;B@rMPQ7>fZCXOcCI=!{hHIP4dS4PYa=@v4VdfJnOLW5)|;mi>HJRG#(mc`75mqu^kf%a zi|L1#y7%=0l=R_V!h4k(0q{AKvp0rfM}+!R!PZ3jRJ{~&JG72{q*gI@=7S$Lb@+VK zlr~|+Pg*wG8ztGqzrw8%QNpj5!MSGp2mIT{-OhS0RTms1ex!98>lBOyZ~&MTfp9>x zZb+oQ#%A#gHc#!e>pE9t-q7`$qshVkiTf&3qL zeW=&RoM7@pQhMdTE3fCQExnuz_x0w}N2#z*CS5MGO~Nu0UT=@b;I-%ala4_)Jxi`c z;@$2Io)y@i=DPGt|0$`H@BX_&(#J-roY`IQ@04;h*y~#+sR0WgFy=L9qV4}kcr|f$ zr-8vN8>t9-0-Il>d22wtRn95~(eC*Dj1u*SUv%Zkf< z1xgga1Vj~rtdz|XnX9{E`YBALP4=5+*8_usjku2O4UXma7;^wMB1Hq!CM19VYzs;^ z-w0%)0nW{EEP&^#!;f$Rof;UvNH3 zlI_|olFBQUD`#kb=S`4;;-s_Z5p@!v_^_a)30|x?Ke;kg(C@FL?70qUM97RS7C)ik zNfRLs)?i;X?`dhj;ji02W<>@wMQ zSQKjEh=dzqZMkZRXYztgsUHup#Ve`vxG=kby)Q2NymZuC_WK%V4)?o#kzyQLn5Yhe ze}CI2x^H^{osEcuL5vMlNhF-usz`CF(yuj>oxPl6A46W9ei@A07=&N_MhJbxc18 zCXq>L01I|aekJfkXO$1^w0F%=|sNmx~jgh8^01oJ-PzH5$QV26>@oaHyf!x&+ih zqKoDmO*xXL6Q+^e^IFetgi9QZ@z0wBc|w!LxkD6jO#Wz%pQNE9X)FKXV-uRJ$3_2L z^661nO{oqAYH@|+oZ2tWO8qhP>n!o}^VtNk_TPezJsd3-9JK&~AxX@i-ugB<4aq9o z1%?0h&lnI#rOG=J7N{%QXS2wp05+MPQE6O(gnMk1i|Ro7c=au9iRw(t`Q!IJ5_B}q z*e5kuu9RZqyIk4~14^II&0(n?nJ`i(!ThN^dqh&nmN`jU9d&|bwI_%@18n|&80mU5 za`;2>d^NhUd@aXO_QY)@<4_KK^fr9H%{7gHkG+H_1#=YQpLWk*P1|Q;Pt!+KunCPG z{3R1TXduM&O8p6DJDTRH)9?2g<|i7OCE$77%~xtFtB|aJr}622VKT!USUlXV6mgha z>nUeM#9Hvw@0MbDMxkfPcKP}GH|D+oP6?m( zbQoQqNuPV6@-KE#=5q|%wq6lh#bi4R(8RA?pFctKJ3SFj>)S1?-yKH_aW%GEzVSr;TjhbaIN?Dlf_h9ta?EG1t8P;eoJyS!sCoyxWW#-6T;J;(lm~s98x+9)7VBMSzq4B7-iwimJx5;9r{<}Zwd+`VCv#j%`s!aL$I)}t(MODb zfB1}5Gvn(=m%F;^1dwCU=0&Y1?vbVc`ALg`X3X|cy1{BVRzXiWjAoenLsci!$bmFyXQgp$w?ljOXzt?kD;N>4$>(mpeld^1L z;Bi|VtNrOKy;Mn8#{cOzJ_oV&|A>+YwQLOK7G)LZ@$X-7e6KM=yr96!g(%7PvBn!_ zzz{Q@5=#L`jOQUmYL>{1ok zx6e_j{p`?)=Lgby}geMtem`zT*his_P4zc&OZiO z4ADa#pnEz`o_H+7y%bMQS&LbiYdQJCprU*#4TH_cb>@N=+pj@MEqj9$Ixd+TfeiY9 zC;hdB>LiULajDhcg$?!K!0!{`c{n54wmXb37z4y)Y+$|eNET?2(&exyEd1%@O!KL- z)=tg(Q*2Oy`A9JQ`ARciE%}3vT+D-8@V+DQQqcoHNqm$&w&5;rp*$n(^Rq|2kM{5r zd4BQ%+CpVC&;mukr0S@PgP*7(O{ekbZc8#2xW2>YPqh}-g=kIfaPIZYA7N;WYLq6L z14Y3ws+D4O=3o17bz1t4h0bzlc`w_#{8$Y&*{Sk}5^P+)!5b!LQSKb?-qIcOw;`!! zZrWpUwpQ_ao4c$HPP1&n95qlz6rM>2KtdFwV6*~9_beA!63g&&6267sl;bor2%rtu zNcJNj8|%AlNgzWxW92&_8*6;%gTKY!EC-6yare{q=A)U7)(Mur@~qBdRS}8uFtPH$ z$?e=0;R)}~VI}`iI%$P+Bvr3(Y*?H|?6IfLp1xkDHxcBoT_YM{%q1`-bzJWby0|#D z7zkU(>|q9mWl&kBN}gtdi5!Q|$K)vbxNIcc!zG$=8kI%Z-O_muCMAx%5iL|9VRy}j zZQ>nQXaXCbW}d1Xo3{`j^5Kz!*kac&(7R0)Di@y!M3z;C&>)TK{3d$0(;!+PxUUUi zyT@ZEIV^kVo9cqKd-rbsB{@2)uhvXcS}b5V%!)I|DLfR0jbWgv9@1&XQ4b0#Cbqt_ z-k;m`a=ab29pIRSjXzKGFe^P#c~wOgK}1J>eug6Lo4Oz7YYB#H`HMHxH;+^x;VL4; z>7nI?s}uWuEp3j&|5(o2I8s1ASaN@4Fy_(qTzNlPHO~QtFv+v^CEGT4yp*j`)6d4c zQ9IJMEW_!uZu0;Qmd5=TM|A1BnEDNojiP#%+mRP9ZB~~363SGe$6cR+6rR_HRWIDy z#Au+cg&R{l6jfiEoWYNF*_1SkdxJSE#WChMOokk`JKA3g)(}Qn-#`kU~X*fU}i6&hH0evfIOf4F0`kk1*&{bCUaO)VZv__lm0`w;FTNTc>DY`Vg@w;>eB z$@5_JrUuf0r|PxexRb0ij)d@Av#Q?YXjciIU%wfHu^PpkD~L-F_jc{6EmVOy5(@kF*h>)aj9=T-}m) ztH&YkVDB(=Y+j9gXwE5!VIg%f=C=uJ0l$XLW-2h*8kbD4WxMJ5N5n?gW3JM^`{HhK zQ2YMab)q%P&Zmw)5dT`IgiMyUpt_#3>;|>7&0bkf?3a3u zM}#|Q24X9Orz#nMH{cC{9^hMX?>}w-=z$nzP5v?UnGoOn)QQTJ7U=aqU+sRXhdGGg z-3M438Y>+JTZM8oupTtXJ*9{@Ppum;quP1taaKlUlA|oV3#lr)Kf46|4b%Ptcm#3u z{GGD7%ot5@7M$qfn0x_$Oc&(oAOs?GLdL8EqL3*2kzSo1@LsLuvZ{i7SHO8zQjHr% zf$rTyJb~^fz;TUENUjj^bC?l6ESqRI@Iv*^BVJb24r!oAgGSw#{9~D z{gDgB`|Q5(*VR>d8k^nCIHP2tQtT(ZiS^uE3Zyhl&+jp4xE{evS~6)o*FWTeTub$e zSg+DTOoK)?;b+ztOSv&GrF65KLnW^oj_Ien#8>w5zBi!9)qJJDThZY$_pN`B?&-?}>YIodF`VbeWIU>tYWx za=GuToxJzLr1>KXUpT{Wr`f!-U2E-g!lrUpPq;^WWoADwm zJdeVBhKnK4GOjk`GZ*xSByCe09&o9duJC;_wM|>&vk!WBMq+aHo6! zoG2qoxXAa(vD@~b_D0AI)12Z%AH|-wK*$+!%J>2q_TMYXDU)y(vqGmU3>PWsLe=`B zkGwZQ=u~sR7BQtCB+|{6NfihL>V3Xo#_TL0FMW%pT&E$S zs1WMrx7gb|)j-1ko6UAIQ^n7M?fAJ%l2ntPYVYMY-r1WJba6AxH{1Lj$DIU>OD}x> z!pg($kXbb@cJ4pQGasiVVj^yZf50S71%dz_-^_B~-ssxuG1+exNp}5RmRK^y#*mPh zT3C(nr|SZODwGQP%i&tPKR9{qF`V%Rjs#j)nw+huH|FkHXXaj7VZg~gJ}>!cubEDb z&CNP|Svn&bnSMN*7V%6NUEtTyH^PYhELbMy_H4zl4u56NZ=zu*mSv>p;DFXJzsaKh zPb|4u%NG^uN1{Zn^^|+_NaV6HTWOL#w_eoA1WAhR)ZJbs%(6Rb)(=A#w2XS#euomh z3tEXUj+D)gp+AKB4{>4~6l&e9?NpunSus&gnF!mZ1@P6_T^`h+=urDr2I(%dlcdz0Ya(P#RtYb(2 zK4yIml;=OaxgHcsHD?o)Dz@a;*Y0fchrAt1mUADbK9!TsN*a{pg17U#Xaz2a@;{on4sNzKIUYCvx^VdzFbuYP3y z(ykKXCmMijgpd2?CqjhXb2Zf=*id^rqA|+W4*Uv{I?eA}2ifGiuJB3`ZHnrsXBHk5 zuK(0)iqLdmW*r$~v4<2Xg}&|sv!V@vWtsbjMw@I2tB*CVsTOJO2kw;_EQ3jhxfibY z@#hq87km2J5$6}ge)6m` z%+6BT(-NJ&WF4cx5RuuG@Ed;mi-`dd-PjMhV!hEXpHJx0&!}*oyAu|s4jK3%bMRxy zR6na!H1(81D+mlF6y*-|TMOhAk`4xnj8m}ojSev(rrL&BHU~T}szXLm%YH-R zKxBu>wGxbo1Il9l8InU6Mg-09eZRcH)|pH;@_V~|?wbery@)9{!n}Y;^JtV`haUQO ze{4&*lg2YW6%vFG=#1V6zSb_tsEa~8l@j3BNi_xvJO1xqz47Rvz4j<|=q--Gw|fcBFK`ydS0ebQ#PWpGW6m*q8XgHI9_X#*rwv)Xvez`MT zP3#rZa5=}$KaweY;B$A&lSEbRm(yo$&-J3H&P0TfJ~``1g0bbG@)HsQ(KAN>F?31C z2q6x{w=bAOl^CrEPj~|jns_Op#s+iXYzx@M5Rs0I?25r_ju$xyE$dX)6O7twasOi} zgRh05;KDb=QE>mc(2tC%SIq!^zJtji^uHB_d-s1W3Kwc0&H!c^8J&a_%6uYZ_~(8r z;Eu(RO#|O9I%<4=YhTOnzFY($7!li76tG7u{--K%2exAPc5_jR7(?7nSr{*#Zn*vE zr;ywktkjPh2v@dxN$~$s_m*LCW!wHPP*AwL6N0--a1HJW?(P~K3U>&a!X?2axCi&3 z!GZ+~?(UFVN%!vV-MjBO=idLhAMUrcilWx@%r(cHV~pRJ;}wN;MOyDO5g&hdz>c9%5T*so*QM6)tT3A^SoL$Jn@(#&(#FIO>+NGR+fuE zM&fCf=y$$#7=MtJNizHPkmkE&@4H1b%KMm>CM6R+hIMgkA3xVtmEHnzXH&s&AbU;+ zc~G+&8 zZdmU`9yuB;Fw%+1tTwTHV>q0Ms+4v}KFVMiMzCq%hP2Eu-CJ4~uFzZ*Qw!;Mg}hUj zt`iz>-4zmAz7#yJ3!gY-*$6me*%8cF;r48x9rqBe<=~nq7X`H=?Gxk@VVJvOsZ1GB zT64hg<&s(7ml{^V-ph8rXHn72Gh=z9s46VRq6+%e6iJmyag4g7Vu&$bk=O;>Aj>Uc z{ARQ9rl!wRGE}1ZE~*1%UL$>+FXasTs@+1jzvVl!uJp9^y<~p4X+A246qk`&4caJP zTPTZ;Li?qkL@1_nYEjPsXA=AtJZI=H}7;akT<8SG4mP668Qpda%(p%mMyptskoV6L_9CO|5~p*d2cvrhUL zSjepSf*Fk@ThJ>9U#MxA#lQoj;aL!TI1(9-+ABJu+I*B^CW8BJHJ@+Fp{<9=+P00qtdU{OkImkniumPFiH?`zvR)$BQ!SiaBLx|LIq5AY5U39RW> zfWdvpct#^=FW(=&UjfxQMhl`9*IFW@4Wwo1R-(J-2wsBDM?aOcpZJ4DlY{G@+}R%} zklQ~k-a232uERfFEN-qipYp)voTVan$}ig=h4jTDNI1wjWe8Y1%kvxweQh>~Mn=2y zb0CMiAiMO!ad7sV{lwwvm4xaQ;E}Z7=xoou?L6w>T*Q=feBNXLT&d=se0`$N#;Wf=2EvoepKOYi4AM^($HU-z>bni}CgId<~X#4qti zr4o1H2iJaHs_a}V+Z4h%L4})hrNcO$x^9*J1oGV@JZOH)#&(S~UEu@VXNRxE-qPFD z!1S+*Dz&pAenW|Ir=*>1Ytop9FR6b-XVN1RlYY#tY42u|s8$Ag!_A2Q?IrwNPela@ zT5?Z%KOw)4?nifGlWk?$jsVH}_k)UlTm#GfqBW&f={3Sv?jK}b2|~)P>ibIHU!S;E zrqmAQRpYZk#m?-#&*%E8ac_jP!&Km}-chnLeGGz#WLm{F9(XNFD_z4*Fgn7nJGZj|(0t2S?hM%Mzic>oSH->$| zVRRQt>z@61FLYS2Whhz+CAgQADxa#P&tDmcR#1vc!@R>#27)fONTuKA2k3r3YB+0v z-@vC}?&=pVC#KV0gid%Z15*lL0gVS$7Vv>e_N@#Nd$&j^v9+88Vju3QmM5W=Grbi1 zn|bk}6k?XQOjvv|VQQ|!bU!rsV+VXi@Z4UXI~mq;C-+Z>s}ZrkcNmeqNcxf-0aQS6 zPjXGiwHG(Mjp7~`zexxg++sDG3mbbs*MsStMzYa z&7iTscgu*>m`|mqHcllHt$lb_ECLf)uXDjh&j5HNBUY(x3MzdsRFup9bO?We{76N> zao8yQbVOzkq6dlT@3hj@*E0}e8b^9bfPY(j??^3NrQgkC(Emf@-2bxK>OVHlt#vxP z{=ISTFa9xIHQS#+zC~cMG~VDEYz=8v&v~?q+Bzx$0fdH}CGm*>J8|t)REHoU=RoV; z?P?kS(RCH&x!K`7=aDugafuMW5jsTgE{`+|xPf+fQQ!}iP$kL%ufqnA0rVsq^JBPD zgi;B_AI6`%R+^d*8(@ICQ?^^tBT_+gz++z%p9|2Vf3EhuGPE_MtEm}FygdkY(9l`j zB8*>{}WPtUZ%MKr?YWNktXbQmm@7)HXS zRY+Sz%ZnTS@7p9_ZjBE?YL z)M~B91mwnp#lc%zugE!D7g@xI22_sy;T=a+yVk)c2VKgm8Q-!FEs|En zPF6cXZ+X)mmhaoHuSO3py;)oD7ogv;N5A59^Q}-;D2O&KsIHhMuGn%YGteZuJj|*` zlKUFFSCpbywcc2WN-|ExL+*B02}=~ra^<%d*Wxq+4_j*_xbc+AW@F?-V0)Di{*+Td zM#rG3p{x2F``}q@GN=>+9NsrZ&GW&>)DhbSU6(UWc*16m8?geetT*6n;0Hob_Yo8q z2rXTdl*ed7&t-Q}hB)bIVDF4rq4C1Alg07l&n?71h%>ihv;*ArHw>j@=yANDPfmLl zcjp`T)rY;=?0G7M;W7f+ygXX81^99CCfZ*MSR>z`-`|tJeYVBwv<&rwwyFc!9e2VV zgOXbw0(2#K$Pm#_>jIE_A z+yLo?EX}tB1uTxKg{3?At9B7lRs)<*p1OB{UQl(1>B{byTM2Un0-5hnk3gE>`2DAI ztU@2p8xB5-XX94dpypEu;k9DyUPHduS!rSMN*FQ)48KpHLD2uQ6NB55b!~Q4ckdFq< z#r4J~wt~=OP-hJWJ*iMeQS7#xBZE zcT3s%nC9^X*(!^X@7Y)-6n1CUIJy5=JLusIXHR%Z(hAwev&uod9qk0}71f6z?WD#2 z9hy~s`5n4f(67ojxU!JR)7ouRbrMr)hh$jl7QyhRNgE@!jU8S(-@E%!%M#$CrRkYL zv^pH`DL0tZZ9!boTI?o4@io;gl$TtX`_C=&H5&&T*P4l0z&~M}#>R(a6=Y#2y@n#qOQ3K0Q+98?yy+uL zP+8__qWTvQH zPKMTdFgO)i`J`J#UKB}QEn0p(*!BEeo`d6jvg=MGu=|r}In1PHWF!OXijxC^$A=~QQR^yW;jNcaV9xMMsXLs7Mu8cFVWH@*Qg6D*CY=0bC8^o4P36V z*UxMR0WcIktUY<8u5NN&!_6-g8}?xAxVpO4XE%{_L|7tKQ}mC}ze>vrzK0E2m8)>e z0uSHvo$*`*5(SZB?wL_6gpTLc2Nx-&b~iVoQCV_{(9 z%c+qqr18QQMmvaY#wnUZo`IcPR4*)%s?!-|IzYY}3BXk&`m2q*GXct9T!^19 zdGhrDQ4#o?7y`ZVf4tH9e+Q5?1E zSy)N6mmJYi1Yv{|ifR+guO~)T2`IpyiqHtai^Ygkzrc^Aj~e*kFibQC5ah|fbfY}KVctM_uanO?_kkq5L+<0ea)xbkumTX*4Scbg+g8ymuj>=4N_19^` zPGRHEdIFlWX8^E3;qf<}Y9qt0*9P~l&rr2SErP<3B6#2z)&TVqFnh=ZMnDK1qFfYZ zx-|!`IETgNC2j&z-a#^;|#9w>fJ)@^y?pswHcc^CqKVA#H|>& zU1Y;~UEA4`c=XaZ+#t;8n-L&`N>Nv*CADS>EwmcV9TA6G4U1iuCvh@fe(H(5HB|qK z7sq$MgnHl+S?FE1JCRRZ#cZ|T9Kk^qJo&NqUHf%*e)u&S+VWvX<0428gTH2{6Zt?n zX5EjY`;zG6tj8>`2MI(Z)M5LF9;G&I#7{U zl5||f8nu%nxKkdrF_kwS?t7j4wrWNlMwb+ou`c$9)Z=hR-63vB;q|&6GGa{wawgu5 z98OP!=Ld=1`T8Q1$)AUw$ zi9qp@eQBUrK8$}EvZJ&{GDvNZA*-K3Z$On{n;?FPxcPpY@D)Euj9ymc<*bCE^JlAf zF<58vC+MhNgVg($+70ewhrW27efqa@Um zB>`_%J1A2pTQ10#LiXCZA|mQ zk2Og2f3r4@dJdjHf}Q_cnzsm5M{(U8EvL|j{5gL1M!x02X$oO}k;YuQ`X)YZsozoF z1km58;J%r_eIp5luK8V4SmPq@Ws-(0)2}HkU`&W}i9nnX?5Y9AA|g(3iImvwEwwue z3hGs=5~V>5;4_Ri1~9)lfFRXIEgI_*1qCJH&EfsDeYo9ZE6tVPAWc?PR-^?$oOSR5 zg95c?lom6!6BR`vesjD+DBR@g;8N#ma4SD;jIz(p)YpR6Z0N9{)9$&iMFzs>gQ8A5 z315r-5h6$0p#v45%o#L3d@>C-2BJKeq6YxMF-)(49WR08{|NTn-l3pC{frb(1s27FT#&ZK<)zZi2u@gpNq(1G`TMPC#3@@^95=a46Ojb1I0tjycM2a zGZK<2vF3+R4AaaBjwFDEqV{Mg#a=mx&l52MqmfP72U6v>2vmniBwR+TjYZ99T}IfT z)7N?fw7pFMsP_qq9izv;W#WNh4EPx2W?02@VrJql3V&s+{@f5;RfK#{AfoU!%5Omm zc*h%pZ?=|KmA}Q3Hy29~U8Re?Rbh-ml~T#qC|Sspr`qWE=uI(w*^q=)ctRW>pICzO zfB?kl=?qU+P_R=dAF=ziy;Oj|9V{nte79q-@yVHK{P~3~QJ(B75q!+$ zmnLL>*(PVSb;a6)n=?GYuPEBv=tOy?pIyqLYVfM!Kfb#4CU#?1fje@FC5}e&i+j$6 zdJsXl|Z(BAn?!HX%smg`la;-X2ib>{| zSyD`zLiO52apt|X>YUQXNKy{`ErVnvbHp4 zlq$)NokB%oD489BtqYK^*y(|)d3Q3a$M{!5x9zy6P{sYlzk#{$EJ!vpRmb?g!;*n4 z>VttN?Ui4bp)9@M5NtCzWy1v}Rqd1Ya*U`$)#u(L>arRwFY(ieW0UiZbGqwP8fhZ( z>Ic@V2S~LHt#}AdbpluT#sX5sHEW_H%eH;h72?=^CN|0x_!X8zMM}U^%v1h6bcS0S z{KJZ#Qkjg}EyGEcA!c!8n5>QqQU{=|s>ACjlB?q9LCA&MY356eE_^$MQtqrc&QacD z7mUHBO|W0wifoVOz^seV z;ePQq@PP?T{|7cmK;QpoK+n#>&&zKPUMm9PO8tjJ#r;2Ukz<_4M&w5oxtzbq%PN=? zT>S#xfaV5}*rU^+v5Iy&fyISTbX{m>;H^#St-?aKU#L?mgBZf09Tf^xmp~62ZyPlF zFi$2Fm;OSuEqI(B`7bCP!&qAirDeupoZ_f&fs;$3Bp(a)*0${Qlcm$|Pqn*Xd$&Xx z1ArV=P^YA5z%W(?gp?5@mwKsyu^7|8|18g#_P9=2x!kH_OffcZ4&dUd!6F9It|%ZvIfg9g!iC1~7J z=vxSsgyCOM5+RkdFzYp=05c?vD>wEK#w|F0oct!f=j_y+tU~yOfpCbXAUYQMan>;f z=uJ|MJ`|Nc8x#!MKwPjTUO^%5vt~H`dT6d(jl@4(@t>YJ0Y&7_K^kWR8wwH>iXVNN zwRJ&XN$Q<1M0_h8$JoM+Z(k3Z-k8knrDP&HG$JVLpI#bSUmxK>Ay$Q!{D7!IR$iS? z$6nb)QH>DIs$IRy4Xn8__6~fOmXxk1KB2?( z+I%c^K(9HSEDXtjC~6Z{Oi=tdC1eo<(-VZX_z*V9! zB%qC2_CL~oG;|PX))xTBP2fS*$ogb&CL|#Hq#kycn-S;jXTSUGg-SPzpk z+HSTuj3Hp65ycCEwq~JVk!5Dd^FQf?d796bQvRy+@=X#%+K+=s`|1#B zKg|w}YaU*v7OEN+Km}tI05<4H!XrBmq))&vUPK#wZ5jak$x`fK5nnHEbnb%U3KIk_t1DVdH2#{+3#UwgK zyncHcdEyauJ*qtP)|o}Fywq(}ejLJR9xfTQB>4Di*+Qf<4NL7q=-cT8t8D><1W?b> z5mEuMtUup$Cgn)yNeEnCDq%6*=2-gUV|Y7^^X@xpxN5ZUb_>2Gch5s8E=v)thHzt= z7z`UQK@p4`jMWL)q6mfw=C%WDv<(PD`023tZYdCeb-m&K!HT&4-HO1*c5sZ~32(U3 zUk1bpPAV}5+kJ(m|Ib33nm_;Zzb~`_3ix>U=O@!x?iWzMVnb2S&B)KyEziyPz$SW? zQ-Gm`#LlK?68>`_*r2{ILe0$mOsqrA|MY$RI}t36tmvx-+)z(VMj&={zy_&)=@our z>FG7{1TAF=VV)Z?WvFpnj+YkRzA=NNR zGMLb1Y_8&uIM*KQT5$!oYi?#`jlp)PoP-ek$61kq)c0WD{y)r$gsqq^K ztb;+jhdGOuH*()QtY1c%=^&qHa^n#vbr1*+GKf;_Cich^jUy5pHh$JZQ(*=Ya|w)Xc|sA0M_j>P zKfFLopI?cXfLY8w*zI8L{yb+euA5`Tv<#fofwh;8Q??64j1)-b`=+em+Ye(cX4jz3 zXfYc2E}#^ejDkni%t&TcwAcjLvauJ#@lhhE9D7|1HfhPZF90q&tFwLV^;1V%vyxaNdm~_{j z!mzVZcCn}Z{~BocHKf(B6O7)3NDh+g(1oRC!4ONpz(~puokX&8m9&v6AoDH>(X*V= zaltYbpl`k<^#qP(Hg{s5@CZV+ULAR7P1n<_QRZn|Z+Hp`{K%SroR2&|y198=OK{)1 zU;=44qPJwbi!anm*lO5v+s4j5T^;#<(6;4H7huGdS$N$0THtdrIL3Wgw+M2?=H(OO zyX`E0^MW9Z3W58&2K@)9EN5m;DU$}AM>9FsD5t+}7V~0jmGm2gp zG>9JJfpyF;|m*883JXz9c(FH905YF1_GlYwE#`y5rL! zccCSNw<>)bL-9VouG<^?^I7Gqp#_7YMyS0zL?JJOT-trK-07}VNUhW^ZUhpNQOwYNpxqyP6MZ@RtS5Nz=VLw<71y^Z zIRZEYBOYR0ybIrh@KYuiLq^VJmMRBqGBR>F#_Jjsj+tlfB^}2+cAJ$%L_$O0KG=rp zjPGHw3$n1~XtA9Lyi-g+jTm@X$0NoxxB?U@E|_Sf5TBe7TIRU<4x^FIG0X6A^V z#k|cL-_iWq*`QbCk-cq*-(~;xE6m$Dz}K_T^YnElJ8`Nekdrsrsr@7}tyCfk2W9>~ zY#=995~a0iaKlZ#R{pVe19se5jVHp;w`W5O)NM;9!a*VX74g2az@FjGMn?XR9CWUS zO|xF{+qWc%sPUdJScVQn$-;iXp6uu-NWLv9m)1=3fg1Wib#>t5l@xzz;-Ei#zEiq= z`L zYnDFFDtEjf75Y#HwAamu#96#xDzq0f_B9MWC;HTix4J#=;5y%wC1$|qCR-bvY`JJ3>BK`KQ zMX3`EL0HGT)i&whFAkqUz8mDhdGhqPthb)G-&=2pEA(es1{XgMA3GO2_n&1MuS$QF zWz;Fr)KzOS&E$fb=x{>OSl%>I;kPBq%O9!jygt#~IU2`+xBL;F0qSB^M4KwiRdG5E z9`N8_zF%%@&Ajr)|7QEmL>Q4K9s4Z7UxIXr8rzP`>6;aK-NL1W-8AuNEJ>7YpfSgzJEistgNbMWfN4g}FeGFr+PP(bF;GtSVvNTS0Lt zoDNHe$d~YZtP}D9xA@uV+E>Td$(me0@a||j^H>mt5T{C*HMvDgM48#F#ly>Mt2S{s z*FF^*F%Y2FkDF3-KwFdYC>ebdJzdz4+!J2YKwW??hi-u0c1~nT;43i4gAdArV7xnPis?ZCb#-^ZMHpl;5E=K4)#LTYr%v`-^~EB%E=KIU_q za56-Hj&y9*u@Iy0F;nlY(C=nFe7AbuQc1o5vGjc`Wy18~qvT0SV)C%DVByJi5Vae6 zm(cN-m-JJFqy=uqazUbNtl#t}@X{VS`QN=%2qF0YsLf|FHj=h0PIcpmUx%*3V<-4BKt`j-Pz#EEJHMp8g! z_)ll_|4r5R_BJ)`y8__GwnpLh_UNboRwAKiqA42I!({I}to5obZ3S)7O^)Nw-S|8|&lnHDvAgT$E+>gfWs1Im z_*T$>5c}VywhSar8G?wkz*O{z-_^FjXDJD3V6@pH0L~V)NyYE3h4`)Oa6_}?Luag|JfgN%O7e{evGZ7zN z1_?QsS^5i!{yup)j;_cdlV|J?@zUIchn>%qmv1v!(RNytV1U-Wy1w0n)%%MIBVBsc zH=BYAZcofm7M25JR%DJ0g@wRRAoe7)RxsAFKU7D+>dTYajGeAve**MuUmDKZjBf;z zf}SUVBFY@Mqvtta1rM(c-F&Vhq*E1{Sdp=PL^$5X8$8I5QnRkMf?olK zn!b29x{%g*HXa%i_)x9(1b4~jjXB|vTQ-x%m|l>FaC0y_=mg%redu^F2Oa21?U>5X zawOw@XJ;d)FoeCdA}gAO&c?VZja6BrD@pvmO056GTU_J{{*IQ+I354mH7m;GigCD(o&hzulm7jQWL^bRg5a zcj{3`PKI!#E9M5JmA;}oOh*WMC9sH*h^#Agn+46vZLU|hrHPm=gSK}RW`xT(55{&z z;RZ7nt6LAN;0-o^Fh4ey+L*P{9!)Jq7SD9!B$ZN?{FLkz)9eh#Fi0Do%0_QQH+~$M zgL=UI-CKUwSfHDZMy`JVx)-(=`p|O)Hkm-$kUS_*k%L3?--2XtATk^Qc)SaV6pUN|#02B* zA?kw&{Pv=*W`F$HUxS7*TMX_!nKwt{(hR^fao|D+^pLZJG|mOaB+u-l9UW-DPoVH)2Jv*A#jvuX_8UDW0OQjrORJwi~NSwS(_4`-T5H<#2KCBCW( zP?HkCMT=3Eod0^KzP+0B( z#zn(Y_bbI)!R+z&D=!*5$s~u z7&s|Ne$d52mRcbj?qd=30o|)qIEwl{!bo~ZrCIY}lo&yB$lr#y%CMr;9qcCw{~zZg zAmj00W&eJS$9hoA^!sU(woi3jNoXT@AQqMgZ6=i%G|1VAkI>JF^GARLeW!nFb2gFq z!Sk>jLNGF}Q0!EPy~J#6e0&tsECDsfCdly{q9%jBA%0cUQGLD=4_mysY2&LA!@kl7 zTf}+k(AOd(4*;1keu`f9QOjF?Z`ZJUZvJZ}{_s`-CbX6ic)6MN{PI3}}sBG!095GXORjfEHu% zkB}2a2iArH{OkY;2W;>O8XLTsh$ab6I7G$)Sp@d;>h};s6Gfmqx+zMCd`d~B;06eF zFOr4HB0AzI26KE0&h08xOVr5&ze`I(;+()Cvg<@j5K}fpkMZq(4CGspS>dhDg(6^Y z@7&U?Znrg2l?`(>SF$jWQ?;lucrEtArYT5aOp!^Ze2^)OFmCTG?2&*ad=FY1MjbvH z{CLZ(+u6#&wvg>o~=R zGr-AXL>wxMjkSpUxrYFsS(Q~{ipB~yJzlgd0JnrSg`v^;g#^p1Oot15^1!dJ*AtFA z6;C>C@3}oe-vx|{s<#Sb@sQz4MT6|5u*0kFqP{niQ^%z`^(3U}O?PLz(Kg?_3~K{41;mzB zQ5!`8CNm`+DJ%}^do@AkeaW~*vLlHprli9^Sf5rwBS5b4SYZ1gYY8&Wk$A4IwF#CLAfS`yX1Z4)6U!#-qPuajiK(R>WN&Ec+j z(jeA~5B(%-mpzA6?PnFxu$vM9uMewW=t-M;3B+B0p8LGjn*CJV2pmMGn?J6y9kyHA zS^C@x4B`yXvbilvQ%-xDnb#Wo-=ox{XNy-+sA?i7%wy>o|oGPM=+a@wyKG?+C~@f6$XoIo(v{9^Zk&$7?I%# z0_m6hxK-Y`)knIZw1D1Mau~ac;tcd5k0zCim(0T5s)~CUNS0k39G0&}G|tbBI3BFb zK>2+jx+i^ZBz%SyG8L%_t;(`7G>A z6!G-gu+1T{1ABs51zvGkl(pZh5K#YBQx@B&aaIL>?T-Avl5^$z2QL@0ll`83&DB*= zE6mL>$Slgu(1XE|l~v0Pf3&2BeJ75BBA*6^0iw~MppjFILiZ|J9T@>lz>N+^90{$8CBlvg6^|Dp&FPc3g`g8@jnF3J{Oe6usU?U)if-8|4 zk`WdwHe5wes|2EYHQkLsPRpCvmHtipL4K(Btp+pF!2iQQ{IC1_|K&)4p@C?$|1l8Q z*eA(l{|95i`u|`oGH@v!z|dmA|DDjM37>k4`d$A2=)h}W3hvJXuO9%!x#^M=qafs7 zhV~Mv-4c5LPQJIi6N|QOX@PmhBDUqprw+3LLKJ-z?86JWkG^}6XrlZ+7&(mJ6Ld~0 zcf(a;?W@AIkzjIr&Cu%T01%bw6f?J%m}+K36wZVNAI*DtViBv<%BSjpG&t$IJ}RxL z7xnPP$rQ)UKub{GS|I;{cABFLNgOIs<&ivP;^X=54=RWaEFg3@5 zMGsvYV1u~w)=>0z*3vh=2^Je}&OtGzEdl-h(KDp?=62t&Au*=f}YJK)cVACTTU1BMqxdj?`u z^P!W}HWEiCc6h;4w5X4lAA*^NLpk)OwYKbfx#F8530y12&350D*s8pi3g)ajA>1zB zrCAg!=B37}E-axMYl3^b&$YdwhpwCytKWgsnEwj@_I1|zV>A22{#Y*?u*^q_pB%MWRsdDJZ(&CCVMY*b)CskKCs@ z;dfQx;@>vPq0r)&-SDX#hBQzmJ z0T45Y(xM-S<@w0em-aSz#=(yK9c|JaP$A2Q<7&4=SRm_`FKeDhn8b1<3E$%MVCVcb z>zqT3D(Sq_H!4^BoeGKvBVxu|IHeVwP^D?VHB-l* z^PV_m^=l0Z)ZDS(3qPg5{z1zD^3=gHjCyH-fYv~|uc@GSS@A@q95AXdCw*YVDXowF zF$K@K;v?wkY|o&i{w@M})-&Cq;!>h?->f#wdnO9EMjJbto2({}U%CaL|9Dl1J6Qh- z&$33#Zg}^5rI$$iP4b zCJL&lk+sSQx_k*>bALKTQ1H~gArpy4PP%&VgD(X}$`reRI(sxSG8tvlEE5NR@9ldS z;^l~Pw2L?e{!hK~nM_lc@x>M={>IaEz9j=nk5)EQN~~Y_1`)@26P~O`u9cqGC4ToB z2`{155);X)G+a+MGxaR^is|?EWY2vY($1IQ5~aDS=F)Th%~t~d0Z?+-v7c)`@5`c| z$V)Ki$B*f*WD@eN+l`vd#;m8PL%vWhrq{v!y;eiKNv*5 zQ?S)Kbx#`vWOX!N?Ov`cch{D_eB9CW^ADK$1nS6Gy_sfo(k zzsvs2y>r@Vjn+HyK@V;0?Km(>u1{MOG@9oc{Uk+*#zV!!$D=2*PV%Gv$0Dn3Wz>WZ zW*&#!a&1+oDWu$Jf-ztoKYPyWYWx}kJNbch$I$sfII<~dcluQaw`iIuDVw!Kc==S- z3<~GwCo>~kt?Ssg0E!M6YeF70<8R_a3wV-g(3l$N3s6kZv(U7%iDar=W+BR(#3|zaLMN9!mMDPnIsp7Xy@YW&GFiv_v<9^Ba{~Zj;zNbX?nwh!#xRH4kY{ zN`}shn&Md3X+g?14dGRxjSBoK(%te;KGwxf4bk6&cJmV;=tU!TasGE_Ah;s z>Y9sr5Uj$9ga=9zk_U)kgz+-GKgE{nl~z)%I*B9bkeQH#Ll#q&F~&y7XpLoA`j*|8 z5#qKjg7G7`tss=boic)=;R)5&GD$Z{PX!jaD-fKfusm;RDbe8C+!p-&gN**cSGTeQ z&wlpmI)L6(qPz}ent_3QWnrC}i8VEuL~QC&^Ik>}lL&}ddf6DS+ROjPjS52=Z<_5o z620fh$1Jw5Rb?oTixbi5W8B|npCW!-49mnm)7Wvy#6`x9MLiJ|&4wcVf`sk8K`Tu+ z7`B|t|N0n?`H^B$qO>R%OCvxK=8g*3n}-8??6J%PaVsby!eZ?BdogWz)qqnB4iv1A zXz?*)g-o^Ud|_Vn!)Ftjnb@!TOQe{%7qO8-<9TY8<%D_Q?70WJH50esiltMU5kPJZ zCb}jaC;NL&Q&*@*n6-AMhH3D+BXXn|Xu4j#ypfDrFP_DsE>QI5WlkaOhHy!sjfSqw zJR9ku!L6@sNDXCpYOYsY$`PUw>BIXJi_Ps3x+V1n&dV|Sot*iy^I>iDmyz>B>8-;} z>hr((mf(a97;LaVF#!8lW;www$p@k`S0_={>Z?7jVN*l>H~V>Y-ETUKwiSK$Wj@Dd7B0sqgeXEnK4UIp zPDvSQ$M;)5jvlVZ9^cT@%T8UEDyTb1i^*2y(a{=mf3;Fk8mCjWnf|OYN@d?m^(I*j zgk73FCn47K6m~~;MhvBMqhBC5Jj6*b`fhdU(~?5;GiIfX_}5w*DpowDuhMh?r=TbN z%o3Cay5P~zKQMo!t=!^oDr2z5xfs8p)yrm(Bw=68M1Mr+#`pDi*&5M?H7;n%DL<;6 z6K0%r#J$Ay%?bKW$@h_E_2ik}4SL`QMi5_1V9(p{N*hg_oJ`XEM|b2R-sGDGY3DU< zLJm*aI<3u3E(*Y4ZM^2S0c@_QrOP`~L>GKm?cM#BBt6qvmwJ+_H=0P1FuWuyTNr?Q ziq2!YrA{J#qm}AQ6ePW66&h%1(}a&seV!%kJrv<(*DGc(op-m9%;3hU^p;tMwLsMH zJ_TRVQ}teYlhTK6c8F@R0q56@nb`4C-!U;uRu{Fohl*Fbe$M%zav>tfQB+@ERb0!Svy3Fv>daDnF%&$6Mn?M* z8Zzdz{2l6Q8(HK)K6rhiLpvH9kF9} zPLkmjZ6(%0{k4%74Fd)lXZ-eUB-d)d=*^64`l}gKePp*rHYd?O_HbBTRK1HOXme0%iO5k zAFpqp`_<(ol8Os-$VWX3QkyGYAl@64Tj%j%bbby@5xqr5G+X1-pj!58l4O=?G+zIn zQ=HP9eeFT>HA&4li2(M^h>P=5K)Zj*eNYF3A*bc zG7|3qjJTFwR4kr)U5ap&D$}e2SOwPg&^!)?NWY&@A1TfmHk*-0a)#YC>T2qn-=mwO zp@lP)#KFU4Mdgbus(_3bPWP$*HxXVyfq2 zU$#=U=du;|I<(w-5aM1yZ^s#qG{^acCnDm?*tzI?+#)LW$T!#2F=l?_u!x8`EZNVN zcrq#Uc&6#~=mCoOE00CduHVObi|M=8#@L61Th=>e^i>`xX2XahrP$-Zj@3NA21#;R zD&U$I=^1G`c{gq_esJaLgJrC)*`3o#^@#8B^*kb$C4paBK_S~_@K_{6v;y%rR*s3^ zOkhCBSR$~iiVGm46;hwsk`%k2hRmOL zlj)Rafq;SvsmAMH_(?>yfpio^9u7MQcLG=TjbE?|MPT?q%?@&v3PtkAcsVWmlHA4(3Q>}>5tnC%`iU(J+gUPrWdL{KvyEJR|ax<-4bdSc4Ive z83v8-fL>qeHN|*_3^Z;K*G7#H!kNHapc`=wIo-7&R1g9^}&37a?0JO z6Oo&?C@05uG}yyVcZUE99c_sh{ zmprIQA~I^axD!4lW-yjt?&WZZD6O&{8x?=cZlB#=t-~f4gG+-;QX6I4OdB`Sn4i5I zL+$(1XM4RN*Rmw7rU?(JA;)-5s={Nz{Q?sA3zgJvrXh+pEb(CoA}ytMp8zwShq0sX zTNQ_?{jX?UQ%x^)Z!G~dNjW`6-N9_P*gN1l00|ch{hEK zZFvP(( z^fH)(b?_&ppL<|ur0`#`XiR#M-f%6bI->RR79kjg$M0h}Wgj_s@Y?Zi(KedZ)WXA2 zuX~4l?76(WQqqul#(M!qHGpO*=))%EZpRP}PAp%77CEg8nU*dW9%-lK*rPo3|Hau` zM^*Lp{i4#{CEXk8F6j{1umJ&;?vfUy1vV{6=cYj^>6Q>S(rj8%q)P;(yU)Vk^Pcyf z=Y8(EW86R17z@_gbIxzfIluGsjYTrI;d&%r1#2CV{;X0lpO1InWs&?ma8=R5KdZkL z)C<3VuaMTiPqEG?0lgA9qpLeSFX)dT%A;M8W9D-6&pn`f`|ep&$fnaNcY_0#u$07E zD$8v-&OO@1<5@4Fw}ON6_QcTXq@L1@5e?x4w=(0YYEleCmNgv9K(D1$p*hYe5=yU{ zp+f#&>kQWiF>JexcUYajZ+CP-D>Xql4I1{*RLDOW>4Z90smleho{4;$6Z!lzpk6uR ztLCro8qmcd_cG%yavu7xmqEHzmq-X_{Ag5qC11iVZ#Y-Kw|D_6jgD3cUYO{N(@3pNc2q8Hx3`z}g_Uh=w^( z{N$lp2u=YCb7BY*ac;EUAD9Lq3LPeTybY3tZk`UTA_a#6dcPTRCMz-)9e#U$H?zM4 zl**CmAKJS=W#GTI?n_m|K9scg+3|R{7;N|6=1;2KTkW>)&DDXUoqhV*fe;{V1Uu-L z08$N5y#uAdCs6NiJU*)+cSXGznT-s=WHwNo?PnLCN*v?!=>JNZC4Rd?rI;7{3&R37 zSr1DV#eDqt{EPhk9dS9VY##eR9IXF?GoKO`aD_w;!!1N7fC(&Mn+h1aY@Z)%R#juv z?#dl8xW>~3Nxd|4jZd3PPE-oQ#tOH^>559%$EPV0N)p6J0ynQ=oR#L z5Zdmjjz1`~M3@ar@!ATM@sbw!LO*~!4L(^(Aj0GQ5TX6w9DuUAPKH+c(9zqn_lLVK zDI1z!&@zCuB79gQ9-1O~fsgEm|IWk*(tms&^X22i@>cOgQ3=vMe}ECi;IhD4y0LKn z78eYQdg1vD7VJsDF75@$(lNI=WEiS@Z;mS!*$hrE@nQY#I|88ZArI-Hd5?J^ zn*RzSfRaZMK2p$em9uxV)36{SSLdS-HZDfDItUWl0AjJpY^{DF3F^A?Lnv^JV8P5P z4ID$*5!>C#L#-!9Ry_wKbkQIG9?Rh>dpSD|;Dnd|yNZ># z4N$noTvTj9M-%EmqD2V(o_7{!_Kt8{j!wG}!z;5u-l@bnB^VQn9o2{+=&07^i%<2v zw@c%$c8Xv0m-B$wb({!M8QCrUgXM);E7LlsCzxS$G#C7Jg6-)`Lm~b%_Wq8JnY2WF z=~R-3%oFGu)LexP92Jw(y02z9g$>GHn5qMHk8@Hr>A9eJqj2@Q-S;$-Q2E7k zmb_N##L%Y%rPs1$@6X0&l;W&9>+LqL)a^gVmJ}F?b2G3f>znyL%JgM0bgUEKi-@gH z2W6&B^xFXR(VBWR5wD0TFLdi({9;<>CjE^6i*%NM1K*c`Td}9m5W(DKeZe31Ua=C z4k@Ma8!)Qh$K)R&;Dj1$^(Y^wC&WraM6SLIWTSi;@TQ+3%S&`R9+Z8JhgFGc;+KUc zjB}YdGwPGwKiT?lQhWa&>EjQc86+}XH`sPE{(o4T{$JvFDF4Y_eei9d0`dzPX_w5g30K zJ|ogSOeYIp5luetX*^J?>kl3oYNX_I8JMgD7A3L|CX99nlm72Y3K)M*upTAM|3K!y zFTn)Lm@|LNFZ>a*XUhe`Hk>g3D{RA3%+gX^$bxU-g&Ht7Na1#$zS#LYmz!DVz3gXF zFsab{388z&QU8qkwWwS(VxC3U2IRUI&0l$hGT%&0DmNBJO|gg9Kuz>VgH-Vv=LV%x zQdDqah}r(R>&iFSTft-hCGod=^GUoZ(8_XCGR_xWzHB_1_G+Ui&dAQXT_J8CPe z=dwOtl|}G7VQuBxgyJ<@hNJsWdap7CwDg*PyddRTbDJuUrw-Ssc_m8bNT}6|dfTYm z%G8}ss2l3tV8ij@pz65&x@%{gJ+$9Ev^Sw4ml1ZJ7Q?!16xidc=b~j}QTT$D3OXC; z9~Y2jd;}BPmI`edXMESA<0v1h`kbgtu}_e#+*=Ip!s=f?K?09c(gomSy{QLoxY zxHRXNDKOa7`>6Entk&Jv*0X0n+Gu2k;RxbTzsNUFKy>wGhiu;XFr$_IZm0>BANPsS zzPD4ziPoO@@aD83Vg92KzO{WXD=76UOWssL#&;LBaYH?x%@mKfCY+4-%-2z7?dbf- zY3PtVqmyhA!^7BTHs)$xmWwmP-r(P-()ewEDkh02OuzCTi&5btlpn2QxRGO5r$I&~g@dLV$R>sj1 zF@?>VvGPWfVSn~*3)L8+{*@r*;m+Pt=0L#W++e_!o3Wcac=KgbY=a8fuNrBVk3!!F z8MW9gPdpjcs#OKgj^SftHN6IU^oQIN{TY1z-0s?pFD<+4bDYfZO0{D6e!XGB7;w(1 zv#fr)RZT#wl}|#-z@{>x6fu z=v1%8PtjvBPe*$Hpp3l#xPe?eAsVCP>MKo>RE}^F_y4zqX4nDoztWhT6vtC*U_?%+ z6wnUUE?L5b(!5t_M7(GT&p4i>jlKG)H~E58>+_S7F*Ug_h*uOMU_=pj+o|Z!uS;5S z*t=fd-w6(WIc7A}6f!)NpiN(x6+N~QVJYreojR>BF~>hN$avZ4;2UXhkx~B!6r+#9lX15@IKC@n^)*XxJn>vVBJXO$r>Cu>tHs-9MnrO zq1Sk_EXE#;J&}%PFX2k&4K#fuYhF*oIEp?xRctnSXIM3N$%lR$J_1$^3ClDldVMYOYO~o_-edsGFffVg}N?ZlmUkw z4=OhB_0D(o+e8z#T5epebl}AV6m~Z>X)$x+k*sSwKXo$E=He(S;hik+?`LHC=JJY? ze8oyqNl)(z`rib*FiqOXSEFZ>Ql>)`Rl{wAA`F>9$A%L{KZ0N0IM{1s=NcE?z`iZ~ zSX;G$Fs0aTCuo{GW05UbG&TsLU@t=aUcN^F|P~93qz7u}N7quv4 z>JIi27ky{_9bOh-3`%WeT3jj@i4S2$~YJx0toR0Ncz9LPg|(IU%9`!r5xS< zwpzS2H4D8rb!oqNgQvHVN65HR&d!mPK|Mv5D36{Np~k-S4_E?|kY|7o-RH-W)+Z7?`s4&?x1z(9w8{nxlf?x01l zh6NfBQbT{-6TILeVioz5@wrA3&p6>LZMEp+le5Y^3k5XNXGrRQdQB`XL~FX8C!aJ% zNNF*jrOHRx@~NT<_Xc0tZaTxV7iMQEf3)U`?k`>YVTz@{`_(8YA^3I4KgTwt#odl% zzGNlu;5$m6x+5W#ls%+t&-~+52!=-a-iH1{S6L*~D<5QXH`OL7>Hk4I{ZDQwnkYp{ z{ITJMS68^d(zDR;m}p17rxqu9{bSO!?_+U7?zhHUjdQ=ROWV5tUEGnk zjmK0b`dGiM<6KoR=wpn29X---i*{GsKt&VOQ(=nQZ5S+m4?tdLC-Iq!Cmj6Goqab**}Ch&r*i7=nTithe_XwU zdUc-^b$}`rVzP*^bxhv5VroT5@LW+zG8k%iFG$zT~2w_DTQUd@+T@4O8$rePr6S zgu)nH3FI@({w3dSB1ZQsLy>wZK}l5tRR8W|>RrT^&j<5K359t0nPX^<-%LWGo!gvp zi*3XO%y)p{xRpg03xEJ0exlc0t-}A?&v-X7|F}V2@0^g&2=;duJ@1tu~-a{4-YyK?RPy9|k)W(G}3s7q| zYHV!SIA=rsUf3Djs0l}#^eYl98z-ZKa;bccZn(Tnd|klqb%*1T-jwDau;gNvok_VioG9;{3A%Zkv}@Z z*Y3&K&F(Agd%ni5{@^{W2*pJdSrf#+`osr(1|Vym5_Yjhjc(wqExViFL(^C?kap9@(&D7Q{Bx}dYOnVy~K zw@a;K#o)-q@=P-=n2oNgozNC_RQO^$T6UE^J$-l`Zc}{8F5%=v6=#wp>N>tFXY=jg zeSa9UvtuG{dp2!x@S6?S4y*Q~>h&8;p>f0^vysm{6`b|=$*fC8QT@gCk4p`L;9tB_ z-|Gz#baJi}Oi4U?Cwmq_{OO2RZ! zZ(gKbOpV8?vbqHrbmP(p+gRzXE7PKi;IyBATze;+-)TXGk3~-jGQmxKzOR! zH}w1>g-V=t9~xmANhibTHg9&QhDIyXxe0CW49qHRQ=NU!@r1*Ed6_8Z>^=djd#RIh zR;+k{Dv3r1+oA3v{|56%?MT_!I&}y-Thy!2+L^ix8t(D@U`I38IW^EXSkx(r)x8W! z|KJObHpPOSXi2Q=K+tcnO}Ro*@CJz?_nXhMAM=Lt zVdCF2S|E-uFZru^{ktcM7asff;wo`ukZAu*<>xPci6^T^LU!G3DSr}@ zx1`xVd#gfuRu??H7~UW*!bc^iJB(~**vs@p1D3qsRPVC{tidPdv%lvTO326+UMLif zYo^t$#$D+w7=G(+eyvws#3h(sN}Gl}QZHpL*Pe;>)93>VV->Wv+hE3EZ_>Lj>-wJf z#|sgrvU=uCqanv!sn_WUp(!c+)GDd~)gl%Wzs$E#P;wiY<81v+v-Rz?#<*4lvqnWN zKe+G>1?%#TkrkdU)3bEMMj9o%4&~y^`!%{x5$lZPHw!qsSA*+q0SDu-cgr=mhpWDAM^R@;oGuM=)LB&Jl0Ao-BHFSNbkyW z*Wet3Rdbm?1tPEG4j#*SyT@NQF#w%GyBDD1#iBfw{7Vo~?Bpo15xziMtO$v6w5n#wxzWt;8=;C??I-%TEQC?~gp zrGA^xv7~n%g!mgpkyzkd)u~0gHs{gg&PaSKNZKA zcHxENXML$_?ZU81NE*zGS2Gc^k^nnM<2+AS0X+vek>nLOV-ycE&Iyx(iq2XQ?@xvH z*>*D5&2MtP!Db)$Gi;COP7|)#mtQPcB&F+FSp1Vn(^MGCQfKnXp_VUfJ#NK$1`~ra zleo#(x^BoJYAI=C7)0F{LUuziU%5O&-uTp^LN)!Q4Llzf+UMJuFL_C-4RkwGsg7K{ zw=9HhnAv)$t{>3K>ZZ!##b~ncQ)VJ;&Py;V6nVS zi0($DJmIBN`pY8v649`}m`-M;hbAM3Ib@V_GP{jcE->RbH*{2tZCWA1=0^jU4hvtL z;tICCI}6^LVqhh$<)XBB4hM&pe7Jwd@w@bbqg>60ueJr95CnZM%+ZOuqfHF*PvHv1 zGRS9v^q#T04r>#FUaPBTLqG{EXzEGRta=nWIie}utZI2+Wb-4ZIt41%xS0IQ^7dbY zpLIsQQ1g-3U%8{RK=#VGUe#2}rb)XU`NtkNNk$|xIc&3y<2FoxVcPC3cOS3AZxggQ5TOTv2iMRw)XK5g* zqlZ-UQc}e8tQr_wOd{WgA#1I&k8hKh;#ae1_SeKh@0lSo+_;b4It;JFAWkr`t?;sX z2F%c{GXE*r%{8K|iPIep(5K|B^@|Qd5OIsv7|UyXsB+o|_cD}l8W(Hvcid@J-pkEG zgUmY+q)eS9q=orx*@43q%odt+MuVWMWC?&)6Fq6b4 zpmvx^9Rm88BoCuM7w8M@w6*DoIar)tDr9#TenJ<`Q5|BamyhP@S}Y@atHPx(my{A!!xre%@l=F-TAug=*9(sQSpj9xFcQc1(|d!&0vZ0v z#bnZ*K*2(Al*b$js59v#!ipH27|qwwlI8|3avO_m+u8spmgIrQXkz(pcW{VF%!!K$ z@yrGEig?VmH5i{!-e88>eP5t;0~$7I6{I3Aib%5NS|Qj6#@Pm;hbBVM)PsM$2}RWP zixD=haf*Y3J)U*e+x@BqVTgK6F+oTH?j#9?)ng|8DXZRF&dMBc`aVEC(Asas2pOYc zH5a&;2kyr4sL{*^U=P~=MYm3TXyZMf@r}o(*7uC(BFrm4wdz58W{$WRmO7_C0hmd* zXB_!*n+Fk6fUqN$OkZ! z@E9Q&rrZj2z5*pDtRDO2feQuNr1@q0?64090@&ofPo5%&CT>^rLaG77t=rSpFT3Iqc zE_EXRXywoqY~}y+VBi{W2KWlxYV|_Oux2T$>Vz@_996$p9%jF z$xRDR|K6B+aiyM}&+n2__+}qtCMD=ZB>ZzD;1530QBQN!>lE_y=RU|*3*HFa@s`vKZVW4=x17a`G9!JyZ*TYZ=IQ!{Z^I*(cG)oaYO znb~f<2$>+s3d>CS=ukwjY?>o(C|DE3Y+k!X3_7g6j`Z? zU4KlYkfzf1z*r`8Vij#3^MR5w9%Ww=(cgOM<^RSy zkKe|P!E6sr8RQ>X0t+-S>VPgK<+LLnfWd8V146mX)iLnt_^qrippUQ5Pde9C;u6rZ zCVy>qTaAj~#PcAeS*8;Zjhn<=LMkm}?iS`yvGJk)cOpw(LB%rx7GB8}kdJv^ z&9cYlz;rbwMSRpIES8=lWwC%7^pmgIXKuAXT4K;C*@!BPoFXIE0AGefuEl&@7u>zt z#3xQ;k>Nj0QJ(%Q0UG+0b0Zv4A*sW1nC-M*%5(PlC2{U>sjD`KoPYKM0qR7q)USp1 zs@%ti318P+xbliybYfkZsd?-D_#0Bz&4=kgeSv8Z19La;X3?9PK;vH;zDvAS4sfa;ri_j|0Ywg#ES}JIJCUsWF zGFtRyt5Tm|-su87$p%w{C|vDOfm%jtdQuLzK3L$R9ji4l5lQAyqq*C?OgJKe-0LTwct@mNxPzJ?#U&N+VOvK_ zFAL(kls2nWXevEJ7-Urg=!#8@za%?F00}P1+jeP+mBftKLd9lnL8NnJP9Kq$K}$2F zD}2jnOn|`^i!^*Th4%Ww$OL^M*L_xl8Z_g2>=CekgbqelJwmvr@MxoUPcHn#tZzNx zTh^~|2mjik@tGBusd}v-mQI)ijz0V-3jz70W#L0D1h&v=1sFj|uhQn*+gtA+2!Cx7 zlO#|RQIcCH(f>s7+v$s##F+vRONTUdCtHQ0fZ|f6TMChbwBc z`z3Q>=@xC2D&~fRm4VX>Yb@*cV)JoM+vi&f+L4yvWI4BPH=7iA0eg`Rm|YKkvX}mv zUB&r)ud2erIEa^QTRVY%%$-pAjX80!2SUzm{aAZA@%Lq-XLBCv%cK{S%wn1k&7AnL zLpc&?2a>!I<$v38Zyn4{#L?kVRt@sAdsUN>_qu|BJ2$4139NlwNP48S4Nj_}WRZN9 zB`=n$I10l}-U83FxpGD3@KUlTHEEUVYh$PKlHD@kmgjzrRMRvaxL$yBI3*){5nm>1 z7rEuL46?vP%#oO(U7@Mw7sO!Dv~lD}Sfn1$S;ok?M-(Pudeo^osoD>{!Bev)fu zEg6HB96Mjm9oMrIBVQ?i(FW+0FB45ZStPR-23w8}AhVj5HoQUhwv))#yPkS|2gxQa z)AKqWDM zGxcE@hk7P1+~@prPjRQ}&hUU&0lXY)Dv1B5^st}!Y^0*wq%7oEdNtY(zRMY&$Qx#g zhq6h1+g~w%{ zbceA`?!~E>oXV8!-TP$vgso#LpFb(3Bnoo#{*zqnWIOHkj$Z!pM)pKA_2=}{F9MqC zE#TMsq?nQ`IInK1hXp**pAIhZA*=v4S|9wq#;M&u&9rB*7FyiGDq%b5nQz5KR6ONu zU9JW-s`9#v;u;wOpxaOE#}W|R?a2en?N;lgOnXW8smUKsO($Yt=i?ED(EhzV*o2r2V`} z#*kK#uKP(NgPSznsz!+o_<>K-7~3I{h|_P28L;6X90@3@in^CGuAg&S$0^ZpQ@klj z!IZHd{=KTJ^M|Mx@LQNR<;~yg1U;Ko5kI5rkab_CG%(+(*R7;|a;2)O$xE?(XNiI8 zCZK^u&r>oc)6^RWV7vc9(0~=>I2)kE?dTL~w}k@CAtRAPpX~eUspyVVB$6dT$|`{f z9&~m8tCJ$SaWf8Jd;UvNof?_t2IWpKc;TF8r;nvyChFVuT0LhR3ENNi?-ba(qAU7} z^8)mbSQCSGKxKagoR}b>FTV~L7^ZI90+0MISCt2ojh{6uoZiQy-zrvU<=HonHofdx zYr1+b&04J~mCgkQ%n>M!=~ccH^_w$QWcu7ML&Um`nL-m)!cj;IbJ4#DD4GTq9K4M< z>(k^xmKpmm%I~#TWme48JAL58w6<04z0yVJ#oW@qKUriUe@xOa56w@iHd7m%K( zKjEyhtO*s83d%xW2E z^pu>>V}Op}ZdO|1WA`_>m0#S$zl_;MDd%N25je4`&z6$KnWo8T(@cVRp5jBEa!{hI zkJki7?h`|iJg4UR&)dc349eI6n^r@Q4@uI8EvUU2T4B9&X%VXSgf^vnzR*66MNbE% zhz+ke@GvaSFyN`r%(h#npjP=@>dzoxl3503`JX*On#hPpRJX2c-s|=5(ead!(xfdy z4`8f1E8hy>7~i$P?pL~91@1p-ARqGS?VOQeZL8C=u~ zj;Uo{593Zzs*70QV22Oc@6DdVjc3La=SVt~a@)d1`g{2bM9#%gfq-A>=y0j1!XD`u zqM3b4m;DS`y~_^=KfH#XlWEe;UhwcoAflgLah~m2+R6Gjx!qKOmzjVz2>K8Ej9VvZ z);=fW)212hRs?0sI|^pA4vGpDZ+vr~_o1D)m4fwk_9(j~@VkH9N-nUOnjzxo*u!RTKF_K*}zBRruQZ97ApljxZo__g~k>+^2 zGxru110Ry@$U3KpF=W*Iea#Abe<39D_4QWMeuLm(Da6NaeTK7uIm>~{}q z<0Xw#K1xau_($G$s?#LSME58&0cAZuj~4yyyVD1(?LiYKN34h! zfMmJMRQsEaIoXC8P6;GOTm=!Q^n)?8-Y~{Y!_3h^cGRaCs0W3 zQuTMFqE<~taWi{55kC90Vl224&#=~YJ1wK~Pvp?iyBsKnxLKn65F5R%NSlbItYFQ^ zWj})+Phi23<-nnZF%n?b{I4wEPL?9#nNJImK^>O8NJV$g^35EO z&3s$!VqcbXJ}TO;j9xW?zmm>YkB6FO{XS=n!qACrFzjYok`JBlAyX^2STGM;?P&N8 zh#D2{#~h^ovZCa+05ESm4$`p#S`Wp5~s`#*V>$ zt>+I`q@qS5w@a-^lb_VYj9${5$bL&@LUB>?ButymemdW3_rCecqk|SO#j~Mm@5CX& z4(RxNr%#tqZob#^N^-u>YT~VUCio@#ePHA{jT)2aj|R+?OVh}B%VRUu4&5`x%#4pLcw$GF{DYxIJcwf(_i7GPT*12b5y-oA?a{<-wbn8$PyFD> zc3n4D6{chnIv=UChuN$(PpbogGN!UDjb)LW3B=?&VbPu&&DWVP5WOst{U+qu#dNG} z!u(R-Y|Hiv$|@g=#MhAzaPvbLhDrkP$xf5T2oJPxFFtU1r&0>TNeKTCI++RT_ z+Nu2u!P@=(gI%2;HKQ#sgQ@vR`LJ@f4T#)^=~H0JogFQ-qnhDFZaoxehFtKK_rg}& zyeclt>zEsV1eTQgH;jw0`Fzr?*n1n0NFui)`AYQ8jmJ5SLu;Wem9p~dS(&JT5oCBt zR?pDepJ`O}Eftx4dbOnhrE>k**nfLshjXCMDw?(`abzBSa)pY-$8B`;P21DAqWgCY zC#mwY0Dojd?4qk8y;;L`jo|5yuYr%!a(YE^NOurOI$N}hz}DN}syAk~Jkd33(EGdf z*&a(g=Y172XgmUkJ_G2X&h?3y^dIE_yMvX$$>v-&W}Zhy7!(-Lx2GCDZ{OmO&G;^Y z56PPw0})Mg8VZX{Y{3P*wx*7WUu^Q~8T{OyQVr#-euS-Nt~#l31x8+wH%Gl?L+sC) zEmUi35%SRveeUW}SL?qXRK61oj1(I6f*D%Jo>pevtgPs3yPUb}ldwE0q9DmpRS(R? z4$>PFvIE1uMy6yyF~G-0$y(muz?C{5@n5t>LVsS8^HH)-#5eY1F>IaH+26$M@I<<% zz!T8@eYX&Vd_G*2T|F{R;RP4dhVxqK;jPa!9zk*rO-pUA0^XvcLiWBIH&^JGzP4s6 z_KBLmm-<$4N#0Dq8T&qP%PP{oRrk9*dCguy0XR?5LPmoPibnFxMF9S6kAs|#Y@Y~w z{FBC$MJBJ8$dDrAk2e&JUiN4s44PjSi_ETOC<^YQ{*q4NCpTrdo(R$m3S_sir%=1k z)-agme!a+~oCv-qZ;q|RlY`c2CQci!fARX^ym+t6wtyqP%XQg3CwvNsZyWxs^4`)5 zu$FK8psvf^QFGH8wkdYR)@MXIr_^r7$Y6&D;P83Dag&lKoJgQ^_$@K=d_WZT z0{=4!!F*@N8)RQ5<|3{sou{Py38QMLY~r!{F=?nO`Lf{Z%D}YgQa9VVYwZ$f;tyDi zia)#G^KPqLDb?;tPbKt<`pW=0BEeA)}0c8&QJN3n23Im z;|+1WQe@gu1@UZwq?C$6r4mG6uiM@I16G7S+_o?^g&Y-0Dtm4oOUUk8isHF}pgKkv zB$W$*RIKA^%GD@Ylo^xKP@hAC0F+a;8^EQRK-lSv1#<1_BBEQ4t7zX%u`)>f(Bz6uJxF5!O#7Se{z)<^fKXe_FCSAhkervW&P> zbz4ArSKz$>qD@75k0u*AC@=J z<>cL=Q1GEdKeGy0TO=~lJPj9cX}rjmr3Us_5^|0=iI#GopYL2^-=CAP+7J?8{Edlc7JDA?xtA z{XS@vM-_Q2@-^@IvS!@Qa69zJvke+W?g?Pm2l{EkDIuKbU?o}}-YOh>&u-~o&7z|S z*=x9~8OpqZWAi6e3TveU+x)*s{}a6aY@Ulu44fq|6oD{%coLIVTOCp2oNu8mvcD`N zp&G)IS3FbK65QkZvPl>2^b$I|lPu7XKN{iX@GmN^TYo9sCP%R2Fco36T?clrN2Lm* zWikwY5PWH?Ux>A<{psdA(Lb+*)f#7}{pygF0_fR}d*6)4sJYEBohK+;`# zZ~JS)ncrtAtkr$u*T9=Z_b#QNv?JlLb$$3;Xe{n=J(PXU914lzP58uymP-1#TH%YB zHOkfFX2+ij2~$(6YQA<=&r_{rY@SjSIfk@g zaPkX!j6|5GKl)^^v7Y-f$NcWyoD;a@>7s&iAw77bEBS6Z<{dezKZToWtqA8wigVwA ztGssmD~u1PsIfv`hCXVe-<1>KHV#WK~mE%T$-^KUznH$})2jo((1{aLeL(U6(+&Nc3RpjW4;3>^-Q8T?IHeW|PP2KITj7hv%#qX+27tzgh02y+gXcE(-z=~x zvYbI3z19Iw^19bYvzHFK%e|+y(OJzYc6WIKly!c#f>xI!HvLBxY)SlBIwB%U&c}=1 zV>XM3ZZ)q_7T;v2C&O<)A|f|R^}a0TI99rO;xkSwD1#hQ_aEe?q`^p^onC1Mp2Y>H zMJFSGJdzDxl-+P5tOWg>nxbXH|L&@GV|*Jf$OrL_$}&8q z2z|pYl^(4RucNF5#=>Ggo-~{0K2>Q0p4Efb+ugtJhvn?~ald^z5bkGpQ?63?EqiGhr0`!BgP5&roA>}_hp#8j z;~W)|+3gHfEZ74x>wtA;zwV_=f~Ab8zR?5JZCX0!^7yg%T`dzikD;46RUes9)lP%_ z;AxUPh+o?f7@!CAQu{+mX?-h{mJTD}`d6(-$E;ig4#_pC#ovB6=K9|z@eelMhR2MA zvF{6{_#udxHmP1$mG{8h_qLm2*_0!ta4J?V#^>LOV< zfnfw1$tgiPU+cJR9iUoW`Fp0`bB3yNFaHu1<_jDLPgQr@S@iO;6GA-L71mi&ls3$2 zN9kBi-EO(bx!ms#`>&$4eyQ!dYMVO$AR-u-Xb{RhKHR|8lmL52fBuWuykXToWc_}< ze*j&>n`YDsV@;8dV)pV7EaMi;fpPf(-pO;*fh8K{sz3UROc=u}7ux%WmJG^2pC7A# z3SsVOK{h>76*D8c7(aT^a8KL@QMzZHk)<)Ex^fUiXl~8zZ_<f z4H^P?0yn%q?}tg4WxRt~Zh1mHuat}L()htQtaSu`CWIUg_~BmP!i-S1Zeb@@wXM${ zAd*U9CNeK@}|U zzC02wwZjI!TM`FOf5iR|cM^Fi{hR?lZ2{T_{YTs8Oc2~-cN?uotdwfO({KFjszab0 zdifjm9qLb$ztgn?sy2VDTVCd>+t&~K(+BB;%|E_Kj8#>FulIffLQl1C&0m0xY9{>< zc!RLBoG27^{JrW=ehBqdwOoz;j2~C!^o$?mm01&bryRt2w?;7(f=#ZD#v|4)w2K!K z;+YGRD-l)O2T3o>->ne9{K?kaYGG2un?8wpGhHSv-#_4 z5(CeIHs~E|m1cMc&ol1xCt<<&+L>={xn+h8hQ!0TnXR_Qw$y+jhHt2Slqe2tE9+y$ zzc>l?*rhI;vO4)=zW&f4fJlGmeAi0~an^%R!ml2`DQo!ZL2wU;M)Nky!RxOhgkA6V z&W9$j_ZSaY0XT^_A>>#6>Y4_d>H8Jt3>Pm&eLUyo9x*I|!@44I^TL zc!7llafk;f_W0248CmN)7)EKE-^K~{n}A|zj=a+^PX6iTeh)8FiibVEOr%CJ1;7eR zY>=or96IS&B~>6LbOx_?>~+sVz8sGisi=-f4Z!9vGIN_)SEFUK;`|n4xSVC|&uFTu zzU7oIx{1BwlaK@XM=B2z${Fef;D^5)U{aR9Of+ODGTK((h~?oO^a6TeGL_fi+n9U_ zV{VJ2c2~G~7=WAQvYK=65i3*_9d5N8+&%DD)Bv{dcX$s^0X*hwdPCG!*uW@lv zwY7+v!RCT4^;J64ZDIl?eD)v_@Z=sO#)wF2KuuYhO=`_2cyD+7OQK-p1nk9`E7bdN zt9-n;30?3>)T1UM8wYcgH7V*<^R0Ui>S~l6PBdaIGSWr}t#+%~2%FUM7nlmXIpbS} zvQjHt6#|fz$P-HeKeka?4D{9;iG-cE49ihl>IG=#djopQhXG2f1qb%OFnUCZ$9cDG zE^NBgE^wFB=B`2vy%d^Y9hwOZDoq@e6VoVXzc($%L=WKdi8#M)E-b!KE8wYC1PXV}jQs%3)}7xL?k_g3VN7@zqaalo-@7T0h_+t!GT zQ*cPzU>g<^?-nb!b+?*G_=y^@4J)-;S*o;K6+luCnve=`mp<@`>A?gfW932l*Tjrn zUi)?&>Dd$-@ttc&Y)M4CvyaFBURwy3@Wct5i#_NNGXHpP&`i1RPLUcV6z(9Cg)41X z9l^=x(%fV1`>aHFmVyQF?*mLS?^=7sbxY`--j*cIPSO>}&Rk?#8&oN+wY;1Ycd^ic zcZpYHf_l!{hK5jJQ!xyJIsQ0kf?Kl%W|B}J=$|e%zF?m*NWAjU>iet#r{0iA^Rf^twkU;=}eTXtzu#lkN*LE5g9)ns2x3H6p4Q#|9;H~-SjR?n! zGyLfxsrS>i5}9}QTQACqhoGg~;_S4YkjyS0)M?$4dOvxrR9X-jeyrhyKk>h0b9PT1HglmH@^ka(T^B%^g! zS;I)00!(XJF3EM7$V{%R?YTbNA|LrU{`q6>6G;Oc24N3}!92-G-68B`)Zvwbao&pX z5FdS=OERe{{Udx3gl=OX!XfBDv2V!C_WJ83#+Z#Fz!_7awF2o=*l6tV9M@fviM+Uc-Hh<{mI;w zx6En>X}mb`TOqsW>6^R=((Ig~?Gwp&e1OgRJ`Fnlm@p|;m7D+w0HfnCw1Lx1w3&~MM7Bo70VKAcL&FGo$#vsMDLAqC5RmWMEL8=j9qU+FRI>Y z*8KwBLxg}29PP*b$dLF8k$m*wl4&%3kf^kWZrXTb9CzXvfA-rzY^(Cp;(M3{e6FhaN;^!IS^V2JzcTBOf@s+C(vm&ep>-E zbsQh)3hkfl@9K`JV}iZ=U65@crAfBCPv)I?niuD{U?kMhzju55xp_Njrd@e(A_W} z-0xs%oRpZ5r0KA~bf_!zYdrIyl}}ujP}q|rAe5~vqc3FcT+P6?5=wahPSHm-D`rdT z2?1nrV)hVTc4(I9{Np#F&LY%$Kq{>z8jId3*hGU8sF63^6}EHkR{;MxC8FT_Z8`L7i6w4)9lfA&pb@%4pi%gCeZS^E zx9Ge2AFBYDxEDG(uSb(vI~&!P2EuWe0Ue}?h^>?b4wJp5YKG!+nUua{pt2~4;=QjH zacMv?tl+{o!wsrgz!iY z#&zo|RRo#JCom5-N;qB#$?_<4sx8X(HLo)**&#i_u#|)4ukKe8x@Q@ypsi=YHnbYv5Icmwg{ z3pdf3-8(t%Ru;shpXU%21MFiY?32O0;{tps`+O*kdH4wB+Je!f#l$7Znh`3;n&fWt zNq};~&vtB;RSzaT+?WGlGU0IHOsZcvt;&~!vf8Q&xO#7S6hDc#$Syt59+eV}OJyI; z_CKrK%X2W50|>)kefQy0k9K_@a<$(1#ts|ru^BYRs6d&w z(qhx>UAHJy%cWSQOVX&>x6a@4!1FVDa z?^QgL8C{hy`0X8^IG=WeLuy0Vtfs-@%vVih<=V1LS37vh4v3#$*db#dkXdK(<;bHG zJNVmoB>#)Fw~UIb%ieu)cL?t8?iL_GaCdii4_3H4go5A%cL3Bqn*&2L062kkp1W&#;4zS;S>@najc%XXd z?{YM_i^qy64k_?Y>Y_f({7qJEp)*mr=h)C^ixsHZjm7C-2#8@d7ww*9+1aD~)YjSd zTJw3G;1lK0QG3j{&dd0+pC1p)QK@C;_Gpb=h96{~yZll(;SD7Zbt*5R`Vtc0Fs03% z#`zC@t4tDB=%6%j8HHh<-OM5zR3kT6wsc%EZ-&#=G2m672qltr4Ny4K$B%i^kDb%R z7N0$u`q=MFF98xzv^@RkiY)}>KlJO0h0tGX8_$^?ObHB&e938zr?s_{g|$gY)b47f z(v0?)@)FvMpd~F!7Eh zmAl81+XKYI8csh9LMY$;`Q>P@2*(*=(+UG5j%pMY$B)ZtPEpEqgY@tZDy)@XI2YISOpbbA ziRTK{$hjO9U{=?igH;)Ro#}_*kRKEokq;HfgQzZdX~s%LcM&PQ+)r_`Pc4&XyNl&8 zzqoBcn+X1V%TsWbY#ROhb`Q>?m8-8?%82Gn{Mql9Om`-dM&%7XAc5=J146sOmCwJV ztS3i^aZwzqSzu&3^z7jA_T@L+ztg4R5~jge6&lHuO@kfVo+j6CdvLWc6u+ZPZ;%C` z!c>O8-%7hq@T^dyySU{=TqC}NuO(d8WV*X;7T<}?RlC8tq#~Rr zy3-XrufEJMA829L6FDG~3W#45LZb(@ZtC}8P5q%Xr`)&V=9@_#{3qUTGW||MnWsU3MYL|KF;~OIZ?Yz$n3xe1B+X&&C zy{K)QDMNv)Yu~Jv5#FZ5!CZ&jRvvb&x@v^5HQHCm845;YdhZS*Ui~XRfaPYfUPrfm zrOE308XhDwc8dkm;sfa(4&g^Bk8`Py)Urj6Rwy6Sym{gv8UsV`6}M5-*8z0y!;JGn z_n#Q8xGcb%vfl!HT5a&jRk`=E*zw?J)Ir_4V^K4iV%2f};Wuz1mfzPvtwUnnALWxl z-PRHS%nNarshAE3UL6%c-TG}xg`A|yb2W@mh|s}aHD;)+D3pSg8AZe3KctI&g zay+bR`(@qQ%XuhcxdV2@{n%-zTdgXWYwS*kl$3ZZ&`k{^vN<3L`*AFFvyd^DHaMpb zXIr$T*29TotMs5o%k#9&>wK#_p%(#FmKGaw$KXpjMm!K#g%!Y8QF@WI4^eOY;Hs^# z%E-z!zXtqys4z2>RXGFvj^4%*KX{>n4F~dXm+F*-Y~0BP$`;9kbCKU_9oerrR1)bA zG0t=4#6xBSd5fb0X@KFV2=r#R8SI zP*}Kx&|t&-+zc9OK2F5K1|LaifA(nbRy{3_7^XB}E9daFG$u+5X_)e>!0=f9DJSu1 z&8&`})trr&^>+j#N~;513o$9bJG;E-5Tk+ofIbDV4+e6oV{V%!1!|GfSem2%Jc_m- zE}Rki*I712ro&gX$y0%Jh)12*XQ=#NAyu*G152NVoJpGtzu8REtmZ%@edWQO%y=!3 zQ?~i@3uQY+oT%?>Wh~CXFN_WquWFB|ljT@YljIuyy!oJeh0Q4VC-Y~39GUURMRFxA zZ5p!yIY^TzWMnjmB0;PCej72-fTb2V&2=>z ze!_YL{M}#RsiO!PD9!)hFy`FBh|pnC5GToZ!?u~kJ=px6?{ z$ND$Mm|q~t(Ds+K&{H75kqM=YtUQ;wRvQl-61|mTXfU_CG7R3KSZ#IndMRm`3Z{uD znMzGY(+KSk{ph+|(w4DSPw5Lzmo~I$%(~0qS@&JFpYA+&ajp>OsTu*-4h7K{HG#9Bm6p`u4{bapx}5kXl;Bdrr} z{UZJ1COHF(k(7{Ne%fJICB0U7QN?>EBT1&V#`SLM9?Uhqs_%R+88~O z<4iO9$z}vF5C2h6I7RNzKQ04Z_Gt0ZhnrvQ@!kHN2xn-4n_AR$FyL$dsuQSPwft-c zhpQ=gxn_!Kk&K><5KSFTA;LyyP$qP4x!!SMm-f1W`UOh4kaLlHo$&MdQ;LovCj{DR!!s7@r*w2*^Z>QIT(4KYqzDke7TS1*ASJ?2jU4Jm!T_<0WYG<9W z#k7JSb@woQEx=ax&{Iix-#CC7=2Daf^4i-3x+CgRnP3*~MigMLM8R#-92?nYBp*e2dGz;~8-Vngv>zw^BqiI_jG53R0RBs1lPfsKDUL5cMdX;6|JyR(qE z8(n3B7xM)!uw#fbblaLNf6zrzccQYek6bhL{exe7xc{iL^YudrpNwzj_%^w5Zw8Qou*y4m)uLf_&6HU)<`5N1RmzHe?JL(O@9~%j*YFZM`R^dxbQwMN zz)Cf4-(!R^vC}yocCf^2?rKh&4R)X^@W0v5 z)&Ko6PM(AW0k%p|P?|b`$PD0rTqgiXMX3eActk`xIgnonoC1>)E2kzaX9GI~IV3a% zm(PI zD;3-@CSU~`95Gr=_8&}34;Td&2%oM84J5@t!C^=j01|uDV=mpx|z))b9cD*7yP8$?{P`Q=8Y&$_*J9h3g#{q7b zqKG31i+q8MpvvX$1Ou|_qv8Xy1&&Uj%s2v_2RnnYph4J9#wu5%BVFeW=fG&lugfN| zhG%JzI-ysDDH?X`Bo}@=uZ!cl|D>(Pf<_6Q zgky*eP-ZQTCek(_A0-s6aFkgp`XN3EZ@P4A>%u-Kc|oP0K=Mj7639tXaG=6GqL4TY z!h3>(^O>G^{y~%H+oA~Xg&-k6w;5sd{L;g+=23}(x7&K7mdyY?wzp}GoE zq)}D=9HF?r-ZoC+$_}OD5#$U71%jfEi!@>;oQ#&}Jq%%6S#T?{V4?wEPvLQa?477| z?->4VoU($3DY=OGpdj#`9-da^?*om!ft~wbAix0ab&Z-K2x~M$MaB0#@2R+owbq9Q z<|ZWG^YXm!proka<$X`X(bvLB$F(-tE5<@c!^IM6%nM{2MaD;j8al%)J- z>w15>Ey9EOBV97{t<&ke4y^?R~iIVCJlg{i7&n@C1nV&>Oj;j@YGT^&~mWBR(yax#Q1k=DmAf{SB}uODQXX? z(03)!&i^PxkoTY~M)V{Xn@ARFH&A{Rjvt8p6&4;YDvfmuIS(5LD2fk9^T+EJ*nYa4ggAz@9X!7z4t|}Ci;}n ze2z&r`@T8W2_%_m>Y#b=cW$?3y|h22CvqLiD2>pNrZCXsZ&K$M>AL z4H;YM+L=<L#q1GzlbH~n9|`N1w24}!pJ{l2M^0mNvi2s=OBOF z@EeRLqn874qj=g3jH=%W5hGvMB49Ak9#+SMJ&L`CyP;DtS8{AC@Hq?p1K0eGs}BQ*;1%QaCU(s&_NLS~M8Y}Kq0f~?K` zR3}RNe2(mCLW*HD2TxfX6Bne6WDq0qw1I-EEkp=to~PAWe~Xm-VPJ*X(VwmalM%T$ zCGdWoHP14AL)oCZiIQNa%_qm%Kf6+(gN2#!E0CkoD%*~|X(y3YVv@}mDm-FzPvz1> z%z4(G#)IE9f}T>0TRLsp9KQ){j-w}3+WQ>ijW)w17;3%6NCjmHjqRdHlI6qAO0HvQ z^C2|=erhZ%TYTM=bOqW#q*fcBkTcR}po{14$zYYRnur(34UZl6p992%n}^Gs%glIA zZPf--6f4`Pw^1!&0TD4jT20B>b4I=vceb9iB*BOZM;R_;=+utg{4H%!9zQf`Kb9#7cJHO2kHaXt0cF8}wPqHRA(XOAfbQ^44=yC&Qhjjb6YWBm8A01oi zhX#Ko{L|GF;E5!jY?sAp4dRWarUTJ~NXgZ?%ZcU&f`M{}0mew-6r zxNtFcZGkEq$n<_95w8}H`@>dY1?$~s?$Y}{>Y>7;-YnwI8$%)DdV3%pUEn$l(^U|`w)xsz6q>7! z7@Wy-D%ftO9l(~;OLb_uG?52OIDj*8x_7^W7B7cjp+J3=%I2bJBt^twN-)Q_7Kj+H zFR}k9_%qG0L$F%<8RqYU6fjnA0mNSYZ-%-5X|QE%2aO5z!GtCTKIy??0Si}Q2H`nD z6X6j_fye~VtRI5z!~YV7*#4C+{cpoiM;$ran$rJ-9ZIl2G+OkHt$?&Xs6N(CxIU1V zEKL9s(CHKr8-SPs&Hf%q>KnMTgN?IfD|jJwk6!$o+XtI;6vT{wAj#7Y@Tg{;1xGgn zMZUa?NXB$6wXETrG$P5}?wT40kGY@@p|>DCoo=g(x80-^h~vkERn3yWHTQ%#vG2nc zkh?eR=-4-W@sHKNd2-CGYBId&STor5Zu9%1_7DZEgo6_UtY!l8JvG$4)k$5QF&y_UsiSL^b(lVHkKbJXu>u<6P z{((6%!X2m@NMF%7p^^DzACEwVOWACxnkV`5gc(plAnWjx;_?8QrOtg+T6op1Vbde0 z!4dEMmhlV{fclk7W9GAg19q$)k8E60G*(3KEqloN3Szm_v%5&2T@AG$Il+s)}yX(ORr2;}|C^+Sae6w|A zOSG5RLT--ZSPdQDj2eJ#ul++P5~zoFdw}wFz|)5pz-u4s(aHL2c@qym=XK94HZCzk z-lj3ESvmOMD8N*_3RYl&2#|NvnOHS8L@-j;Uz0Lb3xG-KsTw*+KRY3j)o*OgZ*$fB zz6x~_7ktE_?MIwR{*s}sm#H0=SK41TqQOzL&fQeEg#DML?{{h`$hANtAT=_$JQ3{t z;?RSH#6vDv)P%hJ)Cj$lC76U39Yp~tWO^ZxmMc1S8&&~JBxYha=6ZXKtpy?N}+8gM&`m)lN{ zlfd2D7vV zT2H!ojZ%cCSQICE*0F+{k%!0PB5tFuKyBkU?5d94;gn&j_j|*^KFOo|7GFuV;DqnJ z91Yv={LYZgiVfD^^VaL6Y_oE&#^GooZ{fr8az{Z^7&0zq6#912?jjOg@o`3dPG4>@ zAG}t=bf7q#ZY*ZUR*jl3^_<}c{4bpu$I3!zOH zbs)TB_0hXuYs~gd0wyLWPe0nC`u|Pd`90H-^B8zyfc|hZw0}l)9&SERMCUU*(eRPe zRmTPSf^ZwVejsDBSfUeMnb!pje}G8w@ezQF?+O#NR8i6KM)YiHvp=;TQOeWTO9LE# zHXq7&wJAa@;ZP`I6W#R4g2^|^%t(LwfQh-ykj@MPjQx0#>7$r;$*LZRyDi_IUCp!i z)V}`k((ZbicXUW!W(!9!q8qAExq9S=DIcS+I?&AZ=o>3s%_>mMs#y&f8lT=B!}i6d1&8_d#t(G$$7Q zd4&$Ra?`i^vU>kJW|JBKNJAwA8I_sopyT&&a4ha;?fwFH@wO-;Y5Q>H5mE2#e;QJ< z66@u>gS2NRSUhib7+;(-6CWFgg6*%tRbSk+C3qceePjJ1HJ(9vIf1HamiH<4=ggX+ z9o5uePQW(5Rp#75TgGz|9MA#HV!%dUc z?kn-(PQN@kuDUwGVQoJFhS;vCX#J#!dh5HoUdz?={}e+s*A1HF@%Or6U%emua9zF3zw_+b zswg{IEV7^|?-zIv4g|aBhZ12eFoMg#zEl;41B9i>gwvt{yd?Xtdb(DrL-x@6uQ(|C zD*JVe1x>%Ela(l2S?q2`Px7oP2+GFCrp_dr>rb0G0->rNsrFT8ULEK&55qt8kU?Xz zhZqkR7=2+M+hh}~)WK?lutN67Q(S?2h}+rs8_4J5hp0q;MxViJidqwRrR!DopE`A# z%wD!VknPw3OdIvGNWa5ASow%NJ)7!qSUw|o^XMeBOB;k}{G~IkTRBZc4OK`osFNB` z)qCHS?tA!jUZJtz1@6Rnw!I4~(eV&Zd!oDJ{?MzWjt^Pn=?`afxSfvnoMi6_1F}Sm z$@tph)fxb=N~szG*VT}h4B;oCKC}tC5_R%tMX~po0NP^OoqBJ$wL>#<0%rK+FqCtT z2Qc8CBw|W@8X?8^bPX2Ece}8g$m9eF z!vT)mxuj5Xc9x$~EydX|-n}Pq@2v+*owGK@1F;voSAtF4oLU7iC|FVAtZ!=Cq07@z zEATi{0jI{d=qRbCK}=~& z5h+b$af>^0tJv6LvWFOP{#MaZrXuXX_H7NN8UVxg%^+h%?6Y9q=Q7S|#3tx%GYRL! zz8AL>R%tl-U$;#{3@qwK4TZznGG&}{m(<$ytse>JHFnQzL#ra#Y$XKEDLLp>2D>BA zqD<#)?t%APOR*#b(>@0570nt{Zw{4c%inb1m5Ud@%36PpnaPdZ=L`mpyrI^2bhmC? zUNYX6V4isXJ>xXR_kQ*TMNYYYIp}km^04x;u>-rhkl%^^hYs`qW{B?U3b`FK8`T># zo09)5*w$Llne1Fo1JM-<1VqBpXq|&kGm2C|G$6vH1vYO7^aaL23Ir@{k)jEJEsEG} zdKDMj0gAp(z4BDx+=2gt7i^E?XI~6tnjA&Sg+3N}0clob|I(~ldso!bpvjeFfq7+U zm~_gphot{5LKqM?)1YNT9ZW$_x3UWLL6;5{@$yKN-tvOK0eTHLeW+n;>1eU^d^b1S z1hV(CeJ*#sSb2{Ozi=Z;39_&B#*Z=_ZVBUU0z43TmfKbxs$0UB$22TUL#CH1TGfsw z=hisG{r6Rv!*FQ!K1hegh+#_^husoA!kRBEpe<}HIJJhjKL30@bDe+17b7tbDWlD@ zv<@2pccPxu1e?Jm)|GfYo2bulX%1^gaw`3Z!My2lIQR)!iCG0lj(^dhZ*`E3W1JFJ z7O=f};qD8!#6!x|-GyGEORKLdoM<89TgIXT%Lt|cUTmEtoXBYr0)TI-OF^c>YU(xb zimmSZjI=Xq4(lzSNJN~`+k}T)usg5htOXrABFKX7rgQbI*2J08KN+urkFHF!N%=ao zpAqpW2j^kv^ab1g>ow2t*0%s?wFuu=6~?&LNo_2Fn24TVC4)q|p{N9^EYxvk-v)F3 z8oIwFA31mf%#2hThx#Uz6~!8mk2BsW1DiHhvZ!FlEU zo1KAM1yuflNCMzP{7ugY1IJy4DJeo2+=Qwl%Idj_c2U_v{sYm-`p}AtnY5XRgw~UD zto7t}yN2`PO3OvKdgFsza_nu^vmIE^T6eUGL}7Na$Z@JoPEabuXM|d-kpWo=4>m0* zQUQ+C0xwmD8|dIX_|WpRw$7X-0z^!?T7?ytvkR8-6t0DazAS!w1E53d8j@yQ_*Z znJI9R9T}gAJL*OiGg^kdb4Sv`#U#!^LzI6(i>So%-_RbL4&ad-`Cdg`#K3+dXa}-3 zJSS=m>UyXk!uAqe@c+oUe`j142K{IR5Cp{B$&+|C>+Df-Aa`4-tb04onqLNsJ<&6Tz3d7V zABR|L^W)=taWe;OefOk3xh;e>Qa#71R@6B9NHYxa9eDIn-@L=`)76b|?=#9c!$t@E zldcgCxPFcl2dVHJ#7N5^Unj+3(n4}+53*M~n3gKaB`MZuUYv){VBqCGhna%Dg56Nm zFCBwM^7W8a33=k~N>xt?<}tzcyx?VG9trW21&Y?Rc4}LIns~1;BKfdA{$QDuMpq2n zO*)#LTsirBpo`8(M)#-Yhco;}2txL}IZF=d<$bM( z3LL+!+F!lMT#kiFZNg=8j$hI*-9biwWuG}zJKUUy&4}m3=i165i6OH+D=OV;bUbif zK2mlksYx*a2tH%SNQb7X6Moj?lZ1okSrBNYGksoZRV%u&@;L5lYiZG;l zOYwXL;tsrjF6wWGG-{JPx)wx1Z9&MOMj$kh2h18IRUMJ%k?Y+AJwn2ws2AoF^WG?t zeNMlz`yOSBMykw3Av963=W~{E*OtB*d$Qi)W2Gf$pQ#RGCxl9d>)HjkV1uPaTD>#KmPjc#)^yb`fcyKO-lMKC#)F z>Kk7mN8vvyN61K7tI~@nADbLhwF9q#X+0;`N`mF;!XjwRlz;^hhNcuU&};Y-UkQNh zls9CWM{tl`Chaq`?)VaG4ezM z<6(RnOILm>A2iNze(|+Z(`j>F+Kl#(hLz2tfz{4@NT-;FUq=r=>w#SF__cF2lLPr| z#`VK@S-4!Jy$xbV(-e(~0{2wJ>4oANa_r=lYvk4IB;;l6(b{?pS=K~{z2g$t4$aGd zblwmzC#zIu{XDZ1a|+m*DYd`ZKRt){Gy$unO@W5$h$jnhW#hHZPgG=jIszZ@KS5~x z`qD&E{Ky19C5X2knnAR=p6`b;;Q8Y+Ql-{9vi3{#k{4*E~_@v*XW#B_Wl(4hsGX-<;+2lXzHV&o|&|XFu14k z=)hpInrPSKI^RjiQf;ypHT^hKo!#bg@@mhu6t$#zQa^MbApw(x`l8f9NQtR}f3To< zu{3p`n+Dk_*DF8}b+cGGg>)nN;cRXf`lKWaWa9T@B2 z{fIfDa;rqK_@dVm$G;f89pW$k3h34Z?m%NZP_}k{_PL$vrm4xsr|D1jjeLRsD^p+t zWeUVPmO@0pIaYXD`Ts=|iLU=H!cjF0QgJcWau!pr4US5&z*F|J$^p@G zQ3!B{M*poSN09r)jWigiH%!tA=xmCDi3w(nP3plcFH<rn4T@HneAWFA0$7C1vtwrMnYeEBvq+IdL*9_5x)|! zH2EXfO!YDv(hiXjfpS22h3+ zi4}LzxJbmF8!1AqHw4`guHm?7yW-wvK8ap1b%Fr_7y%#eeqPJn z!d>bw&HIH^>a0i~ax)5Ybt`f+zUJyGsTAdA7-SabX6Qj+NlUBbhQC zTCj<+@h69SlL4TA!_ScK@o=HE(CHVuq7(>&HU*1X#zmH_r916NS8GV%mnk-1_Hqh4 z`)(}Gm%Dot=XhRhV4i~E%XP`@rqp-#P*1h$+RYU63z#Oeo&rucp`t)!v@#^L#=o*K z23RzX54Daa@LIJfoM``+RUvI2e##AWzKw|&LJCeUlORYI^n9oO>*YD9_t$8WOd2tE z^EQ5`@Dx-Xl(9{;%8U!BRLVY5V-s*M1}TNu$%$oYw)?ICn~LHAN?K?Ef{Qd5RCTL4 zrep3e!vBwu2At}K!363KKx6*-8-_G`fxywh|HkY1PioY&IRt%^$PkM8KPW4a^SH?6 zz${&O96$$XwSzTK{XVQrJrA_pVXsFp5z~$C%ZG`MHc{T+PzkqnnM$T)YKhizqUFEm z*+0#HMJ397p?QXV#%bm7#LdVL&5wqSzhi#zKlM4IT8`~^cu}%7#_`slyUvR92$3s9 z`5{wUf+aIIC(}?lA*rfu(|9L9 z%SKi?GJh$`MyuVP0dVrhzN<3*Z8V-v^ih zQdZVPXupiQnMBb6F0j0~X832O1MTk&X)k;XD4cZg^a#hc3xk52GrRDKy-0Rldu$q5gLx**6OXY*nxL`5J1-#I^J8vEe8>EO1g+02kWCQIUC>ZU4A zlDc|k%$Yk$eg$k^ESY2nl(L51r*(MAU2& znCz@4n7h3mG!ioVG@0v_c2D%zwD(&T2l}ibQvX@aIu!YRcLJq4SpQ0O*!V!=xCM{t zj)uMz76=7)h;Mys3H|OJfPc>5KLja*PpFB?j~* zx%uHGQgHAi5El|nItY2>kYo(|4Zv*gI?|(+RlL6;Te%oSfbu{nT`8P%{F)7 zye+aAe13r2+3BxmN9JI;@&~{gF?XA=Rotmm63A8x=O;*(2#Ar9@s(cZq;G1$A^DRn zgu&!LMh^a3mUS_#S~o5%d>Tcvff-_j5E_zd0U9EkM=#4F-hVQ3V8ndqiFJqI=v}3$ z$lLbysW%Aj1J`1(*vY(T`}v0TU9Hd4!_`N}*lgUdL3fmzKpV`WO9#ODq7m`o*)(SS zjVfiLQ!}%&+2{+?W}BU@5&zWndX5LdJ+x65nEJKV>3HuiTN@1Pyf5N(<6OXJ?u5Gl z%e{$l!S)sHskt;~)|O3Ag6*j`Vov8t7jrkpW55b!RO?!TW<0N-Nb#2vl69>=JKU+8C-g)y(y|oCd z+zmGzhg$kxt}Oo)_8`=(2wu{LvIv3Z*%@Z7+l>6N_4+0^Z&lW=c@ zU8=D)xIN%IK0xPh$v;d4^zCv^RO9R^2R7Hif zc2DhFt%gu;!dsD|BGCl)xPcBG(%K5;vryYT@vn?(1p;;*wEjZzVQ zv%M+p5Pw~$zm<$fqOKQUKo8n~377xYsQP~yE`L#D_u-fq?GzmTiI?yHEncQV6ntYJ z!P>WZ(?$p^M1$vG`DY4)HK#I#N`TIwbuy*6&;vchttchU0!J2vS zCRo63=}F0m&bv4e1Vh)cm8J8bkP=X!bL^0E9~t#$K*mn|*7lx5;jM@;#i%%xro@q7 zgSo;_Q2C0_-q%Y8uV0+4AQhMFoQ{jQ-clHYk_~Ic8qXTxFSRQ$X8qF{T(^YA4MqR~ z;NffPTkY*2gl=w@vPh_)2%7+@F0zy>MD4#K?I<{@s71+kfJ>Os96u6T*1xx?AqzU? zkm*59e?`RF3_Xw@8)IZ1XY9#`2WMrJ8I>QF8)Fdt$>H}UO$f}2838Eq<#f#W*1u}}JE#<2j*+?-DG4_;!Zy_R+GJ(w~WhSO;Cg`NZ{K9lY z6iMs~uMp;7X=ug;+7MYWmZlVF>=&Bv7IatahD#FRKr${KQte;|=$k=YF-s|0YfCGe z=m^VYz)9+Ll4EQUn3ImhPU;!}19hRX{xm_wsrxAbJ*r^;3k>*whwEZ#g06;j00;c8 zjivV^MWDcdfrX&|b8TyE%)`pTXJLGzfheb{i7N~Z_0Bg@x{>iaKm69$zRR@40im{c z7?`y&iu|c`3drn-Cbo}d``Sv!%0le+7`PM zheb%}`{ONlK}3Vo_ExFp0GbD%S0C@!H{Z9nmpxHSb8|+${MmFy9iLjUGtT9d5xh3R z=-MImZ@+i6w&(^AVt_)`lz2ntt2}ZviIA~aa4RTuGMiv@r$t#UCN)u zja4t6t&NdDechJNOJ*Q+fo9PBMUctJ09ZR}dhX#CAPk5#1;dT=13;VN-KKCQU1a7! zg5gTIAsc_LwbZF3gbpA;$vl12auiL3ZiI>;t=lbTlG1JTN~{wug^?u$86!B0V;uOj zu4%DTv#iUx`?SrO#f)Zb=gz(O!9LxOCkDw{YH{?O;A2-VVSmz^n_kh&S@@o7+!q-0 zRZB4sl3smpD^5xLJzyz?EqQdrI=aM1hq8UpaNq@wv0~nCWJdd@??Xd?oQ@IRX)x5i z&Wq9m%Kn}%M@Tay)%v1HMR5grx!+&_tn|1hSgk=wg{#K0(gRI^rSTh0L4%tX_QNPr z;!tOH)W_H<=^qE%m`&V=NGFFUm_b}Wg%fAgHNQo0#|Tp!rOIKxvVJoJMbPG8|h6TGBD!AS`# zP?w@9e-=>&TOii@d=gDkZd4JXPrcc(m$~~O;+`O*IidbOO=wNEfiESM3uY!CKt{4Z zlr0Ps2h$x&h-o;MYn- z4T>l#>W`}C4dNJEXJZJRr6CIT#u`>|81GM3N1Icb_{4yQJ_iw;nZ~Aw^*D&D zJum4hZ284*XPCwguD4s5ukQm814jhA`Hy#HjV8Q^!`!d-rJ&>64Tiq1v$l_-5YMmd z<)II3e;)ySjpdEIR3NT;NebpsM1K|{W`iMzas^7pROTx2g4CVYZ{_MgFye z+Oa`>MtiekM3M?|K7f0>WaictjED<(q-*OEaV6?Gm_gmPc8dE*OMyxxoDut-`g7+Q zJ=6KOBJ=Ys2x4dkgvm&E$yxQ@9)hOhnjnA7weN=jvCWa_N#{>&!>{wu6E=8*CrUDe z*Zra<`za>-7m?ui$ALd-H;8F^C()f)7jOVrsc`Usgb;xLftxXEt3JQ1pVcm6_RSn$ zeLi(c)pys@z7Ucqi8kA&|!@Q#M24h(Vf(MdQ-E|rF7TwbG*6GKiuPmIs zX@m`cpOR@CetG^Y{-?$SRe)5C#KKK{daUy^J+=cag#Hdh#|5-!d1E2`h$bXXTfRaG zTMKX00;NbSm##{5W?ti0q-VS^D)yWPh8ybOu7iCJ_~h}R8yA)Awz*n$lxGD*souaW5ByIQ7oX^b&|o+;aRvz9m67GR8(+Lk7aE1mDMIZZHw zpV->CJ^DM@A2LgwL^xjpE0frqym5z;|Vu60~a;+lE3=#SW^VMB{{bf0>e%O)0kaQwkbu3)G zINQ~Xki3!*`HQnB{_J;QFzM5eIqRvXOsfvazjBh_i-&s!o>hCGFcJa|KvcGe6?beG zg z;Co-JSrIU-)?HfAG=Ssl47X0!t3vhq5*L4^hi7fjiBfBwb3$Y%Qy?hU1?n{^Jns4^^GKS6d zgPw*UB<%hkd)Yu_V$4Q}A!LQj3abU4`AZr`DqcuV=6Y1}tVI?3(eM3ELCGg?y9Im|(?eNlc05R*GtR61)sZ z;(&w$K$OG!h&vF@Lr5#Nw4nJ#mVz7i%$w!crzY4KbS`SOn9m}y;hvJZA}I`)5jEnE zQQTBef%lZPq-fI#MfR+D~7XUti*u{9+Xvem`ns;1U1{-mp-9f&qD7OwNil|z^~ z2+&09nB-blQKxW>koojMeVCv~WzFgHrDRD8k4j;yGW|}h2AyM!%qK3;J#{+AOqox> z(iG1YnNQp5!x_0MYwwIo6PnD*=2Lr<$;NY?#KJc-c-V-pI3jMlZ?|)!) z%Qn!dGMjD@^uew3Gnl#$m1m5G2fLf}0g(Bp9(7)zXwk4-|*) zt7~tB;+8>L)uSE2L!hP`bExAZTb*7f=8vp3=bBpTbcLEO(^rOz1XHhLJuSG zsfFoo32TVOj1B4(V#n>=;B7y{ZI^YN?asJHSqOSpldac?Yiz&HWmgSxo(gJhuU6ZO zpM~e-)E5bj4qqMW8)}E9@Z&{CR+)38-b9lRQeuc9aTyVLbNcdzjf0`l5?N zBPb|$CPA^D-OiZXaE4%20)Bh(gj-1z#AiIThiG_HM3fhG42F2T7iH#5@-@1^AVXr@ zl~}K*j&gb}0e#zYb5l+l3~)q-WOSo-`C>zO#KD+E{5^>YuV?GMA-9-aHtu^rt2^G2 zIvD9QN_NgGE&jb4sB+mFVa9$Jkrs6e)^F5JKc~zByXJR0>O> z#!Q*G$3`FYo7eBxIO-3F<|NHLJx)p4_gZCL9kx_!Yi%S3X4?72CxFvj_$`at1y}TS zn8&t_s}0W)FWAw_^giw}>-y~~^RHLz#s#)-EJ zde|OqjCbE!p}*76j=&E$OnRsHiTR|U5}L~CYo*eaD2HnSTaH32Wm|I!pUmRsm2XBU#%J{I`t(`~+;@P5SoJV81?H966HUU-+^T?u;Qb{OW89 zBuUwM?M2e`PS^j@!FB|FJ6RPi`qP1UL6vg=fnihs1;qA2aQ}e5X-XTn%+(Ac$&T~_A6-{SDuSCQ5(%M_1_(ejy!5&P_qis;LFV=_ zp@Uz`*U=pxEx~8ndeLeQa*PLhb<#v>L>Jb@ z{8^CWid-ymXcX!FM#iV~hgOnLa;NV6mABbAG7>it=Yk4teqGKPaWx%rKcD-@#=-!I zPqs${u3Vh8ist!3=f4Ji1eLj$`(#f0gz)54S zxS9`Vz=-$em#zcL1CG(ZSo&10QO_=fx?^8^AmnLMO*eX~IT8VcyzAR8Pp)vEbJ_gc zUmj;Juz%qJXWeYtK6SJLp!t?nliMNB9ecdNXJf2)>F^OXa}BVxp|bR54Rp;o4~1~| zp`-`^L~$%Zsdm2HaxuSxeh_kmDk&fHXhpXdF(#WgYshtVk8CjU@`mJ0vf@j-J29^z z7085Ih?!en@O1uA+bzWCS33xON~NxH$F`m*2--oPL&;_-^eBVUjMT!XK$YOy2QKCo zZXH`1O3S2=N?Q8$aGmceSYW}sw@+n&@30Qta|-HrmRCV9^8jD`9q8?UlKg~t^<%rg zH|Dwr|0~D(t@~Wzyo?6|-M^vIDgXcNV1Z{sR8SZl8kOaVoc!IylKN-&8(Oy(+3z|C zQs)AwaX&}|1z0T%gAITmdS)dZgXwK4?Zdl(N%<0U`uLA_{aiC?qHWPmLaS?pTp>cz zIG9NReK_@Fk&DZwoLg*e&a+jF9drF#5x@Adx1_!qAJ?yk;4uw+8Gd%wG1X-TwA#3U=4alh?|=|8F(N+PB$$(Bqz(j z6!sJhn~jPViS$9y#6iWv#sL0%_BTu4VT?dlN?un8 zMqG(;R1`?M`TKCe;ACO}7Slr0>HfWn`G2*O^@9q7j0|WeD})QimCE-2!`L}TN7ila zKDKRl&>h>h)#-F>+pgG7Iu&+o+qUhF*|CkAe$RLCopZ*$_phowMrza;wf3G_Yd+8K znS74uvnnE^U}y=oDk|Givb28(Takg0R8aT?ei1=_egU9pnN^%7qCFq?4z3^+L+B|) zc-LGGP-qzuoeFZMOb|hya|o|(y^50rU%ARA9K43qQq+~8%LI3fili6Zmvt%u;V-}y z`@aFMChTLtEkh)3Che+p|5+nPMK>0~?Lf$3Dw3`-m~D;|QxHRS#vEt{=FaY)VW5P* zyQCJv*E&v1!aE-UY6#TisOmr@RpC!ug^~=PSm?^@a4O=Uk0So8hyKTU072tRx_}8? z@cv-DVL=u#`z_u(ZMt3L{-a{ZN_G`S7e%ip*B2up#OD2z~ z_br+AORd1t8pe^(6_uMJG9)U5&)`JU$&s5+fb1kWa*LXKWp}T@?B{X1J^3v31`=x-?wDbqWiWVEkhkuZfgsGJ0QKT zFGrQVR_DpH4v9EDc2$dG}mTPPb*hJ2ai73V= z*gZvoIM6PstK78RU;NFyya}?tFc@&9VF;U#xox?Qf^zGlJOO2cEE^IJEQ#jlA>@FY zpHG15+r441hfd1;4(FmuL4GKb3e?h{TgpN_utUZSEmnQ3P6+G^e0C)o`-P7eiuZ){ykk8 zF?p*%tmf09P216t$lD5FjGpT_M_M52#5;L&D_&%i=AWdE+qz@FAYyxD>ioASuUj~X z4QK=T--OivM9}eo5L*W598JQUEK*qt85hB%3sz6J^z-P2b*cnrI0$yH4PX1UF zt6O2ex9JP;v&kwF4XHV1(UB@LIRP2T+@7;>AWlee`uPz$^0sRyNopN^d9g@LAPr0? zYEwu}{_ww&I7iS?VV^wQVZ)k>8TZH(p)Y~h z7?4z8pg(}{Kasir;~+*{JY-*gexhZAYKr!Z*ewacw9khoF@7b z0WO?IUVdCgjzOAs$Zl+OY<`sXGtk!yDEud!6{ksR`9A*&9En~!#-+$vb6W>&N)6Hgwq-W9FO0aEw}e;R(i`sV!P`J@lk1LdY3up7pz`7-#AkU zI2Ax_4!ExEDfl$m^Mox1XtNhPr||t8#R5RS8x^=^rH;@DVX;#B#Nje4of2`Z zD@sFX1vWFPTC-UUNdaxZ03v=Ea{S1dK*m$B6%6$-(>(2AEU}yS0II+Zy{F}vwS_x% z0R%B1qWCc;C>FP&K%g;f|1#BmasEu+kqNNV=(hhQb-ttzu6RhIuZaVdF9-!_=0jL_ z*iM}AJZ z3t${dPhp2X6~Z}*%)vAdJXwXSv-LS07KxzWSn)zO+c;=Jmmkf(gB4~PA`+seTm!7@8VZ~sTTFx&;^xcs0N@vG@O7AY(U}_0!_Pa$Wq*{P;8gO$6I~x+PxgW ztTIXBz5P|Ikon#T{q_Z7wOeMi_ILLMG_$-31;yF~I|yUTM?s1+P94!@Zm!TARrHhK z83m=iY+|7?oG`VNXVGLFrMps{vXH(?{n_&TO)m5Mz2gV9aAR(8#|V@QLXZX4K7%#> zKqMNGsK7Pi2Y3 zR5hldX2b#<5}Ktd#$>mDg)voJf&Xg$3L%7Tqt)bKShNW?O?;cNB+dZaz zhh~A~O8QEj9O|dLPGY~Qf>fLYWLEq?ip$_k~ zVhOF<0QTmvyu>}&ZXk1L?|7v0U`B{(IY?{vXtFC(Zdd6mWZrk?Ml|H<<45Y*9&(Nt zr1(OsDV?V`H&gXkc`|An)@ExiWv1H&e7WWW;xeq^%u0Cd=Ic*wXL;lC+uz)B%BvJa+IC-KIiS;ESfw# z3?8dbu^!1{0Ov1G;NC!W4P*%oM>$K@)$*vjcDeFpbxqx}EFB$5MNW1f7`8)gHtmEyXREN?HI7yjX4Yy9S6b-vizR#vloG^Tq%uX2O1d=4ol z57Mb(4vA;x?d9!lP$cvbJ{{Qoj(TDnpbg@rMeBszDhf-RPgc`V*f)?(ZV-}YF7hou zVCkLC~UP7aY=N&v2I$lL%_ESr0m3+8S&s8ce#4eXhi>E2}`oS6Vms9ctxIr+I z$>R;?_iT!u`yy-<6EuZHv3NKW(NGz#LPKRNuJ1GEY_AMhm*7^)sN<#EP$yWmC4}4K z*8AF+Ut_`7`a$`#w2CK9;v>^;zE3^}8g^Hm0=}#}(0I<5h%$`IKCK`T8C&#^?NVtE zCC`zDQx|?inr7)LZK%c+SPB09JhqL>0kPF1`BNYKr(Re=93VLA0oNx-NB`BD@pB;- z2VJH{NBg1@a}U!j^8VLY@9Mfn<^ZyLgwF`hBR?Pmufa0KiQePV5&p^%z#PI<#ewDm zq+r#b#sZ@P6!z=t%xvn^}!H89CVvjZeQ%T4H=7$fUrp zSDK|3Mw~GoMlL=?YE79_HgrLdE}jx(%I9MxVPLV1pH5je_Ms5RpiNBr3D!QhmX>@d zc919tLCfIHraSb`2w})T zBJ>gGrKbt7j*cXa+?g2pAryz)+=63)z0-QTbKfuAQR{X-yao+m>PT_sm)cBNA80ha z+o6v;XVgKD9cuJo>Gbt_$KakHjI?d&Yh+(fdQ1Y;Rz`S9bn)vI;p{x)?q8EXsnB$8 z_?-ivFSk3pTyriCUT(VbgGwD44ze@C`dO_^*>?cX&i0!>hJawldPS7x-mi>QZNbMO z;22~FEOp}#E|vU5D36SdSiu&?UiO=oSXZr3^(-n%3|n2cJFN?kb*?B6Iv~TOho)KH ziI*kpm&PGWmXm5k2v9EcGHYlp*xb+E9w?`BC~Hmw)@P_YqdmdvAa{i|KZ{k`320&M z>l^_WiNBS5G5u*Ic1BJ_>P(uMs|RI|9tc*u)nt_3hO#iP9uX!4gEDRK#5boM1d4Qi z;NQz!t4>XhD$!MiYM!a{pJGPOvGYx)m+3`1oS5FrM0dy#Fi89grR~?)>44LEjeYKs z)lj`AH^UTDn(hz?bQisjp1&H(==Bs-= z7?5(Nk!$RBk+RbSVXp4XeyP#dNUSxeQIGZPcCv`=y4p);>0rWhs*ysv#}`WIB1zK1 zaI3*<$_$C#)I(dC9CA1zE%usU#0>9vfUw=^FvN0piW8GJPC-s#tJzo%|$Yk&Z z6f}|%p>LbR`U~k*O?HgctkL1Az9xDBc8nYNbWPa4yx}wJxQ25?cC!4!3y;ZSLlD_p zP<**l^BT`A-$;!<(=OmH=UKbXEWs1_W_?w_pir0nd|Lbr^gk1bD>?LGNc-|q3hqoi zmwBjkLj9s4pza!Z$Rvc(@nEcDn=?p&;wfB0=8+CfE19Uo8O0-aZTq*gF(L>E2n-1A zN3khvcAHL+)5Qmz;{C)mqEQZ0w#Z`~VUJuJTN?RE7v9Ghpg)FSB1vr=^^}-lv?2CA zo;$T#Yy@qdVw8kOB&jBtrQ?XF!4-AIYVH=@%87i`}+O;`u(-m`SYNoWpdgv zZi*zA-X*nyt`zHX2DNdJP{25oXjK`RI#vOgvCoxWQDhl_7aQebEgt*Y6^3bNK|@-4 zCBt`Mvn`Je(K)g{e|-3xq8sl(`ibv=$EuLNA`LVFR1DNhXKEg}`V2g67`O~Kcbq-v z#e0j-F~EGp6BHyR0|W$m^Vt)u(f(bllxb2g1@>O8qWLx*M}Y;*4+0tl3>9GWTVTWR zG0qy3QC}ROR)C-LD-14DT{<%X>9&uO0gV2Qz@0HMP?4S~Z_Ie9yS?n31os!xWXwD) zSq&@{3|TJT*};u zy+z?>LtdpDPV>OMd09BmXdJMZ$H>48H6euZ{O%n9Et1O4maWC1bj^G?BZ9DvIgCx) z_XnW&7v>b;a_5G`7;CK#_NZ-PL(QrLTrp|}u()I2w5Tx}gDm(pEcA$iMU-kBs1fg9 zxGwsvyfNj4Y6ApA`F#2f)skN*0Dedn0X2-#1H!W4l;vs(vuvikEDnvj!G65zOEt8- z))@;RE%7x=q{+1oTudcIC$K+J7CQ8h0b(%Q^lHY2e+hxKp%lXrnSqh>w8rB)x?bphnh?1JP38XtRt=@97pi?nt-LNHaZHe-z$8X>~p{ zP>!wkk*TVeV{pf^Lg4!ZK21xak4K-2c#SXMGzwB*jiSnG-@M131^YRS9{O{@(^518 z8^Ihs=XJjBs>?_#@3LLKtaXi1O`M@WKFv{Yd$kqpSH|Dw)!#k!)p$msIz1Cbm$i5NLzVFnAn|A6_A{z5zq|~76llz$(5=`2 zXhJNaCA2y~fz;J*R1!iq7!LW%JXKS{TXGoj)Qo_CLB+%Fm4XSSbk zT;$j{MhyQTAG!Ml@y@Isenn=%-xxfFsQ$U#*Nw%31 zo(QO3gcmMxS@+;TKhMuY#6IhKf|_XourKn4CV?qvkx)7llV*OOy-++ZT!FiORxz*G zBLTysEsUzNLeb120RE^{Mw!yZG6&e4NnC|ymu%d5k8t0#>|jziC>K7bH~f~)&vXEF z5}7p50DN}P34wzfEUct+s7{4QllJ_Kx*LQy;>p?bF{P-6l1n&BFF6fNBZ{z2JA?qKhYQ1Ioxut!8!FL)ySHPI0Z5RhU*RT;8aIk+b^<60bl2ku3HfpAxXl|cwy4cE zC8Nd81ZheXX?AuFygaFmr=Lf{7F(LH zCmz>UvM4V2TeZ#Lde1!}3Ja4PkS}+pL7xH7MuR8oR7Kyav1EUf`(|8I)y{fQ8`Tuo za^}l%TI}`gXg`FLRA>sz`6Ba>5C!pTVxc#vN4naTl(sva7|l5R4WKMbuy9<}VVKHY zz8gkksTCg0$Ua)Y)Wx@vsdUdhQIxeR(^8R{Y&TB@0cC8NWGTztRe?bBJp4-2KH*4f zq&(HZdjv-)@72djLd0cF%TCi|L^R#%H)3fHw;ji_);*&+uNVF3<}4_r(ISPA^u!z|F$1+)DJtcs1$`POzPYQ zqE(%=YA`Ldo@c z$xJXN((LSNrsPWIN#e^;uQ77FZ$kt))l)?MGJHiTbNKhBR+Wq|w*E#1i@<{0HeW$H zHjl|3?26gCH-I}fk@B10e%f9GRH4?@UPUzJUR9Cmn!vHwX$$=nnp?ziA_94VqZ7%3(!_5ng;Bic;YjlUWV4JoNIcqGJ z!&$$Dblw0@S#%4xzj!Re1ucy%++IIo2BqZufMcZ)2tu~sk#W#2?$I5CJCFCIh{jKtxC z5TW*nJIXagPqb0^B6l#qjuN@U9}l~5T&QC}@qGb^RkY_c4ll?Ely-hR{94xsb5m#s z!lBCQ3(U~eOy@i6-FNVgREtnHA5JjCV8a2rb9#z`bjri4OonC6VPT=o{JYv+&`5}C*JwSswW51Z|zLzM?7WETfGvxhk2QNsf-`*Q3$!4#P8U722+$R||bqMRMbJYR#? zZbe2Ys0c-0Zs;N@Hd|+&F?YoJIOFZ9Cjt79PzRIjMDYYmJu0(kG3J7M-c z`UFzy=K{BlYkIQDc$>t+s5exXb(rty01Lml(=oo*Tan7noVtN^?6)Ho15T})O*O<3 znA1kaP(h0s)SuJFn*l!Eq>5rX0hmqUlZijd;;yScB>Oh#d~4$_l7E=5QS4Eutfb4T zNpvL@B`9lw2);Zt7+>7jMT(n4AF7UGEyOz3)evNVu<qDJ9mQ;cxu=BmSpT}eLqfpd|0yNQ9*{ukE^#o- zNr@J@(@daua8Y}xWe~^RxY{azBxQ+zqv=t}VZfKciG~9reTuwMdvl=t1hCbmb$qqT zDF0pg)QWp7N(X*hc&1nN_8kQmw$IsU4Ui|$c5KsmR`v>*XKZ;3!TwoNs@f?oRCsue zr>&cRje*!d9lC3Qv|E=z0$|=?!s8}`;3D+_75&ww|E#>mJPvZMyu^RJGqLCihdhA# zd)<7(FFL4t{*e5Wgf7|mG~Ho5>%r5gd(g+#i4b`en}8g%oXS?Wr2Eg%HIOUTUNY;6 zlwX*Ou+@u)7SV>@W-C)9YKA2G=N_h9paP9r$WP)qXwmOA_4NZ60LT{pgg#CBK2CVL z!SPY_rFhxVVBXv2CU+K+mon=jCFoCAvLCZ6u2XTD%usY$l;T%cWBH(&&Wuq~$oJW+ zZS6SURcgB<8&VioFk|)Wc8^m@Y~Pzt=8xTj2D@FB4{Qa#g}CBM$dL3JJK8U*YiEy| zJr7t{YxEdE#_CrWv#L{*8$|eA-e(LVO{Sd;t}2kbMdpS85+HR5+1Bh=PLTiE#`)t9 znb~~U%Li7GA`t^Lv)yJQXvKuO1K(i!a}fQZgRlaL+Au~amk)dPLrw-}G>N;g%@lOJ zU=-Sqx;ZW>-CSl&*sM`7x&y$8Sz4dRy;w%iq)MIF+olkXwzCQ~vUeEW$*kk0KV_xvH z#AlHb2Af!qe(k(eFc(_z*Pyp+hEqFjC7pfBdS)h*Qy5O`i)QLzs_h$Yzk{%roSR$L zXH!q*N;o{k3mIR;E@6KzWE>jahD9kM%W9;R zNS8zp#=d6&z3k>CQe_hC2wE`tuqYAA0a%_Y9dIiN*qmc~3sf0OV?%2DTN($!6Oc52 z%Hb5Zlh8JJC7pQ02j^dXkuBeJFTZ~OW#l*DZ4itAJ$(1+JK3k6%HrdME{Y1t2wBQx zG*YC!^!3=fp+YgK)yrk|zUyi!vGYk!`gyV;!-`b(sLF590{CC1Jp2UJ^y{ckweKTFmB8|QL=;(`(zXu|%q|0(HzXs&;u zpVQLSQWJ6oZJ#HVVQ7PJaKO}Ya5#NUn3x2&F$kAH<|P@0fdxvCs9>^^z!oJ)SHKv^ zOqZU~18kpdtZEH7W@xh(=b^iZtxQqQX?Kk)f_$_qTYBW4903sL$NBwz$&#&8v(LLj zu7js;CERmA&(Y~(Tgk@zfz_+e+sxG~Noxi7;wrJHn)&-uoe$tP<>~dFW8p0Gt!3hE z?bzd4LdJ4SKkSG<6#toyTb`u#8~}xKpVfT6Dts5P$Z%{$m(k~eGUSqoyln?oL-^_G zSm^E?u&>leJOq^nYqTn}E7F&J^&vyk+N^1GzSAfYN{$%|@hy2n>%3G2FBcDfgLcgn z5_WB;oANgGJ==u1`Ut5ugo0V+=cpECU|{0FEKouSP4QDl32nb(xmH&3qV^M$`G_@_ zZ>u3yFGW%eh7SD~MtiHpJ!{(ee<9jfggF0W&SB)EwHsvf_0EAs#IO25k?PXtcH@D1 z>CiZzbT?s?E1`@oNlT#zgzTBv=l{hx@aI+ta$IQ_0LFG9(EKL}&#wFrCH(*QUide* zkLRCk-@o4tI!r8#c8r4C38)c-ANHLzTnQ2j|Ep`67hlwgt|`5k;&?ZvWImGGUO!eI zlmlTjxSFKvRUF#bD5dc>dyr+Euw)wO>hI7j>jY*m1RqKD4%|~|?6NRFPJq>4kVz%t zF5cGsJ@2~v7FlCY!{Xs1LytM z9!7Xus=U4(iD_ox&-%f+`x*dGU%-j1a7eiSbt&-NHc9<1KqX`76$7ygsMt7an>cF` zA}Arcs;HSbXjs@PA+#s|QY0hwmF$Hq9L(hnP+JP_Cs;$L+K91Q7;p2D?rF=M)eqth=|u8`JROX@o(#Iu^F<;_aP9? z{3CVRkdf06z^bp$w5B@wp%CF@Sk$pSz+aMKrHGVMpS3JgcN;L*d7vV|fF6^gurEuw zlGL`ISZRR6odQS?#kz@$T=`UUh$7nWP6V>_c%>9yD2In?R!1!Q0>EueT^`ocIG*`k zI+U9=Iw}@ZEFlTUZ5(xV^VsP%39a_4^e6V<9mR$xuY=u*Kg+Qs!si_~@eZkfYBeU*a6tT z?I-VSqXx3yA=JA>p%4SJ_NfEgbt|&P+zPSWbkv2-eo&Ooo)_2Vy&)#wgK=WYkK=s% z&i}O$Kso0KkkQToIdavX03ldv!YocFP{b9LHG+c+aZo?8PCB1C=bqu75&9IgkUF7Mxe%D@<3}f#BI9# zTySspWpgnPu_{@Pg2P?hoEFFL7p38@ULYn-#!WP*IM0W7zF*~I$9`jg7ro5#n*!}e z=eMrYR70T}V8|d*o(R+%4MT4vpXfQtq8OUCS_dOG{UtOYex zB~luLl`M9w8L0e3706GW&;PPl_)}>(!Oqlym8AbIj_conQPM|ntVU!qI4&@VKc57~ z?Sf$d-7dk<{vuBUZt$FeJo^7Xk|?M*vK&yS3LXylOCP=)G^p{X0leSeHr*kxgaQe` zt_wsOssFIyFsb~b@cpL+$R5EZ3Ra3%T7k}9eoT%|+Ubu8NQPG47-!)xM-FhJ8$J~g z&i2pr3^c*9fV_BIAQJ%+9w0=Y63PiA!BFplK_kutK1$bxWCLjk$^$Ar_T(?igD)t| zN9)7^1e`)o`)_UsFLW8@2xfH0EP3{*z@za_y|SO#2J`M_>++wP93A?VKSar z7os0aq@9JsAgl0?(nGn6(lrJAoe9bU&{7A-JRn~!up0oCC0^PEiEjiMVKD7V_1VK^ zycR%UT$gd2Te(Gv3q~ezaC5v2L=VT|)vE&a+76`%poele1B03?vl;~%_Fwu1JF=2> zLNM37hcfoe$kc6Fnyz9T7Z&iw$B>#HoBOanr=~1YDtO^#WvUiRF&7*ieN+LU?c{Zs+p+@gO~AQa-(rit0Q%`iEnysT=t+ zfs^*$9CJRoAw_+va;|e#t?QJT^hYY2YdzGZOXZvMBmMHMp%~Zko!scJ-{u zBDw>AoWl9O9s(s;#3YwIlG~tYhCI09+jt2nhS(ANiWYXfFb^ z$lji~ffjlV+%5cZJzIbBXwYdqbdd#sBl`4^`_!lMrFR3)$ZfN&bnm4o`1yDKiyCP! z_+(7wDVTuv1-#5-xlk~)Zz6PcgZpDO!K2%)aHsRo1xT?3?#DNcH7?nLGxJ`&%*8)` zy2q$)n0;aY^J#@I2ZiuH`ZS$%L%cB$uO4L$&5y7nNQHyZc@t1c1`rYxL0X zQ!V0IH<1RcJuevv&@fQow2%FCPVp3cW_U;u=?59 zZ9e-TT(a<^WhPWs_^jHUtc(5B+0SSsRJhbG<+DSGiCBbWih)IcpE+wzT5Ry>&XY

99pEmr8KT#kQ_>i~~q*u&uZ-j*M=D_PK^|S`HrVVO^8M&-UA4Q= zNu)YS=MxS#U0f$llIVa`&$yJ0!5OVpWrEPBM1-y9l18*g46lVeD523j+pLqsdnkQh zw9{rjc3&})VxoI(W`4lGtWqRkKKGlE}fd|Zd@j{CL|QXmhDT$u>2(|=r(ejGy2 zA^-m7(_e2msLl%j2V3x15XjvDN8P>mUtoy*q2~iaD!-xdLLiqwBX3lYxWN#qA`^9J z30*Ym$Io{5`~!9d@2I2?e26~)C&;~)A9HM{QEc$SO(s=z||KN(SmiE{ZCwy}Lhf5nsPa(2n-Y(ihlOryG5NyH~jH ze8L`lqZYR13!U;@hQtyo5Kwwk@D#Lwfbz6@@y{R zK3b?kGo*5X87L#-C$d$Z-@z@F;JR;jk1fCU)KfBBr6Vz`x%xC5i%n~5iQ;gb8vebC z_xdIGZ2NZwe6`!1gZdz#*cpaU_uK5Sla}^dWQPN}(ocXb{vob(C;6Md#QOT#Z}s-y zQ@?ql3&9;;#HYKLbqPz>Tn@{_GHx!cp;kKbJLnz?I&@iXO z!w`72p{2={Ij)t`v5slTJ@LeygG}Po%V2fw_WgVhUX~ZzZjoEC1T@+?>z;8pn{Z*e6(A4=JMi}rQJP59+dgAR zRt-~b*p2mugimAoN8Ce}{d9vjyd}W8jP};|uHZ24FUU&Lt z&2AxaZKE!vOvW_8kbuk`aTN(pmos|?M-az zdbq{y%tJ^~K(~f|>Dg`dNlZvPmfaEF_%NG9c`G!x|VZ~=dOZF#7MUr_{*beyK);Lh0P`t-_ezO;v8!Gpr1h1RwvxQv{H zu%t!BeSXIN=v#4gZ}-0oUcmEue7o2mFWpq~swEyanavN~>?Re^ak;x+KW}%pH7%ZR z>8L5eo$L0>(%@U2T?oxD+w@b;RI#{y6nE@cS3Rn4hM)a}0jNa(ae8E5b@hFArNI)F zQgzT7LBHO%VlBR?k?WK>r@ABJ?I0g7{4>T68VfzYwLHHog`BazSmZNP zbLc3@%{EX^m?~-T#c$Q$kDCT4nY;sq`Lct^W6T)FPC}ab63_BIly{Jp%mwvt7_s>R zNNs7kM^xt^AOTQV;bH9)Pt@9gGGz}OWN_XO7_fGu;jNeJvt);dx z6J_6Q#ilfw`_8akYHpWcFXz^G!ZcR}$I4WoZ9bmTe58eevM!HINq2!v*AP=>7x7ip$~N)o!kv`r(G3r_4b#@oM)!}-(y z8~`)6a)AW_5rF^uzSP86pB*SYjDiHPk{d~-)-+)ZA7C~Ni#4tpRUg1XFy!FJlWCA_ zUNnL;|0zHnowO&|VUzXj{CJOBe9y&%~&r@@9jz2HcCWp0yQ5yQ0Y`D3=rq+(_mxi+_T0+OB;C(G(nbZDr z8^cnyAFlJHLerA3Up%!F52@O)j}QX!o@>h8WhiN_{Bn>6{2MFO>VFghY(-kHYVcX3 z1f2K>QLkNSQU)u{dR%o+5-MyWhuo@lI0&yfv*HMej zBjSISCu}nA&6)! z;jeYC-XrB&*_z_y$qE+%r1XRoSX6f6Ib8~am1|FGy;$7z>w+ykduO4om0sRz>IWOE z;LCbM(5}{b%@PBTz1$L!bnTf4LAiCdw~(4$B_j||x$(a%*1i|?);N8{)FAp}v9o~$ zXF$xVOEiD|g1wTTdpg|@9y)(uETZG6+XP@2%vx*v?ZiOy`-nXXfGuX=^~u>!#BYC8 zlFw$Ojv&KBrs_<_Te7J6Np9&Rp~-2K^se=MRJTq}fFw#Z<=1ByguGC|V)?n*kFQS2 z^kHb(8pTm(T53aEZ_2S1McFuBFaC#T^D*|X_+5KtjG8!ydd5)=v2|!!z-F~iF|hjn z@}Dhizb>r8KUbke1G+0v@jqVzF@q&OOY3zbYfDwIBXc=Ye$L*XzSM#f8W7VZSN|B8 zgf6x3DK_gmU{!9`TV!0$+04gL46bBiZPwP3dnl~!N%z?9LwXp(orcfFTvGM*p~#z3 zQC}ODDDFGL3#im}0%Mp5pH6Rqaf={J%lFLJ*R7-=B@WJ5JHYrcD+u7ldN3z zmT)G|ocVxBwwthxQH2{hBEY`6W_+lDz?u5EyNi-mpU7Qd%r4%pX_z)(%Xa89Szx(x zki)>4N(A0x@PuA%5-f?N7#W?CtK>TK!mU>KG}Gu$KJJ`FRkO15SIW~?WPvK&Wb%2< zZ7S7q)Zf+_C4g`e9SR|$;i%OV8{QFqCn)m?Y{0{ivPY(klAhtaajibi=r`4rpUm!Z z5oI2ALbf=HVeuQcoS*&36WdDZ?j_?ojusNCY3))QGJhplR7+T>4(m++9v&;=sVbXo zpKFeWZDFW6BFc2CaS#=-()aT&F){Nnfik(jpsEg*I00yzF$MFw4YzH3l55r)DT%1; zoNh=LzEJSje@UMkjI2S*?1^uk)%Dmz^5kNQ8LUeptl#sJZ@U%D#@eAWl{>=ZK&)sY z{9a-zJ#VhDA*U|?;?}zeQcY2_5gU0{p0gSQm7?#w&0$DCH7h7L7aqW)QouIS7{?pY z($sPG*aEOVjLT5b=7aN8+Z<>|pMUf`(gq`3App6XNpgf!QcSYeDQJ}P56=2oNrL86 zhI)j|u(Pq*RrB-G`;shBDF9#k zVy(drH};q#1DTOj$$MltL);Ggt1z0?^Tyi@LRKeoEu@ZCyF@WOCpxKK zj@ohA^xi&b8mS|$FqSQ((nFKD4f%WnU8NLYWf8LmIJCIDd zRg1BcLI|U)*$??3c;)lJvuNVBLBKHM*P{|xja&ODSi;K#$O|~v@KFWis^xNu+M;ILRR7p^;7OFgBcY~poZz{BKAT}$vHO5>;xJ*-oK;G z3y;l4CSCDK@)2dvw1XyC?Z}G5!lRe9lHJSnsof6s7frSYc%8@r+byfnZ{3>0q!7$d zI)7`o5fhn-i`-N9MEN|5mL*UC5$E<^P=;OI z>lG@4sa6;y1CtVKZ^Zm%6;=xHorqdt!+vWF-kypR66GtG_9hth;P3OYwH#=|t!FWs z?FIMod4nj|dFkctnAuz&&00tui%*@+&Q@oS-R(Ni+L#_2f$>^UB`TCsCJs!1ORFDZ zVO{Vo<`))Aph(|-gb^2)%U+Fh_*{jS>NWaUkZ-@4nnajS9PBsOR5OdcOtO~CN+%Ua z;XmQ-3D_roqN-x$AE$~{F@V$PG z8@9E<_rRQQ8~-&6WXr)St~=RpMv&F|o)J795RXgJPZoSz6L|yIAq_B`ka5<&a9ksI z4(&)%e(b$AccvY@fDhge>>3hByE<_<6Q%lbSXZ2Cm~_O)Zn;x*n^XTW^v)9Jkd!hf zc%Y%%#ke=ZNj+%C^e#c<2PE^U%WBcqb?jvj`t)vdgC}C)`dz4iZ;JpZ%XdkK3F zt)H8``_i`CS2OqE|B^m(^D#Ik{mLs?A0C*^2#ya3H8s)O)bs75BFEyf^0kl$F;^l% z8loL#m==pLfC`54ELwpIWUo>Ok9Px4#Q~Q^FrgXBaU&T=?t3UV6RZV;?VZn7@Alp0 zaLi)kM?ewa$$G@a!9WPdr#yWxum5)ZIV z3-SuOZfXRXz~|5~`o)UP#lnU^r3{7RW@kevmw_6=c41I~vUu1#7$6O45CEUu!0^ER zIz9shhT#wft*t=%<$s^MK??8XX8a*3!Tv*1Vq#)uGGsK-|4@`7KAN>Z zSHfFM{hb(EN${K?ArqW5?W>ENl@zo4fAFbhD;5mrWqj&PmQoI=x|viwCu;XxCBoEt zq2hh!c%bZLw`LE80T2;9xFrm8oO{~tkFTz60M=Jk#ODTR6P-64e(+D{6CvgAH_VxR z49hze7qMV(I4}FE$XhYTUt#5sxe?A>MUau~HFesFVus|gFfZ^nYF~+T4{*cE#>Ch#-NT4_?s`PH zBh!n4il%b4mt3myn<`7NGoiXMvrf{?q$|&MqQgW7^R7AoDQx{o*E~VGL)RqUtmV@6 z3ULC73P2>K0UBZM6R&svBnGtdazwUXt69FHF2S74ujY^F8*fN^8pVc=_0tbLd+DcuD~q3+}uR_w^RPUxz;)40=* zL=`yZ(X#rU!BS8I^v84E9X`P-#oG3qC`%J{TOM2xZB-{-?#(ruFbB1YUdxSLZG9Zc zAW`|V8)TBjttzR}OshzQX-BvaC6#uKLgh4vJ0<(<0oCH|RkRV7jGCi0>|xp-$&1}T zv1Mc0lwR~kQq*X&P2?fx884H8O#RknCbAasiA!RauL6*5R;8^<3~FqH`rOFPN2q7T z_O4&EYvEYuyJh3ZkrAOlx5FCFoEj!og9_sZnFG!4Q3}Q#{ND3NKUQYcIdV%4v9vf&cgi6s9R>Y#)SCGu9D)#vN0B@wQ#&RpE^^3<>Fa$mKHrj(xTeWM+2bUyUG`? zP8^ka{B^pZXGN6y5|H(vp8>$iP3pG!+mMIxsgw?z+fw!V3nvyov28c_}t z621_gN&-sW?__w^#EaS@72%>fO}F8rST=e6HX!EA2Jd#^&QKeFh)^q%%QNQ3I0(@a zkL|?{!B#6~f%;%xI3Md(I3u91%UWWr=EIzRF>BjF()%PHJU^ZF&Wm8!%h&}FC<^Ln zwJ=bqu96Du5~n~ra}h&0VX;-MA|_t|uOtoaneh8bPK4A5k;i8W(!17v<4@-Y_JX_|s}U z^tRUUO0%rjdd%H{jEp!8wWrzH0*7B0=lM3j49@Fca*6*eEK>VJN)H+c2$cBW&)-a( zj3y?WY{qMv=IZE+ctnCIuI*$w--0)@#%+tXU|1Asd4zQ$7Z3{9Hd@>ffNz=-;kkTY5V&Oq=Hr@mJTj#tl$ipdG_8uN9|Cdm4v= z4n;^0mofX8>sv&^xdj}q?6NI6xWP`nzwOS=sh_BI*Kz7+mun77KqADcn$x+9HJn&mNe+h5L3rS(Y;}dEYX~e z`Uwg0`jCZVqMT_$PPW9hf{hxG)EnnaCLIiDF-oOlUlCmP`2m3C3suH>*{%ZQMtL1g zMdLNsPLH5Ys#bc~FWmCQDkWs2>U_L=%q|L>G+`WO)G$1YLCQH<)nkFq5hV<4eeK}9 zp}2O+XX5$X;OiJQc&J@V2kemGk4LUcRNEUkd(mnooRIDk)(Ph@H(~bRbjJI+xdR93 ziKfhpn3=~g4uHLrT{xV_-uX_l=#pCvoY3}l*fW#dzG1Jy5f_{`rHy$iMJL8ZSbaIZ z;J~1YTBNjA5Ld>hz zj8istofZVi+Q|wbDDt`!A$5lsrmR&Xt?w^hYMqkVxB#@!$evpPuYi^j6m`9r6ulik?37GrMc<~b>{2#n5E$q7HEQ)3BkmV}lke9X*tS~| z;v$!wq|B?T%MM|-oYNUwJ!_VXE(4MaMGJPej|o=N!g)DZ2%#2_g}D0qmWUZx`uYk_ zHvq8T`!>FQlx$Tfo(@gg%Di!e@ZN0uiE5_0=@gonWI!gtyIna%3Ue1!PpVNk`G7_< z2TEDImsFZFbBniYWjiCylti}ojq?SMwaO@^yQcE5f_SC*$2T|rIaSGaYSNhmsXu>Jx4>rr$cd_32jYa;ehmV!Nv;ZL!Jg(KI7t^L=P<_@Fl@-lI*&+ z3*EWPExF~&zOg;wB!=Fn_3Dm&Y}|9@=A*Jv4ht~Nr||5^O>sKm^higNaZ_PPfaR@n zb7@VCR(^mwS5;*PdV@_f-CrO0PBLEXsn^@N7)32s5zSbs^to0}n=3hZJn2@QOh8g? zSd#5LQgO^@8Kg#%@$4Fl1+AKGQkrT1kwc`>Ssx@pI75xMmNjg8ws8uFw5x)Lv$)Up zkfqFMarAeHYf9eIr4w zfMupGm&cq@);AAY+3VS$KtQ<}@N+EAJu4uRU)62&sG?&Q^J)Kkt>k)g(IYza ze7m#OZE#-*qu8-TzmgB>Oh&zQrS+*v-@ap_`dv{$lmQI)(0!eb0uz?(5#)frkFru5 zGmMU3AeNG_SN$V*Bm*RY%7yPmr@Zcmb>O9@*t0sv>v;8Nthr_@#D}$6K7gsG=)EDl z=UO8Xfc3s_;LVI3lT74N)73Jedd<$wVe=T35c`pdrxcvf`?PRG%r(q!a#IW`=@;f0 zVXd3*D-?JiVhNOkRs(p?4!~*k-t~OKp9)>foE3W^c*k2)I;s9agC3G^()A%{zkAVP z{DC`2fO08ZC~Q5z3vZQ^55Oj6zb$hYv&!T2qbtgsNVooL1@^8BZx#J|E@q|kv5HlA zJ^7QoXtw@sXzIat62-d1`g>|WVUQ`c~-8bDceURN4zN`9| z1-+}V8|xZ`=mrG4w=0l@ea;WLs=<0>z&EoPHWk)%j~f6jTFgC<1SrJKVTzx`r|-(w z&H^#E>!}qCn-M?c(TbZS!7})rUa&RoICwW{cr?`&PIVl_@#t&*w(`3{>Ox{j!#M3S zJXiIHe46Br{%0-77WU~U5h<~T-Map{K}TRlvss?GIh(2RBf@igyTtGB_+!gVlJT*1?r=9!?~Gq$w}d zd8GncqM2kG8AZ}#vxdyNR`NRv>>;B?#2?kZ#(On^0hb=H22hKY6&eCwOFN;4piSG~ z`kBWzQGt7f^YWqO9<%yzA>6FfMCjF=aFIXhM~Kh~c+p8|_yBFgAg+3XUdxqj0Y*qL z1SiCL(r%@qF1~Ztq5H~r^i>pp=%a|pc0`NVaFe+Ybz#O$-|fIBOlT=SO~w%-!#sge ziTqJJt;e|W0`hUv(yi{Vau~^Rc9{;l3K_Yp*I?<5WS&2mH0V36{}>|KWkNs_;Wmo~ z|Kv1u_;KufM-4D*H0&PO3!{EjK^F*Hv4}&dhXGIqUU@xUr3fz<$aEv}cS!+ki&Tjfq6xBl(Eo#*@q7P`6bxjPbWBHCw`{O#6KWZj6 zrmj`iH7u;xIGsvPI%TdHuh3hlX^0kac;M42UXn`Zl*hjvy-@qM9IJ4QhpsS`eXITo zI5{V+3u9$byPhyZL5W*Er)RdqlvyyFdBG0;rcY~}0tddymVNYzNcj@uMDa@p;p)y3X%UXJcs?S$@Yiemnh+03(08&s)WQ zZO5}kFJGTXWn;)8di$D`qG6rhaA4EKPAZzUfviBno;i-JQ?f%8yO>!5Yfn?av+|-E zTB_-TD0*vgPN-}TobBamUyp4{5FDwjBle_Q_8n*Z5-|QTo*1oYT zi=Y6*cx8)9cRcgT-s@y8>+iZR^PU!!Q;H=rvcKnUHCxPcogXHwf?oq|UtE?zvhENL z}sygCKu(8o}6%?3}VKur;Zq@sfhRK{MW%P~yYhjo~qL&&-?-W5}K3Jp6jG zsC0cxX0Nch7zcT%?MLA>yDB(y(~l0-$SwkW0Ra{)Xzx4Fj!8^c=SfO5#8fNPLsEHc zdbM#cP5PS9&+n`6>ULMI|MKGxZMJ;I_%3?=e)UN1?n!%B_v7o&aSU1cnZA0Yn>pLD z!|o=gsHIbzLnC%jKpZ-^1&HN1v<=!zkY7g$=RhL?(2X*r+lNghO=Ifw|)(G%wCTs)c(!$v9gKq8hAfyyRN>> zhG@%Zh~q^8>uey(-ddZ*>z2NP?oK{(G@5NrRk2>a(K%jhuIgqFid+MB%46PWX90nS zJ#iN7!CkE1zT%ze8XNFlY65QsCQn)FBki3u8-D<5rxV#; zPD!?***jVCw9ihKrB!Wn2O4a6A{PXsz&+P}D}$uCKTqEd;8qrxcb5~x>&832U;|y> zJ3L`xoz@QUo$tCG2hL~9o94dMeWFxf%YDoht+?q=F{M)#1vN8QhQWd;yGrS9JeZzuO~ zcd&RIpNj>*!Q%SkHOAFOyNi!kzrpw#@n%;8k5rXYZ{s|Ckn#M(bdREEPfoC~Si!=6 zSYNkgWX>S zxD{yz<=ZE;)KjH;Ch&l3!!F4kHb#N)mxLPD5Qed?mJ93Q+3x2Xj!#}$=YzMu58`y9b0g%mOu9O>{zITR8@z0RGgs-4poI-Fjf91?_D}v|ONvp=#Rnz%y8OlT1(UAG;m)_Vvy?N58 zsThN8?jE*XB~b#PvctctS!7UVl6+$9=iGE8u(yo<`c3cK8k+NxO}=8|i^6p4y`g6F zT2AeytpStwYE}Qv3jWS82GLPX0!W+IE~${<)Ueo?7c;~DtoU)u^zNO>xMce6c}T{~ zbK^0|dYFTWRMkeAYBWau8RzLulSI`DeIn`Y;FpKpfI|XcA`s;}t4KVDND> zdD{?rchjWC0v-|{{}zuos9i$(=yCeO)N1$cQm$H*f3?&Qd;e&_Ue(OhoT~K&x}*3p z3yw>6Y}}0?Ny2|ieA}|#GHH(S<10it^XueC?ETjpo}Pbii@;k%-T}9@t?0ExyKAB@ z#=@RkmXZ+PrUkQ73D-+j51{nyRF%sm=X@OE} ziB?UDr0f9Um*f%}w0*9S9E%K1v*J@i9ik4LICdFS#-7r4D*0S9wNOqR#BXaP+o z38c7>(ENZrp=s(q=tY<{2)vT?^b-!`rq^cNC1kvEP0lH~V0p}kQY zWONBx3J6ek^L9&aIP~MHMGPQ2?s|_Qs~C=g-cJ{M-j}pVI(MH)P>DfD9#xHSna?a# zu_`{5c(u5435NvqkNDA>X*zlQGy~}9{ls)vtn0{VuK>jbPXezejwwR?bfJSkPOp2`QEWBRIE`p-akzmouo ziP$ALJ2%4?pHtUDW*2S&ZDkrZ7q|9JJqPMHx6TxK2R%^032n2bf{G?iD?qR(M4vC{ zRRK-o?7hXpWU(k9QF+`?kbG;J`*(~Q@}-2azJ~@%cf_8TaGJlb#4nNgId<4huE0$e zX4V)xyP-oOa+$3chW*96s;=Ldwh<~#0Xy7N({0Q~N~z3p#0( zQg~Y;JWim8TO6Ri1EOnm0leQAwe(DbAGQ1V=-+(l*lR`~qA91;N`ve?xKz>jEJj5@ zHzRhof|90D*JAJGq?6W|u0Q{$uK%#?D(ojx zWw18+Z+s{2KRK3cfnb=@m6`ohl|Tm~6g&iUaNfW%7UnN?aETfS#|P{5FPO}8fB@zb z4g^Go_`j7qQ&u)^4i;9n^GsN^FXe6oy2M<$LSl9oENQqi6$68d-4)iRCAuJRH&|9w zG}0`DqS3ON@4M|%aZ9wxY?(ld%37t`*reQdh8Va-umqJm*kzjpEnq8SNtZ7*x&acz zUGCqmdDoY}Ie=`0OyAzm%YdzSMJjA#x4ZEetlMFiv~L{b!bO@kPYo)tj!EA_xM(7= zxoOO9niKnIx@3Yx`fHIwpRZi_kItetuebaHa#R?SXq%mrjNx~i@jAq_erv`op#oCK zg(u)=Zon|Q0z<{SMf+b3PxD_>Mi4xMQR1m!EHP}kZ2<9{>=uQBYq>B3n7O)|Uf@S7 zk7GjkCYb(^KAs}-zp{xL(_+9wKJ1*{Y_w~&NWz&F<$uNKS=B8g32YDka8XxkUpD}I zw}Tg#Ij5Z2D($0qo$Q-!4Sct_N|g^9dqDSE{W?(DH&Z294q$U?WiaZ+ZFd5rgLUmR z>q;x40Hg^NnSyU;Pk|_q#%IUJ0;}uGehDu?Ipd9YS~Mut$TVxlueTpHgm&zf!&Lax zOd0ItAEOctDmH39_3J&U>+d)}oTCwyeQGbP^F;j#HBZa>ZpVfC=FXOSWMEooV8K=F zttD@ag6|)1P@G5|={DC#^MHmMzRFI~7{k1!4>&Ar%{U$2RG1m>E9*Y`UguC`IDKa! z8{1eP6hAoN)oX_dy z2G~$#Oj}w)xE^$7#yorb}2V#XUy@+wadx&zt@$DIcp-uqzDNZTUr0@4 zQi3oew-Su}lLlII?;DP<9yrrRdcUQjZGYNIrqNZb-S&eNr{6g~O&5na#HGVR2=O#^ zAaU26c2C|t$5MMwhY64)e-p}3!;FSaYkTm_e`SQd@WY$xLMgl6&d+4IPUy7oJ0O(c z!-otKYgDygacL36Jr~R^z#=eBaHW1%kLoOT8bU&cu>CC!s=yV8s5H!S>SSl^E2QRl zJZk$LzESXb{c=OdY7%G?!c@c?IlGQG@`D3E)1)_meoN{n=d8Lrl-Ha(WQ^%zpNA0$ zDl98XhYmz?qsw+9fxw+k2inEO1ORHO=R4$a30$IKZIIC>9JkTFjn_6VxD`$rIAO1{ z|7}SqLF?c7)or%>>{0s1Ll&wsGF8iEbDfGjJR(Cb%f9|7F(X`Q?qyPamH_q%s3a(F0jggyYZh0JM%6rEA>bh<+p z-q!O+NR`!l)RJ`2M;bX`dD@iIoxV8-Xo58wE(~rhpdGbSK=P6ca_ov# zEAA&y#6ts?c(t$ZrTi3v`F}Ad{UE;JF=y2)$*4Ygn|Yl~`UPpi)3tZghoej$PL34W z?`!#e>=|IzXa_@IxC}AzYHh%Kb)} zAFH$H$iTYYdm57|QiEvbDQHkbz8%)mcu1O?Ybd}-yt&FC2dJ4>P{Lh7x_};Gs}k)B zB`&=UotD!>N&qlM5Z)1Zy+6oZ9hYPGMTXdL5(^!sCDQRHG~zi*XN@U0+1mXbT#^)| z_fd8*rlLNS{_9nf{-)2 zri7@lQ+d-(;$G?R5j1ufc`|#U43|s6PBhMoLmssg!z2XgVN*Yk2xlTE&US8Arjz76 zsi}GZ(z5Eh2q)8zz8hXRNx>i6T6IY?OX5L%gH>Z=aR7BQ!&A@1(x}$IgVXV1Kd*NV zV-|T-ItyyU0t6na$1WMIZ}?9r-Y6VECu~c$pD@vlF2a!d*EQF#cyR8MsjWPpvAeCm ze<)2APyztofac#Uoh+RruHS!&Nv3{J)Z;_fx@p5XaI`W_Lp{8-Ozqt zcS~GtiIF=i8uBKgQ3v}>d|Kl4G2*lQ3AO)O4g?_KHhfAM(oxKIgDg0GY%Q)D*@=7* zXS@zil;XDdzZiP+Dn3wrJYE{Y#COd~ntlQfjv4gOROEEu68J}7dU2kKy_*z2J*TA{ zKiZCrKNDWGs0kkYsO+zW7OM{567K6i$CExU{c~;KAifG0ZiG6qL1I2NCuvxb#6CX3 zo&leW!295yH$(nDKsHA{v5hHD&j-O4jX#yDuNp(OOEpUkpgz8%^PbSyYFpl`ZVaRe zZ*kxx>%i&H^W|9lq^-!Nw!qO<*|sIM+b`@n;!ljfMZO3k9r2a-njJH2av_a8jvU_Ib$ z(8#$l4!qS zSrY0-j8M=~$x}$Xu$NfO#(jKJ>E~B9SVOX~)4spq)y3v4U>Xud{H_rs+{Jy+*Ws<* z>fw{L+)aPD*H-=QTAXQ^coeeVki(1bfl1wW0b6TztMMU7oT-I)APtf22Czp_F=lPk zVy2>beEHedGqRRIyYXrJiCyW>Jp27T!qt6{@6Q`|g>3i}nlkGT5xe(K#Q*us|7Y7< zPEpFD@{6GQHwcQ6?nF#o@H-t~hbogm^ zF4|6z2B@a$PaI0DQ)jT>@UuV8yYi4&OyShSa}DG>7>XeYBg8?GzdaAM5mZtCB$D- zRGu{eZcR!ewDJIN7ZXS$D`~qYWK(%ba;Zr{`wPfQnR|W)==WsR>uc$oa02NhTc@2+ z8E#jHk!ue1_5B`3ew*-|r?Cf2ZDVn9_6+c)nI8(wv~$@;!lA2jFdkA;5-(IKjn@Vg zyFNo^BChKgw)I)>d0DE5mJu|clun!v%siNsDQ#--jgB#YP786YUk{!Kl%D>>)*z$i zMGlnKf%!k6gqZ*L(qtgA6bv;Gz61&dIHm)W_HVd>GekT^AW#4W{@+5FJgcErwZ!EZ zEOG3Lg53+MY#nQ*`Jw{R;4}kq()xc0&or+i6MvBl_gNNvxB7oRsPylC_c{+#+|Jy{ zb!(Ej5=9|+;!YX!obsGH%WU#=x@zpGb1zR=k#6xdC~t|ZVZWAUp_N@JS8uaL_P{9C zThXB@Fx&VRptA}BpbPk7w7}c#-gp$>%l27uIpe7Gu7#RzQe{X)lybOKII`IoFA-!B zAg~|~GD9Oolq%1ziv)g5mv~^L(N$KJ`{SRXp3{A*eV#EbDZm!`0#S5C#~$e?X1yT3 zpwD$657t7F3s6L;7U`&XOR7^(IYjw!Y=?X6xXG3(axl$+J_D!;WPz!$DWidGxH#4p z{?IGL`YN(dGEv#m(U`yl;?2A~|DORT+-qfjPFnQqS(dXssqstp(2YUw@8_KLm-Dx_ zKD`iF0718SPeMWO`t{?1oe|`dBScAHRTYut=eW*J({UydYsX;@a1mB0PB!SeyqKy5 z>@OIZs1e2hx*}~C(rzM=9`K)4$?HMb44e4;qY{4VP;Gjp*NIvJ*iCjX$@DDb1IQJ` zXcnkKS(q}kU#J(NgPe!4>d|L3h3sQMgEWdsjAXHd`g-uj?;ke6CwQjYo>;u3!oNEx z$TYx{`2#Baou;(=<9qV(T;Z4MNsC^(_cB)Wp7U>3KiOXLIO0=R>`u|}X`)A7avUyHm0jK%nY3p<3;W~T{+ z0SQdG9xb0XvJn19u-_c+zcC^2upslKF2118?9{EK@W=F!`2RzmXkz`p#%{>`uABMF+AzW4`8Qq!dI5BDXUH@H zhME^LmU~0WdH%RaC86? z=myXRo|(T0STq&=7|3!P9cPx zWhCE^#v4yX>yxmt(vqL~e#o_gHzW|GzDia5Q+HPq7(H~OdF=?(y#{&^1U@5MJ%Z}I zB3lrT0+?UR4|)kmG(?)}?8=hgvjFxRNT8ya&^|)-yv*ts9!FM=>z@JwZlAXosqgea zm4`ZSe4E||!6gIbA2@b~^JUDh;f}i1A{I|?-&!>jX`t4qZB=c$24rl%2j_ zLWIvL-JlFO*VA($Dv_J$qsp6GXis|W-u7icF~iKJt?(^R(5{DYD@zFrYM`7{F*4P!c0dquGqCY;C<9 z?QrA0Ux@f$0am5Th~K85=V0K{cE7x=|6)-x6tLRUs0lhScC$ zv@!ouM2>&LIP5`(Q4UG=0bA?9#SBt_k?ZX%UGOT7n{kImy#ca&U z!NX#)p(gSVB!AOL_zRNn(?G&24GHPVB_BOp5ChvuSMf?1Gt120e7w z@#@FsJG?=5aqzIv&dSzy_C{{|3P&W&KZez&rY+wsUp7aJx;6hf9;X-f0TUa*YjGl9 z#E=vrzeF5^nqzYoUyTnT$BFJ*6(${_W)(4`UErUs_<4BKeCCxkA-~GmBX{OQc04yD z?FSev8?PbU@Fyws2*Qy?0LPhNBV{9QV+S6&FA2GsFPz4k;0yMPC4lE*k^WSkBTjux ziQqAC9{gwN;SAZ%o%B${YD+a>>74a-dNFnr$?D7!4>}R~H>C^G7dj_qWd%srMAFV? z%eh1xC{L2t%ezsYn_~lSWmucr-17c$f8O?ra!bx#7xKwC;TWV3+ALO`0~0X>Q*BOm z2#PEdC?!XU#I^lOW~9njzNe*<|MaUOtN(WqQz9fR!~@1;3Z3>!mLEF60*KIo+@|1@ z(O;tdt4-c10anUoHx38u`3`ZVfPyT7eOKIzLd86(IT#WZO@-z-BUK^*>AX4f{kynH zyg+5?cx5|M(;x3YvEtvkZd;=&M~7fpM$l>FUQ9ZU%}6^RU~z~h1fpl}8>%NVQ&Ghh z2+Q$zP`9q-jSW`#+GE{wD|M|4v?l;`8zCusm_d`_&?Ak-E^=YO|0V>M>e0@a6u&~;Dh9h|HK7pp9xQd4kLZ(x%hG@9A+ZV z&y)duFqTGE^&@IBT{wKnEB(S*xRLYGziBwI#0QeU)Ov{pwk*_*KRjw|S+E;_z7BA0 z+;9>tz;X5UlCyNg8RoTT^WB`@j-tm^+X*An^2fWdH;!b}w;p$+EtvbxZv)+6Tr*&)QSEI}Y+K4ZI zgVgm_JoFk?$C(h;W&KwF4->!!8TRX|KF-}HR{GgfN# z&SBRo?7J5f?H%~fIEIw?7sBLqeF&|)YiM0fi)zO*5QDkTC$yidfuiLb8_P%^N-gvc z!~ZqnEe`r5;=dx^fcm%K_&`EcNK_~ZTILwxLLj6t6se|3J5(Z8p!K(@(FrL}VSzT}M@Gg$i zl`qq;D^O!x1Z-C8gWv#9@Sq_J&{W0Uqe<-$?iJyt*SlPUW7JaH!gSKL{ za<_IF5Al2~JtKdpIOInVEu!d%Sqsro^6&f!=k0JgZP63)LbQ zX4=jT)8rL2$JPVo645V#&L2aTyIa9eb^QY}v(QcffI1>lMXG`o6PXRl_nJ?0)64Gb zUYj#_lUM8a;oX(#HheX!DT_==H^580< zdkHhCiOwz^aTzG*0%?ZxfL{sAt5Xl?Md{+@iKC`@F5o4KG&=+GE+@xx&2)Qzu~rKt z<(Ng%bR5Kf4{hN1BWfHXyfCBAr;w2%_OhbM01|?fAjt3F|M$h?vopM+Hx>v8BI|$8 zcHHLN?967y78^RgT5`I}TQpIsF4(kb-^1qAtt~D&*rcU9M{80UizPWqs>(A7#!9&3 zZ97uG0nw0LDpq{urM_W|B#rkwdy)+}W4}CPS+GvVhF|heKLSR$rrD---gRz2Ht%~b zb$q)|H|&V>VN(QZLcHG!md&bWLd$VZkJpt_#ze-bJX)zZJs2Mp7(EoIJUCmC^x5mv z6B;xM6@)q^0J^%bQW6m^npHb$9}qKB`K@2tHP1rH4`Cwr4N43f|z-4@T8tahe5oT*q8v8iBO z_fKQB0G8jS!CWtu<2;3^dk}Hw4CTYU=Ij(+hCr--7TEqS?)4V%mU2>c*6rzd>=id+ zGK6>kYJjpBJ(D<}BcrNveQD0N%{i9tkP|t&xAR0QMBh_;a3^13syKOV5?#~>YE+-) z6XP%ED!0W6^5LfwYek7iA$YZ?&KicImXg-Uo$HQI7|6aZ6H6+fi8#c3sf&eaxfreCAPMz$*6C2%Nx8L9Vl`LSJ z;X%FH5)WA$EqHxL`r{Wm>Z!d7jiYtK1WH_v%V9Xyc)(IU28_GC`&jM(oyaJXXK_Lg zv!p~y z>;McGhjmI1#b)zMZMW~K>H)x$h6MOYmk&%jS>O_Hi`aN{E;nE0 zHUj&oVlnnC_XxPw#wjRK?Y&VxV(<3=qD4gBvwIa=G;|#=>dt(OFP>hTN8JlO1f(Z# zv|tClTf_XoXrPU~1+^;ZQTqqO^GsjfJD|Rzj;-~YVG4%=|@Mei0Z)ygI~7i0j=#=+{?>X(S}TEi8?iS0hoCO zRO&dMSWBNz?nOA8?p1H>8Nda8hKR2>dzXlNF~wjWJY?pW~d`V(OX0AA`c!Y?uvyAD6f2@JWL1Bxq~3UYV5QI-IP z5pq6v5s*DOgU-kFi*R-~H67)kg^+#Z-5|lp+Bk9d1^<9%4^j_ERW;Ep@zQw!=0W`Q z0w}M~0ALxL>iLHJzSXH0F*Vfh4NG4 zOr2hV_w?I{b;*he4t2+Qz6R}mFqMmZ^bF;8o!5w;#@!#1lV{c*0sGJ;P-Ca39*Uz}p2zk1KhVL`4- z8mwS``M}Iqhc3MR(b8WCu>JQX^NHL#kOIzckXQJE4oiB?C$pW^5BGGane}b5Q8)EF zqo#c%(8OMB-8U~AMNTVM#AH^0Lb0NTZgKC;4N8lzAC3x<*6h4|rO%8)84md|Wtv=XmN#*bbE$5bdOnzxyM6;;5_M z$@Y@&qk{RxntI?Zl~_=2@Vg#Y4_k|kFYQE*i&it~x9C5;4y*xW`xQr1b)r`v%MKd8 zmC&}MQ;7UMEuI%I5=P%Y5%=GW7tu-(ay@t7rbPSlKhZPo_J#v)18~$kvc62M8lOkA zNwkDR36c9czP7W_0F->BpgtzEkn;9IeD69jlJ%n{alIGYZ%t(1GTtRz8Ccr+$K=m8p&+*5z za~hpHnU*t0zFB{78(KdJzS)9&LI;gwnw}tQRiI|cKz6*x)5n5zdPE++;9L>$2eN+= z4!>F3)6d+aJX2~2%b1%{?Cy6;KAG$8bFWzj(8$e;ki!{;Smu)v_I&2tiPgeQ68o=n zl^4Wugpfc0XS|GTk1||yd(I#ejE-biw}j%@R@78NFj#4e?r4Z8=Aq zD1;!frh@43<-^4@Af1Y&XKHWJDzP49al~nNz0RE0BT*LyLS@1A^|j)^-vp9Pn~n7} zE44D<&@OOd&a9}hcqy4Xk91h?7r1Am(sPTKZt61uB9~F>Znm`V#JuC`HF$5ntpL^G zsF*U^7rVv%D-%6#5%^zD$$Kw3a`WfjF8BOzk87J7zxET(`2Kdu5Wc!^J?iRPWrAk- znHUK_iUT9~914&>>y8uky-zW~?}<6!No^o?*)m|H{Mj#zOOMKJ;^u`7t?8!cl1U0S zDo;BAs!!tc>?TeQWXy(a-6o%9E5azMiuC0-MQ*;E72j|^l6XJNuwd?+OL&)g+how# ztty~YjzjjfEKFU-!0?RR^kXd(&`_WmDT1E`H86u-EkpD*6eAOmRLcXhC5RJ3H53pAl zr`gM+*u&4%dmDxO$E^ct?7`KSt0<#{A8dXLik{?cOmeT$gHUcDj%}K%Y+s}Lms1pP zNyilMw&rU)lKr8?{17lEoIf&P`JQAR-yEl8&XlTDP*MHpUf@B`VTKi;1F?xKKq`a) z(1OT^ASNOHG?$X^c)<1zy){_Z(1bbnugnMr?UBvY{n7j`5kExynx$6|<&}FB{U~_F zb$m$<^3w+xIIQi#d_4TkYhfV2`gta0a45HLLyB`|wm5x)lU99Ki`>4gd|NmQ>c&_8 zm-)J=D*{i#Uz9jrXjYrU9i(_s?)9;Jz}tHPPuXt`kg3zM9Zh}Pv7ulw*?=wDG=Hsl zavW7T-WfZMY0jebns!A9cBp>%;euUoOHjLj59$CfKjtJN&nSUTt_W@~Mu_E7Ln;qf z2bzw9$mTE?Igt!eu;9o|Kx{EpgtjVU*cwU#t)SCVEt>SVtGT-_STZZ4U`0t?;9KuVZsE>N1+#}mLUg#f z=?=#`_QF8$+R$nr?L+q~xN&eCK;T>61AYr%BZE9!_Y{%zu#l#4>mmi@B!efYY1$pCQAc5^1u5ZhpQC74 zu(K|FC&UcAj(yjJ=y5j7ekV7RJs$4bL$a8TE8LwEJX}50yaG8a22Fv znU&(dVW=t?pe*_3%XPU}g1xEa%dlf8U^dk<1a6qJ*qoNjEbNo_Hcj7Wem8s2mZR*6 z3i5=$RLV+?N*$Dm|K1v^L>9uG?30)pan0YpHIv-lW#6qev=dx1nO#BW=!sedU$r97 z2}b+P3etHr4*5a+LM1Dq3840X!GlynxgTe7$WYl|#ba5qEKB6){40o%JqcP;hd4j|H@`CqaLfA#TG!OC(i zw*uiOJN%ESvhpfjTAC0h(1N=dN|x?@nm>DoG&#{#5~)4*=0g-15p!f>PXkr}7<-M$fTjs@!xJZd7xx0_gG`6?^@N4fT{=P-Q^INAv1w-?DdV-Q zxVB1g?m0c_Sgc*RBboPRRKWyg$jxW5IDh&abU44%@3RVMIp?dLiPtkkLxYDxyGsz zl2}iy-H~%vcvVC0O23^YOHwGJ(24{wnc<1gT(y2QDZtz@{f$z+4eRTxPb$>pNs-&S zP9k2y^%bUVn>7` zg_k<<_(HWJf0H^SYF$w+1AyzGmx|yhe_tTlCFx=Zz=jjfTI0+yO^(SQBTJLclMU-l zA;DRXdkbrw0vuC*Q zQT1lMEV;So^P>ZyK<-S7u)7j*Q&9&pLhyuzRnNhZ67r4XvT?2@!w%n{+1e_kDV8;y zU$mM5-kraffE-a_3JJ%T%7aL2@nY&5*W#}OgfBJ55mQprNjcqzsv^n?qya96lym!>CE~jzm`MB57+}ITDCcU*K}~r~q$A$2 zeep%?i&t;#E+Kg+9_%rsT-JL8-MC;^Pd?noyZZ79k9PQ0gjOB&6>rCLSY_U16rY0t z=HQDpV+LJ>zt9rS=0X>7EoOEbM|Fx2T*>&vllcS~({Tro60!k2p&!t>$HpPE zOnWIsdtQa>N-K3OKMXMf5PY1B9eKL{LNw^`PSL00^Ui-x5AWapbW|@iOA3q@f`cSZ zTjpbs!cj}|0c$yNQj?o2>1{MgA^Xa^GXEZsA@SJQQ&{3LWZQb!gpmG(4(aePj&0w2C?^qnD7vz2SIm22P}XX*Lf=s!1AfEP z#vk6i9zJ#eJkLbKEK?GZ?SUzQ`zc!XN1k%+H$AevYei+Zaw*bhrBOCqfh;8@;Mv+& zwn!A4)?p00Sot;Wsz^2_=f9u!XKKbXa`nTKX|@u>QJo~a30T} zgbMMi1F1ACzKprqrAsWayq!BffP8wLy*=Ml@s3LRUI#@fwFxmues6y@PFD8?3|*SB)z*esNJdUe4=7#tr%Z1^ z=NK{CSK`#|={s^{Mp^A5fN&Xk6Y-DMR;9vUo3^HM@AD(YL0J{UVBJ5Ze0%ibCsu7I zR5E+sE8A+8TFBHRx%woU6gb!pjN>xQ_pgs}&_}B;Sz>D^2J2bYx zz+P2F#}rcTSM3?Cfb-2}0)$@X4y8UW<`#8^waH{=;r2=jyQC8Hm~^cjiPtR&HJkok zNZnLyE~BFTQM6m(*RO_&MHw0T?yHU3_O;SYD16lgXaC_rb$3(^DaXk`GCUDX+*mqs zUh{~5vK|lDa8f@s;wC(V8g4YH@q3fF=nze*0*;#1EI7tw{HzkxZg=ksG$45A}49)^XQ!?+PO5sA6OJLk;qaVD&-l zL2XsEdu>D1HU*Sc@3Q^RP;!GK#bWULD~{bWn8(zj+X<{K=@}P!!f)UDUiUFy!V`&1 z!T7*lsIny2*s0O(zAJE2+MmQKhaPGWBN(D;sJa9^po_lig@Aa%=SU$KE(ea@pg4Gb z4#Z-5J_gcV@Qcrxl%{j6)!MA`_IS9H8wodct<67bI4qXj-q+&b?ndu(8q@g*u;Kfb zL=B5~2&NfLM?!Xmo9Bdl%7sLjhX?RCmG$O-f|v)oB7I~y_wv3>11DFXlV4XXI$A29 zsY7DpMnUw|10a)Ubf-t>#p#Qb51PYqw9&u_DU&Z>X!5Bv)q9N2iMAGIMYKv@ERdNt8@GWiuF7Y8pr2B0SVsm3OMf)qVp*g?vdcK=kLH#fa1olP=i>d2>ln5K&>%o<*nh~Bs|W=8oH02WeMg% zZ#*^=Etav!In`B>-jR&C*ZzkEaVEV2ApO2!wNjYCVh-Y|cXcCIT{tV50E0Kj54r$NNvyATniEBZh*@W!Y5vQ5d2eDKln+O9bQ$&!ecemXr1~+V#L9_UI zCFmtN-KV=xpYOdgK7Q30)aI#T+gfYRH7DHYbKdTbTlw)*L33}c;j_xPI{bG8tghBz zjp$lo{Otgc*5<+4*Jp>aVxP!qH}JX)(masdcoY>hZCMXH<{)5X;ETxukXJCr+$<#n z=lbB0s^}zlS~KVCGkt)Wqh8dl=b?WK)l(RB!HEbcL!g)Y3+VrUKq+u$9$`gwuB{s{UGAX zdp>UriYG;2f%`>YKodBr07(|2{+(^k|21H@g_GKcYq_)c8?uxBH^@#!ttdCcFta!} zLmvW5R#q)H?8%ZIDn$$liFg>T1}_hfcpk*j2SW{GC_;fcNDjI}L*g|Azk$UZ&rXRd z0B^vE?n2OWh%dJ4Rn)I>!&mxM~@%E{V<80uOmF$~*m!CfH(kZ-Og zTrZHpS_YtY4C1pVs}u8kYJF0<(W4u!D#NH<;tfGwdeDTw;VJdZ0KIfjjy5vA=>PqM z$-a6mTq`n<{y_vm|NkI@jLGyNdxMO}U`T-)rGXy%k~r3aY2$tO8q;JR=PGF4XOrJw zU8z!53e1v39G?iiZb?0`QL~?51A)D=Ng?xCSO_FU9>XUWtF37YEcZ`kt91@+aZsis z5j`^B3QI`~b|XX8iGG=W@$KYYkl3q3ZOU>Z5+g&yVD`p|LYMr)Dq z^1!p5!n-UIDiuF#Sj#Xp;tchXpDv5F(U*^N(-k*z2y zwn7K zWipM3-4Gf{$Y4dZ)0|LHlinZJToP}^IrBC@fzn1g6G|B07gM#fz|6VRTC+B45=cv! z<2n3EZD*HtdmfofzUxN1$6}*#AS*Qll~9F;%xz#N;XkF9VA&+OdlV(ALHAye^veGa z^DWDyd^zl@G%_g56zTp7naZ9k2c7+~OUXgT<%m?E&>?89-z<)wJZvBIURfNof3i4C zc{wdO%mKVJZ&xB;Wyh4Na$CyDKCtSeAy)?m$~N!+Fqt@h-Pv}|g}7xZbW>)Nv0Ij@ zX|;MG=A`0nw|tB8&|2@hY*~FE#;DTLX>ia*oz^!M5>GQvGY8XZ*7gOgNz;8XD7e{{ zfxNjp=x*2C>3cURh7B1pSr%;-OV?kHXChN7Y-et9xjTj|r;cC}qI_2cdA%5n-Iv1E zFi;lH(%soiOy)P=hvPfPuX)c9a!7dB+uv`>JiLG==8!80+Z|NcCS$-+KXjv?^&KC+ zi2dThwWSyNRuok+;71+`IW-&2ZIS2#sZy`Bu_6o<`RzY00B@A`kNx{Zi=5$p?lnn_ zg0HsuvhhE>|FGlfZW+_JEm#RZe>pc5vpD!xSL9IcxPbb&fz`2H$Uk+h)06no-55xC zgpi9(W*kb_A!o#l$%pC@E{OF&;oJy6h6|oCDH=_wq<_RvYy-m_)h=Q&Z#sYuq*AUh zGnc<$o;Oh25?X$P0)k{2VQs30UOi_N9fGtPiBO?}>79_5UBg?3b)(O6m z8SSLAwVSAvvCtqvl|MjkQe7TNSgDt#b-d}cZ@j9i3N6G9DKWveA=j2Uxc~OvZrArm zg3&+}mSbDylOc>fImiCtPb+{HkkNt$xIdIB>r)XCEIbg%_;RxUD12h2s=O~e!Vo&1ic9a z#VluY@bl`9ZxnHU@=6()P4SYs*aHkPp8Nx&?<015Tc=Y=g#{ewA79BGNdJ@?{6)?M zjj2G>{66YFh1c`ggS11SNr6G5C1i$f2}DJ-dd+-9D0Or#bZ54`+v(aheNDF)276h#+u#~(XaT#)EtvM*5z z>4CHlnakV+izl@*7dZB@DOpWHy*^h9qv}u^W(Va{z}v;4=;C2dxXV`UaqF>7@fkHL z5(5K<^KkGFrlitq(7tS{uWm)%`jfTRnD-aEcT7g$*cALg@=p~dIv5{#J6MuFwYu4D zlW^x71{(}oMEuo{^Q)vq4&Uo}aQk{5fJ!dlD9HYD{xq=vo$n9`&KCtAbP|O`2;#bg zGr;*+u?CAd_R+q|_3@X9SW7-L5)+GV!{7lvXEo~e+HAoM8x#D)nKdwAr5KjwE_a#vcUGgaIc3h;dV@fLcxx>W_o^j}Sb{+Rt`%+?igA-jPv3ifNvj^m)OHYISd@@LH={G#P1 zp%h7aR^W<4#tlo54UP{!pMS}h0MiZuRo0IC*s zOW3&J3`;6j7~$yQ<=rzG<#>BFk|8G9G2B+raZ>O-s`lQ|$KZSAWQYf&^L~tTUm!G~ ztw(8nsTvj!h-;N;m<>J^W%grGyw#kM`xIjF_F@pe(l=1%241aG=<3lOD*Z*oZC}nc zEhz)|Vi$1p0Sx;b;^%KNXn|Y(m?G1}cllw(5FM5dF#7W*Q4*DL4JTPed8QG1aNEg% zH*bHFsQ%%eR}=?JpgmO_vCs_&%}yS!t)2YwR?JHzb~9w3o<&BHWki-qZ0_pFx>OL! z)Jkq-go$O8sk;&$-=DKH&=4An0O_CZdY(9q*)WyR1mol2Wr`5>-cg_c5F8#KhbVDA zWDM%Z#A$@K+TqN%skT4!&O4!dvfE=%Dnh-K+QE$ky@Kq)K`^oFme2b>bK3V>4!z*)!6{%TVC zr!cL*&YEWBAcQsAJ7r~I9${*(V(qoT{+Th!HCEx8Ms}*Y{DN9KuHGh2dM+WRZ*;<} z!c&5@!t|>HJz}i%v|Owq#*Ls+A|z6g1g7691dNf-EB6mm1co*I7%H-TIzRXE5rhAi zR;>apI%^-4c>og}_#~OT|EpHqP8Sg>M@GhMEUN#TRZt!qJTEu|s3ZVM%mCQ|1x*^l z1{wLiQq6N^EbJajv8 zR6*_DAi=9#5`++vNIH+tk{P|I5|s#%9$2p~LVP-%$0!#)yfd!OQqm-VBob?BqM)Ri>NEQ&2KX?lMI-}^GltD_U- z^_W%UT}Xy1Il}~N9yfH$-SoyA5{*H#IYO%wxHe2ORIX-`z%K1M4I4~%t^D)S){Z#? z2tHqj;xAXL2|aF`zOtCmr-C5DMe^ysnIaL3p9m?G7_2Al(b;^oA2Wm#8$a0evvdF$ zl#}?(n&sfPyPT1P_ZQ&hy%2Z^V0OI_$yi{V*oZ2+U`DJs9ok@(#oGSW5dLkizo4|0 z0s}H+NDtH^nbTuvoCEOQ^KQsXC7N8!%;J5C@`;#>6&@loo5BQQ{H&zIG-~UA>hz;5!RIdbUBr z=lPMIZ~FG#w(os3@NF{Ew+ybnW$8wQ;Sp?*y9J)XaClIbZ838R$Xq02jRgx8MSr`H zQ;N3Ms*kf-;j%{}sF`Xo7+s7gTsxs1PqFN{=++b{U_oLd6}V6P>{~G^=Hf;0K2vfjGquq!q=0!dZ7$d?l>mhLQ(hGSAkIc@Z^eAx&g%q306O zICuzM(^!UY-<<`H;i?+fk3Bx2gyP+>eQHAPk=DrNp>W9)$bJ9aIWRG|RE#q$`S>mB z)i(vqRp=Skfk330tB(VzHw5k`*Gim=$t9Xb0~uAY62P0CUAJd)ZG>?oad1K-XIUZ$?&<(yw8ySqQnR5Y*jg42-73E)rdKJsUXHg?bdZNnn*E@rCzo~F) zbOsrz{ub(WsOO3|n>wne=6Qns0X#dI2qH6tMvt6(M(C`mvCpr|%Y9|tdmNcvSgf{E zFN|%+Ru}6IzOURZlNxcW6W~(8d7uNf1*+{I&%_*GGbby3DW^7(qqTtj8fLkkJeICm znI_6?$UB-NQ-B!E2Q_CsVV?5NIM#wI^}e+g1)noLn9^e|3LXg`KmAdA|u$g}q3Z?1*ZhCgL@>=qBE%afj#_38X);DWmM6 zp%64Y-m5OP(@-PrjT#r`ZBR4Taw(O+xEPW)wQi4v@MepiR~ihT5OJiF8yUI?A_3k% zS0Bsu)s&heORmKceQ47kdV!W8Is=BQYqb+hj_e}jXrekS0?;y8)zL=9Dw={cNPYK{ zw=*UAxLd1xqvwM2L`|)x5;xJRzj=V1f`UlDX_|5xT{R&#h?QcRn~&#^li>ot+M3*B z4#${yE;&XAuPi$pUr=};2gw28#R3lMJs`vZh(fr2ZN`C9w* zzYD;G>_!0(W>ES3goVx@U)^K;qBUm@>u(3E(PZR3`b0={bpQPZS7!PMwe`4-bfEq; z)6n$Wi9x$Bs00pcU?3!1c}qQb=jnZb_lty#XO-fQir=CU{` zAmCTl6;7AfxJdIA22bcsl=^iHhVCn>Oqns|ku`f&pE*IddGjYuarl-lsEPsp)F^TNfIb}D{7pM!Kd=g z{}deWp~JnA>=8OZL*41{d2B11{zkXwYuzO#TSZyX6;Sxu$C1`g7g4xL-f(4|b`EIs zsaVxdHsqbynYZupq4{bJ4Xc~mMTB0z=anh{r~B#BVN1)>wZ%_Gq`R;Lr%8Ix4aE$? zH>>-YqP}FMU$=%lC)2q?)QfbIZWC5OkGiJ~+aT3DuB(yu2gB78;2@mvkbP7dlgkpD0!9KebC6hkm-RkN` zPyRhU>-{zAq0^?mpXQ&H-whds3&w|ubxV_^SephuI@@Sf#mG4{28-#xkJnQcU?l;3 zbdL(%o_CAjbde4Q)Z1rFYR4*##SRgvb^J_>ikv8**^II==zG*7z3vt`R z{~4!%Cc0p-K&ag?81TPtv}<8(W^>R`0t&svUn)MYji##qaj++f5cJGVMGcN9%Z|{; zp1Zn2Za!`$_C!x7=fAp$wAONl8lxnk4`U*;(1hzmt3;!`8i=@ogI?^A@IgF$@c29m z{+x(t@?dPRiE`oTp-(dNB%xzUV_)i^4@STkOkhi^A*+!CIBC(Ac4<=fwyAfDx{xry zO)Nm;UJ%%j#Gh$F!pDgCASx+XJ|z1roI*5h1U5jqd1z`cT<=~7%x4RZ_#Lnx zzmid5qhJmYH9Q(7NV*4&9MS`k5Tp-}CIl++f2Hm20v>bT#iwTK zsKKL8bq8)y#_KAQ$)gq3(_yC)fZU!SX*qOZ3FH~5OR&AH)A&jNWk2&&`+LFU>%C-~ zpp9_TI$9AY)pa%1l2cPqr)UDvaVx`v??BmMkVJnZq`!Mo$2njze_!5LyqV0P+m*kQ z0O0)3%ez5z6^{6iQlwr@EBXQG!WD^L>Ax4I+W)jL;cw&4BhK6-Z%32|qZ8T31=-65_ilOWE)rE=O!np9Sa}zP=PZSv_hBn{;qz< zt;FX84Y8|UECgSS!goS*z-rxG-p!F{p&%hHHrE$`4&e zaj2`Q8!hVOrh?m`M*hg3uFdb+N>niGjaHEk!mFX7*5|nvhWS0-}v&ouw=cMQv1FYz*OxsL@DswG;LJXgp4dw1$W9=PVJ~ z?nv3frJ}J+dHdrc1mo2&;`W1*4T*DrPG&+X1X70n``2goz5&qsFK7L-Vb_h`IMU&u zJ~qbt%dSFo9u@&<8bJI_H1;>aAZx>@0R%JnA1lLF8-n`Jq6N(#ud1?;F+o9e$e6#8 z1}Kdsv0)H-Jv=V3Q*KKH?RX+ULre6gfDFS73L4WwN)&5_Zs12(cwkr)l8mz2M5q$` zd-vp~?Z$7pw{70b8Ly3X$~Uk#^)qR;78Y2q9w*SOAKx0zl$Fvf2ns!WI&IbJNJ!4z zBvo#5b~d0`&6UoT+xWVE@U79UIha{ol!&;pYk%~%!)fyax@Bs4hVYc>bPDN?|zMI)LV$H5?>g3|WZi@#Fdr-R`OuL&;S_c#yy^wvthzK(DpOf&^D(C-nbJ_(Wf^wKJg8u0%qY`&f0ol56&^xZ3R_z4dvkAq~4q=;|E@j9|nmE}|ug(MTk0vWNHztT1^Of28*UC@KU(jj!+kY2Ukd=b(En7j;V|apHn9M# zsE^oSy*97TNGe9>k_3Cii{^Vc^^HgkpdLt|OU#=GA;yM1l`^`4O=@{{wei;N?sEOCI8sN9k-w+%deTL}iCZa7D# zYZ*CAzBLUhm#f$pr@tVMW+8MTeX-w|3a9oiKDVD*j%%c3Kf4Tf5jQN2N8XX>@u$Xj zBE{fiWnVCogEFCkS_<<_z*LuHytijcw3xQ6=CzN?z+)zHBo@7}?8ky6ShxS7Ld)T_xFZD9J zi1rv|IG0K@Y_!@~HS~+4cZsbBNv)jiptt<86<_>nGyHVAZ#Z_6rKs?3|-ZSZ%6Ftz1F@ ziMyi)kkX`WlEJIAmqGbULy=pW^wnF9ha&#qWjba71J0c6S;vMJRma%Rsx{8XeOxgX z`ca>yDno@L@n<>R8~LanzlLF9P^%~B=VK|?hEK9^(8z5-jYx?709L(xyd`2Z2vp$} z?ANd|z0;QDo7=C9`jV^-4kqPf^IMlGo3-}`x= z`Ka@P(&&9{xKqR$06K+r-lauqzopK-IwfO*17yy1RyvTyRDcEb+aqbB76h0Kv&iMO z1DQgI!}N?U(P5Gyp?^ZaO7DEaHW0tQM(19zMbTSRa}yKN^n{SdOku;40V8tP1l^0H_S! z4p>+D3Q0N*TXou%Q|-7(bVvLg-*R#k(2TlkY~Ih%s$YvdccWoeowdsmd2796e=j$B z(sCoZn-JzVIWMAHG?}U3T)52){+@axmcDri(PFVH3eLP1ue`{%tCX$*7grB^$ALP( z*KNNw@}0F(Mtfj(%_@~G8*@?m4shJ=5b3K~&9i`wxIKHalNe#P-BVflR-xEQs6J6F z!Abb+bTTJwFD@#EV?19uL4>2xOsX?iW;8?JSw4P4%M+0&A-$K3x@iPD_l0ZpnhEO4 z$E0zSb-buv_I^Aj5`pjMdPjx0eP%UxOBFvm*leQWo|BXLq-@#j$$q_^jbqI&guCD3uu_r?{=Q}kR<{_OpB*LHn}-HVqOZ(K5a!hB2|6JUIpFoD>YHl2{0nfkOFdT*3s@{BA49OkBM=%%s*L%UFQ!@lxT? z$+Z{)DDV$=IQ+d1)a{8U6@8*`Fm;lX?QXA?>Yf583-27f1ae#yt=?@{OOS zo;*Vbs>kMaaGr$&@1oy4Q2m9x5A%hYX*m()@KQ*Cj@j-l5RB3SdRl?|a~e02Mp(efo1V_~jdD~o*R9c44Y|}EB$ter zs$gQB>JfesyEsl~#4kbaBS|#W*v0b@Bb+9|sm8QW5tJlknzEzxlk$TK@{G(%A%z+w zR$d}XQ6M`$L_#2W0W4Oy51HVvvRE&EnrE74NpCN}fCEH zw3k(ejc)XnlSop)%gTm(VlDcaB0hr%J5W#n601v4KwKYRguGbUWWe`P#R#@rB1~VJ zzeNxUlh6egm3O`q5F@Tcs5NjdiXA|;5~NRwtxpux3dA3fbwb3Yo9_ZlbiyE+J|ONs z9e*`!GLg2c%+uo>haVm6pIFc%@1Y!6Lrq*qk{K;UbGjNp|AD!DX=#14RG+@c!_A3C z?6QY50oZ!)6hb8Y79E#&OUwX!*_S9NsB@!8+@$e?`-g=9fUG1@GmS|XvH>b`w<4rg zqq8`6fCYq%R;S>=6f}`VC{^gf3-IO0C^gsy99%}x79hxp#9^RsOarFTgN#x`ro}Ty zrX_4S#J)d-%_sxk2=kCcD{$oP?Ikl>0EmK-q(Np^b7C_A`?qZ3R|$epR<{ep5&_BZ zUy^LI`CcfmE3aa>VtoLO^xL=}(hVN4BAOn3?`JAV$ObgD59oW%^Ib&Hlvp)GKw-IT(fH96%;mJ>JQF=-o#VnT3c zLfSND2LzDQlb^AQ%z+z3b|7ij1KJtDa-pICM~wDVQ}6tN2&d*o3@c1|Bd;d&R0j-g3*nb6%w<$Vb5W6^(} zW|E4GNQiRez(X$T=G|lC-nw)8y^okXbAE(J5-`Z$c7b*9ww~3a2DWSgNyRk?kL>&~GZnGC>;yD~3CEn`27zFnOWxJxPZwy^6qAr= zEDVV!e#K@QjKuz}Q;73a61F-GLq)3_j02D7$TB4TI|NTnr{QM#nIDxMYPYLpTNc1( z=W`n6h=N{j8csA?&94eIj10ZS?-B_t6O7Rx(8kFxXoHA1o|g{vKcO3BiZ&wXLh&^5 zQ;{6(m+ZgzzsAjI&`}^&A5)0%@xi5J(mOEU9^6hYTW0eQSq0xXj_WK-BLvhm2Xmh$U~ z&%5RwzbYE6|3wl<{6so>A}Jo6Ugp2cW*Yxf+06YSQg(DqUWrLQhIL@9L}6@f>bvrg z3EnDbqXC)-_(AhkYzs!lhuyfU8|JeVG#x#XnQ6?%E6YZ)C#tg?N(U3N06M<>7YQ&g zlz6}}0_wG#nOPD4k8On9ZS2`iWEFr4NhLrW-y_P&fyU^NTKkgGhwWY8S93#lgTkjA z23f3696#(JVo~<D>?dHyEP)(S5?%ow*aSr>JeF%z^MWy+@e=I7z%0Nn|Fn_au z*#9C=D%t_Z(=c`l0}c*e)-Z7fWAz8LSq|1S3>ut8{F}eP{h!rM5L+t@7f5CfF#uc$ z(g7YO@r3nLXzP#@B8hN_9 zUuY>r9Bhk^{@B*=Z3p|^LLJqZsYM;5L*QeByZ8m7S`wBuoc2O^p zgYF5co+?(kN$U=%M;nPGQ&2Hm02q%Txl?ko zm%iv%nB<0&2mWpqs0Xn$-eDMeZ(w@R4Axqkoc}{K_ckkMaFCDpjn{(UTi70PPR;TG zlsG z7N_BRyos}UfN7Wq4mFKSbVO%|k@(yPQw3F^(H`;){=?);Q*uB#K*!mvmlQ%@2VY0w z+5LR%#pQU0YQH@FzSNAaLb_u=pbcs-7f<~Yi|mx!jaxGrjpfwxPtN`%oZbC2xNEd! z_YMaz6mo1nP`6}9ah#*&?mNd}J8$<{JHsW|4F7gdV6z54-!{&8yCJ`|>%-dIg<$~lZsYD0?BzQ{J4I#&iiVE=$bcwkPCFT5a$u$D59rkN zdBpFclL#q+Mj(KcR3njDRihQZHwX%N4r!JMFx2R^pZ_ve=2qEo!G4PPl|1`13&MCX z0NuA~`F%GRzo#N60)4e_-U5^5H`XipH0LkJxf=qyY#h(Bb2|z@j6}CqzGv+5t$&c` zm$4|dxEHF^9<=XnfyU zim>yJsYNeaG{IYxf%8M(Hnc<;(MznrJtd#Ll9?z@#alA10x|xx(b{l(>GJ7R%Xfyg z(0<_mT9d!17L*7Wr_LZWc0~HWk%RnKHvPYsgY>-TgOThjNT#to{EHmqzaY0(^H-8N zTrU7@a|vu_z6t z6=~)h=>pSxZZTp9{-6L({w^h(9)jULc@b~UfTQH${AsiJ7EGY45Bn5{TzF*5@-_vX zbAMGI5%q~-q+%DLd!9%vf#`Q*@@ASZWs5#HOwE!S19QVYvJP%OW8;J z-&nhb<_*X6a*UW(VJ3BH<_>*~8lofpXAgo30>eU%7Mgmg&ZNN#$xK+)J zWY$GKo4_=09YnKNh-aJ*@-~Z#^GmR;6?){gt%YiB53L3Q8k^LH;r(@t?Z9vv%%mp zj8KinQ2i7Ud2hM1YT)K(X=%CMetP-+;Z_J$l{SoHjlYGX=3xQoItl{?U59vd^oH)e zf>Tcqjd;FPSj!C(z8WLI!-N_2R@Z@KL@%n!q5V+3)s?p zLrly~Wj5VNW7^e+M8H$vSZs_=z9%gD<;@i_<{Jx%%EP^Q=WYYqXcF^#(nn7Gw`GHk zx{6XWHW=JY50>wNUuY)8`)2M>uYoLaq-)hQQ(gNvlo@O1>Pjlvwf4Z*IG;VORicAHbAMndkoi4Gua-Yr;gjv9Q-&L|muqq?u-qlq)sTIPOemIyKEy8VbS);{#IWGW}) zf5GFHLY(j_Xr;C@MauOlZ#pyiDXuHg(w(R9uTd7hP(%};WEdou0j zkhsrq8#20VEl|PEh{-N90L(@3BdTg_hN1I|&$hEaFdDohY~K9o77{a#{8t{iYHhZv8uonpqM5=EQQMYxOJFT{@$R)G)aI+>fqHELhbVPg&jAH z0bNAXNnN2X2@2(hsi(PS=!hZiMPs}4<2U)?z`2h2l!gCZy9^0*_JeVA<{TMb37P%*7}ws6UJ+3BcdlQ^zfpm z3LJheF2WtdEIswBf2VO2kEC-0b{O&=Kly9;(^!O8n+LPz^^cm%ciOCL$iR?m_JH?Q z+k4c8UvV8tHCQ)F(Jz}d4?a(t#uRpQwLKo(xrQ3D3e{+|NqqLgZ>~p~mEWbE;#5Bk z-5dk%Ur!#X2({uSS*JHtgWPc%P1_#bJb^(wEi%A%hRmt&V3=;k_2Sp&k;?jU%&ONU zTK&ycXgB@p(8oX}RUiCT!rQU8D@Pe*KNyW$;Sc-FTx?5EXjUgivc^nY zXx#aU1Z!WqIo9^`s@b}fq_!|<)MVvKmfwNbN|G3u&A$I(sywSS!^e=T(v-vej=nsj zKsqno0fi6c$z_FOq#>g;W867Fo2M5D*VjC_>dLjU{NX+3QT|j+*b?V;t{}KJ&-v+0 zuUmC7^ml7FcHyvxbg!wY?zWoJjBmi4+m2>uTQ*+V{fm38iF8Mf`3Xg~6$gQt{-Wy= zlX?0M7rXWkna04qtZ@><1Jlc1+1HOuT8zvs!0k@7f;9AXE~eprUZQqC{6o^HlU+Lh z@*G3%Tuj{kJksSs#0S$0k8lIt#MluuX&y=9l@7)@M4E?>(ltkpZ$hMom+ z^B7JS!*k3PwX5&98b(neELa6+^F>Px!Oy4qs6%c^Kh~~NvsmjLX{)rj0tTM>>^e_0j^1TPN2*0(UPa#Nc5HY$C(vw`)QHp!PyNE~HNyS#Vx)~D4s z;@D{T_yQgUEl)r*i2X5}g%|r2`-?)^2>J~Zny1ggXnKB+HZntzNy zgo`)JTd&EtLO;Kd$k3_Kt!rOUi(VAjCwXZAGkH@CC#}`v*S{z3Bf~sTQ+2e>L+fm} z{divgshi_(*mnAzA*wzS2&qnZUFqhx;cz@{?-^*uzb8qg=4|umgDAV5!Q*Vl&}O~6 zoyy*pn9@7~ukB);?$cA8eDLu~y|)S6p@c8o{Wi-eUU<`%ZEYfUC%;8W+kDA)!bt0z z?2koX+7N!zz5#bXw+}?7`;fckSD&6m%#hfeM+H@B#_Q7*xKI_qfnkfJ>M>e0R=2)P zRzL5X&7(iWY^!Ct4}OE==J{et}ZwQR1+Q=G>M7?ktUgfePWz}C3cno<%5)Pxkrv^we*b0zS4$d;f3H+ke9w+TK^KNa3BRw`f)u@`gIJm zca<_7dD$&r^0A3h1>$BB>AT5>}k|r zI1F=3;>V(2+-N**7*L{dTj42(7;ET{bGxN^&#GcvifosvS*f~d16hUe8P>mL!4Dj} zrTM^SHEVVCi-xpd$q#xO#={#C`eaw`cYu3JvvL7>2(YvT7IcgDsLSXrKKr!s_}+M^ zoL5+-wb}T87~R1;8sfB!uuRyOPl6|9?(CQ48zWg~DRAIOoBc`(T`J9j$(Yt33D2lG zfa@#_6$>NoQ?n%A)r%*;!>&5SJ> zr)nf1nj_CejSujQ($n*{ln))MV5K2>>AA<{Oq22FQ1G@cCTL&j_0gW4{rY@k60iTb z5wrAaeqDD_0-!bb`SKQ_;z1jMj}HuK+P1*EL8wJ;?*=b+cn8JDmUvow&W%sJOH!cZ zB0Yiu_CwkfnE-W}pLi!;St@5n;;kxGkCed6ogcSbt~EdJttw>%n3>>@Z0P5WVl=90 zkN1Z#MH!Qt5j*?6&Q!Bq5UiIJiWs$M0+JU=qp;nRg^6&+DOIbf8+I)?+hU5)e3(9G zi+N-WCUe_i@VXagc(lz)N34`#CrQ^lPx7u~FHVL}Mai^a-Q~LCL&JRgvh7cv!6kxmZLj9nh5W(yxEB~lq4+KU4! zO5aJ=N57LYK7{JpI_r~2jc2AbX4f1PPmSl1>e^baDyYz5=n8JNE=d}sN}w`MZ)G9Z z6Z1ZKs|I3{Ng^{oSaAsR>GA$TN@)muFbxQNlcv!7*cVtaWl7QX*5P9>!-7~>ZS4$P z)m__p7efxkJWNMnVzWt!6~=`Wg+e@42^?lMb?vSL6EZFnv|^%V9Eoutm264kcx+6e zDaQw&hs=5bbQ){wNwlKp8Iz8@x9-~lZYM_@~+zFah|9JbsjTIP^ z^pf`IJ9sQxVh@(Fivbw*4vHoIT;E=w_5BHSyoa|rY46iWYA4?QF+!{Y1=dlBk1^#$ z0Cvfb%$R`qB39)^0;rL9dBpD-zc1SorS*?@##Lw?2l5$syT?*y=FBsPS1GV`1uwH< z(9kNAlXOvyyvOO?Sl=I9u%gVYyw>tWFn|w-q(nSI6F97$WjaBa z?;x8B>r2$&{QX}0K(Ixg)vv9{QuXzffbqvo)NtS~&6?E(8qHR00)Sjks;h@=Djq=Z z5R$;JL3l5cSU{n0W7}xIDSB3sokAn7sRy*>(ToEOvKQ93qSN%VNYK1aN7gYdCXE@t z^S0Ia=XEiO)aF{fg2tCEB1Kf5MNutunk^;yEQMDiH2OcLO|6Juu_%&;+?}fHiWK-R zz7Y=7rC%mBlj-%zCB^Zj$i8I8=|Ib{L;(4cd_zB37nWCRW?_H#5ib$1gL46CqAt9XxK5&F55~&n$3{!(adUGdJbj%>i3XgM?wsRQ7O?7w59; z+NPs4zeiX5Y~^e`UG?afo68?YXxDpt95n5#7i^9{bF*wFZJ zm7L@kC7~z2Ow8hUr>vYMeFvbACsKqC`6rr{C6p-ylD+9Fh!pVYaf}WY`5gBre?%LC zXYyi!41=iBfpjQnt(<(=cj`!v`2#j1;G$r&Z&aV;s4;&vz0JUZtQtxe(@sD^3CP zTLTfz_4w4AO#>Z92E~JYa1(F3Fm2TLlXjxaSM+cQdSZes2wDoMVJEs;_>6BBq%%r_YQp1TAj&ZdS#X)W zwc0+Y@LvlS%MPIWH8&5Z`{^azYw;j;uo*Fdmz>XtmO$Kz;sD#Nr%?KLQkoCS{iAUYQ%KNLawXa%XiwWL z^}};e$)0%ngxG{TkdS~6b(6l2;9%qCud=5)igv_KtWYc`V+5{)x*l%on5D)%@Bvec z2n6-sQ?1}_#%Fk0=B>dH+GyDieV?y!j9S=4ZoL$pYjduN&%9F7`GqJjn;035;5G z3lyK`G^>GuA5= zu?!A5b&;drIXui@7;Ni>MDi;RMT)7jD$6I*KgmC|YHHuJafEq&RaH)(J5iG++;)1N zgE_n+urgs)rTZZX_EK@HJGec!^;3jKi`@r-vrZt&Ws~cr3U2`w0V@CXP^GagrC>+8 zxKb<{=T=_-``4Guz?6v!;b~a`7UUKLxo7zxbc7wGl?)}Et+Gbqb^w?TQ3oQnnX)(cA-yb1yLqmKz zQ-I=V*99^A8N}3-Tv4C#v^b4dNm)KzEsn8Xls^a7Y-_2MNS~9dXxWvET?8j%V?TCC zpSzC(1>F6SR|yxDbC>n-{WLIVXD@u8{ZTXm!2@&K2s0 zng-AaSW1zeTw7-}U#Rx@npo)$Qozhl`Xc!@+Y-a{xu2gfH#^M3cm!vH9@OE@tLm84 zfD7}KCOXNJiTv;C%Lm0}=`+vuy&Ijz*N##dr%Fn1!P^0*4J*BI)98~ODfjvHCVuO4%L>!y>W?g)Wu7p1e>e1QJwN$5)W zb(s(#e6G#Mn=Wdb^3rx3OT!e$M77T5GND~Q*92DjM6n0h1?3WhL;)8{>HsV>wuILO~aOG!2>CW63f-O?uJ!~cE3y|ro`t?4&H zZlf_Lt2BuR<6P>YyZ*wDW;~*WY7u|i5m_{-ox?z0HWWsZVDn5htjx)Ma7>_;7Kv|o zmTpePh$YAlzW$ET3hXuv3+aKk>RKZ$50z5@}kVr_yG33@GAZ?-=U4z}4XGgWQGk+rjUa?s<@_5nBmwfTKli0qtPiX29pwcr zkdr@Hv^aEK(#lS)AS2gIe~d%sFaBR#`U67qNXgRN!+V$nTMAuRgcZ z-cFu*_QCMJUL>V4yF=nyYrd4y4Ql$!{>NQjdw6Dsuu+?2sE^7%^;l;|)h|dQY^lUW^ZJIT9YeiDt zZTAH2y3^>bEL;j64sQe|rBeQ-cK3N$IyBS}7tty`lhpLQxwicN)~Iqo=5ctSU0_ki z5$<)_^Q)g6R0`{w>F^5(C1(IobQ9-nJT%aPapAO4`ck}Ez*21SSbwiKfjgkThoCj7 z?v${#awEp5lHgKx=8fko8%xp8CsEv{y<*YpkCrX##Ek9BxU!6JfJ4DUj)iLxn*Pe$+?{QjDxogYC!8Az=OLOCG|vW(&rhTMjAY+~OQSQjvK22T+Ew zAUU!(3BybQk$ma8DdzM&P|?Eg$nKsZ7V#@VBVsQ)g%Qf$-nbrmW%F28-!ibAPshn7FGqwxi z+(llXmrr*yO8;aXjJWTcJ|?SZI%6qolQhv!iCN%>bK1XZ_H@B8OKJ2e?2Bb@WV3@6 zcqsdkfzuP_`t@^$1+GOt(;L+eqtC`>H-Z)CyEl_Q8g>13 zcH$~=$Y_>zmCAEljuKcc6yYegVxjWk4a zyxRJ`?Shd|M%;FSfMSBEIMWCL=N5*`*2}geDq_@HeqHEUqd>22eW-D=eJ_*>@6PX; zq2jIOJB#^x(-Nw&xJj*(Fc#$cW0J5hdCgPiMuDcr5C&MFmm~{>g9^ z&BlR`6CtW$J(ZJ(BdQ5YwIw;Cq*`;;036I8=_N-ZH}cWkF>Op#h0u&$eiLW!B@!yK zc-cfZ*;b-)2&ysuBRdGN7=>S$6pNI4wNthl!rY~{PFX*WW!#Vnu+3O88i=s&Z`5sf zWh3NEF166^rD-v`mrQizy5Y7ZjUcARnDgbZ?f)a0%-*n|{RRyJDPW^MLNHK%Yg5!^ zap9!eM@6wh>=%%-{RbVsrLY(}0g{KF`X`y`QIK-21cu9^vhFkaT2%x!(=SAtJ_v~h z`2mE4?o|&jd1~x)z98_mWTSVb^_qrj>aM7nl?auC?Z!T2$#XX?OIL~@(eq7>uNZ{gPi~J zVOr%hH9$43(sYWWOjY1Z-{sc~Y%NQHCfQ$gIfdi?6y=`^zs9$}Ebj6;c=xWjL6 z|Cae&O%5YfHxxw{*E5`Nwl+_&^nRM$rJ4;Pz~kJ9g07umOIXD>VR~hAD3A@3F}{lQ zN*D!38={2|(L+yd`K6B&^5Gy4iLuehui)yLW#5k;Rh+~nPe#OiL_nJUwG%$aZHq~{ zMrG(*n_j$}&_$z?Pa_Gvs#*{g6t%K1b+?LaM>yPTwdLBT$@WrM-GN_v^eexKmXtCd zm1$$fvuUi0Gf06rf73w?MySPnCpvt+cdUk&6oS@Rh~qy4uR~7y_g;Mdqg82TddNi!^ubOZqmqA%9k9wgmHp$*20i#UWC$&>-ey^wfk_EM(Vhz}7+F zJgDX@sLZ93cxO`FMl4~I=x5YX_4ra&>u|hlu_AjLii$fSVBA2F@=l0gZl~=?lsWL!K-`p>=BuBT86+?i0 z7!{sz&|*4SySi7_2Mp4&tzv0VmRl{O{-5VM;~wdTeK@ohf&?+|xzoO?T2#?$BeR?;a($=j;TJmKK7Ll2>H=) z$tN|E##Q9h^{SJ>t9aX@?~zz}h((9wZ0v^Vt1$g(>A;k;h0oy-U*3Ao4=L|LzF>)T$mSAT z@v>Gu8Mw!9dnvqf(0N2sU$7k>NYptRy$U8M=^uG`9$79|$Znvp!eXKW<7q ziwduM+waX%!8Rc1^gdByjMSB#ul3gAYZKkgwmEUCSho^?P-JcCDpx%M(Jq^d=WnHs zz1ghYrONl{9Mr?sbTOYuzUX~QU1oE6cyY!Cz`3rKW+qaS$0H!3M>G6{-3V2pP2Hq} zyFOYO%zAtC{VB8Hrm|^{CgPC@9M`rzus5{r1vRgV@J}=YapNU6W0!ozf+lI)pxpiY za^^d?pAcvBpI_F4#a8FZP*VRu9qC?**%c``-YGb}4}RM(yoWWcxM+nd^|okWkFX=9 z2!OiWhjre=+H%iH>W`1J35UcqLTPn#JDURhhHO<-PDUJX7L5 zg4&^>RNHW$nS5J_J)~`|(k|lL^^9_Ju(DreC{)f#frGr}xbMaYMX|cBubBYLcHt?U znEMf8{y~vs3Zn3_%@}_gDFdFZ0K&H38qlQhEy%h`D`7!zEkVeU-{>-jn{T{+QVH+R zZaOC8=UEo|HuWW#bcuOmivsKB;g2BB!Z0X- z&RN!5vo~lEclovbBp)n+oft4d8Ivx8+Bh%MTS=k#8Jn5b@~%U3qX!u2 z++@@VOkCSne4$vxD-?+j5oP^8%Q9WNBZe^@e&e5hmIXSYP6>@d6XW>_O?6iZ3xrdM zOwTD0(ae$!rK|2A0$MB|LYm&=kE^%#8~g5`zfPF@vR=|}27W1yp%(D@tonIZ(7o!* z=+E*_>GB#)pc6ORq`AWhk4%Kc8BZ2gnGWgHJ<(=Pny zMK5Y&A|fR%xo514-w?XUzEGT6RT$({w40|K00xC)Oekh%kXh3%K+L+nPbV})16<4+ zshf@Xv8g+a@g$r$_nrX<&X&)T7(CZn;+UrIUI`E~=>LHjMs3n-itl7=E%bSj9%VVE zfLbsIY5~7ON1Jd#N;X-3!8Vdb8lh?Nt9|GoshZvP6UNoxJ;{02e9E z6BE(j&sFr#HA9zrwhd=}y65Pka6cM#c7dvEL$FT8&(Hy}U0xXB7Ytt^9mZ2frO*dI zFbQYbnGYN4m2m{d^ouU@KeMDwuzKrh^{;~CN6MKmL^M*@n7i;hL+sHk6{dCFO@b!5 z_a!%A2~waM*vNeZnC4xNXZk{eHnv)afs{;%<`>z6JggZdZLlL8N@UZ4abi`?OGkbX z6|?acUP(1_azV)EOIVq!86Zp?twv%z`hL*#mIYH!w8dQg4ATmBwm(GDk<|SwO1)R%2xX$-~1fdB6*)R_Nk&bpa-p>j^dYPkEZAd31_iD1RZ7OE};+p z+?JD#UwccMd9yDD4^1MEg&7#+YUx|4ky7f|5altN*?v^jswObSn1d9JtP~!7?0&s2 zJXkNCS{WheLV4a3ICC8LjHbbrr9#eI%R95v5ly4eF|wY-jNQwUeabe(NYoj85LjXA zSQ}zqv)~xlU}cWZK~LniaA}cdSKtqU>4h*yud+Ru?^oDtCZnM+-Q z;-t`vv8CzNp?Kk+8TH6|3x}8hmkgJ`4HxJQiq;Qdc0;iCp9_1DTKnaQ7^24#nwR*qyiNqvox(uz?VL?-2*M?z^ROYqxs2adMs>~amb~o&H0mQr+i~WR;=hjM(99m7xuuKM;6?u(M@Fxc!= z{&7jjLsw7qdWZ$hl0|q^*QRrRD|9<40jOBVpHvF3dabLB93*K5-Gx^q8rf;nfU_f# zv3#1Tl6G)QdKLiFjpXrzMcqXQ93}tct^8U_c&6>Cg;zE6#r7GmW`8Ff41BgEZ3xEh zzS4Jk53VhKMNV!4D{_?EEikt?4CYvu2~IbNSZfN=_7`?xF}Q;4iO&MSnA{FWa_w!F{W0HInp=Z6f^7k zz>tKWjZH=KfK8D7wFp2FdZ8Mca?a+COEvC`J4%-r4h2_ZzrPYjO%wTt8JmkV>!sW6 z4NYkls>)D543`2k@eeh%eq{N*a4_07VeGQ=Lbrv%Iae^FC#rlMh_5?2*Na0f8yQvm zX*tks?ef$3#U7d3T0EOs6jiVyO$!*#Jc2xf?u!8ba*+Z9w*^*=`f-K#i7Rj_aD)kG zeuTT#7unMvKw|6q1W7>k{4?kLl&Q+`TLScnUL>@c=~Zcc_+~ab{tC5H<^{wX^T&lM z+{eNqO{(<+wk{4|G_|r@J7LVkW2G32qXP&SpMeTq&aEvgJgn?S1Bsw|9swb(KgxV< zfNSVR3Y1wJv`tnNf~nO%o1`i}rV^cP9Y_$WvredMAO0mSfRFr*ppu-RLFx& zG=WUmv)0fmCr><9=uQCbBcmB#J`x_0Z=Jb3y|pD*-76 zjTj?v7x(MehNxgLdY=_uj)6%@bceS%lZNjGqm@WMzdHcs12%L*! zBsBuH<1!(!03XjN!BPmz$fZ&-lTfkmBaM-5#Z=~)nCp?h_cYa_4JJ4^Gc`|Io+KGC zf^t|>j)Q7Yeaid5*ypiV9uNWbPnqc*^WDSK_r+)bPemTK=6X;s`a?)0Ju|q%K&l71 zV1vRCKs+`FCDDv@Y(oJvHpCudx1Lgo{U7x-AMATj?tc{r4D78afL7ZBZU5@;LxVNZ zj~(z$EW(}yDl9^^cTVPm+N&8RJl^sg{b~_U#Bry&CNC`iOB{a#&(Md!vmdhx*At^Z zI+H*^(H>LlS_tMM;_PhSl$&bkKCaErm;or5O3ROCn9$0t;6qhyp%llh-X9FEGLx8# z%G3%{P1SzZk2*0Ib2%VI9d!+&S}a9}DgJO)6&7a>fvmG|(sg>}4h85nYGD1jJcN0W z^@*PB#hBVC^yhmS7siL^+j$h3Ko( zdCpk4HOo(?{t7})jSG)IJInHM!3)~st4GCzvsoY1mW90yQ6d5^d47D^M{NDcoj!=w z(UhDRsJ9!__4+gKa9q@vDJ&z?qJ!Z;xZ88TFE-$(31T6Qfumn*&<&HZZT7=*O99N$ z@XwB7X%kcIC9etHWIGf##A>Z}pUK`~fmsrUGcA@W2!~^&(10=j*I&Vi>50H*YzX|0 zl>jlHUHhryg;e~MbkTPC6n|E5bAhQVj-hEvKb!__z9PT(A)1`m`w&g``QU2dlGpo# z#jgZ(Kd{;PP)UV4#U4OxL-zr^YsK+C>?`}G4>ScS{rsWd##VP8xlfO+KD7H#p=iq@ zXcxMFC(DXXFM85y+WdpVp!~q#-UM5_`px@SE_W^ppUE|da|VRdTTTqnWnpIqa?x-S z=q&;duP@^;3%?}QE8Jvo?#?$qZLjkcBPK#J=*~$L{TeNh1MgqL0um^3{EPqL{B|G? zjr18GK?zThLy^|!GS=hE`AB24^`j1#S@OY3Jx6UHs>O!>@|HBV$$8nvzURq5}xmuJ*Raujz-*lp%)x^Xr!$FhCu+&nTW*{T zzG}+@jNdwjI)Q*2zbW!Cf8PzG(=5oS$wemQGUxUvC^X6julsM9@GpNqI|~%xa50xC zcMJjZ1h$;5txOc-T=(ihYM#x1t;p?NmuBozK&}L$GIqR*%(Q3YzngT@CsVi>g+_*? z%?uZkz16!5ciLMpW!!kTt~Yc-!d)ch#7P7kYqxYOI&mic`QFs6sGoC5!rk1hSUjpX z)Fqhi#5t}v6as+HD5rr<)HsRQbl2G|SCTFP5^mUQMd}x5aUq~T?so4Wc^2N+9`fzu zGZ0MP>Fe%heC?gC#YOJ|_bh*Z#n1YpoR(CCfFvf^)d;H>n8C3EkxHImc*H9Y1TAPE zCaCo$JcHqSn{_LEPk9UllRL__Y?Hv`j)So(%TCF5KJf_WZp&wK;FIOPPJ|JIp7TDY z@n7DobQ8|6c!aSOkq$pJuULUt4@SYUHI9f)z@#J!=q&{gO-*aS$uHHdvE7&bBrADJ zDq&bMUj28wt0x*Rk1st+ftM6b<{3idNnD8bG?c?M>yWBt?S~ciff(^sk)vE%iM1Q$dw(`|g$ZFc30NlDas1u<+{*PyOE~Rv;V7 zPcq?sFz$~SP(dxmQ^6Pth@_{FSJCL5;HI(osX_wY)mNbkbm)4kL3#>9FPLG(sP--) zOIWmN;%fl&uwv`_loBcQuz$@vlFFqw3ZBLG+>k4!|G}9@zns@z5I~q~{!JWNEE!Ko z5lF~5HplN{;#SCF01cRBf6hbq_j@hXo>?#XycU6~txkFc%-!U9Zz#&0xRI-JV}|YBw82w0`0Y$!E`Gqja$12Du*>N~LDLOX2XM7`d>OWPlCYMEZQ!T@ zJ~bQbY6`kFjz?G601&~^JveZ1jpfL}D8AaOX#NJn*yCDEn~SPC)QkCzmha)-kNsh@ zPpc}m6L1>0G<`2v`U~5plkVS#E?oN2KHL^*dAKS_%)-UGi_HMVGafOr9Pe=CYim`{ zC%p1tUX2%X(VY3bEBBTc z6b^-S5l^+;yzZy8zy8zDuZ@yu^qZ-p4kk4q0>DhjPI!j1HpGHJ&9{$WeuvCSUbq%z z9JKI@K#ig|%>>9Ai{=}y2Jb|qUUey=`bY5)J9i~9(&t~APIYzipKZ$Ekb%axpdHwr zfb;fSsrY8VD%4r?lg%U**iM$Cy)XZ)O!Kt|0&=oG0cea1o64_BfbkPSf<*tbLW1#8 z1;)VMR-9^<*M!x{Pg8G%JP3=$nTjdjniM8H4+0)G7ikVb_p>+BVDi#V#6u8XDQaKT z;K^fHwO8-SpBPIOT<^c>NS-%*@%;6kxf64MrvVGFvzkJW$ZEpxXE-q#Kego zv6;%#Kh4i=4SPGFv;#G6{6zRfzSjTNv^{)_xr1(8W|-11rq)%TQ4590tsp#g5>S6k zDQLZ&FirC$Kb%0rFHw#0&F;oG#d37;xJAvG=S;^)pY|XTY7EZiDR+j=6Ir9zI!+if z^6se%i@c*($I&>%T|g3Qk^@Rt*Xxbh3M?D?)VYjUB%^ul(4TriwW`$le0m*StsByt zKTS-v;|2Z>0gS1i`*XY?8fRXhP_yYxb^@5U*W97E zErntkFFL@%co?lx0>u$g{`#k>xnL}@3ydWWpyy{DeCPb0FMEz1{$*~`L^b6kYymLV z3r^wY2z3?OBf90w-Ln&^ctLo>T>$2qVKw%co_(R-kXFXF3$tuHPN1{8AF;=9AqPWh zpn4IlaS0Hvaixx8O8ujF7*O{nj3Eh!+1$3 zKoySWw1*K7zMhI&iy9OkB;;4!cBJN#>CGCaP{f}wTKo_PIZO(`B2T#}1- z1t)`I{NF3kT>$E@GBn7hBP41wt0htBMdk}+)EOgs{_e6m<2{PP^GRIPfAtz#U-|`Q z;KKkOyT->*1NXV5kb-@q^#r8CTYR2unT=t4)lGktI+h zwWrmVx2Vo%=(9jrS3*OC{vc&=4+8X2383!>yruMdxE8T<`j06D!E@xnSby58d75WK z_gh&2plcDTPy=t2KZ@j+WDf?zwP4D$RnP}&&#w?LwgcKd&4V)*sM295aZyx`_ch|w zdoBv8H#u7JW_H_Sw**fW4b+?%n0IIPPNkb~<|f!+HW}h0K{MM^wlTnTNegzRMx3B> z>XF60($y3H37*I~8A{#eGq0adJ{O+k7KLmV4o?)#D-H%Yj-lHdq7M#nxXqrP6&-m0G^c^p|%z=HRD)ZX8 z@`F#4d<1f!gN(Lsx_?=CRCRYxfd(BPP_4T7L7iQ3ZUSOF7KoVWS@OZRbI)IZ6#l99nCqH#Rrt$9 zZRFILS;61mph}QP#tOpxrsA$MCeJ_8+;$lGKZAP$yJTOl+||#Q_4?)N#V<*k@c>7kR|WVFv@jM7 zxSeyQZc(In$%Cn#_Gbp-$(uc(s9*F2% zO@1viD{$@K)mn(RD8J7}6Sy7GUCtx37RBdQ7TbJ`7lXh*`52kkki8b=k*})PM-vRj zOa#VeLPgSIend(=ZwOnHrWz|xb0urlUSqK21_9p7GAre@9z?}OP2$*ZNz!#4n}&~S zPq!=uD}j2;kzMD0TOvv8VbTEz)wIl96f&)5tHrb@pPcpa9xnI^q^b9_1>|KeF!z|P z@Y>?3$q|gYKn(3Y+s;_cO6$A)c>5A)qR$tZY*=YX|F@4;q}gG}BEm*b^DMIzza`~;?lJ`BH>;3JcGQd5yG=6kAS?w9}r}vN9Zc&pI<`x=s z_6qQ|5Y);(&e9NJs7+r}x3x5kc2|$)V>w{f)ydb^EnuMeM(bCkZ2G(^q#`RZ>5p|K znjW(_QooV`la7m=s^ks?zQqfO?#0*ZPZL@8pDk@9N;V#ZcEDGzI~GgwZOZwozgO8~#3zq4UAn3V99M6F5P&iM;p z;VB-t_FXg$p=7Q4FJrl`XO~0oUnMlHKcD$-b=WO{PveNjk2tCr4w>~nUum1fk|F}` zb8>Atmqb=XAgNS~I?-@q-pah3So;Fy+PL-4VdK`_??5^%PezpDUlSfpE?)z=`S?(! z*%Vhp_B6gnNw~9SY~P$4Pv;AZE&C^3*hxfMnY4wquDg%)X07NY6j&{+Z)Iy3ykFd|Nq2p4WVd9F;3wLb87sq&Ml&MjR^Rqe(Zi9m8i$`RfT7@wEEU;RPI|K)52Yz9T z!i~HTFbJo1L#G0Qvu}UzU){FUo}Pg)uG75;-I6~<_ZI`~@{#fRD|jcSxrJ}gs%jS9 zo08H3nuahpdj!lEDaFh}uCo!lkQjN;@F~;3pV1R)28+tYcz$XiP-JuQ;%`ki_X)ws z#_c4@agrcmqP{V#Hh<3K-?Tf5R*=}7M?U*@<(kxIXf_;<*MU#+VkPbAEF-$y?tcB5 zqj-elStGR^l>XJZMi!f&b?w_O!N3!&FL9Q1dL9ibT1KB= z8g%*B=&MGr*AMK>)kNvCrxf=xzT#p3y{P;#oGBAWL0{-Rkvw z;3uCMrB}G%f%vLOJx&D|PXkgvdH({ZX@EFegb<|=;WACIF~199cLt=-fV9qo`G)d8 zE4FZavTo1;3)As{;8p(=rsL$`;N-C2G?`Z&mhY4xo3m}FWeM^*eCk_R=O_ncX&2Yf zJqnHb9*l-nx$6j|huW)F!YcS_^GIns5>>vJjIP!>)QaaXNggbcR9W$3A86-HdN8&;aE>^}D)9l4xKu(F15-54 zMiq_aCV(onM?YZc)pvVYlT)(Zc(ie8%3i-Wv;5P~ zvx1h_kp)}hgls>QyPt?vp%kR~D@Sw359_xLv>hPWG7?P;QDbA_c5!%7&2=9vy`|~I z?IjDtloeG7!x0#6^3PwZV*5U%oFzylaSPUZ15t(^75{IPp@NQ%pm0QzMVzx{QIRt& zQr54JwthT{I_Nkd{ukN8WE`cF3_kJ_hYHA^>mqEv3F=xKN{~+#!Ae+_u>JX#RV;O8 zC1$8;sA*!wRPiU~-@2_E6921it7V`J_7FLUy@99t0iKHG$uF!d;M>y>oMLqIO0-9Zf%K{9y=WxSGONg@mE!*kKMETG9pRz=5&CsRnKQhs z9fw)^zl~%S7w3OgmHSUn6=!UZch1T~N^J7j1Ec-UAVU041y*GXc%TIe4UoZ#jZK9e ze-Q%WF;qCbwT(q0|3Jsbksf?>tgu5yMzK>NjG@zHBF@gsp&$`v#qqT3FeBV32BUvy z7aLziG9fqc^K6onuY}9w`S$t#;}j9>Y@m6#7Ab0$*a}7H?Jo}3S=L&?6;~&o_}{Wz zdQgT6Cea#{X`KQ-QO_41#ekpP4Wel?O65~xxhkXzwSdsTCzZLA@;I{QILD(hyS1hXL9--6{6VOoLR`J zRLH@=k0>5J>zhhs5Mq_@JNHtE`9CE-u_aRZ2;z~+=n%KTDuVE(K1@2oiD0YI3$PgO zKUk`&FC$Ul4c_szpm0O%KhEd zDUgSclPF7=`ukjDw>NeK58h|s$am(Gs4Ki(7wI3&iq{)#*`Dx2Ol)#sLV`Hcp~T@< znt<8sJ-Pz{g9(6MqoDNbl#YfZM3jk7x3YhSkEfqC4dxjQZ}vWTMO+F5YK>;HdXe5I z``ETi`NJ$LtG3zgpUXQhnK455hp!i|E%Q~sh?k50pl~z}Z7e3bbl7F~NJ_6MA;yw# z(Pl48!8%ViZF#e=ikk{Rbd85tgkgeMNFr0YdTeY5rFk(EnE`Uh!|$ESyj%?>8Q1NEPcs--O(M zLGL2XGd!9%eKb!MidcEi8rr5B5%?sC+LVNzxDz4930XZ6!~7uVmvYvoA{*wwD73;% z!1$pA8{t1C*n$w~hLO6&BI_SnI_2*)X8dk2I&FR1{ISOnt-qGgchFtzT8urW?s;tb z(g8dRiu9QI0R_)=@uq2KLf%}b?5N;6-hIuya!-m6V%vz2Uh?FRu_OwYD7tL}e2)1M zk3zt`*0Nij;CJ&!#>Q{n3Q)eSI7TI4%i`Eh)~jjVR_(qUFh0K(bt&2TG(r4pKaJcR z*wS6Ub9X&D^UPP@YkgBTCMH}yx$wvD<6nq88DRbcknO3d?xR8H>P+ZlkkRSV-*}~) z2#Hk|Ynr_6ohRy1zM~bnFC83dK5CS^*{=K$5fj%vDynTbs&pW~ci&TIAKXYZILH^M z7RXXsJF591eUqG0mG`yz%oqN|cnr4%E>=v& zu>rFVoon{VRWDH?(O>x`~2$p1}c^zO;( z>azJVN8z3p`yVeBJdUm!N?vq0*j#y>U%3^>IYj+x5_{>=O0D+Aa3^Z|MxG*E<0$Sb z&(P@C;kviaYnzv+PU|(Fxb7Q7eP3-*TON$Qo_d2gNGzNgt-&^>kP}Qa_H2XZ$iWIY zVg91us}B?`wx+uGl!jN1#KnHw^{wLQ;cbjvZSa^3#nvio(<%43nzf~N`sLq3aZ*>? zvQ+f$ZAojlNd5pf#dsbr&5s}2wKEkOKP}!b_F(zx_ek0s3<4O`zgn&iF~@b8uX9k( z9Nq6(<^r08EeY(n*S)08+PhRJn1AR3{AEE(>|2gIuABj{eI}$vrK=UcY32u528wkq zSJktqxddQ+`snWEbD6m%0(b&LB^SAMi@&EDKYY2IBFTCG{=#Uf{3?DToqdZ_a6nfbT?Ys!z2nX|5kkvT0{jwUtV#kwogf9Vb00frp! z=D&24=DGMUTipFRzUKB}_&75dr>`qq5gw_K2B3wPZ{H70t^66cgS%Mm7TGd895;#= z33ru?~PO*4!u8m^6 zV3mT(m|#Juik^R^W^yjXIx)_B12EF(o~_byRLwzI9oA6+RD7u3x88LYYnIbi(N3=W z-8L(GG-B$ld+e+529fTc&fD2dvS6K>#Q5Dc3R#4AUkUpT)P)S4kKhCImINa z<;3xXc$pi{iCZmnkRQ2>?2SAzus2fC6yyldC3BwNl3ENLl~3-06YeRtI@)AZaCNRN zDTCk7!hk3whA(0b0zXK!mC=!+Q8kUzjM2;~k!+Od{y}m_CV_o@A%&v*<^Z|kADFJl z{{?xO15bCrCdQRsC{0T^!v8AK=|fD?QNVd#F@;*ydMhatZH%wa-YNk<{hhnQ{> zuG++H{0IlW&5lX^_lW+{EG>Bs?oo^KKloFs|92(Kzqk_b<55ZAKWkAU5wGAzbtrTs z8TWs7#qY||qJt-#*o)DkWg+lc&wF@E9m?F_&g08XmXqP0?-7}${x37L=08gh|EHOG zh>aQ5KlGd(Hl#2zq%bwe%3?}}2uEZ@B!WlMV)Fj=1PS%&Kk|kjQ{evpWy2l{U{Ddh zspR5#!y&Ok6lQ|ZRf||GhzVCrK_>&+SP{uH+avIMooE6$85y|ixFtj$!4goz9MxKO z5&Lx(zbv+DX&-S!+@12xVlp|ZeIVFGFzp<2sQUFgVzl{(L^^H1eRF(Q_Q?dHxz)#+ zlR1p(qNB1yw1`u}zNlApI58xs1vi+;Qs%I-WQy26ir=5!&BP7kyK$yo4+n-Bj3R(1 zAy&jL5jmFWz^H*6Z@gyq1pvPbt@7hr``)+Ws><=-Ld<*_nrI0|IXJ(~U;h|KAVLlVMi{`a}N(6qin9F1P!!$ds zEA(=If3xwipXut&aeM|DSz5g^S9sAHRwZtcE{iAt@0r#8G3?;zhwo*s&#n03C*S_o z|A(-DjE*eo`hMY99lK-OwmLRDc2cp;itTi4J007$ZFOurZ?5Y;&w0*s&WHC?jWtHi zJ!J_E9nA}heU%&^=-_}2)$wP$wQfi#8({P_Lo$|JMbXAu+55Y0FJB;ZkRXHipO zMyvUY;=~MYpzRuz_RL!~VxaqnR-P*duv3FPd65Ef0%&xfxvKV`Niu09c$-RrQ(iyeqnjl+Dlnoi`>5p7QjOh>_;+-OQA{%t z`fRKHZ2dT+fZ-@)9(E{QktS^PzN|OG3H^T|l(peJP z;f`8el-`xRNG^D7t-D-hxa17O#Dw_E%!9o!(Vc^m@R5QD8Lk@UfG)N zR_n+hLtp_X5Y+;fBQ@lrPXNAcZn)cM;u7?kYi9ZEEkx}yW10508@w*6TTOySkmrCf z?cf#&r;=6-l*pv#GP+&pqXHLrsH=c|`ex)KS~-dQ)hA#&VL!bb%!$HWE}LSO_=CgYwaL_WOa)TPwjO)rp0@(&E4dQWe|m>f8b&h z>~{`yjxzAEw`9H1KI@T+lVrlE$FXi4fHQB;N{Ydn*d1Q!)TP3D4oIlgz2(oAw)s0_hJ84hP9`yD zTI{?LxVk;^r#PSzE?de2GVRx>6?k?T;uujH-wja*a&;FeK&1dC)FP-3>Q+gG_%h1y z@%EQSt{Rj-G+b4eN$Id6l7AWklfV6YuGP>tFxmPj%}E{521xMR_n$`yA_bh_!v%7& zOeg*Ljq5ScOgF5>ipRq$r|jz6j&k_?d975jC2dTw7sg{wc9K#~m2Q7nN?D zM3zoo7A)C9F`H(SpmCG|Gfw)ULpotpEwxt1|BOA**FG+r$QN_ibn+7zGo67GPqDiC zz^atkG3uzpq=E)0;n)B*rKY_WGMcTq4^abh*9@;#PtuL#V&JhUDW+Wx14Sv`kks8g zc1O1iD3nuemh>U%`pCs52s^9lT9_yYe8Yk(;M?7dkY@^WY%78+M8Lg>*zOC8l_b#y zsyynOWgTlwMf-l9=qI*NCAzX;@*T#`2H}zS5O#h0g~&Kpuql;u26XQXr7To(l7yhqW&_kg0Fe!g3N{(d zbj!#_*avi;syBLXf!SSaqwVa6@4R7^Nobl$~n=x z>t^~Y%74Orx#2)Qdz`$Nj}__)HcHL(rI=*%fMDVJt52yQ3a3TG@1LNN&Vgwm5+u+2 z?~z($p0yJy&!hdZsg#qlmTj7zhyI=(bh7d^3r22UZH{KrGx^Z!5e9Qt-*5sf_fPdM zeI<7i7+s%2?3b$MgGz&=zVtFpGlE+ZfeS+;b&WW|ngkh}VZ-h169RDkT`o;Y=J(Yj_n|RL0p_Dzm#k-g{9puE z?98TJE0C7{(iJ{hhI1(cY+CBNH#?5&T|H?-XVkKZ@U_pE&M2EZavz1tn9GK$Xc%Qn z66e=o*Wc%*+}DM7cdhHpPWsT~jbu#$)$AIm8_g;zvK)yC(^xegjF?8 zh;NU{O(7KI;d=JWIigQ6i-PVE1%3MdSjzkhIn|t6h8)6-#+yoMZGUHtRu&OdCdAmS3^!|k7PsF`?*qv@U7NVr=ubyzd&vZ%?IJO2V^ zQYK~ZL$kQ0F>rI4p<v+XaDCI0UzkA_3v@N|3{bOT6SG&(;2m_RG-ceNdFvC!3$1 zt}g}(##&!-%WfN4{aXV9h}QRnz=6W@L>uJ(^i2KZ)+z8j`#QC5|I|Ci+Lr-GlZ zk@y-6r`xE`t!&$5q#-#+*dbnmz2%7~Y3pinkaWf=pK?A5_$q~_tj?2?<&w~|;oQ9N z&;e2W0CjuTc70`5#1ZWct$BsoDmBpUS-*?ltJ~;Dmb&&D{|ed1;kP9iDS-I6CD;C} z4}~#2NsZucHj9XMRTsvI(mUK#M@rHF9~G~?J2F@9tp^BEme~CAv=g-kkMWw^001+_dlrBH zpb@qOgz`uXN*(!kNE_hJ`9|gMjWg+yo8LuCV8$(PP$Yma#T=;tCKr@j+4WG=endFL zo?>utCq@!nua_?1fWJexW@RNG-r@A-&Cn{%+VL&>MT>g+Fu1Hg00~Z38dC5CE@=MF zri7I&Rd9$k$ZUtDcyO$2?|cepoXk&Rnxs358}mndcag}^*VR^^yIlR61A2j;?6YKD z^<#Y|iI5)-@6-F@gvT;4ud(Umv-~PD33ykDa~eAmm|GyhrL8|daddpOi!rIt_3xNC za+xpFH73|M)$Dbj0`?O>j>BIkCcrvs3V+h%)Jv;GT31fAQA&)+`_4-ppuQ+~=cWVr)v$ z@QT~ozRVNITeN4&6El|IWkqsbzcLT=t?WxNcW(V78~66(*5?IJKV9ql>oHxW#LYUj``7aBM5+XOOt?Q%==eRehEFa{ih+4w_8-@b<*dyp`dP>`gN*`#z2r|cc zBuV{*bP{1-))9*k4>69mjoQ1&G9o0qx(hbwUxg}E+iPeMPNmnu+c*NIu=xdYXjd~!I#cMLM|JJJ{KDFZ~dmg(l%T2&XBuU!A0J!6Lp0^`fzsklcIU$?W&*icngwYNj0(E@dXV6!V9kDhY zsh{4A%Z|RRB`_$r_ul|Mq_+2~6avHr*GV8b63=j*gA2UP-TlP@Pw*{W;dTs2R{A3r!fa+8Erc4=Uo;x8J5S`Wbgp74hqx)HVr zqc!@Q6>jf)aDNPcML3xnzJW~HrpS&`!*r;Cc1rXHb6a}RZ~e&*aO|MImWTQxfVwW8 z5l?AvauZ+#9$i}VUrkoTeYpL{hE_!p&lWH# z=I`?f9kr%oH0+ic=vB@2Rn<%b$vSN^mv+*jJR#%8q||v_9tiZc0Q?tXlu`ByfW}Nb zqR%({>;Ki29=3en1`#`DmJtaP=%#_Dxtuct(Hk(P^&7pCDxiUkC=JylNlj5mNnNav z8U~_}3RAM?J2!I`7Nx7y4HIGE?5%s;TBOz8biIqYZD^YNW9G8}IA|xO@LPzBv937t@?XQRha(2gJZI6!k z&zCSmt285GYFDlIv9`Io5oRUeVC7`)Qb=PAnhZoE!XCsRN=7>cx?|I73nQ6;$@j?E9QyIqjB;SI(X~d^Gj~Kbhu1ZJq2vXP{NBX?oGRh) zo0Hj-T3D6OM$71zxQPBHOPsQk@O?C~lIoUZBN{LoDb$5#Q!(H zRSH@|0wz*o0UlOE@xUAq4;AxQ^NVhBow(GF|Rcv*Fq zA)Nc5Hkm*~C9@wJ%~V!iE;d7-lA_s%Ky7#KPRoPHtnKUVSHb%{(V_il?VeFY=xx;Y zgTO~U-UpJf^~{tLm$o(j08{c#4sHcxiRmC2;QVtwDw%(bID>QRGHKUIspUxtaRrol zoGf%sjeY`SZ!iEj*Ts0-x~LfTRNw&SGjvGTOIfwhBpIoY{U>!7mp7d4?@Rn;ZGPi+ zXLyM_fL#!^lW583n~BwLTVJ}Cbm^P8p??1YLT-j+sSX&!Ec+crKZh!ILqZekt$HA2 z?dtaQ1J-F@kkK*Mm{=U5`uMIDi0?wQe!G*vOFNG8FHsC=sSb?3b(O`B%zs`fq->{3 zs9%B9IcsZZI0|O=UZF&Rs%D^j;NsOWzx0V1Pjef=9mVbfwD{|A>?(>gL`AerLUxYu z;No3x6Z{jzX{>>NlnQDc4Mg<0T@~%rt`F{Rb}3~{xan(-C}B*wXx9du!cR)e{PIZH zBiJ}COFah?_)54s{3%-Claaj8vK-V$J{|kjjb7}GmG5N_ui?8E%SnZ*l5Ug*UbNox z*|Ko&o^(wbJ#gS1`f=NujVUln&nsz2D1q&2?myiBFEA)WKAo^bpgjW%)!Au<8T{0G zS63R+;L@(IJ^MVaIm(`r8}iBWH)b%Htf3emvo z0XuOvURFZWc@p+Y)0eVRhdhn8M{(L*nRR5YLxF1kL#OpMO-y0eb13X##|V^wnb>`1 z?3+JzE9=8AKJRw~=2n*CGM#%*qU~1)q8dJb} zwu&Ozm--65u+YEfL=>!rya$a>jDG+UM@}VDZacI@m~NJ4Wh=g^Omyd*w!QuA8(Lf$ z@3qfWF@m!bW0<}H{fIZ$*8;5vZtfU*>h2wTY@eb%+REgDk6wr;A9OlhC$4sR#`Vj} z?aaS!D%N*4B9dV4#en<+{bpv+agV_Hc7IdhoWjLmGY={M3(2wJQ0G5X$7JeJkGPyk z&%JiswP86TOUic#uS(`L1O3|M!-;||0z?D3SV(*VT0CP9pwTt{b{8)xI!DU!)JLtb zsL<4?Y_26$s`^~(8AYkKVW9<}ft(QL3RWH>o=cym)1dGbDz8_4+qA z(Cb1npNZijB;#{1{w_r2~TO4BlwG)ttg#3_7$Q7Wy)u$Dd^WHJJh4SJtsi zy9Y>St@P4Jgrdql5@QEi7L#!?nB?Tc?V+?u3gO(C4ki^#1!In%<_w`exqd5r@>sT} z&QUYow#Hirdf7B{%~QtyK<+Ry4%Oh&@k-+!`WW2JPyM)37otJNfGzsy~I$F|CTec`QUjb$UBp3sGSa*8#G5leQ*r- zbo-z6*QN{g)U{JQkW%T@=&#>6q~u_ioQ!IQ!aI4x#$zD%LfL@wvT55ArwCc8tO@<= zdQo@rXoQ@uw;$dQh^Sl+Lq&D{*vc;rRB6KpGR6 zem8tEuj~R4KukBSQnnn}Mr_oK1jCbE&?u~WzV!$QrS>;1(csrs93?SucbBvIvn==< zm6{yMi-)f1FsJ%v;UfHft+3K$nW~L^diGO;Q(Y#p9<<0j+HMf{pE@Q;Xyf3>Rn|v? zC!r&>%&!8TvJ*~#!L2~k$OhbX$x*B3v$ll>RdeQ- zekUYJinAEwo?=R=@*gt2wsk$i$f~pycPSIsk@b$h@qkoN&`?}31WuQu-VuUSZ<-s4 z_?WzJVTK5qu5Y~2IN{=QSf$1A<*R0zSNPF5#hAcLg!ZF-e82s{tC8qIBTx6zES4(< zEc63cFf@+JlDBT2V#x>rsiSkZy{$-D63)ihWe*%g89CT93pT*~(jb)&Jq_kO);1t+ zalq?^)jN;m6#S1|ZvN8KFL%4Vd<@SBDDnjpSP0LaFUue(B<5pznjV{3uU(E@XrUt*^2bvQt8UBGIW=~ z2;YhdQftkKJ*IxoRW!Zsu05@YO8e?3(dA=xJ-GWxP{Ttk`)nDPP-$oJr?||;amm2Y zTmLqL>IBT>)B4$KM2Xlm=(81bjp1~CjWM8?yHgg}1HZxM+tCGN2XFnSG7;W`;8J++ z`HCM%6GcP57VGY$JlV&$-ENhRa&Tzhp0kq!@)cl%Jh&VwQss<^ajUJgN;;_E)2!6I z7DWs{_1e|sU%ah*Xu*rEb32NT$@iZQ6W-hyI)l0zMdOWVX7KaW?kv zD^;^jr!ZFZnr0I|&00kXj4`zq(2k^|U&)=(0k2eR40`(|B&9v6q6NunvD7GsMM0x^ zt+-ny--)eql?V|^=ciFFRRru6MsYtcUU2h!M8)a8{DVg(miB;JZWmnOa&tbW z!Vm)F+ms9YKEBIl^^E#Fgz?`p)GT&2-Cvv{MM85e;G+|9X7`FO6BmDnpbRg}*Vbq&`%O0XK-?2{EJ5IG8LCwMM@0h5P! z^W;xQ!JCZZ94-YDh^l%EudfvaUT}cSCjClqD;;Na80J7NPBu)SzK?9LQ;wkX# zM3B%WZ3+^57LfheB&5GA)w63aRAgr8ta98WAu+g15IN1(1X}KmsH$~-YU={g6&keO zMdoB#REpkqhPx6UtQ5%JwwJPHbFA||m-1D%^X-}?fuU+Cy6+O4Za=g-P!hBGNoWUM!tl-&)h`c9C4m5(cpVo9t(pE^m@eQ|D(AFv)y9A1LP z9>Tjh0Ylz0DzlT;e+W|7(c(g?zHqBDq+L`Zhdd}cT%9$vdH+iUg-AHy6%z5}h)^8e zwh{pT%;0^^4Kv})Zf;_wX<{0k({o*pp|-B^FvXehOx5>`$T2yY#vZ_0bYap+W83h; z-Hm|)_S-ibv_MZfRG~wsQ=>dx5LD4jXEv$-0XAVllx`-AvkfPxZCIUxNzsmyC3(v) zqrE+}Lcb%m{?Od$Hg$~fJA#$%&|uj>Dsc$EZT{&WAmk-Nm04&~FLAbx1aFmDAaK@^o_|qEvy!H-9>ti$4Z(F~2RBl} z+{eJUwGX^bPgL3t_0J$j1Z@^^9J$T3-vap38l7HJ^GL5yIGX&~QG}gp`QzuKx{*6p zE(7pxdTSXtaGz|B_$}L!&p&*lIeX%e4OC(-b5Pls7u~M~lA7o^TX+118AaXuU?<*Y z`abXwOg2DSGGJyo2%}-d*F{lGPFhUOhdQq!rnEngmYDeUb|j@Ri8}b9P5het5GuHF z>bKZjJNu_?UxvG&`}&h2s#C5V`4Q77dibjM|0B2bias4^W2)HSn$#Ujk)8|9f9*TqTBvKtHK6# zCT^3A@qQ^o`4GEYr?c;#wB=QYr+*wiYo&#_Sm%x4R0&6rqruy54PUzvR(m^%KI-^% z@`}RW&BkmKsmKZvmC`9(f4=js=kRxnNc{1F^-Tf^tD&VqGyl~rlAG1}mVwox5}-yq2kKB1 z&(~}2p!0jQzz4hNt;`pXv@s%r6h3^D%1aFd-w7$9`cCk;$5|u54Vx0Gy1x3AR|{%a z&QeF?%W{Tk6hXu11rSk?DOl3*w7M(8Aps8GWMd_o+uizi;|@z7lpZ-pm5du6zNygBoHM@5n&a@X4{GpoA=b9<^c}Vzn$8c1~oLM%DnEQBbl^> z0mb{VJ2>*QEfC47?vBubZs1-pHr=Q#ybYuY;Tm1O`%6A=Rz5Q+;J{YIu%yurBi*53 z-5G+wjwdnWRj<%$F4>Z`gZ>NJQ{k!XpxJ@mq*nJ0eC~WJ+jKLkot^maC8ZlRwQ{7g;d8Vn9&=fBD)uP~to$|`tt>-Ah zy2`J_mkz6lVohK4E#RnEL;DR)6qq#I66ba-_O|+;{zcN>bCJJ&u=_tE2OzH%`2WsOhz{+hYEN zle*XX(`zWb0%~i|s&-fvNXDu1-j)K4oT3elGO#4%hG>huK!g3alE65Bv4M2h&Fh~i zgzxOep^q&JZ&&9MuWTwi?aIDi65*;rKYg=p!zx03yub^-pHk&yo3bGTY? zWZDG-7~4c4VCbi#pL`B0#zym2*}sZ=SDRTbr@a3p+7hK^d@d zBeL7tm~L|?1+<7magl|0T9s0%{L;x9LI6|n_eA~y$$?1Oh;0%wNWOi96wWj0-O&<+ z_SV?qPv&fiBY1a0?KH&oi!7nc6ZUZIQg?MnXu`c0TO#92i(=}?x$WLlhbgz2DBPE7xZ{&spA;b zO!EH(LMF6b6>g85UC->{Yo&`jsLfAEx4}*`GY4}VxQ?k1+n)L|-GC9nESkAE^!hp3mwNhJRhIV_TcGjhO#0+^UD@Jz!#K zJat2_PI^~Yfq=R$d=ugcXzpS*VlJtT#Cr>{qIIcM+(Gt3#Gj6MY0TGxWT^|+1B5nB+4)zE zRkGyFqra^urz-nm_m2Yl)Q~9dK~mYbsS4&|M5y(m*jAAB2c;z*yPVAZ-DI?3$t0lrvYdSb zuY}b^L)h%j>3mo}qjoD?b!hqrsj;QruBtXG!s^_h14Ug$Hx+N3WGN!aXl`y-&B3;!V? z4S!pY`69#crY@?hS@{8Ph(4@1ke7u6Yca?|fy*jOlvt!(Qjiz1$vvt%8;=GTZHWNL z?hwxVxok3`^U_E3<8?F5AFO?fTPugLX)@slC&O@e*<?aoNf}${`rWG(%s14hC zj)l3#GlTB=QC#7reehQUYf0d|GjefikQdv9P{)Y#>tDT?RC=bwq`AAp+dC#r<+osS zb=PksGjPtP`VoskQV)}rvoJmgQ(R8*h z3+!z&x;0reBjw&MuiVK%d(e*et@8Im6n3DN- z+@qSq%Kq^i$%hNwzWDeze1^ac8V3Og6fMwjxyKtOC@{?}<+b`DN=El3TF1i{P@E>Qkh|CC&v*nleCu*L+-RjtoYr4&VMs0w zd5{;iEk|(380mw$gt03>^82G*YS>7d0Hz(NzN0 zL`D7sgm17oM>JZh^g^MS%FY12#H2-nU{S=v8cf1?8_3`1->*Ke+Z>^Y9nte(O)kxP zcKHE@Ke-MQ^LhL47Yy~9wv8^M|&dWRXY!8-JokD=b`@TrRT-c{>Bv>u6^s+z(RzrLp@fZRU3LyK`z}*BhK{g4u{1QLM=&nk3+Cf%Ig2f zQk7iAX0Ecr)rhuKC5>9m+{vrU*ga>elwUvZ7hO1hhLpVZLH*!|>P2SJ0=b2AoJeP` zkTmP<2IJiQHSEL(9HxQ&O?{AA-UXE|-|0^((s^fi=67dk-qv$+FI%8QkeNLlLhf{% zA;10qSk5%x+A@hTj0A#|Gz~Cnsc+cph) zba7BO5BK*@cPh$G5f543Iv+asS&qtg%F2;C%JZl)PSShP6Lb#=LLw=A%Rlhhk|zE~ z;c6nvf;-d47vvL^V221%tcnNz@?dOx9Lb53dlgp?EX*k-|yhrPcq< zDJ2K2u$**7FyCFv!1`;|_Eu{P-t8Oq{=sAG4>eF;(Va47r{t{JTW2&XJuVoRMB!>u zw3|p7!tfRQ90;USsFs<#sZ!GabF}!AIU6+xr%a_mt|@G@%nMk3hDClNnem9}HT1ZE z7_LO}KvTOuz#vs(tVO`Cz%`$W0mUi*{o!-@@p2z^{}Sn3BaRnYn3W`M6K$=u2+Cpd ztMw)xtD;>>Cg{kO>>GiF%8xVQd2j^6NylQUSnfYaMaX{|I3p4+NgYDQ>)nHx z@a|>A07^gQElHT!piCn(hT)t0z z&sET545(ffgHUl*76LiT`Cyp~WQaR%h&vxle(GST_o!Ro6x?F_UXT{vy`;|Hb^(H1 z0Z4r?#bBr@)WRlguw^aCkCC0WZsxNnF;=LdiqDvpL{{;G6YPS7L;bPh#VKi$-=I{@ zYu?ChVD?%14F&Ugg*;g}$}1|L!n?2IdsF|j4Fs7v$19>Ifl$oNTmK$rrhbH)fhL?| zCfB@@C&QdWSYbg2g#&uq=XGE2C*p2trK?|hiCiIlIp}JR$!(!r1VQ&&xJ8sj zBY$@b0bMB4MlfGs|7Sq*frAKX1OZDa8-OMN8qljngyut-#M8iKk?RgxuGyX|Hq~&N&X6V6xvC;kE|qOAaaAuNAKMa%Q}GIWOefHO@?DPe$ zhC6CvGbS%Q`!89950KxaR+_aJnomv4xoLl|mThQPaUs!_bT|U5{bHt~_l{Q23?ABn zHqHGbB|3&E;nlb6jY~50&;*mqY`F<=vE`2yK^|8*QY=0075>erhIhh2pI?FPn7=U( zF&_hhoX+&0zFty}X4QfOrij=gV?L+*sQH)tU!WdYN_$=Nv6n~U#^itIHKa42F#BT5 zINdmtgvd^?%_C?TFb2poX377VvY7bp84>O1rWt(8UL!Vx3*$Sci&`DyDzom@?V4k^ zwfV&iwp|sqW$XLg)ePz)&aD+K*KJ_$T!QzQQ)PsR<6()gl4hxqGM4|Mux*u zw1Su=&m+KNLH%}NUtOxehlw=Z)-QK`IK;cBnrZh?F5$gm!Ua2Ra$WaRc>1EANOECe zr3edhSy02d+gH=|3*>*+1Omwa1ua;n_jO@Od0zmf7X1IH$=KEYmt+{^KT@^-Q%&X& zZXY>1Iw6A~Mb9uRQzmJgf>MPUhN7`e=Ua>!#{B{3coUTa?69+V zbOo`lrG>SC=Wx{`(V|zI=3`ZW?18nUe3CmIK)M10cgYm6-iabK~KQR z6>%!uIy;|J?}YM+a*XANUMaCob4Q+7ae29@u=)8;=?Ib)A=}&RJ*$m`W(%d0%%z?Y@VUBGsnN;_|r!dSmS18ze zv$&6c>E%x26-ssh4!hk~AAobt?d?Jnw!a{FbGL1@g?u?LjCX&cGDk+X$r<)A>HCJ~ zB8Y94e!W;QT;Kg(8$AbAY#(&ioalKe*;xK)R;n5v*ROgi$QWayVO&qCsyC;y5wTh2 zi42{CLBc-HJ)1?KbV5(vjPXI^_qC70E%gm9Z+3t76&G~_-mrA-8CoQ_Hr!RVmR-pv zpIq=oj=fFgHoql9W=+`TYDJzjrK&9(Z{*Elm9DCcgpyQI-TANsNp%uUDbmL#LyD)T zVd`(xA$ee3hL*`C-g|Ulap{8|@S>VUx{-s>dkxftdmo{-4aqgZ#G&NhDAu%;;RH#G5KE$!IIU7cuGi|Ql_PD4Semv8g3)v|wOgi%184zM zxMgLowJ73|LvHx}r}v+-{4_nCI7$>y?Ug%l?GVbqX0p(JDgKi4w+{>*JBoe5<@x%^ zmV%XC#N_lod_Btvd9KZl?(bCqAFsf$a>}JV4~I7wbj_3Xs0=8c@XtHZt=gCI$T$~Vay{NcKycd-Z2rTZ?dei|Qb`ahLVPw3>aZMtP>HBC7WG_924^rj;(^ zGk!{4sbagES&?2TGfoRz<$Us@afc>HL>s-M}|2ywaLf>{mLCogi3x0$_;0RVM)JS(5ne>ZFc*K#e)2Pndk^aAbM?b z&oHUTt8B|J6Pn4cb23(3Px`OOZ_t>3gjx0&LEFCs5V>L#QsU#)(fnhgKIHQ!97lGqdvM5* zK}g6zN@SMGWD(T&2}&7Pe4w1LI8VVO)L=Gt_WUqMm-_7*>(b0&I(};t3+4S9byMIGJhRP zzrXiFvOF2P)jS?N7(5-()>|sxngYV%o16WgS{Pzp5dQZf`VUGc#ep6MEoCtp1`Xyv z!|40rKPdwQU^GB#Iko>OJye*O8d%usSnB?_oSK|n*H?-NVejl@@Zhkd@DTm%@ZS+R zM#(@6x7YxP8tyPJ6t9=(5ZBQWIc0JY)WMNz@zK#q5xE)@JZ)}9VXk&%Zbku<&|^*! zvIZP8Q-?u7>LASEaSv1}fH&?CWH0yqJw-nUo)iV?4iP35yo$-6XFD8pF_Ne$(H0C- z&Ttr#*;PAtD^W-+Q^@5TX#@%$Wb_XmopoNeII1&DN8gW{G zq7Kl4ULj+M9xP|#LMx^xWat@&igEt0!2X}O{-1I!rGW>L;=g)v<-9Rc(-d!U@Si|* zDfDV<@yXZ<+o%94TVqvcLr<18C5N#23ew0r@j(B9e#y#{>NIrMCwN`{pAzw-vxIS` z3IIc42UFnz-EZnwEjtMeiKikPk={FOKIKhZps>D+0(n*%EIbSWoqNaW5pL1YJ^YVDuLwwX)ZZQcRZ-I~;NZ7Dl7 z>_@KDCAh%fmpM6-c(I|G#gu3_ZqgZdCkOMqjV#DAgb-h7sp9ncYiw3VK1h@BtGnYC z>(r&Kmk4?F4*T1W0|$A%?#IAKfa!Y=qxAegdRUjIt_)}+6tPeKgAU!#qf8QQp#z9# z5Dk{7xK0zOMVKNl$H#@0MXZYE=BLBq-{f`|D}t->*lj#D#<%jL{w|qivE)auX90ZaRP)qqH=%B#*hw1DuN_kDK(^tFu~(AisA^!Ulc2*orld|5*hm?C@%cVs znv(Zdk(Wx-m?0>4>S=0pM_9^Hs!*fGb{=-HVC_L4No`*G%0%4)^hajPZAVumm5kQF z#%0b0?Ti%4-Erhf?xKLIx1Tt=c`#@lHIl)18Zo8z(Ap0$QzWQ?EaIUR=vF8N|E?Hj zn`%ZKSISw(VQvwN#)G9#J6g{YvlNmrgy0$CK~`6tw7;fhl^+MF zGj96+t7R%i?*?YDn0r{)8O96EN83`W6(_TI8uH?gzK%m1tF+HakiO!l+XpoHW1W+FC$IVnGPWH&>Y-;2j9f6@t-vm%pOn^??~WLPjh&UuKc28 z_28j+TRMEZK_pN}*w!F9TqL8pk^Y(OexU5lt1Lo}upDjyj)YXhkS?~|5O)Hyve#=g zl&NjnP!w-zkmyf;d30?{QX5ARi(TKMKi)Wi$J@g`$_u^$VQd>La!y|hft%oY%!9Ii zm(D^?l%Mu~GlDPt7t`6?;P=W&Kf;jy9}fAyA#FDT8ZE_86dLWnZ=r^4AM^jSDvZ9l zi~oaOWZ~doWn3xfvc`bQh}^==AT4J5Qhf-$orN8-U0OR;Wd zB}p~6PfjGSp*;`^@t?vX?RA5Mhh)pX_XgYFS#o*Zn&fXc@S0l47_nKB$-lnJmDqg~ z#U2|u0YJ0Fd1`tY-HEYswF#^SZX@dXmP*mkq`YHuYZEq4wQxiP{gX?fhuP(q{4+Y$ z8_oGSk7*J_b=~PnM_PV%Hwhv*yLz{9Icx{HzIj$L%R>rmhO$#GsOCSz-skp{)E>wB z1eU**TJw1#EZ4+_l|CE34jE&frGhS9h#?rAsenRvk{~5;4-iCRSp51~eWraZzhKm& z{8UzpmX~Pq9;D}S60BGh`-s3FU~)U1i==ph{(tPfRa9NwmNkmIySux)ySux)yKkJ} z8a5W(U4jM;?(Q1g3BiJ2zMQJ_)qm==Th-d%?%RFgVYj&#i^Z5@%+-4zeLy)Ua=?9& zT#*1FH(`ftW?y+B`6}yDcBIW^){r=K8083lIMh^@YTgp)j~q}v**}?e=x6L!{p18-n{nt(`i*Do*OX_qPtECkmD9H@sty`rUT+-bOK_?h zoIKopxGRv1?JC5=i)iy=!@ifBNv|U8KHitJ48c_3M*W_Mq|eUAZozB8!gG)|ZU143 zH%#5p)~v;NUx-a;2PuiZRwHaKMb)` zXk{y)^VJ3(d5N2d2~VauyGt3KyLZfc951Rt8k{xA^QWF2i`Q;HLu;sQ+*=sHif;vD z1))B(n3s#1?0aeU_fJPV0Mz$&NTKn%(pWDN)#GG~ekqpd!qy$T*GHoqPZ3gR; z6*ys`)cz=es$PU6+iIjK*eFq5Ln`!gA%j88L}4hqAn{C%U8-znlgU8=085%`4Xd^C zbT9bwRgZ={5${td)ctHMA2nQ-k427@C{Lj+$T~)zWj+U!>56drKvtk7rJh=6^s0W% z0pfCh;ePOf_X|`UlGR4KnWk(=qJSmv!{)CmkNNz5an9iKCat3hbxjic^Hvw9yqni@ ztdT+B@Hx{)b8wlN*`a3pzeLfWlWI@#f1FfBO7iJOft#hEH~^*ZECju=B%qQ-L<(&g zlzwy7Kj_h-f1xtlQIMK^hZKi9^B7%mAqI6K3WTYn^1H?i0L$wwn%>#O;wuk<^f>OL zG8CSBzj|XWpT;)FH!=>d$yBD?d{mz?*RmX`yA!Xo)i)u1WVb8SfhLo%MN@cGPoJ)7*1kM zTpYa^HX<4e&7>QLC~o<`aw0a@L#(f93e!j(l5vz*;Hjutta7pL>;@DmBGF^w=iqci zFK6n9L891ECgk? z<$T{wnu1e2n|_~+A<5i1>Jkcjz@~nYdX5k)nIFiR&)(#=OSiBGS@fj&x+2IN> zhCHVYJLX7RpseMhD;24Dpll?`?NyR!+86T!2*d{A9{K$Y`d->fnQVf41Bnn&rvT5ixJJO zMwT^Mgzs(xG@yK)P!I6f4=TYT&j{WV1fIxwZCTF6u!7#?;2-HVHxJaN@y9+NK0O`i z8t!5LUGDx$RH6$QyMy2$0FbT^^!y)ZHVZ3OOA9j&)&p&Q8w_n6A^Z~6>?ISi0%p%O zKik1CT@nqY7r6s4bOTbI^dT(Y+^yI>ou)E%n~*OY>c1+Nq%VceEr%kL39Z~q`l*Sk zu#j{|cYoqW5sgP)qkhiIjY=Q0;e4h$8 zKgXXs?fO|1Pjfi{$A(DpU$vz>Xi6&5xQf5-X%>5A>Zx_?_hB~EyrMr28@p5+ht5pb zNi`e}W(Wy^B>>>FH-{XPKIsy=Ij+-_X!Oh8pVvhj2)sFE7=vbnBOzNFbFjT**eOa( zPio#SD9qltV|GE-BNgUJ&W;i5f~@LMW!6++%zY&u>gedkPbFd^IO7rA0QW-P09()j zuNS#oJ#u(#556;aiwlYG8xe)+E_WBEtwfF-Ev;|IQ*P>_Y+ZFLZ9z6k(`4% z1hk>;>=J|ev(#q>T6Rt9IYa*5*a}+gNd ztA~UMh$}#W@TDoN!`(weTN|_X_3sj9KaL9|@R$41r_Wt1dwaw8Kk&KX&c~XAEtMh8 zUnUd4R&X3%&Wieb0uWf&NkQJPF?)lE4P6;h`Oo+ zO?QR9N>cRvT>jlQ2mwPnPs}U&kd9K>nWAiWiT4p8Sic6@4r2|*NE_+&Is1B^%xBca z@-!*M`2*5<3}r}?5sUI1Cv}R}F=CTl=u4v*SfE{`r^vK$b1AdD?qZ3)prPEX;yT+U ztjAjX#`THw+hB2j44l2W5_Or`FFRGRI{ih?$ujmd!~P;p47-H0(AY-Cd*g_#<52Bh zPta)qWI^nUJXPG$%3e|rSllxHV}~S-Vk5J|@Aby#)=?Xxtgg85a4Gv{FyO4G%caCL zY0(#pfg3}V@o~zc_w}2S?&Y6IjM*_oamN}K%35mX8`g?NiN@Ckl1-3x>?i8NyQLaK zft=#B%T0=P4*W417_6RQFuQsf6);AdD#qRbD{M-p$y+=Nil*cl@Z1ZFCx@ziv_yxW zHQ)o2R?9&wY51o=Vb8Hqyzh&))djAEz`|n&gv^%t>V>DJf!O2V-ct8L_Kw=EjPdum z-;-d|616XszO@N4vDjSZA^){v{q@>bq`w?n0s;aO`B7~CvFCwMV~_-@|LraQf3#kd zm1R)AnQ&K{9F=8=LH@A&z8g_slw**aDqr}^iV>(fkAnHfi1AN-BvN|m0=l3f{G0m7 zru~1=a=;LHNL*mh6DS4{jtUg6^%@NUAN0>PjE{Nqfi;8>{{}YY`r9b-e+ipnXkbwu z9#a1UFO~i$UYehshcwU**I`LJ2zT4`AKt)y@reKM21ZZ&Fb6Jz0PMSftcpH9QU>+H zSpRVbM!YstP{A5Gry-ey93Xv^EE$B`@_nQn>8L*6CW4st^RM9sAAA_b!Q=a`02=Kn z)ENMi9nX>%>>y)WTzi(8Jb?r@mk)9~Jvq+7BC(Ww`)gCwLcJKDE+<*B0>MmTw`eWW zv=OzjI{cIuBNZ87allKG{oOPO+CHOK0m(EtJj&h7$xfB5vI?2PSU9};Xigqi+QNPA z^?t{rnRn(K$3*92mWe$a4sNan=?AJY2p~e^&uKqiD0r(gh-#(Vc3*2ePMhzjGnk?h zR=*G1UAmLm58BJ4y(eMcOpy4l4vWy)sc+w7riry8G^+_@BSa(s=CmQ70s4P~urTn3 zn0~mCR{8wE4Ir3xnK*;+VoD zeV^5AA2@WqzJ@_kmH{9uRVTc5bVFx?C{i>_!vre?jHHKzmA9!FtuzYqkjEqxtYQ(O z5yI3iR&Cx*EmfXvyxuN2ycQ}6E7+E1YGi_5hEY!H7i}>NRA~wpUup^!rxYjIJO*|K0~+d<4U{;TJR>lBd;aY_lf4B2L6eDu z^-i6`@2$ld%``?KI zuD`$jKS#Xp6EBqH5Rdg?$stu%+wmWcK={AJe2!LDYLSTZ^RyZaLj(>^p)L*%Pp}m$ zyT~pE;mU_+4I8-F0tB!<3|a{QDuRc@jes8#YMg;WM;hY2i-P7A`eVeH_Bq7r0(y3{ zN9}z2)z1vtVtx7xK~Y-a@Hg;P1C<0Uk~xEnxg09deP8Eg3^NwGJFRz7eV9w`Mar%f<~BtUDwF}#$%WB z|7|FT>%DgjEz^jCEMp9JEcd+pl=6Ri>_Y6AM`ZvTypfmyf}m!^6ozpkl4P;lR}X&e z4#wk#=>Fgb>(4dM%PW$v@lDp>zd|70+v-n9a6N#7hfjhuV_Vdkz6yLZs_}guES7x0 zmT2cU@Vsi`PVb6aHc-;U=C^S74bC+U`51>}cX?$W2dzc?u$h;0=WXnk)gYMUDEzSQ z(RrAq{8Ir^H4`6#1xucA_3QqX(k>z_=gY3@zARok#xw9)t!8!Zn(Pk!m6=p z`l(}I2Y3#BY#S(im5INe?jz)<3wLz++h1tz>ZW);1z2t%4Zvz2BsKsIfoM#sd(7=0 zq&D`))Q^x#LGPhqq)1Ue4^yn*e@^Zwu;1q zh2`MKp(35xX%G*}#~sE;3>C@dRG%Y?j7IwUCSKyjqTrAZ%2*#}`U`xLV#@~wVy&Is z8c10Tfe-NqY8|Ho{l{A-JhBD^aEBNE-=vfJzw^PLbaF<3Obx7*07Y-L;Dh%ACH(6` zEvAB`>>q{S4f;QeznPh(C5tIHupt#0Q|!N;0XYBZvH$M`GgH%}vI??st{>*hlZqU! zv+}YEK++H}LV!iXhdnaLq?uLl04-lVXeBL(Ts`<|iLY;Tdj%~50^)rJTr{@16dNCg z47g$M&X=s*Eb$mpBKWYJhKjI9(7~T-9Q{{~;k>D*b{Rk7RQiiTIJi-ws%W*_c=fSM zk`IFdv{*nJcxPh%`0)Q{DgyQSk5mNsA97LY|1K8^Kza}p|H(yg#k?UaLfj1!$Y~g+ zSiNX0F#a7l-!X5%8sKDHU8T(Atc?7a6u{xphExpHa*Y8wnP7590F?JQTbF)=4L&b{sVu{l%IV3x_Xl)WEGi6Z5Y#S{wi|dOM-)gBeNijuq`s^BPih&k@{)6YS9&-yKHF`pb6&r zPzEuYIQhwtYB|P98FBq4|5C-gw?1tffP;WAApd9FaB*8$nOSgJUT7MAsFN^q9f}m6 zT_wTQ%@9jC0M_%GXaKKE4S8Ccni`Xcil!#-<Q z6=FL&F*X=1;_qZ%QT$H(j0%S@39UUm(7{M$I)7et`5%7U=CwZBJEv{^RxoOL;{ry0 zpR(mbVqqU)WRE^?-wf0rKj*~MC0$Nwsz(kq%Db--$ zh(_0!R{V(i6NEOf^O0jzObQm32o6`A%0?t)=NQ>Tf#@=2Ba-~m`+rmvOaIjuI*9Nz~eL)lhGZp9jk;z)Ky_6D?1 z>=>Lr0fv_cVFXL@;i!KW1#*ASE7?0MM%4LHlT3xswZmZx!;h)}qe){}Sq&~v7i}gAtimD!{xj& z^%lqY=DR19bh@nIbP3rftSOL1KS2zis$~{8h)=W=kRB?s(q)8ca4*4y-AW0iCb1xN z=K&nHSqJ0-i!TR=Hk{ToL;!x70AUH?pPH3f1?gxd1qWyF)vLdoFbpI;yWNDQJxM0R z%4ZQg^2CnNZMMTez~UUxGe8!Mb<)!zvemyZAc_s2n5d*L*h{XZiUlYpKv7P?cZC-S zrFtom#?DZ)RZrlKjt9kqD+om@W%8|t9Rf-R*aWD5bMK~h@QlZD(L$`UOn>6@tqZ9p zr;J`0ge9eER7p}#W$>=2f<becU z;pcakw^tO%jJz=yfd$ndR)i)K?L!+@nTe$D{hG|@pVYwu>4;;X4FU7p&Mlu_OyBqH z)JT0k^Hh;U?RW}@+?p@pRGhS94*VyCTRzp)2PW;T(g~JU3sOQOvMCFS5%c|Bujhg| ztD6VJga!-*2DJN4d1u?^{J?a~r-}tI%_@bo6@(E=j{ss)0El>dXy+_g+)W6sgLbi2 z8Q}n%y~RH{Mt z+x;9}pNM$`}=#ym2F#Jsg`pJfA_WNG}#l?RHdiUp`}qyS_=<+%@4(qAx?0t z&3bonh^H(|2L_@WZHgVi$o18El~6UyFBmk*;;MQc zG7&gEQ7p;4G^)L`fOi0@8s0=VLNcGl3!$EE>()%5q?51;3Pg$MhIIHl%VeYO;b^nK zXKyw9H{IF!W6{}q^ZHs*H70!RQ1@-B=9iKj^bJaX!RDagFrDw%3gi`ZuW}o+;U->0 z%fJn$DF6-alD?WMPfV?M|dyXQM!c|@o0=NVFNcruy6FRpJHnOv0Rk~SbI z^LbJ8TzdUc}u$R0F9gV7TaFmoQcD;+M(2!I09GWS}C+Hy}{|&G+h^tQ1g>eqvdSf&X#)U z$YF69xnnG&dfvN<&# zG6=CYmt!~t;0XDyBO4kyhO;G28Cy>h*9ff_l@QY69i69-if?Uekc2RU1+l-CX+%Wa z)vo$e2ek~!^h2~sjBmKwBeW)waW)>8PI8Wvy0>Bg_#CkKE8S7`kv8M%itYJjga#X_ zP?QcKGJ37(=CXlaQQ|;eSN?D^V^qei%JdWa-GEUPVE#1fGBUl7;U2UL^+UK0b9c|Tj8`|;hn1-pO{_K=5v$j16u z@_y>P&1RHouO8=@Obu9icm0l>Mf? zWmOFP0L!w=4v(9-Azl4rec^sGPf9%A*7H}Pyd5k-r6E!ijdbwzQat- z15%OGQD|h^atK21>`=U#^D>|veSbpmcwDb_CJp~Kn_xR1G&oLf3ef&uW*;RDrR;?2 zV4fwaG2_PUzfDuwnWo{yLk_?8PGcA(rBzvjRfQKcYE*6n-#Jx@*CDH^|47mZRUO!r zsJt7k`Tg_$sb|)~U4~U_qV@$pqbSCpG+_Fu(fEP}(7}*W&NHODA}i)TXz9e`5``C* z1jd~Hg0_imJ{HI-eLA$|MgiyT7h}H7YHhK2BZlajcfn6;8#9r;CHw8PhM1tJBJkQs z`B2?t8ZvRdM3EOJ1nyf4b!6`O;Mc|gq-rDqPkzIJ5RWi>+;dE=jm3L1{L2bE3&3Z) zk*rc$$EayohG!6%K#I0|7QC^oK9mtLqP^vjX^&}J;oaFgB+(9H(R(e32cV{yxP&tFwQbsTn$qMFJj&D1MC>C;nholJ%ChTf8-| zToSxyF(PdNo?1F(*JO9(?*;<`AIO&^-9)y6m#6najE^D$JAIa0`ydntAMF8iE*iUf z?%1zOJK7;U-h^OR{4dOrP|OV>M=0Jgc~l_^WRNpGsayeh1VJ7z#ymW9xeCRP@BC#o zcRSsj#s?xjguBd0$#SLhqagtD+x{TZ*}zYipcpyZ05!FPg8?nsDrb=giun-^vM=33 zV6RDRdXiPuvH_BNFcw+Rch&%wR8;8EV?W zzn(DBUEh@Lkvz0BIGulgI-3nGNg?P1uqi0n9!{M;m+w&Q_yj{l@cSrJA?T)aLLql> zaZ&m+rsbEl6?jYXdIQUN95u)&HCrvZ^f7n%12a`ROzR_QI2s~#aN;Pc-k7TxwPu1a z79&F=e+G?8t@<-H|01yQPPzIc=cQ0TMP%G&#KhB#MX?A@f?Hz*U&EAk3U=8gz+^D% z$%iuJW!%*rq2SCK1yAfc5KAfA^<&zi$#j^O&F1xiB>`HUmPC08rNS9b;*wtGoz^m* z-13|WSufs-=*&s2zF{re%v)3NRScZ#()#Ncquh1tr)uiY zC`y4*?MqP|Q6tP#vyWVX_0oW#E=1m-Q)wH5rOVzIx)swTD^uf!2FbaaBazop-A!sL zqzq!mwj6_*xRo7l0wqMV;%q3if`Mn)74p(3&pfLiVkxD;b-fN85z7StahKo7{lo%^ zK=mWO8;nadL6ep7(!B2#exW}V?Y<4nM_)WZMbq=3hU=uc>rr=!CPb}pq`qK5x*Alg z3r|#;;aQP?sl;t?N4`N@X$rj^O-Eb6-MeZNZwhgkLONEV)S%> z^4REvyhp*u9lOh%aQzIa{(@PnMK8q@{?+7~E0j>(t zPydA{p7uTUuK$Q&?|*6&xLJ7Ft$@lM(C`3=7(5hVvt8>(*59u6`fzD=y+~v<@ev?3 zKDKk`Ue;$+&!0CLMa>oV`g%a(+*t7xd3<+vA-_Qhih)^^6SZ-%5-o&52hMMnWMjoe zM?+Hw`d&>=T|ES`JC|ywjQ;*jK|g}$yagNUyJ+H!nk6 zA#@wwZ7rG6{mEgy`l&KjqJgYGdNw*)CT3#QH}#YD4cO>_rjT?keMi#C@u?+bgbmr# zw3Lp?cPwU32dbpdqv%2?#WB!<=t>BrU{re`S-issfdMap9`1mMW>}cMaGp;BV z&}F%&n|43uLP)h8QRqT!>b9V}Ems1-{!F^i50c^My0R~uc8~Z48>vLzq1y46a{<>y z9H%+&zBtTy$dO7yUtPDWB(BGs5I*qHV0p&x+3r~ca)|bJY=r8&>@ha&AQt}98rg0c*mKn9;9339S?mFfg7 zp$e1Hu^VLBOwuc57gI!rnmZTCNzKev6(bz(CrGg4&@@0|=R^6JZtUu2#^kvf=fJXP z;DE%j0xc7kLI)2{<|P`8tB}is@WU761bs@Sg&k13isEIn6^oRViHMNo(KVeI(q{x$ z7>a6FdiPe?zq&RbeDX3-py==Z#WUWCC%W1l`t+mcG5o?*$3ye+F_QqRq806^;fTND zJy*BO;z2I^($P*J1vYfLQFB|N+%J7-=UQb-o$uJa>118|^9H(;(y5L!yvHzTeo2l9 z{{?oigC`Ws`djKG0VYjuog!4~;5CS`0l{xEs2#KbJE==An4T z?NG1ZY96)u=D2)VUz!`^mJA4Vo3 zg``zj5v>Ymd9lccYgRs!WE%CS&cqm0ka-+&w>VZ%JoE8j4HJCKE}>$hm9qdY$<@Kv z@J&)7sD~O!{CMOoI%A8oIwpM+;R>h8?pL;~d+X^O(9 z{YUH2+ZZ%D%wM9Nj+25&;20h9zYE&GiJbp!(C$-V4PslC9u)s0Z2A8gwtu$`ots7e zvu%j|KiY=SgiXSM6tF0q;6Cv9Km%A5Az+0c7(Bq5PlXiuFIq(l{GX)NU(G`9ATmj~ zr#$&Nq&m$=;1XqWZc52Ua#nhJwyXx=$Q#x$*de#aV3IzjeroRQv9avq^)_N42(f7H zsch;uax-@dc~n-&{Ww^d|1m4Qz~1jlVE#WD-==BONhzLeHvO>uNl@fWE;sy^i!2-vG7^EAp2lgN%;s4=Tl^I&)8G(wf(Em5| zSTy(2|4)zoe@%}e>ck?4itu|M#sQ0Ck@5a)2^CDLVBnh`(!U|aIR2J}{2|3q1)zlW6caAq7@WQ^|N(eTx13$Xk zRo-xeO5B0VWz*q;@N1UzN;UWWI3&h$`n_5uSXGy)hvdif6R%8RlALx!(Kf&`JcOrW zk+pC>z^EhMGuku3b2ye~81O|{w?1JR^@)Z|L+n}r-knWJ zVd>}2$r>63M*x`(UVUbGH7J0oT$+riMOFq}>i0q$;t_pt7TcKrF5A0Ou@$2ztL!Rd zEloo|coMYsnN<+w!67g{q)9L! ze@IVM5wL$W{7LPgCZhpo5aDnD8VgHA!_r?pL6_<5F!`6d7|3GbLq(h-C07ZcTrE|l zR#8DkFQ_^98#Qw_klP;!42N*NGc51)qEiE>}EGs_c zJN$Ben3G}Z^y@Xi{pxCKf;*w9uI^h|;^0gD@ebwqgg9Cumi}*h@wD7Nz<8S0URt`A z*V5jFgJYUj`kq6Fr^?sPNRPE`OOma#_m=t$d`$Gh__*xY0Kp?WG4sOEJ%g|CVtdWA zSn#`r81GliH;-~RJSD!xa{+zd!$)LFHeRycuQ@9c#geV+R6I1l##x^Y1+DIxN8V}B z`0YIOU$a1`z^bZ_FR-#+1K=cM$hT8(rxkQL1P7t7_y}9Jdkbf zL3^SWheMcL%d|9>;ja*XMpD)5quJ9<*C%$f|3XvQ{58+2s_EQ$1^C20$s_NjZllPa zM2O>oKN1;rp0)rx((eoPZPI$0Kn1~FT^nT6PcekT&^UfAc9Sc>8=A$2`86e^_PI|G z4SEu{VO?PlDNGdJcLl@){u^Pqy$L7zS5tg5 z;yjIN@Q%YMCAoP`UjWK^3+i37h_?4R$BZFwk4#o=>>9cPR|)E-?82RP zSP)D1PokNc5o34{<3UXMMaWkd-xp|+Wm|Gc59W>Zl^&+c{2=RfJ}|@Y7T`J9*2Rlq zS?bo$SXpZ4dpC)MU>!obb5Ej^6-}vG0r~!x4yZG)4{u_&9e^A@_+NHl9cA|8Ax?+$ zduYyB^-~z+&*=?`%Tl>u9kAGxr*5YV{k;gsPCQ?sw!%B)s*E|yrecJfp*pe~e+US9 zi`xnJ^1)xLfNm}-u7_Oa<5k?O823BLj|Lztu>&JaMYMI%NM@NAy7DR@?vkEl5oQqU z;nEJ5rSV6d_yIro(WxisJ)#rtcHWj&?igkWZE)x&>xL!?kF9)z-vph5AddC4eXx?`HZ2mYwRIflbfIiB$wbIb+lw>1z)}i=tu8CohkU<@XR#V zN1XZP+ZX<|qFt~StRoBA)F+z&=cTm+z22#3i?PG-r!c!~2WQFpEvoIw)!F!A`(3^g za?7$~SEgLIF?V{W{!`9NTYa%wPmSa1w^MGw%hsa1-V6zUHLvz8Rvh$KR`uH}7apPc zU)=}n1PK*d=5=Qi`vJOV4b^)__P1pZ4v~7nAz^HNRy+9!I6O2rI5l|YkT_4h6P7zO z)#mIjHc$uzS-uGJdi|Qmd=NN1B4KB}pm;1U!H29HHt`}@<}HPsGVZWE3j9qUKfnQC zNb>?>C^g9=WD}|^1zEAZeRw1;^-wSb)xMu7^vD(Si*7+bhF_85V_+h!28W1qB_=D` z@58g)ntps5f{(z1v=JNv&YkF*w8X>MI|J>^1RmwgvcnSq4u!NWAVpi_su^5>{KEhW zX?KUu1qB*`V8A!d{_7AqDHM{N0Tck~03$m@oY!PWWy+jm9`6f342z4+E}M(U$I2N{ zaA*&rBKVruToiCoV$XGS}x_uhKx4IyH2$&YgXiO^FkW_$4&451kyao{vS_psPH)Ca&jO=v!vO>ZSwX#Xl6UTBbE#w+dZ!1 z$IqZ3!A^kaux00)QS8GjKOBpT&psQ~(F%xEi9VzW55~m-E7Z)Ic?1rRj2rG>n?LU8 z%XWl)v@=|ysjU4sI98YPeYVD`p75KE1@J9lvJ_tgZasdL-~z1j&A-w>ZqG*=z^Pia z>RdxCY(|g30c+Mr!GOlWuj_yO!TN+*SDRu3xZog-6uHRl%z?rYPuUR=Zsh$kEK}Be z^VjM#YdaX6kE{^fVAqj8%p+r;hxHK~waMcQz4e<55ID~_4!-6_a`wiU1nxl>bk0Q3 z2=MwoiEti@`>eIIYl-21UE{tDj)jBxyNeJnOUAHGX*0jK-73F{RCpmJk8Qv(+!hitq83Y(l?}Ng@i%Lf=k8tz8I~ToaJ&A8q9l1!E$aBZK-zqy=m8o znyb&~USeS)3Rhj_r{FioSI{L?0Ih0`n&Vs+kZzsEN<-;eWa|lz{sIujW_hhnFVibT zix)l~>~Bd=hfRtS-K!^Di9+bfm$Hzyf~}%hiBHmkW<-GLM=2mXA8yyT-xzxhTkeEe z4yw|T2JN)U!YzBQBh##D<_{PgUXIzrSMUIGyrpdt*gEd@MBSJrX+<+6!1!UH0-;VD z6y)uQB|)Xrt@x5r>&T>c1^1~-S*WiDrPX!OR>cDUd~4CbzA{cMZ{l+y-yZ+|8)1|M zuFY!^6KkTc7qW+5JbNSi+N2LbIh>?1afiYi&s!V=(Ou%$fPfd?yfn79O?V4VDI3vb zKX<`x6maByLx5>M{6lC3AObW`mb5%ZkrW}V<0eu^9im%mfb&`#CJVqP)@8S549BeA z@ts|No2@Ag7}`5>g&e6eM}PDR`Yb^78jv$6p!d7R!>@h^M^B|W?D`l@JC-djFKHGq zwy%01`sw5TJxQRZ`4Xt^9I}_i#CE7i(=Q*C-%Mrc+aAfw=cvFY-sly zUW~7jx1nC7tU3b~i4x!JW*gpKPOqj;l$gq$M0oaC^WP=h6mA9G%9az|d@%^^Cyj@W z$sZ7p*Qc%6h`!}~rS1~$R_++sO1G`vlw2Op zHE4&MD1W6udM-RkM(B6EfBo@m_hzQ6tE1^kQs6n_hFcu~TVnI_tx1#jM+d)X_?Aq4 zmn=`?^iF-l@%OHCN3Fv*7bh)>lp_?(KL(Qi866NVCue((I?fc_l80mYWL zsL*~I@Qb-zUemH%TmfhATGa<_ETcw65VuE@C=t(j){jEn=p>TrPI9sJiJfR(k#2VI zyVV@)v?@_zE}lMXBDUH4LKlaJXz9q8YoDcSy0OCCDgUII08$m3D3Wg32Wzyv2C5uVT?c3-YfI-i4T?7uXCt;YZGCKtZ{b@Ggo zT|hg(5lB5E-=6v>I&TK&>Fk;enM?)8K3`|xI>Z<(VsdVz|4tnP zxCXP&j}lQ*-aME4lEPI>&M9}thI}F%Otkaz!}?_c)(1x9YP)NLpRcpUTKD1Jtvyyg zpZwam(@9aup}7rewob|6#31qD-upnR=wm?1x03yPY->Ek*S+hOH}Kq^WxSf!X1lX7 zoqG6|w^FT(L*Ol{yGM@_A<;~pF;>VPz;nk7HvqY>8{Q8>!rLW3twCJk*f*(Z)JTvF z3+aLcuI&rK32GWVVjtm7 zh7|mkI+jG7g7{aCKv1kX^>D|zM(KdCw6HBQS7<`XPvW>mm~;C37T5VF`-U0=fV+Cp zFuxwA(q24AZ^u-(?a3TeU2rvZg7Y7EmW6)S-x~VN59e4-DStK`#AL{KodeNC2`7B2 zE%)NRnw_j(WTe+*?9f3cihMp1g$Wp|0E>h{7hMduEj&x1!XfPfYN}jH+-DbVn`@<( zpDNoHKWlGEF*n=H&n?WY`=bw%YY>nc))_-zpv&KzI&eJ4@6KcvMuN-5K5QuA;V0tD5Z_AK7fB(M<&qtBEq<@r zei?3HiJeKL4W|mWM_^f#-lN(t-sz+Lw0!Q!oVNVKpvfYFm_rOR{yf{*buA$_fwSou^}3mS#-HRm`*ay&BxTv^*e?m$Kf%w%1pG+S@Drn zbc>a#o~qGF^H23=YA)=E*C=o0vBp=sbq{+-`FMzJxwhJF+uR2BNdy$090^JOgl;f_ zC$>2{382e+!Q0Ub-z50_pvVNFM5=Qk(EVbea;7@VB}TjeQFB7(v6`CF&t8eZRB^$w z`N{3sTBU)Pr+m3%e-ChuC6%+TLgHzQ!p|dl^RK9EM%s&sGxx8704pVox?$H+<6OP~c}kuG|%nP`{`oJb%+=59>4)b%xs zrD7aM4!+a?nHMjvPr#rL)8l>nFZ^Fr4twP{U<51_th^iGF=Sk8y>shCOE&?hEkeJ-o{+(``Df!WSxcK~X1n&-%p6t37pf z&4BC5r8g$;%{To3&*!G_s(bzG#ntyfZF_(~2@FA`r?mBIc@4uVawEX~sEh7-Xj1(? zc%>EFaxi$K72>oT%9O+^tSuh(ROk}$j4YJg!uQ)`Eg&1bhl@Ap@T(UG!l`SAS9y?d zKk(_*33z%BzIu->yu9w7Qx5&qWeON*eR}1t1v?NmbuHa`d(!;mbF=;Q+WICoFn+bL zZVxgjdU-~l-qOCLk0|Svx6sGu|2(s_Nz!s$`RfMSn?ZN_K3dbpN!+4{ai*pz*l8DJ zY!!4>Pb3Tdzck-~j>8X3AfQByiH!P)o1}oA02|Ie;QGx=I8?wjqFQx7i0nJvD6ga+ zZKkbl$)L;8Pm#r3{ylT#eiFeB7I+cA82FC{KX zz@-6g+Js3Ubu?fdfJXd(*n6v}O1i8~7k78p#NFK?ad&t3#C0Qydjh#}*TfTdcTe2i z9TK-Dzv{26y8b%n?{RMW=G-tCV?#vjh&5NNHRpWahdTaK!Ce7+?7tQ2n0pQl^?>dw zFhl?(T2 z?j7IDy>|W%CPRZSb0_*97ZIbFF@uYWX5vICaV@UVr<68}XNk29YohM?UM<=`Eu59S zbgM)Z?!W#vKV-|TflDrXeOn{3m?>OnK7t15AxHR|1f?n^SkjcgV=YQ(k<+8Zj=^jN zYQXqF@peSL^}O!@rKb9s^$`@WS0ew^(FI+xByLu=8{e$Qj{!@ zz7)v~RABK-D(u{lNU`hAwROy9Ae2H`0%bUOO$^AaUNWb#Q4{rS1xI))B4bG$nFbCb z>56WzUkWMQ1=1|&X}l@2`jWt(jOd6;75W)-l^?p)VOo( z(AQw$+B+e2x{Y^`aFKmM4Z21EOdm;Yv6;Y6)0A2h?4juB5t!#Jp~N%cQ*!9Nx4=`n zz-2Cxq`>X~!YwR7yq_>1Qqbv*{}Z|$@yfh*EM__afyf=Hu@4T^^IlgcA@eiF{`?9+ zF6cq^Pq{vr?|ZrBa~~~xA*)dt!_>KF4ir&N#)sq*{BN1lKZ@|q{_&;(De&Qb=pPo3 ztmrNX2wUF5PwL>N5=kHh+bs|4W;W zt+8bewDyAe4@F4U|J`;P_?Q1nYZ)jN@X`w=0rUnK${1?9X9qK&Uy$Vlf%v*SB*GHKkW1&0+YT{9FdV{oMuy?vA}Tv z=8A(7K(Up7pbCV6W_RFB;8TbQKx{%-Awa^zxTDWGfBD9{xpdp@q`sd*8*-)YrTd^R z(}SU7RYA>8&RPD`>l|0-lAQ6gz3&dpg0UVFw6ROh7Orp_WH?1Y3bZr@o03Sd&_ynB z|1)xs+tUp%=u)gQpdf>U6lw5|d8{u0$><9L!kYx$FPJ5&ToRYV?ml#AL+WOGFovI* z=kokp51~ilTCsY4+?`hR~;Vp(mNeU|E51YP1qh~G8;hafhZ23X7pOM$avEG$2O zAa&PuTVPgHn2c4NcaqBCQbY)h7lb7R&@wLsijw|MSvch+*usnvvPv1K8En@qCFtnc z_HJLsSevWfvAQu5SSizllpN@faS08Co*b)MC|X97uhdW$?i+pE-)6~_oRO6A4nSrg zRO~?2+CGf;f>~HeBGFtyMx1iwLNjWrBcxwE8Ug+qL>0e5mSTq5N;aIRxi!pf??1g7I%RarG(rLf?5XX_tyfvod4r4OY{1xGP?6i1ENBwa5<9j*Z?a* zUIJxkd^0D2J6eYe%REV4TxnXRAJQXRs|+TRI>$;@9mDI=29qk_dl1?AQe>=~7l)plNxxBk=%tRHWGFvB0pL(2jv8Or` zQ|};+Qo9pVcfVsqnqX8=p!I3ZjU`+`kr(n?zBrqL7s7kDx8-BtrBoxvoIs+W^>El-O;naVpcML*_oPkogA6CJ$cio~974R_37nLaStQ?9LsEBzEcP6@lQ_M6*PYde;Dlm`@AHLJj@Ucmo2p)yKbS&gVR!^+0CFg$NP~VteDx zE_3m11_dxR=0K|3gDybq#1E0Qg9Ci|slH4;USz>V8tYu6bydvljc!97*7>ixyt>ze zCfJHWG}ILf*y$&V4J8(9anZo+I;Y|Fb7h(H6-1o&zmnrv>I1iB3 zDGxr`PHOX>x<012{Ei72Zx_6mBHDZ^9>s@dsG5LtYYy=7l0w~l``IW=1k|+b_P-7A z`B{YEG?PV?{AdAs5{)y}p5)Umcnq;QA;gq8T2?#TFdxv$=t$v<&YGavsbi3d3D^f| z!e`y&74*?R=l-aQ-YSEiUq9IgJo_iFy75a73ILPlVeZ(fw6_2OWxPbxY)rd?a;kye zQU>_oO@VhJ*Vj)c`ArA0kO&~pshK{Uo8Q~v5`e%#xAtAoYlqcz@FpyYZdReB%Yoc- zi0F&69G$K?g@nPm>n5{S-pe=lm0g6*J66O*pl0zE)T%2nbH{-l5@@B^qmkEYjla!# zb7bHQXyZT?juW8R05JC02*D)`J|D8wr`2@^c;Vh$cOQ)(y#0+oD$v+Oit1$h+;^aow7%h$8)l1Cnau@%*R%}5 z<^pxdhG<$xvX@I3+?!j1pi}J{=cA!R9P>y(I&gEyUnqZH?3@Ces;B+Jp7Jd89hv1^=YQLSf`3|vjKA*;8X_tWY(op2u zQpD!>vk_2cJUVW6+`CLV+y3ofHZo|ZIA-ui(cts|_`9I@$x=ojV+v0cif!jg-C|-| zK0DziPtd&{+67P0vsIluxz6%s7C*E@zoN5O6J~KU|7s-gnsA)QCz8943~BXyq8_xv zXdrmw9+)Iks4;{;EJ0QanncnY_$@eU>$)x zWhX_Hz46Q!++j_i8EUl!{NoqMP?XSwE*3e8MXao?eCwwL)dJ`NPGH`Rd zgGZ#*U%`1j3<6G@-wiew$C&S;xT7lsHUd|Cn75kRKaRc*PXLYcIU>AwasP&}Y3@U7 z8LR8J*;Uce)!$1__`_Rw1P~~bcW4c$r264^6@1eVs~YAtt-iM7eNR( zy+Xhw$$Jl{KKBLcvUlVI^bwtKVlyCO3)vzekkCUb&|Eg%<*SF(EeiDpO=O!uRxn`+ zza#iGrGPg&_=b7iLU$==wZd^5^kc#U2*`07I-A6pHLx>wl@*`3rjP$vdGLkTH) zHP(Y}S^9?wxuv4qoDj3n=GD1-70{fmBy6}oLU)_@OWZDK7@)mDaw1bBqN*ZX7Qt z!ObK*;Rfqz`k!OS+uI@%oLp=4aOt3LJvH@LXGicsn5w^|f;-s_1^5gvo%B3=PE@zn zVdB#npM^e^1e$uia&CHd%6Jm%qvPvxRtIJX{? zSHSaP6Bjf$ePj@1tX63I=Tkwcgc@2p&>LsI5-jdI)vvMj2tJK}{&>jUZS(b|VHkJw z&>WA_>C|{p!sI?sS22)$4SH;lCta*-OG!{`liFf&&ID;S^qLS80A36(8Dq%eB-j3y zvd=fccIxx-$+v4l3v|=K{P(M!F6R{nvCXE*>i4J9VUNwbqzkRpco>5E*Ujh0`fz-x zj(o)4bDI6G3fc`8))`c81>2Fp-U_R@uIVV_l?WcEl@SmA;|4_Ttj=4aRavla5V5%k zy5##^4D=fb%8wKPy#o!w%U5z%<;_cr#cndB3aK;q2w3Qom;N+_O|8m$tXT(`UImmt zkI~D8Jr>|PIkASRR*V7r@>9=&i$;;FLMxZHM?>f^yO6eM`Mp0LS zqX8_z=)ehNEI2}|_@8HPVUQTuYb_?=bUN;iHugvp3h+~Rod~Hf`)&*GN7NqAza>>2xRzDN42SV;D^&|NP6!8G^B&76OTQM*Xihy_REP&=)-HZM zJ`soy-e9oV5qPSnTotJ{RF{@`sk3E$op`XfGTzqVG_f%CP_y+1F1HFOCPZ-h&ru|^ z09N)AM5=DY87*2DquXbV53{|nOD{4NY5rVbs@lL^a4YUM+}M=Gj2UOXd>>TO^#j=L z^LRcS1CHXS+$qmrs7Hcjmngw=qwIeoT@rIXWoh{N2$ zPh8}_J@QWX+u8JH%n`GU%?q03Y4;w0N}MEHTuv(H%2Kp}GY9qD3oOS0atP}WKdI8_ zAHs`-+%~`#z{R&wp(po|ZF3%LyLb0lGN8esSZ{;_u z)Q;0NlZUyb>39~PD_{0gx3@xUd_Gs>f^QHiAZFbJEN|VntKd=`=-e0cJk9z52%q+E z;+CQb;q*(L>4;PeYCJH~Y#oPRuLj-j`44pKC3dQwf8qk474ov8n-r| zn^2R|l+Gv4T3o=MP%!9D%3#0(kkRH3!$W!wZ^Pv!`q3cs%O|eg^#0dSBkNIZjW_2` zP;0)_!sIWS#tEpuj@)!x%~(+^d)Vhon0|#g$TjuwZCow*gr|^IX2Q+0L9CRsKGdJ6 z)R;}M`XR%$`Da4QnPKIWp6rFdL1URLG^3Bqy}XMlo44a}6yxX00!9G+4>c=5MnU3; zRqFP>h#Ou=XeM62#j1HbG3L{|a0RWRniWAIn~u_!>n4WeuG2=;IJbWTF0a~ehTHZ7 zH1mOJLt=_#XM`_oed@2^er~zum54VTqQnNTsWKjlDi#E~!zt^WF|qac5`Fx$KP#aT zsgM;)3cOS3*kcQR>%{?F>T=_nr>t6DtG`bQ=wj#RvBaoxt+9qY;T}c%x7HrInX)Qf z)K=OJ{D9Oj3o$3eMr-U z08`0f`G=jpq3UPF&Kecm1Fo?mNlO0^!4@5PPD|ehZfL}6@>ydc-yd?HW0obqTxh>Q z`sL63QN*oFV6d4S`dDY@hHW`W>{bsYd7Vwc^wb5Pj$r4-<^n>pe$VrFN4 zf$L%>^qR+wnptf>YLP*hBpHg>Cg)bEpEs43u3FHBN^W!nkdXy#2f=BG7jE~UslXbYf1;Ma z5D)TU_%5vVi9WPCVt4x*EXY<@qL9&OO$0)X(}k)@`MxEp!L7{A8dD7eBE$nqs_Cov zbLK_HMI6(?Saa`W^W@Fg*hgY};x)!sNJ#Mlx1pzc2t<1OA!jk%YK13{MD`*;T=si# zp}=Ura}c~w5XID({iDAPH-Nb{zeQK8uD$ot z*bRMBuqZ%#7*oONb@I~>F#@0I^zxMDr13#b3aPjwD2L;&7V(vm!-nAJ{IVLf)n81^ zYG{(_bPjqPlq?#9kkg+*99%e=n@*~+3iW#wA6gu}b`s$Pd{JwGL zmdd6`RArj`FaAnM0kQRoJiCBgf2%iTnHs-a?>Ky2O^)0xj z6%0Kr4Jt%nb!SkvepO`lLOTCecOHXHgqf~wW7eQQj>ALdKLF^)2A)fe2JTWB0#EPN z=vchm=M;k>YZ5Q*44&%ZdV=Q{Ypq;CsRgq<-g5Ye4uv;^S!;?$07xwVw_+mQ@%Jb?*p za{sk=no~z$1$RH!_Cf(+#x$hjo5UnM_IMeu@9S4cz+{9i68Ajwe9073w7Si-nfbfx zM<;fFezbY zC~;plcLe~#*L>Ba%81<{+a1CR%~}FXVq9)FI4iw4j4|fZ27l`PDzZUVPN5d` zbvjIhjZS5GWJh}o1nP>%$lR*P??){ipcx<99{^Yd9b!es4CPAUrecz%zH*<~H|DqWB`~uztPMO4QyK}fU;hc8JZ)O-K5gPvKPRnG!ibDZg@|AUKdWSu$|NC&r zU^;+$v%@%6cI`Fbmm&6HO*CcHh^|sOZ@x;|WOPI<#Y`O?A}hXwfU;|Qyyc~RcXF6D zNk_I1DVF#3Z&T=ZIw9ctL(>{*UEVLE!HIL&%@Pl()+LC{aV*v3;fnShT|uFwAl!p! z*-k<|x{H0<;C@|0wdy!AV14tj)71~1$})gy5kH4V`*K-XzAPo)IHgjWJa%ZnjP!z4 zZ!Y$3S;A5SBRvJs@D3VCL|kBrG(vydh9bA@T~2oNgBrziP3FXVUNV0Pg0^<)XcD?U z|5oJCj_!lcpxN%v+h?ACUpSf_Kw*@g#l>?7#8+76mizd} zE_VDCAa&-xOGV#)75n;4dK5vM(&^fFuf3lq!LpO(T&71E*+(iXa)B&77j?gW&scE= zrY&WJGI}hYexLa1nE^F0Tji)9tq(ZLCPcz}Ia5pbZ@PRSp5ulxh2s7GgN>ni3x_B#bk#Q z`lB|v2MMwoh;AJZbc$!ZFzq=4zuE0e87d{NAZuA<^S;cbe0n?0e9gg(jBx;P>($)? zI~buh+MH#wh8g<1c-kr5v@4U%z?X;1U6;S}&eh_zPW@sf;-Au1@DU#v&0KVOOywMv zx{A9JZqqTWB=-DSu8}pd=FRQ4{Y(OfkYQ8o#-kKV=--q=x8kc@^4b=1^gtT6(Cu-D z{S}wr*Klrgc=A=^V0%3RjtK{L&|h4%bfYeSDw5@>cU*2d}UJD zt3F#M|CpgZQ3&sevRaYP&tyg&u?lPaA|#C56z30OihkdVSj*;R%ea5lQ9B8qJC5;5 znTt5*TN4Eu$k#`dzvEo|zRHI$yU%Rn=52B+xIwuV&OgLANB8Z z@2mJ%JaSt)x>~s>MV=>gYSr%ZS76@hH=z&kUUM*PI9s?4043%NT1X|r-=c8?o!!6n zP2qR&A0o-wzQR3c@EV+hxMWo-4atgX^`cq~NWx7#C4-e9Y51K+T1Q1j;T1{Vs(a%L zpg?7R+Da%L-;}teul7eLR)TTC=@I9)BF2Sc3{lM)w8y3HXdeuSNDUtWuAcZYi|8agWSJ59@qj|>&bA&+G30JFJD53FHOI$#4bGdm^a zfma`KhFb{JKqv(c{948MNDunWI-QkSfC&>p%+Eg{5`c;qtZsV#tpo{SiXc;N`DC~+ zBWlEsLoShT>$1BGVey5N@Uv|B1KAPnB?${IjKc8d1P~)bk2VBA!*WJP9E>nv@6o!DGoqjPtM(*916$s9z^L z3DPI;N!_Pr9@ZEf(f9gEr7cc5q{dtxoi^+WSxv@-o%#Nrdvf%x8Bf?~Hh+oO1lcaF zx;T8x7pudAeJk9w?60q-%;@@66V96pvDDy!&;S(?6dfV!-}L?Ywo^b4X*K8wn46ax zui@U3==gv3w1s5KfdPnYUO8h*S|p{$iqItYc`efk#E>!w2 zs|1i0Yf^^%Twp})zd_-=mXE;Enz?7m8>iYpJUEcWC|ll zH{2{T$E-HqL-Q{<;8Du>jz}NR#Fg{5A-33PLlro>$Ld5Jb0n{^Yf4FZ-l&8)Q#}nH zyPSb|Z;*;uESNst`0N9Bm|ly!%8<|<252IYd+l;k3K>A_+-cKm&lD`4xtjf=#dVF% z4N&LI2zAYJ6N1)5qwCTsNc0hf>YSAiY>_$;YetBkl?SD(JhFezm`H*`ei&S~)1%AF}j#r>T1%1B9EV#hGAo%CWw~gRVJJzIQl@$FpIe@qX~Zc!G~gh0pLYJ zC8>`=2v?$Ld~QtKY#%UFb`mbvIwlNgurvnUp2r_VwfD(P2sDYX7yimDhe4yh9<}4y z`Q<7ITT{Db6&(YMfM6v-PIJB1ZPX}-{vqp1d?n29M1W;FuS?50K>W3+fy+_%=u09s z89gN>eI-2lO_(EIsajYV87(gfGe9n_JK^_ z-+}Z?X;1eo|Ypb?;SBlpWL4}9ZfSU;jSiIHWsMp!7z~1`e=TBjd*4HV`-~~uYoy?l$^%&FzaZz* zh`i9$H`3iI)a~;B(Az5W5S_clBW$dV^Jz)VIxSSe51OqMwJDR;Golqc3#h}omT1)8 zL_34Fcw5VLr`G9l%&U;aC1)6nHm(;!*GC`M+94OM)yVK17`Cto(pDXN^+8{Zw?*2x zU<+$|!qO?7dy$9tsxJ*$%>hV)1yyE7$B9Dc{17@J34hF&P^u zH9K*yM%6urgB5)*nTEbG3VY_>M36CA_Uzf-!||lDGAu5l=sy+Wn+5pTx-Eoo9_S~Z zaRZd6l!gLLFT}flw9Bfu^BvrOTg4U!sa(g-*?dq+ZUL8?gRW~?^37o%5G+mEdw}i# zmC)i_-gMQ!VQ&a@@xFX5KDvg?S{Z@N5>tWSK9jH)_Cr6YX}U0Fdu z>8M3mrOVhcn=YVm9LD-7r=ftwR3Es}K>uDmfMxmWT$G)ksieIJQYmgoHrS8K_VdFwj5ccrTGr`)(&v)A*5PLjc}8%>F;rU>^LA& zdI=IU)IKl7GxBc>f7#*UL|K1DzJG*jkjY^{I}9GFiUxpM475CHUOK)+q2F_BPs&Z% zMlzHDyZgw%J!dZ@TQuvNWzO^0!Htk(8Hes1$a?3!eiXESj>DX=V=^nZ82fW(-p2){ zC<9-RfW)^k@y?<}pWO}FehZ05CMM$bIW~<#t`DCYyT`R~zmo*QmGIjN8C@1{DvSoo zc@_2nz@L+Azi$Ua_guW?BrpprSf5abWV3<~P{Z-$NV72A!!zr>F+RGm> z0i;#jv^?SdHXB8nj5|~Jw*BdH?tHz3L z3@ws0tc4(DiB(S@V4J{Q$)ee>9f)?jt=cqvZsaZ{SZ;IDMEEIKqI8_%QrtJDwOP{tzC$_iIf!|bJ2^hxdGru0T zCq`8NnHNuhug1uBcQTezbgOx^v943M9gOLl(!(!2jp4#K970Lz7@3t?kKuPXp^A8- zxz4HdV9GZ7IA=Sbcw(ylc6R9yhMiLLuQG{0U3Jo1*h8ToM$fG;YjEzm# z)b#-$NFa<37LkQnK(ItSHx4GIJ7>Cn@<3B#3t4g+EfgBD#_3vW>yoUc1@LjWI@1jxX_aHphw_z9q$%RpV%P#?xwSA`63U(xMkO87B*-2f3dwW3m2vapV~2eB7t#wY&fmf|nzsos+)&Rq9T~_hR&EO#t6=e=YpWVkFzf zX7&kiC*3kz0uTv7u(4*D0Q5{?TLL(?egBm0P5cmI#5z-I_A}{oQf4`qH5Ah)IV$o( zzIg}*@!5^^JoJr=IEYHeF66t)-VOjfe*UjmeR7`_F|8NQO@6~`S^0z*k}r_H;ETPV zzm7p>E7g(=w^GGMBfc)R6wKraE%{1KjkL-mz+GS|lnGy{mOyQn3Z{z~*-@jLF zPumJ@Zw*4p6y-}*I6tk=GP;PIh7e;k zB9m#i=pPLkH#9V!K|P^3eEkcf4dm>RLjQY@qXaOh>4P}<2UfpE$8skM95q3rmilNL z{1?6jYdtHc^52-90PPKp>R~Wz6hlQtAub^bj$*Bi;la5{38AJsS{5cIj`g8FQ6?HH z4yF)ePoT35IDrZ!D;u*Dv+#Bz>aZQo22=?p{Lm(3O{Q={nhr)%wxP*j*OXD*(WmYH zlwA6F$SvVC!th*Jm~<=#NR8)Sy8O*;;XD6$9L5tPe^6XvkUw3qz+4tsF0eK*U_L7iZf%J0!bj~w~K`n(D=sk@{|Ci$C)fKOFA8191Nb_GA3jb}l=D*XBf$)ql^Z-sa zu`!dcCT1YpA25+ia9n;8PUeW+kGjs@0dVod4t~+JCESzc4^PA&C*A^ldv$g@+7nzx zKD3#@!kZ-C0`jA)QSTTB32a|D*b>AVi$udX00J4I8r=TlZn~rNou{?#Y%a;T6qg98 zC^$>BZw-c`s${`$rSRjFm{jSe6Xb`@ahiVB1A8G{u=@#(M z`*}kxhcAQ@{0#&frR>L#mZlb-(5J6mw*fDOf8ETK^rX}@O|Tg#G)YB99N-)yEDJ!c zG~oZa8*||Qr5lqCl(xZKSSFFtCk2@cN0ylSq1!1O)Q0TG3jSTy?L=^-dUJr(zr}`R z=p9hzqlC2$`S%+QV8Lp^#m2$LvZglq;lGKI)quL9L!-uI;M!e+?QtzjGmuta5*TDn zftja5ow&B-YUWXUdOEQG4Z<58E=wZr4bq_Pa9$|quwPcuyVQh9z-O8(J+qDl6|y@x zj=zJ8X~Sn@G@bNjbQHdjuW5u}n?s$vT3;_WRE12QB3=0xV9D2kGkbz&$#wtNF3j=r zQD4-RYQT2%Rir*wNxvpmRR7RzQ9nVj_ack@?~QaFb+yWp?|H`-M%p8t^BZrnt*pUQ z6F8zfB|h2YV(j|?H*iiWeNO#ld){kIB(u{{&48>#nY`!VrdD6RvLku#s`w2-RKX2> z7)W>%`3%TNK2_IfULxYVXQ70yhKjF4lAThRX&Kj%` zXprsweMbitj;~{wYbhotNOyfEJcImZn8(>v=u2ubzTR7OXyBS!bdW?dfE%0}v~sC$5UHjVKraA`bRSaG?WmFn@!gP2@D`^g zuO})#8%*)|dl;fc8tBEG0wKKw+xVI&;@!# zhs6dc{uyN1R^qy}Qm46)(-O2LDQjk`bci+|9zr--XM$J4p36}t4r(2{{3 zj5N@+@vg0zYwN5ytbf}70$cc{{pIKvFTm)4qO? zwx?A}jhH}`GCJSD&}L3}?nw)a88`FqmSY6J-vF8VVzp)!wx*Y>qP)mdyqxMi zAs65ec;7*Nc!3-!GkV9F@DOGK)nPSslS^Aw}rPoh+50 zw^o}7V7*{7`)n6F9=|_aSS}Fc3&2;<{L~E1q|?Ub86Wkae)NH^9sxJ`jAZfnn?l=! z5k{!M-~(LU<|HVk(=CUxtuk>GFb2(oX* zAFYNB?J3?IEvW0@jl!Akm2QQ?YWMuh!cFj*&{`-lwYr{gHTyH21*PE8FF=wsAz6fp zcRz{%c$+r96xeZIKxMnOgBAX+;c_T>pLmhua+hII^vc~Es&cn&#@9YfOIvwp? zO1wR=Gssx#%&#WejuKE3=R9gS$I*0f;aEI^QTz|&JcJ5%B3O*H@vyKo&wo!v7x$_<;l@{%??g!1i2-f6%;W z%*%IyD&qf1GxYDw=np0)HV}>zo*8&@28jZ^5r@el%22Xrs_pC%)cfU&A zUpzKZrO!~_(iL=yU|=O>%M z%RmwW1cZU)?==(~8=En=IWzm2_M|PoBnHunOd4+mdSl>r6iNgk8XCj51#9axD^ndA zFpjTHpPZ_CT6;M z)`>G2SFp0v|7B6ihC7k)=!{HRma_5!FMz0u!=BZ!I%P+(L*I$OW?DK<-Y2!(Liuxp zh^%7aFMryzf?pKyPqJ-EPli{(cT=AmOwrJ9A8D~>_nx@`$>-AfU{@j;z}8liN>UF9w0G)9mcXHFh;DP6rn#U#o3eo zetm(7iEMg;s>26ifOgrE{7@-;HpVq8%YIdRS&8t%>56tq1U4ktG|~N#)5USkKBbpt z=+`J?X%nJuWFYSY!)O47D{c=6)mhD)kd68(7nS0j`Gr~cvbn$9+dS`Knkw0{dC*SL zxyXPI9PlbzV$YlP`9?LPIdFE3?q}hN(5@2g-WMdzobHM32EwQEb)+8)@nmN|SuyHv zqQ(#ikLU2`nS6ptM_o1!3ZeSAdr`02EO0z$Z=+_TB2+3ktjl`W1b$&@{4%yc0WUjg z3Cx3PVMKgG@Ms?OHIxqq8PB~l#<`U}Qzs!B;{f3GC5bZ(8lkZHi~~hd>D3r9N^$v| z3(_f-`;nkd#m4uM5=(ICv34C$qL$cQ!72_Fs_vm;uIs`NVyb0Dlw=tdnrG#_#9LxV zjA5@Wu?x-xRkCk6Lh~3px_t`Il6v)IC6t2&Nw(3bYdb9G`MxelJr2U{#l=%5U7*{B zAOkiK_2G#`y6f>TYPd0vE(M|HwGxpo8d)zc+$Fsv*kahX{5rMhe)~p4jqNy@Oql(& zm-OSVJ1D3V_2ZtxRnaN*2T#s&JmyMs`2JKZnN56bYW-elXAOgcC z!!4JUFI~Gc)uBe?K@<8~&`#(V`BK6|g@3gJ z{x8!2Dc{@Cwl%3ZmYj3tUtfPWA!)@+l{dd)T4hdMJLHeE(@*C3$!%`qf66Gh5xuWyMs; zNM%YJ^woc0NBk_YQ~_CZ{luXDDM~Eug6r#NXSYhKPfy)qfKP|Q7Y@jA5uJNDfa`IC z=#+Nk7c%Blt67qBz6D>6TMCD4mbeXfdM<>_b!U()q7!IsZLH&<(N18gnu{awu9 zD>DxfM%LO@0g}E%^k*L0*$aA=)W2ZK4!RZs5E(uX={@4BBS!gp?e(1QuIy(bhHcl% z2hX%3P1Zw^CxW-`6BRO~3_e|P*sr~(3}6cuTpeoRF@dbF1uppSyi~|(FbeR;T(k=% zPv5ks_ndUbUOuHWksW9VEV6wmz3QLY58ENO#Ivjv1PsQlylk|zkYs5~t=V)z=XApI ze+{YrEGHfIv0T+90~;&kC}7pUH@n0)YCH;>!0>2*ywrDqe?@-(qd5nb*^6bWrfMxY~((!kXpccu~hLecWY5 z7L}hUAHb>?Ki~@iAFgJaQ7ax{!js2!FC@l}n0JH2vfnI&JVNw{fbFh=*)Jfp6vTcB zGn1;o)5yZn*A6)`M-ef<>G?#~*LH%LY@a`W zA<><|Ad`4U#4A^0zVfuMsc7-Bl_KFd~ zRP@n=4uyzo$w*tdOeFw$yFE39K$Tm}FTxohx}@XZWUYNZJ#zZ$EANu7T6rC9idOEN z$gG+Kl5*EjB0w+w#?;P55sxk%lr}yG|IS($gofwwGo0RM$dGd_8>R@Vk zkCWf~U0dPh2W}DNUu~#|gK_DAFdK;fX@mLCf&72E!TbcIEF1t@emCpG4++IQ`HK}n z^-sqM-S1!pwXCBUhc@rpaDjy=;Js)TP*6xvQogJvfSO*YlFuoqd6d*boqfnSTYrIc zX(OE!wLPEZ)ZBzU(2;PCV1 zvV&n5jqH8{>8ps{dmg5BgK*<21aCC@P$N2+E||qXlIs-vMLh&X2wwfQ;0Mm3%DR3R>(ns9M4;ouK|v= zt-}qZC>VW$53GPhuaA^&`YPlc!L7V__jk)jP}c&7_j!$-~}dq$J^(phd28>**Z%+aZWOCgUPk_uh0Gl!xn;mZpKx2cUhJm z+MVk$MpJ;92d~Xau}O)P3;J2QYM`+IxRU&-6hitZf+rOcR%jg0&bB2pqgVeuH>nJ0 zdY@#4(QP#0;Z<7*3q@Tq-Gk-$WaP(v-qrO8)iib<{6!QVh)XZ=UroY6WL}?+GD;Eo#V=WkQ zu{G6;ESkj)pJ;_Ovcx6sfb!tRZjM*X*whb84!pVj57yo~D$2Ht8)X<^=v%Eu-DqWxZ%TZD3sza$H;Y ztl}X6zXR&Oa#X6hIsb&({+&p&|AH$LWuT9(Oa2ABvcmUXWv+f@wgD5s*Ajse+TI5X zAVH5gvuHC5#!!nC#sheWG^Bb*PWZ;hb?er?GaAOD~Qa zy`dN7w<(eb5|bX1J`pHT)_h-=lUw&oUCFk+6tXrrXJ;L6DJX_P)Vg>HR8_R@eT=m^BQ8j z;lw0j^WITkWM6Gs6Ha?#K{y2|O8wfm6^7+*0WW>ug@zhM$cafGE&CFSaYa+kFGhOs z-rElmP(7?Ka(Y^u9jS)3TED$g-{3vB>vcH`bt>K{nwaPw5p#Q@Az9jIp%~UNfbv8b zv4@u^&wTos8T6T8Lgr`Py2g)@AAs=Y{;rqf*-sM;wNRf(juH*y;Z-KX+r1>mkE}~) zCw5o-!c~M?$PzXJeUfOI{MAH-~XnRWkSbn=kFBRc{xr}9=v{7veR)iC4mDCn;(BY{d7T9{&OA9VG`A8 z(qNh(6|=} zmiqSARlG<49I|W1e*@U@dE$%D52)&%CkA)!y*4`A`Elia|MvJgjp9C3xI$!;Ph8Ud z#^}rc7hb>YRt*-p4Knv~IB%Zo zRJ_7*zlou}<-eXk-fP(ncrmp6t`ako?Mt<7sQriU$6>h#H3^-KMU7{ot{!{OW4pf+ zHFYwIukvr44$cPftz34!!|ejM9M;S{}Cecp$4)(3SuO`)#dlv&`Ruea*Hx+j*dx=O~h&m{B);aw&tO_#9C5b>k@dzZ%q#*H0$mrc>aDa^* zd)X6td_~XJ>J+=HdxzN`F-mk*ab3Z_;Jni4Pbf*T=wVQoGG&B#OL;X6q6|6Pq(^FW zhJemYb~#i?c3*~x01?B2?p?$#gzN#CXjvN9Fd<(6pH935EPTGNB1;-$s&n*#rt5GC zVNC=65U+fH?mTV8?BiET z9kVL8&c?y65X5ZlYlcm%?E20&YStF>FNgQt5G|rhdXx)12|{O9{<|Cqo(7Ca3zo)X zmqS8MJa#}#VU0oBKR!BgJ=D~24LeSIZE$UHl%^P`A;zs4jvF4!!?F~q#CjC#qH(A} z9CRNj#73sH8fro13P%Yu^}z{q@Ui;@Pf|x+g~ueU8SZy*sJKl`OuEgLCR0b;#~p(h zijIw@^;$Fho2KTKPbkZ5)4*yfSm|Zy=kFkF3_REI7iLsSm~?K^o`k8<_RM{_iK;cW zJ8^J#wE#RlMxv!FXuiR4`eu|Xt#P7wP``sVyX`C?0D!uusj2&s+6F>DH(k8|`isE= zP*{px=BFS_7wmrY_hctLK3poaEd=4aD; zl3qQS^?1zI3?>g<{G*SLVeaM&Kmyqf^sOkd5~# z35Z0NF&Ia%K`KF)>`6!01<{cCc1>NSHwCx>&3f>7KjY^HIQ#^F_Tv9TE>!?1a)&1d zj7rd=;it-~cT3Pzf3>7QX&MF|P>YK3>$_@;d{hE3mQjDxb zA4eV{kPmc|ohi*S-Pn%?Y?~utLF9aa?IylmoW7Rp1|he6Yc4ypyjvYt%-2VaA;M}f$xhTk z^di-5?)1ld&o2!&KgMP;o%+J!xn-N!DbBMdJIq@yUIduYF10ZpEwe)hW;z2!=yokQ zaWc^^MCYH6!Gsf-JhQ2Hx(SD8b4c|x2gNiw%VDBuXJ-q?M`u%S3moRs_)`EXUzH}K z`jo=4C<>RFW#MZha`*6tN4!8aG~5m49%#O?zJ(qhT^v zfi#`EQZaFMo)5t0#rS0M%f@BjqWP!bfMCxrK`(Th;W5M-gN`jQ#1r&&U*Vzm7SJpA z<|R1o^2J9zYdP|lCFpC=9o2s$`Q{Z8L6GoL7<{&DlqzlX%_EgyJpGu!a8y`fNBAcy zg-?>WwJG|aANTS|FADt0LEK%x0Bj2x9-!&{pT}&fcC{ba7yeycbN+o&1Lpm~ywy%3 zNNS*;)x9f3lcNHw?zey7nF2!m{G9v(g8vtIW*^;5QOh@?J)`8* z%X!Lp;Y5B!lxKo*-R|CNedKPngTfCxVmx(~UWh!0e*Q{ZHQKCMWHkKY*lH>BNs-;L z-Ohj;O1n$t)kX`Y&9MWq*H|@5+_l^8XQ}$R=2T6m5nqQ1MqPv@kTvlY)+~BXAPLEc z9iKnN<+?bwSN?{^aMJrrTAz;_c=~p?>^Bp}J@u$kyFI1F8h&-t5EZPWml9;Ep~PA^ z$(6B<&~gH<$rQ^IYZ6Mmoz7Rb`QW>X1`GOWRVZPu!BL6V>7{zrmOV?Y4VN=N#aTyQ zT$wsIT6zA7H}l13mr0F_wbN5^N}s_&lRC5$EK@JEBf`v;#iqRy#cyyT^4Qu_=8N+& zh;N!P&Ki)%A0suFaug_UkL0Jq(a(-``3b^9^+7NQQ~nkHIYS|P?(#hY!55744fcy$ z1+L*J(k^C!uyO5zSxEL?2)Sl7o+%Co6Krj>E*cENq)&@6i+RiR?t0l6zin+iyZN~$ z!I)`fePJ?=lR1x5o)Or^tR`^@k7anhUCHW@Z?~tz)T5%J>(%4VvPuis=H~2V2|i?~ zDjY}hs_7AXa>6c}zDh0$Hc8^XqIJvtJT-xGjx>_`=Y|g${91fTi_eh>G{R8_-zPYH z<-?CQZ96)DkD6epdhw3C%e9wDAQ9y;0k)&dmB_(z^s+}&3C5F}b6U2QXf0(xnSwDs zaN*)&#rA&tU((_4N_ZNIz(8sVE4@FVbW;mcE-N8^?mtSedBzfPW44Bx)B+JP?&zTb ztDPaXmW^{Rkv3DjEw`<8H&v3Y`^S=Hu8~*9l66miRo*FyXq?3t+i&xM^MPP0#x(D> z*K4UlJdl|my#rbNIqaBLAB3D=7d?b3<@#GI)W6r->hJI_*VEqoK6zb)8#Wesuoh`p zvRM88m|~EQf2;acF~a6G=84y4lyFHu3`>74y61qt57|ZPYvRAFzWxU%L(r0utZZ)C zN`e=5eq!00D;b*^*DId7lIwL5Lr7tRfr@*G^0QMLe-&a;|hWch+>my znwO?lSlwdG3<#bk9N^JlOr9)F-2)w|cUo+h*bNwN`pa0AECnu39 zjLgVMgsz9#Vb_A&w;?g;LQ}MuoU)lho(p`ujPX548)`|jZL)#FByE@b{MH9LtOdDn zMF>$@NO8}65QR-2V@F$uq_CHKLRV-B*9$LP;+bl+yFlLtk=zWPs4qO^Q@Bttc z(;T!1T!vzXBiwx_pyUe{KJcX;3m4-~|1RmFO5zPGbqXN*IXu0}-<#h5Lk;|$?w!7p zX|}76yMc+Xo~g2CTn&r0i<1@bZH0y4AgL3EJc&?42Xi)HsP)@Y`xCXf`N=#}^Y#v< z089Iey^jkaGWRQ!APfN8x=~}Y7b*1h!ZsONS>JN`SkGf%-6`Z5qB@K=Wiq*>$G)!nnyB5T8b7 z1nLaXrJ*D3q7tc1gH3yWBw45}28|iMSx6!8d_2U|j4`kuPTVQwZ>?YS-wZyze+r9p zN8j~1Gp_eqTVx0gxQOqrl5lk(zQ}-lh(d=M4zvjPWuqP>-l+9V4 z!;$Y(E89tMJ&0k5ISk|BKIA_1K_pZnLIbm6yc9GQyw4@T%)?iVFoR?P_w5~4&bg^) zn8vUREXkd_m-96^lnj|4G4LLkhL5WmBcPp1ijCbKp0^c~eg%Qk1Q7$+Vn?O;iBAsY zduF)+EZh)g$$!nroPSs!e#!~|j-u|nx`LOkmSfu@M&h%tMC{`UQbT06nKq|Y3`^XiZ zYY2Ysr`=#XD2@TCyouaK5-!FHw8#)c4Ny^_)3A#MX~*l zPuCOr~V@aDFw!GREZ90}kYY}`9uIP85h^xqbczDn%xT9D# zJzeem>8+R09LgHI)yr48h?FNtIvfINMrYIKMfF48KRyobeAqtPxqWT~6_0S_C`)UG z`DjcT`RWjOF8E_c;TPlkvPUdpYVllOa}V<=R;+o_#HWtm^1qc^}s)kh8 zl4MmH?`9^6b&|TSS*YH6eVM&Dd85;D!qLvKaIDK3L)c~|Qdwt%S%ILXvj2{ZF(I1;mCi?nCr+2jaQ=G1r_g(`Od4r#BZoU%QK!xzyykTH77*;l=UXEs= zMwFbwrcnz>LLs2oXK^mvhX)bOn=djQAOGdyc?t^khd^Ht5hV8c;<*Zu4 zzbi$T#^Y`(VfuAs1jJC{hyQoy1G24#?-K-6-z&ei<-S;jL{T&YRq!}tGAt_`q@y37 zoB&p!v()9I_InKXK1-06rlV`l&^RP=2u zbOg1&qAyh|@p~pZLYSyF(lZRChcO>mJA}j;8M)|j4BUk-H{a$k`cXWEM?;Bm&b6eM z4YfVz#FOQe!is-?Z-X@FaS|xjBGa=sJUrI4=Se0pf|9R-1Ie>xE;)SHuUznna2Ozz z%yzYYMd zzX#3#{g`up9)-f*^@vU3E)RaMTWOF9g$+$br4M%42!swPDp?UH01MTK74TlCtv1wotK{^5 z{W^Ez&1Ae1Ky}KF=v{ep{ba-_y*KabhgJ0|#~W?gSBT^YpQ96vUk=aL>bk5}^w;%% zR}`-wQeUb_-(3H+zqA$L(0%b3OvVE=3%BGkwgnP*i2nzT@7 zXBM5<(qniaQt@$+lXxeB;LF+K8}lfM+j`kTQ8S+$>7PhdUE8#lZss987Y~?D3O6oN z)8`<_gyKexf`z_-z|%HKsGx+2*KczO(M-%sObqIk@eGR1|Ls(nl?jeezoE&mNLQS% zG@lM^P-Y3Q$WwoZOO`T77>aV5EA}dc;SL{|GK5Ru^(^I~M6Etx~^wzmvD18vFo_p`DOumVhA zOkxllAPL4K6&E3T!iC0bClRJ?LJ46W;CQ4oz*^A8Thly?pFf%aDxfx%LXjQ8mTiam zmH%up*!SpZaljna!pZY_Figu=T(~GrI~cGYL~2a){dX z+)+Ip|C(G}~QA%Tt@$)fv~x zFs0R{yY@majy_7|LEY$e=L}wl$_~{Xy-ctF5xskcjB^K`~vULFGM#AGaOV z_Wreay}kUtn!YTBRf9UI$?GI!8hq*&lf?pYZwD;^6_K>fm#R~p_pJ5K!V-f&ofubN z@EUCio-LXVqeB^P_;iNf8aWb18VINtoUc=%gzmgIN}u~!eQ03bsCo3T?0yl4(+9T> zV@C*&SND9z4#*O;o59titqgK zzA>&*9ynM-kC=-MIt`$CbB&2FItqi!2BM>Cc3zcpcJS3kEq!qt4Mcxj)b!+&+r^X} zh10lK1L;w9Rl|Hiq|e93cG34eJfy?9n3P|?>Q+sbYJazUGuMIk+Mq+y-mn*nLNVTO zv5z{e$9(w?>BRBHEz7iboro3AQ=SzMS@Y&LRZ`}!dQgEPKV|j}$8A?GZ*|WRnDC=Q zsYd6$x0UaM)`jxVESfIfXc=iQJUq|SH$-o#Ubz0#?I@O z_GN;lP+ztH`+i?q%=5GF$oF@{_KJpm~$FSo=i_2$H9& zex&rFce;smIB$uR+yrMu3fM=@wv7^R2gr)u`s!&x=@;8k) ztsitgQI%7TuDrgkS8=OF)n9SjRps*|+C83m`gD{9?btNp^-Zm?WpMk2$SX%+bS+qS zy`Lb&?zPeAYkRB4hk3&Kp-(KU1Nu&fG0QGR@~AXenJ(x{S4M?vLpd0bFDfYP3_d~M zDeo;nDWJD?P7!Z4-$nBVcvu)si(AjOkQ}%S{1~`rXm6~lBgE;gN9;VaAwB0isPMJ} z!2O}r=xCc#%H6s=uhJdKAP)_Lrz?K&Mer-3t_m`IIFgP@k_p6u4Bl3Sx@u6F^=mJf zP`*S;8bR;b9=KG|PS4C%CDh4G-cH@h3{&?VknDhtt1Y>hxoADAB>%Gov-F9dFcE7< zEa=V^3Y87u&C-qkB49Myz1S#ik*u}^{)9$1*5j#&9?E%P*6ngp_j zbVMurSdC}l?*b^6nD>6R`l@<~3vra))X)!8AE>>lDMvC1@Rh#I5D-0e9}Xk>nq4wv zL^vwXT}#nLcQ0=HOSZO}sOKR~J#v*%fRU&^f#?MUIsJ$sy*=(sC3ZsD9YX^F3-e`C z_p-pDD9@qQ>eI^mXac5ZvR`eD94l*dJ~FL5 zI80}sIDQzee(O=AeqCiQOXMPO{5gCVFz!R`uZ(s-x>}s+T3XX~tI;~&&xEIRil%uE zckyB90r*%jVBlG%P$G`4uKfti8|bTiHpwIdR%yO83X$icUav{jYm4>oh?VHxhU%MS z@Os%J@nWpSI^gfw+U&%YfS_CgrOIhKgvCAG%2Q)C5Br8XyeAt1EYU;vEH^#c1VZu9 z!`tqU(?}7oq*is8JZcP)jO(s`)OK7V@9#Luq9XA$yV@>AFe&9F?&gdidKVj;y?c$* zD)-QA4!px;O?!FQA=87~L>L;C`Lu?-{hUf>(J$36@A+r`cG5+K5%g7zEt%C};SEd5 zht4drIa?T$-55Von}|X#LCor8m?e5arROLWbIH75R@+_6p8xt4G45jyZo z-=rXHSTFno1&vH?MFNaM5t;wZp#O%EBCM_tMO69^CpLhCLI1O6S2(7#0FqwF@5a+V z>9GH;1^u~mY?*A!Ou-isl*YdC)H9eYL%?Z<5U95ZeKTQ?Rg zpE1>80y33s)8cU=m#}dx0YZ{ou)j-$2q$W4A+)tfH^;?pGoLt;}|xYk6RV`lE5!BCkojZHmHZE7odIQt6RZq}W4UwsDoO+AC|l z%T*{7@H-LkEX(|$FxdJ&yT7mR!-PZOmZpHj^B{a2HT7BlD;n~2-uDuHfd(LJLDvRJ z1I{hzjDR*w-U-qH>@%?hei9_ZBaYjT{zj0P3R&>+^I7o2=)Z87;5*}&;G2j@#=kJr zB-XLEMt9^3b^g$z0@g2-`XNI%XPlb=vSOo;`|*#*dtbz0if?++OOn@d7L&Y{9@wJ) zwNTe3wW_SWyzC+!f(svi-U)qB{iTg>Qji}OL0>tVPsRH|`<>3r)EsM;)+a#Ra1vD1 z!1i%1nBBB&Y_mZv|9CRdl@xudgzXhVxXs8Ky8o@Wed!YR^BIu`_@#nBqMh5Z2FFt%3wSaZ?TR_io)&H%}uBD z-Z@D`b@L5Q;jYgt9IqGo6WGFB%#yc=>Xl;mC@IUCxM~pR08niYwJ;|Ai_njeJ$GDR zC~F8~3Eo%H&+(NHp>Ld8H^UgP=3C?;JT)9!XYbv9aGJ`iq;j>=WHc~5Ekt-jOZtq4 z99QO}`q8H-OY?!82%DeGh$@JK?8Ni{%08(=jQY6aTU1EI_EB#6 z!duP!iF05;#pnwr6^`VBM3KPj5FHIgRG2l|=_^KjlxYk4`4`kx!$BA`!sODM&zVT_ zn1Iu0?aY0-o2q-m$CRjSFZ`h%3uQqvJK#C1`w4w)jAJmFwDB)P!X27cFmlKNQxZer zMq#WR3M}WG(?du|z+Aw}3dW4sjY!}REc#Vx#Z(dz%0LQWHMiqfT4OWjmnlVb|CM@R zAa{zA+rtB%KBX!QsSTLR;K9RFjpj{7kDWl(`6N2Laxx;EW;Doy0lM>n^MRyPA(88w z;n{S)oO`RG8y%qXlhANaLCGSF5vcu(N&Pe{n1YQgrI(LZe{6G?qtI7-Fo6%51~@Y- zsl8Ro;#)WEuo2vBe#%9i*t_p*V%}2Vf9>CPfJM7>`(zb62|noocTy^~E1i^uFz#%P z^byC=AZ$PMQ{s*_Pr{E0=H4@q0l4k3N$GHeZcsGMX9r@&8J5ezSzB0A3Us`m?}VC4 zOJSLOer5_7E?0e=m+tO9>1gZ?17D&07tf2FUw>fDe3k1wt$i{D2pCgI^zF{qq25fD zG-9}+3}KX1NReZ+mBfapLPTjOqr8%Yrvui)eO|0kW6??)F52aJV$w!GkX~(D8h=xv z^l8QN{sG&#;WwC_Ko|soq3r!M4F&!p52_JpRkqEIRE*>JSZK_Yq~&U)rJfLUvn1l& z0}=SCJknlX(@@zuuhyb78_(i?qScNu&PJqtNoU}Z=>A+wKB^Fo=e10rPDVeS!#li{ z@+T*ujIrh%-|D_AoLuB{*VFK!YUmY@=O^oV+N_N9biSJD(i60lvsXuKr|KQl zvE&>qB5_qtbJYgzXE!y{sCp|7B;(b_$eQ%Mc|j^Gl0WdgV68p-TOyUX=!V_ZKT1&Z zLqI&RV2tq_r9{P_cgjyHMAQ_XyV}qM<1Of?sjYk$%S98Qq{05pmG)1Mjj1a#1CY^( zgbk$8U<)9IG>Cq*2O8n$xs1x)tw6hRq^eaXW4 z2Cm?`WiQ~H2^Q|sT%IF>W;nTbe=$SS$up@D({VFi(7J$H-OZBO~BqppvTm>Kh}Le89k$0di5+_Y@HdqNpgdS4M`m@rOCPD`KsgBK?CluIJ8B8S2N zDhJRXqJ;4J8^E)?eWPe)!G->q)RzV;=qo6HUWSELvI!JUEd9j^W4g*c>C2^w-Pg9A z7{dU<1Wb=sV2=d>Uud&4XW`RxN!(LW1`Kz48giUZGK8(qa#0$HAq4CBfr4&ac6o~b z_|O8IQ6~3+3luvN9L?Z#K^O_=gG|M69qD8f^}% z;VZk8AuBWcb{m#T`7L@i#)%0xQ&>2TqZC2>d~+i;!GC;d(xz#re6z&~9 ze=kae9=-Q6=>z=5Tmr}7Ir;#jYlEL|tmO~m&bg~z0x|!XRoQi7yOZIiMYk*U8fZD3 z994N-VWd_DJ7K?|6v1@Tw~XBv6R;Qy@C8!{pP*yYPLRL?!&jXTC<5J=sH=4W zZ&ZDQ9%l2ZS7gamo@l4$8_$Xa0+o58u7gVChVo+#jmhCq-J*Fp$lWbZ~v4#=`_bOM8yuDeI~i0``~3>_^no-tJCV!4y*z zgYBki-#y(aqb0pR#yrG2b1r!~)G1jarDPPSAy_g@UD#Pq9oLrgMaIJW87I^x>(c}T zjQC^?5vIrOco4Hwe&gVnQ%Z}zB;C(k!5JinMxV64ld1EC0PQ)Vn+i9!;-GGfmV9o| zLT24%zJ7O9MMx}=Z|5dw!xpsf|HGYAn7~qxGuNf_=_H=!&KHct=WmGUVfVo4_Lp2q z8&<|4mnh<(9GfcAo}>{@*M2CK6FYBucYmMNi)>Oe^~Yt~`TeTQhjs4<-XY6S$QC(e zeYdqX(<7l|FrD||nBzO8So&u1p*E@UC@(Xd%p6&a)cWQxtn%G$-ZnUdV2&SLd&_Ow3f-sjpc z7nz^4-C!58uUSx4UR4OQz`n%jri-$^{j@<{DfQFJi(?X$+$E{w?;}EcSBBbCRZpR~ z;gx_s7L4fqRQvU7OTH#nS`3b6Y^E4olPH5rbwHqggE;Wo-LU`@}fF5 zh*;O;G~P*ZR8wE`#GiN&ZtH?RX<C3ib_}IJ)exO2c~)e!6$KUW5_SYzhzHFO?Z}-C5c~=zfz)zK0|W$lYdj;kAq{T z*}wuYnyr*g{nlTHaD%`IF3Sp1&o~d#@>`V`nk?TV zy-)iRIxHm5MkCQ6|5gb{#2?eR5R#?JFwDqDG)z=m8}f}TKIYS79oYs`^77KP=2D>a zJgrCf<{ax5Aqq2axYk!WzlBm9gW110H1@om)3z9LOWGXvYX8TMm*Mz7>TphT);%1M ze~->A_K(}4oSX0e%PHf0;ttR4dbh(|<2d#(4nVbrkl{6XSeTp4!zH&Pw68b89Dr!- zUxBty$i7gf4zmW+1ts=NHugDX3`Tdm6wyO>kFuu0Bd}T@#}8kf>KOu_-0sxL&3zQT z?-HfbT;9SpeVq&5<`##M>1lJ(_BZ`}a*&w*Mx&37K{AJtG5zAl_}^a(FyKKf4l~$q zDo``-EQ7H0IJMVGkVS}^bBw5nu6nCCojq1-p~>ym!lFdgb#&t~=jZEwiO==y+pi?e zB&x(>9BNf_JjDl(g-blCrzpFSYQa1Nt=lFhkLvecVX&Waq2r!Tz|Z8NJ%@0bbC3JF zQ2imQy`w4;`HiTpg5+|5LJv%0%69m6CAB4We4^a<1oRAm1X#PQEwN`%D$ z!5digAX=bk1B*fq4&TP=k*`(6{h_u@Uk2nhqw}Pf1IxCWf4p5YD_%jOgi&y;4`+fc;;CG z)v*ZxuZqqL)%0~VgY>{A`N_Xe@}S;MIQe{P`MI{(k?g)Ua&QTub|x|h_D7!zd~3S* z7OS~yEfu8_TzDg|4HFmdbRi?teT$2I+%*)ULlTpXPXP*ae_j%am8N73?%{6=;R~J! znVthMxk#|7nu&?7jzLVaL2?{aH^7mE8_rh4-;;1Nt*@@HZe-ES;+B)9U^D?3cnq>ckn5`LF4!TEPK zwOTU)D-!%uYC_S@@9qlRs39^#nU%GFrEF?)a#nEj!aBe|>*Rj}LBCR`YKZ7p=@b5g z1N|j+>fdf)$~$T{^NEsL1g5=@9UbvKsNJ2`{>leu;4Xi&Al8E`QH;9$oewV&wg^LR zo)sj4;eF2LPUS4RR%HgCPLGGc(#ALCWr5SX<3 z>>IiO=;vo#SG9!K4=67q5knQoCGm^6{Lc{LWSdx}?y<0MyODz#V#ithka?KU1=&e+ z-hZ5AUMJH2-oc=LK=QSIj_VM-IDmyc_T%}EL!RP8GD#GRg+S@FPr|3^ufjK1^c?EH z*z$Ww$e0a{NB0T8t5Lu;NN>+QXqmo}Dv0RKo!|f?j)V@j$2F+y4m&}IE3RX>RVUwG z1Q|}u>P{2{@m5%lSonSaZ0E?8^?{DN{u;Z!o|AMuW_+&%r$Eepy9bUe%8z2Q>9+Ou zh-zsH65!}5T!~7O-r+tpUV@oRo*t619m1&eN9avPyOO#XuxJ>_3G?gZ zt^FP{^sQ+eh$RTT4B@pE6{+PxpZ-3b+}T51t42BkNjnZ zgmnUIi&aaQw52s1o-ly@VT_%2Vmb8(JWcMyZ?10$$|YLyb9AXlvreenUp6rXGPC3R zvA`$A$0jG}CTnV>zj+e-q0Iy}-o->h*<9&a1}>J8&#EAIW-jBlf+>>pIuQ94gXAYZ z4p;H)Ip6?B_zjlvPj!4X7~%ZqdsqP3x4>HM?-cd_u$WZCEG7`p&m=Q`&v<=6D-QEF zpV~j3>gu#OOxa&=3b-eY0=P3`{|>$Xzdy7EFE7sozX<*U@BeaWr=;p6$Gwwqx*XI% zW(_1JHge(OdPlLzULN@^am%vE_5I73E6^=4$gVNdAS1^XS_rW!G4o8eglYr}VBDl}WuJNIxv zohO{ExCD({&ZUQ8aixwlz3<7r>K0#qO+V3P78@|^(+-cr`~+59hld$Lwnu{%FIob5P_Y=FaCQLV-YKI=DA8zAoa{N)1SXAFj*0np!~;C zyeCmVJlta^?i>_w-9bQl0#kBGaKS2aWLn9j=YH!@06HhDLZ5PvQvdyXIgs}3|5oaA zq&OwE`LxUX};&RzxEb(dwlZ zkTYpo!uH!)4B&j@YuXs`{(6GP+WwwH2-2$3;z))OVudkAn~l`E2c};b z18|uVtqWBngqrA@N}@AN8^S+r4bqNiT;}0_ub%Yhq``K-$>BKNeW9MASc2t0{#eYL z%zZ0aJn)jd1_~0XfMU=GQ%|R}y9g3WKNP*%{E?eiOlDl}METNVVW~s!=CuC1D@P;m zlzB=dzfGNSsiSjqT6m8)(?}^Dx37;JcgEJA}KHvrsn{h(~xo&Oig^WfT|4Nf2$_ z1Pi5(J_OdMsfxhZG$?oXTe>GmHo(0S zM-~Q~BuSll$&c=}-EPKBNZE3qx#9PJdY;eN9E-2jPZNa`ju84@oK0b+Ycp)ubeLfL zYx-)qGwl)N&+F%I;OM1|<9G>zgIj}zD*{KQ*fhV9F8{p?{Rf=reh?<#QyhYY;mpJ9 z>hir;wFjV5L!tzH5B^z7L-@N~U4Q1dbK&^F>PGl(>Sl z*gs;)vipf4>KNaAor|;T>-*XNWKkz9OC9<5(HKv{)Cu>#`Q{j{!$YrOMeVM(I;UK zvDlL6*ZETwsuH-d>{|=5lJf_wut1Fbl=f+qS|9(I68akb)QYG@d|l{sWeb8l5xWV{ z|MIBw!T#7%saCWh0Q?dfvnuR2`qi~R=H#v9hWP@x{us-DlZ`LHAB+OY|w%8;gCce2fZlrqev9qLn`6e>?b^Hv@L_YKFw^N=>xDa7oZ@4EoC^UP3b!WCS6jK2Bv#{bC|eZIo-~ED!b@93JHcIM zn(`=NMGONN?GVW7`r;7?Z^REM?nRXVaRYn3sF^lAKD=1ir{H}nI_24|I?k@!NTg>G~K6IVPD2X`0RK1 zYV9ShJlIvsA8&?%r^b%Yj${+PGHnnMwZS9oa`|4shZQs)Q!f`hVCn@=S~WPyJSWY* zu|5yqKErSGF;$Egf!Zw_d`GVsW{8)P+GU+?8K$F&g6K2);H9C@kCURJ`_ah1@fQej z*X7UMLOD34Z{Qa>j!#UkiYe{qip=k`&Aikrlw1Y8R?w)R`kB|)LoRKwrpdx*ndFtp zn`{6Qp`dHxPY%mh9VeL&gxB@Q)KZ}r%6r5?&%;(!K`e_U*ccC)gqku}KxA3(3=BCI z2wTkTkCfT_PCX8 z>D6Qh5`DnR8TyZlIC$Md@)SjRslC-!ts@)lEfQ@Iap|T;6i;irlCK#*dPp+)g5)E>fIIt1qZ>l%bOxFHu&D^-tuu^=)~lie}v2Wx*DjihLx9@2cF)3s1>xchaU1Ooz(bKUhC9M&^YW zZeNa2xGyAQAzL+DbX}vEjx?R@71>dFtlz%5cvRq;>v;c`>89Jb=bBW?eSoong*og1 zPB25#7=C-WfM`U-LvFmpS1l(mbv>SPPWJO<{pJ?)>IM(G#bkCyB-DW2^Yc>2&a3v?m3^N8q| zkf7c3jgtWtH~iYQ*3gN)a15!x$pQ) z#|;uzZD!-hHt7cPQ?y;x^Ut5eKHSR|5*77`={1NAZs;QtwE4zuQ}=5OIy zVGA%pU{P$yQsg~CX|XObnmBU$8&GHL!A>L$tKJVapuF#eb}2QADK8&;VsvF~nov<` zu)hO%LRVX?7@hD`z(H)P2cy0GU&xyS`vQtAmz)WU5|hqy?vun#%HXyih28T+^_Unv zSX(6-=>O3JErdbv009{Y-p`=IcRC3xWw1Lu}9z@P>8_)dsA&FflxW^T@d}+myWWY~4c1%{;&PF4Lx|34n*~|1P4vNEWSEE)K zuX3N!(ty=w{wpgy<6py3Ye}Zmnd+3Af`PJ6?*Qr|A)4>46AbO*M5OP zcXxMpN{gU$3DOPHh#)Bpx=RoS-HjmK-Q7wz(%ney0nX_&=kv_H*4pcR_cxEj4<6p* zzV7QE=lMH{UUZuIPxNKuQmXaJvC@!btI0WPp$-dYPzBN0P1hL-0XAVUPGj*mYt1RcG-C!<;iAPaWo&5zt`?w&jwe30) z2BEB>GHCus&A|J6(fbcI!>?jt>6e$V_ZQ`Xda-wsd{IEOCLQc4 zut5@uC?*i#^W&2r_XU~oKG~2^O^$q~N8wTXN7%}Y!9uSdN6cfRK_%Q?AM{5o#&C{w z!RJII2cf||i2Ru+NCwG2Kr&iQ$$Fm{8Sg>!3^3e!o)2$UxMzsX-@^f@WnQH7wnA`G zQ31FlIy}|MVRvRmpim{F7Gd4PE83roZd_vDR@>z?B+yq=4+Z4sti2D)4E$<4z?Ur4 zc(RyvT9O9%mOXnWM?~+zE|P zLr-}cRglI7nVCL#nly1f3pO#>&#m@&RnWkFT6z<-2``sb?jD|ClDXK#J>3vJJiFDY2|BNXNiry>tSOM&9E)R<5#1xJXNbVnOUS>QFRs~&&k zXg!BePPRu=1DO;o5OY``?ZEi>la35e#w1&P*u7>nX;r5G$Hyc1*-=u?4yDWRMwjCyHN zY`A8?w!Q0Y`HFyCInaJMQG)UuL>}IAZuSDpC8cgKCt3D|CFtBiIi1eHnKSspLP_>4 zJu-5qw|5q15qN4J?q7UY3Nrl(MYMRzPxYC)Et(x-jrQ#T)!p-mv24beU07IZP zsV%gB^p0edBL#Ngf}O*E%TVbfh0R znQDTLT>ut#h-dHTf35mJH)n;5g0usnFhkxvoiDeq>-Kfv^HuztwPMU|X2Qu2UX`m2 zJ+8{rzQxTJR=$=*^7PXZ&ycQe=rStneiFV3zc$Q}i;)(Lwtj9_PS#uPJ^>Uzp3O?d zVVKiqs=Q}Obvs&5qOM3<*r$BtV(%w4-Y&Yg@SUDG*_-~bFw_KU=g|;PzGiatu!+@> zft>n09~M0{w7I!ap-BTuNg(M1yb)os!EPN4 z0h0k7!mpF4(`lW)7bdD6k3LjPevmW`*`Y7A2#mn7iYcHjY$2vZYRw2xe#~+rXB+QQB zdE~~W^EbDq>ur~Yf*+T7xw{|M){d)>0jVu-c86-d$()`5>6iSQj&rrPH$amZ4rk2@ zq@<&1`nX zZSE*|nM`LdfDzpEIycHNH8;!^?_M{x3kfZ>FB*Z!k*A9qEMJP4u?U9*9Gt~ZOy(Rq zgt=^*G-z5N!|@`uJq(F-kSsx#>3C9hli$Sa6IPkk>*?&q?_Wctr^71?on93j8Y&Fr zC%@*wyQ!5)7+ln}ZNw0%ut+N%1X#O|ZyKT9I5jx3V>MU%@@dV~Cj>K**iwLjE$&t1OkvXA?(pPgv{r?SeLDf8+t`j@tHa7nZhwSKzT zrPumXWp7>QXiCg+k8IRw$epcKuSJFn%L^%9< ze>s>!@@gJ>ZpKOQwT3}%9Ww2W{@;(bFk{820r+U|ffFqepVXa(Jcb~DN+g2+G*9#V zS92Eo;CG=6kD$#7*@9QbpwYreO45>MQ#vIYdr zMnh2%9`?CGZ(i)bK{zqsfxOL&d~A9qQ$9JHU}L`1jR;vKTsg>E9>9p-G?IQX3po?; z_l0Z(Iw;&2js+nxF3t?CBOSsEgam`i@ieDVV{GRO0}03?|A!&`zsGWhFqFvk$rew7 zk(?mAI5bMonl2Qn+-+=%x1j*ma~dwCvCQs6I7(AA;zr=u{W4Dp3abCY5=jlKnj>^# z1sTFz2m7m=eJ@qpkg7 z{vY{*UVud1Q2&Eh`af{W+baypv&bO#kM!9O4h(+dQeZFx9rGg)V>_0yKjk1|1sFnf zRznu9066(UEf(;&O7UQ`-%5s9B2G}s2@^8%Clq$wf|Vfat$+&Un@=chrUHX-@_>%Chu!@Tw77>*eTO)4LdYiC-koB%5n*C*CKa^W)()LN1ZuSQ5FjCiW#od! z`QhSeqqcFyx{&adCfKPa$sNgjAn4_N$2s25cF}eNCl;E|z6xoSWk5%<-kLj*rVL7V8E^#iJEeIi5%Ok% zM$;1URKyg?Aqefpq*OwfrK|2+`s-jsanC`fXloorF*I?7t#oP*4L;4|zU-NdH+O|~0qXNY zN7h1>yES2rUK^VL-tQAGIxm{DV$({4_9VG4w2=@Gia;@gA1OI8sY4pHtb+CoJ}8kA zr?lK0A^q#a`1CsLLWVNwfTSbAufwbg@SGBc1xbn`P`6yVuu{Gv+)bHT>-o6>yPOkU zU+V$wo*dyS0~{Ku(DqQM%T~_Rs`&e$2QNrA91NI;PvbQ+DYbpDgw{vPzCG>@Hy+@e z9y6!%y7{}}9+^+G(-!?w3xy1d!4x(txu2DCT#Q&;t!!u*XjUyPJrP~2iGeeMHPB-o z>Yp3cc!K&)oQraUQIe;2B~_MDyPWE5jTEo}SZ7O#I-gBw`*NwLu1csu2`qij0{Ntr zf8w3DB#*1(Vaz6+SLS}iTsSW<~Uah zUxdAyr-oaEu_F-lwoP8EO| zD0L~P;ELtuSPjW&=Eq>6z`K*6qkhS{R;ad2>GP10Hw7#cYbKFqMQRXuZ+q7{Qs?uwvG0&E%ULBXor{q#yvM+=xjau{N$PX1MBgtpQih_ zhFZzJ4cG7Ses%)0sdFZE;@1q#;KYV5K)?(*3i1nilnXnTma1y9K8RoLa9P#QqqDeUmJ zDa8QEF%pKVljQFZ$@D41S+Q+jf}M9DFJ4q)xMQ(3MqtQiP+2w_7RVD36$?Sgpbaq5 z1vT{pq>+d@Uf+Zx~=r0sBoCY_@bs7t~tamudRJLDD{$wnF#Y4`OGJukgyoj-C-7ffgH zsgO}>Zzl>qLB5K+wThgy3*J~2Z6c~zPYoQdTa}gr->UHlSyO@VBg2Z1P5c1$;usl3 z>eDZc18r@!r@J7P>BfN;vCS$JGF@u-$`5Qn^C6~aZfD*Swbl5l4?(U_y98oziiJGV zi95Fo+~A~`iKe?lvN|B+#{{i*5VsMTGDaz^yk4so?4W&GsY(XP6J$inlRqy#0bunvHX$D-*eP6%h&Fmr9p=RXmiLc4Ek)%&iO;5eogl zD|+^9*><3GdCC%<7#5ds*&wKs?R&cTmfZ)8T5I1sTa>x%T#U#!ITETyCyo8R70Gmw zK;|60wAC?&@s0C?OxAbIHn<}56EG1aLv7+;J2J^OEwYX!_!P5I26-_yCptAS;w;h23tvl`?9@fZgX9Cj_(g6X+7R-ghKdx&1A-s#Ip z5qYI8h~8TQInx^ltDV-1N-ofh^VH;wVBGmg;wH~FX|E1hejOoL1(Uwgc%vyS$VtS4`YAj6-D(*$`5FRgP z$oN%i17)@3)_F&s`5{{M7$A@l)8&O%uw21%1lq(Qu)259zre+I$63# zbYhaGPO@fPhy?Q@Y-O*?>ihKFjjFNp+ANQt((_{@pI+~?B+lhm^y$!0GW6}p@d#b| zS=<&;IT)*1M45Uhy{i)HX$c@Lov;F}*5EyC{z(;VF2FH^%xvTs>yNMT3-vtDoL)1y z37txXre;Jdy<%`1PB|{qt~Kyx$-jd9xA&&kpco+rgpL6DAKb1A&Z@sVp#E+7jf@x~ z4X)15!D#}c1I&y@_!uBaT1YHVFc~7xQsxpu%3 zUuA90ac?=y3O)d#R;DVmE7IKx7ips7*y!MYz(9Y)&eBo+7+ zpKL)G-hg$4$J>@z!o5!c6b_I2@6_i<0N(#*Xe|bwRClt=fzZ=Y38BzUL9Lwd*m1}3 z_!y%k$p5=JH1N+k^a*NyD2-PI1$D1$i&T#@*Kw-07AS1sb2!anmPY|&l)JTReFzO(Ia?`r-DfbyuVNffvA&H zjC}%neqL%8NkwCQzwV$CE`#c*KZ!t|4( z7j26to>x2y0RD-CJg{U{LOHP<&XAFj+v*+DG5`AL!-Yn#_}#mEzz%dbM*{L-#4jKU zG-N8!Rwf(`FkO%tjnMWtu86$?kg>7>=qym@U??!<2=3}isDn}JXU?Urs-=ciiRi{} zfbQ`N@W-avz{&f8_ane7d-N)`ZrcsUbsITXOxp$@-GT^X0_Bw}tSB#JBIIE2t8IL$ zIKl<6mmx$Ls7@it>||43t`ogoW^ko0QcUNyG(3Od|bLUHh9k z_&;9{4Ziwy(!Bq(m@SR|&tmp3wJh=DcIf|3F^l}-&q|ivc6tP{Q%v|qvo!;Le9qvj zy}FAiW_937UB#k8DNLe88$8Fr-*-WdB7;zR`84DMAO!<7Vvq+XLiE#<+KaeUZwArT zLo(?6{Wv^+lYWoh{$HPzD0NGIG*Oih=1Fu5kKzK*vW@rI$K}IXnoFqYhV!c#R}|n z6*P%i#y83FtZfB@WD`m zuPG#! zR5k?^5ni`Z1V`*3M`pA@zWu%CRW@kR(QtB+Hr~BL4JeTkKk*zW!DvzpxI6 zd{0=1h6>H+!8$C!`ceQ;%R^gz1WmWyXyCjAHa48PdE8)Z;e(0S6Dj?D z1>;^DKl-Irx6_uE9$X+qM17BWr$znFSw@MxawDmjT1CbntH;R;t9v>-jB&eQ`Ic`e z4c-vEc$tySYG0)+03*}%H45e!+KDoe1~h&_eoNlsDQ;!?bV5HmFFceRa!))P zI%I#QyeF)~`X5+_8PITq{vTKeo#LsFLBB)$2p>cH0>Ghtq2SOyr`F`SbENa-;+=gBv(C*+=V{kP_vt&&RF9=ik4x7#pigDI9>!od zhZ!?VB+ovOnKgKTJBfR{`@MWSr~Jp~t1*f+B|%fvoow17JkVjprxJ<*k`x2?5usez zbMj_I9qCJr-Qder(;8-ucV;M}wo%uA`QagGXrl8OcbU5UmnMjmuEc3w+Q1E9&x1j7 zPvJWV(h!0%L<)tIS5i}>su1v!`#f=&a1gBY;U;Im=3r>wZ;Lz#UI_Wc16T_ylxna* z>_RMthR*)%LfC>#(I_o*Cw>6JgP}uG=FyAi{LCiVOsPCA8rdpu9N_`BFtwpWQmW*- z5UXn2&0c$sj=3{(1h{#wN#&lgnIcn0=WGag)mM z$opmj#NFoGdZES2^V4B0l0idsDDmx*{Gww{lOi+g9LjyCpqHXh#U$lm$G7v8HOwWS zJ?mwnH=3{D>6KAdw3yc&UL*(1j%XtyJ|JZ^z}>~S_1zFGl2#qZcm>+OcY}PtCdhiu zDwaQha#TB6Lm7%J+IoV`-CoF`6Pj~Iv2Ma14a_qCfVUXUS%SRa?dfN@{eibaKxrfX zE8DhO7K!wrc1m$Cp;BYDuzIYE;1SF)E|)iGAhN;#8BHg4lqFGA3XI=`dIH6ygdHD( zuT@zXQtet30Tsz4c$29xf2_A}5V<4tz8=;?qwdFa5$T>i4qH!_A3O{IWlsh=LC7Xs z3TXa(-O_}t`@wiOCdu9NoBP@B@M2(q-ma9*oh-r7&)eI9`f=mFmb;CEfhGkLWkH;( z^ZXP-Ox1f`N`+S?mF|;0ju^-FCOeelo0!*)gdEf5Vb-m&E)zM>-h_;&ZrPU4q40iS zL3{6eHqXbnB8xkhcv>i-Qr5DP&LKm!e*ofW|GaiZPdzR)#R4UJ5+s!_&~_LMaMN_V z59o%3=~#!t!xlbJ)2s+den*gu!CQ+=ZQZI+d}z8FgB75eb_xU;3VdFp1w2y6*xByWnO=GvVEc0qQ?p$*X@VZB!!hy9iP&3x%Jn zBB0*bE0%=CHcLUBLb&L+YljO6aE^4vR&tKyV4dTT^LW^#jd-0SnZSmy*>$PPAX9Qe zT>)^6ynG=LXutB)m`J~nxuOx^@V>Zwm6?15u*CCPf8Xv8DM}-@`UV~in++2vBUYE4 z-<>XHT?OC!o!eSdI>QOdQ%1wuv3n-0%S?e4Gi=seZwtY_1VBFC2@B_#Q)$$=_5syrdA& zocI&ct*((aslqPl^X?nWeAA9K3 z#AHu}x_MKKzK@8mZ&2PIlMs?3k7S4xlT4NX4+_=g{m#Aew_|-e(^7SS-XA3-wKHt2 z-b~?5z2W#|z_Aow<8FR6ln0nBy)Uf3PUDr4kD6DiaQ9K}#vi@>AkCq(TKmQ3SxPtY z%q2BhmV_#TgF=l8+D>6UcZY`>NnajS;c2W9wx?d)rNC~gKVQ*?%gK_oDXM3BQT@kw5g;9|Ct#q*>(e(`PF>e&ulhO zjU}7EP%h&*E&0M*=!h!u%~dg%V&u?u`g&g8&aE*FPxZs41jLi{&^$jsHnX0up?RXwW58~_n%Xo8*UGXB9hK>nT9fBdM?a6 zrk0Ve{qcCJc3mad`A2}N#;?v27++9DdnRkvIUmet+TrR&QUf%}lG6!G%nNdg2&2D2 z&qDYmiT!ZC?^yt59?oGdg>lUpT56D~s%JS|zHOQ5>k{z8%`f8HP}PJRw%BLNjOoUt zt0_=@rIb)5y;F3>OPFgj>K<(sk|5b4+JCtzXu~~tpi`8hTM^3nO;24-)E+Qmhv@q$ zLw20AK>yyhgx6_D*ZGz!^eSOeTfAeAMR2803F+I>i~V?D2>ntnCq6^{QNqV*lO2Qd zOhtAp5a}}2P&U&_3ss~NhbyRRA+1p)x32RL!}n8GWTl;7hBQWMK;6W=J09_h!)O0` zQO3!V#tKdCW3!!nhcnTCt@0k_OS+qiwBF#c>zm(79xhI9E?zD!-i6o!E8wIUF_?N0 z_x-2X8FdhfR$C^*jnV+_9Jz~~`dkeBJsPRb#j?1+ z+X=PHmReg3BBIQld~_d}dXWvLUR<3d4Sw9X?6q@pc8u$*hK3Sc7Z(y;G*(BhXk&?6_9rBku=NX7{)s0Txz%Zs9+EGOFf`Ro3t^vV6!Q z*6@DGoltFawuD;1Ad^b3tgLeGrE&~5Hr;@-oNzO~A^7Dg%`2`%;n#S(qF!K|51G$2 zSB438F3?k8Ga_K29+|TYehH+q3i^6%z$`|xN4@oKY9(klOvSdBryn@UiFVN9!{W1H zaBPv=+xHxD-wAk@4dgRrL+qG$Kn%@rEY9NE?^vkW4z-#W7 zgW+NDM@~#)o5@aZNwxd}|4Yc~=3-mT8`-d{>-2*3V5BjD>dU)jX~mz|Qts{dR6o{? zX=aP=cA7N&X7{0JR-VaEs*fm+od+HJ__@;o#9aR|+vS9s_ zc!LmW)rKHWLMK+^-X*HmCxg6`TWG}m(=oYk8|n}(m~k@KR=5ImJ}In)uGp@$l=(6b zawXV9kosw&jjClcqUKM`{h?neWmTRnvN2%wz9(B80ZuWi_QATM$@J=lZQ^k4DgD}) zQ)?S8`esoK3qeLjL&L9$Gm!`n4pU^ zH2UGH+&*pz@xtK;&QFwoy{?ZFlOdOk{9O>M&Ogp3{|_c6Ajn-7Ob59%B2f1+MR~ejwLH_$0&%FFZ?x-uHi^6G~A@U|$g`{maG_UOI63YCEbO5zMzNk0~;m+&u*_M@5xsc20A6k735j@Q2c!v1?q!4t3YZdWV2+wWe&-r&!1nMDgw599!I#j%Z+&L z`Ay$&Wvi3SG}DNkx<}1Jl^+V_-L|cR^di1A_@gzm6@K{m$!y)x-Y3ks-mBX)^c%^I zsrA}pe##@+1f}}0HI(c-``p>p&hiBZ;~UR%m|15ib5^=2JFsDmOKkf0Vu(HbIXRq| z#5@OsFb}g}DK`hrH@-6HFY<8o{eY0rzl5nMkmjF0MyWh0rZsN8K^`_}Oc>-RNSHBP zvW$jq8p{z@5H~MC*STm^&-{MEM3A3bis6!#|9s+QSQqw%jO6zx4>o?Dqy%(~T@jlc zBmCt(c)TNQUvH2w#5`y-D1m2hf2Eayc{IQG0soMUVn006CoLx(W`A*cZ0~3v#>UVu zHz>;nHb+T+la-b;#ZP?-n?~1r|9tSb!P(La8T9S|iOv|A(y#!h!%@OAVHloA82?oT zz+S=3O$y-yF`5H^;n-_?fx#^?@*%{|zTmpa4_xJKuN}$+Mwek9)$MS%`1r)x=!Nm# zE*~n-y!$p#zl*8eSWVIpyBRm^#pXT0oj&HUJlf?+L9zmH$iU6^aOq3i8IIQv@WGoY zv4v@9?*q{$Nz$=l2H3)soFRrpAaJ0@QBakt0l8!pdmo0QnXJ9dSYZe|k=ExRXP$`> zex})Xz>+;X!E{(Lr4yaRWF<$Hkw@s2W@hb^gWXj&_1by^xy|rLJd6LfvA2;~J`8<` zZ2xH}mnx@<>L?DE7)}wSg-HDB2{@;tl9HM(qX;&a`kg?=lY{@4TMSB-snx4Dws*w~ zB=ZJ}3ab?{4_ z^zVwzY-1{~T^Y^bFFgt5-Ic^RK+BS-WKWAVv4+(SYfxkeDjx7xGNZu@ZN^u7Z9ZF+ zIIjn7>ltu;6LFz&Fu$y$`-{cz4bxKHL?+B+E7M=&?<^cHvj{M1++wB*Um<*~n33jd zKp_Qk5P5| z$S1v^$m#rQp}>GsjOYxeb*6-lV2Xj+MYcpuSOs{|>H#US12Fs)(_h zGK+8ksu%0cz>)Yix$!M9k|^fDPJWGx*j0H#wo)BkBZcv`-E$-#dg%csg_#}6++V;< zzw+swO+|-$SrUX|OM|iy2Wy1=&Js(T00%3*^9C~kBhXNGl)Emf@@2GL$96g8B{-ZB z=;Crj{^od~zwQTTN?>P*&fxeqQ~7gNcrqnX>OsopUbuuerPzKh;B-dnYw|qG@amX{ zRdVql7RK(P!dis9bIEV4$8W&FVJD2epAJ^g$&^bnH@Onza)xYYX$cVnQpApVPiGG4 z#AFkswR^hmBrC1WPGU+};wNcB==0v70>@Na2NLbk*=#xxq0CM>_@GzX^gvkDMb+JqmmA4?w?!`UwAHZ7*0mgc^m61n`B5=EC=W z_g!unU}0em=fw%$t_YL}EB+M^WGdTT4;AwfT7vBZV5sDEq<_!)vlX_G-L=3N7 zOA0U?!y+T2T*S)+)`~fwYgkC;|Vy^!7&T*Uani?5% zf{qoSaQ;&+^6%krpQ2!KV_5SDL7|86L;zb33DDOjNLrx#AI$674lwh2xVM*F>$6Mx zLF{oxk25Z*j>_k)BOCR!iPwib5jT31hj58i`fG{{_X1!^uJ}gbT>)V1MmKu*GH=8C z$Nm!FM{Z+5mHuUmXUkOF?41~|hR`+33p5Jk_roR*aJ!X*KX}RcSei7AM=;cpE_@%A z&p^}nbAHy|o?8IMb(lv`_TTVYD|OyzK?xbre{#tX4OpIy8vHW4|3YPWZ?Ag8f`&gz zg1MffF^@8hkX~nY;a)w+?J-j?eylHfwd6c?+;nB|x)WJ>1sCjL84Nsp6}9{o$f5FJ zmpzDF85IXdq}J=T6@(^KZy}OOX!NIchz!zIG?0uk>I)!EPIH-Tsi*Bnj8ex(88(EK z8dU$gwo2L`*&8|Rl$t(!AF<-!h%^2f?_w#*4n>B$fc#fS{o~K4QI%pz0oK-YApNPY zH!|bm;R8EK7UJa1vBbf^MH|biX~xVzpSY^d%xUK9@o}^YB4D4S`D^Q9@Ny?6g`3EU zPnI`0{1uVgRvRPfUItv#Yb41REH3$yL+ZOj<1ueDurY+LSa7oWV}|_VO^Um)+q`?4 zzB8Uj!XCx(42!1WrR$LPnc=Ud= zj?7$h*M1r5LP5_s7`r%4-lLu4-W#~R(;9hFI|sfZGVf%L&UgAf9Rs%SjNMSbV#r)@ zzVXy?HU=6t8}2K*&~@AquFUA1EAqtz;uH3vl~oN5qn*C;jDItH`@$p+N^ez}itF6O zXWxdv_^W3=&}ivcf7*R%b9zkLuHN00|1L949!=hj;5$!mV>7dv3sst1{A5kwzDxM9 zT5QHeA;F@^6pgDesgb!~;Iu_MQU6-FZB(9#Yf%-1ToUkynhx=l*+ry<@cBOS$xH*1 zo?^%P=F)d8bE^sin*x-E$sxmyEPYWd_X8b`#Iz<4;6t37dBkvah8Vd};D;5J zvYQ>7(n%oqXpHHw1S{j<2ZicXLeukw_@q)j;=uAi-my*i6r~41Yer=xHee<= zC}WX+0g41Qrd(UXNC8}V$bVXmG&>nI`L9QuWB4P%mzf;TGUS@uh}N$aKq_FbLsH#A zMwc|>MZDBv(6=7Gzz9VHG|j|;i&I}8cxjfMa?0BrPby?4KthyM`U5m4g(pUTqXk&) znbXN|RYJgrv*(B1_?h33+Ue6zLwg~N(D!ZdBx47xJM;or5Vz2Ozt1cdjilQ_OCj*M zKPqYl@>)zRJ6hPU%}Z4*aeNHx1?M96hEf(PLn~35uZTW3 zUyxm;(`TcJRF01G0mInN2M>nLVz`6geUS8r`}&-Rugy00Ow2s*r7aZnGI=lB8%Z@v z8ecgU_(>FKM0JNuti?>!)dhc3YQTN_8HdwR%fe&F8_|UiFtdchEI&Z+LeDt#;2>oRdBree>rNZT4O& zL?a=wDI}hEZjRVH98c3f@adLK2kt|49(V%*)?{K;rEGK4l$6)p%O>S-(1N`I6OouD zG;rMgShs3{$|+lv1x%1Kg?yicja)QNE#i`8tCM2B`tp(Y%D$60y2R5vQn+oTFG)xp z)X9XQy(m9{(M&H!(9Woq6$+pBbdPa?k(UpWB*;=5U(7x}${t&<$q!yL0*3!I%u@^V zno28~rFQBWYGf$y1_TAR=VCyDOvd@Uq8^)e# z|6~c4wN^USya0^S>bChgk1vQv$wlab-|z#~HY_w*7J?uCVmf%dEvl}z>_;-9DYG+giiT^Bg|Md(W zAKt%}co)tg46MC!(kvl-p?tsOjF7+Nj3Q2tFiFs`Jsc}A83FxfcQmEd(o4GM7cL$EwJvL+{~;@5 z|3hf8ptCEl~I73%D|QY+Z*hi%Z5%Q zL5@K;Kbocx9SvIxhZRpBN@TD=>v#dD^^l<=h)>Hq>V-Sq#(wQ>hG{1R(qKTPcq*~! zFZkx^KxII{|FM>|YzYW>&!2`uT$fUV9%r*|iHH6kBlWou3Z$`f_kXJtzs&LNO%$g$? z!D{BV5++$JqY;{775rZBL7x**e?0xC7p~HV96?m6#jP)-DB$H zyW!qJ>0`xy8F|(*S!M-OeA{2VdwuIC-u>GiM1G*5p9^9%H45@V?#DTY<)KF5UE9gS z7Gf&<>7Sl=_vDJ2OzE}Z6feC1ua+hh&o9V%9-dbVta1qwzB;8!D8`G{_?)Wcv-d?c zDOHd{P_3Eg9-`bH1@DUFohyQgBz=?_j8Wb#A|MMcre%N3RjcLUV2*zm;pS)Zj!v59 zT8h?- z*CN9~I;5`|Vb`AH#e~haAOZ?s3Ym8Z2b z*o(LoLYfBTO^k{KlI%diUsh zy$7_F2FVT7(eUNue4kBRyAF}TC*b8X1x4SI3~6O1XWGgvO2bZq&6W!R;@OCDL?NpV>U%gics+V<--q^q!1aLZ>p0e zfQy7VwR?+)ufRHWRw`}}+zf(z@K;i|2>ld#k3cNtER@C%Ho%1sKcK6*?O-udv0XH( zS&n5}mgqQ=9!(>FmaR3Qtlsf_($QlP~Wo z6Y5SSLCeyz%MIK@5k$3+x!mrleyg70FGX=WvbubqC{(%_u{?ZZN1L>Ds`!Po9tAnxi(<8W^UzjW$e*V}A|kV@B6+r=pU zXx=v>i(J&GUx(V-v{GJvRUDVX3)B;c<7J|GC;Nz=q5^gUy3Jdr#Vb z$JgrhEmIJAu}F|Pw(<+KdU_jQ&6-VUWMbMq!nw9 z8FaQ&sJ&tQjQF-xfczu0EMibJg$#yrNP_kYix>=?oOEfy46iG2IG*c36}3LPC7p@o zk7<_=EL6h+^?O20xfo+w*iCgapJ6g^U@HP!dfYY7TQUyq!I3gNiJ!}Bimg3PEJ$82 z@Th+ykx+AvR6GBYQRv=X=*F87U3iGY>FnvNB3A25}+g)lUZY&N=T{g9120Q#0}=%$O0$g#^ahK2G%q*uP!Auda4zQ+niTZgj*H*E zJzTg0@>qN(PCx)L=oz@mLJZkG%kq@}fe>S}Qs<}g?6uCBoCd+^UPqmJz}PyPe^wHA zYFAn%bHlByiLTA$oj8|JRB~OrdTDQ{-(V6SAO2VhFyo!E@%$Dj=B-1+L=|UXEY&fr zdIW~5?{Sbm_}?0j&H6^{OL$!+rV*Yf!Ckn44-QCkyAy$*@G_>(?IWgQFMe>6vP%pk zJ-@V@z4w^#HlEJi7r+1s1XvOBLk^syj!D!C8Z&Wr{-G zy*a-S5kofeU2g{3mfs#V_hC|AE}{B~?`>H@2{wVym7pT%3^;P25EK5)PbbBt7ACJs z6pJI5vr)FxLS@h994NK)x_S<3J_S$#|82vFdtlL73jW@yi~l(ZG~_oiHRUoB*iTrp z{VayvJyNZG)57ESBOJ3hSh;P%rm9-GRW?Rl-fb+2HUMfax|J2G;lrT|Tv}V;kyKi% z^Ltn`gJ~9|?o5Vfw#Q7CGv`R;XAyL8+9KJw$ZgQURe&$#`7w=eU^EF6bnJ9<&6x|()69)P`@ z(Zn+4Oki|3W-2vWu~K5n!y!-z^#J1I=y;iJ1-|Ga`Vikqo!n|K{!H5@uGru+@noc! zY7O&9APmX+z6DWD=A5~ACuJ~gFb!r+`~qUI8m1NXcWLXWY3edbqohuegjt#io*9i> z4LL;e(NG)FM7FWA#@v%B8})UbpxQ ziT2)=a}=ITyf4-pu;Um}#5n=SpBsDDFXK&}0Ihs#J*7LRrmC&)%B%k$&dxF_u5H`a zxVyW%ySsaU;2PZBwQzR`g(bKI2*EA51PHFdHMqOOt0ecx-uJxM?tT1PMO(C@+N?F_ zkUqX%**N`_E@mKl0{ozTXW;>hW-B;)iW7AR+%BCPd1F0och4N!9H<+pCoF2nX!PYq zKNteFd|fS6w0vBsLE!1LL@?~wSH1B>+vZ%*TOlI|oju*HR-H{lcQ&W531E4H4f>$j z>8FzpCy#4?xmpT>Km{cE&72P(jQLkQ^W=9yj=%YwY3%t1-A-`S3GvsT*ZcnYKbInU zE~D1I4A|;t<+6>pHO`zepFc`Cj(H8WD0GO1r$LW$QWRTx^PGOf%1~w^f->x_Uy@H8 zINC%xMmM~c9H?bptr&usKZAC8=LOjtN2Ip=?y_W)HVGiIg?Y|@Z-Ji`ad^e@{fdKh z*&UMl%E4`&036o|&Xfd`W}|re^0=$sZ?Z@}OT4@9CWp;E;-*MGa6(1!NY8ZY7I`{a z#zI#p?CK=R@_4a*%2XsI?eN3kOF2@6w#hplg`$N#jYW_6*lMMFqABDg2I3zqM`Aok zkKre&4H*DD;mlgT){JFHIa2EA+Ebu1MFsAApNP{`P1b2k{TQ2lW6aP_bX3Ov{W&%! z4n!w^b^?i&6#D4^6aJMGvNlWopMHrUxNz&jp%`b4IxG9qC`O1wk{3yB{7I4HLR6?j zq5Mfd#4nPBsGLxK9#ikV;}9DPwL5enG}1{MO$Z9r5|yOG;JZb5&!r8498!4Zb0&TNF3nT3UFE=Y8_nt@02nO zfzkgH@R}ZhUhHp`jQ@#s+K_@WGuzA`vo!oa$>SeS3?S?%G84cZ4U!No8`5DcD8>+C z6H<U9x zxrWUA?Ng>btZ5VR+Ifb~ql&L4f7g*8^;u7_)(!YEAJ`@7#0g~D-Kp#GX;>tF zi0gBtV=fe0MIK;5yYcN%;Ao>`Bv^h7WIL%2aR!5zpnE;<$?Hdw)>j{|?}6!x^p8K< zkQ>%?a_zp*sUtOh*?*f6(A&g3N5<(Nh_%Exh!uLA4FsX6$sdC}iGmhj>-|JWMDmE8 zK`${a)~t@*-aR7Z-FyOz#%3zJVb@gVKNFu{eVO4(2z3x^l#JfQjWm43BR&tO?F|M9 z;=O!mf?&tqnOg!Vh5W>BiR^!@>J(VO`rH`-n%Fz#&b!YMa}gxd2ZHx#(aV3HP#hkS z54SJ_hmkAUgfSJi-p|oYLYXUqoHhT=`unADa^n}(z@+PZ1O|7&(1RlYD>`7v%n_=s zl}1OISjL!ot6jDtkUiOurpsWkb|Gz`!WDi^En6Ddy09zJA})W&Ody+OU;_ke?EV>4 zHZ2d&s6=oBF=+eJM%u0n%=?)poMHcVz;s@w}0MVHEO!R=!h5uUU83X zN}TyBVZ~>lH*k&Fvv$+bq60WFP^Rr@JOCK+@|1w*a!HR9?xK<{w`R-gAuJ8al*8JX zA@{@|n9v(IsY$TKVmZ!BCRHR0R6VFjG|oz(EO2{ah@7A~4{ruMgPKk$xtldT0rkHn9>AF=$B%iYctmQCf zYznnXJJ$}IP*h82PpW|RKK9xlwFr}Db$=+6@XcWEZ10EDe@Y^`{6wPTwb%(~PYz&0 zyFo+QhT5n(LvN&ZCqjGmFqL`lX#1@*Y~wZURqiWp1aTJ9;Ld$HsFK2Sjj&=PLyH zt?*N&$i#V*_7Ly=m;qCubBykNVh4=(y~o;~v0x2IE;*JK*uW|57-^oRX4ReG8}Tp` z$K_5$MWzg$TDPYwMkjADOO#r}4?tHN3wxIuGF@Ped+}}eVI)#iH|pu7nCNTfalyQ} zoIOn{g_kWB2~UBel>Jb8^4i}#cT6|zw|zmYQ~GOl0Kd6wraW9`JeFoW+v>j`H)T82 zzz@(zG5rO|F=R2)`60j%`xIrvAsXth^fy{hxW4B5cu=*UY$Q2{Uv%Hx&vtJ?TwtsdyerCZOXX7N z*07HIAw!>mkm$L8g?8c(8469tlV4?<3RwIpbs(~#fnP~W!x)5lkTRIcOkpz^bxXb+ z76`8z9ln{sH*)Gq%|bOu%d#|7!qA9&5T+mZpzadO$&)h)S|m#GQtt6L7H`St-d&gJ zQ2Nd!2w?6DQ6z-R`#&;lGvfy@&fLvd)G^B`s4gjgLg zc>tLiT5NN0Cj73GrB?#~E-M4JW z_}@N6IbeMVatxWlF*IvQLPcX#{&0P;wII$Y?edsYwN;NTsnn=hg6Nt<@C`i#whQ?E zFSY_C70b~-^pct3xW7ERz&5+4`s~qQfGk2VxBx51w|z$@c#>}vEcNv0DYQ4I3K2b^ zbpBP4E~&5Q`XzBm`@=AaFv0v~1{d6df(3IA9X*su{hrMSr}-mHHFP-}qL^(gC&qs{ z7KO55&a9JJua~D4Y3&tT>=gCb^M=DzfkQUWKvI|i-~Gfu(YRC0zZ7ZW02 z7b`%scU4!hHA0|7fz9p`f>qbm(^5~%NJo9k7=lHXhZaVI1^a^#@#f#z;lGX=H@cD; zb>Isb$YDUI$oFhVTC42ia z~|B|ElmKf6^$lyz9ZIeyOemKkX;vjc+q>V6RGOSFSJ{XrbEz?pU za@;@E@Pak5Zd~x4vA8>!72!q2Y!&u+B0OgAhK|d0Mcc^__K#*|?$D?y4wmPWb@6sE zlE;RFYz7F$edYss4clbcE>1_&-mvD5&C4ekDQ3v>S!mZR5O@7)92)1@5{92U*eE%; zEhzAYlxuFDXGO5xT$oWP52C3?c|Uq~{4KU~efvtN10;D5gAW>4!5TaGW4X>8g`zIr zO?B+}*?qD~T0ERZ%NJz1Zo!jjFH0i|vRo$&+x%_0?)T~4HFeuf5AB&!if&zWY}9%< zB&k)3|E~Y8(pb)Mdpqrlp`94y2GtAGL8$z_+6YN0%){? zhzmtn{k06}vw}zj*bIU}-#~#k*QBa=rvRGsh7+LBOwLv0|NL`JJ(;Zs<^514Lshq9 zpgL&Id!)CmxKM$k(Vu989a}G;b=khqe=b(!T+a0jsk0WE za5r2{#C*a|ye&^|aQ==|sEe)i0u)$9WW$-f`&&36jxCNH1ibnRPcQnnP4<69I5ov1 z2ZCC!92%XqoNP>15@qHv40TWR}mlu~QF>g%`D3(oQIHq0Iuhki*@FIkPCY6X(pmzF1 zlm)P+9h}Mz`d5dtsT%y)aG`OE3_?dT9VAZkq0q&$f86HwL;It9r8>fA~x)rDg6Zaw`Y zI2MyN*r$JUZM;Sh6aGW5C5!A~`We2@_)nV^ICy5@`YJNnZ)dmgkBYOv4Bh{MA1AOg z7Kx<^O%F95{5R5iz6t9c02FmX{qub0He=&3H?d^@9dxqcjV+_REeY{Pm-5Z{XulB2 zK{WQ@p~i#dsp?E-lWj}2uP}wsKKK%c`x;D(>g(Pqhe~4?T6djywBC(N@{vkt{PCyq z*B{3u9xBL)eo4};nCfeMk_mIc$yyZv+xL2PtJYdP4SL0`?5U70pRrD26+^aH*?j9y z$$I=~9|we`KsNV9Y-|s6$akp4`dMS#AFKgsqB+%#IAGqnF@D<^MRxkuB+%msMIC2d zBi{jmB|YX{E$anc;!@SSWIQ%b+)0%YduuobN!dbo92O#TqVe5SxYve5N8647cN*O; zrLmFixg|-(D}S7Tl5juS$_g^0>BY&$ zlCXZ-8kvaj7xLd**Hf^T!tj&y@O*-&(#38rErd`!SCR_rt?m|iu#051fhi;>l!8=A z&)>u7c8Jz2Q>L2qF@Z;k zA5RJ<(>3l;4!s*kl~q2Vyua<41l#L`**B$NcVRmZMW+$oH#LP(t!ceu-5J-8`_3Zq zWxq`OfS5re5Fv}0?`IEDAUgXAk`QYdB^P@N;d5Jh!gVLO5iA_dldue*9}7@z{UvN*vr#zhNDvi#Rh?v?(`|1;e5ziD$HX*5aY)u!DTacJ z7{V!%MjTT4re)ZWrdZt^r*Moz(!(e~vFyg*_Tt@B^c)}f=L8X<%ZqQ93za2k#s~j4 zw)bnH-oQL-!vn{lVQ~RI8d$OTM|xG;JPLeQ_>UY}OHJeOD0!^699dVF^`bJP>J$?Kq_HRcD5=V^~9F>01+#=N_x zQl6*M43i+P%$i?{cYZ>?oZsR{t3Ugyo|%$b%9}9~+~U)+ZyE62T-jd1L`^(@C{Mk_ z?yB$g-uPWB#Y80>7d=Gmb>1ik4&zJd6YcA|aTuz2B@!9jo1ocPXYT`=%_xXne+ZQ` zu-x2CVLudc9l8?$ZR{me<9NuGzEl9z+U_?ObRunD=VnZlr<3(P@Pv5o)j}9jdFH$d$+DT zW^;-aXAt3|GGE)Mf<6tb-=|X#r7GrYF#3q?PB9%en1u}!I&LgHTvmFi8ml(HXo(s( z2BRX?BSFA}yeUb{2Qj_~(k>o+4tDF;K>!=wRfj$!+a7;~zC}Jf%XgaI&1kxl`#epq zn6G=+u1rMf0I!aeFi4Lt5opemss@QsCU{l1^4}vi$C^D8l6zVxmQe#6;0*$}JGZMlc?c;q7po(Bj2(8+3naFF-egk9DyvcXh zh#6_%B~oW$?nR@V6X=P`{7pJnz>7s0s{~)U_I{vZ8$be6*;20p5eHL{?hG-!LmE3C zA%oRiu#sHpb`Do9gVIcW4pwp(r=JRy@k&8pYeIJtH2v0r?&R=uM}|kt!3r_4?FQY+ zdpporOn&>9hWzHf-Xa)&1M@QJyygwB-0mxuO8(&eQHK-x;r?J!jI(4!ncx5traZNE z-QK`%4uHSBO1wSU9XWV#O%0Fv1~(IGDtL_!70URRWM$iPI5wWS!E*KtQx`fWaG)Vd zG#gl34k3nFH+T^I%a9A?bFA6sktieG#p-qNO}BAelMnszRl>xKRcu;o@!qgG-Qm&gbCl#U z^=5P1F=3q9A?7U}#Ks`Ln_kbxw+6|@orx&^9bV*_0-|qO`*^b5F@hKD*P{Ppt%Pe56I3bBMfAR(6G3A13mWiA5JoZ2O_{XMhtYO?AJ1Vkp^ z4NkNd35wd#r}&J!jM77@n%!sO?+vCH9)18S`HnB9R09FI?)dqQFz7j|5skg*78#Vx<##Is={S}ZZf^MD=ttU8Rw*l-eJUg zPPPjPHJlm?OWiwmywPsUDGHZa6W~m=J%9Mf{Se;?RPQ`q>LLhW^E(xvfoznxyxjpP z_$#=9$QkGUq+fM}oa%WoNYkWNNTT0t!^fH5>~2w0`43w`vq$fod&)5_b#%$i-9*1n zI@>n|GwoIDF_EO;V}KJfe0n-{yt(c)DlCDCSRCm4YNz1ZfNNkCwL@_rN@hSSn6xe@vJl)S z>qWKD?|y0sJIhLO)Kr6GC6jCn{l*%Gy57bWJM zZv1KVpMoT$xFlh*Thm(~9PlC?EdX(pFOw$lvVy7UaO?vM@h9^|7RR(38L)N$>-Wy} z+u|*8uw*A#r{HIjOX#R~yFqUN`A5qJ_7EAlORDGnnvXSLnt)guY9X;Qc)Dl>BJvf3 zRbAMjmlsHOjL)kq1b5c6Zk)ls@Ns@dqZ;IT%jP!(HF1f@_r$3LLTj;e)(tWN44@xP&Qy5D z^X?#xw#JPiZ7wdRIpV^LpSVe&awnOOT7uW7w}d+Q*OJuC6&TSl^8jZBlR4(;U2T0C zb|c&wqv{9)3+&7B_qYTKX_+#q!LKe{UO(9U29yx=(zTO_)6_Jq*?=(oINPCj4fjvW z{Zdpxdef+Cri!J+q&+qOoq*o%Q_V29a}P9Y*ajC!D3?@jES4^W*eW8Nxq**X;zo0- zt2_@aWdf)+q%&|<>thTg5F+8ts`%&c8`uvG*xSwSu_CNK?s9)PAwCrL(VBxs(BvNg zfWP&v&C&I*GvK@Z@it~}6_{JNO4ua$aQnTM2fIbRC0=ajW+D$Az>!~nMXHPt+igI{ zI`f)2^<~U_5uteMivpbA9=;n;GCD?su^YBHZt$8PL4O!ZRPc=f8<$9}j|GiKz7=$Q zOiso8yOkW@=@u@8u>dbyjJo^rX8ITkR&RbBr~@_$J9& zh(#hJsZ|W5PLkY4fQ8PO?R9K>E;w%8Xo_fWWuHnI7iCK0~9G`+&GHVyGJx)?Ge>ytS6% zPii_*urt+Pj(VHQp4N8c%p-8HO*nuS4ir9_`|0BX)TyNJop}hs7Qt`{Ji?M0R*P!( z%MYQ3H(8FlvGzpzcX0F!7~)_ziE4a&JpN8ZN0a z+pVYxI!nLvS(%sRno=2#LzdRJp&hM6hPMZ4Dzk)Ag?fN7yIDaT!YjQ<@8@M4Y)+qH zBbgr&Kiv1knH0xRMy%Q+I*%9qMO$MDxLu8U<8k&XSU0aXSncpD-&hK9FBzg&p?+B-^T0vUrDeeFVVnT3B?b?C>I z+)1^|rhghp_?)EsDywdeXK;nTFG0Ed^MU$Ca%T)MrAj#NH(fYVPOfpayr-XXRY!9L zUc$cYNA5=1t5k0GBZc~VR#keIbIU@Nt9MBJ3e^_xH?Y$&Y5I64jW^~w*%m1AY6GzP zvX!Ea$QRMrGN;C!oCt}?Ib|MdW>5y?qz9lk^AG*1)I&qK?m%qdAUq>DxIlYpUD{!8 z>N^McY|6`$+jj0!%5?#mVn~DsEfVKSK6T@*YPOfDXSpa7A5R;R?PvTkzVz0oUSZ^; zKndwIo|j5lBrWAG8?wvpVDwh28lUH`RCz=wYOi6Gy}T3ohD=`dJ!}+aeCodZ?E(I7 zMBcQ63zevMeV-bgR}NVytkR)Ijkt9A_K^{Qt4b957>5S~oPF87??KAbZ)AyH>f(OG zvioFA>fNr6BYZ_l9mM-19Opx|cQyzFLNyvJI~c3A9qV~v_idUg%!bOlI@IMSZ2 zOIrO?o;JchbO^$GCLTket>x2YjS|P>PlEyK%7 zy>0-}OV3TNiKtI^=^Z1tEh@apSLlK9bENo|d+jSegK-q_;nvTa>F(NqM1%%CWlrRa@Vrt_w4_)H3dycd3T@kIOrfOd(Xct% z5#`P1vrt&=sm!6yT%oPvLrGPGOr@1D3Vi5<{}$jrlIxi`=7rU604FREuhj0L>Los{ z#ywr?`8zSyA*q-ex%hD2)nnon@2PL0q1WO=;@H{Y11o8}TF&-^@nr$Q&r5z0k^V;# z5@=k`mEMy%r=>tF>@_12i(K|KhfUf0E3icLu4!!h#noCyK122TVBOKuMtLRdIMXw{ z(?STMLqmq0 zrpRF)hw7Qf#kB3mZ{UhAIKeJQ4-Sa(-dqCC$%9uF%4R0Aq5FagynhcE8}>Ru!InDmy-)PL-~Re$ zY2CuRQi@e_-}9S<8S5p)ijB+*!e1pe&g*AXz%d2z|1cfJ^H&Nwki89t9vJi!0S!pK z2}uNWPz3h_-v{n1f(QK`mqKfSi%q5SU;xl7YyNS$e#^#I&%ss8@xK=~{$HRk|57v_ znS_HT#`}LO8X@o&h{QZq0|TQ;*?REt00c+uni#Awb+G21SV=n&rUOM+Ge@8fQJO}3 z`&@Q#`Ayw71^iP>>kMNc{ogK$jdosIa#S2 z2D_31oYpKq_1-`78cy=60Ix;h)ZxuT`_o5IT_<$?2TA&FAN%qGRlPA(2*u`!5UnL) zKmy54O0mRtpf?Sa2mlZ8)8T};fV$dTS=Zo>aVSo;C=|ix`xkd$@$H?9tSg7+NDX~ z+os+r>ES{MCIahgqf6e;)`6HSfyCMdH+}yP)(hs8Y4cxTFJ(6GfR$meG(cx)2q*wT z)W5Ws&07Q@)+1n^gf<86Lju4 z!2Lt;W5&m3!pmdEwXLCShpC1YU{la&^SrFn{avggNjic`nK7LwHIV{4r2x6e5Nd<^ za!M#Ov(E<3bCed>S=RILPD-@bI2Ji^GEo^^tl__ zJwT1A0y&eeGRKY%A>D<)w-Ld|MOJg-)mfTRA`M_t)9$)t z_YWQr|FCIH*#{p~WGXq6C+Hah&j|nKqo!Wbct@1dHj!1GK>DY~&xaOP z)6DMk^Gqo#FSR~ylX3W=PO64J!dxU(8Vnu<6@x|G>bV7xmd%v!DlUP*oDSw8WyiJ< z2d$DZ;s*`6Sv>a7c7!?~Y&9t37IG%?YqK|w;3`#?j(VkL_U@qNE&?!~g<-nUIP}0S z-XOS+WU*JsS#@_p@NP&BxCsFU7~r+&f98~Tz+|bk2UAM4U!ordU7A?8cI{s&6{_WY z9G9YUyU14gcOlKMLU}BdM7b7F@fw*7plCRmXFR8>;KpM}eQC9;LSB;B+!%tLEgud%#eVn zKE$=vuT~w8AKW}e#y+~VWa;Jbpbl`FhFwL3lIz1>>FH-g%^Eo}*Zt7Yn4N#43plpe zevfa{_g%o$*LpS4^J&G>4HlXeNsfy3jAZE0@x;2nx)Ak;&t53SPhGl}r5>UseO8WV zs{IuF)!}pV_Q7lMNt`|0s8_FK5=MI6p`dHhZ9w*B`51LnPdlTYAh*4NN7N<3amLQi z2dGSYOA6H^2FfVB3BDTcR)SdkO+XDYyF}uCL=XIv^;-Cu)&4w;4WyROVbOKqS&z*W zx+hr%TDfYgWqme!<(^652FK3KnpPQV?DM+~OJ-ptai#my! zVANjNE}$Y@z;yM++NE9YK9{L+MufF;E4SnBo*`XdFGH%DHBNXD5U(3KgQsEfmU--q z%3^C|>sh_{V|9fg=}qUx6LJHSc7pPq;y%&hev;~ED&sRLp_RiC3R!U9pQg~{tZlD{*iRdVG9V9ESuy~&a%AM39{Aqg%=pftRGl|-&{kT*y>Qw%lI-Lh89(1gi~}(3C)SbjlBMj8UfP-0+sVlM=o#1NM#Psswdc(7bh9^adm=_z zh+=khLe4<#)$Gfsw(2=B=Q?1}vpV|E`H^8J!B@?WkX*#;0$irn5?9$?NPXdA92jNzGJ^^&iXyYQ+ z$sHQkU4c=2@c+%g2&7N=C(`miK&Z~$+#t7}ex~%r&7>7P3AMM?a{*t^A&8MEXh4(s zFmnE&;I|j3mV&}d2@Aq4u@ge}HL-Oesda*!S1C;@H`^H#i0h%VGQsPEh|89Mh(`#F z5W-)8d`Ae@cx=HO|L(2&tA{sRR@Sk^QP{o zgAo0Pr_zdzA)Aj501>{`+jL8N$e2^(J$5Hj9DUUuWGo&>^qskoW_xxP=vs`JfTMm+ z=|*L=q{TJ2OJ-S zRA{3(k+!*zgNThpG*jth5p0CudB9_6a8ht4pfCeefzj~H3hdih8pp_i_bA?mHgV(c z^Ca*-twU!=NXK*p&IlV$F! ziB%Ic{JUpHT^ph^P&NtXKV)@0|KdOVj~N&=IQ_U5CEG;@zbP1k|I`uYW#^*wwIH-w z(Dx%;)x9!>cd17OlPCPPo+*R`={cPNWTT)vk_OG+SyxBO=dOKw2W}$Xr@`q&Bxdbc z4UEckMVl3i63Ecp5!-V6FAkU90Eokdq`{>Y`uc9v_BIXfsWuhfh6L@CLm1VrJtPb_yve#C0GXDpWwfcTDE^R zNJasJ=a3|ZP2+^Bm@^65)A)DZ>U!`a(gp>Pum?#KToUNggCvB|j|GJfvIr8Jss=Xo zAo2ZCdI}h!(ELe5lsXaq=o6gLm_r?G9{yL## zyl#Kwlaq}sX5Z7kxvz@y>1qr%x6f_u!HMFfjpQEZ?98EUxpBw@_N~bM3g?H90@Kv; zr<_5wu#3E2y(4SQfjPOE`y*}M@5jPUi#W$ux!fg2Bu7La+#fbrKqi0)T{vpAeflOw zFo1Q;kfBc!5S;uTj+h7G!a5jC{q7h%1v%in6HsnSl(kXP=^DonEwizMFzHC-j^B-H z$5#ZXor0~oDN(yIllq{gwIUhMLo2-v*!c>!nv3Bgv_&X6)40hgYs<|j6Ey4EKgDotbJs?_d_<0Gmw}FcL8Kp zpKL1}A&uIc@94-+qfy156AZgud}*ez;L=tP+wgBvw}@07ljbj}d?#Zs&5zq{g>bMB zhm2;Qq}miRAnC`3&&@47Q~1dRGTXbUIKh;X$Z-Wdw$HaE^})FXX4k!qplx?P%=J_v z^3(qNq8+DrzbFB`%CzB+lRmet1`o90PMQotxcv8$7pK0OLb=NWoc^$X4ca=?8ynDp zazya|flku+*8}aZbqjV+_=NvAo#dC{H;7IGUJOIPw^z;1<_tD!Y8uo>PnmL0)`+aC z%#-v-SWPF|*_RNU-%av0HL0KQW=p*n$|4vE6?&>t>z4p|&JJ$Q~Y@FVw z|GGT8+xNKM3hm_8b{zuJ)+rDOqAZG(uNeniW{+Yuu6^T8a3=n??Tp3)OCa)#cU%L7 zc1iZh92Q7$3rProKb7r+Q9^RO4ZO-QH5G$}6Mm6qoPuk4BO$&s5gJX4(xK|Q1Z6I` zlI`7djy#Pnn4gV2btIRI11aTS1~X-R@(_R+XeCT!UX z(S6NaMy_uuIE4>nQ?>ZJqy_#KLWximjT4d`7p@8Z-KKI^q>#?Tcn?3El6_V;`}7C7tacw5ZG{W zoz1AdOfcAZh$J@r6u3y#0f3wLl`rjyvdK2DOUiMo1A*17$B$;(tq)Das<_J}bO{?| zGE50j(V1Yx`$0Gv^ANBb^1$3oQ^Hf7~gIflLp);)HNKaO0EsaP6*^*pwA ztnm$v$-CAC^vTiL2gqQwSmr0zEj2Uv1$Y>?wk+A; zmf{gxz+hzP&g=BW(@Wc~+_oC`BneHc-7sZ*V#N=6d^Jit$uBIZytz24B!XJ}{0_Uf zZrl+$dUjpQ4u{ohl0SAtx96M47{&zln1tnbT`5*C0O!T{>N~e(=&o)-b)6=5{dt0@ zL~hg|h(%gOs+ryVYYzyt(1q347hM6|{x#(j#^`XW_UX4Cg@adFMxS-}8jB@(nIjyH z8Lry;Cn|sl0sW?X+=}6jG+MF~sC6$2Jh|@r(jS^BNSwd=OtAAqZ+Zxo5zuVG|2R@Z zSJ5zX2B>$Ayabou$(HPMlBNpX^+}HN%T)0ZySc&TlAT7AibTLBzNrozot)Oc?CO!Z zFXl^l5ZUIux9K}EGb-^3>}(dx*#f_FMtGVV3ndS|GCZIAffjgF6tw0}w*0es{U<9W zpHbqw_BZ|4`X0+J$Qw5ubmcU44+fdk=643pFNty50e6d+sjXSVsy;Tcfp7 zBw*#4rQr`~e15Zg`M7P~Id}7ONGZ_bXKf_&UK>~Eqw$-dyF!);^%O8=7ZQK3DA*0t zz#WbrO1rP;AJ!=SE9tUwE=jG>nA&65;wYDuxj2ob&-_V3e(a(xi>^kZCS_3my#M+G zz1|QYHH4Q%`(pG$nw&msz8| zHXIGr!CzDGj^{V-+I?8EHfpvs#1i3NhEYT;Y(B*3sqc{N2A_AK?>F0-eWB{a?@3%c zWAZ=0rF(K^DK?&lm5{77r5kcG^#&suB$WeP2sZCt!gAaaDhMzIpcjL`zlylOV(i1`du1rC5&Wu}BT<52#9%Uyo zZ-D}n=oz4OboTi7YHOnIT>Q@7(vQ~m^z)N)mm(Z~{XReMN~k)oPe^BEdQj0xDhB5P z@(=HSs_<^cB)!wQRuM;H2u2$ubFl0$9YYPB@if>-<*q=xfT8Y}d&H@h7J8f=`&Mt! zA0^%?TA+w%_VOZUn)FR)s>nKyB;6lfcjATKn$V{<0bGtr7ZQh|4 zC7G(CsXYzL{Uu&4+Qc;34pN~-22XJ<^A`?2*Y_rr)74xRNUh}Z1ewl$jaV{?<*?H7 z26W-k^6X!DJZ`?Hq-?`ylrn2O#NvNx=-XSE*!nTpJ@G<{kTrl%&N6&j&Z8~*R z&H{U;A|~LI>7v^wqn;4N%!7T*``5dKR$%dwM~gYD+4uM6L#xyD$)dU0v`;JWMQYvJ?IvQUV#BOaXtB&)XVSPV)jUB@q5wdJ3BJ`YU(uucsu44m>o>%EGLm zsHDO?rwBp>gZy?GvcZr`;+}Yjo z7HCxc7V<$;V5X=Q5;w-i2Gyq~vsh#(HL$fHtku`HD>51VJfna-3Z6Ux;2S;^YycBU znNOXi!eTF5#K*qnqLG<440qu{up(Jpxyzobq8&>dT&r{woiOdU|3F%m(5McIvB{+} zD7|$wjW%+TF;%cM@?}xNM8x70cTf%XfiB|fBxC2VE5gua9{GDpW!yERqyg#?+`#+} z?t!~{5ZC|^#@yFT+&viq;lwcuD^@%nT09(zu_a1^Ov%$KHF<&5lEwx%|0ny5pRstG z9Sb&7N7#=5nDL{NqHN_*Tq8IX|D2(pf@}Agb#-g|ZT6%(kOc2YvQOp{D_LCPc@p9m z6VyI)ANa-F&X#Fk!Q`I}c);Yu=hEtLiZ{Fp;@=Z=te1irjf)huQr%vF#L zp@U`4KEE)3_Rd&oIA_tgI~#T$;tj{T>AsD)KqSADxZaP#Ig-JqF2}N`d@V}tpVVEY ziB15kQc=edq0{b4qcwj79&o_ri+P2se*sgTPrK`~#?8@gq;aD7B_f|w$Sdaj8st|P z>jxb@@SA9q>SSoO24PAP63$G%=*kogjy1-DIIf{NXh{YVihNw@?Gh>0 z!dJMJNxE>EiAL5#4f=T-ntPk6DK_KqckTgK+`4A;QFxPN6wBnn1}G_7)o8z`Rmg|M z$AGSjV=sy!Vd$P^aoU?|%+nxP&E^O-$l)$`3e*8{T^(q3)7M zdw4M0xzSiiVa`I8i+iJZuT8X2*H2B9l=DQfAA_9|L`i2y8dYhj2yq7 z_wiyyN)Ripv5&PNJI;aY%|a|1=3Gcb7XV77oCIN@-q zJ_;TlL+R&b;>4lVfxOR||K)uyw%g0J9+;1QVerj%w3*~K~_XAdCaO=RiI921^WjL}PP?zC-Pged)CeqJj^ zb5f^v0w59wZRG6Ty$&s1fd}*Y_U>Bp%Awl@-d5dt3+|^+z@%$9 z|FEmuqS9F&`h~gHp@Y5M7oTL0FJ{QlcEL4tlaEjmlt}|`0p7$|$#91}YG4d8Q$oS9 zld9tl1&(F>@vbE=B^g)-NRlL>oo3WTZ+qAiXhviusd??~%iH(#Mk|SEOK1Hz28O!X zNJH+hqe)BQ8{l&%M>B^Q`j|5FW1>Ddf+_$i#~kKDsr|-KrK4@P^TB@&(A;<=$s)-j zs;8g+`G?u4=JNnT|0u_@nUW+Mon!mWrvMgt-y=yBt4;7Gn7UnA36#y@C%hkssfg^_ ziy2q@wu{=jDJqtFqdQI}G`!rrduI}&4y1xbDM6ug5G)7yR_0Jae z6V<^ni;QM0^&_6y9nj5Bj0(0Ngo7Ed+fUMC7Ms2kq$5edf}ND!#PX<9vJcO2{=DhB^{h-7ZpT;WM`C9~YY<)#j@sj|Pt%)X`@TJ3QmNjo>qg&e z(KMW9Q29|q>Md7t-k6;Hi8lq^DMwtmO`P|w(@|)%3YP)!041z= z06WGx^zn3hM;`PHE+m?pRQQ*8Vf~{({iC0U6c2#X1KNM>6~BtL{--sBU7&`9>OUJ2 z-0YSnY;0Wrhqk{8iz`akcH!Xe?(XjH5FCOA3GOZlE`_^W;qI=%A-FriT?4`0*_HHK z{jKiR-~V6xU>{KzRW)nOVe=iYJh#yw#fsmem|4QXhcv^xc98L;@bJ`)8mLmy0bwZg z@XT#=!Gn%u$NG5UhjAddU(W~*kLCjR6;w$oOJ&Ty43Bwe&BtQ4-(FJ{lCrR0 zH0AawqK&1p=TQ60z{}{tX*Y35O}2=;6^3IGnvYv%om#II-(n4-ZbgC!5nY;`px*JnUX=5}xQHmhd+m!Z(KELR&(7#Dl?3#Og!sb}3%zT3z+r^?mA z-&ErTup;@RkyelkhP|o3mhW;u5`1xi#~v3ybn$OfphO^Rljy;fF+0lKSo={~eb#{*bXc5SCOkka``?Q-Rc2 zwH^VN(*r?|(;?eMA%Pz$)!LVHfKWfWQ)zLlHt}mnhpq0kPiUp4&9MLX z^K)eH$oGF8YLv`uz-Sw2tjYg5*1YDR+BG&Ko^`b`IS4jP#ij>wskI~VfKpms3Eg1h z86_wl@yGxKo?x=9kw*XVK-ra9y;lU6b2qKENRjOohl@d_Z;kK~TfGROnWmGS_j?I^ zf&v27S?NgFaV-`tb|UOkWsx?8p$HzC3`wpLMSw5FIL?pjX^8lPa(Cv|aGFg#6Ky1I zNs*qnFOqqma8x1(=g-)e>wU;isZoM!uUm)NJa{DE8KR)MA-Q?E$(MURszEL}Qf9Uw zz2Ll_1Ms{eVVPo4Y|PNTqkN|4jj}XACCQr&yR1oOK~D>%PZkz!256q@iNqz^L5`zg z^#C^?E}@H#a4>JY4>ccPY}Ioo?ch@e=lb?{!R8rbk!(`@9eVhYYPU4f!7j_}Su;4( zAPH4s8(Y0)wL)JB4Hc<|?P*ix^|F!_{SuDP``K=dcVtqqEfQ=PE~#swnCyQT&=B@& zPrsz-H)^5IEamyX$aRC+3RhWxVeMet=9#M!thDu+s7cOSeMK(`Es(c~qEyL&>*4># zdBmhXt8;Za@EI2^bY$bRn-&!JH9v(?;CZxuV;Dl>jYz~0#^v|#x!&#L*DE_1t3JQ; zV=LRm20Z`A!~f5Mj%`&`06OBs{)hMy`)5`Vk#pPF)bDSQ2r;dvZW{jyY6C9F*w^w;g$uLuvo7ZNzrofO{=n8hl?HD?N|yDo zZvH^*9+8AtY@pCag)VIM!%aOkXr@r$Urp~I(3O9!kXBoah z{X=LI4*zjtWoQ_{2(Ulp!)#!&s9CI+=BAnWhD~Qqu*)GpCU4IIWlpfou`2n=Tm=`zsa7Mg^ptmh5MVOGCLLiJAms`C_KjYb@cb&*~0k=soK)<9pU14U*vkTniT?)~`>iwcJIO9lWi zyE5@s#o$IWEX03I^IEZpZ5c{RK^eLNwjA=w<{x?qejEPUwBSuiz_<+K~gvB zL(HQh)8e9J?7rK8ez8{91qE4 zq_O)A{9kD7BYwj{|C`1RL=y$a1U`#^qyNpk+Otn{0J=mX{)c(`Z@FN93UG_zoOUmL z{B7CpqJZ{Mi0^-suW*B3f`UN@s|HZP^FL~y*|<5mIM~fN)-}c==R|RH&aj(*BcN&D zkn^2X2TDAuVFDHT#r{|>MSf>@4N6ZMED?@;ZvBFwFeYV^<$K^AG557_uUgKRLmv*)dP=qzkv9NKMS`(wV z@d1>RHx?-BPIc2b*FD4<3PU)u9dTX_MUVRqtny=ZI;zfaH00wb(?5Y5LgWL2_{KOG z`x$}kcsHldQ_5_m#s_sFbuE2InH<+N-U)XwJ&z{}tEB2(ml|@rIefzg(G%8D?}*ia zy?25f^*6Zp<(C@p2Qj>#@v{I>V*0reIRG%)wUluYR+YGRu$$x6oY9W(vI){Z+0qWa zRZInfrQ3WO;P}G0Hko%hV?oa4Bj@90+6^6x^Pyrq`y1le-AeVvh%@8WRy`|s)~B9o z#jy1(O2bWLC-MP9C6Bkw;gNdXsxSp_W~Ut8sn48Xn(ON9=!P85QLJeSfJ<#GLx9rn zS~sU|!qo;L1(}X)wgD0i^VcXIo8+CY*?Jp{=TG`^VWE&HK%jAvq5 zA@R+6eYIvsCra~7f%s1?o$z)9VI$Y<)Kfa?f_#ndF2%l%Ahq76_Ix-(xeNx9GaK-0 zn}+7ko5l;ubB!t}D*8qO%anE$tF+rkTX@5zGnNoL8{ZtNuKF;r^MXZpO=Q&c(`gstK^g&>-w~3GAU|4Y3WA zD`$oc(zj|hpSHViGpE)4@nKhbUfjxS@hqX;X0g2*kYU@tgD3)y8wH&jfhy5UDYiRp z$^DB!MAE#Um5uQl1!-oS1nm=97=mrrVmkrS`fyww?yh`SryI-W`Mpn9&eVOUzO0ng z@~l~5DArn@4h7Lc;2wSmw>qm>VCxUV?<bKp#Uu?Kif$wNit>Wftz?7p!Czz&^(D2TbqsS)+9=V8KIDMv&%{E_*%LtmyN;Ti*~yMp^XB zExtTYL;;%Y6-Vuf%TDM5&6=asUDpkluRqdz0ggd`rRlx!>%o&=F~pD3bK;m3FBFtz z$*PHbq0hR%K(T=0`)*TTASYjbDmS_4)jFJ3`>hVn_YD`a^KM@@ZS^sr)gJCb*WQO9 z3IL*i(5Xpjtx-b^Wx`%)SNy1=hU@B53Sp?>{-I+7!D?Xq;Was|R&sk?0Y|#N8x|uE zkZb)R0xbw&;Ud`=Ya@mvYg)dfrv6f~XlIr4IBU$?zQyM?DVz5y+B2xt)wo=}|9+D( zCyl9;|6$^~@z$z@`MdS+8YPD&UpLyO)8|Q6{Xh=>-tV1681S*TV{QY&ej+w*zwb!K z=meSQV*@&FG@M?J0Gad(djNK4UxR@ffZFBM!tdPEebz79O+(DTTyj|eB)2QjmQ$Py zy*VuNL-(Rzr*X?5N}kOwxO;29Na;6BfA0U9U z+iYfQKb5@!38$wMPhryF(_Dt9u;Q`g`x1qCzc*Z4&`SK2WBZ|^E2U>S8c7r&A42lV z+;^XD`an~D7sJ<@_w#(o@>1KA-d(o*p@|KC zE3dLLp`fw{0bebgk^U7kl4rr8@$AG`wl$I8S?lvXI8!QA)rv#4=lvrFgVcw0hGwFT zuL~?F*NBiR?~X|UwrI1t{Q43x-sR=E+W-tMZ+_2`X>V@N7-?wtW=VMaY`_fi4WtIH zcd|M=;gpQiyGOZit3I>jY~>UVHjMbqu{M7j8xbaV3HVDt+s8(3l}NO}D4y|F2{&jf z7+3=2^kB`4ZY^eLYR!6Z2G;yisUjrF&K;S6{R1IJ3YigsHDcbupxAh93}bJ?-Q=a? zLhCcg@0w;dhgT4eS6+!nGg0^>&}Hd;OB@UUO1DpuO3>Dco3)P-v^ z<>jlC082#q6U@QJ?6ePXjPY@#GnILi_%-%nBU@|Uj!WP|st*u9jji&krTEKWm_Plt zL@>pZ%eA66c-Y`cTlysG_$a|RgjDPM!6T*}XMq8aN62>J^RLCg*%H7(fU}qERh^-` zCMFEs8L*lN6HiBC;#t)5LRCsyx4a{-a8y$^8yzSoL?PS^d_2_g0RMJc+eFT@RHkjF zomACa;=ZKg<4RTKE_HAy)tYgKCFEEo_r9)U^c|)Vo@&kfYsjozO>s}m19u|$yMg6> zzc(!^_OBp<)4v&Y@R%T_6W9-b3|^oU6D$Vs1P2!5ud~N@)5(bh=y`_pA0TyH|0jdx zKNC!3>697e{=!RuKiTI5aLc)d96x@j-I#@9nOx zC2Y`VIP<`YR1HLEupxb- zWrzv0qHLU@mALG*5j=z=Y=zMbArHA=PzgbpFG+)F|5k92-Wa^$0?aJ{qvQWKO`HF} z8gt>YqczhEisrboK>q<)0^ra)xG>-!l#N{1o(}?&GhoorFr@Y$W{^?G9Z7e7p7})H z)t&;LDQ!gJ>|p+~G=5G++*Q0)Ejt*!*ckk5Aon6&efx5w)c#`(&C!XJfbmUDY#|%2 zZ;|v~Y|Y(yrxIH?_gNEsd0f;M#PStgFZ~s+QAg|@dOx;AnEsOcQ|c(CYb+8%L@&Mhgb%sb z4t0en$lvz9yCzk08GK?K`q&KI7{twl{a0=#xJoG%xF}&}R(hgNLe61^R)S7aS}Mds z8GOH|_^|eoH)C{}a&mz>z#-3WO(g66(jle_0re?8@DsOX5rH}Kbt@*T z9_n~-OLlpcR{1qX+DSm$p|F8Qda7#qIcfwfM|7BC9gZNt%XRmIO09#5mitfNBHR9L zq9v9C6!v+0U76CQwV@iJZ-YK3_6UHpUlab5M)dCOEu)fVrYai{!WiQc8R=ZVV_|*p zqG$-Kqj2zC0m|+Q|6RyRa`)=E3;c^nq;V%D};^%YLV!*XXc3Y4DK)>rvedW4vq-p*BV5i;FK*L>Q zb)9{9m!8p*dwfKq15D66O9s|(f>|PYyzl@&ybk`1%D5^>Bl^iClS}5X#+J~r|KFE-*RQ`ubZA1ez6R9ig12T&%1-rfln~e`S5UR**Hy1Ce*gdDKIV#dVX7XP}87i=>JIk%OIOneQlp zNni3^f9G5p!0Hj5ygS`Yu5BC9!$ZN4cz4KO`J8*5>&3LMH%t~;C4P{i=u`YP-7&~~ zl8aWkXxOv?ShM4-c&^p2I%V1y#m@*X*@2$gS?2WO{8l&Ri9>TJB;b9bhIvmSBlxR< z%$b!#;u-m6lhxLe)$(E5v7`Tf+u&LGFe*^v!v^*T+JGD3uN;ENe1~a=E-?-c?zU#Z z-GCC?;GfC11>6oQxf63+!K;EeqWm_pCI@qzGlq1WfD#)Fq!jV}gPVPslVAcyXXD5m z22vqiZ!vQ}T21J&SxH>CPf-*BFDL^kFIw2}+@j2I_GPMAlvnjHF}Cd|5AorpijJrZ z_OdbjK6cHR?D#-;{oV^@doGH+1x?Xo`$57B_Z zv6?)+0QjQyG#g-DhXF$9vGr?p$=bF-ov?gtX;QxbBk%6d<3V1qu6hvU->HK6Z~u;| zIR_`FsWHgEqih3`aLoCc@}`of4u$Xr*Ax&S`+e28t}z;_hhDGpW*Q!0j5Dn<-V}p< zV5vib0(bkWl;p+Mk1;QgXRq_ujq$OQ zlbxN{oq$GT^;&|kbO*j!^qC-XodcmQ zu{b7BDWdm&ggI>+3H%gv)pT4SFag++f&ZED%Ql;1KG+%9^jOxAmvku3{kPYJjise! zfm{kFU`~icU{f5x3U$BNP|--|sROI)t?u3F@YJ>CF~4~HZ7l~{_c47HIY(p_9(ZU? zwj_6PI)S)EC!+SuJ^&K&xBck*+;_3DU3eHW}yueL|4?EQ*QXr3$4RM8k*V z%)VUFE;-b7Bn7sZ0D*4=w$Y}D6m2P3%7B(+>Hyv@=~f3g#?y9W&Kvo$*n_{dh1Ehv z>pgto@75bB*lOK|?hbi_wzu zk%`_|K#Qv*R}H7n@U}!Rqj1)V!{MrucsY*oWD6iAUQm@E=+YVbj0YM^bx>2Spa zQ+QT!T&ogbzw@(Ehk?Vj(1&i86%J;yz&-5DUobt%qCf;pyUFfz0a&t-xDa30f?3OK z8s^?f6SMT<6M6T~BAQ8SfhNnj`uX}*FQ@?uLNdD&HJGDtDz7ozZ@tA5S%%sWZ#jMy z-B3e);arABdDxD~O;HdT3KP>VIp2{EN&@+U5h7d3;k(qLowQ1-)Awhymb(9koxlc~ z^XXU0{4~IRMtHh^3*NIgv2*{k$iq*2Q?qsi+zQn|Sy_Zfgo>*~Yjb4i=akeY9Szr? z5@sqcraI0N%8lW9Q5HDLepUs4`-A}dx&Zr_-Ve)w6mdhk{vQ`ff79*zK14Y{s3#(u zUIZ*n!y=DPvDBG>a_)x+zoB0mfAZ?V2BF8XNnM#0<%;INr0yD-!-!7Y0Ree1WTbbB zNOunIiFfow3H1gE=XM4c=CKgW&!Pv=U{>6585lq(5=8bCS8zCF0Y6R{RC!T5KQQx; zAEAL69I*Jze&qwfX|*Aw{X$;(!ED*^IbaMG~JS3Y4 z-)sGsO@zaYgV&UslXG1|_s=Gh{WC>ho$+_m7S%i`z-iTtW2IuEGA)k7fK^`m$s%#Y zm6C^jL?3n4XRbRJHefo3l$LyT2)^nKD+km2N+Dr+;>;Bd&D(KnFEbNF#oA2cOViWR z)*feJkODcWx~U2BPU$N8Z){8S z(nMT>SLDKo-YM&y%VZ@`S2J3^`5vjX+C%U_{gHc22 z*vwoNF6_I~{PU8kk+56n5uv}3hhIHh$Uw|nm&IEoO%rQTt=z%IHu%r{z|8cn1&5!% zbh@eRUG~F29~WcW>7?s;dQBC$2T>IMzCF(MFdo@(hVHDL$WyBA@V`+0vA-FxyWJ06 zTdM-Y8^}NCuUssq$YH7%_~>z1O&v7!<-=y)0L!GHN-kVfe&?M^P^DG6l+vZG&p!6ce-9`kFtvPjQVyouiu-~?cMzi z?<2tPc};L(?x^0ZX+Se`i_J5sZottxYL0CApi*iWT5Iq$sPNIA>-1yAobXX2fosK# z;0B|1!%9s@)neQnKpdJJ+22NbaCUKf%M(y)_;hq%4V^FoBX>jL$XZ7^6`=cGNx13S zcm-UjYkK4sa`gwq!Vy5@ z&w%G)4{>a%@DPou-|`a^ah{ncpUR|TNo9C7Hlcjj{0(&)O1{jNAEA19u?hF#KvV$_ zS(wUxFEf_$6VLdiIq3^HeZ{FDRpn%@lzI6#;9m5;nTrl+JAwPBO~S>&!D(W|#k;OP z1&TRg0k&dN#GBN6h&K7V4BZN|ch)WLzm()qG10V2_-E3Cx77*ksz_0Eb&bb8&K z*?FluUglh!Y;I*xCMpsHhQai}kT|eE9{8M3#5T8gzc)6QM3+Wt7pCX!+V~jL3lY*y z*cHv#HoLAwhs@gAZtB$J_A~z!&fI`x>Eg260=QGxJ?5?gsHX{UYR}c&)&i}BNmHQ` zjd+Rh;}!K1RUlUTWEw1ppI8)#=;%MI>pn_9Ndv6hjvZrY619>sD_n7SbAIGNoXnKr zl05vI%8p93C7pe3hA$Wh0x00l;7Up1w|=<}>Xmnyx1{58$y%Ls-0DS&W;LU4h-i$0Kmd#*(}YI=|{r;Ab^Q}Q9G zP1p$9DKK9~wI>1AiT3cDTm<~LOQDJtYWpK|eJH?3R){Md zgc6R)C^vfIT_TLiA+D)I|T2ghsI0!erOn&(|avGVIZJ;UkeL3KO5--WA;W^b=3T!(k zuB4la<{myHF1W!nAvwugt(cKHS(b@mFIeDq|2i?IU-@6x`>Lu>w-b=14gwn>CJ!!# zNjxFm%m0l&AT{utHO?ZuN@Ec$`KJWIC9yasw-9La#Q`S@hqnmi^=G0tuvd!Lh>dzh zffhNj={%U&`-4lL&F7G`F{Q)rKe=JnXbQr&L-Y+@%OZ761IDnKlWj_p(=`V66I{M$ zi8&GOZ(PBADrm5}>&TN2J`q|2aC#-U`{%xrnXGL~-h_MK1;K^C+2BIh%Gko%@-kwA zzu&$MuoSd~PJ3bJ2}W#k6j)VsA*Uh|a_60Itn<{MrLR~qh~$`YZM(APRPAyMo)j&A z!&2huki+?AF5ktOb^DfV5A`kM)7QA?I4Gpn_!Ch4aR`6rh2iJ8u(!tqfLpWy65;y? zZ?M;q68jl6ibQt^rPn%i2GUo5V+XpJF+2pS*BBGgbrnLqPc)dONz_#4YLv%LbdPiC zicXS+CZ+9YBNQfT!p=F*>T7KC9cgBz7wPu$pYc+`(m zg#U-Z_GjmX64H4Jsz`o;p;P%^u1B_i8f^ceDi@UY497ey!zA~ISbQ;}FhvW;grKA} zJ~A%P6F&VX4Lap-8nhK<1E?;DRdgp2ZNwIL6}mJ8W_TO2o+zvDI?`G7AAV@IEQtwt{5K62&MP6~_IG&%vJj zp@xN*kSHZl$%c?kQ-J5SD7XOdiRIX!)A$Qtnwc~&x${H+fd*6a6~A9Q?YD+aXGOQq zO>YaUzwJ?)!Y3+VU~&eB^mUaMZn;SX3aSs5H?3>H+nut)+$LY-kvDPDH!QppJw1IB zwv?KP-xi@#$~Hxz$GSgq+u)k*)n>!nk|YWUVO&9wobW1{hCyp}BL z<5!D%wVpg2((7ic2!38ZgtcIbgvxs&T0Ef<=w93S{`HPiBy`No0^ecksI;2n>G>@E zXF3;OFWO=7MEN3~gNZ%z=@I=#+k0S?X4F%9ei z(ZnKpC;rpR*~Tu->d#q#t7F(%PM+}V??!|BKogoQU7mBxs`#-4S+5qa8x9)Y0q>VV z5Bm(W@HmcU!#LfUgUaEB@Fy1H$8oy$rb^DMX}3V-msJmM%_V$S!ff^L&F)A0-f0(jZ{|7H*ftJM>!Y+m>{6oQXZT7$d7!$cvQg{Ea#?WzB zDUs?ix*XOvmFYPiTcC9iezE59ywdnMfgJqw!)!K`rda=3&>$jv@)nu_KF~At=&ay6j=t=@dz?=%y{X9lz8Rsov+CSW?s2g3eyrOl zA?&O*)#iHPi*z1PR6@)$Ccoi*>y;xj^#T;GcB`hsYGnMLW=YlgX1uCz(-l%l?)I1n zRo))^=7H7CA~`Rr)bT5Ne-4*Hnukc9MSgBz@~6O|6&;=IBp>0Pw{+Y(OPd!Spo)nV zi2)1)9fx%Sgjmr*j1#o~Cm&3HxJ3A}dp&@VS7F97xz?jBTjFoEUPn`60CQAOEKl z|L-0WPQL)G9{EoyME^mPiv$?ahX@ZO8%1cr*o&%Ld^2z$c_7K(fRF)Uy%T4FC!+|4 z;0~lfr7?v3e|X)u+5SuJD9bW01L*q&=08LW8vnIK;}22~3s`%E1O+4#L%?r-`2th^ z4;g|7liMAApa>=+4nWKXLku(9@W*%cxEtgDRm{LANrqb7-Y}B1yl!NkNDWH`GI*YG z`gOmm*FMk)-t#<|yV0!Mq6@+j6F#^nj@)nDZ)7xoown|@Cf1SW{9$a{29cv{w}Y=J z$W7n=u~oI=Y;n}AKy_n%l{VLOo!(a;unJw_tE)MLqStF$GUHqI>4=lqfmr5it8fRBWxGI^2iXHWRJe9EKoo}D*?meN9}NN%?LgMdA%}(QjkP| zr3z)4p%SRBL5`m?k{l?{cUt&9Kn~jLqX#R>TOit_wSPuIGGsi8N=FY5U$G5Q&^JAK zw~m-Iw_RQ0o=pf|&HQYtoJvhXQ&h(&h2DnRQk)PDBhg=llh_`uYoq{>QwVs-*|~qj zqIbQcYuYVo9C()e)biix91wbSG$|ncjr|ZF&O( zG7^b3KnF?$VoqaiTwGp1b2c{79ZYE4 zyd~(;1KzkE1Y-gJeD)?c2U49b)JKz{FRm z|FFE-|1B6O_5+p^D543AllTIG*39jm@!|8{7#d<-KsCPCU=N&KeovvuZZ@uGB<)%a&2<3OEVY30;yyP{uSd zD8s*9G3wOOh&q1jF^4O%X?}TJLDssgw9;d#4IgWtm}CGeSnV~EdG$qz@cPSlO`pw6)(e(iUJC72+B`UTLlR#s`vZ;Qac0n5%uwyS<=e*uCP|7XzRFR7Em z(_BPzp>rVHd8xLZ19XOF0dqISW#A~?dUCS`^&_$iZY zPBM3IWb;iHXji#j3suRLK5xk zi$5@l9fs7^Mps$o*x6c&Mi2G6@FuFIA2P z$YRU$o|>H}P>O{y;VUj^IN`WvT$k(Z)O3!AvRg|IriV%h7Jo4}VCGqe%?a#K7L3Am z1wU%gQwL-Mz?kSTx?&=quWc(v`)SrwIm+ZIRle0&<{$bky1Y`Rm9=3(jvruDO9x4N z@>98_#({@q=OlQtQ>{A7SfBU$s^~add00LE?hKs8R!S9XsSbF=89URY)!I*)mQ%C% zq9WSCd~rV9Cz3FC(9d0ZF%7Rhn%W%rOCf__X&fOM;BmPxC9#9^uO}T3w(F~U;SV2x zAz=TlC1}cN!o_8Dng#O(Q~Kc^1tBF2y})=;GJ2*o55c(^;w}V#U;}}cTU}HIbGqLi zbO><8kU#kt?ToO5!DSqqE*@5*_34udV=0S(Tl>k$V*Wz&iyz@!LPFMUUfh?~YyETG#U<^b zZn89quWFscgFDI20EBn@`O>Mh96wEj!~?hpVk#d2Wv?7iFAqSjv;%-O$+CD%j&lU}c&m%3?4<#mXjMSh z_{dDig_HBrTSd^wUgopgYS_h$3h|YLeU9z+-oj)u9pc_XqYkRZREq8$e17Zn(Wsa+gLJd{xMSPLE#zz6NAaCWlYh*Jq?$Zr_(qB!+53eDYrP3v^ZXS>B-Ek z|EA>nym)w`QE|QI7^U?HJ4iS$)&8FW!hsjCi9)EGQ9J zA^WA%c?w7(G4?#fC0VvE;*Lfvpkbep_aqWEH+dhwk_lDVxT`zaw4VEwbg7O=!A_vu zsICtE>0NVETjv@#J35umrtezjdK0ags- z1Qrl2Ua{M=6LEJp>X7DmH;Hq&p0W3Rd5W?d_5@f$FZLkcy1dA3AO%u0_6fu22hSTn zHU+!`#^hH36*`yv)x3AtJ{6=A^+rcRg~_zzW^rmx&*$MfRqiaRjm8^qaIoy$v&#;dISp*B61uafq4dkIG6ns3f8+0{QI&Kac`MxD~?im_)S?hCBS z%kDFF?`d?Z9*7*pb>jiL4-T(WLUEeD-GD|h7sj1);J}s6k%Kt%_;)(w1E+CM({Ss@ zTKri=dw`&J|C?9DiQ%-lAU19KBY%i=`caCZczO?!OF%)Io>Wu%WoE&HXH|#@`NTNC z3pn3|bMv048OH$8L?&(ih?x!DCfvF{eK@=sZJ1-tjj=sFV*^a6G+{IU9pJOHQJ z)5fxx&GxLubgRmf#!|78c=H92s`hCkddwz`BIvVCDx7M=?fmTAFSUs>9Nng&73q9i zxKC#37U_Vn{Iu=(9vO}?7G%kEzP8TN@-*ETb7+1W&fOzn#hLMX=?_-sYE>)4N_TBC zd_R@2w^$7%Y&<NJD-*d8nF# zO>}d*!f5lZW2yr&7@oRY>I)KM@seX_9I@l4mRpiUrW@|GX z^)@G10rW>Md?82m(ubdJ0K#Os!?(sTJYMVZ;pyR6epp*<-*btfdu!?7K~8uC5o#C=YRB2 z2%fxCAcS>S9K0>EG>_6J5~{&RractAz%E?{0wq*^@i=*<8p)G70qH*}Tis*j>iq}o zShPPFFfS;_y}mP&vZ$5aV8+{%b?}7=U4JThO`WMS!jP-VD^v%77WdJ!|-XBFVR%-Z0I-r825JRS?v2| zF*KZFSqkAYh1f#IW!c zh?&+O;phiQ=##s8GqC{kIqCY~)RPi@0bFKjBkCrbn2zJ*=ci@lWdN%DMBECZ-^XC(>F@@qXd#76O{fk|8D($W3HIBTOCd081vnfU! z9=C)TaY85SWM9hUUcDs0n(H{OFX5PG)M~K?H2$M5s|*Kq{tZJpoI_BI%()kWEoo5m zX2unx%024U+yF8+`@$m%Qdi6h3ow_ok;WTY0>`h*s9np0W8UEwW!QE0>UlDs7#i5M zS_Ot)G)^6gq{M8V!b$>kieapn&>cJdeqEo%*88=Mo9cKk6EW^&I0IksDK!wR1|waX zHICtw9O$84wWys+%@#Ip7!MvS*rF7`UJ+VEP`1p$TmWe!NggF!T0g6eXT#8`m~_qW zl1;f8_@Pd!J<^|xE#Y~1+x+bvtj8$NM0!miw`asQb^{o5nK8ViAK5O}ZYY(=w&Q~? za6ySZ64;-BuPDPe7Yk`ebiEWv0}7v$UX_O_?UQ;7&~GkfKyRlh5QlC+BNgymSxi;S zCoN780&r1M5Kj?fXdW_r27N2qq4=yuZ>UBviQ8dgb@n*)^vv0B1@@8TAbHbf91vV~ zdmtxa<_ew!sOTHmtfqsdd3#L=9u+==u1pe}2Agt=sK&?-n#T6P5$<38ovQAH>c4gq z=sczn>is@Z3o7$AI^;AKbPHJsvNA<9bY-d)-2 zN$K3aJ-TG+6pP3fUs%ezXC~dBkRgO-;2Bl zrrBOD&1{hAyb?X9h1O-+gAWOM3(7hUaUF5wJm-I$U&JqUSP*z66o?+L`gN;`{BX7c z0OYMa?yK3*8fCg|%Ia_9_lI*PiWoqw?e)1pN;UUAD#3$MFX{x)l%by6%i86_DU`)A zH=0u9PV4vL+P+M?7-l?wgwGU@VE1a!VP`W}JZX=^DdP#2c3R}&FM+gw5>3z+nW2(O z6~7vCT(k)e97lrt@_My=@UzHX{?Htdc)Q!<{6=Fh?PwAC8>XU4F72jMb}cw)$g{UV z@DWoL)U!YqWpJ7eo2kWR&9|-8T>EfiJ#PBz6|)qm<0+vO6BnqoaMZFzlKZLTb7jGeuB;jq z@ty8(3m#9NbH+;5&b||{0Vt9c3BE%x^)Tp>mKQT(P_hM7p}~> zcOWz(&jG?JIukaev%*ozilrLrDYVW5<&v-1xr}BrgxJ$5Cy1GPDdQ+xA6Ri5R zVG~=>%V5!thyLL6UB6@ z?5OjxGpm8eCWlpuv@a`^t%4WAx36Ep%cMgnPB3@?jb3w!^BM5zkQ3XmYD>vRTOLz$ z-Xls4@u$+H3fp-O0H>5)jTWT_duuWs_%!{(c6TVnfCI-MtGW2w2tC#st0|?+)a%5{ zHB)khX+kO^c6U(5D791Z94d97Sv}~Ekfl@YEuz5&lqLfRwofMjvTDCnKMCS$xDzzz zY9gHMC;{xB613_AsKvhW_L}bVqRwuCgmzdfpS>g@OXuDIeE~Tc3PB@vq$+6CTEGNW zmEn0Rg?e2hOC=R(5pY@1fNHr7r@)aKO1sGqkQwN(G~rbQcNA4n*rkC6K7Ec{0bG`U z?lZYU?O8uo!H-a>1Bu@G$_eouDMAl1XBrfK@l?=66Z<xl5Dq#0QPN<+$2Tmzs_fi7ZYgJH-!AI0Fs9C(YGWx!V!Opdce5Z+A2&%_} z118R-w*=O)5k@KgJcJ@sxHBoHP~e8{Ei6cAu`Gj2M3PU95Dtg&$r+`fM?90qCZV=O zl1?3T&4Cp^486qo&J>46O(33n*Zn0z@Wxd2NJ5nkof<|lU;)$Yf+CL6pVbWTnZ=qo zp3nm8H#UPH-pkf%97wXz$0PC^^3XxGg8!B}c z+C4=XsL=!|tgpWr&?x@=vpAqk@{Sh8ZT3dx?;Ae5x9PvT7&)AlCd&_oeu5VrQJ@y< zox6VUaqZly=Fyb^$<6@MAbb0_`u>bU;#S4{4+qrdmKoFE0tNh+#_P}b6nQ9fQw{iR zIccQ|%Co)I)C$~;MiF)2VTLN*9uSgIEx==D}J?0iwYVEp;Dj| zX!l!%anL&7)Umo{J{TFxIQx2qhoigCVZV3BMz1fuo>3VzG6)b&jmi`UePs~zBI!sX zKgYV)v=6;_+vc|)NhSv4vtYHhSL`VhlBfH+du?Zh$Vck{Ta&{0k)6M7R;$^9SbJlV z`ay4>aeLV4n=pO{M%1&NZ)B)%fx$!iMtjv5V+YTMPE7#ux7&pNw60h_bx5RXsR^k9G_%Z~d-&7x5t&rm^dKv*6$L1xdaySSOiBfWao-dd3EvWao=bLZ@6=pA zITFwcn+**Yr~W%!)C9B{{76tq_`V}6^*IfXJ83@?iLtQ(`v%3Lsh)>#u&vpkhvf^?coy-Ihd41HdrZHOfO>_s)kAluP*`A~3it&-7#k-w zfeD5rg?b&pdQ?Ga?DQp-5SeX4cppMj@vE|UR`ONvo@ORv_QOI-vj&dWJbn0-`A=Rt zgveCeBItl4Ws*yK5pJ2Nhhar$J?v?iqayzgKZBDn(GAE;NC~I1?9(3;>4+)Nuba4_H%h86(;Ub4k|M2Wf%LvB8^2Ggl<3J3j=e+?rHSC&xMS*thonoc2*iC_$72S zd?}2?1Y>h)=7wgP5`lHsp^->ozk;enoydzz1z=<}KK?w6WST-?c=>I^ zfmxHuVfy_S28wubGxT97ukI{RT_W44+ZdkzhFXyfG^B0GnLQ2yZB#!IpJvOksDVyR ztn70J{Dre4lxO0NM$QP((LmHW2O$eNgap6rbgZmVJA+p3WUpYRplij{FFn0`o=Huc zaXdtLZ0PBn8)b?PhzSB}o4c1_g@^fLq_;?4PUv0sm>J?i8FNidfQ z+W)wk3{W5eL5)~iF4)^jb7Un~G7E(%C%T$iR`t3_{p#bfSYizxrJ!u4IB$yN6c91# zNNkP9i7`Bz1&=PVMWtL@l|F?f*J zwG&S7e_erG?LI_tBEj-e74T*@`l#9vzg+;m%uvWjf5;<{ZM!h; zu0ex)V6otuAj>Y0APE721qtrKv$!TWEDpf}!6m_+1b26LcMEWaJggCju&X!Dtb-9GCojGzTEl3d|G4~($I+0 ze;>@Bd-bE_ky0bcM|P4F^WXecMgyEXzr@lNIi#GZu(;8_I?POa*{04^iMG5`{>npf z3m*o0xArjv9p1R>h;jR2Udd@~?d8dco*Bj+M3m#9!K2@BtRH#|Vk8CkYLxLjw}QRM zu6=oJV|uWUp$8)#QI&MMm|M7+7LB;F-_Vbxa_&As(_eSKD-lS2gtfe%WePUey3ffG zqwu!XsXOd!*3)aUJGX!J*-16rD+YW~4-CM-R z2A=8Hs(qod>c2Xqn?g-(*eVfg@Fz-^oc6zj5|GKAU>K1} z`@87%FkU}S#w2@s7?WZ_-6i#1&hjh?c|Ot&PY&go#av@=hdhW!U| zDYm^>C!6sF669aBY&{3Il(6;%=eH3!wGQMAJc|FAs5-?8zVUwBC;GQ9CbuO$zcE#G ze*)N-Q}`G7H}Xto%CG)9V>BuE?*z=?#??_1gv;xzfp~T? zB|CJ=*=V%e_o**4+ye%x%-pk*CT`T z!u9dbGZI{u>N`7n?wxapFA_i9LCkUPAb=+ZoSjoW6>W@#B_io>zZw6?IclZ*{B+Uq zT$=(GKCSHy#>giIBE^U-&RW-7OFM~{cz}J%m);Fy&Jwgw;(rv*{A_HE&0rY&NX9Vw zHsL#Uf}}ik9N(jP#;;k?ywcpr*a@O*pV05EQop<~GSKI1RCxFk_p1b){j~E%RD~R( zk{%kOolra|j|@2tItxwQCqxGdt>$)@5Ez2kcFD#~da`xVNNh!@Giz@;0&P=Vv;JJ& zbomt&+{zpqu4J^YCI}@e%tstqkymfNG*aMdqOCJ`mfQx`yESC58L*dmrTZm4V!h2Z zJB_vU)+b22twW7>M2PDSAxT;M9t$T7Do5Oo8K_ zZ@>}tB=k(;L8jANRb-h0j_;QzZ^=(Sqc<`?!SF>MnE@yZkyjO;g?Af!M(CnF^L{u| z(xA)dS%F~SQ==r<(R@tJqpuJX-m?&J#8lts8LB-r@!7~_wa3Z_E|3lQ9Iyy4zySTa zWD{6haEs=_u7f?IgZrRDH~NJ-ggH#4(Q{wbSsH#Nn1Pyg9pm19_2eN7HeGiW*_0FH&Q;ZyKkZ8&rKy>_BV9lHejLRp~wwhlPJUZV# z4n;0DXS2pszxno$zPhp6#9Ji9wjexo^RHg2mp^vIzDln?PksW}c?U|^!zHlqtt~~w zx894*8VrX*n%=XV+m11RO(~;qQcHg0=uBP{-%`J;);*1ew)mLu4h|V~+(mHR2#L_I zvUCudalrEvp(7(fOzMB6WT(IQP;|L;P*&BbYs7ReA8bA71@*>(5rM=hvrdnCxcNCKC$O#-P){kn3!yMB`QXGgTy_aLo?G> zLWD%Og}d7?Z&RaG{wSGJT?8;`hsGjcYZz!>S!;rps++JtU9BcGAHd#QO@#Cc+YnT! zZ^tKO=q==V%Q#B&>H9Y70PzPmdbywbd0-0qnu=)sL#Jl({5275!Z?0r(7+D0%RU-=G$WKI% z>f|!o*|u-5E9Xu2N+C#4TZUDvOrnNLAtu><=m(U`vI#M9ZdsM!l$*7>)_B32aUwp@ zmVD=yE^NBTkVu!`&O3i1k#_ObNaJB4j+pyv?J!d-N_<4(1K#-OHl>z?94Adg^d0Lh zv7xBYE-88Mm(EfZuhJdIwJ%Tl)JkIqjb99lvy~Y-IU;F}Qk)7AIs|qbBSH@~IuLW~ zzGO8Y$T%*p4RqQ{#&Lgc$EeBbm?Ln=sus&lkcDx98^4G=X*Q;mn&C5^<+mRQbXL$v zMnW8!bjI#`>=v$J;**oUbsvWzg4T=@L5ZHgK~6;{*J{1%`jcUt6hS@bmrIQi{ay9yJpe6?{OGAp) z8jG-KlZeP0hgl3rO~(eI0%vaDv9f>47rqeN_7}}euHP)>It5``FKIE+cRq;oQ^RJQ&)|Yni8qf3%qOPCHyK*0cnR}U>p#Ps@%zG1 zanU73E-Otw_3NyLBi0<>a~Lpuu0H(Y76xEc1o<+yeO!m5JjPK>z6lUmMlz^%u>rwe z-&d0hRlR2~+DIj_jq*TF_*Aziu=>P-LGjxCyoP0~08I(Im6bKKWtV;5oxPELKCm4r zA=oxb42X;WZp0nOeL{tbIC9sEUtMjEc?G-bgrR|=*01`pIQz=dafN?5b4>eu6FO2ATR>o8G@(2u6G3Ep z3)A+yUki0K(v3UFmPxF?lAr4IHbyQ zyQ-6B#4AkqUcm;imZu|NE6qb26GbBhr+iuQad6rWC-)OvgYG8imCmYm5I)WLQ}@_I zvYJ`Ffe)h-vQTEnd!h$T&1ynz%ceIWV<|h;a`GhUi=gH=nkOR+xmIH}J`5}k$;K2a z(cu(93E{5}ItHKy+v~~)Z^p-j8h$>-$&!7bN0bMB;w2Dq%0GPV zJFX}R%|Ys6nlGNzRTEkCb6upI_9q@Brrx|l7 zsU0UaGY?mS#kDtDLAN1Gehe%(yDu4XfAC*>$9BR!&p95KH5t5hi$Cze4KtT>*eNjX zYGo>ZE)d)`85ex1^~xtELr|$*!yvAcWo=1?(%~<8SJ_$UOs~@7Ug>EQpqx6nzhfQD z-iy#}7E3Z0Wiu`}HuPNw97lt<-E<;=>(1m2!%6|dbqqk{goyWL=P3j3_1I|*_$$#s z=$+DF%4XYYBO^Ypemwy98RAy^+c0d@i6Q-wUCxg2A>G&5?Qj+DipXb1^t-4e_E_w8 zL;?yS2{>u8TyGNE6IJ{YaN@zUY-7RfRACAAz6HLr%H;MDb+6afoGa!-kVaOLpXDdQ z(9;-p<;mn^=ttm8>Yo$J%YwHY@bL#1)A$n*e=+biIqqN-XS>NHPU!rW%fNN#3&F%D z6@G}P(*ILt#m|%_sAoDPxK>H}!8ic({UwTQ zBL|ARsk6U~!@|NDZ0%<)JXFr7f!zI&6+mQK5Zf$tz{`x^0?%@h3Imw}jbQWpWsJk? zcB0L;*qWzW(d-N?RigJ=>&jlL0SSr|NqNv^)BI*2X3cEG_d(_ua7eLIfV2^1yK(8m zf8?Q4TJ0Jo_F(p8m&4TX;SB7}t+B#lgO|F3`#GvQFwJw(9O&LA|MFbYU%k+uFS(>| zRBDgKB^+s(_mVd17U}uMpd7jOmaHeJv;BevLdIf__3{!lWjo1&wlgnM_znNtF!Z(V)ZQhdg8_!;-CL)#aY8WX4s|=MK5DQ z$i%NP*-1lft0|lJ(OrhwU?6}Yi=Zmko^uehNaSh3abht5m}~j~-`mzUcfjg&ZF6n&0T% z_*vaL`YnNjZuwKrFXR^%-P0L2-*1tBx+5th)#YU7Y-}25^Vk-J!K+6)&0&_Xx6)e$ z#=XbZ=@Lqfr-wo})}_r+!~55)q0Xp{PU5>i5=(4`kD3Qxb|v_;qxZli^9|E`SbK2S z)z4Gog=hooDh7azqh#NYQ=gXLZP0d*kP zf(Xu=#xr9+7Q^nAU!B&oH2BlKV)3qb>s`+;jz4F+aSMo)$qM$Y@5J`!-n>W2)(Y7>c8axC!88zM-@+xaXpO0(_I?etKpcv660be zkw~7;>7?dl)#|qtGa5Z&UbfdU#(*D<7tbSzae!YRo+Cq^8^GD%nqS-&kS|}eAqw1! zjOiEG0!&1!arCzn4&Yn#Yr<-Rz8KuVy8Xw%^4ZB4{i9!siCo-3 zwkDiMIM2lC-UK$O^S_(G`Ts-aHkbghL{r&f3&m=Kp z#Ab*y?jmHESN)I~Nc`{svkcIWmGTq}L8m#_ZF$kIbA{*n4lvC2Mmd$fD1*03joBs9 z34$tnO{+w~C;H3X_^1L*j=qqFaHVDUoO6Am!j}P^Ew!=q z4$(?k4nXQ6BATb>Hw88s$@SIXbnnaclLH4e{o)xid_K|d0_o@HOQFhQ@~)rqM&N)$ zY{#s2#5@F`kuGLAkC)~dMJs*z86{SmI2KPa03mBcDH^)rA+-w6dVS7i8|Ald=b3+T z$s5U7RB$Ug)B;HB!{f%XTY=$e{w8S}7NWkjhP zauiLSTp{0+eag7}kokT1Jgkd3avla&WwF11S<3W22A7)=c1Jl&mIhnu`s`X}6I4!2 zryq)|l~0_K!5Xvn#9=UnOg~BAp{kX)69^leD|W)u1RE^PD-YO?R}++3u=O3d6f5r_ z+&-sw5O=;e^9<;HOP6Yw`9~T1`ubWXU+hYYo8c(?u?|O-f`>9FEr0-n)zr}QFiaeM zB9Y;C+h4F_+#dbdAE&iXS?Np{~R~E9z1WE^5M@Xjow6V^W%E>+$=Y8jCbmB9|v-Qr0R2 zEj<}{9I$<#=>M65$K|gba4TUVO`hOi(HVl&`jopFSmWxw zc8vF!`G$Aoi1{^IBM>Br;;G>~%&BkGfIZSAdd(%M@9^_DXYQ-&ige8FOd*@TL)_)? z*O5AwACha3;LO37;8n<(PCum9k%wzD0H5cxa5#_iGzF%J+P2vDt2mmE-$R`TY{C$O zpwF&~kbh{AaTSAuBSv1rAG;uu!E^%HN_TH@$2ZZ|uJqFHxz2JHn?~19*?USV$m~_V zKrr8kI$b}AWOOwgxu@Q|&(pz-cX^uUd}diNW_-G9xC$x8@dQE>L!2JJNT9{QKGC@T z$gb#nvNQR8+9#eG*~Uts6vh6a-=%LPbeG|f83-xy0CTl+c}0au9Jb1x9wIZIDLIEG zyHE0CE&3{}%M5dB1K3KBABJPKyBU6JT)ui42uyDCb-f#``Gy{eF}+43cV^+H5n8fw z_n9A!&{uyNKIG6myW)Hvg4?{PF$FC87L7Bs!;(zr#g$gSoKldk)U=XcX+4KX1w2v* z)mR+ogu{p(NEUwy+VzJwM)Kt3od4)ec8of#S5#$T)ORpheCQikHTN+%H|b#nqC2Br zG_Fzxv%}rhYqENJuu^=x;yU4jB+we?u{A~8WwbehKa%KDTt*j^{Uu8^UD=IYHD7FsYxV^GfP9K|MM<3QV|^$)f{y>S+9#K`NeV7S%f zDdgT=e|tGc&XClJ-*aUSZdJKtf6Wnc7cT)L=YcGry6(jHfez3I?+s^fd{cQE6v{IFjfbzb5u{khLB3SUZ9u~ zdv>7*nnI%2=2^G65C%mOyexv;_J}K*Alxw zr$4L{IqU3ON$T1ah#Rq^^AV|9w2VG|ZczgA9jk~rQPox%#ga2_<5hNQIoIU~O$)?| zkK!o$GyQF}4>l2}UO8{JKA#$keMNTPp@h{l!50nV*gd_P6~yHG#ZPcW;ZG?p1F8@p zM2$ZRlO=tK#uMB)L|u`5`gnO9N92iTXD>WyJm z`sILOZW-%}IiAxF0hY#291^pPrEvXeyX_;k@ok33`VQmt=z6}+6OCe+p3A2NXP0y^ zo1K%N+A3#2bMii{*ws?`061VE)HCG^Fk!|Bc*MGHm2eXqxP1x2f1=vIpa`g1SM%E} z!xSPO_LSzcn`q{)Dxf~+aQFbG{!Ye=IC9|KJ2U(q$m)Yk4;~}hnoPaXs|=vRBMAP{ zR*<^4C#{?3fOl@&>59`_CX)5)g{$8Hlqjlpi)Q6vi442hswuu3d}l?ZBsj z;+jQfKNF(#HntZ;0$&5**B_;*=F#SG6{FF-w2Fj-;Ytg3%&1*}H_F_l0m!I=%_CT% zBQH2IfaX8A$P8#jo+w8yMUB6Pl!Wh1wC6L&NxGVt*CM=+iZwwXu=uM;Ij>+3dcx^!2r=niMkCtE>UkOQDhK%+W zA*;1qH<9E!jg4Z60>U?~q7ApyJ4LoimJJo)=zK41RZp@kX)v(Own9F~hoj9wK6dr^ zE*ZS#Rorj&CXe5hvakTeFH8pHg!!$r9YvR66OBMt+u5J{!ExfdqF1SsMzEqeMV%5g z$#8(US^^Ea-)bliv{c+;{JFEA3{MPmmykeE8>DFCr}vn(M~@$Hb3`88g`s#C5%+oO z`&|ycfJyflR34xJCj{Pj_raG0XQI9z2b{ap0$$v()-2R4X?NT^R~?6SpD5ACRAaLP zLk-*zyk;ag(D$rEo7B_I%snKG}1Sc1E9IBL|-og+3QB_KQQ(CE0V+O)^8djt5Bulp_9W5ea3 zuj9{=8(=p<_dhNKENOvu;t41Nxh#FJi3rq1BjKc-en9x7^3QXoZid;~jRAM9-O2ih z>F~S{@f8ISQjx=F8T`Vy;aq}Zm^@5jPlnH8&zyM#GvEU%(_BF^mZ!lFSq|mUEeVG~ z>NSst5XeO*{Rlcw%uhd{&PogmfO#wqxQ9>LV~5K_>o*MM z(DA2b+bg-t%V8=?pDd(cauOpz3unv=W} z?n_r_MdHw4DD1O16vqvSFsGo$n5{$^oY``&UB&M@)3_xd3CSJGZG2X5z)o{_Gn0dE zX|*$DW=jTzCY=zd?|&P7$G54Mi|83K+mWxDt=nzU4rDhThAK+|`e6P7{UgbI4s`F7 zL55J!NU4J%SD9Xhu6~)tMkk8YGkwwIA=Cley2@FWW(7jePyiI{PcxSLp|h6MH|yC) zB|%4|e)sXYk=_Z-JorW3;?Qbrk#cDKMJHH2m;s--u&&%qy!vC+C+GEPa>R6vWI2Qn zfQA1sOiK8F3e50XwgNxn@d711vwrzK35P>0n`^OKrEv@5(Dz9P&|o-hTPQi4je67& z|8WJqvuZ#HX*A2~UBBhjN2U#zPjcG@Z>{-r&~a3%lSO|ahybQCYNrVwN~g&;l`vo6 z*Td;>8tF9$#fYbw(UDqE#kohOVR9IQSN>XyKb3u^(y|BUXh~F0`*MzGKo-5c=*4pU z_nHMXAkWbZ87CWot(L%JG%{)7iP76gE6hQH(+D-tKm-w*xLVh)n<<7j-nuLp=92<1 znjs6lwQPOCgDQ;86CDL_hJbdMJZ`8oOKPF_8K@*@3MoJWl!c7vESaC=+f;&E(n56| z0gtVSb*qD>KF0?(pv(Z#ArS}B0X2E06Yb|}3s7@*I1Kasj!3}hrE&h)Qo0udDBU?! zJL%JGZYCG2v2nSuTw(_2u2;Mp2Og$ePcn8bv@_mdQ?Ia2Z61FxLyUbi9Cv;41pBgr zBQcww_)k7Lh73@0r{+LJg6K$1PNycji2EYOue&$ac=>R+K;3e$Y{AMFkj2saz;(1-;LUMfa_2x!pixA&n)~@vS{ht=+~rkv+y3 ze~ytICd(2D)Q{NPnPD^2t-G904lL(be4dF2_EifkbUVi+BqRy`8O$Z%wIW>$ zEVwm<#c3Nr~K=$X~H-FoQa6-XJAM6G(i!0&NwXL zQ_LJri=BCf=Oq#!5_)(Hu_&8lrT`p!c@P}m5b5Q!w^VR*%wUQwNH?p+Sn@&GdWb>E5LYR2&I=i zGY#JT(3N)n{IX-)NUZwI+7p&=9FpM=HZxJaHn#SB(V)O!==-Gu4126Z(6hKP!)m{n zir=9lB`!2Uc>^gVaj%aKLtoRzts3XM(Fr24{d}793R*(wkD2bf)vJHh?6_(o67|f; zq@{*-oph$@;_J(hJ;*aP(3wg&0)JM)p<}CsU5NhExZyW@5`u)WyK1mNn3EHYOV&h$ zhF6H@mO_$*aMJUw=I1Z_K_0)s9QFbs|EyRh;7Kx92YCsy5m^m{uk-Y8Su`wi&ihV! z&!lRB$`zQ4FTTXA=QK?L6;dRiLOIQvI^4na({_=@@1SyAqL`al!m&VO! z#<_%Y*{dauJrouNT2cpLmdr?y@1mEaheHckx=7H^jvT%sbpu~H5Ki*vyqOqKR$V4( z9b!^yH7y9^QovkkOG%*z{U+Q&m~=PZ@-pIhjs;?y>+VSRnoxgdtY z^L$vj<#{wX*>~%Jw=Dx0sr(S@bLyyb$1h!l>TsM+YuIRlz~-N)T%f;&gEYOIL_~61 zD~ylw0?Nr~2AD3ij*^)i+a~6k1FFXDA}$R$r9{*yPmgZ`{dO!NzAk!P<^DLQ42Pm~ zBv2eYC~~D5h*{GT<6PiEW%@${n*Q;KQgmyoyPH`WK&25|545+kX?*;C>uZqe$`i$mo_1k@4y<2y*yt=4S;QUI@XX2*NW3#E-GKbC}>jP;=r!lr2w`klWS z7JuJ$!3@beiVjy|AS8b=jI=PtS09TD6j4`f>Wb%q#_??A#R2I3o&E+I{IqmjNa1Nl zr4jFo{Tw%rBi9gm)R?v;N}dpI>796qn6=S9H1&6TUT!t>0;#jGDN(O{sv)tHNNOGv zzvdJ0XViKD1IWBvjq5bY3r-{W_q$(3-18KMVU0Q$IT!5RJ=Ml_^bH>+_SYUBz^5H^=rZHXE;!0Q05W)Xw0+AI{QP z`6CF47^1&KdT!EI>rch0;TX2!1R%=vM@E>t$Itf!b%*F<(2m#*b(Sn-^{3-LTMLh! z-mOU6^~ipcNq2I=QVh{ElLkWPd~*3mYEQ{{o}eMObS)}yBsQS8`{g%% z41X(>XzX4Kgw|<*L>V5`Y$F_TN8BaP7zY|55M~x+O5U_`(nBS8k9bl1iI`MiN!-oD~b2J z)YVUEU16c!FYvbZrM~<7p3|XZ**rjcG9GJD0z^Ek`K)Mmff}iA$!~x!z_38D{^;qX zqZOI=0ny*yzCT=NUzBSveC(@FRv`+SvPVxvR=@i?c>gzoTlne$Ci5Shg^$Ryo^Yyb z#QzOv;lDYyD5^eQBg!HEK|Ie34AG{AlT>1}ga0Sw#Q!I5&R(vwXlYq^y(khba%prT zoE8(06OT)JS2rnEDZd8P(bkIxPopF7<;q0ycZ<~E{SQ0|Jh{kuG>^{}t$#SBq$Etp zY_J7Jd^Z~||nv_DfoXZQ77lt^J%+iVyIbBzKfLC?1D}f|n+rdBQ(hu+1)4jWg9U!e9D72n~ zJjYicF&bVIwZGEU->uF(UVl4^+ie~3+h)8?@~h*;JqrEJ=MZYJ>P22)`to3W&74`U zjaUiTR{J;JZQJh-QRJO<@h}6iyIh8kLqF>9`pCXJ3W<5W*@huFWZ{o~F7TcVB3xpP zq}tG%v+vxP@nwYKzp5#YE~L{`384&cbf6SuWHjlp3BRpp+!)|;Bs7~`KJEK>PWTJC;B8tt+I~bY$Lu|h zVpZXA`9U8?WeN6=zDl!FLoZ(|7Hs%?2NVH}`)_Ju{#LnY@ND1;UH@dH26qk$_uNDi zHu^2oJA>b8>N`Awm6vGsg5UblH$3Dy=U~5@!f3<@8C{~}|zrz$OH%@l( zo}@KjCeubgNVf`(eqaNgZuZ`|&c=+zi0 zSe1U!5g5em@9G$u(xGo>>|DT)Uc^!C|3+YU+DW)fJbPkhem?UfXO`!Y-sZ)G1Z1;=1!!w;Q0BZbanC#2V7RZaIUAe`^LiBa)tH!n; z{pL~cTm8)LyF&Vmtg#q;$ar(&M67namUKo1il@8>w{L9Fm^i=rH?{2~(4!Css=O;%NEXuNkkEXbE9S z5toow(WkT^V?|_>=l8-#ikpH!dwtpk&2C;A^yV`9*AJAdR_g@pfm46>5KH)cn0VIxD5lYJ)1jPR5F8AH)&6{>sd%JmVDh zynJrU^~*$g`B7ygBAD5!+;fqbXk2WSk<2HZJ?Sg_Ehupg4tK*Sb;V{~lZMZAbB7sR zj7iC;)TLO8jVd}1{*5d004^S<=-`K#56^}YutWX}xKHq3=s*7(a9{sG7Z?iu1O_0H zKdbgVVavw>LwUv_V5rHXUvNYgL}D0$Szy9XjGvp$XnFFVLwtN5cjEPMaVz&?s;Klq z&X9kJAwTnz_z*-NCbZj;6G++>N=Mg+*4`gdlP?!ip4_&3HjX~k7iTaFyT2Q2qtg_c zbllr8rm5rv$RBIO;WLe$Rzr=I>Ne-g=y7lDrttVg2o(LSjvp`tWt^u=+F*H<-*jK# ziY$E^STvx+#S;Je8*7(dCg~B^p^SVGqB%DmH~0znmyf~z$mTY5+?@lxoQUXQ^xxX3 zsb72-6waW`Sq$!Rb<8-DlukkpW`0EX5(_!ff88DfQ;Z(Ome^b-fisYL_QChbV6SY3 ziUEUhDRQ~9w*Wpt0n^3Teb8v1TO-rV)!|JTo$Hpw>EOLgXCDMt&;O3@3%aQ~RP&&hLAD7c&Rj)vxl$ z;ifN)cs3e&3VkBRbIm;vO^Pd}P>UgKWhRp*zKOA*)5i%*2G5Mze#+JR1G?VXJ>V|#ui9;bdAn{p@ID69p}Ku*|g#dL<>)dWg)De z(J9G%6|)`Eq?c+|nuX{lPoYKe32iOR5%}6oV{rBO*zrWdjfe0f8R`o=erm0p*1Krh zfnr;jr~h4`w058~@-psW7(x$Y_i2cW)Gi^t`v9spL_7#n^D}A5NZXkreVxBU(~9|+ zZm3$)N8iG5q%QWX5#!kC1#kVKRYn-MmX0xHlIiQ=*Lt=!t^Q~tCvoeN&*X^htk#@j zt7as+u$;z`iQa1JGY@w~es||49BDmTGkKQvqEnokS&Hjh!cJvcT8AuiFwZlFyTkZo z0*NtgS1|m$hT&Am%L<1Dy1Lm7$r!#H+z=um#&ezEG|O`@`r>Ohndpy3Ov_RvXfkP^ z25J7iJRczO{$h11at4@U9xkz~A?<;1tQ{iwsX!=5=c96F72YO<|&9b&2+{_wB0BQ6k zkXpcePwp2@@E`D?58KR;61{{H+=q~WUGZ;%SMdEm>8RMbJE7nwp+d;5?aQmZ(1z9D zOo4{DF@(LuRraph+*kL_`9Yh`FV5!??Xl6fUzrU{>6H)4gyv336%2ztcL$2zGW7C`w>isyS%gYb9Mb| z_BzSV`q~CF>DTsZ5xI5*O{xwtw`&nJxnJ3_EM_}7%$gt^)r{oq44uM^3D<*VY^B zK`PY^O4u;*-MWOemfsv=x3{ye(`Ong$fqOvk~`07(1)>vcdRJ4x{#QDA4ImQAS?B?zKxBYi`4^%hQx@uBxY{t`;D z84bsfLZgMb0jNCJw_<7IGcFSORkjIlYzI(AtLT3RD!<$?qKc#-KG&GBb<;)tVM{q7 zz`urDMdoN~HCx0pF(9#aV?m*lak~a3xY_fz!llD?Li78F79wqh9|8 z;YTZ&@Tq;v{BO9=VpJwPtlkPULeE{pN7)MGY`?HaVv>?EKmCFiDPvK>7_z~rri5%L z$Jj(M{16VqV=g-hT!VD)<19L;^-BwFJhrG{RkoAanYk#4VAqq8VO?=I4GgwnrL=2DB*OUV;^n&PDyEx zeQsCKKJ~hUNrG@!i&#sM#QPKH6Hay|Xircgn=hezh5#;j0v;ueMkdqa%^1O(nGhCE z*o^WXLlGfoF#s{*8ODz=;?{f|oG@bnAMi2G;57$1S|IZIf9zNfTkZbRN61%ztQYw) z%({^6JFUZuSNTFN$=OlEFX}MIGb7)Z84zNbM5pc*@7j!~DqGvsU@glLY-S0b!;J?1{M<{SB~X=PrhNquaxpfZ2q)#kx7m7V+5);Kr2(8lm98wcu0 zylF6lvE9pHxd25jUh(MQ_5dv=O8l!AUa(Yb?#I||V|DQCH~b|8e*N<)DTO}Ml=c{L zT$*zCcSIGwil{>b&u88ew7Xeg8ubUzFmqD--`9B+4}J8P4BFO~2|O1>6WJNumE;K| zp}>``W*bZsBjGUtK48-U{|@^tvDyM=h-Hm^JF?IG}#PLim{|)ShE3OcgN(a;6W;(Q3ndY2_%@4v0T+mf=R7+U-dwYG2X zowC~xl6VpEa10Mt;h<@NQLglaQ!R|}X@zLn><5*TZ4g7QN`B*@eeH)~7@g3uQdE__ zic8qTG>HZ6*Q!(PPxVIG$!!HCYA&*-J~;e3g1XY$Hb$(`j)Tp`UtNIMi?Z)yj?Gxs z{ze$|!)2i~3hpgLKn{ag62ByAw9Y(Vb9{%&iLCi049D%ek-1rPZm=xpwDgP|p$(r< zUtA(MMU3}z!EXd|U$HU_U+&pzJKMauU;~#-x@rAEsl{$bv-KY*!IT`mg8TzErjSJP?!`HE_l9Jk8vv__g&t z#J|xR9ra?}kHr>Sil1Bd6XLoBmCOuV0~|;p)|~OR(|ao?++MskMqLJF=w;>ZaX~n= zw7AJ*zdOosvfne_Kn$7?>=8hrvrkAF*MIAIt+dS|PSZSwY54Rhc;K71oM5IjXJx#) zH1`+Ac!6ux!%`To2-;*0L0&&av!5i7ED#@Y3 zGd1xl%Xh_}$E3ujtn}e_AKp|MTg9^RTDM5}_`0YTT0H+cq?FU5sC9987kq4Drf~K9 zES|%O{fJ$+1Gb$#J6JZx{KegyTh{2sugy8dUp8^34Hw~qKT5l{C%2C{`8)SO;bgDW zSWW6WDt)XCG%eI(KrF&XUM6A#Q^X)K_Q{)&ytz=UNJuWL+c@Fjy@k z=+=xKC0-T>=OBU3lvkEFCeWP$hAN$e8jO2M@d!nWkYlPPRE64iNj$fvUwYac+-yZR zSNa%phH>e3BR!}2=b7o@Oly18n9!{S+KnG(feyXZkmlM3{=Qauqp@mc_LITX8}I!k zl+YQ(sc$$0KmO=jJtG?qC?`4r|Fbe%BTTI_JOKjD=zkH4;w){uW%$^ie~OU6@r(H; zM-?OPLaM!b``fpDwKrNRftIX#g|b-^uuD)3EyC1B9MobUd_AQW-j}k-irCEpBxc6z zq}gQ5j8`aNiAf|uIzRk35~Z8$+`n=u|EAygCbft2;B`H??5h7|k^ev0FTr3g)stRF zmA)=8SEx&WXD|3j)$j0>FD&#?AUzz{44o3)S=v$fXwncK`524)FZk^T4oqqxV^bkx zVNDJ@pKx2KoieQcxiGz*ohZOxR!RMQ4->NtQi9}@luMY^F9~2?#$VN}m=Oo1T zE^WE0G__Ld9w$mz=4MMsrX<|Er9T<$H6T}_V)RV_@0`AOy|@G9=!du(ZO%;*#l_nV`VfroT@B2-v6v6j8#)CT%?D4 zLqC{08+ETTb}#jc?pHh zpPd=6*xQtKP?eE?6H9+)g6@f8JRu|*KUNXvr3c-2@#m~zlq$Vz9^}nDpuHL$adRf5|C<8u{6DIjmyDKCuTw(50iq z{ieA`@&+IVm=bC+sAxFheGJgahU+>eW~_f~+N{vG?Vr7+b6hJinqGYZ92m z>D6V{ban*th^#S}cI1I3o2h=P`62D->~k%1Wb%NhSrk%%XDIvSW z8Od~!Pe2NG0t9mscw#sB+4NvlbuS8grTg44p-XW>hfL-EnV?TU7t?+cNzL9Wn^L<-_8q=bpZjdt4gn@MLs4p|8= zPo=FJJs6QZ8qu<9^MLmlJL6T{Q8&zmb?mi_7nQh1aIrFdyV{v@+eb&(QQp1j!O+pn zg;2!Qa@5DeBL!=dZFgnkyR!{FsbcB(ztD)@-?yo)wOnK{2yoX=kC}z?pz|J_*xup> zU!Y3E7j*+}8?voy{g6K!26ZkXfpDMVqb&rhmZkFGh+rFtjGPPZK8h`s9wv*PmV~(% zL#URtDn~FyM8dK{e=`TcJlb)rchgyN!XDET205r?MJaAEE4no6lQ0dTHY!u}CgP_D z?nbVSp)+4=4DSW&57C%{FGu)zM>;8*%vt@^}mHN36(MNDR z)rRkrW>Isyr-|>}Cu_WSEodx=r@~H4sruH&U%mC1e2*tw6|;lbAzg}D!Dp7k5Q%r* zUO{E5lEWY-iASxB1UErO75;?u*hM#_;o2j+p?&L^^#=8S2I$%k`6x)>TU*%dul{QR z^Zrk;`TrS_v&Z@H*9X^?e?+BV8pSgd{Q`y6^QmW7WVS>h&e26x_JB&1d0_%_6|ne&N%3Z zju|cd-U8SJ9tdS9(HtK#_QG$6f~0qAYsBzq^8{S5E*aNGVP}!VgP(2{CuuSN4`JUN z9a+=v8{2j!o^WE@PA1l5f{AUXV_O~Dwr$&XCbo6+e&^zx@1Awo9N5Vh-fwj<(m?tCg zO}g~17#IOBlp|-xE{LRjF#N9V`xBR56XVuIme%~6#U)TqcGIfm!`BPkHT#I`i49>o zi)y7ZwBcj5YL)95iHbDpMY^>qi*mXDD z;lp)2I6who5AsA$!T*Ebi8qP62;7>yAvt)APx2G%4B@X5Yz_xkvkFa4$0i`!yA}uy z{ob)@62doMwxFQ5=PiGqQ#iY}@r&?2x-vXdpdFBZbWVLWdb9MtXLGs8d3{@wlXpxj zMezI8`_2A0S6DpT@m0#lL11S2Lc)cybwrLwF-2i~cu=U*3lu)%dv9aOX?!=iHK!(dhF<CRL9NPN`o$Zg$3-rWaz{t@;)<1#}O*Ye}ebog>l#W-0W>aDR~rsN>nZHBdR^UYt-UN!@K<_8xVAvdHtm+ib4pVD9 zSq4SkJ%1GCv*&n$zCq}D>jnJu(O+*s5NSl=wsBf*dY1R#L*~1glDJ%H0?q-}RbP#% zhy-|bv0buf2+G+I?=?e~x)s3e*{_|1EK4DbNn>rB__QdTE?nT%wt3+-kl^2f$Wp}U zRavn>#WuQP__Xdrj_WwNQ27)jbpuW1V`;B;@})S@8!n$x&8_VffDCM>>8{t;n40>M zqPmPbN>lm0#8}5xS7HIHveE!&sbH}eEG&8nmtUwu6qL9AmyH^JrY8;-@&i*u%DO1< zn}bB;RHQepcqHj-1`FoDkRspT>a&!e{;g=)9Mb$z#{~gl=nD3pbw>AkA0zMaJHqM9K0UZky69bT&T}Ijg3z7dlHzqsxVs&j561Ao}NtFa{ zWF2B`^;B!I_C(8t-oi*7^7%r}5Qao^>(QfApwlhW?Qq=YBHiJF`Z2S`#no^q3I@q8 zTnbCnWYRHmOlr&)pP2Xvg@A9aXRfbj!yyFQB7|zJXKtgfEdw=&_e`!y+fhQ@^Ad2# z&PC71z|S_O8p9AW5|&0l(4BmiMYNZMH6$56B~AK~MO?{*RH=znS%Oqq1ItxXg7mp` zGxZJ(wxODbrWDfnrhE98l`O%#fY@^WFcDLzzK`|BhFpM;FO3`qb-Dtb5W8n_6=$v) z9tQ7G4}-nJ_LF&B$0_*LzaS-hE&-tUfGTqy`Z6y>&&J5b&%({ZZgvQu*RtZL+YKpD zio6@&@Bh3Sw z2=4y=)1P44+J@+Od&-B>+J6B3Me+)hH=!9wvL{_dP~|5l9yY6Hg?8_c``-fYf7g}1 zgq-qP_nC8S9b1@)zp$7rE-(|d(k zyK&lEn`htGT{A(ek zFsYku??i8EH`^>(8J=I_?fSd%-ntFUAIdy#&>I>B9sc>V%`4>qe{!P&^KyGB$sos! zp0Wgt~9CkP`FJdK!P{^ou{a{gC5f&sw+Lkmu-0*U|x?5ceqx!_I|hiRyYs zzOL|H(}e0Ef1nw%0tLdS3H+rOgtLUQo;=Rs?$LUCnUyl8Kw7d+$YP}}`8eTy5Hq1F z5JdLVB1klAQ9odod_~GE_S%oL>Dxmn>y<}C!ddsq5o{5^32ADthT39!>D7zp#Z=b_ zt(T3QAs&f%XLuMOHKkv2ENxMo#)AqTZI7jH-EVOV)h{?WOXh~>kK~0qh8m(CO8P_m z?bmM3aO7eVa~gzOk5 zqCXLcWEJn}^#gl8xk%Z|%H5vqO_&0C3T{|z${uvZO*R~WQbb#YbUpvKJ_7Scz;x}= zQR)q%!N^G+;Xab;+Vc5oe*CY?gI;VqpVyTi34EWL40rrg*@pm5ko)V5GQ!=reth9- z?!pe0D|?KwUAu2fUN@$T6=Ju^l&0es(ZX+O$qxkUgS)%Zg(-I6>RAG>W`Uf5h7OcJ zp)OMR7r)B^lX|}qie{CY-f=_V}O@7NS@w2qgkt_oUMOXsndx%Fg9+KZ=rgnp2FDi zXSS08(g~Bd$Cn}`v+^P;`ApRK)?<+Qzg$692X%FRrp5W&e3v=F?4?Vxv}QV=P6XnW zL}sQZ?+4CuC84ixvoZJ1%=jfXr>W`T11p3vE0 zx=i9#{)jSa#>qp-WG$HmR$0IilT%o@t9OWol}jDr7C3>;vodj@OH^IU%;k*;FJXTP zVB$#=3w7R&AWJCtag*)Wq@IG(&c);#e;W=^)fl17qN1Xd1nn&!6jXD`lF|{!4d&9O z#7rZDb z+WjdPlfTQ{(|nezVoyvSn~DDUd%HgyfGd#|w-JLbasO0u68#dTBq|c|E6b*@IU>FJ zlwA+&x$5WlcTZW{@R3?JDyTrRU@jB(7^^Y@&5X55W0KU~WLpK!Q-`URb)XZLsxDc0 ze;DjX5xs#|L_<1GzVoi0hyKD0$fSM)`dlYI>4UKRc$R7Zy5^+5J{7<9(e_*_0A2H` zZAgi0g*=am2|t5Rb!zn+qX)Z?4`}c9^!hqUBhAS@vfR6i7Uk8cg5R9LidK*cvIA`_^L}>+bj{D2;*m-u2 z2i0ItSEN+Ly^g(96k-U|x;!TZ=n@HOgV8k$zNjRA;GZ~qQV@+{3_o4NSF+NoytGRK zl@DF&1`6n-t;7k!M)ToFC2e!4UU3Kk;2!gn=vk8g*hOU}|9nY$g^V;ZKv=z~67)Pqj0$>(woA)^#X3+{@{KHL&n)3%j&~wr$`BQsI>-rIqB<0kV{- z=9iU!%~L$$Kp*UT3MnSPfoLpbHs0Ncv-T&SM^(b%)>vSxF|<_|GKa1yK}8LOZM3N} zCme>6)SnvBnKjo^LfJWc0Xop$mxgVK58oA*xlNY5AT2s4Vlp`7DYbJ7P-VOjcx_)ah)Ti{EE%ws_C(6}16^>d^Rqe9Tg}MW z-UjS6rSGU|K7GLVbVcEoXIVNmZ6Zt!f{q!}3OfgBwF=o}N@Q$m1qq+!U!YBD=o~~b z2t=&&$B9HruXZF`0BmUU_uh=Rh-mfFGAN5(S))2+rtdRP62B~Xa?{v~b;TNJIipYX z>u3XOKmHk&_2Vq`K|j9J5j(00=B%pTfR_ea@R3=B7K)Gz!@|B))WqHu!G@7(EpBAY zypMft+-fiF$Z2==O}hkR)jG(?c95{ zNhCYZFsUFgTeQc(Q#ke*#xPiE?CFL1Qt(Ne#+agx6(pyX2>s4fcL>GM=Xu+oA41aC z4Z*;*t=9nG42kpbg3cI9flLqXyPU_MpV;<-JEPot@-2a;oQW6OV-Ge}iHbiO#yx3=mP}P%NeH6ej4a`W zVoR@(=7={vwH<%F4~W%Bs<`;}MbH}#Ggfp@zgGD#N7adcuZWx7uE^Uv&E(kus#?JX$}X zfquuOI&Uejy12U>N2UDn$1yJFrstymZpe2^Xm&0hBGfdbW=@s}`v_*xmZz8kN?obQNgv9W(v+0MNsjz^}K5%@&~qTbIg?hUsMWBg~=sWtAjJ2ok3n z=7t>JyGy8oY`awNy|cekcV5@jF&#=?C_z9J+O?q(viEHjb1qjCcv|6t2pQIcW#<9Z zKnLJgW z)S;Zch7`84c$zF=HI*6kcPfo))sUSBE%dpy(DeJ zQu2TG84!N1;i-xFlP)AOfLBo%;vRZERugTkk6qkp!SF(f&S$#wk3!E}k@VWD*&2n} zG_aF-9i~@dq}?LnB>0}|Q~~08B#umT&8nc*+{S~DYh}gNpKB=g-X4dR?B-6wTaJP! z9;-T732W&fZJkyvXmZ)XHFQV7q(4YqTOEi9?0GO53?9K-a(NY*`4P{`r+oKZum!!N zSFV~J__yn3p!wXP$3`sZjM48Sy#q)q;kpGPpW*n>iSx%78bLn+696bul+xB&D<8?+ zyiq7h8vOQ2T#dH6yF9w4#>h|F-)pNzVo}Vxe?dNVPj7PgxGM_ltAy3{f+y3Fk#TYQ zrm)mHDhD}ph0FvT4t;pjQh&bnnp@@-yx9aog!*Ixc7b;OEf3Rp)V_0cwF^gProq+djQvuV z{8(2JBcNMBgI4@0HeuE-x$}ye(iOLxf-R*V2D8 z0*61(0R`eP;~1E^W#aU%yawgb?HL82>F-kU7Iw637v?txGnH-EG8A4C8z86VXQSuW?hBGL+}p%Uo1|espGiqi zVF-~Omz9@WxO&?C_)~ZUvui5*HXXiZ6h^)^$rg}Cy{ISJU2ev15i|p6P%$1c5T&;kletZBX^+9aZ4m-! zUC(>*@5n!StOEw*JogJ%@`1yvJ&5s*($e0KIbU8oB2H^g&gv!aMWtNfd@$y}j_mO0 zf9H<(?yX9!e((_XX<1X6Y8Fl#fa)oF2KDiQOB5FCl6|Phk6Y<6`KEM0Y~iL!CPC zZHit%ZcQ7#WPJH-3LkNCe9KjTAto*>n8O|rTKH3i%DEK>bGfL!0G1+?fZBmfyCUDp z52bay?Zm_cYq+M;rSKiaKx0HsRQYF_f&{gN_rbQqo|~hWqdw0f?6xgBamikEbb)5g z0-neNlbr95T@L#~qzk#hH}{a-(>ce+{=eM2e$z38*9urc)j~pGt{hgfc@VT9u@k)I&!wX8qC@|FcsS`hg z)pcKTY$h#9>~y>9M3w4IG!wXBh1mKu1;~AhfJ|VOC#G|=#5#B{ktkJ|-c3tBb%e4U zEjg(DiFu@z^Q7UpPb^|6*YqsKzC@&6U1$NLrI-z_d1KbUDrUCdP@$SkuYUA47aKxs zR(L)qf@&AnA=3gdeBjS6Y!p&0p*$Fyk|JDR2o`c@?%!1|7hik7%IjBO z2x<%d`9b9+ZNa)Zr2J%3p_6NPM}h&6ImS=+GkVuQ9;?{a(}tEqYWsHftyg*hC#a3$ zCy4-YKJ(F0&ns3N8#e>jn=E&8J3W{68Ah_5o&&tctPC=Dp##jpDWNc6Y6_ySvh_y# z(sQ@8;8U;?!UJ%(hgep%q~Z8p=r*6V&b#a-%%u8eTSa*wg6x<>@G0p_YalxNy)BEa zr3gt3osh(Qb`)ilWB-AReTP0s(W;!$3Br^6g@}UxF7}pjMAz`c`a)#;+SU(m+L$4Q z@4(kst=HH>F{8CQNu(H{%U0#es}Ec!8fQ6Oy>p0TD1UP2mkqU#)#bg3SZ!*R+hd$lR+xo`O~I9nPvqad8Tbh znKg&egBo?-26ZE#Z{a;It3vhJcePc-AymiKzr!TcXX9Py_KsbJjm-;w50OCxd`|XJ zF_Yx%CKyce?D^ZV)>Hia@P=Icbu^f9&olqdS%NR7QWvYmYE{E$r>T-v%&~IauBJo@ zFLzLIZF&y!Yaclnzuci(7vQv?e{oCFa6F=VeTF9~ui~J$d z=-8MxMo|x@j9+#=8OX2Aph7jMvNWD}UWVbTSoLga2`n*GyXSiqvrp%|reuBfd zaBB=Z7tk1q@vFfhbC>(&c;T8f6VzQnm&rBo$@8*^|QR6_9b)Tmk*gL*< z63PSzCn7~mQ53}NU{a3gb@cbLn)i)C1@~O)pIUv06w{yohS-$OKN4R7>zpB}zx^A+ z_a!m;uXF$)vIGnjP`eEt6UgZT8TKzi7)=e0%G(zqjQxMd&U3Ldaj~)*u^lKYSfC4G zWDWXQNxi$A79c!9V>pi#)(oJuVJQ&N2n+Jsqd*R92cj||xCRNN`oqg+iZ z%XHi`c!MbH%59xp)Q?=iVfKV06WJV2Tt055x!E-GWMK1Doe=?$LkKikA4Fae^IU@? zZ2Nld#Vx$@?wdpLor+r8eUvoIi0CT)7ChE2UPML%PWXx8guWk_+IExIQS1K|Kq(8R z52W{{uOf!`{dD@6>q?+<$qrTx!1}p56&Ocg)lJ~n0sE3#mK+i_1onXT(&_2llo9-U zA$Yod*~_oIeA zvb|459%~Da#vAX|7p_e2HDU$*jQJ}kt1~r4U0H&FOfRn2yOsCO7Yy@t=xw;CM!k2K zGqmE<_+g|Fz;zbuw$_7&-xD7t8I}I}6w;+x5FW~?ze^`TUzMfe&(2Zz%%-BcRpT2Ml06Wa?(xi$Ws7%5R?SODwWx+FOtlrU<<^pF3_I$;&VrqBWwb-?|1 zw6XseUGn-0F@#!*o<@3nd~R%*UJnNsc&!6X1li}HCkh9wyN4kc1oL5q4gt4EfET7< z3G0M}#>K%%Cvo*9Yx3RysPlGzRSl#&Ul2H50e^n@RtJt#IngCxc5bYl-Et-$ zqYp&#OkZ{Q<1`%pfv-Fjte@mTu#qsv3J4_XH-(=sLssdBQZWJAHX~vJ2Ef^D7Gz#*y!-at|QwlU2 zm7|-Xos^Uv8JC#~G&Arupe#nDVXX4OIKn2UG)Yn+Eeq8A_uFz^YUz`Y0s=BA`Y&7< zh<}HS2!L0?I3OZ+gSip!Fz06)=ICdD33>ICKYWcnq*Vqw2dZkAVnhBGr1^4>(hm63 z$s*IiFRlD1MGR~ruOx9*#wNw+ph1*kqTTH%?b-P0gQbmyUcAWRBAvy=<&)+1^}X}+ zG1;c`U2gR6jDJvMgjAhIWaG+AVTvXf)82St2ta>u1=U#vLKcz(HMJl7nN)kI_Aid_7l0`mc`)ttdi$!9n{H$CYp5o!i5YDUK7 znI`H?o$NzMSJdY|xb?f1l8O~g@WH^@CWd;|exd$kC_>(M;zN(r8SBDgQa*ka*2kY2 zPym2fO>VgQ4ec~llLHf2Sfm?jGm9{FDc3FEm;tj9*nTvz>apa$Zi5rG^zbIc&D;d% zKniXW0otSOkd-_dN9VzxA~c39)PU28w=1z`mU827&5m<&sSuMkggOVXS8Eu+FxfmO zDA|F@qA0NaSC=5r{kRt84Etd+>h!R6OMnmlrggA?e@1i756QqS+BHN2oe$^~gS77h z9?G-`1q;c3~-^f2Fo_1nO;6!mQ#jmOSfVzCGGUSbmLiF}WtwuN3PgX^g-8XM9esP^b><|t$UbOz_(ar%+U0gNd%vD%YH$zKfl3RrqjxL z5b9<`chP{=IE&!}Va@xTf6T?n$&kqR3fkGBzUp+=q?9nU)Zf)z0N%7J|GECxk?GmYo$K!m2;RKD@W&j8yVa8(2;Wi) zneQP$(jh}qSYVd7M@sn8)Bc;!1KpAo`Calu1*qdPOE_q~Nefg)yY-$HV;J0p5))++6s`D;qVlYmra^yo#^c56=7?3oY!E56-B9DqUY1DSw1G?+(yGf>d_jg57qD+_qflHK;2oln z+}r4Nh2Vd^qZQNxoY!PjvcV@?wGmQl?{ljprn7;?-JIO#l|M`;ji`32ci>V#Nq$yD z1x^ouxJzF#gZu(`*X|&fsg;RNewai*}MC0pyhRA-m5PAGz+e zWHkT$^xkFxhkZNEB^0bv%DXs;JaUc`=ew=^5tCkb$1-3U<6=8qyr5Uu&uae7eT>+Y z$Qr)^PZlXz9PuL1Yi!jO0x=ExZ`f|qqm*kLDeI?5DW2oN%^JAauNoXdWMvQBk7o0q z>U2=bW(xRh?v-MQifm12{B5}UOc!lT8HLMN2&^XOFzPX>`PpDCyPv_O1KwReV zHX!60nHjpX2rmhJTKU(0#z}(w>tX)BHnyr&J8rtWtG~@jDBwY=L`GpMZwqN68{C^Z zzs)PYWNRm@!lbkAG088Ld1A1`A^jET6^=~9P zK4j}&eGeNy%M6VNzaFQ?u)9lrI+apmSJ3=o%sLjw4Z9J=6600xlGI)7+>UjUmQuNo z^Mu(O%#y|KVgQDS6G_K|8VR4?Z<3DuTE)-Rcj5PvG@TN)RUT7>=&C>13ajdve}@*a ztJ{H#Mh)*P7&veDRsN+Pd+IzuI+7;IxHUz*hq1UMt?4xXt#W10@4D#283H*JkD(fr zKM~<6mBk2tUgIN@56z63U~-)Zx7-e)6HF=g?@DEa`~ip!!TanFgqC4Q@%NJF!J_g1 zS{EM0K^?Ps_RfA4J+iTnqZ^O!6dJF^tGjbaWH<~3)Q99fQUkhoc$jf)*OTuW_I1_# zxCUFd1>xz+#0a7v`FF{=QlY&olj$)lA8NOukUFK82a;$|M~F_azNKi@>cr-=QM#pk z+bQcmto?#>%i%%1SYNivgj#h}M^Zp8-rOLnNy8p1}waI|AzZ!Xc7DzRj&|m@ou_;N}|Tl5OPyeN%mL-5u9US{TX}cC41W* zp4nSb`1aiZ_oxoEy!ff>Etz!8Zu}-aTrEOPO&X9k=8%rhBp%yGOx3ZvCD*%)rjna` zHg&O0ZZ>F)48b}+*QG4W0ulXj>a{U*hyN{CioFV&wPqq7L{4iNK*4&;DAxhRPkmZ` zAWh9^C<2){9M1GH{=CShVVdAVxI8_N5iEGolbngW?o zeHso!rR6R3&xoS)GltBR8j8Lvn*ulsh^Ca}#L}1Zp3t!`e%gCui@mqu8nMSX!!KC= ze7?n2nswYUN~RKJ4JW>Uv>pa;Gy|Eyv0i|l*63@#-Ev?92q{#li;|zu0>RLfrI7`9 z%}by4VO&1m)DX#g-vYhj5K(I|28qGxOxOdz*UsxDZ7Z4$UMWqGk*4~>cR{iOx;8qh zIBmR%=VYniz|G?NGd^DmENs~eKQ&{G85suPnhK7WG(~UE6$C(2xuVmR^SOd$>P878 zx!Hw84RPHGrV*SsAz8-&Op-(sl?JK8E>g;6T4AQbF5VE@w@X{pv-N!iINQ0bt|=x7 zA;wm>m3pJBM}`#!MJdaEJOB@XBzPoapW}j=-w76Y+>hA=9yypypej0fFT$Kr5$@F- zw2u*xMk96ryAA<4#u(uTWGIhZ@dI4;vny?ZS*E9|cP?PhBh=)}CH0CnSG zLGoe!+AMh(&%}t>5{O*W`fV7i71JAa6RXs2KK+UsqUql<7m$f*8$WUYs~6)NYLnC{ zHg#@|>LN&LpU@V~tZX-{%vDiR4%6O(AmMEX$89KHJO5ZRz9E}&%5zyPosFk$GSiY} z9S)1(ij3m%%$_JlYk#Ibt7iGJ=9>|}>tpZJ%-hJ6@v6bNCRW=9v&=S3ZZjrKYrD?S z<=J zk=>~e9E=&f$7oRsmGx`?sn|~9u@v!RORDAC9Cm^w4@dvjoH@~xaz?sHhcZ?*qB^*y zJq{R+cXgMV0%=yO`-O}c(=}#_h3ZeCpPidxX8aJ#Z zv3#tdD}`WjCVfl`M3ko4YRWH97kJ#gb|VKKN9~8 z!oga3sm12&o2l3xX}=eaN4QPB>n4kltC1odBd&dpl|vh7q-Sroj5DqJ?JcOdVgVrX z`tjnnvANd?zzaDOa-wCG`a>+5B-BGWd?jr_8i|-AU_y7K)_R~qN=vFQ@F#_WN%+8! zLzp0cbTJEyUF!e}ZW-s`52<$Eds~GdW!Qa91~a)=O3~hwhp{=y`-%V<&12Aog9}7U8<7D8Bwu{*&fHQbsr;G}*- z?z!o*f6~O%G;6J-4K$3mY9*!E1;P(k53{p{R`CnK@qZuNN!c^ULSnC2k2F$;>ZjQJ zj*c0&d_VSd-$%gfLG;IUf!Ok6Q~I@>t0+DY?H!Q@Pu{ChN^7-PiGwA2b12L@f&G_T;5I; zW{GKyUvJyW9B)|}U$ZL^2Zn*6zyTJDd@7?`FOuKh{YGcuV-w$6#tm7$O56i4+Vp;X zZX7YNjf?WSp6P$y#-oQ?t_+9KbE@JRNJXqL6z$JRfGInHPOZ>RU6x>oPQs(LHVENyS#H<+GZSt_jq>#QPVL4_fZg-2Od3IBqq3 z#5PlA==>h?mct2b%x9QO{EKAq*m097K^oXV>O5^ZZ;iuRBI;_=(2(ZS8 zW9j)jpR*@-ug>v^qvY2z^#vF2G%_gL=yszXrLP>o;${y9?!s3~UCZ3t4eD0dbZEB!ovGa;^~ zABD~~Wd`BGv4}IxH!_R|7utj44eBMn8Frxf8Gl`F*WxJ-g14<9js9p9u0Sr7A^T0p zExmr~QlAJznP_oEe#cCCctji z`x`YoU|Tn^BDH`Eit2l!Z%|J5AOoIJ$8UfnoadVwmXnLoj1cUZ!7ZqAAw(?#?A>vo zOA(DJ=l5q77GOnVvl3p^mPb^Q2Yp#U(SR`{3? z-4F0~?+@^-h8?_sY=?S;vy?HT+RND}d#_fy*MJx|XX3_YSC-S(iu@ICG#D@#UKw-* z$YO+a=q*x!+KJEl9sy*x$!8`38t%LFn{7r{{IE(uv#6P>XE(3^BY`Mk-2Yv*;W)PM zyl@?NV4hGDW`o8PmvHlgp!FAizz832yBsvhBSrM$)OrxZ@59(jBxLQPC%vf$l!&T5 z#Y-rnlnI{c^gwO>tqTHIM{4BIc>%%{fQ3(>98{cx7?6;E=FT8&%XiXQj9Y-Y0g;p= zW%vi`X^5`J1j>f7TfK?RB&@QHUN=UvI=)QjSe^wqXu=NSZrs5=~W1!K)J0Pji3 zo22o&-l@&2q9^K`MG2TLFVZe9>Gd)QZ~NG-(ejEKYc9fbLkD;FD(+%m`=$}1OgT_q zff1O^EC1!nTSg;TqE5f9Db}0fODiI;`2C!WLw$lDZ4SvzrD+oS7b@8k(7<7AXp-r)oc{4!t z5(Pbl%-Oq|N$nni?d%V*Nd>FW=yg6-bdS2%vj=ZnJVu2`oo}79UAZr^OJd=L&VcOX z%MZA2L@Z3rX3hxpmRjP#rAG28OQPr>ZtQLo5bWJc|I`%uS(g-*BgR9I1PHo~oM2p+ zlx4aol4c@;`uwKh71f<=E{;x%QdHhObT++8NJpkmJ3vjAigDcCZ0InAUj{9jbjYe1 z#yk>7H5lt_ygKAcz{;clOI-b?=}YQx(4_>7dz~&|Ef~W}*`~Bxm2H(p-?N`{>`^y( z{#;!TW;fE)@AP46ki2Fe%9F<9ekqXo^&>!jj;iJQ1#gn2;TtV{!$5>SJQ0{xGwj4B9*4ixwV{SO;EfJlN$8n6)w?Ef-it7HCui)J08V1Lk0 zPR)IF^l`X=paoEP2$lv0dfWfAsSnK5hakiEQVwVN&ISY>K|d6%W63sd1M}hxME){q z3jqLynH=;pE`Mt`*V&tAzElc=}hI3QEB_O~`jq4BmaTn30Qc`IHSrmiU16hvlxA^;dBB zTT*vRp--t#K^w2SmC&?)AH}~t&|94=Lywz}oA}O;Q&Z6jlj%_KC4X1Ec}%(3t}4)1 z>u8M1R94=bJG5!E6P4V`V#q{1fS;X!YCqjB9(leH&+S^>iVSm=lbf)YZwwfcs@Q_h zIUu-TF0LG;KPJzDjAX_RlQynr07itTT_*x>dFSmE`=(Jbkj(8<>*#n{F%FR*h`SL^ zq(z!1|3^8{+o+sy+0BtrxM_ zUKq~@RYO|r&Jub$->Nb$Aks1Clv~J&Y{c_QPKh5GGh zL`RJjt)X~G#by!1!j&eX@DPRHCgsH>unm@Sq$T04r#}1jL9=cpN!jZ2#cdz&?cZdc z;!Ay*bHK<%aBP5wM#S19Kv_wCgkHG7Ug~?IQmWe)AB&`9Yco&@kFAvYm)OLuiOFGPdV2m4?9v!c1X(2J8F9($`$DuVzMxh&&NfXh9`2U$e zrK;s@=#AVTzGq?kzY9>kGSa?6(7u|| zzAnSOpc@)x5oGG!1A+k$0<%|>IE#xl1Hdq1F@ssd@(9LphzwO4Qe{|# zF_2VDWx&2kw@qZM5DCl;6~bK6Yt3~#3{jWyeDjULN6(H`L7d_zl@^-$FNfOXkmwgv z0#@#y1vD*@y`nL9O66ki!sHyROgH(P5;SdAjBg$fuy6AN$Y&B&MgEkzv8&suLcHuH zMr?sxKRwX_28Pzmdh<^DO@&Rw8;xRd$_9IVb%3g21O;ww;V0KNxQMWuUs2|^I!ZV{Kp!nd=v~tpaIZ|(ZY^7p zQIWj_Ze%6Ozl#b0*p*eQEB&^)-?6m&?egN?V8`ppyPujPTKNjoMae2-#zHfHj(pRb zMgoWjdQn=e<|uhC>{I2oWkKS3R#=8>c$Luax_Vv+2!mEvWJYTj5hlT~*U6G0)1&#- z@L;KV<8F*|mw4c8UF|9iE>lkUVXAJ5HM!pfPi0^pXiY-k6Ikm1%0L%tHA>tns|SA> z0BKK~y2Y_~hHJA0XrDOtleI7N%9ZtYDgjy?RRY#5i4jKEcB*ICpI}}xF2MWAoT-SO z|Hcia4$?WF#>6qII84*NUf>Y|>R+q#n>p*%3<%mkhn=tgv=DZ=z+?*0YB>b2M5lSDw}^v?&=$$E(VBIta0* z)i8dy@kiUmzTs_dFJm4HP}8;xdbcgh@2}pa~cxnHbeq`_*vWA8COameisybixXoMy=_PuYHTVltT;I~h^@%qjQ|@wt{7Py zgK#&?nRtP;ct$iEcwU&9!{H8BAJ1-R$%@>Go~ar1nmZyt=*X0|*iqaTd%A1lxyDRI z*{v^7VBLT}&{h+Gfv%3Gvg_NcQddk+7NP1yb`gqqtjIzB##?Laj`)?y}CE* zj0;sG5L*C7%=&ZP7jTk`u5&sN4z=Z;VLoEMza8ew!MeXgV4Go=@8*$=k$Q{!51K-b zuqOJ$F+f%$b)*{$8_Yvq0qn34x|vy_0!r>uxq3>X_`_ZUV7S^0X#az?cZ`m_?e_d* z+g1mibZo0*+qT_tQn5Siq+;8)ZQE7{9Xpxa&pmU_bM86+ne|_5>cxIltA15iU3*{H zdw;$_C^|#J44v>UO{c)?;XNzFD<>JQ{*Hsdox zsVpP4os~Nou?RkpzGSWQ3ewMaKSV%fe%HO~T3V10=3RQ`Oyu$=ubC$UE400sU=}b8 zdlRVyEht$%a}8hhC)+4v80#1l`!O$CB@RcS5DC$S|k!NZpRn5@l)B zq0a@eE?2h^>TlwNO;y8<2cn9i81hw@Oo=8a2}TAvGOx*A7sf9&;8*i!=_2?0!GvG) zqFfk_8u;ht`C?TSn(M5VF6eV1vslO88__#}g++bp_2?6xoO|qSox9e_{68E4rrhlp zr%{)(F=kIVUOV5RZo5BnnMK9wxI6x z=lx$JiDcH8l!q~cR}pj1L@vwYDSNLC84WlbQaoa~{urS4FaUvjQzhLYV%Il~_&&cIJg;KoPr^{+N z<~D6josf{_g2%DD0rzoiGpGG&Fbf0owUfxqSHlPFB%|)dTxE>uuwfgtcS#1m@ZAfo7y46$a8+=vRuw zKijhCxXU&75T#kyVJwhdL)CIiL+PLRFGhDcbe* zZ=#^&FfXY(+2M}>!gIg0iIdBOG2{k}%$v9Qe@iHvctbf}ApW zz7%7{%8(kZRl7w$e>BAXhdNE{E6~<2!(6N(7R#2gsshk%j+nhdc0&7?FSc9_a$pXF zktU1;%8 z)D&3kFO)YF1A^_cNg zXkx1OfF=M}X!4G0>UrZXQQh}9sjH!LPd*@u(&(j__#3Gp#z; z3`RudJ8qSL`&C|KJ&z3{;$=plgpW&n#-4undLjvg{UO|l<2Rs6S#Nq=qZ?bd1Ufn^ zerY2M=HoO<{JZ3WOcS`lrw9{1^D13G}5dZ4p80wW`pmCpx+%~+1IF`7 zhI_?;t59F_tPA$E;fuytDPMGG`v*Fev|ouBeX^j^jX?@zfs9Jr3BO_v2%4AHqnn$5 zWN7s71Pn~16-(Q@p_E1ZUY3mpqhWQyb?lBrb``x;NQ-Gxxrcy6XrS1SF*{=5j$Cq- zQ@mp1eca85=W(G$rpE_FGanx80(BXq^?PvvG)3khkMj?-4aU#rNi^|Q7^DgbktVQ6 zU{ZIjQq2!-(i$$f@O;z6%L8!=t`>6C48;E8F326!u+PeEW-;9aQ`F*rVIB*NU#0v;e zQ?lNADd`cB8i4=nPbOx?FEYhc87Mj-@u3&h-PHM>;sXnHpnn!dZ7N?pDImYCqEDYA zlb%|xX(olsb6QbhX2vs+dK*CBKqwBryGh;Aa9}lY^?$f`UX7guP5PzBOoOhru zWt2&8p18A|(N9^dKJ<+jZNX1X0u<2LR2xLj;zUp%xBo;HC>29Xa~#8bB{2$-e4|61 zM#axKLE*=8R43r=!Q|)UU53o})4b$-RaD8(r-FfWB!7~Bcwo$y2!)%&+&|~#17+#> zIZ%DYKFmM-X};zw@g&-q-1I#zymyL{@CoZrmA+Mm0nU;c$#@ai9wOw-=m!8I=T~Np zZxED6Hv=b-!UksVQHDA!KgVgkd!x0yYOStVNMXzf&6urU!c=Y5zhQn9fsHTKVMwK- zNF9RE=UAf)4kAlHUKq4+mY5MajL{CQ0bp}p&DKrr^%JBkS4cs+@36h|g-U0&L=#%R zCi*J(ndHM_1e`Dh{fvRl5?%qY6$I#FOB;6IAsHy?6I-0|XKL}3a10f#iTv5EVX7Wy z=r6)mDd|~{j{uZ|eBlX@KqG=+o@5Lkzs;0*yXD7>I`GXU3!rfvi&t?s&P8S$vxgb7 z>;y4!w;kY8^LQM=%*Pu>FZtsJN5aB%&@biWTD~diDrv6Vfjt48wWS3>Sz`cqI_!A* zb8@0M|2<+v(?=HM6j%_K)xNl$xwJraqeruqKhXpxc%7~7+l_kpok|rkML1SlXPl-A zYqqBD7t@af^c0oV;m+D;_XUj9rirz1oAPR9c)w_+s}2lqapk z$F4G_6it``EoqSsZsTD91RTf64IKsHBtBVa%zL)|_M%Zxzx-6`f;Fq;DAp%oMxjb% zhsd!m#yu+d?(=quBy|DwSZ@}PO*ed5JNAnSSi*DUdmA>;B6#{(?F~^Yc6<^{0Toa& zCJ=Ix-Hwsl7$}d6)b7=aCP)S^3ctLN7|NgKNIPfz2}n`^r^qYgHHKI<4r(?O z>=K7;kX$s7_)v?sQ>*klZ&a>Pc@Q{hW{p5N=Ha_R;pIij==I_l=cppM?!L0P{7?WP z*MK_L^y;*erqYvgKAqg2h@@{HW55NEF`YI+7_6+zcIcpkDS&-Ii@7oSmWm_-e?m6u zAO=}>fAB^)kKzMxCjKF4?x~@FJJtVd8A6YfL+9R}?*uxSIFLxkrZjtLTtQ8GC?nYE zyW8^vuMAU{w$Ou`!Kvz3P4evBnD*^CGT9U=!Uwr2%n-FAV$q6S4YtnyHr(#8_u&ZH zQeIIy?d!h9`uP~oiF=>afoorr{v^^Yhkj1ECjDx%3!Y&BhgDoN-#Uf{$*Sv6Mg-nO zqIHV#jNo}yS-(1`p^6+Z+=(uY0-F_Akm*QmpOmi22=2+$S}J!JgGOQ`Qh~J^FQ!o1 zMQcN)v0?V2+azZ7**dYd2JeY3NnKefuBbSlT)cK8M*ZfEpG>kUHHQgt z$JfVSZMa!1{UI=Io?*{4nr&^S+_|qhX@rVQ3h$y;;uJ)(fuBBOCgXr^g++31ihp{|^jZOnT}3<=Ayb=k`*tC)xc57e(!^)tKdo}uDwWKF2i zG6JAd?n0s&Ui{io0SZ~WYGdl|$W4~>{A*9y>h9(<<-Yn1J6%J2kjbNOe(VXkWE6#H zsZzZ87Aj=xx8k%jHgB5sC0PyLUEYn!pvLP?;krz2R}Vw?)bk4UZG6Pat@;+SvMR44 zkn$dJ2_b)texo4FR$Dmr2i=+|;*EVgpteS{OH9Z~gM`bye(8@%*OEZJ@#y@oP5Jsl zN}BxK-I8_#sqbZ177?f-eVMxF;rQjj`SKqf*B}|H0*KEzr=Vp&ZzP!Njzi0-o!ef0 zzo)G!lB&Inp1OVx(FpQW^?Cfy+}63dtLKeSn3d&eMN)^B3y{}S%`d%c2f@N|fa4d; z#H|<$Wem(8Oo@*wyEFTPVWE3Nn5bON&wB#$o_(=DGc4TFjDER;VWTtYVL2a#V$k)@ zU#i!iM8NfzimC3-++G&L9RD^F7SUeXWiLoO*u0$fK=bzMMllF4gMH{NCBE*offs#X zsW{=(vw?@t!UXZ~PZ=Z>xj~w32M7n}-pJHRj6UoO(ePXIx7#X^EjgMF7&{FkeK#@^ zWQ^jez6(7oX$*dDY7Jg20#j+GZ=dOp&#@<2^y~1#u^9k!y-1QdMYZNXV`9r1?P^l* z+(TFH9!|lc!qhW(^hZhDK(=(|p$RaiAua9CvoyTLSw41-1aLbYfAM9Q zRkHJC5l43SW)@p%&=w(w+Iq{OD!Rs6Eln+Mj)ptECgbLwD!H~8?Mg?=GeaVqBKDCv z*KX3dcrvc*C3#8_FR$Sr!8xXXM%K0{v&t3bqnR9ozot7vF(s0fJ{30jWea;3Z!_rQ zc9v9D^67F`rFJ>1>zV#=fVXS=SpxBJ@r0F5jpZjRh@P`nja!#}<|nMuxTE}aReG!#L-gK<3?ok;qrq+294!qO>-SI+oBq;h_1Y@U6 zFDTON^qdubF1GqZ^;XLa+?KSzj>MuB^i?LhdTGb@S-jTYN@pJkE;|o;C6jI zgnCQfO8e~i02z}n(c}1oR5&@SK0fY>DvxG=m*$BrNUT!@K(&A&8CTTlr^QE;1C*MM zBo`gB8eq1-mFMt`)L@_FG=OdCm5%ZJVMZ`lEZ@3*ROTy1wxYeXy|LN4O+@`+2x`eQ zZMt8|K=L{0;z;m0?_D$Fdg@T|RcesKZgR?HtjAPxgM>U9Xffy&z7|I+dV&>HX`jdA zV@T{LX*yOw{bv9ylVjPgYw%eI?EDV5)9u?IlsRVxr>CiO;c!_(_hFowNd~jtEukl= zXzbU*ij1fG9DoX0Ng=8{gjv~-KaF;g`|uWPK$GU9=JP+Nk{*3qcB9V>@DgR2lXzIM zb)#UC(e<%o#X1AzwyvK(bNYzV;1C#}pu@k}#z65%guhX{g8ezG zw!p}5pIRFITKXt_u%gfv*~j#@xpZ{wk-I`YMmeEGpIEdF$<|i;vvJCa5uH19Rz8m_ ze0Mr7cZHlxURWZ}D}$Z{IIN)O@e8?HOARShUd}&9DZnjW29|`gjDrK{Na<8VFLIkQ zwSA~nxQ0JumV2|TnKTnX^F#ZIo!R-@2}ekZb78>M!m>xTQMsk+Qd4nXDY7~dY+`9h zm)bYBiB*?<(I~Cdx$7CgnhJOsLK%`8_-4OVpoaz<*SH4MJNA{pt7#ff`M{l>?Hzk- zmI2_hQI8$~v36pbFMZybd0gP=$-KD1Fy*2!jlB|+K#4Bxa5J9Gyg6& zd3~~1N-Ni|O87D=2=UR)fYQ;XDsHH3w&f%U555?ei+sG0!LTHb#Ae|h3@>$lFHa~Q zE+jx<$!y$ic7`O7l3ljY+7U&7q;O)*LschW)4j_o)Uzej1NRJ8$f>nZbOH-rmI45M z&Vy;OL5i3pt|vb7MwNfA0GlZ`@)kL;SUOQ+*4$Hk!?{;}V`Gc0cty{Hjy%{*SIa zXH$<3{m-^KCve~>I~@7{-kSH{6q(=vr+VOsfKit)ctAZ4I6eT`IiJ^F-98f7O0=p{ z6`|XGxvNF0cGt(^$Mc)u&HZJvioL*Z`;NB){kwY-ewd-l(sksTvL4^7Nir|76u9a~ z*;t|!xR-9Hh)QE-M(D0Ka|L+Abe^GE5 zuX8v}fxMM)L;!6|Y1LnPo^f0v@)z+UISm$z*;u^!7y&S7)d?FbE)H(&7dE9_DR}_@ zZ1EmIPnyEr*8o5um3`*j{wH|8PT*^O5(M?j_Q8bR=F4W&r5EhlsS8oP+c;6qR|4G0 zY2xIVYVb7+2>c%!);4xX<~R9-iG;~IIy zyQi41y2g2CY@TNQo)6W%OjAgFnQ8SksigM}!7bwj?BU0zd+3npiB_prnohSoNV#wH z7n>31G9|!qn{~-e7I2H0IHb(fK^3Dp!5L0{#qL_iLx(R|JFfZi;-eYeIqIsvs9C)q zQg+~h^zDh}XB(M0gvt1%(B1GK+d_u~E*F7!JiME56YItO6pH1?W3k%L1+=U-^>Er$X+6H(apbvPIqR>Egn<{bL-b@ z#3=zX0BTe$m&YF6VSyR1?QF2T->CsNqX$Z(2@;m0HL71;dtJgqF}Fpz*g?tl;&|t8 z#*1SFTR;xLUOC|Z{Llj&deE6Sf{>I%W?7lR|GA%7ZO7V{h^J4C&t#Vz7`xX0ucZS< z7-Ej8pA+;yP`E&gCs0DZ|E;O-|4PCA)Pj?slUn!-gbNf({uFrlCkD3%reCEBxSjxm z3jk+Ak!vWfz>MHvK+BH^XscI6iFEzuj;cj_yIr6#yJ3UBED%3GtL+1Scj2r-Ea(jz zv&+J{W>+r&7qQ*rACp49HO^6IFIJ=NttSL6LgL39{1e&S0rlXcDN<}d zUJGa}xH@q$H^%Exjwa4}Kf zQw`n_rs#3P#-IowtnTx}n@ z;wtVv>$=r^`en~hfqC=aV%lGwpN^@LDnQFL`3h=MAWpTYn3Q+oFA=*YprW@5_3!M33?A@wOeE7!2CA55kP zM;57~z?f4ZTvM!wp=hCaoCEZ;NvNQ=@g27Nwdsx6@j~FKQf;q9+?`fusiqy64MRlm z$Xu6Zf0(9OyJF2AgI^?;=E-?>Dz^_M7Rg!c-&PDz5-X6h?a=y`s92z~nLKF$u06gf zi`6~WV5m`fi85H>`CBB{=nDQU_Kyq-eYqJ%tV0&#ViX6W>w)#h=q>v!*DUTVxMTRO z^9AV!R`p)}jQ;V1uVtEZ>LM}z{3!XOjdpiU_mK%gR@fRJypR5w#cD%}*@un%iKa-xWjAy?wGF_ z-7YnZyk}?>vC<-xAkg`NUnqBjOf{y!BAA7Ap3=Gd6(v_7w3K{;2;$|!Y=uHcQcP?l z_2R&(o$&1lo0#%8pVYl|F`G0k{`f7U_U$+ry+oA9qU~VM2ew(D%jb(ip+|+G0G;F* zB(?VYOq7^Bup=Kq8%vIT**-;_<}Q_4c6}}x50D`z2j65S$@ke70?yWQGUWP|Z3Xx~ z*G~KY8dE;hP)zfIlKKeL;{RJ5VN?7+X~z7!axF5VW1YkG!@^&>wZLp<1WdrNdEj5F zwT#^m1MGrqo`O&Uv4lyQI;qL%>FKG!Q|KtS%HN~x$8uz9QJ>O=nV6$sny3)@LiB&r z{C{l_m{m3L58G8j?7hD{R1raywDx3L3sC*e*42p2J`1p8 z29F;>6-7`@H}E4D|5qz_|9bxTd^=jQ7AVv_FATgYf)90yrDefD$?-Gg!=L31KDWt> z`wmX8Wd85T>VnS^@PCPvphZ?|Sj2Q|umacl;E2GfExQve^f&;4)Cx>rhjM^iG73#( zZD}Y_DW*ey=|Uq+0}vw^5}*O7K`06LUt~-SmKpM3Cw8;1QH{mJ!GYI8(N z(1J4mB>k&rOqx%_fPfUq|1YU&4ijSzMrPLYG%p(rQG%hOf>kBBdeH*Nc|e~q^=wp856Pw76`f^?t$l;+MmbSQ0#|-aVX4(hHtseUB3xwmj zs-&CvG<0>4zb`?*>{l;pmm5Ydm_NmgUg8}(D$|2_S?z0J9ux2g;&SA94Pt}FhF3Nq ziI;vh;eFI)Q*uLfSB&tiXKU^A%xrygRDkab_CSkUKoSIPkwXb5EdnHmdviSVXbGDI z_QW>SM`8S+k+tHXK2>BbAsbdu=}1@T1gH>GpApcr3PmY zC>Lc0XFjdm;M@U#k{!lu?jTb(f+v*zfk0`!#iiw&grj`+7#|ShK^3E=4`S%D?8FHj zzpIKVfrn{Adflix9OGVurG|?nMjh6sEbHOPU4Z(Tm*oTq?%}c9z}WLL%=X9IbG#q# zf&9~=C5+rAhf`1}A2Xp#OH>vN$@K|Ov( zgh4i`!??p9k|jxh;ilpNdYXVOVL_#yH+QUzmYM_&zwFW|ngy9r3 zx))t6V2hT_h96@$$S+M_-eHisa7xZ*vu4&%e=?^=0S3Z7UVmr#xDLJS0gYt^JukPP z$ObEX!Gl`Y&gf28EFAxCYP$nstvQ39qvqLl`hYTNCTZ@|&P^7M$sZ3?g%m- zWR}aCb$R^Q#)X!hTbDGoNbDb)5$tSwc1ZBKW7BU(=^z@voTRr$?UCv6wAP?zifY+s zqbsTKr|pCuh=ZJ3yhy?b0tV}wD={im+{7CAA{s}+_m1asTT3gAO)Iq2JsXPGhd}{2 z4CmOGqOUB`MsHOSv zm}qZpBAOF+Vw!Dr`ssSd8!sJP1PWy8Jsv5nz6gAavcCK%ACA30LQHWypTe(2u*8@D z@m+Pzy%ZX6=AzOz(%Nmw6=yc{>&_lv6`jKO`)bsJIj(A2&9nVr*nLWRhn#8~%Mo-D zDqZo!&z8Wc-ediy?i+nV|BLM#hf%e+)rp+fW>;qmD~9u36I-_O7o^umt%+Aj|6MA1NAIG$Xulz?5^zUa2DS46R&pBCji%|&WOOds2ccFLkY z%}(GJp}+N<8&hy-7LG4pm@>fVTVnGZi@xC^N<^FU1o-4nZKUp3UhLQ3FRsmwW27z} zy$b7gE;m_H>)(DgA6cC-`Hr)lIUBET&nq|BtlUf5%)~80{cJNCY~lMpK&PVsgWO9S zwzt@F*sEW6<1$2OG1-eBRgm^aXDQG*rvf1i4C{9L$p@ch*&BOFtV$T*{JTwIQ7!wo zT(LI(6B=cG%3%FAFS>a&FBBqEAT|!jq9_I3XqJL>@uHO~auV3nn6|gcS0Y*+^BA86 zrZ4vgziC}~->AJw8DebZEs5s?XX_x(M^B##^*FfmnaSV_cb76^f!?sLeS6?;0TgwV)L!HaN z(7JyP@miMe*`8WmemoQ(aeAM*dcG9;q35|eTHl137o&$WC_}02+Le{^P zDbIENY3<`a_9V>_y{oq?F_Y=`ku6fgL+55Q4)Aw!>{1&`d~Wb}D)9aJQoC9enO=I2 zmCu(-)|5A@^CXG^=&ZbU&ZX;q@}NkX-*yNH)aR~k54FAzXGhd4=ecI3 zMc{CI&y(UiN<+f=5kZk2y?q`G9 zEqs3vD}7eA33~`?hEl{iHnTZ^#{0%J>!-GhEKY57vgFhHhR+s@E&2MJ`><3+zT^FF z;rM!L?@FcQDC`FL!)TE8Bj0!a$5}G!ho_}jIslsOeL~_;zi<~~QolgIHrY5^s|YDH zPpZn_hwaNGpc|PD3X6ipA!-*wF8#_(f3u%HY>b05=zcbe6B^l)AU$Qghjsw=byR01 z#Vjd!h(_PaGEVLd>wYnc6CQCYz@1_4fc8-7UY?a2et=?cWLyGkPThH>E9X@k4Z(9< z)@U9xBaVD1BP@wL!PETu#9exwftYud5Unjyqv_fnbSP&2a`2Rc+nz5Rim@;mtS+e4XVMPZeC9MMU@oKOVe`%1_d~3Lz zSE3WL2#eLwl8VetQj$@ws7Q(*tZY>5D^_Xful%YS!8~&n67fTeGQ)%AsN-fc#%+@4 z=*|5h{nGAe^Jc^OB5P`RWTbZxK(rG`Wi+Db&=t0=5cF*l*(~s90O^83sYDbvTwWpU z_tH{Jf<2H|Lxo8vJ4PPgGE|tUZ4?0l(($>K`I$M?P>Suo-mA_@PG;OlDo;)05l~JM z&S->30k&pj1R|(Fbb~*!AnXB#ett-1HI z;<5ImZ(Uwo%4ccvLw~Otv4MucEyK4DOJtPK3KnQJj5Ogye30$;j%Qc&BmIOA7fq^X zuC+Apz=t^$W3TT1yq5G-u{Lt8HV&5@=m&B){1r`aEt$4M(7cnuc|APP1$<@7IIdiT zo1X@nkaxEf)csycuBC|TGcmZU8ac}PM%27-i{+N1@qX|HOX z1Z*!QgSx}s)f7kF+y|NaJCVgJiwq;r8ke*R*^?#Zdg}TdJlU zIwAO+K+`a#X5sjWO{c9~xw8zn*{Dr~&DLf6nG)d^Y@ z$1sX13wpQFTP7d9^km!n~t?#qNIZ0v;+?qNKLNPF0&JnFI@v6Fyxx#^3mcwLd-*eu+U`Eh?Hr zcozvA$i2U00z_{Z>q4!!78z1E37G%-(c6&x#r#wv&BtsW$!q?HNm-sUYT0*Y0coq` zcriAEc^e5WVehw3DIQkz_>KcX!YYPLS)s74GCXJTUUN!~5&v3(ERd$u#$rE3fx~12 zrN`+&-7XPeTF;&3gVPVe8zTJ|hO6~7RbU4(<4@qE5nxgRP9|bz>3TABklt$k_k)I~ z6Z~l(Je*L6@MIkbn(y{0W@(eiuoHZIvrkn3+LYp_mNGj&y;tIUa3{Se$uS{X0{L}g zmS|J+n?gq1OO&$YgnGx>tBQ{Gy@L3jA?x)}w8nS~w@P1Pr(3-~`%ikl@863T4mvkW zU@vZZxdE_<1XSHmUO`#E=S(nsYd4f^Bv2bxCkPW2x*YO#i(-jJWkq(^<;8kNj%6Sq$}T^gv?l=5WaLTPQf`+ zpE@OHXe&O{S!YO%dPD2yHDj0Nw%O#-yD{LbsR1PZ#-tFs9Tf7%Wl1;Het#%K2TB zZ=l!GTH(rIC%lMxiYHR~ed^xN5$%e#rq( zc&DF1I|uSG`glN1Wqn=+eMm2orlL@bLYBax_+JjW=t(sIYZ%~Y+#1$ps>buo3sQnQ-KMkO? zO>Ci`^`>4}+q1@MUOfnE6jq$gD`uN_xZgxJ%`sA0%dO6M0fuo~+|XWz}!eGtS!$GRGKBmx|=#m_CJiK$Cm zyvbsbDP#3%+Typ7yAWx(VzDuMCFc>P9e z&yXK$raoYVbIEtDRsg$9_9D46Ux2}h``$x`y@p=W)n@~$z#dDyWa`%kf$`2m6Nh|u z#SPurMU6Jea577o6Sz7_Dtx`2BMW{({9ci~Fnh-%!%Tq0+g`rkHA)tBG>k@MiEW zsg5(SE$jP{PeRlK$Yre70Hytet#bmgcAZi*=o{MN4w}oo>~ezB59CUsQv=(pjD;lMN1+lptkMuIp&s%z+Xk(94HT7QBWcUBYK6j)d_qZfN6Hn~nZ`(f z{5#~p(mRBZ;xfOQ#YvjLAkdR)#H6lGR|J9>A-%)xGSllaB_(a;zb5B~36Bg?=(#R{H2sqOh+`u0ZJSk<*ggC5pzC?wnMmIcg}-EGZKfLrV1Q zrM_J&h>-zxJfOk!q6$?^_Ka4Y&3ps!{bMSx@+*zHinyXIj|;(p{)52d*wF=vFwX|e zUG5{V^U!TGbo!LR6o{GS0Q@|z4uuU@jKYKjX9E;p!~*k`mNddhvJE93t^YYFfqv_v z5_jOQB^5l=MP}Fofq-+g=N;p1k-&BEeB?|0Gomx(%hmhyjjJnXpIEm|YSm-HetxG4L#w2KW~D(3 z_z|NVsliBM!F)mmNG6Kyeg*j%;@i*v>Kau`#Zk-b_NItKM-!l#T4E8_H3%XY6 z=~nB@>(B1>gsx!3Wu`9c18)1{J22t69p`f7nvFnrvSPn=Q4IBk(<$uaVmTo-LTrMzgHYrEERqSZej0@~13$vE&X6}0ggN-dOFtB7V=wY3S-x?*>UGOt zDD-3)bQEWA!&;-)ZWG8|?X9Y&2T-Hr^@l0hB;rjDP2v6bHGjr1LLb{AAl>vihdsdo~kb(Zt zpt#_Dh;~4i7f5daYnLA=+Ko*1S1h4oh>?#E{jR@Gvy9W}f2Uho9YhE?x^4%G0lG6S zDIe&UG=o;u`w3UqVm_^(aU5O zKdrRfCy_h+&T^@50et1&I^bS|#Q-Fk3ju*xSs$?A;j_MQ%b#yB*2b5ssb9sXs*{A) zMB8PmADS@1-`F*Yu5_`IU+e$M2!0AJn*Y@}%fO-AYRf-3sOS&Kbg3qY6z1&f-*~g#QdOk`|x$=rjhOSNdnX4c5IRR z@`E@c3Wabtg{BRZsU<6>rN_o4gK;h35ZMjB`w7YGBS(4nzWH-*No;Y{WP{)^b#|MX z*K}GNDN2Soo64E#NhzAu>Zu8FTQvvBOv=(KN|X=NhTuk@Iw|Z#9Xb^g#ZoZ-7?%AK zuLLJi!wgPd;D<<0_l<#GN{k(dIa=tPD_lP+A)!*7Du%w0EwA#A`{;No}m59loAYWFb<9$3k#zI zqu_1=Y9!%j`ZDd4am*fYeIxzqhdS9kZ4gru@6MFWM^e}4$BK{gVsco3m#k>@nSx{( z_b;3RnWYu9>FMu|4c+H+1uj-1QgA`fyexdo_Y7#i`wg7UEWA`zRfEq6e#6zGFJ0yI zW~c#O8EGr;&73I4IvcDWnv`o4d^iBZyaIUw@>@br!>l;o8 z{ymVdFft4~Pz#>@p91U1EPOZ;b>NP2W}afOKcYf$31RXz{W-aqfSyok;E4C2vjl<& ztQZ8>jNJ%>h%cJ{IK}1y@SNmAp7>{MlW>=x_gjqK&G_|a)pXM`@M02Q*Faaa1XIz& z{v#R!>u_NxKzD&8eqh>|;G!r>+(x}&+(Aw{%Mcb(bl^&!a?%#sv zi~r7u{_FOyO&|jw$iR&7-xN@={^#ubi<}K)c!yzbDq}{N1p61d!m$|ZGbQ^d1xNk= zVkP2yd3oe)kSJ#&*e<5f(ZY1^Ozy=r?u0?RXYr~{y1h4gGyeV1zI@O^~gIDazf zdn@F9v>E=n;922>rfb6K;+Zv1T=+uZ@FIW^a`t+;0)Ci*-e0q%X~~mC<;C}G2iow< z{7xe?j6_{eMLuhz0d4GvzaU;R4vzOuiR0kIirvZvFH+UL6#0*=M9?DUth_r znsK;zd;M8?PA&+l+3L3U`hGDVqs$EQvwgkv2v`nx(ow1S_yg1?(Nsi zpl9>J>R>QHo*=_VQYaD``ND?nL0&}AhtYyc=%i%FBxUJGX!}Y*cgYY*=s@Na(&JLp zW3_%o?V|^ILW;+FvXMk0YXW@C^sF42*cYqi>Fo+lW8j5etWHNT`|d31t0CZE<5uEhvk5;-nb7 z&Tv2lL;NC0>V@M7@?`wP{H<{J2VoH0352V4(@`jy8P9+-^#WdpQIvG~h%*Mr%#isY z9Y`cLvoxA23IAAR!UIz9fwNxV|J@?<|9jVnp@Kzmct~~f|LLobwL;@YK}I+R0oS&E zR;>O6NF+R81-kl?adv>&aR|a-`;x$eI0ScjBfp&~Fq0~30~2?pV1)q$j1LcqGl#=m z<v`t?@&FYad;s z^o(7IyVHCk>0HJS3St?8`%0*Vt&8Nn4qES0#s2reDVfz{&*=97Fw5=n<08H znM}TIjSmFhofy+qED)(tzV6nIT9qB>lIzQ@b-Lyy)zUFWA%pbAqvJq*rZ2d`gKYmU ztBF$AFz|Q6VnGRXO84@WivZJTL5dv$@BjC`Eg^}c!bOWaY4`h8p15lVAAr}Dgs)YQ z>E9#;WD!Ce*L-z$?7UbT*P;4y|7UHE4HhA<14x_b0A$HX0av)_aq9Tbfipv#d`U<% z)UP1d@MsAv(lmyi8V1qelwV`DWJ#n^3LC$&(NVFrkk=uUK}j52fmnhjhwMg;w+GDU znviFaXl`qPDOEw4T#=SdjZ4$f4;HRs6t6~uwzwMwaAPFpVeIdxR~zmV_!~x`aup_n z$T}JbGPwQ$4O?k?;ya(pbZ> z6}3V3oFNinXy}x5J*BiHo!%YrA4>Za19|93d2qd#aeHW~yz!P;gy7r5O0WvJj1#Gp z9(F*~o1B|Ivj$k%-8v%@RduZfJM9Usn3xi}w;n#}vC&Jxot%e#iy(pPFk)VxiVO&P zkK93WwCioboXlWUO6QScog`%64#(Mj4}M?g9y-y5*;tK_JgEJN*oXvjNF!r)OrRw) zaeH#rj4EP*gKe(zTsLtaHP{7_S(qb5zIdc*Z<53pxd}k*1e1x&V=^}Gt((T~1_lO0 z{@4S{3hItgyy$;}Mr~Dk!d3;vmlp3>oIY4t)T-Z-%9PqM&)VF1Pqk`iHP(_ID^z{& ztIuRee!OoFhaQym-t!-7Z86Zw=#u^2R~z1PN%{Ub)-Q|B#cQFRuqC7O@B?O!m)(D| zF7pA@XCGkbXSM0U7N+k_G<=BN%rF(zh`c!HbHjpeu0J`+_tdfs_tY8UbP@6(luQh+ z4;iA`v&|-?+k(&-FjG6H6pEoa=dJmQs<9Zbpv)T%n_DibI!NuTfx0X)6izE;M2fSr zowwb@HJI*IHFMerltWFT~qk>jTbgCXe5qpje9=isD|1&g;FmUHA=dyA-%C$T2x zPXHvpjbvqi)I`&7hQU4Qiffj}W&=9%$4Gb1@)o*F8oGV8nc?LMv%kju57yo?Dz0r? z7scJ(U4m1=-QC>@?h-s`1qtpD3U^I#cXxMp2=4A&*4po!bN4#8-Sb*|?@#@lZPu85 z%sKkkKjH26=r4} z4rT=U+Q#Y-daPmg6j#e3q0cfNd6m1S#U34j4R^(x+n|e+E~U*hsu_g@93W}{EUaJa z;m!T}dD~E0LrcedZcPzVap0>or|61Wb8jp!cRYcfYTJ~}S?!TqiOR;ZVM(^D!EZm^ zWv~$-gY1MmvPqR;%X56*)UnY--gqVCK&ezEDbdaCU~cr58nNDML%7>+?z{OAq>M$p zoy^rBn76dlw9uT;>xf%NFmN&h5soS6##?jGiXUv;vJwR5?Yax&OeocRzJMNH7m1lQ zl~BX&L4rFT%Z+KGpN)7&VdQtvh{hX2=SagoJXa05wPK{@`KA$+uOGJ$PAb%zlJ3{S z3mEfGu(%#Jt%QGBIPWK{O8_*0*|)jpIz3-MKa--8@3DL}gnXB(1a=_1<7Y2%D-+pa zl2@jNT`Xr}V1{VMa<7guyC(2KNipZa0D{ywAcu1&Vtq}Xv{9`x^@qws5*)kEs>x6{ zCD^{XUy$KmnxpGC`26q`M`b$MpTRZrkB8&Sj+XMt;1Fz1f1+cxzfQsa8&_#CFM$!)OH#Owe6oTu2wUj$nhL(UE`=>@5V@tA1 ziH*e=bKv(V^Ef%?M`2n{HeI-mDS@mZeGttDEz|MBC3}u66cMAoyxm&1<@_x zzaJ+Bq$(N>2)VuvLBO2Wpjr2V>+zNSd9>NEQg&3qupPI{c9P@`Aw!6Aa@m zkBiRIk7VvY`jL2qLPe2YC#A@BZi*quJ5tKkQc@qVbzsEscB6GTj(a}w?{H-2gnjc}}R5S*O z$Rm;%uY5#8fu;8Kf`zHM8bPXK!sa&#+bOfd{@DjD0$AA>O@C1^eQbS7D zfH_g2X_1v!!0`RvLxU9S6@h`lCo|X_?3_G+GJ|yL`5Q%(M>+tb8R%4g-I}2S4Wy!e zh5rl92$r%7F9&t4qtL1RrofQu^}18a8$)nh1)@SCRs+=@#5LP z#V}n5@Wi0mI#_h@RM1`>EEU{edoo^+7z0#8kNp47o-`{c#KHSlBQN)#oASRJ`IoJa zMjoYCUi+jH{8tlr;wD&i;C}#5Ahl#fZQvA-n&lnk|5rl zL7!6)<;~0#Y_8yzU~6~4Mg_Cio{jJ3$d?u*bA6$epZzXAvz8i()H$v|r3GH^wb$MI zJzbNwiBIw*hHkPr&jvC}O;vftT zSqSprILom7#Ax2Et672;xHS$LGX%`=R-2$^$J@fW(g&A>O`1fSkOeLl;GY7WSo7Yo zGJrr4ys=6K6B_X6gWZA1 zdC#(L@j?nL-n-giTQbcrokQJ+Yc?N&keNok_3E*U5jf(wCE43&g=r>$Vrvm)@-A8CTr_Q( zmYSi&S5u4Y5albpqqg%+1D6t`OX}9UZrY0vA$9W*%{Ov56rc2=UA}!j%ezq?8_qAB z(RC=d0K(ty8;Er{RX<@!82U3+Ie+~Ov}r2E`_uLs1tB{>wp~;QB(B_UD6DJiq+xbk z(5rxobcYNfzimP0-m?$TnPu}_q>R*ExT1;M5XZo?jle0`&{;Z*#7xkn zTn}~Q$6Kn(!_{^I4Z#^v1$5vtx+1x73CwMHzF)Xircu08h{_fY%6*R^U00mwSWD&| z@3Ag$enqoGy4zb@Qarqo*A}*Kan;4V+rPgT$`l^`ve^p#req96J>kvX+mgPnlFIM2 zpr^3$mLyvB$Xnb}^vY@JCMSSNU+zs(?8EvLCHUdlZM+x`v`W&Ku8@j7?>5QjBCC*D}0 zQ%B?wqi@f?QfN;87id~7ZY%+*E=&zTZyzm6hxYhaJIYkM_N1WGu7GqJl3V?*C)K^sbv zyu_um)7FzCqB6yr6V$k)Wmu~X9A4|2`n_J|(p(ZMWBi-g-|G_Yk2Pqo0Ez+_S}K81 zUB|hmS3OTzjjb%MoD&;g82|PXia>-7bPiJ-}2U9&By=YCFV~( zuWmJ5bwI0-p3gFs;<8iP``*XENy|HrL9B;H%*W(mAtG`EOndKzY@g=C==Ea~2~yVn zymztl^;5CSlQ_CK*e#EgB>+wQN9v=R#33d<^fkH(_CBzBzK73u5p#!et_oLRvX zN4xb5R;gg=jP3X)S}qy~OVXb6Q}j+M_R9yI2X~h+LU|Q(t$|x*H9vYukxrkJ^82xp zFFe%hAq^x=qt^}-26Vl9xYY&BgIIu~g#S1@u~OgNr4;LK5}yv9v&Nx%5#E({fQ*C_ zdGJck2q$0o^LDTqBX$?i(P8eZ(-MnS_*gpD`FQCJEKs@#qM@mA!0LO2W1Smq{i4c-ZOp0uzTFNn~8mD?}q@k9A)XMcz>C zcM3~X#B!;)=jha;OB!6RZa9kMC;r??D|$r*$qx;e8J;VrQzrxPfF6k#`Uf)#>c>0C zb7rL;BXfZD#D*Q0* z&xS0Ar6M_c0UC-}ytVrlQQDuEjVBL3xxPlU0S+Fvt^o%IpxxX_AT`=S{x__rujZ8V z8trF}-PvrVJT?H}ffFA4d@$WSi1mPjSkh>+V4MQg>Mp{vTutSmU4%{%%j>zOht=xb zIU`t9XrT@hhM2>X9Ol%Zyh_o}w1>cMcLN}R7+Ah`q)?8ja*&)lhIi9d0F8Ik_H(<5 zM669L0~goC^!})z1?u-`a;-JKX!2`wNP}_XHt}e;&LYdUNRc9;+iI#>BbGQ*;;-{- zvZaX%`;ct`{a#^2giY!wj1;Ptr+W) zT@`fGIy1vCSM+LaRb#1A!MiLMAxe655vC;}Fpve*S#gSZns~M3_;k^MW7oqjhwbJF zw6Nb-nPvO9e0&5>*3VHG-au1{jPGTM#ku|Bj?FPwXpBctc22_B9Gti`3$Awv1T3hf z49*PaBPiDKlP9=JbJ|*^Edr4<*bIP!QmB-@Hw~9&6YBcJyZYj-CLDzP-fRYXb|+cX zFE2o#E@fC`_`2w%T25C`8Ien>8la0|Mo<0I$zcZZ=RTt)e9n!~pV#G^XWBfNb8?kZ zKSxyq50LocvMswuMPKbcN)oEgbc(SP*8K(cumtNZ3+avH=pn^wO%bk8@TSQ{dc|~t zsBEq_+qkDJbQJO!k}c+gxv2lLq<__O_XspQaOAAsK!rZCC;wq{RKt7jM%Z-eONfuo z2a+GHF5zl*RGY|r316NN3~8O_PGGdHkK-EY|1C#|IQJ!U#A!_8PZUQuGF$x5P91N* zXx(>{61k$Dr@fDF8x&#F4X0>I&e0A3Qy&)_=A)^BCTvS0JBR2w3L$LCj;kDC9a6jtJu?Zrmv&zMn$oK?j|5OLnF zFmc`v>2V@-1ia++NouMrfxmdGzno>czCd7C_=ZHs6mEN;FY4=P8y^-<^4E3O@yyia z=)d~7G|BDvZSIOh{jMKtZZ(2@yxa!1m1dnF@6?;WKDU4i>bSy{y5 z9grhbxo%>6nrq8GOl#;{;dO4|xqgP)fg=JE`a7+r zyLOqDr+0o$y!zS+qbP(jpcaV2s}h}E=}1-c$1GKVI{Rm!J;s8?I6KM^b1pn(if)~J zycw*RYG7=of~ez3{#R|qGUUD|*ApR4!{*n~e4sq~ocxZ1wgd^P5K?*{d0X|LLUb&g3fF4-&xKiOFIU&kpUllf|e@JdwrTi*AZ= zH-;JocSChWWg2FIXZu$?Nz7%Jnh#xV63_d&pD6ob8#g#KpSExX1C33zyKjH9A75bWc zuhPDcKlC<{nHBuC^3bH-v+)(UWeWMRatAojlGj9Szk{ZTjQfE*)Pu@+V0FUaE z_y#=6DcfgLDj&HSwBTKcji#`X5~LAn;6x-qPhsoh+QV6_sVtnB@$7AQ5BeghSU`toVCx-$B%9m3#*odp#pX4% zwQ5twUT**co}X)hIXK&oU3(qS}kRMjk*vqso*FFuE*v6$4QX7m(KVKy+RFJL`} z)cFpKh8oZZW2;|Y)!F$5NFTzb(zN90ZPQPb0t#1OFQ?iy#l*LHo$6wHzr@g{je(@9 zr+lU?Sf%gLj^b4WtTc2J;&NGWQv314cMKNPBWEl5$poT!J(;F#c&d>_Jz+%t)^2)YPBca&e@LHw5F%v!jzgxYJuPslu{^O01!Q9IbXXi4*2Q;DYs)pudYH$oS z3D!OoF^4>(&Q&}70&G1SA>Al8pICDm2THn6!hX8sYZm%>w#Uqjb;@n@4l#mjbG;q$ zSWPvCK@G3@xmS<|50a@3zRq;$qPAHe!sh5;QhMxBOU{6Rl&&NBs7$h+YD|?HzMj1| zyq~lFiO@jWHWGd5Fg`Nf;auz8Ziv@IMskQo-~!GpiBYDq(Z39tNhZ`@r+AA=2FRTX zI`#NX)L0SJiu?S_=Dtc8I{HMyMJ|zQ@lPj3$ny4sNjuTVVTM*!F4QrxNdsnNl}%$@eKS0_C=(QBvo zi^puyjfDK~fuEgQO@6fX@S*$>TL#XEEi5#S!=%Xb zw{{zHb%6Bta@h%&OcnCiu0UbKOJiK0TjRp&n)FM@x(q|L5ui;c_Y4#zSGKG^?rBtT z>WkESmdc+`dHNf=biujN|b9Ezfa?p#cgFhmzPOuvV3KFz!+AU*vB2bTzJ)nj4FNs z#o21Hs74bzX-zR)hrkw(K~+h@KGSP!s-)3>8QqV{O#DQHSz2lIk;BeZ;REaH}2=`X_zbaCipFE|vcTvaBV)lZOpK z9kVX}P~oEfadcbCctaj_8Kzb5dtywc9Rm~s#nOd?+q=Q zKi1NoQq#UGd7>r-jfJL$#)XuQMem4T%*?viq#Z=p><-Dtvt5rJ`KVf`<24Co%ey!= z1s>1BIjgH^!I-A?;bf@bdzLEcbtx7lWg0wAqbEO6+|Gwy{x#|SWG;8GO^b@dDqxJb z^z;C12sdr>6Og=N{!dACJ)^SC1dCh5OF?xqy9Kj~MhVKN`_{)QEs8a7i8GO!i0`tM zqm-PUU3j%8yMzjNU6+8n3+k%d(&1m=e|GgUu*E`Qt(^9N*%*O^7MMkH*L^-4KvgOj z1rC!9+(-dGk6(J@n0aaHs!r$T;ff*`HDJ3%U>{3i2~=}M2*|?goIse&!no*bfA2g> znqeQyjSu%`Q8PjKrGAN&N&@&|mT-Dd+h<_Htx756ffnhXnoA2>a%5=X^?P+`@V+ji z_!UW%?I|;b^YbJxrYj#;j_M^6!jISgO+SETFG9Q;<2owWR(?V0^Dhv4wouz<#A^}t z+g~FowExY5Fg!!w(j0`cg8bj0&;KcC3dud{Uw$q~!xKYJqa&kpa*T@RAQcz{Y}m#j z2tWinJV^5r832U+i|!{A4-@R5)_w{;q_a`6(V?Y%#Txo{%ejK^$w4h0{Q%6QXVkuC zaW8bDZAv(mbjYqPwm0`?7Q@UkWBFzkeyQZD>=HKg7Gp46nQRQ9SMd=WCU`Jjmw|&Q zj$>4au#Pm1{J@0uJ}t1DP&#m1A3D@CR{b+1_Rq&_5)m(h)_1Z{R5L#CrD$+qema>G z{Jr_MOL+(M8vBq3CA0F|o7#F@SJOF+rN<+6)r!R239NYWAT*M+_$bt-*lwxP=aJ;6c z)Iuxp0H8Wn=nB}B==e@5acVcJ?p{8eBQxU)NY66av4F<(5DtMl#7{im)kF_$jIZ>+y7}5zt;~oSykk(Rmmfa; zSIg3U4B*ul=Y(c(wk%wWa(4dhX_rgaO0I)=>>hpWTSi z3uD5|2Qx4vw%j{QBp7wHWxr#DYz#&&BBhZlBp?oH!e7<(dWt)AsdOovsCHxwXcaUb zeva}8U2+2?>^5QPP?&ZTA9=vBg^^k)(Ad^mit-QhtWoGB$Y4rD4AsQROm@*A=e0Iy zf1f&8*K6q&S~PKn)dN;?uKPIy$Twou(5~x??L9m#mRY<9(Y^_l;!_a*QRghrOScO( zi9^0r5hCL}Yu=J!js`L#9Bei{JZ$BVlRG;x|3s`(1dje73)K$|Ji@QqT;vYxyNu~G zj*hr-yu;;i1)gS{Yb)obI+7(JsQgCk*l zC{9hSI6D57>ACLE;eLO@91}Lklqykj3J5od-{~hP=W?It@;E|XEv~TF|D98{mhsHn zfdn)ZT5+e9{e);mZsCE$=PQ8uNQy5ObKigqVc-;GOMv1XEZUnw~Gh zTkQR%(A@hQsNR<_hYN(BDz)=mnvr)2#l6wF0d{ifms?6Rl)_z1sm@JZ#GM!8EJ6K6 z{!i=>K7eV{zXO50!woRk9H6!?ZmXVRjtN}m>SBSok&0vx>pnQx{bq~@r4@W(0e8vV z`yIALFGdL2kJuOA=Oqr6%-!(yA`IM|5;&@jkKkQg3DZKd=Q!aE$EhPFe(Ke+xx&%582 z01wFjUJ!pdXhMLhK;Yzm&ug2|mE3qhQOHPidjI5~L;lbFb1_v0S=k6xH3(;nYt!q?I?N1oA|%@>3G4YAmdU*YCb-kzv$?ZqcFyV{{wvi6>{26I6X}_ z9ot z_>AdtgM<{>+3cE)@xK!kqxhA-WC`q;qW1hhyhKnWJv23VB}l~wl>#(N4^2lt@jbpA zeF`SRFUYO25`Gd-4PizfY)j)D*G4_~*{+;;|^hoP>8BK@dKsqiQg8|gpS@JEE!2miaODM@po6+y17D0IUA7zfvU=Fs@Rkti;Z zL+NCg=w(MoXGR8@jPUS5;56Wv(BDuZrNKeX=#ZZfoP?u|MT*TNry4*8HE<-D?qEH2 zkN31?Yj%k2AYv-I*~Tj=XA zN4Ns6rO9{aqq%pyjz3O3p7ZpqdhYG{W_gaZosUXzyB^$kkvphd<_^wUmjm!+=o~0b zO^E_2i+H@exSPH2Zny7mZ=7yi?=Kv>yJpMs`Z$l>FCxp=R{LqF2YP7=o5JHIRICA} zfsl=+uL*gp@g|KjRn|_6@7H?-e-2Xj4pM;!55WBQ)egIMCV*XLgKiSG%hwxMxXol) zJtW(Jr^ya<AeI0LzW4AUv@Js?dG6sN4Cbs0kRZ#D%;!NDsl=Oo36Im9uCr&s^xkD%u z?B{abzA-hOilI6*i=a{m>vA*}^u!zQl!3AU(N+>Av;#IyOL#%^f_e#AyY0jW_N)WC ze9zk$*NLC@KIck;V{E_Q;tr6jNPcT25j$mw&6PS|XKdG3pG$q>aryeJs#Xt_t~arZ z!(a)=R?*qr5%o5SNK144TFme+kt0Bi44^PF-(Z2XDG5wT3Q1Zw&c$vul82djRwzA=VfnRfr8?daci(azPR^wRXV3>!J66f&6tJCbay!p#(617 z46lim-lTr_p2n7N=llB^-uopmS)!m)iDFcP z#u}%ZrIn;C!f*mrL-zbcuUSlGOSPOSW5FK2sLlOnhPQ4sT#}~(){>9!X`pFmI9q#b z*H-d0)-mI!Ho%FJv|^M7ywI|=JaeTGS=PSsR>tD5JghsXAmb3+W+7c5K)dlV@iB+6 zX-yz5TaPlDP}vgEBdD9O>uq-Sq1Lq_yK-;I?Ba;!TdG@ZmOX>~+wnNdRfC4k?&4er zd}i$}2FVIwj)-y+UghkpBUEJimr>-s3P)yIiP4zC$ zvNvSAdGzh(^;DSYjH#KShP%jmI|Evm77xwdr^LeC$NSXXXZizx^#x*wzW6gkLj#1@ z3i#$&{44YDN-;`Kh`M*W@-XEI2u~glN0yEZOiivxd(tEpV ziZlA8$Y7KO;{|c2wbJxrQYNS-b>Kjzp?n#Mn3psEJ#m!RN0IpzLiJa)(%=?4OXZ z_C8B+^i1I$M=*R#vfxOh1G>*3URG)l_nD=-7Panm^~H}4@}D6cD*90Onkb&rqpw7v z1qZ+Nj{$3w^dK!0gpyikE@@MBmb#Uk7s*L*=DE^dP%3(Xwup*}SzTEO-{ctn3;-u6 z+A>3ixHb+cU9H|EZTKAU{OtMC^{Pz#+Yg?^_!+rovTD|2Xd8`c&w~zoQQH|p`(CK3gHu@+Vno%*N#=P0NiSW0$jM>aJU54`;sMO4)x^BlV*E(R+J-*mv*sHN*0&xK1p}vrm&KYU zSI58Ct_}_ARSeqbA1h-h?b6H}C<~Jb;V)ThzlHGeT@A8rI8*vWJFmDVYd%@|;yi}c zlgD$q=2Asnp|UHv@DSt;C`Gye5m)>ak(`~0og&i0sQX+Hgf+|a zh>X>WTz78YOldS0Ir4YkR4wObpADPW%!nkN*xkfh2bmc8ykU5}z+_;*v>IN`ylK8v zK}tgy>pXfIrkv$;myk|4=_L{I1m%BMN*t=2P9-O%la-EiLsX;BLU&;@8JxH8PqcWQ z5=D6i3WHZYrkAgV4}QvdY^7-}X%kS-KW97v4kjL~C41p3Dg_7F#t+0TB-n;3BO+R} zIs!=Vtb;s}vlvd#SkszUT_j|DPHY6jcgMxt55&X#wvhrYZK=2gC8$?^E6ca@0T3n{ zkG}Bo1M?+sf7Y2VS|H^4++B1R!@pGL_>Q`P4dJ)xVKazLUbUgOk z1GZcy*X``PXSpn`hS(lK;l-#X_tlZfFuwEHR{i%m`ss>bC_=`hTONQFlxwn!4e}JQ zaW-t@*CoB+$qXFkIZ4<1vN7jv;c)Y;tx>spUFZ1*BL}tiM3@Kx?cL!gW&wilr1RVW zYmqM{xUMGiRw#~A=;Km~KGVHZMS`?fDj61ehIaj;dHFq_Re=^nR9~-3T_gsa@~?Ev z$^HJ6*1U_v{jU5IqVi_-RQpF60-nXjT! z%;z)_k6B402z9(^=~y4fajNT#`erRjR@$>ICwsFAC$`hOLzDd^l3NAWYzfPEr3*lx zl>QMXJ;WVpKnVQNR<7vKUSqW6RnVDvkl>~SXn7xQ=R!O=EJ1q~eE5m+vw}7k$VIB} z<*2cglOzFQs=I88AsG>5CKUcl@h+(TFj593H_g$8semI*woB6%zVu7k0~{eohdnee zB~lb0*-w0agns^EyrlRlZG$m>yiEJgO3p(9SWQkIl zMp<;cjNN32%!?uWlrPH-B2ns^fVr%%yj&QD$jS@VW|3lA6=83`v5U(k7KhomCn|L6 zATp)|sN4){fj`=5@Wi!AX2td9tVNyOY}Q%7IhBmKJnnBT?S_<>uahH=GZ>K;v%-%* zbCw8)jUSL;G~9b-ut@!qmPw}e4>ix@>EkLvM`aP<$%0G+nu@Q8@4 zSiW^Pv0O7h6`wddeQ_5**<}jm_&S_%&Td0Rz+sS+s#c^Zj-Frh}}F1!or*c|oS>)tOp`0DOQ!2|<}FFowJ4p!)Y6CglpRmnDxNXprI* z&F5sc-lDH0!b!cdCe+>T`NA-TzZS^N4Wv?*LVjA~j`lKnP<8wkl5>&idr3I$o+{)y;seMax>Io)>dTPN zm?B;zrpu>o)6E%d@k>|-G?h|4E{T729tiT9^D*O*7HaKLZU$bxMbhxMSjMkpR1BR< zZX*1y*%=a%V6y@Vf(~gHT7T+QtmPvPoY1d+RRa-JG=EH zO=j7hXEPgKdY{WhrM;YX-}-q68y@L&HFfOSC|^8__{df>YX^ zo9Vr2f#LJnl7vHQk2R5Tl;gOTwFn*oEk|yj#v1K!U?~!1bV*U3aYL(q*D3xqRHQVX z%$2(!)Dp=L{zX_gzA;SIPf}>X{on!|2kQ=!3a}Bp9H|9*8t=L0bq5M*)83V4NAPkq z5hp}wM$iwHsA!t{7f9KY3hIN8=*QdNdTtZ5y+`SvL}pc9tz%+Y^c93V-CGF)X~n+>iz1dJD6=aSYetr zo^#`Rzbq37NOJ7UmzuZ;SF3<|>=gV4RTcRsQS{bf)+&3V^qN|gVap%JjqI7o#I^PN zfKjP~Bh-@R;FD6gx&z^#s=l6=`#wz-nGX|>*~d2*jk^@XG}_Kzwy&%|No$5WY--f6 z`g%?wZki~U-U-hzu6SH5Ts%Ug5QAHIdS2}%E5eDPv#?XJqh1(%PZ^T-c(mu#lvxNh!m378R*GY>zB-J#ZxSv_BE>Z7_8b+k^yo zDx~>iZ^d&r$DLvP$M(TJ470EU|Pw==k zHTSesc2P%JFQ_6}0E?U03TDt!rMsL(XcKs$8;iaX5}?<2_tp?tGgw{9x{d?%vo(3j zwC0svq;WP%+*F1iZ%q8|tG=2&{L9wMu5cyjp;vpXA$(rGHCJFD3_q>}K!UC^1ejS> z700XsQksdHxt40e4Pk6+WW_q-k-NKzZku2xn9S6fKrsT&Zo{nmLakw99%ju{dV6Od zdVAmBJXI6e!~yS`q3!0co2bBsB~v$hAF6`02W7k| zqTfLSmh!&Gsy0Hk~#U6luOrhPpz}1G#)L!79!S_AJ{mU`65Qufl^$+zBd^=+hxR;0V~(3wtfZw znAw=#AY$wO3~#dec|SEP(41_&b~)v?0tPu@HFWN$Vnc%!R$vXr)~f z3MTn^FvHJ}LMeiIhM+n^0^%ES3wYLS5gYpLF?s4((HU#+B9RLGTrBa_UE5tiRUQhA z-Z>e1BZ$46-*55Zs*sP_ipSYzrwg}ZrSYJmYo5Z{vvLW{zQ0RW^dp>6#aSy8 zx>QPb=(-WC;53^aV1PMpTmusm$DHnZk{c2)Q;V|m<)S_Hd8AoDrMg@|=Zh!V1`@CR z9?NRBE{^_0C?jVGwQ4(^)icqI| zEf^jpM30+i-nHNazHhLsjaATxjWi#2p;$+wlE8)2<%u5TCV_n3h-pJshlMVqv@3lm z#{IIm3|=4`fl$XaS`I$pqXE>z)GGe_Z8{VBu0ctZ(ye>d6Kn8cZ_(bhvzYh_H!h_r z2B!)!5@-7tdN>kw>C%i@;w+Aryex~8%1l(N4ue;j^F0I~kLmOGPjLu-*UYho07kzeaL8PT52%T} zWeAFnaQ3;~rVGO8tw%A&vaU<`T@K25o&N&rm+i+$N`ZSS@K<#o;&vDcem=$emD5um zxs<$xWfM9n%goD8gxKBC$srx29rO2d^*Z9lYf_g1zKRH>H z(79!|d4ylqyRUWUz^JlrEe%QcjW-UhcKl}>igtE}Xw>#1kn0Dhw5tusp5ECmmlqFc z=l&|5&0ZNA0b3>zntmL1klxV9yG&a5%`H(7+8WGyNrG)z(0HAijbjbmox5 z@k@nBtwULtmE~tY>l&GceNJ-jl0;k{UWX+=_7!W|ba5eANuvv8iVfEmS^++n!yXP# z!w{YSPMvS{m(=jObIG$#*+Q%}tdmS2B}T1xaoRevhJxF9w-sU`xv8QH>RkJ^O=L-6 zm;0j{XQw+bzHVrVWxuh-TJ6xO6Nz=fGKefkt7?^{gzh+t^WAT%*KR90SLdbrhdw?& zb&$^ZT=B=w@OB_U$?Q`zC*APCB|7e!B49Ir(EfV5bU|66+XCkhl>AC*YGVl8QrBZc zUYcGq=B&;NvX}cPRp)d0&6-EirQYJ|tEKS6H_tVJQ1u4YwSr$v63B5K zbp3&9f1>U)o>(x7a{?5r$65Vd0gL$sCPuf+Di^0?hFAA;!8VqP-UBIQ>HugD$N9K# zDQ6E~+K2#pMl=isxJm zx6*un&ri(JOm0+}3l_FOFQ6$YQNr(*fQ03Yb00!*lUCjx_GyJwK*EwvrCU%>sQ)zw z{7b0$F$M(wBT>)%^M^n9=g+49971{9hmbpe%#g4CGhOO4n~9mRiJ8Tks)!tf2o}kh zXg9AbeL!-cs}1Y|f=X=x9EEZ`|Ds5&lSeR(`$C_}P+CW>*u7r}Q21TCBe%hB2BlmT z4d{B%wbSP5vvJ>UyjMNfY|k#E^x*nIs*b~r<#hQPsQ7iN_lL=!T6Mrkqc-bAz1pYn zyivV7Fq>~Q`8&77d&A>B3T>1nxQ(SN`}&Ik%?9*Y0wCescLGUNLJUG?&VH0xT0lRr z8F)GJ>74u~Q}R>9hi|s^@~;XA8t4#(1K^6s{jF_K;fLY$gr&7YBmRWt@k6?ctu?2? zj~V2OY3PilcoqfAHei7s#2W7`(ypMHqL@Q(%Z;~ooFw7sDBjNyg3qCa^EU zz^jt9hBfdULnT&Vaj&y9FndrhUq(v0{`Nr0N4SnJf;ASKN<>Fm?~)N`9iaref1=XCQD*W-v;BeWT$I~ z`bn+4i$m+^3$*K(6xKLf!j{xz*RSB*&7w708fUkFF$U#%|5XSkih>Y~Ds5nVu6n&u4o(zD zhU|exLUeaC0>um1g>LpkoU3}GC;1jdZbG!)l(9G^deB$WZyb|W@`(w|-Jc_Ze*eb5 zyIyPui*HF>B8nF&Iu%HJx>_a5i1Z1FJju))tc+fgL$va6KKu%|3pS08P3P@E)I|Eg zN#<0Vmhf0?#2hXQL(mB1B%}ze@M~+isM$1xGqi?yk-`A3)Hi&=GVzDmo$7^r7WTUG8>!ZA08o8GfmWst8Rji ze;Y$&Csj2+&sGZE*Je>$;GcxE5oAf!h}H@rAwr12WkNqa|+x9=AjO z5RKP((e=l~;f341-*{hx(Zp?|dqud4E5ko)K~=1jdi{7hada~RuC)sqm>kZETgdEj zft?m9e-$^AuHHVjo|gvw$%A1JFio6zxf0A$rz#o?>583S2E@|Fcx5kH(@}DdLd@zMi6@n2;Eg zK)(7SqI+UUYO$l1pS5bLL#Qn0#X?Vq1Q#o_09T;FCH&(8E-@^I$dL3gaXS(NF;IT4 zl8=Y`&~Hj16H}f8yLX7I%;;|cI>LVn(D`A~4j^}Ao@Sfr>xUQ1C@Y;Hg$Yyf*@Tqg zCF++Y*#!*UH2&bg!?$|P?lask)R7-We3G2G5zPID9>e%`?lLZ4D!HXI(zx}Pj=4t_ zLdxg!@(ysXtS7vW&^zI?tY`v+-uEAt`KKw(%kfYcE15C{Tae(~I(W~7GemawP_<2Y zM_ZtvXGsXCZ*uh;K8~k!rqd6#1D~nTPyLhDmyJvMv*8`&O=3M+u9{y3t1P^A4VMHr z>ym?|>u$+}OslbrR|~#O{7A`I8hlAkK;<1q8gmXiR^1&V`(8zXBc^^yPDtflvs1n| zn08dANRhZ~=11&p`LivG=$SYB@F4^1F6i|0R61JF;vu$(a;6{!y5wFrst~@~BJKD} z8|V$6k33yYN+j}gq=a5fIGzbE#otVYNG!XzaEF@zEmPrtuEgTW7@TnScj$yQw>4;# z$baiVqM>Rv!u{*<*&b@O{0@S*zSO-rb+K`@d82_ODFF@Z>Qd56LMhhHWbKGqnjwfY`|w-l7S*L~+? zvg5mW4SS6=J=F(kx<<|WI!#{i0!&OgMlI!gg%MKod^Cm*A?Hkf4B+a&snPXQ0NnQT5$q8pG$CXT0i1%$7Pb@(MQAi z6C)2-e1=Jm^`J~srF~(taPc7=R`7o(<^N5W#C}$?@o;eo{1-iPMS%}dKA|T4l0;|9 zBf;~eeZ&hHnwU);=fCVyD<()b|8#qjevw;S z{pJMCS9}oeVT}8VK$eoY`=RV?JGX2UCkkUpE1ZA}nG`;0iAzp05QH3~lC;EI+JiiD zS%x+IL?qt06^{1~kM^%Du6{WVfoqZcZ#R>c|Bpija5E_>TyYwc5`Omr3$JE_1aBMp z?^(jJ7l(J^H4+j$2>IW$1it~FDZhX)&t5u)HVJSy*bg-JvhD?=P$s$GVRQ8;iBok#39c>0IKoDM>UVTcXat5#RM^KIf|ox{-}Q8) zWKavti>A5>SZu88j*ZQ?*PFkNyH##n>S{|UzYn-~cG%%#^ZfX`rz}DyIEwm(^T#id zZyDZ>!2GnT5BOeMpC01Zyw5TUu9bf(FnX$YY4NJmbhS)?BC7c6{@cBS+YRh8fhU<% zp@wGqCh|*p;p_fs!OU-`KU_0aTNe_CMlf#H94_ywLJ(^yw-?UK2HDxK;+t!^y69ON za}(K-;ulWcqg969yPxN5z1lu8axh8V=~o6@)<41?+R-M?XpGNjEhXnEh%0>*<_|(`2aJ&`Jew z(uPi>CQ}@-Y{v8T53c9RcZ>VV5-17HWflF0#<}p(FL&R_adJ0uc408$*jFAupX>ba zN_d*-*k~>Hy1xp1(yD{krEOGEiYTH^+L3yEkk2xYnom6*9z5zq&@Ui}vpQ>yk+e-? zYgD3RTAfw5V4+mkwUPB%k;l4v?v*X3%)^*{+vY7=(iae;=OpO-9 z?WcS^8?!4`7Bzoe#>w7Xf` zi75t3j=f!dMJc_VIBTa=0X$d>qU*8v*6!ElT2kXOIE~%@szVFy6`V1!j@^4%UW$nK z`mV2;>?JH*|7H-DYwEjuSL1nVCg=1+sV#cCLb?2&+FTe%)6#BH6o5m=(NhJNN=SSYWRo@&>I-={HlV z9v#|k58QpY{~{awLf7(*mdxuv_ge4A@AC7=eh?KNcvstzz;>gb=$<3(1Uiz(|0um3 z3UzOEn-Ah16BQ@y6NBf1_R& z*2ES+27wVd!wjn5o|%NnYe#XsccS^wURQ>H-mQ$b2UB?ON!~yaHKa1Xn@YR#+@Jw# zr_0#h?(05iVPt@stkL$>W?|it-3`^G{8Dnv$VykP+E5&^{1F1Om@?u+GWO~fcL_j3Dx!nt=acgU91UxaYI8<*m|5J!2 zKF87Rwg~nq#g4CMME?D}ZNqqX-bBIIDb^Ny>n5i(1K98M;f#fCqmxbqFdR)j4(}^L z7s~l3{Xc$1L|sowR`2^b#SMP6P7$8_#h&>q;>Y#Wle2waC!=G}5S^BZpJjBp-%fVYDbUp6>HShygIperiqk#9wj7xN~!5fj`do!LeU@FKym8N!(kH>6+{YvvISr84qLP{kiW!9sQzOaX-sHy9S9PRBr2p zUcZOYR^MDsEXDhyVC2f`>d!7#q%y&`HNc->`rr?f$v$(O)7{VSV4!!^7Ao#?vO;3h zRBai;-^T9JkE(aI{KB!mH9C}i?CkGDT|3wQcKWrz^H@tK`dtgtq53hC_;H?1oVzM4 z?M33ksD*O$QeW&A3i{3Xi{b3wXd3H{hR91-nu{$Njr)CUpDV*rlqsBRoZXiV_NJWN zV1C9Thf!|vpfbAk3m3VNoyZxeTlx$FAOXk+M=c(aJ zn#WgYrVU@RC1uhh+$xd0XFs6B=YQ0PS72vOedasQ`f_Iuk|vB0#pPJ?OgC@V()^S6 zDlqK$lJnF;r1q?Wzr15Xp#G^C3V0-jq0yv%H^&RJV!i^d`;PZcQW4B82ym&v*W0AE zsw6C!DTlZ0#Q6YsbE%#rz4rL2ay_!~qGJU=aI<9qfT7}|@OH0Z;79QcL{8;5jsq2K>~LZ_ z#ySGQ6zO~rXI$NVOE>1>i1^^DAArVNz29OUw(d&#_@0c&G;h~lx%Z&XRNtc|Q!k+N ziK4w8eK+8!I(r`k-Im6pNmz=K;q|TN@F-Jc!I{ez3j4t2neeT005cQ?HXG!OY`1dT zFW+U|RZZLEFa`$^y>|8;lLAT_*npIq`4%!mqld!pok6bWY`EcMo|p{1&nvL@GTUWd z9F|4c=UL5`b1^c2{J36|(=RorWA*GgCwpR~*L`T~77u($CXaB_jmFZa@XRRPYC(3B z;SzSCWGQtmuX2oms44fu@UPtMu6K_z+jK^FJyc;kX#+e{2^NEdL-b=&03@1zQE~Pe zqAfbI^QOGt^~4BOK5K&1_@fAj)QY3IR=hEv0YwN+YJ#OhxDtQJzw0x8{X1iyKl$(q z-IG7zgpz@%rMf#JgoO2g5Tug#XOqDP40AuL!2Fd!G-1F5xJ*v;)y2{ zk@@WI{5FE|r@+yHgl^?XK-7vgg^qHHbpcmjFngZRr(a)W#_7;DfBZ)x!sQ%Q? z^KnB1raRrfQY$bE1MoXCNb9v#ajd9?;)e`O&E#<%%-56tQOEJhvVd&q)be8Gj9;r4 zmuAl`AGYj=#&Xn(3T1B@@dqv$iJuX-%|i1kv*KE6MRYoMM8)KG)vCU|N;ymHLOv)3 zseL!oO>TMsiei~TdYyQ*8a!VpHuy@YpdSCGr8}V)#+qZ}&;;c$IPSmG8c3g|?%ObK zGybR-j2XB3r5Y%GPS>V_I1t5gRJ~;@H@V@()?&s71q*@N0<6ig;>zTx+X5PR2tk{X zOilwz1fVr}NIDc0%7`_#=7cp(IOC8XTW2huf{La5qgrH*VZq_n{Ah;eG4VLUm~C4O z-7y*Vnus8;yog;5K}wjH%Mtv!b3cMi?TWNZ5Q#HkoCG2j7cE3+;KvA-N{Z&l5_K`M z_^Hoo4xAZJF^L$#atQ&>*6dWN1*@~0mFuD0;O8+x+-F74P;hhISvJcY%<%9GBo>}x zDQBn}dc+6U7rm`~-kKZ+qH|$vb3EXKm6pQx*~?bP&qI}A?3_TwHSX_oA5bo-aL5LA zY71qOo*KIk4@dmdUM1hdOJ8_q#{Nz&TK%NO!7Wi{;>#n_=>_CHwlx&RDBSL;{OkUl zzSEqDynlKSyE{E~Jwa%cspJb!ougoleH(TOaAz*WOgCLb_(Qp7bQ;27e_))EmSEgLP>97?KH?aqZ85zSZ?1p`W53f{-!jrH?M@Q zq~n6Q>0H7Cu%={&t-gr(8%c9#%uTJJ8zjc&E4z9aO=W=!8NyydBKce z@xN??^NO1Ds`6viG7#k5U;1?b%oLGsTQg1$f(3v@166E(1Jt<@5s3#N(ybGHMvzy! zYQiy3voMJda!y|0Pi9M5Q;)6;KxBVp#CNtzByiW^-m~vP-o4*wjZR?-~FhVHH zMsc%xlT73GHWgUomo#PdM?e7qodX1v`Ah1n0C1Cm5iQg$wtxxBvR>j*vq-rQJC;Zq zT%1d0ck{QYSpC7cny5K)o{`)X-ln$M6!|;|d_Bm{107Bj2tvGLavD(@WBeT1#4Xsy~J(FhY>Dqc+B1jwMkOiTAY88LmYR8RrhGfs>pYHS^qlBZ^0Z^OWeJgz|n1 z<2F6Ei!UUTGE`i6F2Ipha@8d;G{Y8x#jcfaR^=7NBB*I({xA zrJ4Z8ThrX}kalvvTpC2c`@po0lpZ?nHxrl8J0kkiSj)%urfpGMS|@9kZuiFntC?w|A>gv9(* zR`)334^#)5DH{*d(V1w89~P9hyU$H3CXz2L5`=KRZCT+2892`I%yYj1n|jCTR?>g? zXF^mP4Wp!RnZNQc9Z=v2i$J<^AKIIfjE1R{=gw64!N7jsuY(K#24I5l2N1B{?4M$e;m)$N1D(RSzTz8b zn%Y`Uzqllue+n{6*5-kpqlIz+|10m}ChuE=g&D-=;iDKxR3GFiAPco~YBgThrr>30 zW!IkS)5w=R1^tc$WUqD;^x;XIV|y22dpsFH^0UD^->OF`!B3v?7#phx++Ku_u9-*0 z&?#8DG4SMS&IYQdq`8a_Y-l=dNAZoVnX@eiGs%}I%nL|lskMUfnY=V!yp3%07ec^J zUPdBw)u~iDr???|gx#?H*%YwCjv(6$3KfvIZLL;!>qp1lS&x>UT3rY4 zh`he3r^SP0B%rH9mp=1jb8(0IxoP~hTlv_`le21?Bq^PrItqqNt6s3ig(QuB4)g)T z#0Z|lezAP&4<=a~HVMhFgbLF?vAl*Qo3xHk+6M^0QYi5ZMj&q;rPXWnDgOmG1z~o9?Jet}Yv;4L9GyoMpi&&*lJ~5opxM6T;nff*5 zd?%&lflqYvp*6SS?9uL1V;oB^v(N+1HB zh(SH%q&}R|Ck~?K-Wmd%nfIg2xRvQ6=-L#!mIal?DZ2QuICkZlXrFu`8|<ilo^PX zwQMsJ{?Ibjkt>E~LO=X`3Cq<|1Y3^yUydviw99p>lXGzbgixl}?0 z0>JZm>kxF{Y`|0$n~5S~jT&lJj3c9PowE9h`$!P{o4NMy<-yc%s-T3pA^ql}CX zyBz)c)u|=*C5^gTWQlY<Q;604TlP>d(pHR72N_h}4Ul8}m%oQ1< zOA7Qq;NmSv{bz)1XX@nff!L1NsjFB%6D1*lG^39V{IcX+$w9ZydpPI|(o2w2G%&0$ zcB+qitL7vsFKUEXse%#MaWzGnq1&92hTvUK#J6;ryk(r!M5eOi+_^rL<6KgPc4?eS ziYdyjTKSmS3$K`#G*XH%J?yFPo*o$)#uWPZY=W88pVGLM7ryV__^=^m-1XE?}X3ttSrYuSJK=zhC-tiB(Hi?OHc zRAqbkN8_8?W(cgLJGKB*85dGca5Y*@lifObd)uj~aH-+1*9?uf{!oGV^%s`uaK7my_hB4y5PM2N z>yFD@d$BIxk>`IH0c)uOMtFO=l62)6n1tN)X7G6p26J;s6*dF6wXU!!5#f79|V@6OyFAmIxD8cNs^L@@i3X~x`ABR1k` z^J%81%lQ0Jyl>d!mwzyEc22Ru?03eWLGgiZ{BEm2`ySy zjbtF+e1QtH+VP(fef0&ptx#YB7Bsw3`t2*N?J_@wJbN+b9R6_?e!a3qazV(b)!a2g zyJ`{2ko zF66$$@#+LG+w$CGL%3wqOqy%}ocDfp`9+}%5^s8Gwal1bs%V%dB=ck%78gyu+(|N- zn-Hy&Vt67GC*+OjB4}RgaQcrYXtFk|{V-K1m*_q((wyg~h2!-S`Zn0Sw9C4`cjZ3I zq4$+y;6%F-+Wp%xf!#Rg+R(l=);8mEE?Lbc#~(UcAGd>DdDv`{O>F)5kD<+@hL3(v zI#;@uwwNqO&W_CK(H;GxI)r!FC={zhp^dhiHIv`V<(qW=xVcll;I7YgT2a7*NLs#S zmr}5E1FVT~z4A}64ld!7xrfKa(y}8!#RELI;&{)svPff=NBo1PzmHN)y8B?|jf2Iu z@dCi8qml=xoA3 zUP7o(fy3mB!;gQU353_`D;523m^M8g{=8*>_4Ffby*L;XCBe3dGnIB)4jGE~hMTk{ zr%?;g#AI5y0xA^Ix~%WferCA%*`YWg8 z7zo~yY&p%JCFX7%e&4sc>Qby4>BcBmy~lzK)qVhFw?YOdscH9_|4g6meIH??$IoIy z7&^DA$6;`%>C+bD%-CnAKY&sC1(MS02(Ly|EDe-iV(9m#%2|J2@ru%ZNx;1)LiOlT z(KzW3XD#|_EH@cle0?P4&MCepSoYGq!ix;>!5G?yj~QcJ-K{y$oq$__*)PYDoV!W@ z6}lzu6ADs(95*UVxR&Pn;Jt~4k%Dp^kU(Y%blb04TXX#2)jdTZ52QFg6MIlkE)lZw z@dXE#uiO@kPr=2)j6#ycE7hhLkw&DvovUA8y-Y_t+mF4y>z&!L^`Bwx|5?p&Gf}FM z!HP)Iq%Ce`{7- z68SON`&363C+>k~wnwqFm&Ok9v=@6hPG60mqj58xzcR?h;GQC5GA}8CUQZYvNR|dbR5w@0IU% zvMcKI6m%Oq@``#h;=kH*9O?B7YhaEc`?a;NZ^-6@rFVI8?4~{@88;gkp+IZDNXWH} z^YSxVCSg=gS91&)+zt&!XWJkjR@85fy}<&37u{y!`Zr|EaLwta)2JyzX6R(EX}>nG zOiQ$!c5W2Xo(9m6a8KW^h)js_yp0r0v`j*6=ELGX<01@n_xIVlz;XB<%K<}$ig-U| zy1CQ5bxeGfSjXl@pJeIXxMyY=W0yo%ZN(}J`b8`i{xun)-pVYo8 z=%{AdH10|FBF0rXcmKd>($fm-uPxFeE43CajeL~!gm2B-WBLw&D5sA7bo&E8uaHPzrVPG9K49n7y4Pn8>4T;omNj+K|p*aLV2ZH@Q>hU2{bu zx|!_2%#%P_gZ>t$Fn==f8$0 z@fP@Pv@w|R+n_%tG(&^ssmx2LidJpntmT{AlVH1ncm3ldLm|d zH$!0N^?9yy>w8NtTkgBigPvfbwO`C{TKGR5p+I8Dorugz^n68c-M_QIZEr}0vk9S~ zF=KM>vt4IO6}%ZVT79|CRs^)OtVqg%RJvb{JzVdM@u`n@KbB1rh1kV7gfo@r7TyFS zfo2GTX%cICM0H?d#A#2Rbtx$vr^IX)HjfE{eYVaz#r-z1xD1jZJOd{RGta3P9)ULh z%1(on!XvO=f9=%nIh^j;@9;<5i2gOP%RDA%raZE5?Gd!Hre{7`2&>-CzuLc7lCH&( zKf8(BTeHCyxXrqz=k_fUkxfQ-yp~DiQDKVG{h_rRj31-kn;a8a`3h@jjq|0h3o=2b zo09!udPfik%DNjT)wmx@YckDO;His7I7zB}Fr zYg*0+;q*)Y(?wOfJ4X7Y@ngN{g+zT`%gvapMa(2~yBH4!((wi3% zOi~=XcRg5^+5OpSGOFm5cQvETU!g&#-J}T(S_?1m{H&c?n$3jAy^jG8)rdUs%le15T)Mh$o4H#DZ*yMTAw_zPdulycH^CxT-rD;x6?x z`|jIE!eeO(sPZkd|6b#Q4A{Oov4|~-NfOEoy$aMEE5Uz!2O;1H0)k0wsz-7?6dXYX z5^oS4wh5ZOY=3@5p{Tx1#ljbT55otX$d<#o*vxcxj2)1>}=v?Bn) zNG7^m@Zc*1A?UQa7=?pIa!8R?mKoO~33%wVq&wEsUw;b;bsiqd9e~s&xr&EBx8-){?%7h_aKaM<@{&>DwpsO1VT9^ zA3KhJOanhI4lv8)U;vHxWkU+I->F77Um0ep3>AJI6+D?|DScVO6r1Aq+fM%Wu`}S% zO=e3An2W(5%gvz9+(P+KN*Ug2T=HX>K)b??F8PDzZQ+MJe{oQie%3z|VNLVW1CCvJ zi|m3nz!8kaqZ7r&)Xn|<%$%0%fIG-S_PJuI@yeezSo2r!Q4c6fUyh2w*8_V_4PciL28n{77gIc!3t# zu`mwOG{X#&GD;rDn#hF|c+NMo>p{Qg1}BB%)iFC&{7Xq;7xCj9+r$T4c<2F-b`I>H zA2ImKMM=%e188^4IC;EYfJDKbT~@QBa^_Ff z)3wiZAmhgbaRrJrhoJSZCd#d*&^{5sU#?;hn~(qY2~jy!G>3^*LLiprPy@?#bi;R>-E~d z7+Zx@?t*~|gx3e}*cCKP`a%q zM;2yheSDNFqbjHGiKPItga1UODf>k|s(zka)8U|I`daSR8YN+&5>~Fo=R@|prU1Gm z6c>qL6NL*R8{mmyX>)It7suXI|735uBNawTc+H=HHt)`yp#DqXuyuhPSf@QLhOpAO zyzWobhg;36E-m|=cW&gBOt#sFcY}|X#$FP2Ru=LNT-4~qC0Mo>;iz1Xs+i`U*LYW$ z87$qEFdN%FUiH9Yf*JlodtI_hMmsGYxmNZ4>-zFHV{7&UZxUvQ{8{BMN|x|v-`0wc zZN7+FHl6+sx)pqCpJRx3L&&7n1NWw|AG(1!#fhT^`N|E_Lp3Cu_#1<~I1ji)Wapfh z{5(4hqEbmoMoM4W)YSql*cLS?rIL=Tbqz&`?IN{F1p=_}V5+^307qHR8n%JozO3ig z5YK$e_pq8k($#jN%^F47Xlofyk*Dl-%9QcM?iyVKGjias+_4Cab&=26y)L9O2?y+( zqz1k88$C926d0BRVi~T#2Mapd*5}sTaO6_vbXo09m}>5OCrz@-+KIY|y*H(q_z9!Mazd(-&I~*u1Mk*#vrZRVP*SDi2a1 zUeTRG=Ta!*fKlDBN@5&td_7`psi8z#i>VA#hYfH4#0liK(OYMdt5(8Pt}o{*rH9U8 zq}KrW#c)-<5<&iyGe}nSTq2Zlm#zhq7ONqeMrH3&em z23VSO&<9JiQFcG@a#YB|YQRfwA_ni}8YE-UWUEOk@^%iO_g~8rrc%4e&22r$q{^wC zNZH2!j>UXo$|}%Sy}S%+nOB|2WI}$N`$c|Yecel0o!#~HjA`d5A4(ZM=xziMi}cR- z>$Az5AhQI!KR6VC66~84UJ*iLil(!*j*#lhsP%Y%77@)wM#V~#x-lH(x?S+|2t{V> zDKXHOyfd1$w@!z(z}F7?Tj0?g40^n3h!axbwFn+5TnfluurkwGod!u!Km)-deg3*E z5DnoXFUnDiQ2wRww;+22k*LjD^62~Um0kg1yAxt{?fDBX(b)a?G;9`VR`Q`xo$2pT z)4X{-Koq5*m2rq#K#$GYidQ}9-cuq$Ogj123JZ3uUNTF7G2?vKb5l_h6)kx7Qx^vW zgkX*!qjEXR5T(<_pUiq1^Ix$MYz9$I&Q3x_w}sA1Km$)8MzaQS%UGSl?K}g(j_iP6 zhkt%UX!j*V7^f2R0BrLI<2CI=FzyV-x?C>0@C9i!qnSxDZ%1 zw>S9PdyD|i(9sU1;|LI*p2YssE5dSu*hhfO4y z3(S`u$R(@+8q!*e77=ZVfBB8-<^46NJ~Y;*n|GB!@7Y#!*q=wZ@V_)wh~nblsQVx+ zA8m6W!$6?Nwz$%id+uxG4jWn~H$FaO0%DC^z&6(e1kyG+?19K37mf%Y?&ZyOt!fN* zFo28S+}0GH*>?`=pq(Qo^yF6pNtE@`iCkbxi@`jeuUfS)0LzxXQ#adxJA1_?yOSZOJt@qPdv; z6aD)Q{}82@p)xp05g8=|EUE=qr0`nE?K0N0y{iR&%&0s7Z&Lm41iYhSFplP1KL_se#uaXJRQ|;&1e2^*Qw3zg}T% z8n?Jm?}*`S(vs00U9N+vmN%9fJ(A_dAyLGeGQBbd%L6jp#pZTNc-+3kA)ERe3UT<@i+ntcpWC^;PPeOM1;sWEIc##W!G9xnllSXEn%a`z}c7YB{f zLTQ^2D->LK_}z9WLC&(lRB5UN8!s5F-;X3Etr1ywA5YL=lnNQEo_8y0;Hh}Igs(EC$O*{V z7fV7(n$ll-{2X1)6q-E!*-+Ra$g-(&sgOa2)z#>k@_TX9=YE@fU=7V+p%>B8s3yJA zQ~GQ}rgL&9kgH7Pa-#)ON7D4G^2GlGP1}5?*_0;g4>|N22N@+bskQcZLV(BD3O>OC z1A@xSxehe573Xo;cY!uy_*^!6d=MYktYxwql#ViO5Ey9`sxlcnfzSqR!YlG_OpLz3^;1y}Sc z;QxV3t;3^jgbr8^_cHK0189Ygej6+9(hvSN;l1=*Q+WHuG9CzDA1W=v>{nYmLnAtS zBdj#G6YUuKJiT4$r_>A5O6Q!r%6Ah*5~;guZ0&Qq#a)WGJ}Kx#UjqCPnLK^5*$bSb zi%FV9Y`&p~jeA=ppRcEN+J^!OC;fw{=Li;^vmEdfNM+bvg9h0 z`Xk5FZ(7SDOY1Kj&SKGE4)><0iZt1*Ig;Q}Vx`sG-1#owb*~Krq2=N8bKe)-hLZXv zwgDfL0UDW`89<{P_G=Ld)XejxWjWpJQlJjVZ3QeWdDpezt!wHqV32-|e`c>27#ff~ zGx!ZZMC&ftZhyfLv>CCk)qhILSMb`7hv-DTsS|3)6SqCw&HFiP^hqU@T zgj4Kz#{1uFp5Bwgw*Nz_HBRE@qyMLH43-4(S_?gaZ zBg1G{y7zlY5LwgYvU`DVRtQlxQCpDRl!W9R&+?GM;R?jtSD4-=j5DGM$oVa(AH^zn z#{w3C8_cK^GMq@lMP3LT833j<#vG1T43k zrIT=e#W{$rfNbEQdD#k+d0!YD&{SfBShJ{ST({3&QCBs4pH3+qjqXVzNLO;@6@##( zT@iPCtEZ~=Bv;PGlFu59Q(uzD^CMeR!zc!**O@Ao)sGt_aoqr5+|pO4(AUKq4b`$4 ze@6zuZ7Zp9UwiPYYA-khRV^jJ`X2k0_grM}TM4*^>VOme zK$ijU0nQXyTtF7XnQ-_sCUF;c*Mf^X;otgVXNs|S*TXYqm|W}4I$?>7-LycOpmIcP zrif_6c&09R0NT91s7l6lgjjP6rL^x3gJ*I)*X2z_sIE~w=(l*jH(`$PPcam+1iY8f z*whna+8!2BNG2l!hTvWH;yH4Pq4utH$&{RciRo8twKG7p&wKYhN&S4j{HUd3)mjPn z)e_DQRYe@e6o{fsA@(qVc5fgw%t$Ci!@srJWPefRm(wv zQ%9`B!4|ii`8}S|#k&R4cakbl#wh&ypWW<12FMs;CGZ|Pmtt20uv&z9zIAa2+bagK z*F5yH2^KD60qe4d<@tCFD1}I$!+#O!_W4+bD|E&YQa!UIbYQwMT zZG?tlRv-4it>ILAovl%@`ys>}7?)>r=uC8*bGV9A8A!U z`;a7W?MXbx`Xl&@q6>a2T%a98lD@HWePR)dh>x#a2`1=w1Qk#2CtASzO$$N1_81S@ z+GL7rSzSa|Phi2Ckt2ZKQN6^Tpe7!{Y2j8ukhHF;hbGY{r2%^jeG)8F$hjk4C}9fJ zc|k4wJMv7_emD{M>f)`XPXffNv%}{U5%|hyUQH6mX0t38w9>q_3k(?Z zWej=zxE=8u+JDjULhtbPO6b$#)05PsP(Nl~VvxN4NbT4Jz!*uzBkX|vNs3$8^d*BK z;6k(v^CJcPUjzioqk8`0xn1XErSpoR#7wiV@5+|iPl*jOEwVRoUQ5pkbH+XQ!>Sv5 z3*8Yb^oyXZbQ-V@#vg0%>Geji68$`P&<1@#1+tkUlSW_Q$HhP&C=wZvw6Meb$nhpS z>RWLQs!i@o=)pmX+3i&)I<}!4O0VD}!22%cE0bp@jp~g83$piRr1x4WStn23S`mw&Cx8|?hTHt73eqQ606wlO{ zB{Zeh-1!8$oQC^H@*aj$@aLI4`xn&v{;lbf)3y?xq+6?Qw-}=Klq~YY2F9KT=Zc>; zx{O~M;6XsGeG&P2U_`}$6I`I+~5Yr34>YH(G!*mn(aYZ;-k-&!U*KM=5Zv9jK z;QjTXL!?%%y@ z8Xl#+nrqpdAP;0FMH#=dPh^h^fS13N^4*y%C}cTHb2xFF4r`lehHQHCyAiGNz5v3H z!htUyo?yTu>p$}SSwDq4>(R?^2RXR#{CD@r=f8U7KOHb7)uV1TRsp`n2jK$FVI@1y z{YLYT{UNHR1|O(goU7v*l6s}@v-;{I9%7az9~u9C$bqdOg3?~*`3aTEO-xnQ^atIA zU#dx{=VlZ9MSY%D6&~Tn$H1oUyek1UX^P=6O129^3%wpxweiyq;?&)C+6r5@(jpP| z!(`evUBD=hO4tvMRtCk4ccnSs)Y}?`(5^ou%t-yONPpIY473zISFR*tV;xhdy1{ zO$m6)%VGDR+vwMpDU!C?INx6XPQwe$2`GTJ${O@aHd=skiuN>Z1;8<`uz` zaWHk1r0`kcjh_!0S)ek)JiyL42NJTR_^hz_-Un*puqB|YQnRwdF^|7mC>x`?zc;iTBNywIkl zI0QJUhbd`k$9V`sTRzmx&zK{Jlpe9`W8U)Y&%HoUmX|%=_Lp$()PI!jJ*nWl-B$!X_J3>96n=oKt;&BQC@Ub;{6&fg{=PUuj%V zmVSTR?SR-*TZlF(x&JEi;&xDTIrpitC_bOs>)#}}PcVcgNzf+rIIB^EUEjN=8(@Jl zkU))uP_jY+bP6qZW{w86w~ooW;6#nhdGXA#LyWJJeEHB-q&&Olm@?XZnOX*pKOW7x zyHrt5Ycp(~|CF2vr7iAy3|l9Rv}ORZt?-KG%XdX6*ektVFx2W4${L6cd_N|?3P6y~ z?eWHNU*$!re(~=ib>322UX)grt)75`8$U3NFsii~&ka^Qe&3FqkyLjg}IU}Riv$@e*5a)Xk0{CB=Zu>yCb`$&; z$|28v3N{99qCx`-`ftzm_0l&DXUxU|Cj)0Rm}a#OBz+nKf2e`Q^F(QWn9L1M!Typ!BY)SpoipCtNaq*m;u6hq47oOSzC0+;yp{2 z=93puFBGvr-7b?WOi~fnTi+OF3*z>S+`hH)Ykp!dN(drvbRaSY;H$cSU4YdA8LM7T zgG2JcTY2tI|HB4RK*lDyYKBZb)aa`=U0K5OFljKzt22BRixq z`v7jw4v3ptsLeZI3#w&UX6i<9Sx0+S?&avjdwD8J)DC$MxZeK$D_2pw`;qD?UU^`Q zxD#~=Q}0?`=_Xq%5XU-HIzcI;y=ixVr38w)>r$G}a`zUV_lc#9KQ|?j1AI2FSS1mo zDFyLh^PzNT2@+uC5O6)b3xUcF*eGZZeov=tl`J4S7XW{$NR8*-n3R{i75SN9g@kXB zc%>C^17UF`=n6mUV82%58^hYGrIZKsP6*@;<_nTjNd_X&F>X_n&rjRqPZU75rD|!c=l23!{g+}~ zkF3w->&xdI735pWn}3I zE&O}-j8iA2u<(t{FTjncuBww*${|IlaYo{RFX5)0L3}h8=UFn1Z5WEhZJme#_SI8) zIyAZ1{OD&~Hp0ZXxVH28F9Ewk)!knHel*CX1QTVkyOvMHZ)+87yXIX0Vu^^5#EzJ!+W7upy%#`Vw@c?M*^iIl_CahN{O@iee|Q2x*5(CzhyZ&+z^MR#%fDy< zV~#*TkZr{IL?jqxLKQ+94Rv{YW9WFTtmG8-{rc)UHcZ*@8}W)^81syy(ybEpG)^$z zq^!~;o!aD>A`a2>gc1yG5Dw0`AW0%>*pwflf-FY#9$1y%eqoT&a}ct0w2(7IZ5ER#B4P{%7T?3-!~Su} zr|k7YRzPENI7;EaUGYcahuU9!kYWXKdwfX?DZZ9k7z9btqV3!pG|Q`?7vU;i1?oz#=0*R9{-B*E9C) zV>H!M30pFVrUtBnc~aCwx*P?yjmxIioRI%6U;OPtJi}k0(*>DIp-&DCW}!xOHzYGb zDTFu=&*=0af0qP)W=>U71j*pbr+KBJN|GoApa0@cE^JO~WK(7`?M4pEX`8;j zoOw~9AT0Geg&^T%@;DdctAOM@HW=x5gxj6ITtLrV(Z-g*=3++|hh)K+Eex?gG<17w z@{rkH8%MHx%k%Suhi8ANN76tuev{u6Mg4qF)%?ml?wE^J;i|d$SpVJWEu7Ty?ouI3 zs{ZZ*Bh)WDbaJTGH>cvgtdIbJug5llOgLy4ZyG}G;bhpSTWdMG(cr2sQ~oE06#i-F z>_eHESEj+an_{|J!2bII!}2P(Frn3mS@6kC9W%IBxbCW|igwxPLX`{U#lfWiqfzk%V)YZh(5 zu7UKZED5C%@Se%Y1Z*m^b7sB!u&tZ@>t@DFTmnLSzHlONxF8DsM|b+u)2@a1;orj5 z#yl3mv_EQZ>R+{Iz{F@^z{tU|san8$qeSn;K$Ukb& zL-8NAm-xcOa%hW^$RF%+?qtoNV}D83de=>HArm`P5ZMRc1rN}aNv+Apt34ECsM}!~tLho*X z+yB?fEn(7CXEYKJMvj^6pY$2PxjD(LHN?&5$J@v0Lxjr;Z&@bdu}at!LWK$;stI)&lHi<(8)39_}`u(L*26 z(>S``sd(3+TcFH6HE{UvLeUlmzZ%<2{0JaXCq;7Ie5Kac<_^vERZd+PE=~b8nZh27 z;6%{&#~MmFaU*>s;MGyyLH)*wbPx712jBk7Uz?uAO`>eDuPmvZm?r+~L*UaF1FTC? zP116Gp+L8ICvE_lNlZ9ddVP)E4+#{*@Gv)3OxFzyzKSKXx8WYItQ>bVh?xb~>HtqS)oS887hnJz{l;Q2ZsP+K) zR}VlMr3l$T;GHte|A&+?eBkppXbfPe3XC=&g8#dy=kfddt$oe^#D$Ih85i~}>gTtK zjNPprAt*Nd5envdSH@2?y;g%g=n^pz>r@u&aS8*sGCOySl-5)YZA}<`y5S%*3)(wB z`fD4F6K(XKY4`dUVH|hjUeL(v$C>s7@7b#3!yN@|6?z}r2K!{3w$J^!b;Lg$m3wli{lL~_p5DNnQ zasr1*%2)Vj-dIvX5}5Wf!{ zD>#lcp(*KQaWvX*b_Qv0fTGxSIWfk$1x)AVph4$F@uno--j8t*XzMO6E>^Zrr@&~e z%%%quPEotEhO^Zf3XNco44|t*7v;L&Bz2}ksPo9 z5Kxv{c=cS;@#cAcL~pl>w_C3VtlQP1LN@(i6DzyKv+8}7RiqjX=mzUWz(S{X_c9g! zRdL+mv!)O6j_?Qv=)d3puDvl&$<}yS69_fBU$V$!zp{(*fa|K+ zBTbulp}|-ok|upyQ;)4I-e@aw*NFZTJoSU5ikAXHIXZJDso;HbXxXfKpi;_2xwi6$ z9zv0ufC_A6$iootDL5uENkI8U9Fas9ThN?&=%7VzSbDewsD>3N_;t}}sUi3K4mNGi ze1ECLrx@g`FdCKf3dlf{=er<21u8pU0*2$NXIELk9;IdM*cHlk_H$-0reU0i+{SG zUjQgtW`u-k&mSIb$%0S}p{EdGopLfUE)@;3g3YC%`ooTvkor@9XeRgW&TTQ4S=AX`5r| zovTjCg5IZ-_6~8|gx9zfuxCD&fD;Ct(v=QdxwW_P_~BRVU#d%H19MB-=@m6*gKo7w zXS4eUBxh!7nlK(KQSasxjMCmp3LAmtpJ%p@8(vy;X{pOQ5ANRz?)T64*s{AK4Q#`$ zQvknSG1gVnnztYOTb?SmAQyd{q^%gJM-YrDy_;QnJoGva`Eq>noy=@xD=pbqFa6s5 ze)bA_bH-Wq5XGT?=2RF_vVYYHnnwfcY;g4ZZq^^%QZAt%JJ4+vHAW;Rnf}^ zdD^5h`#~XHC?B0%`1wI@{z4j3;^Hxh}|1hOT042ch+%IjF;F&?~~mhTnzHh zZ{HQ#Osk&)EQM@ER?{eT#ex7l2)KRWt+V_L?y9a;%@*5ckL~K7mgr}n?FqGkaZRLi zM{iZJuUd%yQkvp7cEk9}k5z4}Hg*dcwliOQ-mw=sZm%s>WK)vP-wT*CZ;x`5aJ<_^ z3n#oZ-A|iiIBJ&fowTpHbUFB1oF75;_)-8)Dkno~oG7lm zx8Ke9%bhRd_|^A)f*>dE?5J)~IrqMAZ$bL05BUECn4{^9T5~z*j;|~4Y2Cw3=jiM^ zF`l)N0=%Bo0>t^y;{@I{)XNhp9X*0#y11Y|2Q5~>vGH6v>#&0JV1<)~bA`OMBrMj* z?7?&7hV~6DH>|ge!H;S4*uGFjvm~EBnZ83?$W<-#eMP$Evrh9Mon-!2SjPNxwA68Y z6CeP0ilSD{iS01=e4ST|bs1_MZllUWV5><-QsR@p+1U0rqvwwbjRp0VSta(Knd>Dy zM$7>8HGymS(=Tyie&;RsV<%(vFPCk0MlNPUMiaIon>+P)?!06J*w1cB$DM0Ljh{>;VbZUkb6}@y4l>>xLl0=Dn_{*`V20 zMjXd%Q{%(6nraD!`$n3ke?_r<&o5|^J(}|Pp{W+cRc>>pyqYhjvuzu1$=M5d^grJ(wx^W5wz%Hx- zzXWsfEDa??p&O@A2z)^^%;@zmC5 z9}Zk5dRbRHQZkcTtF14;U)tvUOLD975}zX+ALRRvQ72I3(d@b>3Bq9?3vU_Tlyq0X zA2gvgf~_;8G1=--uQ5-lkF*W?Ra~CFUH<00Pq0I72){Uf0x``7&;aAzpfx``P^@MV z{ZMy!>)pQ+7xh9B6V(BfKJHitKa`d=K7U}VAnaHGUw@Vzh2Z0Lxh|;l4>{lJ{E7(FtM1+1C zW><6oVQ$-LCx!4ez%Rq9DAYEmEjjC1>3Jb*W0?B{zep=ZQ)7#X2`2)vVk1aB!z7F;Uqj=Y_ZIYk$P z^6qJzQ3cBEMy6|{!6ai2p^EJposf1~(vw=5!D)uFuiQqYIPqN|9iV@$jvthAvM#_b zB{&>_`K$tt4-1_owx}h8uC={-nscHQw&l!{Fy@gzjg)}|1%r(x`49IYXDH-2rOUh` zb4Xw+Tt;uefhe~VDs?TkT@JPbm&6CRX7|(~!yLC*Ngp~A@bi8m_5A()yv?gM?|h?c z)$^`~B)0pw*jK-w?T!*FiO(wxHY7>Ek!BjOhKazmsb5sS7UF0mdwOb8YEaOj>B9L7 zPJ_HhMEqVcFa-JMa50GnhkdnPf@*r@RbbfL94d|hSRm}64AGZP-j7h-^(DX?g}52I zFvl^f7F3-jUVN18hOvPz(gFjS3JGIxVI=_~v9SZv0QKZ4+enRVLfIGBF*XbvlpuEi zRhFYgXY7HX?7=34O%WF^`ZYJ`NtpsaQN2-z5ijiN<9P{uF z3@?zC%mnt37lx00WAWeWu_C;&n%bF2dQluj=? zlssIkU`tTXc`qOx|n@TzR?_l_-Je7u7X8%5a= zxl&RRiJTYR<$U&K_V?xP!?uO;?dgN4K;>VV#&WBd);$Z1yzM>y~+O{@_1wi^V?U77tP5RuZX^Om&>kfiW~ zRKH8MY7O4u-9oaNSis$N2>3VI7MP!C{l z3XI~cUq;xxiNUD3eMoCzsmvzMUJRCBZP-hM!W&|&vL#23ve`XAhsF+gtes&f5S5{8 zUNqUC*3W=1HNgyG?BiBmO2oGJj$~@Vd$sOPqk-AiIY(D1BTiQpjl?Fb0QLCCDX#`4 z6KI8TQLX|~BVZ%`?l*``s-lk4TgEPKi_hB^PAL_(B!y;8= z#OsoaSZv`;6b%)m_y>Bh8ez>i_strKbpcw!38V@FoRr81F;1%I4D|%O1r1k zWydPr?}ailj_~D`Z$J)9WU4=Tlz|^*ejY#`9XJ9&Z@o(N0z7<9xQc><>$Ng16dM*K zCR*7|4xAt3V!CYM2_Z|W4R-bp)2!!uSIeGK*Os)~X^{Lz@`u5cDMuH)kp0HC4EZ|O zI+xkR=-t`b$XXP89=&OdWfZ>NGD*R7Pt3G6<*jK;-Q2I=38rmTO-e#T&AP9(wMc3& z^R?}O?d0CQ*RwSmKhus7@66_00=#SfF4_e`oETZ1I7RT~0Q1hSXrbJx$rBOe*L7)p zYHD>AZAB6E6HvqiKndUpcr1jN-GYsxB|LOrHag`7lQyBx0P13X0BMOW9*B4ZBg;)? z<|y`ag1qTkauZ>Qg^C>Fu2UCc6q%1IaQq8kdn{0_Nvod73;U#Gup=xwmgb6gV>_f_ zX2$M!LE?A7lBJG27(0~b^_g*-ix)9%mQ$U}3hLed{k;Hz(5T) zt7dG7eQuw30DMzu#qdV(80#6jk+o5xyk0Ds6tP!kGrs|pLqN5JQdb0w1LZy|sYy%? zSsMHFyCLet02E@5sOn1Ks+3xt>`KsBD@88Uj)YU?&!3dQqnc#WZE`R6YyNFU{e>%1 zyYl!pYtD=by}VhNfF_^ky;uOLR$$8Jge&u8r^7>rsR@s~5bcSE0wCn|>L* zJ>0xqV6uGg2*;N!FDmWbOMU{>g;*SPnOf~_916_cOf%Qms?pw6wGG4p#P@jA2;YY> zAtSIMGsKbJCFFw9Q=@|d;CA4sBLb3S;;GOS|0ka${o~NC)QgDz zr^SAv$R~1OvKbgPfJ#>NAK-y9BV#QyYc(^w%D;d;GBzC_Ng~9p z1*L+lRNb_~tkiE{7?P4oSs|}xR1k^62nf{>qbM~vK!$!OQUDgw7+5d0LW{mH{z-fA zD+ZZXauPVZI5aL2^$?e+2UW6#MSh=su3MJDZ(v6Q zJR3|XYBagVXo)XyVgpg}&sz#CTsZ?G;XvX5bj4Yj>#M;`lYOJBX}i;e>o^}FOUrg#oV+Yve1WX?_b{qe zz{pGjqr+#x`zyk>?&nkY%rwTF)>eQLyT{*st8d_EL zLOkwm1O%yOsUbQ>rJ14lR2j{ocvH8;gqM!(ir10L1-`&hK0yhNlkcBvHgLd4;YPJP z$=NJtGVENUf?`n5d!B?jceml}NLLp808Q8&{3Tiw`{`)~ioheQ($eP?rM50l96y+1 z{aU$7`br#WBM9P5!{6ea2*IK&ryE2g=W3acw2FP630LdSztu8zOXB4tde%m8Iy0>t zqORR&GGCeow<{91er~Ni-}+rIS9Ii!uD@SF9#&+EU+O+?a}02ca6LcA`#c=^0tU}v zE1^GG!f)S?(}a{JIJQ1@?VmIFj65V9y@YoDoZat#3KY2i{rNJL&vgOgaaHu?ZWH|R z)u*I2;>D-9Hz7P?-ILAd`1#fBWv%gT(3KcOgO#3jzFmGGT`Rmt$3uwhBo2W2c9)fWCTj z?QZ155OCBXM$dl^MI5^Lo^T%F+~9o^Dq-@v{5;&q^8P}z$`j*_Nxl@=LyxGKh0DYv~=+GgQ z0r%A8UgDm31c4u5V&|Br37Gjl_E->V5M^=Kx~E~UvOHEQCy^N0cJe%I@5*x@B&DT7 z6Bw9aqA7%qZo>)XI$tZB+WgB6fz}*q3c2gZHcA)S7%OZH=?k4AkC8phVq1UyPeLqz zCwEo&)rEnA(Df>B$R~f}B&=OUCQa)>8+~pzl?iGIch7+((uIsC3Q-n7h^?FD>Nx1;YtISlPp9*yUtmKd?3;D_sRY{S z?a#!04IVQ+d7VGoZvkMUVLvhSYDA7?mZ{c0kYD?73_`SdMuZ^kyoa&!ht#)vzE*Obg#=KwC@1$LRHI%U-|#n>>K~a~sCt7L*tTOjt*v;{A_pSlwTv zC;qDAxI};plN_#?9HFH)#Nh&hl7pfHe-Og40sh$BSzTE@fqdX9^XUHss7;vIOt_d$ zm`@XRtT9wE2F~xom(-NKKpvx`{QGfCZ5mV|mYYay3@x>#HT?or8eGlJTnf|E7e~|c z7atVSKyxiBNpWr1z`ksRPYt5W&T4)^5iEg?eE?Bp6^m@w4=lR8mNA10KC=Z(SC$IT zq^2d;@VvjKdrrK#p7G)#HMo|;i(y9MSm?@;#dgW6>@`cIz_Z!kX0t_>&Ib}~2;U;g zs)FuBn3z1%V0SIP;UV0SJ13V!{C1`r-dP)$U3CfEK+%;qn$1f2s%a-L6$7=5z}$OX z?$C{ar4r)oyp7C1d>OH=8YK@%(dKN=w7_FXzKF!zeG7kzgN&MMAif#$3Q^tcznMZv zi9rjrJi()ll@LeJ;eZUR-?F|P?YOpFe2KI@g)q64@Xj`VK4@YKUsIs-rRrW2Bm}$qHJ(Sj_QprvU_4hZ*N_Kyo$y8jw}mJ3$C>%J ziHs_uflZSM!@JcbIhhWE1)t0hdwS&(E@)&#Kx`j=bl)NHKXC!y_xN$KAiJ_qOSs2(59t978nE zm?`W(K#*QFg#SWsCmf@ugDXRAx`Ud)$PU>E|7#tgsv9avgj?B|+B2G&BU<~E zx=P3hDn_P{!KE44RsTRRXvyb*;i5r~syg*lbE{o=(+Uk#AsLKSkt*)J=w;)t!qybk z_%;%o$=J;{Ag{Iy*o$AkLr}?8#iPmb#4xf|A%PR*T@EjRolSzC3nD=S-QWD?M zs~TtbO0vaNNn|P#Fh;#*zI#McpE16@5SKH`vXTPs|fe+$(sM<$FO z0J8JJ{+BLP|9|R2OfIldlHklY5z1ko#1MdpX3#hQK>!AS4toO4%M;a?r66BsB zJlG#3GKU{TGAgyuC{4c?^jdx+!9sS9qkilm+H-XgVSRYX0=`n_@AGqa<&O7@kf&GA z4}fWT;I+Kr{6W=@LHBL;_}HvJpC{l-Jm(eF)Lq7Mc-x(KnG{UkJi>sZ>c!*QOLV3{24E#5P@9) z9M6RM1n38mq@vCuq8uOmAkU@gf`Kr!_BwEKM02=;i6GTS{elF}h)m%`%EotUqu9g5Y1+_AS3doi+>z8UusA%uPX_i_R9 zhw6_=%tyQNqpus_|Ff?H%N5|^0D3ZbqId%#+tD3C1(sk72PF!VH@~1mvZse%ljktN z=>V)nU#dn{&zerx=vLcu4Go2#XK~nU2w7PbCG+xaQgAV2wAgkl?b7%kgsCHWi*Ssr z31`KR?QG2qI5|B&JN0{5UyZGvy|#C(k9zHyntJo`+2E&-`*0DPi$v+u0(du0Fay4Y zF!r*s+yCmva&-znX8JWXH>naE5^?PFe3(Q1Kzc7{rl)}z7Pi(f@$Q^S9?Ys9pnNLe z>$u~1B?gXj92Gxo9fCl&d&pjpp`Wr6Gcsk={uC(qpiUGU){ojgZ8&TaEU z9$YYM@@@6`&El1p#$C{;wP#2t?H4`7muCgK`Cw4BouQ)~Z93XpFaX4d*tJcH$8j#d zbq{NVbq0?qC*8(STP zdrw?F#l2RLvvsect+)=S2NS>RFZ#DLcLMbZ*Gpswq>F9$?c@5PQLFmm z*gfrG_^mJJY=fQ`4SbDj8mjERIRu;qB;f}f;&&vzg z;PLbK(BgmwU_RUnH&ufn@7EMdecml+FcusuE||B3cvk^H26T*l6i9hYC4Zi zF*alm_Z(XvgJlocffdgBf>v`{UckHyJQ@nkB$Xsk<{J2^u1aV168oOpds2q!L&M88 zaE{hfL66^oCgp$9CQqdaZXQ*i&D%jqu8hP8CURP#qX1i{~9By7%5uQ zKvDI64ER9g892)S6hr-Am$Ls5L$SzF znF6zz5in6h4gHe(LIVvzdh0<;Ho=)WfgKhwSVBozw9%W{f+?7x=~pxe2r-C^I>noz z)(62giqA2KT_#+k&_q2Ve@KxDi6gValR;Jw zefQ*&+7SDvp&7?QfK2C5n19{_q%1mYIv`397&hP|#a0L-VNY%(tPG z2M@rD!;f<1;tDA|Mqu2K9(kWqAFyvEBvE7`sir}ksD?ot6KEU;g!nOd&|%)5_j{m~ zzwi0y&Hj5e{+d6EwoS#Z!>G*}Cs-1mGrKS#nmLZrL2-UZIr@ID?@q!*g61_?0hEK2 zkDdu8L)`J|W{PO!Vo@tX;Bn73xPkz>0}3ERT2dC**>hN#;8}gc%hHHt#?cz)ps{?q z?UrMJ?c=>~bfPtD$42KB;nS~Oc5W2zbW8d;z29XA6<0(b4kc^#l}j>2Jfc%(xU$-i zeEKjmqU2uNXat+#>nj8DR=(4-!^~)Q(gNV=vB@30kPCps zx$2Ok1eCprk&FNN;dFd$o@MVOsyDp7X5_RgWxW&Lz6kh-gb(5_% zaTj3bipW{^3~>SYQ!4Sf_g|jdF{U~Ki(*Pi1$$J<6i1m*O1fNV!K%Y+dZHQNsY(WI zC%?sFQ%vM->`$mz3o-^vy3aWzN-@7Evhb0i<$qU!=hZ^Sb0iJdcfyE`m1sLRB2y$Nt3@!LW=~C73Iwch^^9~;m4GMwGy&TP0W4hIcbL{=b%cj00V$0*S9_hwB8z{ z6%9VvhC(=0aXilbR}lXT=uEg$&^}>xtn5fdvoG&mO zZ{8aRNKphEFdL0=oM&Y+rHWB4n*+#eqD|`By3WqMW9!P=$Q-~vW5y(tn9l%Sq1?gM zinUlGSCQz1w=1o&~n`0&L>E*-I(sVY?P~#0g5Yi|bpP*mK zD4WXF9W{*aIzbvE%%<2aOt{MK?NATxTH!>co9_jrelaOPD5Uo-Kq&j?iW^!$MoYU6 zR?0?>HT#~Nm;*y#d9LD$$?|ZO{Q>~VhZ+|8NSE%*hFDhP8&eO{%3C27MHtVu7CcEv z>HUUSP9qKZSf@R(g_^Mq9B2pJ@c03K=k_hBZHfvT`t_7Q9$JkZX<>%RXMz$z9S{1o zZ9ph|ODzMb$G*=2=7#Uhcr#!2_ zBO2v48T0eRx16FpOR!R}#K>+bcgkt(O|KQ>`et0zm(@5Wz!!F?qvZ)VllprlATbZ?tvXQ5&kXsUU<7bMmZ-HTcp(A?W@Kb@Fm0tlKt4cf7{gg#q{d#HPt>`f zK~g$k5Z0Gn8QFC5UE(X~M%_wu5d<^{`2&SG=#vwAtj;8jDwRx$0^VA z5y$SuHWwc-wr!jHURGxrF3itt5q))b(o1ZR8wKbYWmusHBrD00Vs(ITdQGXwP@Zc< zA8xMKI*o}ognL@3A>@+14(|8ZI0NI*c1#f62A^Ejy0bTy{G+&P9f+euWdockLyBFX z`V}8`WMRc!f31$!O$Ib@M#0$!qGzyC++>|ME{-SImFHpamphseE^ik}zoymeq#gMa zK;Yxc-X1?<9t&Lu)~NuNJ>@I8gKax%F}KR#LbA+uB+0 z$&>2#IA*MD>UR`iG(wzD-^|>h8YNub&bGgInc>FeN8hzrDJrr8nydr`sh?^gV=Nb; zY<%>^sW1bnmV*>p+=2@rBF6e4o$|}(OdopSKrnjXa7UF#Hgw;$D`Vq65xHLTAngt_MD67Kv7S8>4_ZNDS zM>W0TjsG$1)bSvZN9sk!iJ(8pqcJoZ;i+`Bw%CT9&{haYD=bry&+9I(3}AOv^gjM{ zhg^nHa{46@mRw#3n__e*7M8_29es{IgV8f{T_n8jdcqe7%OcFny+5`iZZv>y+Ft;V zhSWZGo;`O|&9j^1Wdi1TF?NlSPSyOjCLmrOEvW8dG3~*s)6x3ewUH zOYH%eCm~%ttGsbr$ZoP9C*HgvhQU#G%!I4o59nTE4ORQyCcWUi?RA|=I@aT~80cAm zi=3)7Z{+uy=ORsz8pK+C$OIuuk7lWRU@Z?_K9}fo9j=8O@HPwCThMgSW((RzkXBU3#mo645YE2pd|q17j;wobY0xjo@2t+=6cE+Y^FPD2enF5 z^**~u!=I~=;3SgBm|r-Oyi)JDxso|Sx$UXr6XD_A?f0-=GR&>ABfD!0rnxK9_O#a>#$iF zzp!WKR5anCGFdd}K0FpR9Kk*@Px&DiJG2-rDR?eIk6R;iI2jkcGD2(D?i785V8FFQ zJU?%YT?jyBFK!aV%>g?&y80ofvYi0Vd(?}OGb|0y)}~Zw`j!*NZr3a;X zh{u!$c6*rr=QH6d(2MSFhM=F=;q-8tc-dl+fz95ftt$%04j6?C&8%NM%^NQ`<@*`W zSkL6sO%x#8QMxH{IY4){3OM$QYK{$0TI5T0{PgKqe%kF zwjN%TM2>WR;Kw(Zc`VsJXvP@$H>JT|SI;Eg^?mou8f0oEntSt}_evZxj4aL=4MGa$ zj%0_E_e~V?tLHu}(|vip{&fTP*9?qLY;d)?t>%HEzs}Lu4QzjfIRma*ZQe|f=&}p; z`_`lLGWUrAU94jFdc)r)>SI%S5siP8)R!vD)~;Bpvk}h?VGTWW<7})p(5}8IjT!eV z(>hs2@No4qInGFmYv|`Ndb~d+NV-{X2$zTB8U_2gBwQP{TRBt9-nte9R_zoL7pqLJTff3s4qEP>8-INSK%?SX8`B-nil2 z-&>fJkkA10hIpfyYsRh&Bb?63og%L>DF_K^ev(BS_k5+tYug*%qk@N5l77*F1Re zRLh(xOOCyJxZoN}=C7vLW8x}kX{GQX z1n|PuL}M3JG!n5ju~JmQ=#Y@A02LV!iT+en*ekJ~0(ml^{tI5i_}A$(;EM?ubwfo4 zlq2Y$zufX;!if7W_g|*?SpN$201d1m(Se@mkOXn(a?7xPP@FLhq>?hgQ&(gvvA^Br zj{$h4e`#a567%u?N}M{}xrR~E56Vc=g>n4gh?1w38y}sO9+wAZG9zF$fTN-GfYNrV z^+m%QW_7tR$_P`d)dv`CDPMll#)0}991pT`B7p+Le1N2q{?GsL|1yOChlVavevFQ? z7(r5oVg3&_9Zo+`u?3zG0MBapDH{iW0b~vW+`^Q|Ww=6L-@J0*49EB~`1N77vy2HE z_Y^#j%U1&|bTL|mIY9EKh{OV{pU_@U6(7Px`mKvU-Q=inmK-@zJ$UtZUshz4Qqp~l z!+hg{`~<9?I8x+Ux*Aidr9bG5FA5Rpq5ss~Y~p^+LfQuY4FF_5IArXzR@AVW&dvyhAq17$ z0D~@2zF4_iBU~F=tnpPT|GEJv1--RF$ zWdok-&tm1erm+V`HN*XvYOVfTwfezBVgmu{2q?g}W;hS9#u}hU3tZlx&>WuokCRj2 z>m(dDV9a(#5M?bGPfAq(S1|^WXB(hDe;c6-I_m33q zaR~`;KZ0k7HhXEB+a>4?$R`M15SAYtlu{@X5_mYfGo!X2h}_V^aR1s`{c}{EN$*Vi zuB&RdR(B!&`HWVAnq}mZR<2TEoz(5nG}xyBfaRt2C8#kkOMQi*UZBUjO%0d-Z)B65 z@OV)n!MEqirP=9OxZ=6%FN8w`uZ3^F0iPz$(W;%oqeYp0GT@zf=l!lRuh8Z%LXp=7 z98A%f?M<5iK4xi^&jYP3?ygAGdcDvs4&HWd9yNSlv1XAnn6^KiUq-a*ap8ur*}FkC z0YWKvL`$YG5uE{>!XNou&_1fO*pMUtMGYGyHF=k8#H^V)$cPjE4p{jSYwjlfJ z#A0?9z_@XYe#`iwa%E5Ig>XOO8;e~q3KW{0LqENm@JlCZtUA7R`pky)ZG{Op9j4;* z)s1To70It9rLT*4W2B}Lfw5X6YpsU`UjbxBfu*77XG3Ln?F@3P;LuIwUN-qMcr}8- z-K^F-R-SPBChSkG7N_ifIoY9BCP0cG5#01IGY3~#@-;o`xg2B(1UypQGb4R>VH7VK zmfMVcZ~B}pKEH&}duaA3cUD471s;@dzufzk4&q(?ZGx~;(+g8o^J755=U>w=Oh#Nx zjE2ChYG|zgROHtGTkZE>I+}CT5QD_n^+!R^Nz0hxd;x;yL*W7^s^KB!|4qYw{$qlc zhdX2+dpEE5Gb1DGf)O>DE`llQ;04Mbl0MPmA+q?C5#JqHr>sSC!4z0a{{O|?TSmpz zH2b5t2X_eWuEB%LFarrL!CeyEZID19Bm@ST!AbDo4hb&70t9yr?v`Ky{+m4Sx%a&1 zoOSNHYuyj`!(OXr_U`Vg>fT*lzpCnu3sa9yi@KGwl7*R7-Z`$t#ld@UupCgf$l?6B zSmJ*tH2Nt!-ccfYE$4rS+y5VPkN?R!#v2&vcmI#fW6Di<*bx@%|9^9jJ-Pm0<{p#( z@43e+|H?i7jRU50shQa{%pme>zYdWRM_DWgnn#T-HFvG?yr>-Z=Z)hZ;py+w;NhGa3ks0eMQ6GadX<3?u3i=a(JCM}YKS!1xbz(1xDP(!V+(b#(1bDE+|>EXe6Za4Z! z2LW!OVU`3xo_gD3VCXO`Db@$q%iWNp3~eBt9)!Mp%rJ!A{kt9VkN1828-WLsNMkSw zSUXmT#1jv%BLFW{L0Yc#-}1THkRFxP*az)fP};~wwf=`MK6nsb44sAE>Dshee{GV1 zWHUa`__r;}mqJ02f=xSe3i}kxnP`n%>i8baF)W+-<%Az#8i+29uHL|5m;7{hTUM7X{9-QT7Z-0J z6!8?sj8mdwLNqzkZb1;sf>5zy-c2H@B0?8VEs92ol=@FY_2AkfGpyC^2M*9k02)Y+r=73W zw?oyL*_U{)Vd-kOP*iD-iHHW{V+Ow>AO7D~znDms3Hd+W(wAPQ+ceCwVeDdBbuhZx z3*BtCEbq5w)>O@OuP4Q`e6iW|XDzXPEw0}P;v9*@Y`i=EQPuJB7{s?A>(t9NhEHmljd=v7F>c=-{7V)6jbjduG2r6Bs1VUX^C zweaYN=Yne zP|ehfs-xXKKS1X*=fT_~Z-v|~q)$&h9oFv_#)P)7h)#~JOrH7hkz?o|q_9JzaHxku z&n$kkK0mRWJDQftI9#$!IM4F1kcNfaal+=NHwA{i$_E;8e^04(6`e_F>U?SQb0@vB zuz&Xe`J-UNR8ECiK~o5?*=M+8`NEB1!;-JhU6+6Z9R@T^rqb;73E}xyWFn1fG}E!l z3pxBIwj1Phde=|q2W-QOwUr>enmjks%!qoH9hiDV^K zTJ2R1!?a3NH9JR@Y(cEozXF1mNZ@)pIaECMdj02pLr<&UP?Myw1z@BLO_doZp5oUd zEZ#p?e`x}B)^>cU1rMySv9e)FHM|P=Dvpv{Fl1U{xV+Sr=Lib3&(%we;AFs()eE;2x^7-+M3|vD1_kXYuD*s)vB}xZyG_(oe(*0u~7*Bj`fb;qNPZdS}z2bv~ zzy+6#M#Y7f`QbMF;|4YGrPYJaA7XMo{Vxk6U?S-KZze*FTP!C(@9@YtxLD1alJoCE zh~2Ux95d<)p{$O4o4(oXiQPA@JpU8IFz>Rw74ciH z{uVH~{HoyeTNsb&nnh-HoN;R}s3y#$80HDpJW;BGU94iv%&c6vz7xUQqEUGttB#M2 z?ORfkA_?I7TVB7#)lLL^636}!RZzeU6NEoo!l3)R7u{6RLxz{{qW%v8{jVn1N(8D% z1J53+)<5p?&qRitE$}N&OwRvLQVPVkwpiIy@-f!8bPKk&cK%yRK?+J)K=5&IeQX;-+J+* z1bMjl)HL{pKs-!&Aapw-4wh3~;zVIEmt}zAN}O{gX7MCiHJYVUtoFD^s9=Uslpbm~ z1+|2uWrcAu~Pe8TL0bxk^(n)6*) zmNF4qM=Yi*y0UJC!@Tr7d8Ol(cDR`T)l%Scx_@eFWaR9h=6Z$L znTjI)ZNE9DswC-hjwV6Y^mOX%i~+l36X3jC4|9y3y_Z`hS&WryUkk`+rg zt>gIb``0$6VT$n+?qfO+(sji{n?6-}Q`{PWO|^8(iy&GWQZ|sQ>0cN39;T0#qJ0=A zBGzuc(`x^uc3TRU!ABIbiap@-t_&j4vkwcbs?sC!xN37 zl88%9gxv9EuvnRgY9bYhb(W^@X;tt`3=xfC79sR2lzj{qe{?e}7b^_tu}_d5n^)X%_R`cVne z50>3tEk2JYp2!vW&WrWN{NFVK(m?~dIXn{;`G2ye|Le-`iNyxbZo?pk)1e{D zq060b7}>&S!tf(ldD;c+k*fnGs3^}<8DA1wU>KX%fBB8{6J~v*v3W{oaYetAV+)tz zL=%RN>TPVLm*=Y+A|Jd{{QchY3C)7uBL;GTRq@angRmGhwF8PM_9TqJc*^^y-pmN& z^<(D{(f-;uB%koR$aAsf+QQa;jeKH#A%AjPFH28*bORQyNA9`cKSwkW#PV{iV&Kp; zV0rGjnAB5(Q6d;V&h(lw>DbJpAs64uOfMZg!5n>+ZSqhf+v{Zm>W(eiZYzGRGSU!v zym;R+g&Fh|!+}iU4Po&wDF8B);LN??y_@kF-(Qq7ALKe2ciA7AE zST>h8`%JZ!UhOm~-!4tCxn3vWm{mF&c2i~;In@o4k3`?LaOccC zM+SfnlCLo>`7;_kRWzalyjIU9qGgOuqY^1H=G_hl_2#*fU*H1FdmWyFQ@Tnj(`R9J<6sdrfR z^}5_%jiCO3^Pbl3TK3veq)|V&&-lH{loP3-$c4RbnaWQ^CgKw1c0IGe$c?ZOH5WXHf-jcbdO)dI%qAUld;}x_m*iqE3yvoqLJwF^7q=Q_jQ{UvbfEjBx<`PKM-sFiKD2goVxy+$beKTirVei-It++=PT+BZ? z?NT3KGv96ft)0Qhd0Js}`CbXKm&xd0&YajhY%|Z;mJRo)OuC{DGC zVD@Rudr;G-q!-KH=6!0z?%H0B^1=F|?<%tqi&zr;_M+anScAE1I}CCT%eqOJ6=$fC z9%FQWA)9jh;uSSCQ;6=ZrIOvxm?w_S3*YO6Kj3p}#6pXsMp09@@0xLiY;i>1(e=Ij zzDPmPuL1p0rG*?dnlAFLi(QnrU4W^kYHM~ZddG#Pgv^36CjAg0n$6xnsMa;ZGJW2- z)&w_hg7S~FWMmkLA8FUPx!lAW%V-v_?hHf@Wu(Gxd@VAe*>Y$4fr_XVZEAfo8Qts2 z1SBxedyIpv9@LIxYQEqUm8gdem+<)a?9g%)dI;D*>U@xZOvGZzid`F&TIIoj_L zon($b`3w7dhzh2k&wHPC$5@3uxAU&PZ?k1RXwxh6qcfnrxeC!sU^Hr5ryElz-4yC8 zZoIuvD${R*V|i7%V~orEZa9puG)Ju$E8r4L4Tc^k0(#s~ ziI8XGPCfPopU5^EA?Btujy-#$x|0((Lnk*RW%@xEQXk9u+IasobZi}}akrTpS4fhd zTnt+Im*EL8QrNv9!#oqWdt9wl7hw3<5u-sii^u97Dr4j$;2?Z>Mm7}mxQltn>zN4S z&`O--=;-(1PsT%j-}Qr9d~)d%?Ci26!!qoeUU-C7r>@1>X_AgQeS0zM=;$oQJYRFe zdaHRedUB(VU1k@Qlv&S}sanyWF1h0~2V`-XY8nrTX!#gVtc!DK7gv@~QQq8No^oI6*@ou$;gopSIN53EUG32G%QeZL;(Jt!iPJZWA z6^_UdO*?T*|LkD5!yGD7Q|0s6hCR?UFT;ub%okBnEGi?jAjO?_wPoa+mwLsh2-{$z zub`@sOk<3*Q+ImuvzRvh2|Jjn5NT-U&x&~0A=EkZ2c6kK)zzsI(ir5JUD2y|vmiIM zBeFK_L_cl_G4(jX&f!}@aaT}Tr}5AwM=#s=63nsh?W+XwxT*^?uf@|iR~=LuPsN?9 z&HXPo>5Ao;GihZzlY8q{X;7bKT$dX;4Z7lI?*#E5pY^Dwd-IPA3xqh?oEF_NCmKkx zvp}IVvgFOn{)C1ATN+i>lO4gW>Tf?X>iKI6rk!CR?|Cmk#qY!(waMc;BU-{X+AUB~5W?<{1e2u7&9 zr=p_1(ozi@>O2bGzBJ1$`hoanxyr2A6WakDi#x);ACL2R^MMMdO(z2ME;i&7pM!-d~4^y3YyTcz3i5tLJ*WOV|f9rDifh#6r5 zsQ26lD&E1C&)?sLZOG>{*$DIFt_+@i981hQtt#W2F>iFRnEHsD;h{c5{CzgTrVI?`_L!c0&AVRj@|6ZJE<9Z?mia96VlyZZ#NlM zGOiwHdpG7bE&TqeU**zycw%AR2Kw`5k-d>7R~76V60UyoMm_(7fPD}BufmkV(3rCy zl@=OCc0!X2QdAi)eJ8?0#Bgh6=n2BjZ=GW5%BvTOZc`+V?pdpgUn=N3st)@jW}iX> ze+VTys`vOAwpv}fr^0xSgAY@m-x(tF*>Z^R}?bH5!)a6QV zg%XRmDiYE`5qUi4r2txI?UN~y~NPD_goRhMnX&j4Y z!q0Hse3Q$Q!zY|dZt8=Idu6x4x*XL%8IgWwwOE!M7&cB58+MQaqIF8G6O(x>ac6|b ztRr`iayWw8Xe4K9CuF|2{gD#b<2`E6sw8x)hTncl{2mLQH)CwbUuAf zDCXwFF{QkpSNugI18&h^_mWl!p0t=uw2qn|3!`*YU*LH>`h@L0s?cJKmtDZyV>Ly= zaWdO`5}_EH{Np0DU}+d|n=SFCqd`7*`_Z4-8t24yZ(&T<&>qFFp+93n?2f9IcU|N) z(}aT6gd%(SI&;adAO`SM$n7(ze;Dzdrrr6x!XlbL*x9%9qC3r)ftL!@UaLfL$1^HV z$0u#s#(S;V!t+}?Nn$6h`qEiA4?`062nqh-BKN_z>j)hI z1lPKZ|E+nY-M1*vbl|wXCX$4h|KKSZYU$6m_lo2!8*zMXATLI$rD#iKkgI zHpt#aE-l{7@;ybYL3(F~Ave{wW6BHpIa&-0uGr?BUU<-;o!y9mr93(>0x=k5^(yMv zf$K;DV<8eoFM2K$#PZ~5_S>PN7Q?Ss?aPiUu1&QS$+gXalNngX1G}a>m%f2 z$=GM7hpU<}PU%x(I?oNL3`svQWfD1Edi{pb9mgV5XFL-%*iOte{DRn|g$4s#Q3~Tf zeP1d~fxI&!x#3#}?P{!QE&O^k%!y1R8*lSO%>zVK5dTMT;n&<@>h+9bb}OgUnfREyJfcuoJ6-K_)e% zud$7Fbl4L?ETAx*d~fWjo}{g3tnU594lp@H^Sn#4%EGHfho?7pTSB`@Uk|Q7pqI&J z;$!Rdkdc=d8Zbc2Ybl4Nmb2Q+jyd^wP2ZZ*PYvCOLE{7xM!>JxB;t%T5NNPG21q4e zfypj7U)?`7O<-q;j!FY&_krA!SPf>vT418xFS5q-8e|fq`?}b?PTY-e()8(v_n9(0 z0ByM}5On>ReXT>6Vf@iyN^6`nw4qh3@rtwCj*KtDm&!VG>>AfS%Ep9fo##V`X*q)l zSi?Ke0WvZYtpP8OKNeUd*ozzv#3FB)Aw6HANS$%D^%-AiyA5VWdb6F91-+kES$ipB$~8wb z^Q*b6%d27~HsW#?CHAwxSg0(+y#+U55V(*rG7I#Q2x~k%{lx}QRmRs^gaty>J7CmF zzwn%hEg;p5CH0@NNen!3XRz24^MIl4y?yO?`;JxPqU@+Z8KAV9kj)Xtk%(>9z;cnX zNh~=%H(4y{DxqHikt3nrX>;5Jl=5hv;B@LTq&ju3J670vBDk?EB`Cc#Q#>XdlpW}b|W}W#72W^Ii>|NshxP;AH@n$&SnV>dA31BhH=3fOF&W^ z#SF0ygrI#q>%7E%u{DU5_=pj5W5y>>7a&x8&Q?r{ofyF;@BCKil1L4h^VQCzq94Rb zUCH*yxoI&&jvc$-XwF-@$FpBTwahbS^r)2)XwJ2-`@hK{PIal}5&Jc7;sj4_eSeU(9kc#v{aFos-kBuTk zhtW*kH0T?)y!AgmEx5@F`qra=`;MmR)w{RTS{H2GmeqoUY|Mp(K#hljZ9w97VVb~f zB@lU=2K};vxurB{cHunr)cQs(g3gQ|`Q_f`n}jruc}ho{>PujDiFZy&ImkA+dJ|}N zEEnI%%se*n>d9(F+&U$#B0{aDm<{p-$^y~@0f{kd8)WvnTVBqdmIG-Ph>O<*{m{g25Pt!E8t+#&Tn*S7AkOuOtHk*r_-_z)nWq@sgTpJqDkVKMQa^oBtdu zfp)GW2O$-TF&L_~^so}os1`ffxZ2TJ(-VG$prvEAB_bk8|1M_faW5Oy z4^1HVofDAgh;jS^<`$;7!kHazb8+^yBECzmaVSWkXNZKXX#!obiwhQKCRZc1O3Suf znPVq1Kl(z=Zfi-TGl0w=jYvD9>6{i=gq6R!rT7-Q`E?IfB#2Ko;!yR=%fd&Ad$p@L zZO)FlHps00woPgjoG4bimakBZGodT@gtabFEN6P<%^3^X@LI+U2;9sZkcyFE_e9%s z<#;2PoSrWK>?Xrs&GPrTt|(YpQy3Wp?)7>6<#EzoAw8sC+sbJQ0Gq$Kq#~B(+ zUFPd?L->9=S=tn|d8y?mf)*kjy4E)d==d26mIH?3$ytzPMENBn=j*K!xh`;CU~Q!f zG=)d@|Kf3OV|0BYWYvci2+h|m7Rus}acs^=DofRs_eis~=@)quo>F{849Y*&s%9}s zO(`J`re=GboW+tXo}!c;1**u9&!+&f#<6N)^b-xH>IEbgAktX#t**xA*>m$5njTBF z*1h#cZ`G}JCJV8s>7eb1#GYcs><6^EDEQMBcy1${SeMnfU=tjmRioMubF(!rS5M-D zd=?TlA2W*4<%t=KjQIp~LjTao=vjVvv62sm?;2~(KfNTB`?63JNXI4NT#bE)dCSFo zp*Ma?V`>V^+XNTGM=g*Qp}IWgTqhwMhQjtT@PsPFMN0WEO4 z^TcHFJHl%&*xXCHt5^bB^Gt{N5*rQH42f;yX{$^!qp*3qj#*)l(yzpsxFl63`=T2g z2?Y=Wu}o979@zF3%%>@h|D!Ess}d~68gw26$i>#5-6aJOQlbO367F) zdIL32-C@`0h2b++lr#0QoO^BfVdaJJQ z9oliH4^#2d;OL)z0_`%Z#Yb&DNKf4o@AvYw{;Y;RHnudq=As%8Dzvv%bOZP#A3ZqHlY4oXZ7RK$%b?7+igiv&pIar@OXluX}?;8zBb|RwZ>n2sCuDo zUklBA={Ta^(%!0sw%)+FuyyFb>RqS#ylqMmlgk7vH?$WuF8;rmK&A6-!6+Pcg53eX z&pxM=ttd{Ck=Chy6Il)y6*d1XDT*I-@tZN$U}IydWYR?~cotfzDLrF$^O5zu%o)_u zhBt5@EnIL_UqPwfN*cmRn&EgV+z@oZy%!~wt;Qu=Do$#Gr@m2Nf4?MIX#Oa?H%-%A z=$bzt;BMd+hQt>#m6a=JzA$Hoxd% z4~5^Y6$aq>*$Tf`OVal}k@y4dY2xJ5M*nTDZhids8l&+_A(U{y?}bad>S4Z_i`y6r zxeslt-v2FMRc@Z^a6FwaWYM4Cb$Dh)gMA0y-NV;qvran#IDsWLP&h2-`g!CVVgFgF z)d36~3u`>euWdYS6-H17=(P7^q3r?F=w=4Nf-B9gYyMZQblAp^T-u?(6fH~Uk2zuA zKac;E+wik*H5k?!Y~+?oJ>+|y`tArtJ9EZesJc zuOj38VjqxY=HfO9NL#xXU4oRjYY__nVn%yRcGbdmjjHwFy@I~Z_| zQkwdv7gKppezcs&e?`p^qPm5TQT~CylNJL?`(iJ>f;jJm&|4=;N^kXxt{S7a8N2rD zgrKx_bx4VX+U$26vM7+<#`W>8X<-9;@-l4OCA~Yz*Hhh&!xrKxczW>MP!NANW+dph z^^}LjHKn`mfQ8?Oj5zggNKJS=7P}e3bbo4WzbM3n1@~XlJ^b~>kP&}D=3p2%PMy^Z zF2ylL_84InUM`6bk>sL6T^FhhjX9!*BG-!<_7aGT4H`F4*^}*QBE*oTL%0*#zSt+* zj;F$2gE<~2cQ52SAy^D`Pz!qBvqzlt#2JRj_>AucO~?T6d)! z%E*GO{mzX70ktOZaA86$?Gu{F2nRMouEfUsB1`RuN5ZxWFx_#Afgh+ALLN9o7a$@w znWt@9#-clq5$}@vp_B~pFm%Y)a6`K|m#rLT!PHkL>q5eLh<*R*qajBLfybP+)Q7_K z*-{J#TVhVVikNKlZqxL2-{;c1%d{UQ3W*?(E0C!TSRg?Hgn~hXU#Zz_Eszs?M+Mxt z8gb~K^rnt@>JEe+CEQ#SJagWQ;hefz&Sn!A*y#sA4Bf6gC@@f5N7@+Y5~Fw+eVG}x zQSeL??* z4O?l~Wm*x_3tiye^-L6$<3q(oSUE|rqE272L#MyA)Vbc&!yp}Dj{84GEpA#r@Z3C+ zWL#(KC9>y&7pFqTyV6;7{!+;)c;Qoaxq4L9&}yR1@>?bP)sJAci1NRKqziRNY&Kna zcOQ`g2kHrVyUsjEKp!@{sF15{1&{U#Ca>oc0=^_c?@hks{)S2^#MPo>Wy`eO;d`~S z>>xhK3^@7tU$<{sWeO*RRhl4ylE3M$^n5|FFg|%DDgdNM;t2G2+CKIHh3>QwF{Pj6`Xzk|?w=V%a0SO{&Lfg~gmmegV&d~-HA3Xw-6BL*@Pe+4VBe9x1 z2g!|kzI4513mwemHdRM4?bjNsy{rLwovj9Y*(#l$m2a> zUz^ga4i~zd3~HBb4=TYZ5Lc#koKM6pwPGv^hY%mM%c=`0X+8zb=!~0wJ0{S%K}%v2VYkrYi`1+Y{hE;DQaq^u1LN2NS6TvOlB1_7N-mYoL|kWW#EiY0 z9Z7G|A#Xz7A?5A{+m#94l-3<@rRQ02e(Y~wZ+dQ(yG@Svxkz{$=p8S)9|f^e9ES?= zRa6aIMz!x6%uZMi;xeU+O zlnSMw%9#QodrDb6fC82szvm|MzzfBu6U7(M<9zb`?d$m;J8zXsxseJ6G!8v_=)6|2 zs1O#W)$?hLbdX%LU&t~yEzgxY^Fg7GFVCv~jDpDO_@p7EbdZ-+2yIbef#jCuWL4%> z?Jy`fMMmLp(4CoQgDzW@whZxPP>jeUYJjDcND(=4rMR4oaeB>?)t`m7bbbdy`!1fl zj-k)$1Yb6XQ3om?K*FfXVGqAzQ{cN7(hKeHVgU=5KSHQMp1lUK2EK%w?Jy+!d*~(1ctyb}j5NZ5R zPG<{D~=_UnGJo9Q9U;9_1cxF-B%UQ$eW;3kI+@4Zol*6ORi);*}`?~MsN2zS|Eg$ zcep=u(Hzw_9+Bc)V!FT(pz@t}?0d1U6o3A!)Kg>J03SyF`kAIugi+$+xpt6F^P?Da z0itClUzcH)t6-W^8sjH8COw|7au`;jKBB(!6ZYS?9LlcU__IAl8 zD0YDrSO+JC(ehLu>oqGM!q5vC@9hR6>VW1oGCQZKg9Y{3>)l)Cl>%A7NmOR^P4kI&sQi9eF z(yn3t6_Hsl&?zdm142`C7O~$1-66w_MF31rjE@@Qb zv4eWwDMD18z1Gl^&U4&cOAH&78$gvI>4mZhCZ)fCP`DE^acpB~7h^&4Fm_sS6K4oK zt1zcky@L3kKBxt4t%=4-?+q(kE^Y+W4wbH)w9Rp%cjAi)FNP-uCHXO@wRSYLi;oS$ zr_`Q8@=*p@7Rx6Tv?Y!s&{nADl1P4#Pzlm*DEqEt31#HV##&Jw&YrzA+UjCThriKa~+KYp!L$+TJ;j z8qRV2N-uHmD>Cl&ybovsZ3wUj0gzbU12D-!NKilsX}L-Oc*|<_DSih;eO|KT346wx zNp_o@BQg4>|5YFzb*tYV>LJOQ$W<44@ea$={(JQX@neR^ zJ*@MAU9^bx*0w!pSFATbSu9E*-}(BpcY9rJzU@XEv`W0=5sgMbKaIG>gyXHs zL@U2ydVaj&^wfxF(NThs?cG_YN^QuHSuvS9e-esG&qraG_e=st2EG5Edg74|ga8%{ z-1$3=bZ*&L^ItB>`$~c$_;LyjgujMGo=i5umkyx1vwKNGb-*D|zRphFN$-^*Q2&-S z#h@fWYD@)z!Pnt=NuDXm%4tl4UwKjp5@L=tQg|R^q@Rv0tC!0+1{@O4uH@@%r{wLi zVZh!ynzPiWcC#r}(u&UDs<3dAq+IZ7Ia1ndd~?7J=GCPVhQJYtTsLZ+k9vpa-2mn6 zg<3*l`4c{|qoXo~PKz+DTFr&_=NU+twIe6ARF< zIXjH?syy00_@N%}`(sv1pW6KvtmIBZ_fPLfe&;m{`A%jNEmY&Ldwdy z5VJ*XOZU>%-f3vWro78BSlI``S&}aspglm34ShRB07~oSw7@>=tKqiNZ#tewL~%J5 z^OM6|(wCPQEfCr-`}k|mmvb6HVei9e^9-atAk zEP-d#`pZU$&2pgQTi>ghWTd%anG~- z|Bzy{PI@|)x`UIF)D{1_UoG{WYr^2Dm!&qlq((?eKNol=q_Ho%X%Fp);A9e+eRcHlfS`@H97`Pt~O zNt2kZ1wBS^&=(5Gv`+jns)Tl56Sa^*J}|51;<);;7aXl23>}dGbo^HgED#JnwNj&2 zPfEbs!kO3;iJjJU!n&2T6wl8KHh<;v(^!?-D~!MC4+bwB>Eh^EBx7mVBbVZ{+Z(7rwdh?P>vwcRoLb zK9DNVYMn@?svJ28Bx#4!ingbH${L)^M6x)FZA)pS%O}L6K(~`idop zOTqnc0PwB(R(uOLL2XEq0t-uCbS+XhTpfwyP(<7i`wRKWJO- zVF^0Xk^C{jnPX63!afLWv-Wb#Tyd`BjQ`JbYqQe%s(rLRxYez}HX8eOzm0z^tw>=H zd^33=-wn?Ldpli*_%z>s=+Kz@Nan4ygk2)Q3N0>i**y%51hk$7NonYNcm+vAoTQ5` zrYZD|pd7Rh%!Enhn@GQUq+Ramz$9UzprUHZSc7?i>_CoUw+2N-(L0dvrPRyl4Z&2#es z+yqbT_M|Nxw!s(cfb-8By1U@c#L-|!`QaLnOmxtW|0+yl(a%0L;`x%-$He~aHk)h( zmez?n7bB3}%z&W zaB+iHhrrBnKf#&4N(ymF*P4$*lzYtqIJD-4b-Vod^N_*zp_HpwC!)2V03LYC+Cj~0 z?qRzE_DP1S zjijPP8C;VhNl1t_Y(lvWp3-o$C?imA0`H{oukZ1@=hn zxeXu`1B|~N0Xr3#&F3o^cM5+DE%pYu92wzJES4elm9~9-REnuRlto?Y!b5pU=#g zQeR%IOKd5)UxkLQumZO2I_o?-X5+G)(?0!v1jHQI1@5`_Mkj%~!a*vF@RxF4=3iE> z(*2hZ7g&D%1&JXskNB~BA+hk6p>+JSq0Nx@@N+u?jVM?DG}b0{NK+onu{#F--Kp8e zTCL4yW#6(J{3HsXQzz!-^KUknnyJG0ctIz=#M8bN_Xgu>>bRX58&&NGE#LD%tD-{} z>SfG%=3_(0L(nMrF;y!?!x`$d3x+3ucou_mf}5UDK_<=qDF3${*OlNH7K$H3#~QHW zZ{Q~{{T5R3e;3_GXk|0Ze+Y&9l%{oH`#BDsm7w>1`c6!TIkb8_W({|@=-i6Ed~_jU zlqMQDZW>}rfEgIrQ-Ic-2d_;c;-94)OVy0yQ zT^{~$`B?t_Rb3Sw+68M1dcOv{+KVvw%bDZGkPY_G5)zt|*+Hx#U=m zr=xp20Pq@ST-Mnh)DoecI|7NLnbXmu!PwcW^IK*z$CYk5c2P%f`M;%ulQ_do7+b8G z6i$zUC>f5wJdpd+5RhMF=C*^MxLLcRsL>Fq1v3L-3;+oZT|e=jicy`wZlm7g^8+Sf zC>&$`E=g$iM7uZo$;Va2H_H8@>$12c_`-E*`htXIR~W)A9S~QjK;r4yKSco&`AwSd z=NQ5tv&9fGTK{)>=aF4NMCy`7!M)aZrBi+Xh*Zjvq5C=n=-kSQ{;7@9VZ~&+*s}Y~ zz!7-;b!ekI`xt)g)CzcAVGgY*nUP*~P*;_yq$Co4K1MqD9Om_%)DLhncZ09FV&rk4 zI7w(_T5GJ*gY8 zg{08DtQYgf{Y4i4n8)X715mSreh$kUQLbiS|FFgi%4Y;2@@9e7px&8CgSaw54*ni@ zDlkKXcJLnEqn}BBpjEW;WjGHA+S-$>76}i@CdQ>kga*;kNCg_2F<}BE<)f4+Jpo*F zWHl(PfEsK*58PX|aQRIdVl?8YUpQzE!VQ=1zeqgXWm(SKi5Rc}Jy?saO88UxK{2$E zkQ6weJORV8k`HjbMMB7%fi2eYn8B#^$BfKZYghfhI`c$z98Mq2W-NUUv`+JnGn1}r zhQA0#ehi&Bx-mL_vRw|X7TN9sP~2wS>nLtcwK#SR)8Uq%7R>hO3n7cx#;C>f(tSKlDwYe$qk=?* z0{WfD9D?-C^p#`hqpPOMzM##t@2JRI&~mY-`#RT2A_&>{MQCy4&IIO6)80F8fM|qiM%Gbdp&j8dm*RXU(?96!g)-#*QQqi371?F|w*yQk85 z{6J|6>doiB8c6ai8p*v2!9u145ENP0GN&>h)-dNbeogKXZon(fmnR4ML5t7N3Xh$X z79*f@Ha*_R++p&A-?`0xCjgRYPX1Nlu?I3mtbtF-(#$gOqd3;E@EmA<%X_oUAVbfJkbiIWv(3XK%(hx^1#$)VsZ2jj|m79tzW^ z0$>wm0=6GjBwPL!XqM??RPN*iZ0@X|PAr6cepmVl$UC1$KR7Zp-tNc%JJyZBhh5o4 zALBSCeaxcup`hs8LD%h5XwB|-mNMlcNQyM%2d#{iy1g9W zNuc_NtH%hWa{Xe9vRkW+x|sYQ@`Aj8BB~z{?=lp4=pbv5LL~sLV~OG@`dj1V z{&nco`+a_kz$BqKioM?_A28{tI2WLV;~3gmt~jYcl^+@8R_cy=dP|;_hY^?u3|7W8 zMm_xOtSWWcZJ)AsfG6V6W5@;bg&6>I>*0A?e8HA!TeNMTHh%uW1|Z`O^yl`gRqi&Bod$t_e~FWZAk#2ke)8-sUgAQ3*3w+VRN%#9 zMXaU09HBhqAI<5jw@rl^kmQK9%zWX#OTr1SrWV}kPrQ<#fsR#0J6gLjU{%y6%p2QC zEQ>i5i)^C=1cVfe|LE^hVjPcsz-oY}`dz(H-Ruh_{QvA(2Ic3p<#VzyupJL7mIx7$ z94f@|ByPxf0ANL57usIALjqFyGOu-J)n?>9`=mW_Xl51!7(yUIC!&AFGqEQE^u;n) z@geR8dSS6E$re+wF3nJWIj;* zo#3o6)yAYXSqEh0TOxbNS!PTR_|~2v(&>p!)~47#SNGrx&GbshB>e4TsJc1e&@*8J z+-x12;??qk{tv)Gvk3IPY_}SH@@?-fy|4lh4%s|mrK2aX-Gg6#vlwjb2Z9w}?IT2i z&Pe!`>#l~r*gjKUlJTq;8N4`*i}c%3kMK{q`eT#~8B2{BumLCl#lkI2uSJ#vgkt=P zVPz(#cwPt5@DCuFc+3Ge<_DGy@R7z33AWH=tN zbF-;K1~e`I@&x-wgrn!&o0QX3-oKG$|4gCR&(1Qjx5tC_`fUK8SplEf7YP|{m_M^P zK55`@#-kvsblHah^9N@y70UX9CmMBqzcGSO4)B(sH&1*mHMN^A`XSGp8#UYZd&ZKl z?KP*{9}g-^=s?u#V(6}G|7ig7*FP5AP*Hbq%5*T1YuE<;q*L^S0X?Mt^N3dG`u}0= zEu-QL_H1w5-QC^YU4lz+clY4lXz-w+ad!(6+%34fTW}8^>~?Zy&YU?jAKv$_`-N_5 z^`e`4s-LR;uU)^L@(g?oeWtU;=!%_h)Z34WCMQRyNgB;t_xL`2%n8C2vd0!)Kec9zJGNc=TN@pa*Ow;Y ze==dRa-Jl79(5J3IoRZOy6Vfhk0}nHJUN>2GLjM2^E+Ou4@xpV`CTN9F12^6S!K6Z zkn~G)ptsW(?t7pP{jE1N5Nx!O#HrfxzTq>LbLefcmf|<`F!2WB_k3#Db99=+p4behv%=V4KR*k)RYrum*7ej1-X*CKYp! zY-+84LOUIHoqnjad=LZAcfcyHTa)SMZM z{;~hV$t3?VU;nlJw?)%@#GnbaBuEOe9W3JWbCYvSf@xVuQj3~zC4lwq*heVUy4qTU zXO)^&>Xk~8%M3XNT(bA)DNdo6%QW{k5s7xk%k@T!?=$4GQt?2A7BlEY?^-V zPpXRH))51RIHP)=0&Zo8zqY8-PrENrSUMUr{03lkpIT&Xr^hadQEI-?!*BZ3O=AcR zC-x^Ho=-M_lX@M#_@u2h1uv=;`l?$lnih++mA--$Bot9b3dY^_8? zJsxd9=5ye~&rvg({*sH+$O)~jnJ&^F{8p7T5*g8CXO5K&K#WC3 zr*1-yQlC2?S7u1u%7x+)r;(V!t4Fn;_eKd!JrdrC?*GQM2N^5go)+<3Y91}^(^;PR za`U_;>O&(0ICMDzB>xy%hjIy!rGnI*siN zhKQbb6c#meUeW3lPgFE@$9%w!8vRvL9Yd6&L2yzYH<6J5 z2QvUXg-KY>liIpg-mt^s#Fv!}mDMs-__*7}qstw|y}HdfLxA%UitULI^>hL?cdY)z zDl}5`97XX^V2NwV=y!XV)Vw#y6p|PTa-eoiG2t7H!hpQby520{8hG}wyp%a&jqLQ=h3d16B3v@aP_9g}!=s3?zh%m;#jIfKs@5jS9IVuAo0nUw7ZtVF0L5zHrFy znvXlm{-pW^STEl5^pgg{h@gf4vcrJOgQJYNZf@12AIHA)sKTnQ=1Eb=MRZD6M&o(o zmy?cy#DOvK*I4|n27C^GLOwsxWva&~N<%2YSjp45R^!28^}y#uAHT#dxw0IA0jy}7 z_4e&4(XmK_D&M=s4opTTJ4EnUo1(Qf+xYWWy>`)=%Amy&{onb-u8Eff>G>$u&NMzJ z8SFDxWIe;V-CfDL3i?;M4l^z5$H^Z8Z1DExgLU%Dj>eqW`%lRuCp{?>+dZHPIS7e2 zYUN_Wp+@tmP-E}!I}r&2z{7-dD>9Dz24z=flj&;G{_|7#`aRj8wQs{NC=UIp;T1xv z^DG7*Z;`rxfGu&Tf>e(;-xE`;wr3C^2UjGY`y^?sZ`!$AK2?496`L$YK zkIjVJO*Jhdg2+)7isA|qiXx0Mxz^wJoudW*2!=!*t$=ye_%^bg>k6YtUV^2#8<2p& zicKPd@=|NlDSsfdMHTenwO!rV*JkX`F_kjVr^jJ+Tqgy;cV4YdqUUO5t!USEOxL6V zC?L?-phN&OZuZ1&!jmctZH7xmwxtKgLyU161lU$S!Dd6Mzm-nE|68~SMX+|m4-inJ z`agjh-sU{)ToxQ=>d7=|Q-t?gK9zp>p0SL*9G!O+bHNHK{^{PzLtZ;cPNlKv^q>Wo#q^DbZ()ziL zjoq|Ldwgw6Td3D6KdNLLP;+f5IWiwD6X6u$=H#zFDm2G@#mA~fG}P~u%o}X4IEcxS zCdx6^X=Rm~I;_1^_hN>1%ArkzK80>LP+c;cA5aG5>uu-BiZ9(sgqwEf#g{7&O1>YC z)-dSSSP)a&uTl?veDiqi>^7JSg>&?voR2BE87ETRgE83*6@jUj9WzQW?BVW1D1=*x z!&Bdii0JYiHFmxxKTaN$3dWumCW9@lX)aQh3$d4vQ|mN{xcw&X1^;%1$M+re0(`m> z7~ceV@SJj7yPv;*e2mha&aaJ7A(RXyM9vqFZ3rd&JdLW{?eoz1yQ=Qmyn+4w@tkTI zX8A|+Wo8`fHsE75*CY|DNU)>OH!Z!V!2l_u&iMXz!P~=#%${o@7eVMQeG_Bo4Ola* zPkC)EvKB`l6Z)@>HpqEc_{H&D_(k&2(a|&jLdwi$BY8DCs#%@z9R4(AslJ2+`wjVMP-=VnXZqf$r4G`f_ zzaQx>ZOh{p*dN;)B7VDD`=zCw`)GeY->0OYuHbwrjTPq-dHbSFOht=xS#2^6pNZrV zi;bM}24(QZ%txT?03JhO2X3u8#uqul`n}8%=)GnVxY=qgi_Q-0@q(h>Q{5R?bUXfX z{x7hNKY%zE9Fk)oVgU?;A_#-@j}&2THm*hv2ntAON=QjemJcv+X?Kp$nM?^V*LSzK zZa3;`Zqawy{sylGw*j0n(Z6EU)Uy$B4`u1NI7|Ent2}!>dl0y=fDg@sC{qW^MAHmehc0~6e(xem znXimmerK@t=fMtsWNVuOQ~HBAHYL!M0|B4}aU4*BxY_gi07hrWz`90Sp-+Bl5YvMa zlN|G?;yC!}ba0y#HGiorD>Wx`^>@6QDA<#>7kah(=1i_L&l3N7=;N7i0=PwWgM`tk*iHWQ`Ud?OE01DQZ%&gQk zC>~Jm3W8V?ilEpsNKEJ?TH`f5Qa-#`4(3pD!%}TIYcO z-vAh|Cs;?ur`(j8=;)c{k$*ibC@?8o0?}CDXdxidl7oF|9pV09t`G!z zQ|?7!OE;98adTYH^L7M3l$O2=W@Ru7p(sBYcLR9Qx&t-3-(L%T{SsR3gT5bC{JMel zV$z+ukJ6;`jz411&wIib8x#An3cm9BPv+l0p|c|zPoaE>Csc@|0OEoLnWw&nE+#cA#>qS)Banp1UwQBv;dpW5dH_@ z4X`Ho!?;#%zGTBv0(6PjS!x#npML!ufn7ls%1*nz&F-oxU%M{wfG?L#Wphi&Th63!?7T#CPMf5AOTzQ!}VuM{?Fe( z4Wf~9<%uOF*d@>M{X4DZv$2E^5RLVJ1MmKCd0-PBplBGRVi;85xERDf(2os4_;0j& z@|PW&zfXYZVh~tBWGM&?xIcGC9j7P{U|k+8gZTf&-BDN~fcW)4Ziyct{-V0E#S_DW zgCT8jFd?awO@q**9fR!ZgMl?N$V9l{MZp&)E+FW0@w@>{nYBp{SUM>f_ZBdp9iE(w zHGr1HyFc^0_HjbWYm&e7a|o{=k;@7^2QQp#L-2YwFuns#5Z)Y*Y=(nWcEAOw(+taH z`g*zm=x*I#2vo}+n{QGFq^8bee31z|1IzFOvx1!#fy6E&7IWM21UnC1`_%umhiFaT zbmmJsS)hLUwevo`bGiX~)wCB5o?MVjAMu|^Iuf>F6P#ZX%+Rg9K-&};QUYNR^Ni%P zxUYLYOvoJ;ZV?UefC?wyJ_L#vI8_KE0^Cl4fx#TL3?YP5V1#RIsfC|LGSQNjF9vRQ zqLKaWW~FaNxWJGknEw~u42l^g5NA!t$K(4;M7Q9Hb%xYPMzOdGSys*~Q({IKonoys z|AWhR$GA2dSH&3)`HQ%nES4)z$pEp7$IrmZR)F?*FyzpF$AZ^Az-a?iTtEi$&x3*W z`2wj{8pLPVSCZ%NRgGuP-QH(ctYgzTw)tPP?Q&<{;J-Md+^SU9J+)ShzwHI12s%F% z^C|JbW~@VcT(f|~e1?z?V^EEJ#X=WMs2?zW*Iu%O4RV0hY&G$ld?h40`#pA#D?5LN z+Hu}VI^1-bWn|ucVc6BF&S05*62-|&Iv%~HX4+{0!t1~2Hjh`Ntx#6r@h$3kZk()} z7pGyYnzas9-3^00wG~E!-{jx1fhloY>?=29Lu&)gOZT#C5E~Y~aM#tu3DwX={K3m2 zymeBns7C>5kUsfepo(dMK|Cl#u-9UHr)T)2sk4Y!kQna&n5szX`xS#%9q`b~6W}Q~ z(d|B&V&>s{($RkbXS7+4cL2VSqu~?(0W5vyOi-`@v5Uk0$u8#Rwcupqw*c;x!eIY< zj`jaPq|~(mEU5%C<^aB6U$zFB6D)?f~&m=DEbenM~h3n~>My z8hn#jXGCx`UoeEHgh@p33Xq5smMXaof)UaLUIciRg<}5~8h_X);+F@k8ATxj{I+Ls zBl%1QemarTL^%0%g^Mj3QV;=C126WwT$|WzDoyt7&o>CxU220(M z4svI;D@d7>2RJ~tV``qvNv1&vKrE(q$a5kz-prwfor1G$y_JI_RtzLJ;b*&wxZj2= zZ0a7;rf;X)3{2LwSwCFk2xP5W4M$8s(Wr%-KSqiAJG#$mC(YxA7^-{__L%5&lk~ZD zSA*=kvaQmr!$W--^EOsfgF6t$^C@chC7BlA z>SGWZ(aQRAMYnZ-+4k8OM%!0Ys+F^?z%BAyr?+MNn#b z-3I66y}GnLX)+Wq`U%~bF86LE2lySl-iBdA-DP7)Uwr(J@*n|90Ih*0t5hj6xgNXR~2gQhfgA zE6Qd@VaOos4qzoTw}-b~@YssCH*~uC)9F&B5oNm5$57IN-jI=tQmY^e!~4pnQ%_3siHKrWk^4CHo@C6G=T_s zX9lj(gSF6=0lzBd`)b{aYTc0;9}P!_VsdQ?o71~D22kuiE$4{~eT&Yl)z8py#Po9Fyc{V5 z=bt4y+oK#U{_Re4+yb8)*P((3jijIRvpS_7SS^1?lMZh@_M<;akDc>c4wqKZ4pRXbntvOBk*x4;DEH_dBiiDa(J@K>P2u|*2GCEk! zBdP}uj>iHp0LBMLR3gIR^=QJezR&K=qTkQIzJcjE8uRuYP{^h-g)$)|%Z2=KP^bOC z^Q==iLQ$qz&os(KV`rt9g~rR1pu1&=y6C{fF7eV2^nc#$e7LxIz1>6&kQ+JJtwu19 ztM1!L%v{%MFPL{Ih+!0RFNxN&Iw)&!wCF~wvPK*} zjXGvc9C3ZcKC~aznJlZ#;L>Vn$oQR$+nSgvXxkc|x@PF{y<^n2a393P8nP&Qk9jd3 zud`q+DN6~1V^of9k4YW3O;y#v*rL%NIHC7)$%@G@16vn-&V5ii+4H(RKoe*kS}6YQ-D<7>-iq{~)(ph4bke~kxR%Nkr@rbNrL zVc3)l+!hL@>XwAd{wJs?)3DqZNYi7!z9M8}Yyd^eOEu}EyBxcKW00@W*kP8GNP?QI z3lg;^V~js>g!ho=410LTRn8GEr9erO=N+lN=`tx5^s94|=dqpFCx>E6&F+SBa9kxa ze}?TLMRmx>B=io?8HHu=4%eO_6=jO`XWWo5a7ZEPtRet~f5`1up?i$3K>XfD4sQ1* zGC=S3vr8{+5yA%!-cYJ(I=-Cr;mY{?=dS}eGb$9nh5Z}~-se&ebxt*`-)(PNF2>?u zbt0@y1X)?$e>Cop!Z7jkV9ujl$+<{)A#vW_`~e! z;eDvL)v=^i;^M9TU!$YBK`T>%NAg!nAoUC!z3P7#a~zEv?ElQF3DVutsvUu_MKe}W z5#<%7<}TIY1qG&-^GR=w3@uDai!#$Tejo16qY`D6VWp?#W(_w@g8)tuA&~$AvOv|Y zd^{+f;It@kj3LkhwL}bsHS!!PdSbpH@8tzU@b6-k7M=A6lw~lJtYwf+-fpH|N>0Wu ztfIy>%=`P&WdyzPv-ez}ML!LxrI!?s!)W*ID-s=80m=d8hq8FF)MC!r9$vN>F&wBr zm4K2w_`j2zywxi7{42e(fZZceWJ<6o6ZpDB5k*dON*ORiPHAokBv*w zrOS7d5pO)8A(`8s;OTh-VMxinHBZau*HZUO^T#H;De&-^QrJSG5af_{&C+CN(1}9-tXJlj(FawhyZnkt3^jq=0auz_%4?l%=bw5MN-fzs%g@7J8{A5rC+D{J;G|@t$P3CGXQpJ^*vYD`CYIMC(Fv{ za=x~4>8u_)eFxAgG+|WEh~kjD-{o(b7LYgX43@D4))<3sx5c{D2+MML!&htBI~7`~ z$HTwg9~tNAsYUPz5lH^2pOb`pb00b)7h4f0`(N z{}B~$?fn5F`Qh8|*Y}*IHBNuwHOa_sj) zTZ52vj}!k?BjH&`rDO2@1E+*qI7qO;7l}Wu{6nzeeXZ?*;YUl60@X_S>&UoiX)&wB zVHFrk|3+i{%_xd3fX#9qg*@-B#aa!ez$uaef@kQ8`~DX+UR+Ha(jb{YH4L=~{%8Gv zS4?Wa{*C)zb=N<8tBY6DY_Ws#!MpY$lpx zp-R={kaT)9WYRG>H8wlpCy?~F|4|(!7ciO*keKtnb|FZ)Hj|R*zzf}@4n?Oxnk|iB zG=j?i?VYeIJ=N3W&*dZ=Nr(xKkH0~Iv^4wrO3C8%H0T+$* z-->?%_oKL#pe6G(92gip7#J9vH;)yF_Rq<=p`l=p`4Ov2Zm$qEmk_%Oi3@7t0crXG8}RTD}a*U6y8)x2y2Yw*H9$OaG$==pj$ zIqqncRMs1f$m-9}JMs{4xX$UOLX+Fw;w{ah2AMfgwmNS8G-5q=D@Ndau%`gbU)H$y-wqOTG)0pm}*jL(_|bllNDKU=CfXb=!IMOK-Gyscp~ z%YUSi=BC%H1aqfvtKc}^+6Od`d0fy*Wcm?*3qq_5VX+E!!{v!E=~mQ*w12{2AGY+q zfNModJ2#qbHk>6K@?`S(T%ypI}yN&IKPxM_Bp z_sd{Cg{ZN-un>ujvvc>>c9qJr`+o1l-F&sPiktoKGBah-K+QlmBmO24_N_~>z9)tO z;UH+ea=o_?fm>II7vs-LJZ{|_Mh7yGI$^qi?lbJj!XV!`f>cAlbz^^lb713aAS3+^ z=W~NeH(26>C=%XH?dLPV6yi7GVb5thzdSgD=c`|{MBXAHOV?m!>b0VfpYZaImXnZ= zzR0qj(d>*g=!Gty%?*G2%%7=QCm$Ehf<=xiS<@KrP`!Ys8MUhPAx8iO;THk7+{!K1 z+{BmG4LBf|`VZekjDC#u{$W6;w6>o+12d2?*8TKii%=n8WmP@^@aAiX-qym0uv8~N z-#g6vOr;@kL`fxJ8C!F2ai)D-^xVz-UD2UdfCpB{5`*8oXHkNdTdf{O@zf8gN*>t` z?FSU?_d*9tK0%0f%8<_FNWBRoa5Y~e_-FjkJXCxoa32&O7>Q}-S^cZa9;HW%qqZD? z88^HZ{ZHZmVPy9#_Eln;uvJ>h3+O}4u}{HkE8KA~pL}^pK4x8?@xA`rxCZ`W_nrni z*&*Qqloa~K&^9W{u(7WXq;WoeFrH1eayL1egu{tgT9dGi%@ zlWFr+WwJ>(t}%qn+hvD6c_fpUbS2BkFnfvh4(CR0elF_^?g{eAw!ra@D?H);=%)A} z-A?_-)m+BB9o=l-EJJX{T#wFUXq5c|U3&vrKuRWs!(61EAx<-M{JLK4i+qb1AkMbJRqi6-b)Vnh16{h54Gwa*wW(qp<+f0;A(%luRb(T<@ysv> zn*2m;a^N&<9T%>OjG6492D@$^xF-yokpOYx=%*? zKuo|=_CJc&6sG&t$Jg+2#5sQRuH5InEZLzIkW@KaS})_H7O zQU9KJ--o7Yk90II$X=q8vZ8V%I`wy{FJ*-2f>u7R1je70{K-&bRVc7hI3&uXMun4=0>SH{7FUD`~K~#X08;%@`V6vXy&*>w*c$5_T;*S3xN)GdF{*CS z!o||gCQB%vbq&wK2i($U12_2d0DrwI9_dwyKE0-Dh6J@Zu&i2 zdEVa}xqCH|dwfDGw>o;%i%*lsm611>Ea%mms9x-JEdIE)Y*3SDVOSa1RtuvAcv<}3 zwU<6%^{RYXELONR*rl@Z5%-I3?sm{6YV2@H4ZbSmT4%I$Z!`{rI2@Kuz9zgk~Q4W#weL0bQyu7Bct{%Kz@sdsF~ zK#KAL7G0c(3`!)nN$8wVYf_U;f^+Xh5*6ys2hJ8x7jj&{wI=?0Eo9siNbD2+oC8`! zCBdzg)~G;)wsbHhX|T~s5RKvyC)W>;U?`s+1L`6V%|n0Le8lE8Y0lCFX?;`9%h9qd zMK0K9Z;5n`Tvpx{xZH^j6}|)TCZXd7y-}kkhM6%A%&ycpne@L>AIL$|7)2F*j4gSK zbX8FdxEzRYa`HAZsgFF)VymH@szp($6_cD2?e~2_5>5P8d%sBfRXrv%RfTzL^OO#M zC++wthGDo%XH`E@JkbvZ`?J7)G(?|tunJ}TyR7o({~`6||499t{~`53lPMTzSb_l= zx)DhJX6zW6k8Ic^gS!#~+FL_MHPBEmDEJjsN*vtyi0nRg&>@8rcPNrO&f(k6&K8B{ ztj~1kdG!KzdK=zHzBTo>qDVop23}oJ?*!c3E5!ePo!bnzsRYpgN0mroTsu)r6i3 z_Y4Os8AK`MO8vY2rP+9Kv%+*8*w8M|Ki7zw!FZ$)q#%s(jPS+d ze(v9$Q^>f~p=e@TbD1*;?rkjo9Sk<2)`?(cbyq4q#HE5&5Aq-gdz&h=NCqno?^-lA z^C{(Sp3XUPY#_lN;6`1VRq7!5t;B37Ua`;dL-_3KNo*;Tx50r=UC~_5P(((toUjf+ z<0O&X!z@>73p#-P<7AOVp~UQWTg2bL4j&cS#EY}Cy1DXePIc8h&@dv(i^_=g!z1F# zaM5Mzba($HRO!#Y6_ocvOf~3YL?ZoNK zeDZoJL}guhg4P@U3+mKo^z(cb|PqEbw0BuKH=*9-g9Hv@_HsW><6n%uYs?pG}U zuQ}1$nAmF+Ctei*A?yRhj7a^Y==_%8sgs`9;!Ey5TgTh8HAy9+#ycm106-#F!QDUn z9+L}8hBB#=KVc3fblM-*<|q>F=k3*!`0xZ_6YB!=9Fj|J-+?YMujrPhH`^E4!!NEV z?o6@OAEL3G%fq>3n)4Krvh1fyu}R9qYhmMh7GJ1FxRkpBTA5w&A4GOngCzCqA{=3$L{i+2R!?(a~Buok&N^9%s+MPOT;!z@0WS| zKSTJ3e!)0JB>nAA0Xe$E-`bL82 zg7m$L-^8y4qJ2de{B%yoU?)GAI9AX;ZVY%|(-bJ=c1&ShDV#qAH!?jx2V52?&H{@K z(cuW3=0GNpMvA^u$BdEZ=qVPray9#6q$Mt}tV5i~LXuE7!Y}PhpKfbgJm}JV)dPu( zHH{XVPx~Ks48y4vP7zNwq}f8mJHq5o4P<~k=E-4DdZz+2%jaV=ah-i6wQ7V0hynq2 zXgrhF;b`5wUPQGjh#NlHPl4iQu2yo?CB4Y^C1QHW9EmN;gzZ` z6NS8~*Q(-TuZ5aG`D(K8Z(O)&+Fnsfojbaa_mG?ppT%U(>~tN9< zfhv|mx50U%Ch}^D-)2}t&Lxk^jNd+>y2#Ajs)-?hCK3H*Z)!$VrB)kH{_0BqGh*G0VGviNv||-IUFsU zcEh_V`j=bIfb)OM!3xhy;MgPZe!t*F_-|yVX~MwQ-?cZK6q9SRRSz z%9T35(J&R!ijQqn_hxW4_$dfh)6RTmwmTenv=0kuu+q!jOgzk9QF0!!)`peu^^<$l zQ+}1w1fp1}k?6>)H&vtMm6n7W7J*HTHhm&{<2~<7wTJOT8;3FB0ehbS^B1Uy_fcaT zD@O){yBSbdas)H#G~llQ$5Q}7+lz*j)ZQ9i2><&{O2WKa2B^LR!SFwG^y>dBz>1pN zFi?&RdH3{q@aI8k(E--!!TupNcIiM1zw`i@CgG4EjG&+IkD?SB>(jsCdFpwYMS1#F zd6|WInYkzftq5(F^n(bu4ew0hJ!+A`JFtv@w#Gk$<88r|(S%2Vj3z)214w+}7Z?as zBvRN}1hK5FG*H3O28bqyhz|gg{;)N!-#_SzbE`fZds61}Vjo*$WWK89t@Uj^zU@1l zbUqKicQX!f(zYyhelNZGZR+lqc#Z@!dj=<1zC)ch(;WOA2d&fsrC`eX#lR%F-C*F!PoiUE0;{+z7W_*B`kbA3_dhaU67?!pzw71z|Zvy1$c3Ug&7JT^sB1p z^VTdtmui_nvKMz*4gB^XK%t`yPw2TJo3AN*@o+2ovxz?={w(eGH(R zrmUO}cAQG>HvRW#BM#}?&-em7?;heo8MNkUWcO>}D+K>#I}4hDcSGVG7Dq}5%LIzR zL72eISOig_)&j|*;V6K@VlXH`oj6!L2uXfm&?>kzgc%HQXce61Zvx|Cwrea* z_y0y{fumbdmQ71jEJ-@8+NJqcn0T$~1z>8yeZ6H8^>aktXWu!K^=n})!n#iVkO?X; z_nenY_A}E6@0@r7Yx%TjfFGo~;85QT=o`l#JxvwLS>0o#l+v$qHoohaItSz?kr+h1 z2CY(LScV>E|JyG5a-NE@7id1&fcek)gq@v-kH^#!z_$TP-klf2np%Z+)J!-ZlqeTx zq)W4C*Jol`)xpwO9hC27U}9+)u^=45pO8k^xY#Bvh8{xa)i*QwKMb4$U6XtZ}i7mAgW- zPRmdSki`IhoyOQL$_|-2W!Y-kF3@CS?|363Q@tRSV=b^j!!(EUAKN} zoV=2FSZfRWEr#4fDk?gOTAt)IN)0GbP{gh?Be>fg+5HaO)00N)`nuO3504Um+G86m zJQzTSE@*?fWH}acB{9(u-<0}8KLoE`F4kijKxq|51p7X5I@JIAtwFNCMWAY_)Hx(h zj6@jGnjthnKghRqgQ)~siD?(on`Lb>*un=z&xE)+N1iLZDv$?H z0GLIu@^W+G4Gm>7s!~!iOb4_gc1{HrY7G7-3~y^SS6Cyqa9$YH+DO*o2z#8w@(AuN z2`WZW>e6B8eEpI=(*o0o{m=n?BDfI8WVMEf8}UHoE?bc&9OzHNMd?g*qq{=h>U&kp zXIMrD(6zMu$vciKmv{6t^3e0w`B`>4fHH-cv=?W^FX<)W>bn_e@9%;^u*jCwC*PtE z+N4UsHStOmqXbJJHj)ZUECfq1JjV5Hn^SUqH#)x4ZB>0go5;f4J&8%H(N5`otmmKj zf{pcQ=q}C02jcDHaHnX}UYmqKSuN`Oh?+!KlKg>mapvcpIRmBhfY!>AM|jYT0)WB- z>1jByKfWp~@sY#?kj>+Y=syRkxtSRUm$?P|MjE1nx+dPx6wi;Gmb$W!S0CX`#Ppw6 z7oF^lc^6F=HKcDjGoD0AiMm>Hoq=5jZ#e;6LWH%8LZz7@4HtaKz^uZ&A z{K`j^2eQqD-v~ZzHhBRyvK#h)NU8if4-}4ne`w!&ojgAObuh`CWmrUCS;k;!^sPzw zxNK&;c}=51;Z)N%TfTCN!@>&RouO09S}|5aqTO-4=`nL>RK%VOk$8c}&$7C$qOGE8 zv8nbbu)nXBb3_sqpNm@sZ~DEnd`#m+?`xY{am}YTjguk!N{ti1pz=}O*YdZx$B1ur z>2qiTg5uNim~o9#aXMb-a`K3}BL^%-okudnJbd-liz{Up2>0JV5J zM1!8|^Jr=r)d>rdFk$}mqTI2_j13z)cm8z7COyO#W&|twM1Wa9F4y^lH;mSck}i@*K^UCZ%aP)u8u~~D?oia5XFI!t-0q;y`?ERapg52 z|IB|YC;!#;%-%IvSi3I=@}?fT8GNzU3o)z-wS`&jKE_14K;rxG#l-1>{QN23<+#=^ zvm*ud7fGnW3+jj#&6JhzTh_YU(dq14BAb%9!4tR0XRxH9@y_x1!$z8V%PTgFXa29* zFi2g+BLFQMxs`>U29>sxlPcwy5wlOFv4)=;RJcu^I$-ttu*|;JKYT!ZsTzztyJ_=l z4cz*Ga`!#S=Wr?cP1FyL~gVARbnDH*5Q9UFZ5*ZCkiM`K30eXaWL#@Y7H-+Du zha90neVH8SwtI7_Ih})gdX&Y7`=`lx88bY7NpqIBw4JVVNvU^8zoh+YpsiKNPkuIs zDD~Op*W1QY1B=3nW>1$a5g}teD%0f-Kx>uPWpm0aDY#^5c+^oQve|-Fmn}bs1YncPMnDc{f*CSeEt{dph8WmT7x0Dgc_VaizbZ!MD}_ zPABN~yR*Bell*@#%){g(K3e8%O!M>4q%}Kl=npbi%!i(R%zvd#3lnzf!tKk@eQB%oh*6PUDW%+z4r?4RJ=2$5-v33i zO7Ubw92bE9?Lk5PG(yeOQ`V4`fr?yiB9DUoQkCD&zvvFalr@|H@b2pIRbP;bx$F`0W>WBJ` z0(7usN&0g1gE~%wo3Z^_AJ-_oX}3iq)`13_q4r_yg&s$Oy@x{2gse3ppo(J)*fRx& zf37W*AlvA3tkBRE4}~9qC2O%&+|zb~&2t9{!4kOm>;Zmn9psig+$Gl$pLp_`u{`J_ z-Lt_s(w-6kmecz|VQ;9eQnHnOLCj)_`Dc;PUR)y>&^{g8ALOAwnwci$TNFDhPE2dq)6ygJT8-q z`i#HHi$N1j%IofkxWQAD`?oi`axXq}9FO6P1zi)~D1yD$Gvm(QdpnU?0eAs@sHcmN z4&KDBR0EN2^))!?Tx)Prm6OWtXO-T^^8jrB_vbkKIES2fpLO_~$0s%t6W*GgbRH-A zsTg#CIh^?*bgv9x7V~N=uDzoV;_Qkr^S#;>8o+?j1*|QcFE3~CSbj~`wT|^p){E1N zSRR!bfOFVSN!0og!tjk$hh;#HKm_;*z$dzPPSTnW`R%?8eO5VJ;1>2Wx?`B*7 za@^|AG!CrGM#cnQtRP|jt&k593DMI5U(k`s0F7N{tiCg#bA=hThLy961RaqQxVZPV zKW>*AEC6lBNm?4yvP(GxUg?RBR_ek069J* z$${@a&DQZYVJic_>e=dG2RPfk%{+M~JgpBmL$jaPtV%mu8|}zeY8p4c8HCeqI{M-L z0Fb~xx&W>u$~cJzWptfj_wZg}CkWDUc&mH9yQ1zgW@Nt4zn>a6osYo<*pYt^`58z+ z>n#LvKsj)eM>4TDzdD53XViqwkQGgD<-MY9^ExO&sunP+h=)YR5~{3h$W*k*wSS;S zS)Ce@@P;-*@GVH${wgW#3pYO}_D}{^#qaoL zzwMz^G`-M=p(}sfUHnA0fpX%V1iG6TGl)D*wDpX@AO2@auHzGSoxB5S?nG`U=qhpc zni5}oiN+(RYBSY{c`6n#ub92tinh@Wyf1cxKENt<6eqQVH~2`bGxaF;9&+iFTLJn| zZBx(=lIW^4hY=1GWo7wG`O7oMGw{BD3}95+g=*)@=F+S)Vs5AsAp5vywi)EDl|av5 z-{3!EDw%EGSC?E;k!QcLk9oBj%qXItkTOklK+|mt*klTp&rilxnZY z7G-W9LnksBil;LwJEtrf`~C4uWt;P*xmE~&IaD_+#?LfwWrDtx=}WjwfaqSM`t|+| zr_Axc)ItAL`1u}%EP=ZMDF07N3@y0S2h^!WCx5F9GXGU&&{tI}$;&j#D$UC@fWVTI zQ_G8ZwWfzkl|VwmaQJ()k9Zllp@c*T*?R^7{H=sU2|&+_*d!~rfMsy;FaC72^KuSL z(K1D3W{I-QdFftT2%h?xW+h9T?ZQBlO&v71ZSpBFZgPeU(ULy z#U5_O0GjL)8xQr%M+yCV@UXtl-$YVqP6KMU^YZs9kD()itj<)T%eK0=eK!IVe8ifB z6OcIw2exwIQXr#P!yVuL#E{J`+wBR&c_DJI7S@i};1x$6d08E9RRd+nH5%qsP zAD9e#vH?1>c4mrKB!g>5paVoRMy3XK$HPLSKu~m(vGX?+VU$EbU$g+78PKqSmRYcv ze8$^wYTsZiuE{H>{?t-`lw?#r##W4vj4Q}7bFdM`O^M^={#%h$ifX5N3rK7Xi3?Cs z*b~Fbtr=V>pxEqS3T>%J%uLV{XL3?EWtFf*B=MyWJGL-`r2!06F>k29;I%)1jNnY0 z!hZLVXI@uInRRtqXgETAS9_fuFPoRIBR_w>yxdkf-g}GfChn93T6m_#Obx>=RV-I5 zJfNOxVJ}skh!=;I9I8KEj`HZ-IRG*YMcvaAHna{)C8`++wz zNzY^Tqji2WzpW*&Bd-;~;gJbe(##;#{E zU^XN{*WjkiQ>bF5OP(_^nDFJ;tU?U-Os2=|*g?51NM;k$RwHd6?dO`w7#P4KidS@e zm`&jKji1Mv&zO1G72XTYV^Al}kpZrW{q*y`{Y|dN1F<_{ULyO?;A@s7#=|s?@ zBChTjV);`bTYM2kI+gzx63s{*Vzr38M~$UFAM+xwIhxq7gli;`V4cB$Nf}epd=Pg2|6lfY-W~VDk*KM z_$TDOkgcc2tkav*tTrC{X!48#=UI@p&w8Rs@2M8+^FX-L@0*{+SuaY>dA~hd4~t#J z*U|&h$)By(zyG_zNw?iA$`uj}tQ}-<0-3JC*Z|(3BLV!D9A^Ccn)(h%AMr#M3Qm+M z6XB9^KAt%=w?|e8>!3@Z6IMqcSX)mz(OOyYx*hBF-O3dhN&O$r-U29+ZcEq3-QC^Y zrEzau8u!Ls8<)b}t)Ovj8h3Yhx5nMwouBWUnKN_FoQVJ48$r}2ipZ!UGuPTX_q*O_ z@z;r?poWKqc^--xTNnhvAQvn{hm&lh5xE}*t^izJm#kId-5nEzK6u$T9snP_AI)XR zp^Y3DyW|NnbxBej$q*Yd0EvpUf+i?pjg6^8gFj7VU7T|-U}~mAmN)cF8WWI{1N<9B zeG+shwz*9V=<#*oMGk)0uo52z2=o{zxm1-zlA7KGfm#6io?4P0U&Hws;4Wdmo|)| zgr4>lLL`s_vtg)Eg01@8-gNUbTR6S>rrBVrf33l@YK{kwKZ-wry>4!&PsQgfR(L;C zJrYgUbP^HcF;EVRUO)<=%O!Ep;i%|RUUShd*gaNAAo9^t{7i9g4ID{6o;rN@5xH1P zc6Xmt(eaS!Xwn|!yowb+aOF}c^Z!c|hXu57#!@ITDIGD!My~AE`;1%3GE^n2Zm+GJUwTA#8G6MLQB8SYNLa+$*eVb}DVSH)B zhI?tYDDjkPcfYP84S6taNPADt#FOSyx1H!}%0O%=c3LP@Sc#+9Hv2b!HE&YPF_)MY zCdO7k3kByw0qUeWM$<9(4yNi z1n`QNd~IQJ!Jxq+hhqDf6&E8f$s$?CF+Y-;z>MGTkr_E*esZ$UsNyE{*2Z zFgZ0=9ZIi-`XOE)+~k4^*nTu^(5d?3J{OIYL=j7PVU!f31(&D@E?4ws(k)oHLxnJx z8!plx(3l?(|EvxqK!5Y81s;^Z5(2Ec0Vr20C|U&p0kF215fae>7{L(%q55z&@?0%d z(lV|qGdc$O?JoqLs#TL)62x8UwU!H#kt8rg1dnX3wHssHwWPc)ZTteQEGJ{s-v=Fj z>i3qZKxfAzG3`25C@nLkIC zkPW8#6?)wkDYpVM+f}NMW65+tnS-bqLGe2%)`%!3jk=-z0#MCbwahfPC6sw!N9k>Vl&P}OOt-rW6o zWoAM}`*R}Q`*^xiW$(|pLe9am}mbXkzXP}py6 zTkN++*=f_@;Rs6lc-Uvy=v{#JN3TJ}6Fbbf92rOO%uNzfu_Jb>Mvh`Y*~}1PlIbd` zZ*7!PnW-Fq7rIVH?I1Z9g-sp~vl6rq#_s0a)z{;U+veOk8tzfTuOCo_>=OY0D;FfD zWEqRrmwe#q-npH9>kF*WL!I^+`C$_f-InC&*v^&_X(jY6@8IEr$il-1qO9iC#r$Js zg;L?wv&`D!S`=;2XXC-(l*VAYkNQktUQlQjZR5sS1Hjb7U6{bmZ^4D6 z3cVtpB+wl?dVecuxitls;0K_m5g5`ULaEb}lsAgV371n!@qxLQ9vzevzNt!z9@?_L z{Gr|THUXNCZkcnb!qyj9|P1>X^A-4u@3t`o@`+-Di!h^&E^K_A;H|ej7^vAiKdIYuA2i>{Y)o=L8 z)vr6K@2~`faKE_0)2D(3Jh4=uHc%LEtiR8w!*{3#U^WJP=mx+3k1D{w*8jJnLU>K+ zARrjDARvIh=XrNCRwEX6UKaK>Z4cFNgDXfmFkv|~c>$QH%DPMRpktZ%Nn~(j-R)Si zBn&lpJyZ#$3&bQ%4Qi^#U<-ue!lOU=y6d%pB~3ZDYsV_(0TBUtm+7ErOk0v~6Ay!K z6F}$v)vder1CRa80|ly^k%xze>$LCW2(d^Q0P0xenAnK=G;%nu2Us~Sw<_*NX9t&z z&0~)4)$WOPX~n?V_fJEUU1s-T#79H5778XhLqwEL*TaM6COSE6Y zppq1I;28yJr7-ixRdtIEfCwa>H}|>+5E&amk&R^)Ul0*ln+ths_V%$O(-^9FhU3pX zewr^)2D9!+>3(q?TwbYx&RDm^w9-{k{bHxb;Rn$}#Ms<_7x}*J5H8MP;n3R`w1UCU z6;W(+6~JH4hrttI#6Oy&a$*W-<#!SUj0ima)WBVo0sXa;VQeF&vP)cRa}m8SIlRpT z7l9(NVZl|?{{Z#cdg_pQx`~S3KGBs~okZUbeD6AFEuXbup4fwfjj( zP!X1&onWlcq#3rp7km|;2YR^gZ~jKdG9@n!iSn^~@bf0cikyn6^7rbLdkcpyfXfsN ziqN>FMK$?rY2fG2A-Amw85h}$&aVQJ91D(%=lcAbej%(l<2C^kLFPikvoyjQ)-ULKS6G9kiJawfv8k&ze`6m_7^LucWl ze)?#u!yX~amjlsLX(Z6#(MhyGeEBB$$-@~y*e-`g1I#P?g+WD&&D}A;Fg3Kor-el> z7P~avjppHB+{_#lRl9Eqqp zyE>ZtP9vq$cijvc6&kqM_4&B3CJYaiJnby71-fN)jMM|DgYrO8H)EZ&?k4n#g9h2I zW+yMQrp6$q^>+Qe@(Th$v;wpi`g3ob$UZ$rIC#G@E@YOUn*_XB`m3mTlUjluD{)vh z-hN=G*cc4`7STC#yTa7BlOA_j1hVdFMDkYo$NB6Gbnf4!XOB?wx@B+Tq{ytrW*`pP{ zOLoNSTDGCa=JyazYS0DiHUSl8k$jo`rJY9_tU^%%Y37I{9k{y8CtFm(lsegJU(`ev z>pgxuT$Olcr5mR(Fxt0|XlNY7Jy-pd&tXZYLV%?HRx#xX5StuUC$F{D)08Z0!U198 z=lMEGkfgTn!W2|>r7JP@%UD<`I(YeR%x~TXtniOb{XyXK^fHM}L+~4a1^&j50n%JBpKy})N5f?$M*Su1izU*AVAkb9~sK+ zJU8?&MZf=f&zbmk@Ep}Ep$3@W#)-l|)GQk5b|5Q|@A-&nZq=i*r2Q+$^hY4vAI>NtoXW?+yMO86qK@9TlCmc(f%yri*+tu7o?V?kG zY4XMg7-Ha9214((;&o1~@}sWKYl?VDQjcV0?qAoI0ny`yr~-!Om)Xv8cJ}US5Y`uZ zEzviiz8P++>eP>R`ys)-ILWMzNKz9sL zbNg&!L0Y(D7>VI?QkCqnoNqq7+;&Zh*GhiJu;odS1 z5WKyp!C_%E?6Cp`ZSd1Cg)mvR&0$BTxO)CFw#SX6qi7;A5J)Jm-qzFe#)QmVo=kZy zTeAPGWT@=tzq~d}q7DzUTx5Pg=yw3d6pZUyI0WXde=3-|LN$cUJGXF<$j5|>;q_uk zIPe7f#G4NfeKTsy^7$p<;90)Awc$ts$d(%_vBkZ3Dwi6Qq;HIVxTeuX=Uqh6wDF$l zDDpE94*0m!KWuVJ`6Ac*NyfY$TO)ZO*7rvfIOPwp(MZ}t;L#m}&p{U>Pnb&;`ocNe zdUI0r&)aS&eCwMxgt9tj82R448uT*|uITO-n?>^$Y=6{gkNfQ+a7_y_N0J=~s6&kQ zL*y%P=y_qzrR-Ve(Sl<_L+|R-YGI?=M@w@44QFO^XZ&+zR_|QEFu^~6A?*{u@iM<=0K-9R?Fk?!ddW8U20x_5Pd^WKaIkDT;A_nVXp1c{zgtD{H z-`kineCe2nLxs~uGBDI<$goW8GeN*8b(2^pglLv~vd4S>`i#0qawv=kV<&PGy!G$R6z|28& z%M@mFN_AUv&m2s~_(?IZ2G9Gj4Y3ADZ^F8RpEE1^CtJkuqnv-`kTT%U_v?=dwPOCRc$bP!8yPLA?IvOHKPj9OJxZ1efSXyz~Z$r_){A-AQ4Poe+I?yjs@O>zE#o-JWl1@HH>?p7YJ2 zcNNCo6_V$MM!xmkf`#9+;hp)u^JxDy9ey4(#~&@2VKL+3AB+MuaC%Y#Bce>+aky8)LjfS1d{c0`78H0DA$Q!F~sb&&p$b@^GlrE%Q?7z{px*?+qs=q zt^)-w(K{J+Q1=mK=S9V&j)6gpOQY^n>_a`f4rmdeh=7ZYgjYNq=zHA^WxzakpffT8 z5A2~FjsRSAlk_~qsG@9o?eu^JPEQWd?2p@8!&%uK?puc-6p0J?uBhqDZ4+`}zrAoF z?SQl}zav&o>yf@|-hCXWdcl*jQTF+flA5*`-Uim(uc#`UL z=z@1{PITCUPk2$TiXSmoA!=nUtM?sGtlZI){;F({!NLC?nmyaKgfK!s-r9m*bAm_E zWT0v}n|BSluX^Bx;Im7w9|3U$J95t-BLL9`eoqnqw@24(S_*s}%V70cjq<*|eRZQi zEa*dfj?L&D;8|@9~$1t+Q>;iVV7Sr=`h4u~1~nd>bly5bVa9EbI0)#DJ;F z&Em%1{y4CjEiw5*ozviZIGJ1~p+{X%OBK&y+uS>QyNH)2WZGit-JWW0@iUOa%SQ0^Gby+;9uvx>fm%be`y*MtDSB>qV}W7$_uK$p8uJ>H|TcuyaF$> zyoS_Yp@YyDOOD{Rr_of$5g%3P?*U+KU=`9XtOoM0t@U;zmPYnHtyqrmYK4wz`$yre z%=}Kp?TxtMDH(jiBUX-xeYlDjyurz4q8V7(H6?>S|cvrY?&SN`pAx9Pu*P5*#pdlr)~0 z6yjdYsk%?w;MaM|lKh0pJsa_&6W3&sG$2L%Wp*^``?MEt*{=`c#K=<6Ca^C4JM+jl z!v+lP2d*G9@{sPvZm`1D3+?o9Zx7~6?`=9!uO5@aIvI*Hkc7RW>L|{Tz4M(a4b-X$ zb);5(UA3-c2(vps#)TkX(>uTeBExVaDzL0hR^?bv-$0SyqvB{6qhW%z^}?o*%ctO| zeI#KZ%EiEUr4*HTl(9l#GXkO(t{V%y@t|u7&-PNdCbPq*TKCA{GLWi`kQU^Z9X_bt z`j z0jx*oV@u%AW&wspAjEUtJs)}Zn5NqYoZw(*QsTpqL54qEbwSH)r~`) z*fMev@L2}@ZL-|@zqtW?4Ph2<-!_h(eRQaOLhX~5Wv1Ljl~+JF*%to(@FN4=%Pt8d zv+se74LkZE8LZx*b%E*}JSPRWm9D2g&&mCKEq2d>J;Cecw-*;f`5aa*QRPVNA@%#t zbBkDZ0P!0>OUT{5zTUC=(XYWVt5bTH$$Xe`f2OfETtqQJ&)KSJbLKgYgDujg*26a7dhgE5?BCXg4DZH4w{>(#yty9vPOJ!y7#QvpIzGIx#RgbKD zVYtAvWV8zp2Y6PS$jNRU%U=W*(hGdY&jx9<vlmmD-U8^u)h_5jFr|Meub@!0IIdn&uVk5!{HJ79Ff38JM*_&^5+vR zzbmkAaGI610wA-`HWHHHEZ)Y%1c#1ubaRb+p7g5R0r-#&sx70K51dR9L0P3KT{&iO zTs;$OPRONZ+e#-tP+W|@EYU7ptcHKz$ZOwm9B_kTAGpt)9`9u4In8tIhQ!uN4aRK1 z34f)3)4mwW$c2`<-;NORfGCj@d-d60vk-0eV{el<-tIqy;#md6M-SQl@TATmW;j|iK<0+vc%RjuhsqCd;PMZQk=%g z?`OAmzpzuQKfwNZ7kcq{W(bH03H5Jk&Dk{m$qoes^+8qyI%vY613fwsrGPL{P==s! zjh0YQ{{K;UPN&|ngfd60Cs{cPspR+UgPQqM5USHH)Qr;_nds`hx$QIDQ8Hxb( z5O`sOAS#yni7TN%04L!b%ojR;86ju_+?A-k#7JQ;ga5fFVLz|aXRC%h9tWW_f-b2A zuR-+Zpho#`bsYf>)W{4tOvq+kR3Ly5czY-+ z22}?1=Y_)pUhqN_F*7&_AR0>j?qLA=%{cK@?o%(Hlu$?L=}H>+ z7_g&G!U%ti2n=l6Zj@b8%6ghFZLh@djttrH1!Y=&3C&0`d|kI)M9}41tl?0M4l_@7 zT#z^QWi?r9JeDo`W#Ougq_6N*&NFe@ z_{mb1PAFHR0xuqQpHo!jC24g6p~RQIfpGi-B#q4{42y8yzI?wgSk*z_5@oliAG%Si z$!!J{FjJnY*&gY}6yTTqkduEd0bE|c6IO<87UBQqpfKCsF4pew3pPub`V~W*Fht?Y zpI&fiXn?lOoAiY?O`eT#%rg99PdWf4U4g&i#0b?4-gJ@a${P8GZ3#UpYB=O)0Xbfp z6QVYhY4O=MX*szT;D++3N!;%=4v(Mweh_>qHZg20WYW4Kq|((*n$Av1K_2S69_F4u z>sar1n9BAT#tRJdKb6kc+z!uDO-=Yq0d#GF_G0^&F3N1JI4Q;}ml`CRj?C+wUODh@ z|6_;#uTn3>BjH|P=Pno_z`OYE`o;*79$qasl;O#$f5z-aSv(ihmZTlxdqO4!d24!8 zt!30NT}b2r?rN9-qBi$SyW)0?{&jJYy3QOxSK@_<+s`!$tE%mOf9ea92al|WOgC4m zV~8|8cXgxr`}^j`DjWpiu}^UVfC4p4+yD$Cm9L4S^K8OE(G$AFcfEIHXab-jX`Ro~{WUL2 z?}Z^K&%<{of_>hRW6e>laFL4M4)Qsb=SaNww2ibY46QIw;TBJ~)7e{5W{)LvvSdxz zM&Ap3%{P%*2t8VL0O_@$S(Snu|J|2gLzU|2_=z3&=jVfr6VKk_8dXd=QDj6dPeT@c?CN*p1gZb!x(UNE7-=XRcDiWIR(nngArQnEFr~ z&XTAS@iR(t4Z=Z)W)XQ6HogAanqCxYp4Q?twgvbkoRrNh;q@KHmgQgHEPtz-7ic^j zc8hPHOek!R0vdH9rX>1Qnqua^R#$v?78Wgx1QpHuHgM=^Fd&jVkoiEEYiblYU&Xsi zXFSva^+o%zKr&(>&Qf5di*7Cl>bsmnz{`kwM6J1@t4h@ax^n3sW?`8P>ghkmC4FZg{mV0)xer7J36426&TJc$VJa;*(X2`xKqx+e$^gu z;SC(^%|#g*Og79S|MPqTlwX3Uf@S% zg8U8b1^o|buLYmnzoYglk&MIjZ3YFFb)O(cg4d8jo)qzr;MYk07zDLR>GlR=;|KW~ z$Pc{4f#C+XG3y1=;lg}DU4tB@{R_w&%pJGy*Mi5Z0L;mOA%e{DN%z|acICh%1Fmzn zic}J`bAc&oiE!+ED0p^)!WmYWi3!?RiJH0@X*wWgGd0;~P*}5oJMPu(x}tgxURgacK#SDX_z&U*hFE z#xG!_`q>*05Y(7R1pl*s3rOMy2Jv@oXsyz;3sRZFL}1e~jm z6*I85cNWwvi&&p^_eAUl>ov46O$l8oU#T|3Pvvp(X~&@Aj1ol941^}|PyqfLn`^;dki)YeFrbh zuAwAq8|qJAyIFWMMn29jo39l#)e_AysnS&^)XQ)~LIxAY=!38j6P^PXgyjC$7Si8F z$oXv`F|LTySja`=T6I+#T3v?W4Y+pDfuF+U?Q3vS%g-^kCvX81RG~3zDamsqURRzP zZ#MbYzr0KTXb-v4ZW(SyrFF4Yw=W@Ql3ta8XJ}?N%pc#b|L`hrn76Fw23j93WGw;!Tv`5$ zlQHbq;IR&z%fv)hKP2P(M1wWawy2PV5T`zD?w4wkO`S(wEytSgDqjrV3fp}mrVc2B z@DA_27U(=}Ko1aJ$-DeAA>!L((aB73wg9+GpXXUtY0st_@DGJyH z@J&18()m4FEhIu92GC_9PIujaCP7VXUB-CM#3;q9ljiAW#NrYY{5>u z_1CxyVK@9bbzx)tZH>)zzm8aPDZ}hkDtZrcpN@y1?NlkP?nv+7CoLpj5HW7T%p;C@ zt(u<+w9x3P@vF(2Q!2kEa+7!(4H-X{CP(t3XP@_Lpi_yG>5=6LT^Wc1ZkvY818CH` z*Jo{3qRyR;isPDC2Wy%L$ZeJA$OOMdWX3s7kNueTd}m6hhp8UTE8xc*!7CG~@@^zo z5VyRObg{d$3J_Q-==`cbGF&+h<7pSGj8_^_J^K#CFm1f${_hL_SCl4H3J5rSM(Ll= za>Tz`YryJ$D1tBllFe$_8kGKPHu*Q%jMX(w*X#^x^3iJR?0GSM` zaaaVIKX!f-xJ8&|Rc|CDI%`T8E7ebNAGcnXF?%z%G2ROv0RKc9!}*x6;70R<+r_zk zU}pImb(ht4M)rdsev)zxj-C=cDGG9FjBgDjYaISr zRD7I9bBJD4mEHD4je9vB9)x)Dba__jYF|6bt7{`T*OzA+@)Guea0qYZ%+n=)wFpAy z2=OsC;9-!t>yHK4UghEnMEKCb)T6ZbM4cb_I zBWNkHf3Yb}S^z>;*VB znS6k5w%Fu=JiHQy@0{$z9&-;(;5xw8-Z|)HB&j1?DP-jwo>Cb-@B0&w?~jThW1Vzx_cCx5uiQz!39FsjXZbAb?&C#-?!M zbxAQZ0c|>gSMTM{jhQ*t82?>6qi74_W=y3!Xm0x;fCs0a7n9$1Bzba5XtWrkxh4fu`@u?l?CF^Q!vXQ*slIrxSB9ibw)oxu)_ zr3WWbmS6f73{8-HotgUA+KbP-pltd1p z1bk3UcM54UO%;NPO9v?cE-Em)GsDMsSAkufmLujGdF!mQp;?Y@VYE8GNF|<0#DdL-3pgQ zms>XHw7wT3IdJQS-kos1))#mxIUkojs=#gDEBc+BZ5F9o>MCRcAXD+d?Q)NByYyJK z=%Yt}v!gfu_OouR26eb`I;EJvFJs>;C-<{9g?_k0dFY>M%J_2Qt^(QgGuH5iOOWD} zxY?M+P3?iI0_}qu!>tkPmRBsY?y%8ikDb3oiTauMxN%j6YNL`+dY#@&q=N2?>xe^{ zrRNWBf=9Op;6wC1fX{H>CRpiZ?N@)+96{j`$fr6uN$HsNl0Kd8%du2Muf6P00p7Sx z{fB=w;+qYTUH@ovjM>0f&`|9z{}rczvo2d+hs}nJ0~`tV)!_5MO+JUn3iHnwB!VW1 z173a$$*?IO7#@dKq;v4blg~q3vdELn7|eJBFve~97X1J^ZW;}sjpto{I&N8{{$>SL z2(uV+@RMqrTtqYu_{bPd(Fe3DmXaM^!nn&GpWoy*r`SOjnV_lgfcJhn3LOkd%zDyg z^PWhK$L_)(yzzlw3U|DTZj+_%Nf+Agt~+Q)otVd=bkbQjA2$|~AS5OGq{~*Q33>G% z9NO;1BL*P(bGjqi54_P-SL%AN9AhP3sRSBnG{7h;AAFpMWVeeEZ;`d20*dE0R1swG zI*pP)G{Gzu)oIf;x^XC(YR_hH#@_+7fpLp(V8+IP6xwdB3F$Lb{qjFU)uC-6`I^9& z!z-pLkXs#iDg=TAM8t5&=rlq;0XQN53|k(U&#*fmvWDp<#;KI6U%YM6!S{33FX@7abRfca$C*&(+STDVZ}W@1je&~T^3?rNBDFC z*x?;Nx1u=Qj8;4P#nn~KihfRMZhv`^k3UXCwTn``=D>{UP-e3PMR1{Zb79Og?uzAr z)A4ijOTtXHpUvO31h9Ci(wltmrW)KKtP z%*tPku+QzZ=#K&HTBu*3g%0%kML;gA{6}=`h{0<1bt^fp{<4iV> zm`)+*?ZI_hNP;GTy)P-BNkQr}Dfs#d92aGs9E#OS!SOnjj<`fk)z_r4I_f1V)bbrcf;nq9oV=6>R;FKGhgs<>4u*4T0dIr>lMzNdXt6BCXG0s=KrA%A^@w$H?%__2re@BGwwHGoK%*qt%Uo$x{H0bbPh|lHXt!= z1bpim2Kj$tArCSPT1RxG{CY=_I;4V|nD=?{EL~q*!9MS&JHTf$A^1!t&VqszQ3r>@ zwa`0j3k}K+3oVX)TDN+IwDI%xP`DTQZ2Vn) zO*F?gDhUDPDyCVWqXA{CL5P5g~anuEl&;xgCp^n>jLMmZJB_w)>hB z5XIao-=Mp4ZHn=V>ecbIDKt1yY)6?NdL%Wsm~BgO&8Sdka*H4N$-0+LKjJnWws4%%Z^SN1Zml;t4ZWk!ZF2ftYjxq z=5Lj<0ji_UByXoqBIKsbc1)=9P3I(&o)5{M2FuCW7;!WxQm)KfZLF*fdDtv#qlY#5 zS+Z$<*(J;_qzu(wJ$gMxn3f@w%&sh5h&JM1r$uF-z{M-BKwY1`(s{5!JvK*}*1>6> zUpp*(=P0$}OPrS12%M42PH_H6qRk(PL>VoX0a%FLrh7s}pDfo@K>vL8r{d}$Ibf_z zq0UcV)?wH=wLA&S-8dJ=v_MU)-WCEMvJU`I&aQV*DGmtNAL;^p@3Qut^HkgRQA3~?-G<-P30o?J9D z0XVot6YbsEaWy=l6BGy6sIWIaq_f_tliPp!$|7+t^JO2_@r4dIalbeloh;Bf)x6Pq zur<^?tgfoal%KJG%f3jOsWHpjN4MNENF1Jw9Zvi_bdaaSzb1@8s+pqFkWFEYB>`sY zjM@!-(DWIFspCO&<(?tdE?XiqdXWtmfW4L}%;Wo0EKXs*&z6SV1P zw^C|BPn>2qMQOok|Jl~G8zuK*oFmDw)1^v{U2_A$vA+vJwZjzYQ@nHm?F5iF&6C@q z$(oLeDhLR)i62+AlN%UzmYeEMuphqA0}ivte6E$MqtN3M^)=p@Z}<9BninQN(AoiK ztZ7>r6q7s+39P*|nGucmk`YhErh3T4vIH0ew{d-3%>my|sLk?x%?Z<@<|D_#OZ;6-Zohi$FJE@j^|2|mE~|f- zpW7v=zHud1JDh{o30!H+cvrRZ<5E8r_pu#g|Co`|I2T7P3NGf&FJZ-Y(R$2KRlSQV zWyVRQl6OSfNi|tXiJTR;&>Xp$+*>01iMaAZ$DQU-v-p%<&^5b%LI}D##Js&rb0R@CQT(UCv9?xj%W?Wjx24QTR`LW=iQ(VGC5P1(wE zuiDM;0?4cev$Df4%TinfK6*`yU+0ytjqZ8=zU@x|>Jqk2LsT{)&Fr|dy<_n&$7oJ+ zZN2!TkN@f~f4_zK4+vF?d8rgI$_oD92!kx&{^@xe*a!|m3;eKx_XbS_dRxOg|GmX_ zsWsVz`${5hO)eY4I z2W(M2lSc1jY8M6b*z5?2B`D$;qQqMb-3WjV%U>$eTn}iC6Tqg}7~B3>hOmbJZvO5T zL@e=ru18$uHaqMOr<`T#DvMrHM6M9ufH zah9k?R6MRCpz11djM?`eWSFlzs^{4kn4dCu3y9~Cv~c-yWskSd-P7zv!R!_{$*Yd$ zXwESK4&*MFpMG{_##*M1;5WggR>O-4CWAja@06z&t6AyV1_NFXwmcsw$E}b#5|@qL z9icUUI3dCvg#ms2TP<*KwThu145Z9SMNuzR)ezb)9zo%U&m3W#mb4driQL?H+SEK* zlbY8z7?azn9;mcZ_rKE}(4rG@j1kMxDd@au-)6(*B$NwEDirQWPSF=*p`U%80@&ry zSEpey)CH-th;PMFbtgh|y2jg@=TkfS#tu}?4Mx+gbLDSSg3Rx#zqO&xoARDtL=v4t zw{u+ECPlMEukLYN%CN&#oWy<`+U1CWf#za&5NS7SBhVW3 z-+}PB{%=5d9?!f`5(EEaQy2S(O`S#fKD!V_6ONVT^m}k>KScjw7gVt%7|tI8VOJ$z z-*94<9$Wwp-YKgZ8Z%Taw23Q5+&-AmV8QL&Y1d3&l4^VVLb`v+eeHk@?u8lR61WO1 zT5TEP^5n0qLl8F5zJn3>0<2f-XHpw3Hlu3N5;kgfX3F}Zt~ek24YS|9PcPhh)7%Qc zJ3$x~Sd+m1lrdzdDJ}0IqP~Zhz8qgAcQgfj;UxqD3o)oTGtg~v;n;Q{uL`6f01z@) zLcY=nVd0Ccib+1#VGsWYS--Qaw*Cj&i3rJxvS3&*?2v2HVdVxg+`Ku_UyVbn(uBE| zI>4EIHG6GlcS-|S28(r{hOsO*U~`)Pohcp8p8%w#92RdmNEov85rfEC`wk=l}@@0e}m84d~k)OOQz=!fM*V>k^!X zsDb!y6{#}oq>?DhHdFWXqg~8bA1y| zx>e0Kdc2F|j&of9zqVnW&MOw2{@fiT`$vM|;$q`rXXE8w`!)%X#TUWIvM3gsB3nNe zfvQ&NUZeWGiOhkYD*-nEN7M#kQo~*fUduN+M$uv+`^v0+@lFWa4qSf)?{l_qe;GJk zn4{5z6S(aj^k%xSx2!MNhXPc9cNvtft``K2q7Juuk!YKQoXvcd1$G$zT5 z?!b=`OI_IvPCAq-V$wEH#P5)(=`(Yg!-I9L*G=A}-M%N9&9>?ouu%ze4;$O3f^t1u zO9n_N; z-;`TQoH~5Yl~DiXxpz0^;9}=7<6@atmH+I+hm%!+Y5bNW&Y1LE{S_1W52ao|SHGPK zW@Ma&4Uzy3V&a-KdkgV*^Tbcaa3ZuK5!^edqU48P&pVii1t2I)3R$A~QNfjajRGnF z5U}KLzTsw`{or9{wy`!Zx~0IxocufdETwop`e&U82WhBIKpP3g-X4AA=ryN^0+ViL z1c`k{x;J`y@X!V2ZwpPl=`;&%voy>8(*Xe_T&7?b6;du%wVsHF6ICCl(E)j7-O)%7 z*~HtTV5E1H(SRWcW$eBXs4G@mm`?-@VAdc;l^{1e6eYr6eQt2G2`M8MB^La;?mMp$ zR%4i+4B6bLL+@U&oo^9oyb*d|i3OVjgWDbCie>X*<_z=*#j{P&5@Q*@Q41oH;rbpo zG+d$B5UeVR@1)4p&U~Wmv?=bFqV4wBaAhUtlv8J$=l=EKk*E9f^(P;NN+^3C5J$YY zx*XGNzav9+w^a-8;c5T!-E8!9p_TNO;~O)Pj{)eomgb{!u?7i{lnAr{@$@Sd*Vn4U z*^Xh3oCn9`g<~pjowbq3cl`8&WQAEHRdQ`5fg|uIE+3P0RhzOe9C9&_2b04qyUXVIsKsh-@}B zLhjRTA7$1?^HnmL3&nc6el{hI)}L%tLaI_D#EAhM3Mn5aGEFdpMoIeQFZkN`v1@vJ z9{7bDE@+nPB+bPSQH#vEsEBN#ZBS_i{c@SX!4WfqYzZIYVLkcd2Di-DbKK0T6Le!*y71XkgVjNn1Xuh}j6K5J?$^u(+7Ll-08k(b{Ig6h zC&x!QSj4#mj`msuhgu5o=`!NwOAw62xAUK&drinqv|#6*X{d;YMx2GYf_q<))ZKdJ zkUsI=P0mJkR?1{0rN|TpLP2E*GqSi+CeAZ&_nR&*9C7)nL@dgs-wg`;g3;zPJ>B&@XP4k33{F zFnrmoJEsTM4o@b%<$u*M4-^&$av9`78Sa%w!VJ!)+$aLJb_Q#Z| z!oNFcj3k&3M%?g~Ob&G(`MB8w_%_JSU(jGz5YP6@jMgn|^G@Qt0X6Ku>t*Dw-eb}a z5@Ir=PfFY40j}@qQ`$uZ$ymyx^dGe^c5W82I&ZtVa~QQ+i|fQwZ4DAP(-|ny`S%O+ zymFxGw%^p4o)qcM(obLO&j4+Kxox+k)hV_Fh^Q_h(aMEr@skT}I;4wZ9E%oua(Y=9 z4})^Uv#yF{QRUkIA7yVH71y_{i{kDY+}+&?8mu9~-7UC7&?dOMySux)ySr;3xCDpW z`R(`K-FKfe#<}mG9^JjhT0MJK%~@4n&8klw_z73&(q!3v#mor9;Bp9?_(696p?%E)2bL+aU^Mz^xf{pTrOkr4ecgBzP(N4LeI&avu7{PTEAx#nWG z8MJu@f>pW zh8`LQQIOQMF0g#$7T_sCf62J~7V=Cevq?2~ApXzB zKWkVeYf<2>KaBkNv6Aw!4h}ME3=ar@8it|s6{Ud5I~a(txL$#WtTsOholj@+8ISjT zJA}Z1{5N~`cV!k-w~QNu?A11GvKk9GCFy@LyzKuGA&U0E@g!HeLEy)~LZTT!LFA?^h<51N|c z&haCAAN}n)59-8z`O(dTxc{(xe%tETF+fjb(jp(xmbS**H!TV82Cw)FxOM*L>`wwl zmY7>D1>^|>Pqa=JGO>QU4!9zUlb@_?9hOS}&(kq+@DXN9)7P!GHs9vluB=ico!A|V zyU)z*(lPX+2vDoUFu)8uns>U7U;0&ZiE!Soqz!O2N1x1?Z#_^Cu%?%t@J%(>QT-^e z^5ff6pMi)GaK_t#qHA!qz+`N`KpPkKva#^l(;W+QtN1?IvL4G0M$K51;9HoAU)lP8FW4+;XO&EJ*V?m2U$2u3M}27aHqP zpP5l^>3F^udcylCTk>aDSW*|3H&=|)UVioV@yHmF`??C})609f4J+IvA1KYh5PMChN$U&nu%d~g+FgHq&>a|n&%BQ@)0kLJ6pE(sf)L#q5NPioLlWo=9S&`SLhf`i7 zjt<~|)CJRzzB4}-OaP|HbQ}!}28@CRY?prjUo$-u^NT;C2HGiUI=9`;* zN-=#K>j|}47G2-P{pu;na^kMtdTNMViO6Q#V38iS^{D09?9+)uS2;=Y+;U{`XJ+g6 z_aLh7RGy$ze?87FPOaMYT|}i%wd)@*zUy0QwcT4G3NA6eyK5k!G%h3!^fgYwaKnft zGrS7Bw%e!3-S+kBQ4HL#+qTxdcogS5 zc!_}LW!#y33W~#L9*Kw{T3*9F0RzW^7lJeC?*G^oB7~A{%#usUVdy0P%Z9+J`hP%1 zaU%Ew%k$x*lV4>f>7uUx+wsV*MqU4CIo@Ur0vg=Jb0U;Y;=1pmU$27BcA`X_Kd-6XQ@)H z|GzmSPC`_2`0rbKr{K5Xi8MM3)PB%bJ`)3;?Arm3muz!}z=>1&pGP$Ek$#93BooKL z5(CG& zOz(NsyH*#R7e^j8Mj8@En@5arnp^#`!MBy=k@@XzX6Gt<_2uoo`vY`fqh{&1&B{_A zj6~}EAAbMYkTKh6gb4L-c*|eRI?KmYwN!yxqX|`RiPO^}*Gc-nbm}0;Q|l{O@}Qt) z+{VHPXZ*V+U5JE5lAo+Pvw~psS;sET#DCh}WpkVRI-Eu*8)bOW(#uSAFOj_UtEKvX zQ{Wc6!oB6_PfDM%0^6SoGuFZ${0`BNembaJp8C{0ag9E@3FClrH+1yOuKPAW(clP7 zdm{v>^`;z?`wg|eMrrBdQk))%H1~Jw?wjcDAt}b5pZsC$I;<^jcRGz6X1+e(*(ZoM zJ&(g?9hD9Zs-mCSYw`PzRC@g zJYK9?au&I4RIikn@L2ngPW&*uj-@=1WuO&)vU?X_{te7I%zzM!>nDwilT!Yt3r-MC z+JUugoZIR#LtKYv`|Fim=Q?|B+-CiDCB9N)QCo! z$Yh`_@%=+2lCZvJ`Z@;D=&f$K)tlDN388iMi${OM2zeKfyE1o~`ohz6ZwnkV_$9nj zJsVJdkZuwA#_2HYiK+g4(FI^qxI|OHjo;O&E^Z z$%+-!0hEp-ZADa+O>T5lzcTYG5b*7^;Ri{GKG|amw$_KA|4_tn7Q#+DLuZ>dgxj>1 zPJp8Cgc_XmhYTC}V9v6sKtD3VP6V~RRA?BVX^9cDXjN`1!JY5_+5%1M!#vdL=^R;n zRdKDb2IFfhM#pUQMQLl4OK5hC4E`zRj(@(%l#;EgS}q}M=A?t1*Ue3|tC%>~>ha$? zV*Yh%$nc3sVUu@*;c!rd=j zp3~Xq=>!B1OH0byMV0NUt0f6zrSjI&RvxNjjM66)agHu0V|l;?85W%^K+Y7ez_aBm z(!?Eq;#e{vq_&=Ldusm3K{&OmOY^r1;VapwecamEI# zboPhx#4h9E2de@VzdXA}C&x<(eWjTqu~5e% z>*g-OcqZ0`jAWeH_nr4;BTL<~Tj&lrS4$`cAE;5E!@qB9TM)*9`^L9)eCR$Gg|{94G3wV=tnt`pq$z0I%S-X^Xqb zm2tlP44EMyyx@c-3&f81d`UOd)Y%Q|l6}nI7$4!oA;#I;<)i?5s(%CE~iLRgwAv@-KP1tPGRUTHcd48FlMvD8cr~JYm|9mz0els|XT22ppKiIH?xK`ZNl>@(kdnfKf zLU6T8#9K4?UKe;}B?bHs6CZASSDl=12K(P6g*g9rNdA{RtNGjv7Uy4eVWz<*biT=N z#;~}+Nf4MtNMt;tg&h{M2Ya4}?O~tHiESm`M)2|z3P0lLTYy-~*;JGG1I2_jz9YNe zaha5m>Y&Fp>UU9#YM(nL$6NX>sIPv-&*^8j_0&vol7oAwdPm8rJeQLSTSp$bF_VXh z7%r^kqhAJ@8RiFK99yWVU<)PKxi~Xq^%CQNp}h>7urd0b*SNao23XtJrbDjCMh>eE znHW4~MMZW9l)L%%=_vu|QZ!yiYJsP>m`LiT?u7o@Tc*TKEk>%kcPz;|aVE^8NtEsN zVA^rGNX&11ACW>!Bk%!TB!3!FV7^y#+J~_stYKB5s{u$=mi-nz!dEiNrH+216I)IK zUz~CiLllu%k+_vvU7^$WW99wQ+v^*+IqwwLA7^HAma_!2CQ^0+7kfueVVN{hXuT7^!n_TJ^n_Ocy4-!9LWQl`CE;F{?T zpLNgX%K3qYNEacoXvTU@k>)PZuup48MHeuAQ5eY185!%y%O0qcD}1=@{oC z*jF;{qpjlli2dNL(g*oASR&}LlHcW?sYZ~VUKS#&Pf5Q#!>q^`{92MBHd}JQbk^$- zhM6+?5k2}IHhMZ1_UvpS<6YB&Q}X^F3jHpw@5!F5$prsj(BuE{STTGQybPo4S0)FA z33(=2XAn(U@~I9i6>7gLPKaiN^d}e*Yl56K>*U=t7y+Oc1*9VLuq`+@*GNz>m<0-H z5T$#|K7q&$vu7GAS-SRBK6tP>>)^ysGjlMDZxbaTS2m8`EC&+*)gASXb_`;M})O6aejm?AdVu~Q7NfZz%gNXnTrCrr7!8{aH{i+xx= zu#i??4Kh{L#lgi%wgnofD%b;sf08)=5AKk{9mDHbXOv8R0iy^($dpV*i%bBt%Gs;` zHrPXXmad@_rv*i?LlzXs*TeY}&Jglm5E>mS(fzfJj>1*Hta{gd)D!;Cos+sk=< z#rSLxz`>e~gbn!#73mfpE(KD4`tMosGiXZCZUxBz1c-Pu;i}pYb|tU)PVDHa8BUw2 zAT~KIRen{s{`uz+0{a^5>8~tej-ZTQHU=;{I|epD{e)jhVZqpN(I5|%!r3vMkdSsg zM4naSoWkyu*yrbD!*|zy%sW>52WtAB2=GdK-4AsU(D86NY>%fS`fJ&7j?0hY1ilYg$;_bjz z+^Jc+{gG&y80cgHx0W* zy-vWekKWKxBWr}e-Rg-s1Uj1S%vbjHE-O3>e=Q7(Ql{tbGb|5C=o03d0U;OD&o|ZD zyQ0(XhqjDFWsU0Zl&Zv{ro;01vSh4_bh9$7+T5ytJZIhk#g<|xVyr1vk0B`^Qo~LB z#fKMW^&h|b;K7#1-RS@>=nGP!#CN{OFgPIV4}{u6Oz#uP;Fr1onfBxA*m8VJ{%(+yQJDCQb2fBJ`rjJc4uh*{vI$TEnCc4d~%p>;>i%$m2Dt<*Fy0$}we zT2+;FX=G2aHs~L6U@!AKNr}H?zy}#clItV-%M5~SQO zzD+W5ldAb5E11V_|63E%znLd^fU#L}5;N-mY|xW;m{E`a$+(GKQO~I-qxirP0H;p< znp9#MahXD3N^=b2&TVU3z8fok%MDM|Q!z9IF%PWAj-qnJ+vIh#quG*3e-O^f4uT=1? zpSM1(JbE57k{@46e15qtH#n@f0RDNM8BBO^{gW-*;Gv5pN%_fjm+R7SU_f+Rh8AAu z3!%hIHNfMO<;OTXOk1yu|LGUXFKuiGKW%v-wpt+H^nYc)AGXcUG)&(!sxe8qZ$c}e zp2cm5hd;_>2j;HKHDI=nz1O?R+F^3KI!5Y_NU=~l;#^&vhmW2Vk7G`^3jr;fSvFzQ z{e*x*dNzd7h0rSuk;d9`({t@u_$BwD<~( zW2vM1ZLFpkVc3eU)z*1ZzUD+$0z?%_m_ZYV@Xb(1ePdq=p^cUDOo7-^g^5vPu$D?` zEcu39jdwF)rP$FAWl4?pV@Ub#*nkfWpC)#H_J;^H%hL=7#E@g?cWn1NZO5gIkw8YT zN{K3qLf4qg6O8F_cTjxg^TV3q_1}!cUj-$=8^~S+8HXTH0noqNl$x@dn(-MLaXBHO zBwx&+po{+p*!2G+D;3T&FE{no=o5G{cp(fvaG{oi)gElp2+|0L(RBrE@yze`@2L+o z78p5kQjU3FPE5360wqiO5EK8KPq{_x93o!*2m?nV>wp|bQZ~F2Ewhr9lW_p-)|=ZV z&~5C*yAvG%J2e)#60RzJ0Wo2!GII+e`n9N!ktw zwlGB?GKf3@*GZ~_cIX2}>(Qg}=f;OEI$s3H$y<_KU5C4-+x>Y@_xycR&ha7mcwt?t ztGsdhp>gCr^P$M;_!&A;$fbmA+7?LU_#mrcj4LRYkabFtCu?7jOOxQ zeqOk?oNk$;IyZMdZtuNe>Z@Pk+Ayxzt*KZ6_q_u3_qw>~@~5VHS^gZdoxQ7O2OKFF&^w`)>gc2a zJ~3N zY#ENK^3U!h)Zj5lmHc9ej0eOTe);$cb;d={ov^|%hu*plE~kP;kO##8hd?jc7D9-D zn6y$ev?4IHb!dxvR%>J(N|jeT6oenS`MKV${mi;u_u>)Qsc);#0*d{PoTl#{1UY`6 zA1`kQ+-e`uYLZ;g-F#oqOD=fLpzUXyDY`dyH#Xn@j6w{QmyIVM8hb|- zw(&n-8(M25vRZZ>73;W(Ath}6_HTGtstU))=lYB(wUU+Lm(!@EEhbO8|CzS^NTg<*PqLpgas{ zo9s-Xn?HXIk4UO({|2unP`eUNTr@rP_KU9Be1ShBi~YTbKhNFMAeoRE+GNay@jIR8 z45-e;sD$T@rAd_}Q~Yb;T6A}Ph3Ikx-RoC8c2g->kGXQ;(vDv;EEyUIGFn3(GX>%? z1+i+s-YrPu?mB>c(M~6$kB8^xtNvNee3TXicttMj5NM0Z7vwV9^5@hkciebF76n9F zt!ffl%=&S}zr3iP$XqCHy#NR07GN?8Bjwz{}PnhdV%n|r;av$*w z#Ky4&_lsx?OVSi}9M^g%LMMF}kbegeU>(_TOf_uVjA0<8SU{^!6h@2X)h%HcEuYgj`9}HQDQO!QkyDP}{Zukr$y0`yfxT2l& zDKjQ$>Z}~dw@EDHq1(Vv*=$4;iItBzH$%WnBBHe)Q_O|#|613`a{h5vFiY*v>3pP*E+$p37Z@~_Ooga^=^#pS?6K}gvUI{)(%X@$#e_19fJ;wyiTO#7u*^dWe$UiFSO*T|U#;32;&SZ`lNipWT~&moH|&oz#9)P2$p zbR^(aAN*owa)9%GR>=#^@7>I@@UjGJx;rd053KMhUBG%r@|ci;UUQ!3O!QD#nDCZ* zB|ber z1sn~uT63Ned+`R-XJ&Sd(Aj8u^F6q+TA`s#ri{|5b7_6NIo#7qjg{l+Mk^%vksZ*8;AO57VC8qJK2G+)<`weI+uEmD@czhKLl4}B81-IE?!4oQ*z z)v7LLx8vFL?aS}n7u#_wPM)IKD*@iP$U1Sl&M!{0-q|es<3pJi4bZ*jG1f4fK)#~o z?`mzA!X2v(#V+Op%43D#O5B+J3goNb^#bba+^ZPkFWn=L6tiRHe^ju<$q&kjN^=Jq zb26l}v{|3tHWJXlnyoVafR3@A>$35S@Tz9As`(qu!yx)a3ThCKx3_a1;gS z9i?4`jDdHWS=&KB=$cuQd~*CDFqWRQ$eP_{TlaBnXf#lhd;IGUvenltVKKYaie>N5 zjG)mbYI3vbdXlXQVkvSF$B5DcG|6;d$*|g*XIH&xRVGi=n!;zuRgDN2qb;3R#pKcR=tC`RBLsIg%U1ON%~y@6|aT-?ZN%B z23|4qCq8c z8$5|*7u-SqrG4KAt>(uwqTZ=Ai+k(&@S@7bCcME*jEUFc1?I}zh_vNNk*ZX4A#tK@ zO@U$iA-%(h7uj(ki&9G;{zW<*$|IraN;#PG2NSmQvzItJuvD+KWu?V0!$NMB>O!H6 zk!jzDlmo;_Z?;02u0r0dnjbx%faTj6$d!A?r9XHhd5Kle{g5jR-9Yt3HI{T9sM2>x zeK75OG=Yutg91;3>vHt_FtkX?y|mH^*}@Rnau8#>0!?e5Y+ht_0+}2gZFKdM$d@Qb zhl?5uyEcDSV7S=T>F?^DrOO*BJSP_dMKGZ2C3qPNEz*Q5Lh;WvR0G2@31<yT_qwsMi((+2sDKA6F$4YZXSI})xu_0(7}+3D<@Dz%F|tt9riv`hIZ zX((<~d&!|W!_yN2<(O0pMO>DlG-5Gv{tW`Z7oh0fBxF@hqt!6PdQ0FBnEe<`4dEd>x@+1r(Vr^o~AsY$k3BiZ_#``yXts{$df zBJz%#wmZGg`UlZsXFDe$YR9FZ+QQ0>Z0(1uxuqGoSykwmGgck-M!nyQ%AGuNRZXY> z1}`uzl>7HUI9`T}avB%(vZeh8;)VMxk913)tPhqW4!v_ra#Hse|FXAoIN^;lkGkqu zpnOPIv}?Wt?~giWn`-^6IU6(+G_M^W3a98;A~T&- z>prMvtFtE4&Vn*_9z*i-Ks3X-H=ge54@5uK#p}l;NzuqB!-;^<-)uOB7)qnmfDND_ zrA*)4$r}c+#U!yx3=*tBCWaN-bsIr0xg;6fisJhBwAp+~JV0&BiSQSXJH2R%C8KJ| zXiE$$(=S2%>PK31?Nc=zJh1Qdp)G#&(4LI70q}8@+=hFo$<}h6L`hhEP%;=o#QMAz z<9WSU$on(^L7`aMKF$Uo1m2iqP&_r-~%y=LS_&& zZujqNgz+AbV@?uJf2<3R>E~g5eu9GNf9JOF?dX1i*ss}7(3`+VqC@m zf>`0N`9W;!AhkonDAIgro`c6!aTt+XNus{?b)HwcVM5A8I#$cDiVy4&r!iJkL7;8Zd7)%B!&p>J``1^zN zEHWA3*w$v8OxfQM&qCdCCWQ(h2?$}m=HjRg7(I=|VD#c3uuxc2;*4X`4S0naz$kKn z9QM!Qqqt6~1Uk_bexu4{wfSg>X*`iBV|Wk`RWHIe{_secPn3tN6*?=y=> z8GcQE*K1QH?xGi|q1KBHOU}v@_)GmfJ!k<~3YP$Y`H!rk`h`d5{lN7&(7*^5B`Og?szn^)Dv~fqi!02PLkRkn_13q+04(W@bPS>Z3wepYXdAc zPK$t~{rvI{L)U5i)*GZ{Gg3V2ev$9Qgi80Q$0Y#J*ajbodmQT-d!tv>?rUFj696pJ zTVT!j@JA2vhOuM$9k#v&07Sg(=DbpLYGD%U(tuJmah8aNn77sI9&&Oi#aj=A$>z}Q zv{!a$?KTzAVpNJn1u4oM$|xY^E>JEO_@qw((7r7u69&|1?p*G}^)-Ck(yJ9d_^L-j z-6=nE;Fa>Y0TwQk0*B}w&x5{!&|Tq5Y{|3@bfvO7CEH3f>r?ScjbTNmfAw4TazVmp zGdozh`ffw$J$x_*=Y<~<&%dp5xaOK2FINQ7ud`?CB4M0#)u(Wk0pT@3T0|`mR5vnh zd$b^x)l&RJcNhqZJIdi14SD&psQ!@ZLA)yYuJU-Vd4`T}o(mnXF~BLnkXR?f+N35q z{d9;MY4kWgmVrn;3+oM4+oCa$@M8`8OxkTGXG&Ib_<%Z_vD`9CHF7tNDt7?-!EBJc zC>YycAw6V@D#F-!6BvN7lRguUvaNEWbx~ zKSqrmUtzHZ$cjp~hrmKo@B^BZ)~99jrxZm7upI5tVP-Lj*h1N;>6Pu5fQ-;=q6q{4 zSk@)146blVfETR{qmfZiYV>Gg2_Rk!;FZ~qMN?#x*cIi9574|!2A1eMbKgw&%FcMp^4JRvXepZKGG$}N11=>Y zv<3#6Z?MBt))s4FfYu~ArN27?x&d(rU_@-XZ~2@ofF&Te63`wCBRu5@isoC$$=t(y z2?~5(ag|zpjkp|7{e@nvv+Z(33Q`O_y0VDNxnIZrN(s7g1Nsf^ywfd}P!!~yxMPPQ zm7#;Oi{YNKg)k+J4Arcm=17>H8mPYRrqGgRzf|1u#m#!bMZ+CRzwWL)9M%PCD1{mD zJvecgpUS4p3n)`^pQ4*0u|AjZi18$hengSPGI{rs?r2EACk?tMO}z{Laju}zNTz_P zn9_lL(ra`gd1iPbnR3h-+w#QdNh#GV*PwsGWo17Y(cb=zo$H&}g~Sb2ze(Ct-0TxZ zHUJW36g~*o1@$SSH%b%#&=ZvO`Y5}CsWmpYeP zMF;e1e**fg(nt0auhRLIs}KX5059ExJ>uB)H*LPlycn-O;HVYs+r8V+2d#CNgzaGX zzTDH!)q0xmXmZ-5JQVbULdlwU*nnHZh;qEc@+JU+rh~_`OI>oOxWg6egWoj&s<32T zmK9jB3gnw;lm?GFemtIz$zjsr7K} zml65yB3!r^{UCLC43ovw#Uvlff_K{OOf!MLkhO+Y-uB43Wi{iaJA34>{RaEf!4bz-Pupy1+B$xqtmLFSgsDvR6h#PtYfuRBTG-%K)Z6a(mrIakH=4}^;HXfzilVX zz@LXFaAlA;uvMX)_mZf3g4DKed*MAh%4WJ!4ks~<$GQ1VfSRRO1%X2dZ1rcNs}DU~ z>|u09PiDn)oOIJv$DMI8(3~trq9RTKrj?~va#Q{M1-W=FMAUgLrMj#XIOW%rI<66eGb-%AD*|(V4k^F_Vf5NNO#1#K9 zWMkZ?zqj(?7>l7Pxu3WJ=q`f&99x8*qghE(YnrdjHVqlCd8YimEp!aTh5(56YV(gz zp1W!hK*Z+ILdns3PE?TT>Gq`T>b^5Q>v}_n)B%fhlwf|@wyzOBXC(fyEVkL8htsIj z&aDam$JALZdi$s(WXdX#Fn0g_%^$WA5a9-zw!G$(SL~1qNiYbPd^$mJ{R`j*#`hN-3&0Lb%zVE4sEIn z7Wr1Fcwx|{!vL+rw;v)dRj8e9WfIR9j{^AWOS0E9pvQEgXpsQv$mgSIAXnb_7=t*! z=)!Mg$$mV*7rK)TM6md=m6aFI_$WZ~&z8`NBLo%1CWEVWNdB3cyPph!qYEAmS696F)^Mx-f&K zUR8%q8G$&qIDrDxb+pJViwi@2>_a;0un$5MWo+|1@zM)X5~jeMTUrNDn>1*5*=bae z52YR;2A5pF+U~3L{iORO_(wuHiGDr-3{(Gs8HbgRgb3c}Tpt%T+aeN|4|Mw$h1*q9 z{hEtc)$=HDizCiVssw<#t0+xqV5wD#a3wGs%S-CU>dvKLCeP1W3K3NvNR-mR{)9@V z=wC?Ydy+0yYw*&O^*HU1IzsTaD?S>40&qHt8WOD5S6p~1tz7+iVg&&RB90;Wvqyr& zPk+B!@eTH~2f#&o=I6;%Xf7B(tET%Vmc0SJr5F|PhlnlEpXbMAV^$iUu4l>1{V#>T z4@A!=2k+|6+&d^zg1Gcu8f%#Gz6PTfPBj8ow%m2BT-)u;klQ9zWxN!VzVlK>OnF4m zWi+ttGN6jR$s#)j)5Au{%N45Q549o2 zQ!1#`4%=Cf-Q@=j`&6lh9XX+2!P0D_Jv%cLV4PtWM9RK8FOKUy?&#+0IUFug6fuAM_9HI3UQ1S?}P*ENgh7`i&3QtmMZP zi;In7cUr^zROA9Jp(C0|?JPF+t*61h%@xR!<%+?)J^jHBo>GOf9VwKt6Qa4QC&`U5 zT9p{VP%?*P{yUQcL`oqZLi^g$QAw z8YyUkKI*}DT!zWkOpj-WRrEPcl_9`WqWGis&%&isO}eL8<`)E0kiY?a-Cus<0Vjbf z%^41Qo8SMKoz`GYEXi?%$Na+CUiIBnPzDEhXgx3gGuAs^PKb@GEKvZEoCi=;^yL7) zb$r+ciIV3_>j41-^?1NZSS;IR2^+x}p|Lu2L>~$3gb*xOgb*d7q)}!ZOY7O5z{nqkXw(?<)k_W&$pf2 z7#nY2qj|@lE|w8fEwSPtF>UivRc=61`(Sr@MNdPz{XpEG%$<-hgCOa1Ddf^J+Wm^ z;K&{0{uv4`WoR0hN6S-KYI(XgIC8OUzUFfByiG1u74=kQ5I0I4!#c{`^YQ8XPCJoE zkF(V3Xn2?uB!F8x6NLX=*$YMeOyr@t}*nCg!*A#bt ztndjgJ;WSmrhZnWLIIyYMx@QLJZ1W4tDwf9WXkr* z?cc-}m6+`_dfk-}Oc9*@x$G~~0muiV{#EJ>G-I!`^=Ai4sYFwN&Bqoq)ePKmZoPy` zc1cb_fnlx=wXV6#P8Qx^9Y41+p_m@TWb+Sr1oA)u8soOUY2I}iLg$G}$wzH_tCmk~ zsR+;@E;>H4O)Qt;S~bVN3gIPh8}=ZjM9|IC+Qs^lo-{WjUw^LBDj!;S38cTH+b%%! zEq!{$(bxc{D|8%u>C--Fsi1>qZKY4H*Lt>f#{y3|y(kH=NxSQMwBvpK3SQ*IfeF{+ z+~O$S;ljrNZ82#g&t6i7AI4T~fWeWM&n^@&5~83ZYtt=V%g??Q#fQfLYJEo=+bB;#)9hqj}hQ~^wX)7w%ZCVo9I z0M}LFKyd8aK*Dkk4~pX4?c7hx8%&p*uhc35T|!ju`B9N6k1Ao30EWs$K>CR+8!~0# z1v?=xTBaJ`ChjeIcnY<<0+=>LI(qQIdzof-9hC%N*c3-2|BfL8_dTAN>40WW^@P4a zsSGtfQXM-Hm^qa&X2_I~i5L;Tf2c#|l*pf|J! z*llhyQ+c6g*6V1oJv8N&X`CE$QMinsh2 zOfC(4zmz{FUw$Ic;Gziws?}eV*kuM(%1^q(4&(7t(dU-~QXWr%pz*1Ub_%+rKY-jS z2lo57x&xPtn@m zI{%W3%yxK1DTRo@6lc`f`ztZJ^xu<)I+bOKbd@uu_i1DybOjEA^(aa>ZNg?KM_#9u zui0fXFszr=IBY;@mF2pr3o>JIqDFM#Q}WyELUsre=(>WbENzR-c_{;*aKdU?a||xf z1)R-n5A524Xt1Ep5_P;?xf-@s4Z3>W>z+(W;9IN`+Yhs%`366w!S2uNlE2m}>3Z;x zHot9pe!WqYEu4pNLwkSqyj&ekrc0#yz~L+To99US1N7%iRDXEzsS7_KApt*-6Nt|D zI%&45%>gxge4TG$I@Kf?NiY5EhmwrZ8!bPy?{@k%@$*!h0-b5QIuOc_eltMDXM&(; ztKKQJ916=$YcWUesa%H!hfUz!6navSjDA>?&esbrrPSjR4K~F=Tds@ z`7Fz0*7Y5&rm%$HbdKZm9F+H8K%vY;GD!Weoc*wHsjHd?@t&9*y#&~lbW+Z0)-|@} zBd@{{aTPmXT&ur<41t>KB{Z|w((>Hj0dBgJC$Us+W6E3=uCEKv>m&+ecv(n%0ag$? z78fZulWz)m_(up^dBBZgdBZC|vd$c82=Dean3i&Y+`u;0r-dKUI(?L_Gnr8Op=3!c zF2eB=_61$I_%r`Jsnkuv9m%n{Qf6xb!QY!CS~%6L%LI`6#lg@c8&mqKP{>Vf6jt3v z44eNzPNCc9z&kwSvCRStw+PrK-Y=rjCpo0q5}kmk%xXrbPtuaI%%s^3P|q!ua(JBM z(u6GY+(yen(0g@M%(UnK1-8Antr zNjfr|WzuWlrgiqPA`!%NBUxvcPIp5^mZ-ms&L^Chw@t3T=Oy#qk{q}MgfHhqcrDWK zpMOmV@sN4udTa28UV1&W?ixS;?vfJC0>66mo1fhL7ZCv4?kkuRJIBeVZ6d(4jYUH9NbD96zIv(Te1Gg4yd05=AySy4a zQjz%#i z5^%+_Qa=jKr(-6^7#1el?(i)DT&llb1l6Nbr9w1z zxzs{x7YN@cMFx1oFvbn}qMwu^Ib? z8GR7fq}0J(kX)>VtXJsQq67-Zf)9*LitE7oUS#~C{$wQYaGh+uebL56L+36DPO>{aZLuU`fHnhg{;)4xGZ~kdg$#g#w3<= z{&)nfi|w)^2ghGY~7wDK;MuETWfX>YsAQpsy{Mxd+seAW#2@F9RJ=`u|z`1^LYUK00C zl@^CSdl4XCw|BuI`H%F=0(^8S(3Ye2LBfv(+U;`eDd^iZ)8=YXyMJ^bMV;w7kfY5_?Gvj0UOZhQ3mYE@{{-RM6Ul#ZZHpth zFUNAPL~&11b~67$(#Z7jHFO1Zmvy@-Z-VT)zCtL*JtP6E7BZqbcH4(DpFjM6Cr|tc z{jB3Bi|Yv9SBQ~UAW31RNDH6z_%Y-iszcyZ84YXBJg2foatB%m?%ta z|L3RBmACjkAFCBF1N^lEX#ry-b6}3G1t>{j5;iDj?rHh;{CMC^1et@?DkQn7A|pt& zqv7?9q=N-viDjO4c>lc=3zB+rYG7HYzr-hYq7Aqm=^|lx*>KX+CzofMb{(f^nl^XM zYuv)pNRSXU^7DSu&X(LoFp5rD3zMCyV_G?Lt4Y^X0D7cP?C^@rl8L6=9<$~_%? zw>4w+ICK?73zC%B`$2Z^pnzU4tviRyK3Tx3Xi>T^c#*V9pS0h8AMF_{JUM6q0EIi$JovlGrr^6)IRVw}rvJ5pcV^m3-s^l=U^7w7 zzQf$JJck}glX`oV81+u;r*IOiUPWWOjM^+OtEg3S{a>+WggOvEWjE>6{uukD*HQ4{ z^686%ex2tWp@z1{?bg-#J(=iMPFNv0E)b?QPJRTfqoLhP0V>706(30eV{THe!{{V?AR@Vi zm|}Giu3`w8kFjHZaiAK&2J>Ae|n<2rw=+e6xKbU zRMOD&*zYikx?e%P$A!Cplmbh9dntg=i9jMf`C5Y2Ozb>T(bOjk&vY@K0@?xTI^u!NOjJK2A&N>EzC6pY z`R2crC%-szfVeb^H5@USWjiA1@a#akS3v61I=!`seja>@xeYgc|$yI%5wl65^=2 zZaIAo=DQ7wbEo!2vy8Mn^E_QgOD<2n9JJX*0D1>^85{dt8PrWmM@XE8fzpa>ih!j( zp_0A3jNFNJh19cg|Hq@Egbm#&^)};9W{hjPPNZUzkU))u(CrE2*Bp1ZQ4}5uYS|)u zCVb^0MaGAa&>y{C>X^l0vR?Bqnq^Y;ndmFuV!K*TwE=?Sx4UHE$o%1}jtD>#p zd{S0Fvq!U&?N*ea*PWV4=_(5}o=Y>*iDnjkw7i(gIb7;kVdAH#hhtg&-oGa*^Zrbb z96e#Gco!Y?xX`#eOKj)K|1F?~@MEVa;GNS8Ta)@nE^?|}BbmNFt{l)sBv6UUPsBuP z(>W1JIzvpR?%cObl*{eX6FIgaP_1xdOoQI=(dUQ42H;B1dnw1+1>LYk)Pq^%8&&p% zH1tO>0oqs5umep~R(B7(uW6s-b9^LFslMs9vn*5ZxDzp7FHIeH8^=mHJK9N|0pi$Z z0^#!taIYX^6=CK$V+byw3@xjdkw;V0DXU=&=4DiN0q`uy#8ptOM{`QJZ83^XD(c4h zIGdhhVc|j*+a^llSYPKz4bc;J*U=P;D{rB#W1NhfkGA;qtIcT5@0f8BlPk^IyT#Y- zKaa4d!A>uo9g-ynYG~o!qlF!K0AzGxGFB)gw?HXRA{wTiG;U-{#|anAwJ#@L@p=;! zgVn8_sFmprmBbn$P+7OrzA_oOBd*V@U#Qie(i@b|N@TtLO zdB+%CyMZNh#fM^=u$}`zyX#ig(WPq>zMeE>C+<$gCr{reZi*K(o%VN^20kNYxTbA= z-cjMe`vLD7_tJTflQi=_Q@SOKnBuOl#4_H~ilDDr9JoV}@A$gs+*)?Z$(9AV!=J^= z0on;Ks!@jyN`X`Xz#x=2J;gs;AF!m}O4ZniGlc;)Wjn=^PD=oSMqMLYjc~dF4w7v% zb5C#~K!JDm9pW(z(T?MHvH1D*9WSfUFe+m#RH~zf z29bsYoDIWvi=m3Gm&S=iSmo$@GnjK*Vb3DYFkbw`coWE%eoMB zoBJ}sE5O8`AZOGfz8#^ zV<#z`a%WpQfoGd-D}R`FRWqOYz5_!d!pZhx6*7ii)OfUfid3Fy7`03_Ny9H``YBcq z_N{6v)Tyyq*^?S^^tc7Dav@U&Pp?^sgI;$ZU>;xi1OB?s_2cDEAMrh4li$H$;hR8} zvcY-HPacE?F|CdBLrm7Fwp*x|wu&*=V|_O@f11*)(P(W31i;(Q6x8D^m?~Azr;e#9 ziWCB**3`_8!QEzC=_+VzydtYNJu)|o>(mP3F+fA9jb)d5&zu!epB!thzT|in3;~>M zfK*M;!HS;LB-b;-`|SuvM(uzs#MrwRlP}_m1dpg^bwr@ouO9Iz$myJncd;0HsPZI> zXj(NDH9Qw`y#<%em+T;1wgOP>jkOUlL4Ug98lKb1(aSKfYU0@>PQ zpY2mofYd9GT)a_3RXZvCNq48@GwvvLZGgvG^vP&NIOSnnPp{f<+wt%gN(pLej)s=) z!nB3^~4%UmU18AdPaHT^5i^kljRnmq^9X?5g^q}$EUUT z^57=RM7vqdz43gX>b+$Gf;Bfc{g;lhLa51_UdDC~Zi! zJ=AolLm)*aBSQ(4<>%$(d{03>(=H89nlB z36FWu#m;O_&rec(RKL+13LHW3#t4fiXj_({Ejo|?HkqWmi7ov~Q4|FX>Wao|b2g5^ zNUX|`Ngw_mN^G0-7(!#=UYfR!i9v~8YSVVbr^-!oQ>AbQHtP&1`XPl@*DcxJaN~vX z4$UFo)@uHJ>mz%jn&ve%2?p6FLJy2uZYun7di-h;`MYpB>lbLsu+MV=Z_c=CMU5xe zNNBouugE_Egv!VEktmYC=FE4hw~4iqr_;N<-zk9C)FL)dWpr+id%$vx_*Z9oYK0_v|z+@@ZKGHE|<4}(%t z(ChAzI_O%#M}`j7A#c{;ylNceG(cYo4{u8p*)KhtEEbUH0jt4~#-!cCAq&lf-|KI& zQG+*m#fPYxOD&WI_j%w8%ll5rdgqSxyuQss88j%l#}32cAXpDk+p*nau0n@5uw<#A zgE}!D1p|1K*;r@XgQ&$m*y5;EZMXq?Rx!L#S~_<(B`T)9`mejI z^r_6F$%>G%<4v2x>?7DRL>ExZUsXNkyq)@X!#4<=R6;u5n+2!B={^Gfohb=K7ly!m z!^O?U&23=vuXMRzEr0s&IaPp(jA(z+llm{*$6t^MAWItz2av)N3LE&232o>%OKu5A zhzNL;@K=b6`hQ1M0Qn6dSb<1KFa$vVL|9qw-7N&ITfLj7^w+twFF$oU*AKkf1*V%l zpYG>xZuOd_Z!6s}S6|N+f4Dhg|Yl2CF#RG@>)$*Ls=Rx)RAIUY4 zSOmu0>}+gY|2n*1-&4MXwGH$l0RPX1M+5ZRMnD6;5PcUkQVMUdzk`6jtDqHY^r=FC7(#zo38w z34Fu^7sLPLmjWwE$=1VY3|J5y0}JnEkr@+wT#{n~Ax*)p*sJZK%O{v5WG3iK`|{@2 zuuA4)!D$rpTJMfi*&3Onjw$}7ANAMj`Fri>0w+3<|6=w23_S$-W%B@i1Rybi5xuC` zO(4^3I*8v}G^g!S1nAcT_aFQY5I9k`3AYz+<8Qu|v4b(jy`Wjj{{xl4&C1En&COxB znlLU!$AUFzv>Y5kqShV!2L2u#fz8?S6P62_8Y5Iq03!mhUUFI3l$WBku(cyp+F?uj z9wI_ouUp*yAT`FEj}7rhK&02kH_3!`A?kzSj2TO_JzUqoCovTIr7MW1G=QSF9L(3v z4aXgQuRHzX2s)EuUIG72bs7N~Mo|>Nvg_)R5|zr&dOE1wf~o+NgyS#C8TThyq-l$Z z%-7i=vt7wO$z7^V$d}bF(%3KUk4&$4Pmyq|*jw#X7=>GCDQ|`na&mAQ=2LyO1Z13q zGDXez(>x81yI&w2;jd9X2m%n+jadRh_A3srN~pqVlfV`&B`w8rOn1xrrwrD# z5Jd<(;Vd@$Z0Wgpa#*QplOZ;;RjjEHNXK2P-WL%MBBB<2lATIb`5FLW_EY7;UP^h8 zAa*sC_ZF*-w}-DF=LiRD3|+t76|Je9rtBPfesZ50c$`q%4rkPEH13OJcN%Zg@j{&= zn~eg|sZ%x$$5O~bxcqxh%#Vm6FSLC(q*h@~BwiSbG2OAj=#NnU9wo!u^E$qQR-5S8 zY6HJDAYcP5MHp1Y&Nn{bC@M1NR=!uP|8()T{vF({Qk+d~4dO7>agmhm#pYsQ=Z4z? z>SX!)mUUXgcUrgrSXg2{K98$i6A6@wiO=c9rlAgR-}at*_%G&h+Q!4FjeJ#ET&y@v z9Qmq5YlrP!C$DWfeZqBhK!sC?D`Z9VYy6!OX1h;x7in6c@n^}x>NbtqMk7o!Q-9?fL)tPpY1@qgL^F6&spy>id}?M zGV2sR#3(Lp6~(R?BRO1kU_Q;PGVSX&NUirtYjJnzu7b^v<>W_cb+G^HWd*tttB-agL3{fQ!e71sF#L zg)Q=5gSq1W1WtV3j_-?_Nz8lZZ*Qw-2QqKKlZo#$i;Nit89M7js$fDEc=+L=w_d;? zAt4enf5N1j(?_ktgc|dAO#!pOAx#D|M4?DR<3N6js}?}Y&dk!XLYzqlSLs7hF#)2V zATkijmr?9t9TXZD6(-^I-dqY3v04=s2p|Ps??dzh&q-i$fK-!+WDEgtn$`I#1~`5* zIA#<@#=C`kZ|PtR6qLaK6hR|Gt1uLRga%MFLVp@92)Xl5Q-@!l@Bfa8ba4JW%p@^> zH9RIgD=lM+M+O9^0>^}ZXB6-^f(uX>72+-P*LNJvK}t>r#NgmgIg3=n1lvL=B}B|% ziqq936360Gh;t-6?bqcD3U>4g=zOtuK>M%A*o6Io%-@JZSgt8{sZ5G?lX8xDyaonQ zesNg*4S^(R5Cp8<-f*s&1hL()Q;8rNuv$i3D(qNue?PMhy}b^?XVTd+W;)U`Ol8)q zDW^E>KxVcX0pPka8sYD30Qe&U783|<0E_v%MLj6nCdC(M1Pe#=@xROf%YV1tpc#N? z9Fky=LjFcSd_FAm?cMiZ6LI?6*A(qpoz#@&JquFT0;e!XfG`U1iy#aR0DkzHnRFbc zuer1z{{kj4E$Z}9pL86hk0-}il4wh$i_rX&|90K*zD>={@M_KH zb)|AkXZCK)m8CYivds)prI`eNnf%AkEb*c#cZLosN*7?S2?z&g{5Q()eh;w-5IYd|uXx`7T=)N!?89xgTewS=_VsUQ zAECc+^QbWMPw5AJ;w%3;1__9X8(_78zbW3pUMmC{K+e}@NTdfQ8Mve|ebg-OprA~B z?n|{1-yDr65$C%vSWix!SqtEcw=(9pq;((ElCnE_mn|r3GhwWekRZgC;A>IgK@=u3 zzMp5`h9MVI!5fsJ!#wcJ&CISFGIbk;pKig&cc3m${H#C0z%2`M)rc`Mv2bA*K_@Py z<}Ps65JFX`!yXF%;imzz)9@rV-_8`+GD7VIqLG3a2WSE)=(^nj+R)oS{}*N&k^&15 z9HfD$8Uod)?-&P)2>x^qFBD(UAc4SONSePOE&Vf7{-4(ahR@4$;NL(?;(xUoM*la^ z5<3tX8xr?_Lt3H)`~Nd(iG%)MK}+P~Ie()o{e~-jpkh7?xK3nCPQs!r+Uczi*YAU- zaOn2VM=EGW_Z*Fkj5iq3$iaj9)0$F(3#tPvpCJG0i2X0%SyVXvxF$tA1&6=!S$u!2 zYL1qIQc+I2ZborVx;6xsq@+?#=ua~msO0xZNC~NApeU3;Vf_whg@R%Ukum|CM?r~z zNQMQ9fb1fG-l!-j6gKeDlu7Y32<`P_87e8Wtdk{}W?(=YG~;6o!UROd{_A*0M4&zn zBsNq(ZJ!me6BXsn@64ID!v7(GNbIkM_x~P2D1cOj132f()W`MhHoOaE+g#c+ons73yjE$nDCJJ-G-<@`V9aoU#Sby3rWal#eOhBc4SepM244rVUxxX`X zF0?_^<6cJ2Fb#TzC=_cy%gw(Lb6A<#7mUitWRXk}$!AndNjYJcFd&kqH%#>xx{(wi z^YHu;5c5`0!EQ*HliS<$#5Qx2tsy5 zMxhR%XT)Fq`1R~%yQ1?cemV-ocz$YLF9K|FEPDr-(bhJT;E`IVbPDeh%zdjnnoVoc zlhJe*n*52Pw)%AJe>!NzSX>rKRNE}?w*V_iY+N<8dH2+=%eXx6IN!G>{BY}g^upn) z2-rGLYn5L%EMl0{)&ZF@1ucUwYLY(rE&MZ{rvSk*&IyGpkP@S~qPS?ljue8W%KV(M z{+9Va~W?^?xX}_z*r!nK~3f_I*+x6?lG%Kmfdbhr$4E0;HfpVWl4+g7SAg z9mD6tqarJ$S?*@OpgDG9hLFSKyNq%7Z5%OPQwpIVTY!R8$HJpa#8`JL;f?;ly zfm6-^?-mHog!%>?7P#JoObx&nPJ<4M0l$EyNIKU4z!8dv_ZEef`51iaZ~_UbNVshf z-h9HB!a64CuCw*li%I5ruVKBB*#Ye(Q56j5Ri}OkZm7|$=TI>04YiK9<0#I4$9vK@ z1rsPkbKq0_!WDm*pa0GK{ARu)HU1XFuQP(f+WLjc1HPg`!UHeuKo2@mc*w}Vv!w`_ zqpLT-w0Ceca(~K}Ku;b2599sJ1WKBQWa(-CKJco)L7&2^S${*H0{)gQ!xl6PTPv`` z?(6{&@Fak(rDd`B)1E_stNU{6Zvh`%PMzu^Xzzuz$E6#-0NAC%*M zem>c~W%daXcF;}f_=7GOy`MEOnUa>Sp`D=-VnEIrZ7GaHB0>I6C4!ChiuFnV7vW=z8UXw zebWlro>*G?xm&hYNQ?rTM%3!R_O@}U4|2AooWrQp!RX*I&vNE)eiw_KV6U9XY$9Oi zTg#fOPdax+`;=#wNqy_f$HA}!Ie}ZlkJhUPPy3xjnrgEtWju#M5rEfIrol~`AVF2} z4y@c^2gDRLeR)4si%sz*1mf6gWzlyW&7-#?}JhX?+yTGvE? z46b-fsLoqVzKH}(fo5q>Zr8lyF3O9yIQRY~XKa?3TEt}tWIue6P$Zf9RK+5z-!6^( z7-i<8`N8N7pAt-TSP8sHbGGHloq#axM?r}^kXE;(h4T_?_X7msT;v^)<|7OQpaEGw zVzLq$1I|Se4Ve%(VHfhg=Tt;^q>S%;;_IWc+5J#G$c-O|EFkwtU!RD?5~^#FO?IcLO8@F{@N4&>Pq;Lb z0V{G)Y5wbz(@=+0_0%x zkHBD^rjPfBZ_Rt0Qd4jX1^1F|s^ooake8pyZXr%@Bm_sbm!N6iT{}BU>*tl5P*|^zPHQm%PHRegmO4Jo<@^eZ^ z1L`RfW#A)6Xy57UV8@lgK^25UW2nsNcxkngzQvhi6eCMb*Vpi}v(oU=8a32#`xJY( zW{g1W(V6w4b(&~)n^=j|2i%|AiN0UW!wgcinAS03OHf|@IM}}w zDkj@>cU|pvcYU?_;PJTN)#ByO#n!D-nf}08E_WVPwYoAuUEDW7S=fr89Q6I5W=j-; zXA4p(Z#CYCXV~E&q2_gOoMUN?V|9&Vc#VS&C##skc=0uRN$8F#-R=!i`dPGrssfPG z36QeCu+b|xJBK%iG|b!)_k)H8A1WkVvNvPlD<1pIU}B+8SWSIsSG|SslTa^xD%~~z zP#Qk}*bjql^%I2b(xfFzh442d_)@OFlz=al5nxG#2m)7(vBfS`rPUAV%~e z;#M*o(9KTx1p|#rNU8-DOUqMFYL#}urvcQ1A53JjR`V#&Td-k1!!DuW6gC9lxb#Yv zx2bL%kdU_z3_vM=ImP;cIj_1U2hX#8(Rd1Bl+lZaTPQCr8TqqAPR#a|wQ8#L>?T4u zLF0u4CFV*#IOW8obwqmjG@`D9>lwym>479c^f%z(aMh(no1Zahj(VjXZ* zOvB(4FWP9^*vq#16tBOYKv<1wh!fsuQofur{6YHOWW9}k!#hZ-EvxU!1wXw8E4xhk_Mf5b_Q8-&A-%95f3-v-kR$}8odL=ycYxAk(UDm>Ig+oSHlOB)4h*~V{LLyGB|{{ z?|DCdA*w6}%5o=uN3476Ds3QCTSbH7e)jnyD@scR#RS8ksy3%LyPZq`s z80g$~UAlXCXfk-(SZWyrVwdMR#2@3VoHmCYWBRIjT4V(G(JKp|=$Z~|;T`sT=)|J9 zL(lQ5Mpbth0P?XzDB~GrLN;&(J9YlHe#<>Z3)IyJrEcNDzy_5woN6wNY%}PZr zJ^*jD8t_0JKOBn9nupynk16BPAIutEeSN*SlW*x*k`4Hj_^_5W!r>p`jk{~r+$Tnz z#vp?SpoXLFFDz_@{?bbKmW0HYa@-<`)<+>t?R2dBJbBA37IF}UnwKX@shJ_|k}nyx z_|9a4w3yg#gl#vG<=h&e^M#+BY?i@&(Fz^EUap5^;ikN^vZ3I3Dz|cq@vd%IY7}ef zdl4P>4-zULZ&e9;?^Ia~o6v(o?({a^{)D`EWnd?c|E^A_YH|foLM_v#u$pOo#BPov zc;8;=P1|S6(l0Lt&mK&5{&zfN0%z0U`Z8yPt5~Sn&dOp{5wZwd8CO&AN>db<|>A`PX%MuhGxo~(!l1TGHU`z*KE@^U+Yi0Ls^fFGH(FsiW#JM46voh|jM+b@mNC>LdMw zy7T9ByoJ<)wsuLrnhZJTZu9kf{64o1y0HE>`)hh+6JG@3wI%#Lv2{@TgkD$_{ zix+m}kQ?>DMyeX*h&YbzwTG)=R8&yP4RhDgHrwY-tgRId$J9OyjO&6%V$Nj$B@rZ3 zSj8MnKpzUPi1R^%&P!7u9zQh9u_c;haqk%2(psDwWf%pTs_sFT24vvAz;fMj`l;+l zY;t}!^-CZrj6C0C#y(sicfr-mB`!y$i2@8G&_UaMuSaD1gr^xLEdV6@Hm-JF0b58rF)&mmRw9BKWyoIDq z&||K&Y#B=FqOAq5({YYwBWLo{Y7`u;Vx`H-irLgm?>Z0Z&6yB|OB z0760~d=N&ny%P%6=sdtoKaLABbyy)lU3A6COo-FDyfTD=4z8Y34y-udA$1yB%pq*e z68U}>GM2H++s&jAJ_=S=aHIKw4h2VN`>Rak(K)&gjbg7EUY9(OYLBb*wS~nZ$IG#5 z2r3;}VT<1O2koD*LzfcIku?sY!tv=00r5ZIjqrNFVR`Cr2JY{s^CC)~6ggJUN+BJo zNfY-B(C@1UPr!-(M3E@)j0s?gxlA)L=2z8YYYN@lU8LsOCXQJ7x)6>;QCTj>b$1!U zDx7k1iz4-g#R?~pp}o4rnzhglvXpVPA+jddQH{MwYj3HiT%=4hIjX_wIt{B@6Y%*^ zGpLe3(CMev+|YOYRZ-3Pekhd#%>cnn_2fL}%(N!Rwy!f+!N*ra+LwX(cZwhq~UF?{(<$nx-{%V z_~2W6`)Y>Q(qW%cw_%b9|J}Pnaex@g+FNzV;x+snPIA?BhoHkz4%0qO(-h6GlvqrC zix92SkVCSRZ#|t$8s44}!(#2;f+=&_=D@ZKGRjBse%K?d-dl;0px|>Ny0NU|5}y4azNC;p{0-_%!}@}R-2}GbB1;- zp;gc^9pZGH3Sn%sd@ecqo@EbG}7_R7r#n0_uRhx5p<7=(UjG zU$FP1PDKbagfI$BV1C*Lgj*UeEbD{*2H1G>LRNhivG5wJmP~QbD_Q6Erd-kZF|ze% ztZ8N4%2-_OPRX+rO~vF(Zw&5c@(vNURt@keSvwQ&uYduxtoFL$6S;X~H*$yOoyG9& z*!a|X>DSTgX{)t}%6Wk8RR5N1(wSe#?EzkoddM7}b0^ zyN{ORR?8>xi8{NrzuL#l)KMC@HOB9>Ka$cMnbs3D*iyVshNS_t&xdje?;hJw>CsZ{ zbLmCZ*Giip3M{7wdVcPCr8>qmAIBc0S@_qiml{^Om6e4MgB2!(cRDN$If+E9S}e-@ z=*1;u>unb-XAXec&UPURv4e7bF(6g7Ke0Z{2oJE_IOD!kRUP4($Q|!0>HALMwnrX& zq&ODLD!gD(<@X+71Z7Y{GRYEndSW`Z(swvsqPIHoh>JWG&qXwH)*U~LpDeT6>_Iw- zah`*OrmA^Om@^|AKk6QLMCBxYh$nKFVuF0ht4fj*p5mIh8X*aG{RYeZRrY1X&I!vp zhzE@?3Etm$=F6ntx5*|-sm7x*4I%IVnoKD3$^Y5bydI$$3wDQMF^L4^umJE#YXpKSS6elfE%4@M*0yYYb8op(2(=(*A^%}+nSeT|gV z+a23Q0eq<7=v|Ha@xobWH~Ts7+vRZ?75HpN<0t7WqU``?Gs-)=<9U?|PtFwKG;f$l z$rvi~q(_^fq@#tE?*VV8R;{~RvPu?u`bHl$^n@7gA{gGO8L8%bLnc1=jr#VGc6_Z$ zUrU!9UmXB*6L+sS`9qwp*Eb)*jdI61!2N>B(MVVrwj$&<|`W(w-zE$8@zs$^j49{_y|9& zv^g6ae;b97?n#-j6(7IF%5Hg2&vA-eYB5?OvZMW8GlJPsN%OtZ6yTNLf+n?R0Z=YB zU-xnzx@=wZ$jK6+1TUBf`G|OCH?Xi=zrXVpZh9S7jT(HZY}Wc)S-pjkOsCK|52+L& z&Iu}W(dWiqrh#&WkQnFYsu5?vw3L8pKwXo{7cHnGOC0*ultDpD@W*Fpcm9$hDglRS z>sP6r@vcV)t%6`wpZz`&2ZCg)ldA7ea-TLL`I$X!meC24?KberLk7*}CK%s{(sLP9 zT$n}~2QSmVMuINonf+spEbJAb-L6D{WGFpXyE1!0=8?1Qhh^-;4j6}pj`wd}#th($ z5>y!5@yR{Xlx}bz}<_OhF)Uvp? zeUf&IHl}o4aA7QL)_2rK3}nzrM)X`3;BkC*CtiJ!$;Znx!zU?Ls&_G=qot+DJ!ib&GBHgb! z&D37C^Bz3y`e`HYc*OdGM%g;)unQSP6aQLf#yT0uC8sAIc%|#nA8{*pe(q1;7T5nOf(|A zLD_SwPW@|+(>c1cohF!`61#rud34QU7l}qP>T{PFevTw3EbzNjzk2d40$zpUqrF_74L zYy*qH))_%SD3j2A{F8$79b#eQ3wcez%2h(AzP@bqK>iWuL?IyG)KAU`VLxEdi(ORk zSeS3=$A`D-#0<%@^-mgXw=<>YrlcRn2~yriV|=h_9DmnNqXGaO5T*mIbMJj0O~-w< z7k5Xl=qJ9GC;zQ{=B4Ig!nZ~}XV^ZY6 zAlPpE^@TImMvCiBd8zGKy#=sS5e!*khGC-!J>A{JSr#d95V@L+4O|y1$17g7@2cU>G6c=B{(qY<6Q3*h*d-Y^m=L< z=F5s(K7se^6qfo3HqP|pOOrala!wenrh2eRTRX1FOh6-*@4~9)mP#OZ(PIv~nIJ8) z!IEUz%6pcNb;bPhf)3xrXs;C+3pr)Mm3;R;BFxgfpcS5S8O-6}7cbIu{A}=<%GL^F zU;lX8rBsHtwtbdGx9#RxAkg-vJngVE_&bh_(L}~6anZx>Cq8Awz>~{jZNHNjij&wT zJ=4w8B7A_9JcL<*hhYAFxR12S%P@obYyHDrB$X-RAl~>Cu+k)=#2lP(hp@py0I3nz z6n(=3;?u?8)7rC;Y51U36KW1bP4}2|hu)YC_6kYVAbVajCBzj^UD) zL^QIiR<=V6e*??)lLY#^A?;(Pj!iv$50`LL{2tQJxly8g9EMZzJ2IR_LVi)nQUafY zNA9*M6#K>HM`nv=Q#7VNHn-?S{Z7OGYdVh^x8Ey>?rUklBu?UUVF*sI^{ai zL&^aRAn;!B{sb?G?xv!_1s`>jd}ic&8d+n)uS(^yIRRnrJaA6eYTsP2_P%sJavL^w zMX5@4HYDr#1yY*mhwYA6g?8UYibJ{A)fRtK%5A=Wv60ytJFp?|%CNx}l=T@a%+^fB zBb*LlUIm{iVPcup|9)8ris~a4(}|-WS+hQwco;nKq=Bp4b09uDx5a!h+%{d0Ioh)T z;q5O>$coyb=kes_At8s9&A=FfAt_1ozE0idMt2^I{RCqTGm1vddHt7y;;&*tP@kqX zFunlhuhiK8ltKM&H;9Xc!2zZY!r%iD3t_AvtbPLB3t_T;D^s-7i4lNzo&SNRy9uP} z=7NCxRZYUn=S~HJ+x{o+TcBbRBQWv|?oCsoEh-f_JTvIWfo#CtYoMpg>V%7;c~@BBv0N zL>;(;t);`qHt<5KUTsu10X&I1NC!Dn&yVmfQK9%ma0MFv+&nBmPndK_Fa(YU3tw1ue1coZo8vwA3uwG}(stxqRkPqbasw|sL2XUf1swAtXmW}~P`#Vs zcfFgaIh@kdBfPnk8PPpA*^mD2@AYo*qe=f3F<|65bjNS8Kxx}ty)1B@4wgpoPhx>O zR+j(HgZ#frE8!Us<>badVpFd0$zLkV^T@uhHzuPle@2? zoKze5?+J1W!!>%(%8w=yxDpE~#W6%sYqnA+#wq6I*hOr}0EtfsQ?Tgw6)%IC#)UO3 zC^(#F@*0XX6teF-m}e1UZan%s-Iv?xwVsgOcCEa&ic#W{GsRDwwUyGXW{8)K1AswY zExEZHPSOTNwX0*h1~vb2xdd9hIK?lDnIuh4A>YbeV4Xa4i}`Q9qL-Whv z_HKqAi&XZs3c<6tixJA00!E@`R1q>yH>S0hsmD_m#mWL_7Ej#UGKhNUSCg|ZN2=Ka zRz$FR{MKpReVqfAEmNc8d7!H*EeFX@a z>#O%p8Gbt%bP42ILnDLk!o+{q4b)vjbAq6iNInI}{v9>?9QL<>r?E(XC20F+?D-ER zm{=+}l)Jms2fu}E|CC_nq-Ut6CFBd+J$+MxqYuWzvs}c(JFx^krf?DMw-`>iCd8Jdzm;0Ch*W z-=-&=Ho<-=&-Z5+ieL033;%FX`mWoS0`0S5@R}z+)?T{Vgjg-cEP_)Gwm{dp8Mua1 zrvDE~?DyDw3eS6FHNB~kazux(BQEacmjcBMk#anhPa`|lmux0N?;>Ht)ekG9EtnB?j^NqTV$))bRWF za99r8;5poT)w1KK%)4jWg!KG8mHzfj-I4Y9yZz#u3hXR1elCN@zT@Qj%IEo{&?Dhv!bl^zrw=?d2>Ls`!o;X(<^R%2;NsUO(tNTR z4E8h_Lkw8FxjkR-|J739Zs4ip#1psl?$gX)F74$JLN+T*wEkFxq=Q1{CQAPN`x&r{OLtfmhxum zGiJ8q$5<-}NOQ}<3!wE0e(9JHlp^Efya55m{)iIo1hM_06@qL`4PWunEtPXD`Czs; zqu>t})KOGo6P$WNK$q_jnvdHlh7j!i{^0E?J+P#v>$`XLLSDO343MHph!RMD$}Wh% zG6-*gT7U0&Y&Nx(jTB4iAh@^L z?YYBiLSWCk0u$7DSZsG-GFsT}xK_g3;hT=X#I7?36RBxnZ@j-WG;3f}tw4A>6lb4l z=d(5k2_XK~B6#EuQ}=M3Xtq3)Q+IbL-GLj%)BQE2{1g8&;#XURk1wN1OjaIMJ2nhw zi#UYzHK?YGZd3#_6A_?4kP4Ww9=Zj66)Y;NX6j#YKb8_ zbX1xJ)Oa9Nx_oGMv{l*-^t#C$_E|C8&EHqg(J!oBeJCrIWylaR9- zO9OP}ojQ!_haga)eUgFQo6s{uy!}T*;^p zK|z~RCfGJg_dI4iVp6@vhhtXjJY?@~M+N}Uf!Gd`RfvJ{Gx;OyvApE9E2%VnIh2Qw zAq9Z|%zGTXZ2#Uxx`lXKP0j>Kw*-4`mU_XQBS<%x9{kyUe%a5&N<@cSUvxNdBQZ&e z*zFk*qkIk$H!P8PjXW{Dib|{b4n3L?=!Z`(wjE$qO3~np5BNp!4Wd_b6`ULYclGWN8&iZ}SDsDnMLg{Wf>=^bn!cZY`xDWg~kQXC2HE9rVD+lXJT7ayRS%^|* zI+W-!F*McETG>Vf_6#wJ(8e9)f=Ou=iD?1zf5>~wpg8w#+ZT6t2=4Cg?ykYzEdhc< z;~Ij~XwYB@!QF$qyF0<%<#zJgT5GR;&OW!!{dB9SF1mpJK=<>1=A2`U-we@coq(}{ zuR-CLqyC90MgS%ojT( z$b#dxdU>Z>U6a%|9h%C$~RKY!QfGeeoek9TLxk~Wa6?=3PUKknhBMl584vGy54Y2^oU!E7hNfLqlad&-t zx@8*J7XnWV&jMa$CC>_urP`rU*|qD_TSgf4n#=$j#;H&5xdt z@=9Ti#8%#{aWG!&z&KnaTmVA_E9<)e-ZufvfZzyR)nch>!Bu0*+2-~_QafW;^E|(z zgm%B%sF)kT%iL)@ShvU8%qeJ5D*%iw;{Qg)5BMLK{Quun{DA*)$^ZYV;_tWg_svhy zs_2k*pB>wdmhV$`=hk7G9esH{eR?>0u1y2j2^Xm-Yi0l%8TReY(=6V!F845F;yGve z9+GU`XixWE-d}t_YQvOFv-SM_{dnf*|y(|G} zJN_uVlYE$ZczX4STRob3tvY)@fnM+DjMLj-HTT|NZnPJU$%wZJf;); zGCPYaSd0Gdx<0i}(@WaCX}XhwpI}H^psuuu@nXp{Fm{MHqRjrDB^Po@N5sffkHHc! z-LYDBVjQ{@>(R$(=2%ErZo`;*Cr1IG(mO2Fsu-YJiSc9ZWs#5d-fxUZfu9?k9%CH0 z=Jn;)v6LTm-l(odQDIr*$l5zSiS@$HzPed@@&;bcv>z~DVo%gu@@IPpe%?RhTpnWF z8obJsJ>Rl>gnkt$oMwAmt!Nns!CM|DP#yC*CR}}(h2Kx(PBVSOSuA?1jp+lhUsyvd ztbDA!%hUYM(lSiq;}4LIEzt0}k5{m#xnX@zcX_%#{^8m9UeCbK`&j+tn~)aM7f1hF znh!;(iZ3@5Pih9;N9`IU1CGWuAKE*D76=N3o0nda-wn2F`04-;CRu-O;Y7-PNPF|v z{K3s27?SaazP0Cp4$)ttv@aL&qEXBnf;O)%dwfRj~ zQ)YSl+<=pg>DT3x=Mw3&&DJ&_#}PftT;Y%LV*s6^ql&ix>#^g>hbJ_|)^g~|{!~#5*q)KWrCEd+f)|sP1x1rA-ayzYlh%zXF-{CA3@e3V6OfMw1q0(+ z5V5fFNPC)p#{%T7^z>}m3|M3dHJ^ZDHJ}8qFCQWzkVyoz(j79nP&QN;Q<@Jk@7x?S zhpi4t7TVY7z$e_+9T(;9*?6a;P1Emn8V%oP>ooQ@bcSj1_U_hKz;#OVap~#vjrCY2 z_`z2faNWPgRxpewa7;kAeR(7>Fwibd1sjlU|MLn?ZLM7;pw+Wd z>=2XZ(MG{>LdjS)R9mVn4@8Q7319QXmU zs7XtA2A(0dWZ&2^(3DyoF^H&Gg(E2@a!L1QJ?_8pvFFXmLXrv~g=VSfthRjQ|Ex*WWRHBuVX z3u(JUOfM-+``NcJMbf3Qm57{ER)3jrmMq}={%e`7KXancBa^v(P-=#(70%4nOO~p3 zq6gEPlTiYd!=Ot|jqH5eEdYJUcfQjvYYS6pKV6CP?#K{5U5XuLXs(t=-V`l`$1qWEyE1E8!5Pt|$X22Kumcp%V7{Kg9}Skgk5Xm1GKuH0 z>{6bGnL7lF;q1iIh@>>>R4R1~$Xtl-=g0XVY$a<{HKxl?bsADUO9epf0+%vtVWc~E zc?uBlQUq=C*+`|kY|?2{a92|g`6wF|c8#a~agw|d8wxGR5Q!C_G9uFM{4{H==qFp@v1Sh)Av-WD?yY|)Vh*&Ju&+IH-y*FT$VA3 z?QfFLp|wQ)z)#B#qx%5}9KGzHD@WE)I=xwp)mh2D9PJs3I5xMBNMqal%Fu9s0^L zG62|&N}4cG+ugdiLrf-;;=|oZP55YNhB(*==dYpa;qxxQBnt{4V3~<&;Rz9WKguoh;i*;W7yN~qV z%Hg}8ueG{Pn?3ylBng1IqRpO5$js=|Ki6o1Dmv}^%-_m$n%EB^V*ts$%>3R zNE|f?GIoJzHG?N{#J1dHwN;!M@f~NCEIG`67)EupOyLT9hP$136{VkT7CcD#s*l>Z2)ulD1N9fA!6)Amdz3f$jUt*rzqCk6m0{o-8Up z$?Dr%aJ*x2I$-y6L;_MTr}m3Vd?D1ZaBJ5tW0sh)jR04hnKt#>h zfURdBr>1OJM>dDGu!a8Phb3nOSG^UMad8gW@GYj?WqMzDQ+_UI3bDNHc7Qj0--L>^ zv7{y|-9p8B60RdY$SH4_4b7ONZgtCIIgi{LZ59rBROzX?{VD55cuX;gDT~!wyvQH= zqhDG?7LRtSEI1fYiV&IRe;+V8wt}Sx))69K{Z<2R*blx+0O9c9=v4o2s{ufCC~z{A zABzS6M?4yCp1wBprJ5erS^f26_7>aq2H4M8EIhIe~h%`-_=E{)?GnWaV))(vpTeu=?}o#zdsy9(bbTko~<< zGXk-YnWG;4q`0l?2fu37f-mClnSf+M8AGd|b|(&79p|3LA#(wC$p@9vC56nXuosLF z*fW%@YAHDoXmt$;1MM7Nm6@cN#LCVHH#80>HLgytvi)t}Ooa%dUfWq>_|`IQYfi+H z(tnFNtrL~)lT#M(Gb21K*v!I;z1nI`jo0hDz`n|dV^pM8-`=?6`+yt!a5vf7=#~8;O;SCL!@%h(vgI*gJzSPw!IbP7rLr zQa3PlS~U4daO0t=;R@OWxsgS{NO@!WVt{8e^stz!7C7@u*^==^OZ}jB^_qThit;kp z5iZ0*dpcsjZihPUeU%@j+{T^?I$7F^kyb#id4302$7_N7^C@)>u}ud2+4gs+tg1gZ zlE6SjXj~vb2MG;0s*QjPd@=w5H$vLM4ZyR28|~l)f531g+QDM}9==O&Q+x#G3QIlL18x`f~!y z#stU81A${rMy`I*{CV2njT8V_cH}l{%7;Wabq7kyjMA;D9{j=&v4va})D^oXOjR9g zm2j^mFOMw8p4hoVwjsL{>w+AZoXP>05dQe@y2wSQ2MZLugu+!FC^PS(SB;}J4$u1u z)a~UJ5i~o;z^Q?sWaNv^2Hw!es8s zDX8voK}+OTc>p{RxO589^g^CEB0M^+!NU~9S16dZAQU1aGLM563ywpcL&_{9cr3-| z&!MY}za&^;x zq&N{ok~HTgGoS(QWn4@8SeNQp-xE@2zC|Y8t6y&6`NIf==+iOoiAq z{ui;; zvEw%X32v~cWi1E$%RkKZwI>`{<@mR_od0u{$DhQ({~S;ME0PC>!$0o#u&Ft}?)dq@ zGGQ1z0Q4Y48VO8+*l52J(`W=w&a_3Uvq>Q=q^&#Y=r1Bs?x*wl8190?i9peG?1)56 z*OEOe*PKqFjtX$-mvji}Fd8j5ts~KMSY7IH5_l5E~$ZUIOt&+uQ(Qd#FFK7cCq|z zGPHX(kYo==3*bTUh}Uw@a&N_WXz^*Spsi`Zr+)1FPEnm?g#%osZ%x>O2vCQIUE_GG zaEoOAV(mKfMD|(Wa3)cMy#7&S+LO@pTH$=~v$KP-RWk$0YunB#jLKL1sboRo<(F42 z_rUuvA069~Z;xL(-S>?jCr2?W%ggXb{S9ud$rDreO94R*Ki@E+gsx>Auo{|Ma@nsp zQ@ftLS}`+!Qz5apExV~;-@wh*($;4>CBJuBys3Rto8%by-USTrCbNUJ0IU9wBnix}+~YbDorWdi7^eEp3R*TEIu5RKs0=AsRKgA?wfACnF1E^M z=uOnF=4?KAFt+M}x=;uK|6z)xZUsal6li1iV}z72$tw-XDKQT)c9nu-G!cmEffeTR zQgD=$*3#k+(8%I61Wa3e1=scMKj8QU2&gRKhAxGnvM9(4gFjGzi}Ozzts1J3Eo>Xl z9D=hq1-t}~FV6RQ{0or%(@%e&Ong?b?)5*85+eUf5c_Hnt^-sEhx@;B<1R>|w*CkE zMdRN$?Hv6Sh=OYNA*_A7S6zg_FKCcmRPHb^C@`|V?Br?4zXream7>#70MN+yUmTbz zuI^|y30>0at^m$AXpeWzc(}N#cI?ADtW!GRd>5kbE@n=4YI&wDQReU8TR8>ltB1<_ z%BqIZ9wGL#Fb6J_{L<<* zU;Qnr#~0u}G#n$rOdi1rl%U(Q=CgnwPe4^^ut%#Wik&DApZ~gi$>>j9fYCYKM12IV zNew=9-0;rJp%8p_P)y;W`{^|a&(H(V+y@UFN21ieD)JHaQvxd?$o#k{xi7|4+^iZG4jHOaPn_cxu?@$KjTs={yU{?2hTNbiOH+ z0^+2-ySNz;t_%lvOC1@3LUp?&sX%-Gi{);?k8iuy0g}YHXu*rbqix<)KO;?W(>huZ zCpGl6)ss?FP^YMa&?NymA&7Dj{y>il69#$nhdazK``IM5-Fqj{NNyPU zUuv8M4=)c7pM~Xdih?4h7+zmd5|DO17!XWLJrhA-uCJ%32j@1ZAckn`NjpKiP&ZXk zWtc83dzKReoA1FEAKhsq&dG+(C9J;G>&c3aB!fwTYj!2dX|!zuG3sXBjJTvdzAu(` zbvW$1a(e6ce0ns@?e0c#%P7URyZ z7L4ZW6lr-_XmX?j_9uOnCG7`ET}fN-=^$UI?_W#Vzexp370tFy78M>54gw%j&c9M= zZ-du`FWgnfU?Q}=ZBD;BEXCKuPNs-7k~%r&&rF{ zGsfqY+MQ#$Pc2v1`j$@z8Zt}O7qE2~2k>cr?%aQAOYYl;%ESB5xB}~Cx#r^{BuYatNlVZnk4wXM zXS!ShrQv;JYag+fS5dvLdYps}VE5YADq?OlyUQ1>FsijBrp=@)yiG@E8{KFq7J>#) zN@bbj>PXLRH3DS`DU~8L7?R@0C@O%jZn~q41zOQcSv9hPu`aF}!vHuz)>bBF4%)@N zxru##*R1p7{lq-R-aRvP5_N!896{v7R-5KWcv6<|Wit1-=g!-q=+AYH-vh_)XM zZ3T>MH16Vr=EQeJ{%~>r8U;mw$=n5kj3ex@V8FgtXgol7oo3v8G>#;0NzUepRiYVN zv8|daS*JWpDcW1==IWnG&*oN%Zs_vF60NsHE%waVjBO!vMt4x37gpqWGN4$XIs;=l z(tP)P_l7_7H9tOrNHBW9ht!_Zm0R)SfO+{heexr!rM1$2&1z-zwWXD{>f%3})Lv?8 zz_p)dYd!&R=eu{ZW;+=I^@?J;;vQPL2`^DP8TmQO=D)O!6o(peaP#4r5rmnd;G>MB z=QehMJ!dN%)6?r{>ZrkT&r|TLzLdNy7=I7P4mmLtw}Jn%R?R81h5k-BxD{ePKbTZq zpONj?{}~ zNRmN3E;xxu3sJUTv#@(6?3VZQBFa3}(Ma=D%-}#tMZm82P66G~*y$-iFf6sb!wdN- zyW@p<-cod`D}L8JRyJ@(QF8j`BX7g0bY$1@kvLDN1Sb-2Z6s6HAigS&U(|3!R|WQj zU}F-%FqU*Ja79b*IjmNr~+)o zNVHfNWmpUCZD07Jk)w7=O1Mg?d`~s(dXswgl0~YQA44rH`O@2OFW*JP(g6>q(h82L zed{iSpT)W>FlAR49c~1wpo`cs+df76VAh%etTq#wRZ^#^5@?%rI44{?4#V0qkQ`SK zAgnG^579T`KYubMlCBU{8jCd*!tYYq!J7T_W7WZK;LDE2knyQfQr){BNI#^o72Dpr z*OLd6-$KxHe(1%9zQTq6EJOShpUF*AM}~-s-A|=y13Qt%{UK90+jh9z*oc$L|JPUs z4GIgS+Q5PR`fTc8qv+-X(QM)9wEqu#IVAU(_sYXcO!7#BV*~GphlYQVOyB)O<{y+- zVxCZ7RJO!(`UjdzvXbLBn#(Mpn~oykp0o~GH3ma90ka!M+EvxxKk~OB*`0j$?s5mp9*<)!JWOK6aaezeD*u@-ekvSt7^Z#(#^YGp_7laM3L``J6l{$4JF zb&rl6syOW2U)@dC1q0GYV#Sv_nLXR*muBa!Z!|}TuBEPiR%!sAS%QL}6{DYm*G^_m zQ32;8(&Rd(OOp}?;g$HH57j#fi;P-rJ6>}8bO5)VNRwCt609kR@WT;$Tz!V#2Gv;Hm3mtEB7_;9(zPiN9O1ZR!2i-{LpwFaLZ&Vw%gbNs}kkWwHSO-*r=Vku$4Lzb-(-Hc(zi8_!5Okgb_DPS`XkAAn! z0VT+VN>CAL_@pJ{R9sAzoJHL{m6Wx#9Bi=P)L;+zezQ%xmkWlcTQE|Mh;1x>!A%jn z@VtKm$k2DVfGx|&ZxXX=(SU1oNYFs>0R&eNLh@sE9for$A^;M_0hP@ReIGQbnug3+8uM1`BF13Kf#}yR& z!k6Q0Zy$Y=n;0v}225R~?a@Y%0%|}AdD4M(mwZ%^SGh$x#o{E}N&RkiwVhy7P2X31g6Wx>wPzLGoyf|?P6pk^t;nrH9T(2#3` zg5V!j6{5M}h_Un-k4#aS8LI~hJ}DFLRxY*f90A5bL^BdNZ#uqTNHeH-BWytg1o3C3 zgaNB&WOC3@yY0yeaGADdZZ*H`RC`heDElg8XYO2#m%CHyXx4ArPFqi0|TXmsB?DbgHyJ~X? zArX582|w}m!;1%iFGZQm%>^MBKWVkdP4-hpM+<}xVU6;ma?ZC+vhyac5OOAfc^>-b zySyL~{&k5TGzsTWjulfmT@o^|;=kx-xoWvUDY#b%2W&SOw{Ku7I%tcl59l=3jm>YI zo&5q@ee|mDi5;+T3$U@QOE%SBWPN@@!$0nCnIT3bM-3Yz&!){5N!d0AU`P;UDQ0jy`)RJQi6&iQeG|FQWM)=C&(7={mc>LnjY78q%JJr8#^dsk##c=qWM>t;#W(Z3C8Xz=3oQ$ANC@Dq$k^Ng$XVWrm+i@ zP)P=Xy+4JgjVRgo!HN={0?+Z_0@dfiBD~@>*@8jvMQu`;gM~4O={}^{C6n^^+MXg9 zb>SObUo68N1FiH}#SQFXE$qSnZIFQEC$R!&nZ}6QX^W&PkxGl?Ga=$v1r`J2xKVO` zlg4aE%KRokEm9!JwSe&3wP0$>ZpLNK%D$3fY=b33*td7(z*(bKz|x7Ptt4f4($Jh4 zMtNhUq5aV$h>L&%>c{GdQB~i`>aIJ>b_jKeY>w7>t}s-Ii3BuB6esC?R8x4}xfFav z;FXk^Bowy(YcA>JnuT-9@ronhrACH?pY`bI=$2<~?8(Z*T~9#3qxKZO*D^-M8q!R9 zCK#47-gd8Ak#abMd;~dWWP_R-13`wtub;X0rJCXEhWtrzCovb5d=&b)y52IH4?)A| z=K{)~8z#XvIj?^3-Dv@xP*~KYlHJ`!JGjrB;fl<9)sH6r;E z!^FGbGhVXV&;mPMP=jq6k)DWQ^oJ}fesr1WHzElKEW*KT-7hSMrMuEGh-zNn`{M|; zj8**@-su|iH!BxeoF1G3oSGl2bd;pdW}&bATtlCzJWQkdmeC^r2s^9P`;e1xyKZse zkL2fZf^mK{=DuZq+7=Ukv%A{N5xsFJd$UVxOsnVjL0EXSXHL7ry6G-}D}@n~gmuT} zC4j45^`+%5U|@ix(OB^%4D}kBF)VgB_KYd1og0^AZxBLI z%}N~kjkp9t0LG4+gEADeX&T0Qy;J@QzE$XJKNo|Wd)-Zbc-(p668rh(hI*d(o0}B& zrf%7P`zeZe4zBSDZ~^{R>ORcS*PL0{#N{qvW<%iBZ#W82_7;B~QXA@&eswWVr7*T-V3Q4j&)zK&6#nMV0WP^9+l!i%oSaQ2Q< zk>#KL#E@2|LrBnEVBPK{FZz+A)Gr(~9nXmOTt#i4utCW7tUT?>pynJlOHi)|oD5=s z)dXxVem#~n2FUCwU(sdZT5#wK-q11=2%uP7Nvvb*9$roY#Ea~!&&X}G>gThKWyn{9 zj(Waxe91Kt*QQL5E^UbrtWlYlYjtL}fUGhOY>aClx6N}V!^qS0%F0~fXoJ8=KU3cn zV|kyn8ymq9Y?ZE3P<*qMhy7&@O8gIoWrW|QE*FNaRX#Al2#HSqzm&TFTQlnb(+J%F zW53)7P@${DIKV&d*b$APF{iX?qx2}C(e==(-f5IfS((9bOvTAXugC(K zpO8J6R~peoIz-S#I$~DYBByb1$>EH6moo6UAiB2cyHeItB3&$x4tayl8n zO+WnpQ!4M;E&ud|?N?LpHU)0vtR>=yy)Rsq)RnuYBdE=91rj0b%g~gMs9z9Yi;QP? z3B^y|)-Yh3H`E1cgn!oJFhF0mhdOo#G(@Ym3l6?4=x*vj#L{1Jc7%3CgYWXHzdXx? zw$9aG&>du~G-FPQruofZzWV^U&+)F|5I=Eu@q=|Y>iUkf?_p{b-ELaB1KorStfH{p zjE|{q5%k%i%$~Gi9ib$E2i9-Jo4n<`Q=^a$;lan=xJ{>B#-$icOZp~|;PkdeKNasi z#(`sY&D(i})gtqlEnbq`6w}X24U?8Z@bo*ZZ^#_zZ`3hp%rG+|IfP}E`$VMUb#hd| z2csC_UWbK<5~;yv`7ph%Q2s1nf9C^{Xn=;W2)KX|rzugizCJX%FG;AKUkp0vr62;! zII&dq<-4H+r=w)~wlUxxk3KX{K1dh|*fRIGNEw4g%B-g_5b}0Fp5YPlvK`iLDXAlp zQ8ItK8k=u!&q`a#`tbSIyBwwYCJvhN^IN9_8Tag_U9z;)W2WkvRlhsW+lfyLPL7V{ z1UZX1DTH#R%Xj;K%LUks2?9?HKg2Ag^&d~y&**$}ar9j^(oeLv;WlH_`6-1m9` zblfB8h=u6@kx4j5BhIlvD}q>Zn;bxk^T5-_@01Wp53v-rH@u7sudNaNRBw_yEdqoW zsSh0H7J}@RIGjegZ0x;)PE;l~*-eRR3puCu$= zvWwPkj9MO>XndL;odrnJZ(Uw|oV(`xo;EMR=FXq-g+)Yt#HiO3yHO%k6m)b{`#b3o zoOM}Zgf_>0M~PJTs_FJ9w^UhyO*<{pWV8^&oov@;o0N*-G32iBYdu9@sRX-GL*Bsw ztUJ|+oRde1h?mIoln3Pue%KQj*wIDsT8T-Thr*kKh2<*+t#=PIkC=-=LF$GyM{J}`Zw z4{k^eZTG~1(d3~~(M<^j`SP(9w9fCRhLlT;|MPkJRg4uCEz5odu04SA4I}c9Y-p<> zbBla7Utccz;y{Bpgt>>9~u`Tx!Ox1#AV%-%vu^;+rTOcv^m5|^a+9+t3 zk0C>B|l?|!QL)O8u6T|WCsjxUPkWzTilrWN>3bz_X? zkNpL+3wK{)--fzxQHKjjfT6*G9@_}tP|u)soHF^rEPBi+m;{U-$(2pVu{&$4**LoR zf%u!^B{oZ3UzS3QISyHHWVrU_6cZd)(~RJ{QmW-TjQU#x*K;2jp52SY?F72u0|0 zs({HeYo~ND&p>Fz_v5X{@iz=;@tESzP6a5Y<}7};;I93k&K`uW^(u~1jA_zv^}H>~ z=`L#&NLx0*<@q7O1VzOHZ*95<9+mN@#^g5dzO!*6ml=6gXNU@y;D{fBxeo6#MomfInOy{^ljvb^fHn|FYEJ0pH2O!vjyXP|@mz zTp^^ue_O109BOlPf#A!CBmmG%vKALd61F7AB*DF2yUAuQFGn1gp|$u2h_tO(N0CTk zMZE-*d&M^Glb!EVVscH@a`S`cOff;XIx;$9Jrt6}I^owyQgJl1Y-Ocrg~(nMau{-Fs(u%py^=-@sVppd%ncq*h}bJN5d zWy5;(!+wGyb?CV*k(Hn!lRxzuGny!*_qA#moE@4SpPhnFd{-5!-;J{6J?y^me)h}G zq77c}o;S|dl>C+x@FG}uvEy8+r-HFARVRYp_eFy*)gF4M%r*{t1OjoW^pq|*XD7!) z=Rb=W%*XUeK;;TCAV8_pxJ6jkjxdWBao@m+@I%t`&CbZ&Bif|^FH6uX^^tR67Nnam zV;R_^BqHNB`5stoM7TM%M);dEU+{`=gxg}Y#R>+;nq#Kh6Gi=*o`eDkI0LmU4pMFK z&C%(C0s1uSb{${RdU!s(3xBU5*&T_$+jGUGn@>)DV~d7<0*DjUma0N1l#Eab&7n}o zzHdyLa(Q9GhNn1EO&c!VKHVij+w( zXPIv4k-vE;W^a|V8k{rtDeE293QQ;Sntj67fO)^mpPu}t!DzHfS`_i|GpUh+mz25i%4|?J7sNNK@Ba} zZ}@>QV>_(~i^!A^jR@TzKnM-M^F35d!3|iBUzU?FaJ)5`VrruPb?C}0(Fvd)7AQ7t z*4Hs^68n>KvnS^!hzSmSl2H^%o+Bw8(N%Ex2&{MkXnzeuK~&QDg6uqL^hHAbM&Y9M z7;*LJeTOAU|1v3PJCh4=nGTxM!v9rggL8q9fPj$n6Vx;UEm-LM*6a17n5UBMz>5rM z>7>}*)6jtEGxB5So$<4OgqP@3(W-F3#^Tds;;hq+vti>Bj*YtztId4iF391c_aBE# zz-oYQH)1W)HXJa38-)<|T(s-?2%jWn5)ljK#DWy0`9nsX1#$*vY6Im-k=U_s##uG! z{aP}E_ZQU#VtE-ANNNg+2hev|(!>*P z{q7bj<+DE@%GGR#>MA=GHCb}aR)ayWG@F7%9g}l4Eo|GuuWTU@P0k$imdB`YQjT;Q zK8CDPIj53sJvTW3N}2(0Wk^(_7!!$;8NwD~0{NVE-NT{YX-am6-sG!y0n1+f^UmXo zIe>2z(jO3AzA{5KC@IG-4iLm}JuVEIl1Wfjshv7rP}8XIa?PIF`u?4XMYQ*=v2Tk5 z*YHE-5O#zlG=0fO!sKR6vh|gf!Y)XX7a5xfdd=Mug8hhSUzKWc45TS6>eAw-0!gfu zm*Af+?4^nEnMfp23JI6(HzMsFYV8j!~C8kXY;8>{4owHCpf|`|EI43ei-dXkn7T4mu|7 ziRU1exxuq|g#Bp^H7*5SwlXg9?3O1cdRyI8LO7TvWn|~sQ@=B& z-pp~KKDqFYv^+y89|4rii_c-p1&5VjG?nM7!Szk*j0B7A>oU@5#B3VI$7^P*>pfH+ zh8v$fUB)btxSXEfL*80yQQX=%J3n+OseFkAytonA9T~qOg%JQxT-sgDjxvi6PuM@q zb%xhlcppnir`_-C;X5(5^FVUdQ|pej3SOA48VQ+iWtF40HUgf;>!Jc$_u$boIH9AJ zj!(wldcQkUao=3pMVj_pKrADS6iL(Zv9SKJ^>}asVaVffU|q=q`)B) z0)KN<3;N|{nj(@dy;p+%uaD0&qk|lNMGFi(tMATqcmy98uU}$$X4{%cUT+#)>Q2fY zq|aP`#2BG0G6JTrS=Ycj(DNECFmkm`X48EgjGlDxx_!plO( z%q4x_Ac+-iU`nCi&!*OuN0^VGV#zeu{k9VclK@>yYZ)Nps#F;M@?~VV_M051w5OWF zDEHmIf8s8;?l~qIgKup zu8TDn@>~ESgP6&+{Soq1=?wJ#@-<&l8Na7KJ!zyqpSaNY(>E1!#s)Hy<7Y0bycRsMwZy?2a= zvB%iBsr%(GE@kt2p>AOD2ISwARIGm~sn&xbIf2xhkX|B04Ous@kH)CI(FSElft(;; z-Gy;``5NE=bgmx;aW=ze92}jlmDR&Si)D{My$O3I=Oz_Ush?d~n<$5ERs&AxqhRqU zH-1{Xs1xO}hFIxE(KP?lZ1Y$6%PRmkA}uf#G9t_6BC*;JQ=x<3Eho1W2o(w$^?TxQ zia4fZ`wx-%U*kVf_j(1_xgJjoa7`o!aGmJplKAAXGZ394;jWx>h)ji4tQ;oUiP;+jwU?P^=v zivO#Wv&vc#F-Ra=L0AzbK~p%~khOQRjj?L3opR!=u`;*!sSQf_(E9Lm6Xxx`{#^KX zXY_E?=3pSkh$$*8_;s%k@2*5pTIxqnRc(vH};( zI{Y)X_+H#Oj`&ya?Zv<|!wP%$S9)>1@BOX;u_UX*Ds6@tOE=G6Uq9@?&*L3kH*du( zPE^(ejLs~o$t-5Ct-X3eu>k@v`R_!+o{1_L0zO5Do|pn@18X%UXK#|`dEF$B-Z41t z7rLRr3K!v20+KYipyl&f;_xf+xuHiA8Ekzh@41hd87_pEZBTGgnYY>f4WW663NHgv zbAv$wvy?V%>oYO7wY_TFW6TcG|TP zEnh}jit-R#iko>m!jl-TdlVDiCkiilWxu1xtMlv82e4R{>m~17rpXyEb#5t^rKUX< zFyJThOQP>w4U&1oc+POUZ^;0{5$;BQeoA&eg0{thM~Gn31KeP^-7wt1dAxR~veZJJ%6qZFmYB4~X`g zT@&)8Ho5kp{UpbG)M-E47jYr6B1QhtOp-Jo3k zD5!H$cgEy&M~o5bmtmrEAqI6WfT4kfqOX`^%>uUdU!BVdltH?euM&)hZ)r82Kx8byh7aVDD2}X< z!01io=iUAg-x7q6PKegq4>u>}&%9A%`tjY=QQXl0rEiS8i2a=+SW@h$9W&cuc0NM30N(TmiR8anoE5YlR_w zpKaZ%Z+-yg>xLxy2i-vc(kFbL3pLx0RIG}R7sZ@aYWJ$j^3Pg=--=R*^!REo&W&^~ za7I(r1j~bdk}!;FTd3}Q)}U81d?y7y(9+RP9_z0#nt|CECzYewkNjm4C6B{!(+mD9 z*KQxGN)yIk4Lq2Zuv&(oX|C44rnvx5K1)suPEJ;~6}2&iE>^6QT@-o^v6drpK1CJk zqi|A`TDay2tWe?>Br?Y-e5J|Bg07Vt=lzxT?&{aX@}s zPe<5N?ZQy*(ewm+W)kJVJb(odyyHr0Y~YspaN+{h_&MG$9*tgTG-;smI^mYq27)-O z#OiDM955`4VruJOu&lM6f0JrN_~|xH%M~>1fel^C4s*7NWk~hO3Xda;N^67iF$iVQCq&e zADN1uPV$4<=ZDYq*Ixv${j?5-6rbZ_D89(ye`9F87_>1QN!AHF)cfATZdATE$N=ds zq+^6%`DS~b>SB#_WP%;(fWtBRXAhrOZw_h#KxDw0LTKzT_%o`p^@A{pa5m-~b@XvG zPpUuQ?n)-UJ>g77h^mcJrSzHVGm?9L=O@JH5qQ9|IXl2WqEh4_+&;tnJ_Gk9q4NBG z>zVGxTK?t1{GK5=6EH9_W^Au@Pt%5L?-vi^z3!3R(tO8$#PpKTHzx!jlI~@vikORE z()6U6-|Iv1y>>rwQE!bA&NfW1VOShQlX(HsMW6E@e&mlg^slj793YmD^;$fsDV>ZF z4y_@8o@a}UwwVD6x64IR+O_(paRbEs;^*|@+Y97Qc`nrf_HiXFtY@6?0CMNlv7u+f za791U7k2xy@wN3VhVpBvmsv6m<5Uqf0qjQ(D!_B)lcVVFE%vJ)Yt3xw6V+VU6@c!k zmGq@8js&v4zgBFNL`+YgpbcARG3E5E?`P0hb)e)*h2?@Wlh-DAbE8~#go;4?l3V&y z3A;eRfOU{W5w@QD(O@SPH#5N#+GJKNGI2k<&jBm6EYwHkl3%RY9T(1i+ou|O8V6Zi$OiAXEJ8&WDV+;8ChAQ%MJtgJeuqIM<@-_oZFw#uL3;hh+)BXtocNa+l-y&-@)AaP*=vpo|pNQpX- z0q&(QOPmnCJrdC32zoAYVI{iC@vm=CKtCY!(xEvmea#Ag!w5$l1Um(bdaHvb2!&dR zO6*il>Ip}zNFpeUxlwLk+k@Mo=cp4 zhgl{0b6sLhXGgOOG`57q2IzTdV)fM%UI^jX*k4gM;iM z|Jqd%shEEb3m27cqZ)~b=Ya;E{GkbkXOkEkmorlTqdt}<7IdgFHmd~3u+6I1UW>?T zrbbb;{q=KO)AffB*R3vozRN<^`WF%u&!Lft5atwlOnZnBNU4mKMvjCX z2^Ad9sT|p?(1~dtIjHT?KhYo)nBU*ahDuv2dp~qu*~NDAvmTH+n97YXpKXz)%1x#F z#5VXz*v4_2mN_VZRcyNqM}k3c_BK0-;yOV>rWSFU=Bcr#d1aPWV+zMuM^CA8QhhCX zEyvKVoKdo&#KVl2?Bk2e$NOAyVegb@vo2`JiFL8P7KV!ar91@Er-dcDJ;)gpMFT^f z#>$dHPEB?{c6R{(s)b_-d7Ly2=xf}I>Hp#D9itsCDnX_S(B@j8*rX*Q6jb73OlA4D+{};hCJkAEp@N z!i?J$(4ow#9wa$ARTzCFb)%~%M{>G$d~l$v9PFV#kZvubwfv>7hnaBps|%y$-pnCs zG~HXFzVXXL_46rhDF&oppp?;>Lp9s|naC(w=RUzjrcuw$$|_`Az4vgFdT#U^EXvAW^D=IHWf5uW z)L`nS*nQ(AM>(|q;aija7e^KN@I1gOPVj#Cn1PJ}5~Y@F0@i}jlruN=(05&u!sUd* zt>ZqxQd!z}1@#f;Q_xB>;t$q( zU$)iOb@hg^`c;k^`Nd%nFbYm`UO#AGt-d!SBZzHp5sSU^A$KyLLPhateK4suoo`wS zauf<_6@E+->S%A_#TiVeDE{#KTw(^qsJb2Ifqkl*ocL!7H4lIzWN@eyY<-ejY>5Kw z7SKsf#1tFv3>c>>ip+dLR3UCAFaRVX`OxJp9##+2ucgJtNcb<# zUcA4;!}ErEX3hWuwMxe4AVg9|@&5D*RG^z?;6_^G>RA8C-l)H z&kDbS{3esT-8+`#>eBF~ZGX26m6tMYot=cuadvFS7w`R`f-X{9Gtb1wh(N`-tm7TGV2I;FriA+Fqn|yWvV#sVX9^`?-&w0x>UX2GK}vEHiM_U~-)a4#%;_FE?Kn3p~g4cXRRtI-n zL%li-g@!T8ZxbUm=s!BO9&{UYA=qko4>ocH?Lb&2cwP2RuB6vI+M$HmP4FMyrLLOv zU-&EmFGHjrNW})|r_|vdvMT@lnfsyP5O(E4ecYA#s%rh)pW``R6o{0uc z=^(oZ=*3xH>GVIb4mv>9&s0lk)rLD#te;6)HoNiu$+lsT(ZV7QC;$5DZ>8NN;ME%M}C zD5=}E28S=K8GU`=F#!G1gaIenGAwr$gVO4*UvqN?g=kxi%u`ifAk~mMpmUY7@er47 zngF)Oh(w~M${!=tZhAA!_m_)20lVn8vYy-s2V*v2DzKL(Xa;TTPgZ2%2CMo2W|(^^ zy;==g^n-<#Q#Ns&@0*|^?loUxvK~i@CU8Py9b-4@3XqjcF1~itfb(|S2q>rf)@<9tjZ`NUWOURnpl0(a?HxN z=8P8UacJBjZzx-5R|S!Kv&JO=O66IyT9Bc=LzzZAPrJXT37%H?d ziP@&G^b5KLcAZZutGdwz0DW}F66Wj*QNh4Cp>-~}1N}mfKY@Z$jvqsS;)gG?I3HQ` z0$&SzkFw=L)vHqQkbOiP0i zWzN9q%}+q$`|g0jJrVeOlL;MpW5F>6E9X2gvZe^SZfeM7hnEnlUE*qxu|gOwgj~#1gnpN1fy8*VeB;GdGSU6 z(g3*qZik%X`k?nU--$O$z+$@a`+0tH3nv=L9`cLM3r!ckqIVQ=(bil(Ks+hAo+_iG z9;J;iO}J}O?75>0dYegCDmVw$-$Q|+I1hcOI$7jRo3;JTcKY_zhsWU#G$nke z6=cw9ti`(qZ19T6bK`g3kGm!*zh{H9?x;h+;@JMT)V@3Yu?DosSIC^6;!wfDFY zBWT!XD^rK{XLRHGO+1UmIr1sLOHarRL9a?GV&dAEO7h4%!K(HG9`%YNu{z+Q z(&4M%ohK)-KGsJbN(j8qs6GpDy+kgh3qf8zUe;kwf3WCu=uNu7(S6&s2Y8dg=4LT?TnpDz`66NSRmf`GeRB9zQB&!^ z&~M8%%l7SgOZ==~)wGWZd`j~JR7(00JCua+fO-!1^*k30_`~n%0d3w~8TNc|i>KP8 z+3UR7z=3yRtSt*~NVxKlv1LNB3c)87*>%xEcXeaRk+ywDaamOJ>Fyi3TZbKd1R_$<4$!@kWu>EksQWu3PhIi z9Q8flKf_X}0kni%eHnohz+#hP33|f*{beeC=(~4DtGU@p((={{`t6#(9*c_sUS@-7 znGOoz2LiAKc4F%)lM3x(2TO~q3o|}a%+UL_l)mG0r8;8^IbJ?^+gkAa=t0ISy4hA^ z`_+Xb1)=PhN>DFFNfZ?xUYfAT^jGjZGU`I6)A;2TD$$hr!Yp_J<%KkjhHWq3f0e_e znB&Xx>g#;#NrEuD6HYx7c>aaAwXdIGN6YZtCX?i_y)M_^{a$5#L(rsC*R|Wj(bh9; zPBNG=+VZ6J%~g$D5L;U(vj-E_4D)L$;#wwh{*T5U@)@M(^L@uw-`?0im$p2}8LdBH zmOM`OpF5);k4juP0H#e@&--s)Z##V;Oi(QFAiu1~9*+~=rq&D|;kkTFlS27>*4#m_ z4lnNg0Ea>u=J;p(5R9lI%=5m+5Gj@?rTQD)Gt5jZTX|shaXI5nEz$_+k&WA|+49cW zU(k8iLw%wR?3%ueTv?NT{oOuR+9?r>Iob2V>dIbJS?uev4!A8Z4`60e+uDJsC&?YZ z2R(jJ33qVl9UGH$JsJ4*WG0D?Y6Cc0-t@LGtu}8Lo2-QBM2}cO_oJ1u5x5(B$@6vS z1;^%12}U$+%0%|wK8=sewZvl167*i7M^yQ{xPkGUmk^#zFH6)KmT6S$;s zjdNxfwl2N69q2QlLk(c#(aRHSfY*S6L#1A8C#0wKikDK(SMK=G zn^f=Du|`RGJ2^UBFF`GZm3L22)N86=uA!8h?>!kz%7A(D05iCBytxqR3$wct7jFgh zmV5sb!g0J%HvFfEfQ_X3V_*#YF`}uZqrB$eP_NA@vXcU2E9&84Y|;-fA?<4N8@rZAGfLOgLuxZk+i#-o?jl~YLG zXkL^r3qX5NKh$tH&wQbO(o9hbrqyAeghb>dMYqfPv}3E;kqM?vuUk;(ATQgWyPCGo zk`o*tUvtt>!CMr}v&IE4mXQYO3VYY4V5Hf6bn2dPHEFQ&vy=_eK?&bV`8A$o!*uPgWI5ZUw{ra^%0RR)PD^UW>$l)Vff)Dq5(x*%L`#}0g zcemIFMskjWMYE;ffWvKI#uUM4na$n%uQ2G&KQ&x+7x>{fmpBnT_TD z6-#sFb{!%8t2%6IbV_#WGmB;c7{853rVA~HfIxr{_h>R;6pE-cp-#dGGLXW$W)NE% z=+2trL&67^dylVTMFXB7IqnaY&LYeY(`PM3muq$ZH(_Vv+2I{QJ7=R`SUf`*l#jHg zzvq8=Gbtj#?l5p1AmdMXJgfo_;fTafLDhc-FBn*P;IQPw0CRQ_xgn5K+#`Uf(Fhd4 zwgFi9fAm_V5)}DDf!KLSw37dFnV;!9|4+u#r!N>*nn6a9@ju+b&Yy;fg}+u{U=AAs zCi0QNXXZ{=kRixG6KEMP98fM91_#i?0E(N{8-_A$N94;&MZw+-Ziz$^LLmVz+Aagj z7qgJ{C@c*>tmjA<=YnGEI_J6r&DVVlD zk%g%^)1Y!lI10aAJ(s`k0trW&!R!39K&dJI0rlZG0O@N8_ao>5fz3x6Y+Zu z4P%9{-WHe?6(*7WB2UTs&Q5vu-zXAQowziev_#FIDp+0!7LLLLGc0WLWW%K(1mQG; z-fA#l`sYyq{t-9vHmW?kAVtX5jv%AjAp1ae1NrW2gp?;@D4dHzUaK?DFsXiMB;Jlz z_dZy01R|Ct5J3mA1QBd-UN=y1EA=K*KNAt_a|lx#C0C?BYmP7nJ}D_%jo%blT$&N& z?%CmK&h=f|))ZKOBofM<-Q&MJ*t}17$G#Mlyg{JyTDGJgyq7|^Lw_}nNCjCx_B&8` z-3H11Pp>P~Q6U{R3h}?l?Xq8)6l8%}8PNX+6pZtKAXop6ig&noi=bs1k&|YO;0Et& zCM1C00R_nKM2G62fFm{q8ltJx))6A0XGcse^|AcRNhh3#wxB*eeWIxU<>_NHHsj!B z;bc2gpZYZ0Vr1DwHZ^JiluyM2Y$M5}+gHmp&!CP+ML)H=p?z%asSTx1;%2VRUMQY7 z=OQ!hN2B%BktHwzfJbPU=i+(pbUD6MYpcS-5}U0viscKhi}ch7#MaIld-L}yWhZZf zMwjyK;2|F)%bS+UB-s@c53@fj;|rFR{NK}v7;+xJY(CThFeKisaU%5$P=QR7kX4b4 z9gj7Qcu=V2Y+t`Oen(y-$qNaFeP(9vEIL-3)0Id5t~v)S0aPEmK-pEKH4)!+pI^5* z;N_R?2T+t<{lRebfxyKFK84xR4Y3RIncZUcxU|auGd6eW**l@pueRr8 zYk2F5M=XB#n5~HbFp8cbNXurh2v=f^Dhrtp!H={H3jnp{MXe>5j)@2X&vkmnII%S` zs6If+hCP+Wc$iBXCNF~Ng2K((UvdpZOM2LODxv*)DPu&JAt|b2*TSO`-ei+b)`k{- zsPu<}9dm(jci?#M11Vm7shBjTZCvFHWHK|Lxjz7&{y5>ws^RiH*R<)doA=k!4#bQn zQ`5q}831tm{im=UmZPRNW!Py-i7 zxpE-mw)2TYS*Yl{^el~(%bwXEDBA=7r!E9o`+QhFV`wlhuKF77^W8Og79=>^3Cb=? zjrd|;)Ilt{vIYw^4ah5V+e5{K%wgr2Oy~s6U4WQvzbJdYC_DA|MYZ7gyRMmSkoxpB za$f4DtQnCgui3ezcJ{%iUx}Al$m5Gq1kdetmgm!MbN0)YY1en%&T;K#Zqzh)T)f*H z+$ZdRZha~3t<3CwerHzT|LZ%$&BM;YZpd!5o~$cJ@C{?wP8$Hhct3^`U4)#EqP2Q% z21J9^d|<o zBj@V%y);-{lcifU zAc^N1H}Fc6QU(~wY)cj>wUFw}DXB6q1obtRYmnFps1a(q37wugu`HPupoukukE*em zQMYAzchtk@HM@q0J6!v+|BAA&{xi-c})QUjoQ$s zqeo2vL2W=Sv}(=uN!G=#^*ZlC_V}WBRX}ZR_rilb1YsIaztugG>(1{FclN%?^!9on zaLnyBI+iShIa!z7smsG3S@Q~XD_?Mv!oJ1BTLYp?F`@@rj_HE9rcL(FPUmRz=d{ql z;T!m(>7CutU>0`r*zoi4lkGycbS?lo=-r`<9t^Ol@-}u@4q5(dw_WfG_uYkxA{!~X z^$oe>_Y#n6@5L9mK4UC@>+MEvQ!z1}Yb^gbrs1;ozRt4ok|W*BfG~I6iolu0b~WgN zlr`bHv#^Ogcl(vObG|n6{#7Y_RWiFr5~(W)cXK0~?{b7$HMTB|v3pr_#p3Ys4_8xe z;UmD$GVKPGe&1UZY_sHZ@{!&>Z6j{CnNl&xDKs@Z@-pb^dY|3{H{Vqq{9V33H=W4L zk>Ls5H$E+ZP(ELGP$71}L~y;1=XFj7FY2!e4Hkx_?rU~I4xe3&Hiue&!ovRk$KsTS zm|BJA`>xlO*yrF(;*J*_`!W=7?niR_4FD3~>n)izjRH$4PLSwkWC!*=R86s}Rsw|< zW~gRbo|{I9Q|W3PwJPTCN`tSe3k{tq6R)QWTsM~R2SbivTiX3jVY$mqi~4aCRRLck zQ0Js(TcvYhnghNzN$*(d)+W=b4Z_!&706Lm@dmznj2cZ!ol_ydbdC;ci7iO4%>bV5 z(ze3wLVN@iYrGl@q$^tN(TS>kuPVlO%C|ezKQkGZ?uEqd?hZBghsjNOc~(hq#ec}4E(;v%7s8WZhul&AZEeWWGzj8Nd?&|>yK|0eW>?l146 zeL6EF{&HbJKmdP{{wy5a#_QT1I_Mfi#KI_7wy3e+qSOcTNno3MD0)}RwmRY9dV>Pu z{9wb}d%>&(;1)ft7ql7|%e5G-#7Wpe%aiZ?Du1omXh5!8b;31iHQz0Hqy|2iC4`3) zzvX)i8k+ff+`Rd2UUY7H+3ES_XK+~Fw%~LRU}VZ<19rRER4F+_F|kJbYdc^{$yu5fQw&ehyiQ_~@{->27z!l*#!* zKfi>}0A>nk+T5G5Izz)9i zP`CAAA!{T1rORx$DIcz2G=4!8sakoXLL#5iSE_6XJ_REk{xTCWm!QgKu(rLDM1|vK z@WPTP5TRQFui=+oHb)Zh(4I+ZxOLunu>{$H49M4wFPbgPtD-sUf*0v(aZ;j;>L@mD z`HH{`WvmmQ8neaat7#JC0LYxdRc6p_SQ!{LWj4S*@n9OlZ=x|+^Oi?$=kIOPoN{B` zhv7w#b9F6ifKG9#)!W*!fj1``i6wsgvS%bPHRutdF2zjrP!b;GK>i~+^|9p?vd57EXD8)PCU9cL8$y3vr-5vm7p;XSoRk2v5dyTDUhz zC=uxA{^>XFGch%4lUU)LO+F%#2oc4vIq_Vl0CF6cur?vE%o>}YAZeW_&tD)y-iLc9 zsc<|erruC2Uc3q6M5`;jf)J)~qpx5Ze7Yn8bas+Mh23!YVf<|?numXb!rbOy!T=fy z4(%bH9hzFI^I1Jz;!6XRcWU)b zhBMZSXbwSJN_$B@>L{{XxY(o|j6IgOh6296-iKL78d^YNA3F{XmSfaxXo&}bE&hOi z$Y4L)<`8xCOw$T($!pT3M5ugh!vNsED9)(CaICp|nwu5oO3TWH`rm~x%duQGhK|Xz z*dI|bx8m4qe0~;RsmN;5Hv-7KSA_7GX?{U5k=?KliHoO+Cj)Jva-ae8p|LKJwz@t5Dj6KDy!VkRh0dPf@2gjQcj9NtkO(?n-7quO z<*E;khKsHN3hSn)-yohs<0Wl8!Lxef6&OX;Wz>o#a@O^8yfn||*-RXSU96m$oS*xz zK0o^!zj^bzplefR#vD{O15g^j+72fBg3aXV`ZP$*fXj@r8(-ManTf|g7l4#dscc$s zVz8%mrtEz6K`}+e#^8x9p%{!uSm!v7zlw<(McDSq`YPl^rW-U^#^vILJf0l2os@!5 z@J$QiFKZDW(YM&is+=V|x9RFfcu8MvqQT)ZyP;NIG!Ug(VjAzy0r0uJ(o0+r`Ng8U zbavUf?{|50=DqWgjNNLx{JhQ=1yvrk{ZLIA<9Oq{w(do(FUFF>=<6;H4f$!j*Yd z=hJP#T~EytchVsr8Ys__pC@r^c+zJ>6pNqnJ;g5z&4J5Yh6A%w-gZlMD6*gJ!*RO} zBb%I_robIEh1^}A+VRV}^KzzPPJkOX0K>O^#&jQySkft0fJ#<+Su!7~ZQANAbZ+kA zZ#Y4DjP=!hd~MBqSp4362OmAZX@;yB%v_Jz%Su10M9bqBrATrP|Mzuw4sjo35)MXy zW#IH9Qww7b?^KUaqYSxCZ~m3@J6#a z;2fbp7wO^DOj4Rqz_8|x(hqc+yminmHuuNe&9ETxFQPF-xxH!t6Ot^3dGZvg@N|j=&IBb8E)|6=q zwd#=!SW8N+N*&mB-*N=s4%77v9UzGrciQh*kjQ$~4l%BTMCuHtqUGyehj8)+JeJ7Y zSssV-co1@+)ywBK&r>uPWr#=-NlevBqxHwlf2FWaJYwXM&Nz_|+K)G^f;Fq1r?5#S z@@Vuh zNZGZ1FvBvLhJ(!-DVKZL6(UP~3oUQ&xHPeAK%u?mI;rNzdQTv`kKN$*%#nR!ZDv;6t0LqE~kA(G{Ld91V+SbcP;hIXNi(9*n1==^i(7R z5Z)2dknklS`xN}%?3(it$y%*51(}*13luyt*7C4A2o1>}v6=x2nPZ1=#K|}W(V3PD zdT}0gl}we=rUm)&E=E*gCW0R4xGa;|I2P1@pdU=QX+6xrOhBhna#?N|Y)xtA$3H>e zSm-QXh*&HNRES#~WGBXX;}Ju3t)m{@PUyDl+#({CeYhW+P&!U}lk}?V`1$&7byt zfe$sUs60qM?G9n$_c$s;Uw7XTq%iHber-)BI!Mi+Y@(0SxF{H8 zlwFyl*_r!*8EY7|^7t6Azlgf)0K!#SwbK>5SDBB{_RvKSKV>qN?<|RlCFZ+74scid zS)KTY48&C!&{H$%GrkZ9&1geAR?^KW7SCEOX^Y&pu;|CAnp)k`mT>@X80}P(x#o+f zPB}WWzfjWBj`gfBgg6Yf)*J7iLa)t*c0x}Vn3tFpn;g_UG;9&1m@~l>0k~J|9zzf& zPAfQ)vJ^o+{L`OV6DA-+_Am$=r&(}4{fNQ2cz$%2P5Q3|W~L6ZImW z#rkXY2eOmRsswkHr&BwCRp~`<{PB4$t71D-v%?V8X+!}7OJ2BVoH7sx6d9jx$RCrx z!49<<)L{DY_DKNrBkal6Bfp9t@|q`9LA0@f)jy$Mjec75{`yg%D2?-FNyRifWesJTy2RT9;Ko1fSAN7f=9}Ao zLa6!B&pOi^w~@UIIn|NPNgedmx7|AyFSWWXh<0LP)#2Dm3kVNWC8pF=4FhA2dqTc2 zgo;z88Pi{ZY)uuY!=tWezC9mKd60V34kWg*5;@_k0#89-o(3YM;_{*P3sb}WZIX8? zgeh8x1RjEFspgXm0As#*B@|A8tN5v&`u+#XHpwOO1RGn=2UBjBrqu|UxC@jTDxH`KYlIOm9BFXNFE^axAX|~%{ebHCFwYs7yWQm8YWcd z2w3BdV;Hxw^d_p{<@?jzl#Z_eXWq~hkF_pfTB z8M&j|nNUV`4t@9m^uL#~v*HrQvY}MU$EwNl`?Z!ZxvhZ(ZrM$s!t`_^z9b{CLG2VZ zkfu@$uA_i0_9{#-4d21i4*YUTC#H^2z*ZqVU{QQq(@9lVg`q{Higbi|&k>GR&p&#` zeM?KQ_T!Xze;blb!I;^G>${3OUEi*QeGBb*ifFI=g>U!-4~d<_4|$=%CUr<1N$@6Z zQ-Eqlxl6xcQsN>5yDxElioI<{ALQhGqUW{RA`)P&^BZ4BV^yp!o&RA@h9qn1o%~sN zUe!~?%EB&hsxma}Q>s1^9ZQKem+lm$;vb_hOMG>-FUR8K+UlI2$pl#Gu^(%82!bcq zTZpF~CY0N|0GjlC*QqOQE94UopB0U?Xq3c38R14tR zbTX?GnQ(7>$fQ}xQMeQG;(&@z>z%%gA|-V zA>Msu4bJsz?!;+y_51g&;n-=VYSMli?VjouxQj@H(vkXQ-CDee z*PLT=bzq-fWgZNF_m|#-AO%wtlIJiZ9s4PI3I>5n7^dKP4TzoE+7N z5F~H0&N;a_V+||YSQZm?(Z_*Y!wTlWsJ9+><{IY#t6nl@z#%`uPRqD3fHjo_h`9%- zcH}L`XzUppsqk_PI@%M;w14vep`JU_LMTn)hrB5IU{cXmyFp_s%wrSLt7z*E9|J(L zJ#lRijIP_B4`ZFij3B_ECc-*ei|8?~aYJ%Rn8p5y9%w95B6~jupG-&Yj-~WsWZkN3 z6}|c?U#_2L7ZNcF@zh2liG7|9hEEP)uU*&-Tkl-N6_CcHp7T({deTiK5Q-Ft{^@!R z2$ukck3zI|lWYRVt_n*&kA83ziD&e3`8H$=JhW%)rcL{_PEsHUCAJG(_jRE%ld=n| z9pqqAd}5NXgZ<^Y&M@!fbHYbOuo7V$6GVvEfL?MlaMsmQWPERax0JQCXn;NLzznk# z4TJn&gnZp82=~{dD+*3*60JcFl>)gup;4NTl~*_PK=M#=K%czORQBPoUg$-bRd>8X zBUzU?dc=LnbPq_bp;*d`l5o|0C{#s7n>`La#<_%9UN>^8%`cb^*3#jksuVZcxfV{p zo5~?t7j@|9#C6q|+Uka?sR6uq2<;lPG(e;g%4%%r1fShW{0AYQ(8O@cJCc*puInKB z^*#EwHOEtFf>&!YDzrWOzz!Rx$|N$Zr4mQ!H>Z(_gr>bTdA*_4(69s8y1qy`n~3P~ z)GbWJKAAk_oC;{(B+BBX} zs&ns^c)XhP4ruGXl3;79mVp=HP5$5a9)FZI$RkzH z9enD$_Az%NVIi{i8TnJhv(Md zhZE&-Z*G9UHTbGZ{I-VE1Ny@`qflSo(z}k-i|$JZJT-zge(kN|B-teBh6|>%^i^A+ zV;@BesE*9u;9p%yI$bR})So$0y&UDwlnxSD`a4e7vDTc>koahNw16iPhhESjlsni~FYRq*^v#cQ-n4vzQcRcGc zXj}*-)_a!$%X0?R2!%HOt~lW9lTdrh|HLTyo5C}>1L=Vl#_PBA-ymU8OuACAS>=rQ zl!R1Z7W~{G*xUKwI!P!sf*%L2@P1F)f6za+Jt1;DlNr>T zLJi}(Ss3VlWevye7@DFFjHG7LIk91bIbEHbEu(|Tm9sh zU6VX$u#wcB-;Jd~dBh-MARdJ{TaXcmkOI*SKFHtSKW3-Df`CLogP?%CUMa=^`g6y! zt_&q}FL+-jVkFFpn!+~G;kAAI47+B!D_)BQgeyR|h&7e1;l9}dK>S`F{=CR%0Oa52 zObL&$t?jM}Hx$1{oq_Hmo7b1)pQ2gXY)n7duI*+pnn=z_E1&&&i5fadY%hgSQ*Y4Apd#oPbsTz-h=aEBgCR|odRm7RNKO0(cUWT$~W;sq>q~2zIC@A>RmIy z1WmrbBA<1$^Pu2@0J;QDRU%mKq{EK{(WBHw!bIkU zf?|snAg+`rU60*-!h&BTWUq3Cq;6<|@bYVZ#oFw&b$!I>$UZ(Ay&lYBde)~+@xx!v zZW3vs00F&U4Oe4vhO1^2z-`wPYxcDDXJz@ew8pnp8x8S0&E{Rb<~dCw^HoX9b=jCz zt-?N`=bQ#=)v{VLkI&^uCRRh#9%KG1n;AlxQ7G-&ynkYX6l3cXz)X1s!EL#0RY1vo z$CY~r!g^o$d|{cm15Q*f4vzc|_`B|Ow_5q~nY@?{;FvQGPbT>>PcBQKUJkCG&*ljO{`@X4ZQk6ai2N_pqz@Zz5z-f1kQkn`S6M}X!B)k z`WHXlA9xKjA3bA?<2rQvrd&$d;DnZK=@zL2D_tEW1{S6WtxSI+oH6p@bv?KEqTw+v z0A5iBJ5^}0%QvLIEfOMf%p}$^JR~vno@5YoSaO%>L99y|K3OCNW3IL4u(ydF*&uVG z?{<{oW)@IlFPz?Z1*5a-2c}4loAn{3xyGt*63bXvYR{bW?yuA9~9l#%Ak z$gRjS>ix-CVv)18gq~XEh3fnk##@S+=-a-nRAtGI1P}Y2hSkBi=2scb{ zof4v?J2JWoy8MoY&CWTH6ouaTEQ1v!WC7p21hSa{i1+$7MwG?c>OFais+etf1E2=P zNZeq3ef4-|sh15H0le*K(V0$WIp#-etgbcbJ1g5pvATzl6ZWWi2no}wQbt9UNC7+4 z$DF{rfA+ZBohA;YKILbYhHC2|1QVj2y|le)N+W2BBpB*}KA$-FxLEyO=|%Ig$_i|h zFED8*+xNR^5>5y>KABAYwx7Zo5Aa#F>0El)JWm`n<)0wU)Co;T5hk>Z5SuEau~(Tf zfAc771_A=UqS@^*pFh~?tw%k54R3U8GQXSHhE(pWR#Y}`P==>E4kqF4Zy+#8aA}|4 zg0hKpA4>s-OxNvQ@} zoUinjx35AKLwJcusdMznZ6R#o8U&VRWF~A@VDBy{3$A$ScqSzPr2A z2jR?bgA*Vs>Ov@RDKn(nBB2)GGIh$K?8T6`@Sq3)hz4RUYPq=nl4L|y4F>FF-9X#arh_g3;K7+yp) zv}Oe{5zWpluOVl~ckF^d>qEY{AjXY(QT=lHt}DAI=!f$fe!*vTN~8?~iV#qX3PZ;A zSPhBFC2V~O(7@*bSW}SpL5(FhxHEuW;{RuF8R0)8Ml5R8b&-MAnsB&)PYlsU0jP25 zRxH^qS)dq-L&!vtrpmm0Bn^?4akDhDKTmq54Yr$W|F|v74k`DP-Yu2hD>uXK-e9|4 zN7x&7hx?^`9l31cQXt9W*6M@V{mX$5U;kvtF8`Vp8h2O;juG>|Pu(zogLvpj8QGjx z^}1H|LcFQE1~&W(VoXON>x-OO)`QA3DTqAq$)x-F~}ugfA0 zLa_jOd=+mGVS%k{{_nXdxTMR5YH0USk0K)ttMJQ)G(h{xQ)_F!2Wh95UQHKFD(uEz zh~M`x71;ArGVT}llduj_QpJhJ$*cb`s_i+)!TcFcYtL9Eblnts2Pp-O!DH^~;CqGq zXAuH0eh&;C$PEvUj>!7C*CD3ZNd1e8>;MM%Ay5MTjSR{4-`l1CUoxZ+Ej1@IWh2eT z$T(XU4QD4!W6P2fGQ$W9gTHM;fNgDnZA>4?G9dY@0qsCfO)#zz7CA;gNR%D8S|X&$ zWx$d`91PO0Ddt*Z0}Jt*VP~`}BPFk1tf0REnMh2PGUH>iZ-!>(AFO`no2L_h3@Wi- z8_t4lTF)q!Djq^ND(j4w?2LAE^=MU=Do^sm!T@a+0K8}hr2ZvY+eZ*rBH`OE6qvsl;C=!xr5Lgm`K!FVvATMG# z;wL39hjSIG6!{NAq^LA65Y`ll^dCZD)~xPy6(Csy60OL;35A>fc`uwGj5qLmE^>52 zQF?+l<}(addUBLmLH_Em82WD_EGiI`3KSid#yH?_lEhIDP#77EjHQK!vo+{5EP@CW z)G25A6I-z-gj7Pv0-`)uLo9VFISao?yx)0S&ZuO^poGd7X9u)zLBu2&3}l%i`qbf4 z98j4S9VF$P@O}z&kwQc~o&Ak~#3*2RY`xwvu93!nGU8LA$D0QSS#%lf zb>U)27Rp%YNy^Yw*=}Z?;xPkR*yja+o2n=T|A4KH=C=0y`rL>6LjISA&XARdi^Z6i zdtG(nZ&dllN}jsfXXY_%UY@~Mt>CTt4i1i8hnESl>nXD@#_s& z(rdafsgy4)-N_Izt zMZ}p8w$9RHow?L|$+ypx^7cp=muu0=jDeCf@I#_kf~^eKKC$X;qHr7Z-1&rz+d#pQ z!c^}s38HkxY2i>Vm#ThOvw-6;XQ+z~#aSz2L(I5p|7^?~Y?N6x*@y)@y9l4D^wa)y z!GUjKpeNs^Jw|#|+c%9VZAasrQndA9KC_Lh7yC1SPK$L<4c*@x&}ykZ{&%H8HGZO zy1lxD9n^c{p-c|f#6oCmcBPYg$8YH85c5xsmnK~$0j1;YUU zpRg=Qb+RzfQK0`m3OZ$h|EEq0gvH&^(2SFl&CK*)$6hMxT<;BSic zk5icNaC2}Q{nJhPyVCVuIO@PSGgOSv+n0*-cO*Ca|3}w#21rpf?E{gVj&PE*ND$fC z-I<*sN;q+wXo5E@fp8fd?`j(RMRpn9w7f>wIt4TOgBy#ob)MDQp=3=Gxl!R}B5qe{Tf+Zy0II63*|~ey`z3P0*6%DF4sYyXe|8oCoP5Ap9r9 zKl6(A0!qN}c;npDeSg3ya~W{=7{_N;6Wa@TJbo{mwIh=|K0XOdIIDY^E^CBSJwa2~ zEyvZ~+p(`l2abiekBiQM*}hz!NDWmtb;Dwtad4HRBR%NaM8*j}RwSIF`a?cbV;kq{ zyj<6h2}VZ~St}E%>C-|UKVQ(FdS&j@6-|s_qt8@@a4H^5(SkN((yq6&SWfuJXdZ-|G<0 z^cq?)5b`D+6ZNg|@K@`?KR*^i>}*}4v@uUuaklY`)~}k^6K;G)bY^jVBDHMCZ({E! z{U~wpr0oFo9 zPCopIsDfI+W14tc4H&bOmgYAsH6ZaA^``GCf0v(tdj*_4N83V#3xsUdXUYPN)@0_0 zl!Z3~R{?^M0?8x4g!tJG;X+o(W3xrSl5T#krr2#ECfVaV5=sd``_V(vaZbIwSpM0# zRi6Ub=)YW+|26lrv*@N8a&*I%G$-n2m;SwWhqqrATWCr*(J`Omadg{Ey68k%spaPC z&BH(E6z9{K9z<&Esz>oL;ToHJKvaoM=*;iz@MzVGaF!Mb;&_reL!-#lrTEK};rQ1= z)u`B)NOjZF^bnJ+5xuQKKS31qIHo4c2m0QYg$1|0g*AAAzQ`Qt2%PEoy&gwp(xP*q zz4tS4Zb~NeCibWH0wyjwrl&R=!0j6A&a44YMQd_{Wd{?`@Q1L1X7a;nnGm0T7*Y8Q z9lD*yw(Dog*g7jPl%7nr@C%$03~8pNumem?7Bs>P!|Cf@udO%%!$`WmG+B+tN0$hD z#z*IXxK;&aPz_qPWlGo(&33; z3kj)yCFTP=N74Ok0Yr}>NBfQ;D!=NtG+UJf1#x7A31$l_$EWK-49q>QrcKL@o`*HL z&zSL7fiv;$p-*+BHKDIBXf|eL7BEjOVCA)(Jf3>x*rpv&t(;7CO4YLD)9?gCDB=4i z5Gl?_5KH~18GkE0uD%_f+ev7`zR6;!{(!1NC3O#?&$88>%Zu|1O7r$9L>jPcpX1Y* z!0PthQ)PEV?I=2pNP{6;@%Vz$kwqPt)2eFM+Zf_ckWumwqrWAbqNsY%GFTJqR-e8w zOB_w;&AT&1Z%m(IIXaug7Q?3QPl%jiw*;we`xU4fY&sgxp8dspVDH7OHydVB6Mm27 z^Qb0M0V_<1ZeAO>p=?{Eo+G;E3n;3o$1$N2KrU~K z?Cz!UEGC?y*_xw<7^4h2TxsHyaD1Xhc;+V}^%|Ck6i7EuefKiD3Yit#;&_r*|KCl7 zvkZSg_j=gs=MEPLZvgHz!;RZYIKLV2IU34|xErjLw%e>I0MD>_>-IANRUGoR&F^+? zXQce63FiA->_qtpp7IOf49%w-id$T!cq1P&?-JeegmlHUrPZW;p0YxPtRwN|ftUk% z8gzjRnU>c!EH(}Oh7DNN6TOO*MEIW+yt0?t3s{z}`F+vSu1hMmhVCOW+pqg@MVF{( zZ$22WEZd98TE@6~vA~&L9V&|~wg{&N_U<(>oIz}LrtPQpES&C+r9`vc5RsaI`kM zL{zrsHDSAwsOakvW*8`_G{wNCmcK<*zt4JivxbSP%rzDt0}Kiubcp``nDOzMAo(&6RKXvY(=cik=aU!-*cUSem~3$jxOzS>gYQ$?KZbX zgO3?IoVZCiRkc;!<8d8Hkk}g*-g?{XoKD$o-vmXQ!m=+mS#%L;#kF; zSVo!0Pu(S)0^qW5Evi*hu$P)WheBJ90nE^{WN9bl1Q!-&g5qx|VTiU$O2nV4Bu_zlo z=}M6Lsc_lB;8ny|DdzKRk-IRal}7LO|&6cFLcMtm^s_SJLmoATTaH5{n8T7 z3I#3b#}dO3GiNCLq-}|aE_ft8kp?Y2=v56i{Mt)y)mjnJzKUidQq{uJ;a24qV5i%T zUr`ag$;5i|T;R+=(C{l<`?~&4wGYx`roM%;BC~J1tYQ>~9rT+1IL5x;e0HJmS~M8V zZV?l+6VL~ZIcWP>M z67+@q@|BR7`K!*u)(inI7sF*PO1O}2`YfL3Lx$Nu|)k}y0dPAlH=Z8FraY}5)`=J9rpr=FFjeU0+0$P56Zb~Sk)6Almw-X9q5FM7wj+P} zX83J7@3|TFzK?JLk8Z25tH>i%VjEnznTK$fFst%5o2kYT&@^F_#JwXakd|Un%C>FG z1K5xOYX=C2O=kLyAd^lnde+R?2)LsR_k&J27$O5fIOEV>oa7oD^=k6wsmYG8SUCZ- zY(-bN@n>G=PIE^C7hueG3H=9in{*rVv5x*$D=t&Uwg5h1J)KmMfI7|_%kr`l=hPRa zo6iL9IBPIhWy0aS4tRpxl0Nrrj~WZn)*FLD>HpS0A^z-#1oS)ppzaMYLGnfEYnQ^S zP6@*RqS--dS*in536qVBr)_N#j(-}R1LySV8lp2^k4Fi5*p4Y(VR4?DVBl#?8qTdr zI83$I=jA(Xe6hh9cLDbe!>y@9INfk?*>+;s#q_~DBPJ{jn^&`vH+N2b(S{lbcpOVw z8DhP;oBCFTe2LnJ$-;(y^Gk^D-H>pOVi@v>2vsQlgMSADm5Lp`8^MpHvMShD9$%vz zN$v_H5DPqQxniKWU884habd*#s<^-!8e54rr?0<7e&(xaLsp%lni9?o=&B-LuBmIW zTXKe%&|r$XVfC65ETn}L)$%pU?&_Jo=-*S}xwXV{=5Ixm&^e5tZLp5jPt$i@V|45S zlSlUj&g%`qm#w-EHzoE-$#=6>LC?-H!P)r}Y7er{40(bvl6as=+t6*u+D_s4M3>-^ z_M&eA%LsaOCb~**9rb4~EKFv$UqT_m1r^8R_ZZSXqggw?yjO=)7}EsCYOidsxf&FcND(*Khe4ST10=);cOKUGAp7$};n>j_4w)n!0eU z`%!ZyOe5Za6R76~&K;lTO!D{PTLTHGX|@NU4@^wdEoFPco=(D=oDftuXsj=O6brZWCm)SwXh*B{SnBaG$L!S5{a+%Hg zIZ^rSknIa{u6gV8a>v$VY74TdEhli~R&`rA>FaHJlnH%C@``PXTsW|)JqPAjgI{J# zJceq=xfDMoHt)R$Q?H=GIczTW%_E>! zw?Z0xHEyxmofHus9mM6%( z5P#h%`sxpKG%M?9emI-yoCfCxcudW(rH6)UXfK8o+lZn;5+fl#Clp>N8;0uhAcVs` zLc#PfGxuIjRPe@lwPYMEpFF=r8>iw)=G_1$adiOUCepRtCT z2>3jf6||V>iR`|&5YPk>>IoSJq63q5m!v?}49!a|#{BU3k1_&h+lsANvekuf{k~hc zko=y#*?PQON9~!8$MERE225x_s%thOHI?6qru;}i9ac9F+~!F;N`{dJWv37MC7j}C zal!v+BasG8526zS(nh7e)x7oUmq}=X>-v?p5H4icHi8uxQ%|c^@~1A5Gx_OOBK7(V zUkC*~llF#$PmyM4dXoo#3_JJ7>>!*O^l64ycAOI~!_iOLZAaJAGIo5ui*T^TnlNA2 zm&QauZz|6X2>z(~Oxj(;?H7#ZXb1@5UbqG6w*DBNuw9%7U;ZkZaB#1MF~~in^Vd6W zX^j>%wBR~~e^&ii0bRd!r@SIZmXo{~8(;Qula|RUerp z1{}PBEk%A;a$f^YQ(SKJvlaf;ZjzLHEer{NENT) z_gdUTTz~zGb3a9F8oMuxuLcwkJ}Lk)laD*Fn ze9{Su%lMlyaB3W?*vyXVaROQ#lVhO*+ty~s@Yl29-@HaZzgLHEAi$2AHMbwtO@VcK z!VEm`-XvTgq*%B|yOs&I=c+%I*xW8+=4^0>XblaXBENiRqCs`oKO)6>3@ShC+p&9u z^C>WlLl1HD-hzCopM3#bHZ~b&5Kn}4ay(u;q;mt$t+vJj3iE5r8XWVGfR0M>WZc@7 zEpL|=hcJmX*tt9R5#b<5eTwF`dE(qH^>4eK0|Cs+G=y)T5)d(H2&0m3(jpN?2GCw}R}<6dUX09jGtH9;%{wdxl4$Yf9VAm3GB^rG$! z=?EOcI*b6WZ|+4nQE>E?xiA@LC9iOwlqu1K>Qe*IKA5;)FtTUgdT3%8X#@ZDj{Xwj zE2bix=?@tJpX@;uCsEp$pH39}3Qep^O{6w7qo7xoqeR-J-LI)h;kd$9wsRVR3;Dc$ zD$)k0VJcY;+4E$G^Rhxq{;{`iHc`) zQ8Y*50JT8Cat{!u=3HNxbIA*mn(eC^5cSxP7F-*a>AHdbcT<6sy!H-JA#5b*SLJAT z>elPyz9YTF)d!@}xro$(Ro_zNo)BsG;PvZ2ieM1jESKgMq?+Fk-CY_i$&gOl*In6% zKJy?#if5){!B8F3kgHVEf;;967}?C{N7 z^-_a=QA4+^=vAIzutj*hTB59oPMQ)k^BcQWGvO*m0NtGGM2on3B^2bAw2li>=ulFk zvam(Vj~-+4l@L^8IdE8Pd~4~EaMmm0B3`nVXaON$K5u|+W?!~5X~}e!i76co>JU!x z*knm$Z1LPTrse|lY$y|4bL$h%v^@$U)EY>#nYuPRet7zh7)}eu_}v>4&<<*bUzc4> zv|)Z6)9>`R;kk*~Ag^E!Aw>$_Oq}Iz4hq)!eRC@j?2bchdkZ4fHAM?5hD&#XOd5CN z%fT3aQ^ssnk&h$R-cSQ>f4>s@(e1W(cOgGS7`LysA<_VHSc0bPy`=%StUD!3Ca@P* z2aoh7oMY1Q=dhhVZ^f*(%YoxToM}HJoDXraA;qZ8#9p^uEu*k@Q6m`Boa;|OxGVe! zqLHSJIvTluHyT7#A=v7)kQ~!V>#(r@lRBg)jby@jpuizwSNGxAaxcmsA7nWJlTg&} zz{*GKK(RYj+j0Ds70pDm=oW%fE5}o}ptl%)OFr_c^IgXrSsgC?j|flhBq&3+j%Q~= z(rH2i__peh^0~toJ492iP`S_Pqn4`rbc7|k`z)Hq(K%>DV$(rGHRXsNYFcxCxYsOv z5f^=sE)b-!uBt(whpAqJu37l4P?JtEKNKNsp5u^6l$N2HjgpoUxN^cb-EyFAN|EqN&d=YWwHc%yAnW zvWfBSgLwqR!3~ojKWR#4%#$*#Y!<>U^#Y>wn;ODs<(Ly%`ro&l=vh2-RMgwZv5|Rj z_9B5(b;YuHV&b^3%@%MeMU`a2?hXvn*ouDS=jk>-<*(drRuMLgs0$2eZy=y*+cxeZ z(pIF7w)pID9vpVb7!RBOL^v;Yr-^V-dCe+ADYv(bu89V@U3K*)(O|$(4Ue2aN0Hid z2YhuUbNEmfp(+*LLZm@2oS_IEmD^Ba_dJ@vm%?Wo{I^jvIHPP4j>V_wtj?RvJgMC+s6b?9~?#i)=L>g}mt=bb~D#ZF$ z@fzVE+Tn@yv#v$t>+zdJr38F%r~28vzOavE+8aspiMmCkUNfZnaffwJ?w#oy>$ewy z^62y5w}}+jXeDVEmJY$*z|lkH*4F~XplTt^45L*n1C?mX{y3TV|D%W3i**%GbwiRsemCE z+oQ_H1hDLXan;blu0AI+95gV8aQ%B)6VI!^Fr2E4L9_lVa1I`)3cAgON^B^{r7e|2 zARzSUe6NVqhf54BxzY(qGd=i1^_sACMrC71%jd5NXCqPa!?Aj@Ur&h@34Q9vFVh5i*ODMnR>vI#3F6$MXknv2S-xW9yYfcUg-j- zt6;I9%5xIle|l^7Ry0_J8Jtt5C7@pgXWDWU40W_-RXY za7l7#wZ1jJksq6!$MAlViGVsnC>-0z<}ftwQr_<|LVhp%DXYLCCd3NLK`_+O>-!qC ze;XYY>VSNK{3@I1sUOUQTZVgwmMN&WUx)@jXH&W%2jMKuX9P4^J0Oi~d8++=`=P|Y|54M(Gealy*)oQ;dp`}L-k6co|y1>?AG{^n6X7{#>NyP zobC-e@a@G(l8At-d%xI520Cs|){77jI<*3~Digl9H-Gg3IfvdugR&qhSd4IrsUiZv z-CSJk(3+uD)LsMD(e3Ywj`|UpiOk2OEJ3{FjhXW&!WW___(E3v7QII}2bVWh^Gm!- zxIl2~#W>(zi}uR?&yboBU!x=e(VF5{ZArA##6&kvxhr!xMPhXCol-<p+CP~4J!Q-}%yfCv}hbsxluhzr^yLFI)NFJ!P4h<1SjSA0)*;M0_|rl{2gGn`z%M9%v~5II;MJ!l7#vH5KJo_65 z6>J;X?SLzUz zttbdClULM1T+YVO< z`e+ZkpF)GF*(QHmoL*3`eU3N86x!6=W}KjiK+5fxWn=2*Vj4_8vU}aON!&HNHM!IY zdTKKHC_O$VASwx<;DsV_1kK;>x*PxKE9#eE(|(D>fAFH$F-?!$HzF-QedVgLXrd+? zQ}K2Jhuf^*G??uyqJRHs5*4CIRNYk+fcSTDt~2|;MLf%a>h6)h9VDEhIvyRjBR7YA z;Vim00y7&q%Q`BH4QPAzDO%qCk$Eyg(x#+&FE)7DBnj zBsD{hIZaX!Zu0J{D?{QB7xey4jG!%Uo%5^5@Ahi9Z#gV%%VIH-&K{*4=8j{*lR&r@N*(n{HOwM zn9@l_12%g9SlSa_HA~nBW2TF*DsZJ+Ubm^>&H30J38$FBKp=?BV^5yIKg{ot^xJPEe3^A|};;Wz{x?8B;W8zyd zYDbmF9LpO$dN$!;cZX>;7-aMOZTz;%matmlNSK5J6l2x>HdHi8HoiF$a2?B^KvaGu z2!nyN4Tw)Romx>jA3DNQ#%c%{_8qJYauy-so*XzHcoZ&tQLM~Yh^(hQ;RyzP|Bo#j zy>HT*fxCSQ*?;4+$znvSX{r6^^LcPTkYBD~;}EVM6F%fwL8#ildwDuQ3l^ zsS6^G?gmS#BbrB3LdfKHFU`<=HxDhs7UmfSd4C|B4w>(TAJ~mkSGL-SAhcwvfZSY0 zIFpj{E$9C+s$(ncTR~*lT(BN_-THRytF?>g{Vw)C)VqHKDJnt)osb-uNt4v4_K6kY zi!s?Kbm#gi`lw^Uc7Z%gcc0g;+SD%5t_0GxYl#%0m)I2^#_7(;`-2is3Xs0Ho=A-# zOx1p#>NmaSiCY`Og&k41XXlSZ>bGql5?0t(YwKgjlQw*ut>^sBgi{?0fgW-tG~(^A z>;kRBe_s*NNrko%rGjb=e$~tN^05G>~WrgFMq8r%y_eWfRt#NArHZlW8``^xR8>3*jHXOd zjr#hFa}zK#Gngf&+8)9|g&+-;jrYmNmC~LA?kH0=|3zsqtb`va#y(Fp;{~w+alob6 zPh{|#_)Jx{hEwj&TpCG>kvj04${|61hT;2%!K&pLx25C z9?&`L_P$Zz5GRf@K|HRkV|Zt=Na{_dBZX{$oszhz9xh;_fj3^IEKE@U9XMfXTziwrpvM$hY00JyCT_u@A7N;gyw zDk|n=TddNe$7h5S5lmC{o*=b78YCmrVF#72IH3lZ<|I>^v;R#v&1a#$j>FE!FZQlJ z7(RsU4uKZ`kSGm!3Kb8J?Hze<*^OEeHRPv9M2aw2g!O6cV2|*5NhG#m&NUGHKkRl^fz3-{VrPpJhHj&#I`OY=_awJvYm z6CEvJaa;;U^XG)KiCt}z^?&(WTR$iFT7TeV{cruhg!6j*euP2QcaNxJ#o;9=w(xVd z&ShQ_&I))#2uhUtNi$J)$M@Y63rm6ptGyPaI!e*HvfGKYYVDjGzXdB%>b$Hol}?cg zO{jiaWrZEg?|%HarViZ4Ok~}8i*QgqgN~x`TimzZQZA?qAg@tVA2DKBU1V1W;n{Z2 z#jdiGw-g4h0&8%4TEc}CFCviLG7`a~8DIZe=#xnBXu1qyP>5Nwe6p>Y*7yBQY3jGZ zd{fMayiVgX5e@~i{K!{xcP-~z_qU7!jK_{fXCasoBK1Qxncg|F+#sWF#K6BTE7AIc z2<}hDsXuGq;rEezlZ*w^i)L}OSP)o259{0hDLv|hFBTHaeI~nTK|v7ADw1TKlg@5ID-9Dse0Mu4LMfjFii zdpK!K$Ch5d6J9k!WaQRH;xQ;K6iYPul2iy(xg3tapOvaRb~1<(xq!$$B9s(&)_ElxZIV;_dVw6po6=V=HY25XL|kCFN}`btfTkq6V8Cm4F$ra_DWVmw!?*I zFY<>Ey)Bfgl?{p18$@9`T`t>6+$Yu&8pFQEL=_AerjyKB^-bLuO}~pM`u_-0zfVE! zBA+DoXsjcSMpZ>lK{7FE8=6oP0S}TcaMC2*F@&3_{FX8rIIctd3iC8hcuFG*DbdVE zB}RZ9k+M0F!3AYwL%OEqzj5L|{=T5nbQSdz15CTU_S(TUnqU_;VSazx^N8qQ~pvz%^+2Kn{>`>q5;;vqcJyo7Rrbls<=0FK{A zJUs{(40*jKijXE9pm3ajRk!NoY5<;O66xcf0vPanypB(jWYp2BYx@5C1oO^oSncdh zI9Lf(ROFUslyKKQ@5kgsdp&Vtq)Xznj6(hDz64ZE!*F=^^Z6DV@2-hhrwih;N=u6a zz$YJav}iZ$Gz}~re{L5 zb0W?`&a1`?$m*~A+}eh*@+h8M&{F9fLXJq#;zflT9-ej}ga&cTbFt6sVFWb1sD0$& zrj9i+QClg%t}r?(>r!J7Z-5QwH4P}*Ntpl>78g5f&eP*F(a~ls&idJK!r6+6ASJne z49#@?k+XK9gibQqYg5B2v`gAy0@Th^cQ;?UxjxNKc;PJnC!F1oAtP9xdsk)VE0~9w+>U zV(l%l;_}wbJf3hU-H(DXAs$ZovVG@Y4NOK`wrDAK5l};Qb!4|lQj!$l`>QXfEr*Ua zU{W%;n{YO2^rJqJOY$M+<>AuO2E`i`V#?Rfy#&NP8|G&@oRUV^_{EIcdC_1cCe)Vh zBOGdZ2K~5^xL2)r)4v|HLwg5kfZ^%eqcgw~arbwE1d$BwOU}yt>7tss0BOeNr0)UI zR0!ocEq5g(7}Z*=IT)^@3+-dwK|zV3Ad$!=!2T!4wZlXO3mS|>n#AEWLa3M{a21tdk$iZQK~(Lsr|1DJMVXl#8Njn zAx3~a)&Q!tyQg({t4oD8MM}|}J4K{HkA^}yJlbYYm9X9&E5~Dbe*TkiUc?eAAxGM8 zDu(gH_+i~~D~jsP_IHbOqCMER0-8Tg>Kl!}QkLUKdVsxnT<6S71awT~wIb-!BF^P!0hCzM&(Fv;8- zUg7QzzSnh1j%9X%<0(eh>x?<#;cfpsCLH{v3MxQzOHZloGje{1G38*!_EAp>2zR0f z&LXB3IClr2b9kx1L<(i1`-u;qjDYM6v?@+WdOUHFN zM~7oQw(hf|-UiH|qK*M>{9V6xXU|_Socs0Nhid7RgoCFWIXk9NE9v@DgZ^F_$0cvR ziOEbrT%h2@<{LYrTx>^z6e&b@2u={m@=5mK=JOw3Y>b)yo^j93M4ahI9dfx=5^c>K z8NbU;f#64(;$|U`6tjo2@F8DF-qSQ3XHct+lpGae4W7?IK$Nwow`8QfNkSxZs{>V` zeMHS;Lga@S!Wk%WLnntkec027|H?c4bhsyST5wBjnwMy)mQWB5*rc>HsCqAFo+u{l z${=lyz&(hV5CTe)aTwRv3O0Nmjz^#$J85Y= zI#eTmwp?$syayM0)VUF=LfTwHVw8R1mdJ?VgH zF$9lb0A)%Nl^@EPj#}kzs%B*tPPz*9pnWkn>$XV58A14v-BYi`KKvU9@cdf1xduMP=+BabiGc+O%*m!{ovN!1{ zXmP(U_SvvG5fecB0Fl~?YNMu|B=3l{>HS$9NQ@A3%Zh9Xop1>F)KEwyX$v%)-(5&| zor1M_jjn`p1T#D+V1+Obw#5(jYaB;4-c~Z1va%up5kwh4IdF-ysGlOp3|i2$N@6qt z1g&Y(8WYi)=Vz-U&o62yQ}Bu)Tp5!916(M`54b+VeJ7WP3#WY~gp%H+f#^4?A%t9I9f>qLRB|Dr^pmM7Q5-dE zu`^W|7EpH9z0heNjK7b>yr@Y`7S(71m8Gf!SP?HljfjuRP%-O*%7#BV`pZ@k^}u07>d=Cm=q=bA`B)uzh5yA=|_wcv!Db z1Sw1{2C}Q9ual}Xw)xpi6y3w`D%FuT3$83< z&n-P#(kBQg5!5Hz8z@dD45d6g%I88t&^U3>J-23?XRBF!)gAE)Oajb98=N`J+6%EqM zbMjma`<8&F50B%>CVlE>&bzgLXpk&ZW}iVYL=$PKHza8?n2NaA8!zsjtpZ?IwhO+T zMZh2`0Kw!c4Uig~*LQn&%5j77z$K_2%n=R3eS*MicZ0Ee%iNzsM!m!WUJ{f1K97Jf z-J>!k4+}Hi`*cr1bX1sI|2r1w4|Vqz5l#)kOUku`rM=!gNQI&K-MTgIDREE}P}dyk zkW3QyDOmf5RA}#Gw(?JwP0M#UP@19lbCj5%}dr|$^0v26HI4h{45W#h4m+IYVuY2RqtB3IKUNGHPx z)PUpF-J%een#_5tn-~El%geiJu)x7}Lq*+_ew_Moy=SqPSJ8i1-d$^wYMbaks`A0U zrL&Nk)^^=fEz#ZCn_>R z;VoW?J7@)(p6}d-dZpE1B|1x;N>#0r>m8}Jxphqt0 z^@i6$^?{&53=mSM(O`Eqq$cA_@*eFtG&=*ye;pM=;dh(SH)DVZ;4`EEo5@o!<6%>Le^~Ms^Eo z3KbB?rJ{I{-N|@Qa40&G`65x_%~u=czob+PEY=0$9k-*$`3O0kO?A1#Y2C&|CRV}!!zt$i+v=39>*|}iR6fIPnRcxN>P!2 zBKwDld(@u&o)isVd?Ac}Qv|7_DL7^16d}4)`U=l`=i_kW%YxA^Jfp9|%m(YP#Y9sr zvteyg6S$IXz91a3?%=9)*F;xh)BZN*;!xoD6Cf2{5sqpaqHKxGXf%urA9g#_8bJ7K zU1!;)*95fvcpVp#+PyW8R9*UZELMf5!PqHM(*O}}pd)xm#^EYfJNw}Fdm@+d!*3BS za)BJp$3sR^b=!6>1=`>~|DO>tg`+1J4C9_rL=s&#l6XOGxv@*;%uhXaUb^RT$7as;>H4{_cUz}aU!&rn6^Y}dwl^%<%t#VO^w=#lG9PJTDt}?s~zFs zQNx2-ayaIjHO6T<&?G8&))CKTF?C&Z7n7KfNJXz^CX=Dl|C@15sDwxdCejWF9G;g% z+Mw*=p`6&!G9pu*r3X>bGipK9&T>Mx; zEfgC_bOjX}K%@qq%5iX^OG-*j^lnsfP)4v8FJpXrkQf9NlZ9IB#syREp6>}ytS7up zh2n@5r?(^cm*%$?))m=-`Kb~+X)EPi}3RC=U-}|`q^2n9+?cqdPmu8rz%@>~h zy@_c%&BUScB>{0G@Kdh2doGr4ZQng?))8?WJH8f8pcXTNG}w-au=)IPM1}IueiXoB z-@DV{`jO<5ZuSeDj$9oCZ?iM$#E4Dpwxjj%yy7%EKqaT2k$UfFKhlFu+A z?&HZhpKu!7wkTr8YqIrdZp@)f@430%i@jz60TDXvATm+Xz=_Gn?rQpAB|5r{ZQO~l zcB7*v<>?39GZ7b?;l;YatC9tFS|WO?I=bbTJ?hlpcR7o6CvQq7W}>e81K|)r=?SSS z6ZUU?yXn{`;O2_LmM&QXmoFz^2-hYg3NRyl>vOlN(Djuwmv43A2sOlxtajYnClIlLxy6EuiIDG0n`%vJ1(zsz3Xxby4SI%*GHL{$#ighCS&5eB<95S34- zS|B`9Z(`TUgZ_n{HTFICI^PpG6b3^11)eWh=Vj5()zGURm_k{%%eIr+LkT84W8&ej zOr<N8}Qm@!4cEs3YI+rR%+iUQy0^-Z~r#(P8?fuIEk3loEtFYfC^ z7Zv_G)x^Doqc_U%HZd=D^t|w>Y@~G~1jf~1U>^bTIx}i~$q95Ms78)y`dKV+WL=g! zdIbd$Ava9Kgri`;%n}e(JwJSQ3NJ!LJ!8No`w563UWAj&0*4w*kuzg2ij;u%>T0mj zLBfSB82SCYYDU*ng9?9$_QueRhNqv7&H%6Y(nE=3L-e`jarF_!isL1U>5k`IM1W}Fb@};L+CQz@O>VtETp0d5 z#3rmcEof~e~b;)@jR>+adV+ZJZ37`})H1+d#v7fb_E zm=ADW<9?$m-9LIt`I$rDvXdvOOCiER-$a@dPn#P)_JWt>A-A+=C`LGldq1k4$!YPFo&R>PAB*7CtLMI0UJq7_@AF@=!)Zkq_;? z6~g9F5exErNut&9Vz{518f&jzvZiUIzI565i86?4yC_X72^$(k(IUURi}xy`U~+Ly z+tMO zp!}Q+S;KA>O!)91Fxjx2@`~>95zYs(3tcsa?fEiorsjGRr?NF5+6Y0MBmW_3->8iu zfwuj!g{iD8czA_Dr0{rS7+joNc?P~1jA3vc=0+vLq3E;6KoV=xCTJsW-7`ZU}63i&4ZQBu{2s{6tr8$ZQF=3plJGXkd|9UeC|Nv9-kc%J{~mw7Oc zi5U_&*8ls#TF{c(!^_>K#}34?;f!lGq|rGHhYE4X3$VTw0g-WH2IVk%+6&WnXB?dw zOfrH!Fte!*!I0{P=h>L$KXvTW27$AQ4;W%D?gxn$S0Xjw)0jeE>)peDzzG~xkm=>4 zLWBzjDTja?ecyYzrNtEtNntD0va{$Lsw!cdaC6YZcU~Td$KhMi4T zTWRvM`OB2;hRLVY5qSVHQ(EemPTz*lBgWH z{zQuR>rhFRD;?|Fz1Mp&KHq_H!fyf>P%s2d&bOhi>3@8-WEuv~RjBWVPVIfzVhV7{FGauMSvBxJMN&ceKz9C!xx@jSrEw+nKO-O z5wYe)*?Fea#cJj2Z=yC>-@1KEI0LUJLJ^h*Ph%R{`}CH|z`=3k8dIa0qHjt-S9DF* zhX~mD!WVy15uC$pr)`)mfKYG!CKr!-%DXKG0GEOt^ZDk9js{dOVi;UJlk$Hz#4QO# zhT|QQofioh{!gC1JMnp5o&B1?nd12jIVFpR^F_M+l_vu?feq)#B5DuT1H7K%a1VI7 zLJJ=5g~Z`@rg2LM=*6bP&YjgF>cQ+j;6=qMr>ERWnEEyaoVb|2anNs_UCAyUf@ zS+*8nJ2LZ@r_*=fZLHKa+}vAdmuN!A(C(G2j%l+?O%jLopY2#kSILp!SUN?WCD{^Pve}||v3vVyO z80zkG9&3AEvW>xb=~|R00!Po}sjOrS(rIdbTAp(6Z$iAvb8G!AdWC##O|e+)(YAE? zYEnUOjkUM?A>pu;3L?W9Uq9=aq2Yi??Z$_Xh*U=~xCe9Q9#WPKf25u-<`$>dHyP7{ z)Icd|!<6?mEko7{cbC)QfD>U z9IUlF69u&M3bs~O!r|FXowD=YIBjSB>Z>CRk~$la!ik4yWDo1ivw+fuH~y% zfPnO(lIr|FB|D)<-@scHm{*k3g6V~Aje>FWMwJ7LD@=B0FD!=Rz|do`w?ks9rx{#f zBbFSAc&@F{w;16R8(G(;nIq|X5Hqe>(sf;U;s8+=ta)*w)I^Y~93o7VAH?K-xH1w) zKC1+ghP;Z3h*ri&848p>PByVA=!`6MKPyEznA=dGS7FRivCxN}$ZN#%{%-g_;c!X@ z5i^v$gB_R4v>y-^%B&!$LJlb-P7$ov9J-~TLVO(dv8;vDFi-w^tS;?N1g9Yk^?yIS zyCHCR?$FX17m9B~s?P9G4>U_b9S3;|sRt)+G~DErcca*gNwH6NO}|X{88ncWym+l<9c)W2^T{7OuPlctSW2k_iUO4z2eu=xvCfq z!ptm1jh1#o(r%qZFd+sVz!O!lM!7rxk3ORe)h*zjmy|l;bg$pRNg{dK=uW% zF-@45>}e1V0Wio?)oU?emY%16l9wqus`V>($ZQf z+Yic)C0fPiVs2&8TWCypXYT)9p)*y83MwBW;JBsq>(N7+UB-m9!q??(m%6IJ;iw48 z`Ek^L?eo+bDA9mNC}yorFt8goA|9toIvN6|u3dK!>TxCWV)d^z2?(dSgTgD)gwZVI zt=(!z2o3(u6zS-CqMtS_E~tf;v_0V7j_vd5kgMSoC=pBc?1n_@Annvd(fy>P)U~SJ z-m6g>Q^8G|`x+6>@I!gFxYe}Fk(lk9geHr%%-@7a;ZM|1OIYd+HBs$uO_8t))2d4d zL^UNGDx?}7M=q{HqZdpCA@HmjQQ4XgIg9dR^YnFR`M{;Wfm6ytzQ`h`Xmi48C|QgQ z5XQ1UMD6^&JqC_Cv@TrC$Am+rNO-jU4H$5I%e#xqpus}yIGoi=098EOgohcD&NK~Y z^v)Ij4w34A58Dtaj3OG!K(iSunm*gTp6J&jFsD4G&)X5sgs%iuSS8a7&BcQnWj9_- z);W>aA{^`x2wPNQBt|2k_r?aZ54;n?cwB5A(c%?##M{Z|E)Apc{`WuVjlK3e%yAQ%}0g(|VWN z+vaUDYDBZ$8@-)yaFoI1EAt7l)Xf@S#hyy`{<<3Vr^ssKwStNxXY^Bp>6TpXmN{2c z)OgL!{A-R85RMrHm+{9Ck9PR=_*`_9o9u4fA)Jcy8i$5-T$iHPmTKmEQ9|g$q`P z+m8qs@F4Rasc1Mpx|8NvLToOOWo* z2#0ubq^QcJWys^<$?`+1T<9A&`lfs-#soE1cl^O8q7!TR#DsU*o;egYnk<)M@M?sAg>CpKQlAw_8A?btEhbD9P6}2(wyDS_0Q-Q;a zPhdLk(Z2lCAN#`?G&hjFOhxVCQCbA`*wJh_k#22HLu4AID7q@6P`7q>e>{&qA7m2q zs=#>>rUL6Y(`9<}-n%f%69tFy@zc zBTbff>bc%{MLB8;8}zYgY7dW{ThMys5KbC&m7_T>g;P8d_qx~|V&D`|fVv#+fzNM! zV$7Sz0=&71RP~`OiI->Q7ijQe3wcTd?09)Ca6vyTDM79^x4Ul4Sp-gOz&LS!9%>Ku z!BN`C%E|h+Z+q^a!+)O>p1xiM#3*oS!}~Q%4T(u3B$aEKFfK za9p`2>s1MA54omrI0tI8_2_qQ^!YYeNS?#{acKflb(vsDw!%__k>Q;E;6EyFz$51t z5|uAgt$iIZQ?;1)Bu!bu(OY2%`eI7^=28>yPr-01vf)fch(CtoMcpjec$p4*aKO!e zD*^1snC2rqRYH;u&Y@%;k*k&Y>~4C0h}X<4T}d>EuorqDP+qTyX9NE2*ec@lD6i#% zsWT}V@#MxEb4P_Qyb#fsJp?5lK=Wx1KRX+~zo9NE-<-czRHGIk=`8GHb{;m$S$tR; zFb+@VOI3q#h{;1e0hKdA@oPD@(cL=nS-Srn)+j?!Qw#}D`GjB^PCBGF3;@gM#acw= zrC?ROO5vueaUptQHdNINLur?f=?t|AXK2Wlb8UW_umycjWe)d*u*1zfwgpild&P@) zT%>-y+3wJ|y{(7}PY(DTn6lmd@XtQgF=Ke*#jF%O(ngTtbryI=dDXTrX84wnH;y~U zCVWCos2WO|CnHKdJFd5D6JFI-XtllD6KMcZHmJHHaVgDRr+YsXAX6*u#;#d;ViFE- zf;yHe?{XSzxlI@A%!*iZ2Zo5$0WYA6oWu{*#5>I|+I6w4!?3sIiT}_RT|<>_e=?cY zVqa4jnnP5mLyo9SSzV#8cbVR{=M4c$nV0mT-@)1ghfpGut_P96b*Rx@JO~_Bo#}WZrV|bu!nBYz>c)MYN4awyV?v2I z7az`KZjs<-R97+5PXb8LPL1+H(|?t3VwZNvaTV;Hf|RQRU7t zjHy5PK>#fjv_#={_l*77;8;64=+XqxS8?S;kiqPhd~F#9QIl(DDfhik<9BFS<0>WlgiL6U~*>CdeJq6EaT!T zb&ZyHR`n`zl*GUjNTYuu90HKAZ&mqbK|sMhxLN$Lk;s$)BslUp-80rOVMOUN_;aAf0M+k=uEj%`t zO!VTJRK@d9ln569&5jcgxk3p1mG=Qjsz)nVUTBMs;$=eDj9ofOI7A3~QGeMb8Y9{^ z)~@4eB14!1UKx@F6CJ-*`ZvryG?Jk{Ns!`shY%iqXL{iuiwDl_g`RK^n|_v>z$Fll zb)NW9c+@AE$+kdon=&gNK1Vn)WgbJWk41b{l!*T z+p|AA+ZwnmjQ4Z=MK}aULRXUm2g;D~&uCO&ToVZBpRr5j%^ki*K)eR+F}cFru+_AS z?Xa{+P;w10>s^B3Wg8V0b{VIRo$*WRuQ4$<(9d*HCI8!X_)CZn|4l%IJR&Jh5(+}_ z(i1gB6XNSU5S>CX59F1&x51UNXXb|QTjJp8EeHdM*D)1NdE{vK+sRv568@nEkZ6SB zYTU;9{n3YI>A;~N2zj=0JRuyFSO_={bAWxcWW+c3F>G$9p7cx%$n>cJB-kV!5$%LE z_p{N+b`)Qx> z+$X|JI5w9U1?t};HAM0Y(8`nw$4*fq89OI)6RC<22VC1EdkigxHt?I)Jur#~7=^qo zl)Qus;X>?+?jqQT!qw7|m5|qQ-;1e>NzOf2|&gP>A1n4w&$nlwQT{%#z%OaunugBJy92#-Fg zDo@&rtkinAr@_rSGD}fCDCv6A2j@4RdWGB~vl%yE5I7|G>ONF^NQxtA^<(#44=7L> zrFdMsU?VJb*vkrHdkuw0_I|(b!59jS=4p!s{RG4-X&wju$)pX^{A@4Y<+tR;>L`tH zNayq+HQOZ~E93ID;;)`Rp}}SBe4ecn5Dp4t`E&7DvDBJB5^IFO=rXK4k)nt|NW;k7 zeQQ=~M}Ur2ih_|vLRzF2gNsnq7B7xT`oipi(2zV>Sn9^;+ zKj#!Cv+A*emW<6Pg_D$&IH6(TYO9rGIbm;2fy0w_FeFKwM+@35caeb~hkK%k4Cc2m zj#=zd9WFQ&c1hXEiKa;}zy z3nH@@H(yEXAl&V7PnvH9?lL>fo3|nyN}u75VK-pQw{qXW2{i%aSCa~#h>pUB2}MAf zXsh za6PI+y0&ADE`%eCJFInb96BvghNYJcdc!FbYw+W41f(aiEnGB{asiF0d(*4=>FRKw z1(NRUK{yojz^h)mbWDoJ8a~`~>6fmNfbyKZMdyM6XqG&ScUSiOZE8neiv7N?AQgGS z{H4_h$K>fpRKb9aM^E`9wbjR0T|5M{G>-|b>H?=wGBqxj?!kUsxhjsDc0 z-_~rH;pGxwG)pbl&FoB05FT#ZZjk6GUdIYR7`q$nbS_wX2O1;+F7N)uLkSl^1rTUl zE?8Xbx~Dhl(G8N<2xZWM#LwhqB`;;C|IL*Wp2QKxNaCD;r zO#J>cW+uiKc8f^v8Pwm#5ZBu@*>p;Q;pcc5CZ63Ya1JL zx6{s*Xrg%)_b5D535Qytcov@X{O+r*4(A0+(35iV=+k~nxB%W?MS;v?;F;)(4K>hI2v2FU^?^KQObqNA2$BY-{W_`nu%v5y;^&AtG* zJ#2HfpG`OiFS%+ku_Ogjd#Mgz&Pe9f@eEgHF5w`(V4#wplptL2V%IBFo@bH3B`IHn zy!3elL~Q{$Ie2LQg$~gG? zUB;ZR1x|JB01DJf_ez?vk+bR^qqN?Y?9>{&lG;OkX#}~3YBQ!jxgkgUH~{&RkKe8q z^I&=KDwo{RqzhSPEm5HkRZv59WcP3y)zb&Wg&Xe>+qsJ%MZUC!a2Gda!_+TZq(dCS z*!SGKGI~9=fR~P7!QlDKjZUWB{Sxc=73>M}=Bm1baB%)8C>PYIZrv2p`<`;QCECrlhgu~SZY$Gd)v`Mo5ly*#b`{k@TTA-%W9zhACAfC2mXJqH-bSdaoPWM>3 zXES~kIL)US|9>@U?{7qe2mkO+3|9z${e4mAa`?Ezy5A-dheFK0AU9l8m@@V~Qb2i> z;@01(J-ka}1~iL@MUF{TbxCtH#v@VU4iXU0G2!8DIo^lnYit(%301Z^!Vc1xhY1H~ z3=+rX7;^D)K)Nie4-!Z7Set*363}ZPJQ@}3+>BJX+xiQ1;`2vI(w-n3>hA=DNF8~{}| zR7H}V$0Hk*X-rvW%-ToZV_ryf_#?t0T*N}2J6qrJKh>`n{+y_mc!>rv-`f9sJk@(aR9+ngI8gh*y_kP>pWZ`cEHfL#X95?* zr(rW>(mmJ67b8ZZS8HfBhU54!kuDVd^RmL z;YFOk6_hU^#EjQcwk#g8_YO=idaQWx1{3!WXKB#t-G#zX0hzEX1Cb(>$&=iJo?>*M znw*iSsLrXb%Wt6&uSKY~2r6U+BW{^{7bEiJnxKLo6eYrCzNKNTtvGDq`xrhiwG^F+ z`ha@f9t40%dy)FEbW!dneZ`w;Q0MK;M2hNj2GZ#msc-C#>=f(DYp$itCWaYOsn(~Y zF;Um*R#>%sH&~0C_7-L*TnJj6KNOVJdD4d!u!Ac zD|uVuD zKjH95kRNZgvJ29m|5w+Q2k2a_VbToQ*U@AhG|VWz?e{GjyRl_(5s{^DMV5@^Vk(Sn zj3i5ZBn;+;L}@dXEH$Ob8d4@9iAq^-LzeqIXMCFTd*{wS^Ury{v;59^&wJkGd3(ID zJr(^aw?HAE5N@<>bqFN?7xs?%kT>slWBLY+ahNm*#Sw&_T@uXEh~kepCazrj=d!I&Bi9>`O3V{ewuhKIy@fXLj5lF@nUZLqQ{Ow64 z@}8fCEhYoh-%~Ic=TODWE1oOsW@h#)I_D)Yp4}mm)IwgBs^*V5=&}Fq49Cq-*77$d zvMCD8q5Qi}=+2>iH|)fNRKNKO)~B8Sf|?P6TP=E31B#PH9Y;@N<*7R2i_D!&7+!5b z<|&D)hkwnhdHf83QqdihP9RFkqPUg}w^9Na>pW~4TY>!^8%%NzmC1QLmvO+7Gi{N= zp>&D`EdScZpj%&`?!^1)yXgfnq$BFlyKO~)LaXoV47otP?%zZzDKre)c)h9L4 zs-Iu_i-sSWJ2)znI2#=8MUt=laca`zYcbN_h4xkDB?3V^2*Zu_Z#`S>3CueG4Xt(!HR-y#7q3GB8UlTcE~>G7JcD5xd=Xtlyz^kt;gw z6*l$bF%IXakcE-2+If*0JHqr)lTCA*aO^9GxH|O57=Fcq>3ejn!XZ}LhtLG`At<}M zLnpqeYKcAi*J9P3%?CmqOGxa|jVZ5HyA9x1Lb6|5LZHKo5;maqG&9B2^^N5VwCtJ&1>IBa0P)8s7Y)NXFnyB}i3$S$KRu65TC z2i_1QAbExKeD-W&pbrxB47V9q{6EA&8lVVGK&JP;armz~7oi2oswz{qseytP8iqCP zpmU&!n-hE846k}wT~dQ;JY?x(Ytf-3Xd8Bf zIJ+0NB%isWTqF<;GPT*aZ01E>5hQzR5`b@uM^%g$sd^9`&z-d4{@}ZD`<$Ww6TXVK{KgY(W<%&2wziNmliR-1YZ-q2Bk}X!7T`ds zZ*x1v1HD%3flCfXipsuvQqA0jk{>=9&ei_g&sKb+cy{=TIL)T^Ai|cx6Zij){@m+q zu9kRQ*N?94=A4;{!k_H zAXX9y&+Wsv)UfO@&0sCfgST8>YzH3TxHbs>mGG%L50#8BetDSlk9ah<(1aZis@WDwgCUL4< zt6rN_7Z}YO_p2^kMj&X_UHudScY0S0qTCe<@iAN>noWIP?BI|d=F6simhT&U0N23U zZsx0}3(T;XMF2D!k`T9fOogO^m;mgYww2j3U`3f@w|ss?E{$EF>%^r2Ge3wx#ItW& z<=3k-M7gDK6kSp{WaOgyuwI6ot2wHZrD4&pu$OA9QQ53+pEp!Z9IvIR_cacuBT5ky z7#XLgirWnSbny;~Odzd3TN&V)MK+vvhjSsD4?fn-iS2t*NRe!X12>TeZ&0!I|2&i& zWy9XQA};a!8nQnhSdZ;NBSjNioVlgR$k)!}%t+66{{#Y&k?k^yAb1k#Q+9r!KAWfhrw{!!XOnruG0$ zVN!-Z9O!Yb61tctG?9>#I4>N}4vSwO_{;#lP@hj?Gz8;lNPV$WA8uWE9WbmCkS>RaF-Mw70;jg zb!5A~KA67_{|`b=Wcii>H(wnRZoOSSp%18*jJS2Xbx%2GS-;NesIC}?R1_x-We@6X z`{iTxzxV$fU*ax>hW@O%`V4V4gsH)Buf>(JKQ(?_a-n5yW!}E72$Mosx{8bRb(_AJ_ePr!=&15SSc=B4DvP41tsSi@a zS!XI%#V9AKmZ(=_@qn$X@VB6K@x#pBO*Vut6?j%IW%5T24{jNINbJtJ4?NqJpSz*> z+_`fU&W^BE1jHBag3A?k|5KkZ=-VbX;pn-tZw@$9C-PJ+nK8tv@LK`)l*q z)*o_0{m`>u*vC&RFV6~ZzM(cta3Na;?Jhie<zRNlvB@p2lu%8R9x4T7j4{QPRjHm5Ae|w#JM1S z5K<>ZVU}ar3w&9~m+;h+#MzYPHP}hpz5GlI2LG6P62P89ye|gpJhlQjsGz)PxO)-< zdwInfwz7gg#6Ub$;f>Y=zy5Jb^serT5eQAcR850U(EU2)<7NNRGq=~M8l6zDTK&df zb;6Q|NEPjb-0K^+c$o`oYHl0C0;K4EGc~RwxzeJ=CN~rg{$n3fLB&#LHtL%4Z|n}~ z5pDG+`vWsk$nJK^TYN&+{S|tts8>w(#AUWc3IybV)S-7}zL}mDiU00*P5mr#EPPg} z?M1}PP1H)mX+xC;!!P-i7PpO!55FC)RJ8bfw#1@XVcpb@uv)yed4G(8yck{Ed}{1B zh(nf|#|xiY;ZMnp;+imH@!W`xvgbCNg3bhA(xsg*HXU|(*o|W7;;0}`OutirLtT43 zMGJSqp>3>CXWlM+F`0a|zC=0n=k{RchGnt<)@?uOsT_3Zt!19mk|+Yf>Ep87XOP3(dvZ_Oi6GVL4ao_~YXFXc| zQEaW}gzlPFo-jKctZ)JewK}8Q=Hqyi-3@Um~+kLw3;VcM0I>bZgb{=93kf0_=-p7gj5B zdG%7T+#~b1H0aa?D=5v&+v^dAgl2f#WwcMRyx%)k#K^h`p>KbfI0FT~!0P3xX5L)G zvYLKik5nBU7O&dEUJgA<2w~5a#-r%|V)ZBe>weLYIMCC0kgj3wq2|QQ-!A|rMd`o< z!n_tcsENEzk!1FE-{+qo7o4naJEk##sMT#n@{ZURQI{K*{S!DT^shdma0V!lr4MCt z@)6ga;8_4=l3AIi1R^^Pv`+HIt@h-5y}rUnLv*F-yu@0GL#~+NMlB@s%DhqQSo2Zn zuOOCo@IP++?DWzO0^z%0V!rqi{SL3%5(A*Dl(^bZIFwg&2X%r~b0m65zNtyIHwcd)nHJT z2B|!1X#%NiQpM{sHi?t3rNsxyt>Yl9 zzTUI$63Z+7C8b;&HAA1(3S+4FYIi<4n6|A*y{vjW)gkK)7Lm7eHX9RsQcQ64tO6Mn zg8R&E6-)X;evRCmaPh24Rp1M4F`IoL`H*Cw;;hXa)MjEP`q(36LhYA`L#!y=TH^Jr zZf__w`%qE&W4u zHA)*gaVc*NtUd;~OG21`I-fXLGC|4d*5e#_ie}p9Js!ZEr;BwR@QMPGZ``9t60yTy zK5g+_7CJmAuH*BIhyytW>dQDxnitaICd}~fzQM|F%ZLL92l6KL%HB-bYnC5(t3GgWcbRYpRubn%(y_y7mzDjR{dafu4VV;7pZcXx zBbz|D%^=;y77JgtPB?%ylr>^6yiOQ6KZ1V0NJNiLZnUp#&w?T=*gik6V_W<_2zaE% z8c`7^Y+x%8G{anC*DMeGngje_{SZEQOg+d}tCm*ScRk=OEW920{qCP|MZd- zvTbA!LBj=o-}L#A3>eq>NDshDiv1b=wi>=2k2s{=iu-TJ`hLAL0X#2i-As9hK(80M zKp+z;JWkH2jelc@haeHj{;jKT*7u16IiW9v%DpDsbrpV_Dq>jmHFkP%9HoJXNtYOgS4qCdLXwpA(@P zW=z%AU(F}4T^-xsQt9efg?2r{?YRWm7pGMm33eEx!%=o4yfBsAMhk#WC`Wt!?D1NJU4Nh(R5lc5!2%$&z5Qv?P zWMJtg>HG2cO!{~vqmzBFnjnf)22mVQpCE3%1tojF@Gd%({@1++2y};_sCeaN(mk%* z1H&;x=^9>lh&UG4M)b9|?p&FxZCXB*g9lI51gwljyPuPe5D0!B7$;@;-nYLV`ttp7 z>T%_Nt$ChJ4Fi^Mrwryy?7i(&I_9)c2;}R(sj*qWwgdJveKD-b4Tk!xtud!r;%l$I zK%CWTcli)RY0@36$>q+s`i!gsQs|YrNFZt}8WveWJhBJBxvWNI1!s<1uZP0Wrv@90 zJJa#w9mS|_DI8d{nMk4CXWUBf_We8cBjCOk@gD21u|LQ@u(-Q*Z!&?`>Swo`ish3T z3oqsqh_{2EG=hbfkDqq??Z4|4y?2cp#0A`5Mz3mHLPer4c&oY6dl~zw-x*0aRfi$e zN0(*)#++zf&H{41sFvnK_RTHAyaBjgPynj%I5|IVI;@NO`zM90aoO^~xN#w(kce2! z#e+9=pb>2-hNz3eCln5W>mK-QJ-TD`8tL5xktJTC(GAXRLe+ioh8!0#2=esim`RmcVYcvMO> zuhxNbF=yuC*BP*=&pb!ra5Gb((q_(I-#9e+_feR6v=D)#V%Q&8Ynh3hBGl9=?=4<) z1;BRbP4BQ&EP?nssAnZzKJgo>9S_$Hsf)XQO}2zFBV_T(=YIBEIeQq^B8ik9s7svH z4-2JTa^eqoeEhTPu>qvp?v;9~KR@cIy1i0EoYOo!B7`+G#2N#GnHgA~kV_Mc?ZjSV%?ff^pzz#)Lk4LC& zY9P?qZ%$w;b0tnhRuTT1O=T?PB z9almraS~hl1Azdzy-c^DH92eR<<{IaQYe*5C(eb+cp$kFUtr#@mjj<+7Hh<@$e2c) z8xc@&C{Gqc%lu^Zwj2OukmKkX1bX}-P)AEEtM|l|?tOrhB^i2T5C`T^7aVq`i=>$~ zd3MI8%H08!&w_)q2y}pP+Jit&^BSsM0PlFG*=*%Rk>{XC8jYu~9I<2))~~lvlg22V z%jR~4aDkeC{oJRuTVF<~meMO@Us7EJkZKpwEd<jK$8u!wr*ywg~-G8uEO#>k-2#3;*Csg&r_VC%O0Ll$E zewzZiVDYj_lfwF~N8d}qEhX9U7VaPpGsLzjl}jM3>7YrL zib?I9M_Zl5%B&D^egPe^_WYVn{XUNi^kL#|oa5e`9*(=JMD8zp)o7gXaf4>R@X>FI(bzUFd63az zempw#TQp}Map3PnZCgEsfxE5ppo1|_V+Ngt;pdyf#JT-eJ8CBj15Wx6b#^mzR{GKU z9V5<$!eK}d)AkelTkh(;q$6+{T(y5r6Ev8s-w}r^796FzmVoU9f&<&H8%VWML&(Iy zaRQOI=SEF?aijj^X^{60I+R9%{XeLIGD#KzGKCjZ3CR1-#4*K;9--3368{-$cKZ4s z70_zHDJ(y4L@!A>#a8fgAhuB6JnhfapL0oxYN#;dRZ~A)Q?OqOd6?KOaB)|p5bM03 z_^S@M*TAN^qsiGwpa?7;N)%Cr&{^GYtV;Jj4k7;8XIcd2T=s9@M3Um*GI3|HWE86R`?`( zL zml;Q!JUjXsnA2@Br>{z|KX5%^2}3dB{#&~?uj7VD(d_tWwnarsoNUQ=_iCdZR~e)# zv-hu;B+dr9E(9J3S+ci6xi#cw?<>Yux-@Y(PF`?i#fZh|vg=&^tVp%Yv1L^sFh+v) zLTHw*;qPblMIVy-BdI)bD5wH^gkAuf`2x2p2FDEpu9z6xCl!f9v{evQPh=*0PWd|{ zw_`EJh!54h3V|L25!#Rx<_~;dUS5S5V49(hmHvTU)rf-)0C!QqBp+L%eBqYnxg@`m zB_PMe5{SBQ2rl)RfXIL^vp;2MB%ozh4L0=#?XcTR@uEZ`F1y&;Y-RQ0g#lIt^9=TH z`aC_Ho~bUowyGtfQ-dM9&f~#@R=RQbDuE(DN{PDc0bxGKP10kNcnGQlOFl6GQo&&3ojuTrsINck7ZzCWOb-2Er>&fFEF%7 z7NC_kn{*|I{uCuD3psGJ(?4xRAPoG-ohpAlp<=Yc%cLo4q4kiu=#2@ZZhkN?aO*# zbIP~xU(d2X)S*W*ytkV;4PUMLaK~-}MTe=W1agBRZw8Vk3R08vo*GrcQM{Oc3{>-C F{{ylmWw-zU From a77f9419a2b50212770a331beb9cb44b697ab4d4 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:09:18 +0100 Subject: [PATCH 13/85] XGLLoader: set aiImporterFlags_SupportCompressedFlavour flag. --- code/XGLLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/XGLLoader.cpp b/code/XGLLoader.cpp index 6c22709d2..f8d85aa84 100644 --- a/code/XGLLoader.cpp +++ b/code/XGLLoader.cpp @@ -87,7 +87,7 @@ static const aiImporterDesc desc = { "", "", "", - aiImporterFlags_SupportTextFlavour, + aiImporterFlags_SupportTextFlavour | aiImporterFlags_SupportCompressedFlavour, 0, 0, 0, From e5d4f537bd635d83bb2b9cb1c630f111d258d9b7 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:10:34 +0100 Subject: [PATCH 14/85] CompareDump: do not use C++11 range based for loop. --- tools/assimp_cmd/CompareDump.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/assimp_cmd/CompareDump.cpp b/tools/assimp_cmd/CompareDump.cpp index 0c7a52b46..7ddd40b5b 100644 --- a/tools/assimp_cmd/CompareDump.cpp +++ b/tools/assimp_cmd/CompareDump.cpp @@ -252,8 +252,8 @@ private: } ss << std::endl << "Debug trace: "<< std::endl; - for (const std::string& s : debug_trace) { - ss << s << std::endl; + for (std::vector::const_iterator it = debug_trace.begin(); it != debug_trace.end(); ++it) { + ss << *it << std::endl; } return ss.str(); } From fcdefc7b16179b7461323af862e76867e31d758f Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:18:06 +0100 Subject: [PATCH 15/85] Re-enable LWS for regression testing (original reason no longer applies), blacklist some material file format otherwise causing noise. --- test/regression/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/regression/settings.py b/test/regression/settings.py index eca2e79fd..77570ff52 100644 --- a/test/regression/settings.py +++ b/test/regression/settings.py @@ -60,9 +60,9 @@ files_to_ignore = ["pond.0.ply"] # File extensions are case insensitive # ------------------------------------------------------------------------------- exclude_extensions = [ - ".lws", ".assbin", ".assxml", ".txt", ".md", + ".assbin", ".assxml", ".txt", ".md", ".jpeg", ".jpg", ".png", ".gif", ".tga", ".bmp", - ".skeleton", ".skeleton.xml", ".license" + ".skeleton", ".skeleton.xml", ".license", ".mtl", ".material" ] # ------------------------------------------------------------------------------- From 0943936b3192547f48dc11af66c41f53e46ae4af Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:18:54 +0100 Subject: [PATCH 16/85] Fix an issue in the regression DB generator that caused the very last file extension in the list returned by `assimp listext` to be ignored because of a trailing CRLF. --- test/regression/gen_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/regression/gen_db.py b/test/regression/gen_db.py index 87d656d16..2a9d55a5f 100644 --- a/test/regression/gen_db.py +++ b/test/regression/gen_db.py @@ -201,7 +201,7 @@ if __name__ == "__main__": if ext_list is None: (ext_list, err) = subprocess.Popen([assimp_bin_path, "listext"], stdout=subprocess.PIPE).communicate() - ext_list = str(ext_list).lower().split(";") + ext_list = str(ext_list.strip()).lower().split(";") # todo: Fix for multi dot extensions like .skeleton.xml ext_list = list(filter(lambda f: not f in settings.exclude_extensions, From d717c4b2dd63ef4e9da09a5f31a6d278ac7921a0 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:36:47 +0100 Subject: [PATCH 17/85] Fix to have gen_db.py also include files that accidentally have uppercase file extensions, affecting ~200 files previously skipped. --- test/regression/gen_db.py | 2 +- test/regression/utils.py | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/test/regression/gen_db.py b/test/regression/gen_db.py index 2a9d55a5f..4005fe161 100644 --- a/test/regression/gen_db.py +++ b/test/regression/gen_db.py @@ -164,7 +164,7 @@ def gen_db(ext_list,outfile): num = 0 for tp in settings.model_directories: num += process_dir(tp, outfile, - lambda x: os.path.splitext(x)[1] in ext_list and not x in settings.files_to_ignore) + lambda x: os.path.splitext(x)[1].lower() in ext_list and not x in settings.files_to_ignore) print("="*60) print("Updated {0} entries".format(num)) diff --git a/test/regression/utils.py b/test/regression/utils.py index 8e358e9b0..7c759b795 100644 --- a/test/regression/utils.py +++ b/test/regression/utils.py @@ -50,15 +50,13 @@ def hashing(file,pp): needs to be persistent across different python implementations and platforms, so we implement the hashing manually. """ - + file = file.lower() file = file.replace('\\','/')+":"+pp # SDBM hash res = 0 for t in file: res = (ord(t) + (res<<6) + (res<<16) - res) % 2**32 - - # Python 2.7 normalization: strip 'L' suffix. - return hex(res).rstrip('L') + return '{:x}'.format(res) # vim: ai ts=4 sts=4 et sw=4 From c07cddff9e08e10163c7b00066c1d62eb6ea0732 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 28 Mar 2015 13:43:52 +0100 Subject: [PATCH 18/85] Make regression test runner include "expected failure, ok" cases in its statistics. This previously caused discrepancy between the runner and the test generator. --- test/regression/run.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/regression/run.py b/test/regression/run.py index 1898fb962..162e6f880 100644 --- a/test/regression/run.py +++ b/test/regression/run.py @@ -65,7 +65,7 @@ import utils # ------------------------------------------------------------------------------- EXPECTED_FAILURE_NOT_MET, DATABASE_LENGTH_MISMATCH, \ DATABASE_VALUE_MISMATCH, IMPORT_FAILURE, \ -FILE_NOT_READABLE, COMPARE_SUCCESS = range(6) +FILE_NOT_READABLE, COMPARE_SUCCESS, EXPECTED_FAILURE = range(7) messages = collections.defaultdict(lambda: " Date: Sat, 28 Mar 2015 13:47:52 +0100 Subject: [PATCH 19/85] Update regression database (again). --- test/regression/db.zip | Bin 1186737 -> 1466985 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/regression/db.zip b/test/regression/db.zip index decad75bb80661950c5efd7e506d8fb86b1caa40..42cf9d5a78c8b5318574c5200dd942bda4010553 100644 GIT binary patch delta 1154030 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�! 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

    ^CJnqKo&nDN{)PvF^OnSV7T}RD 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
  1. )oEccS8GmV( z-;2dkL+D)ndHsVYA!~Xf@T9aREtMZ<`q_CJH@a0_g$Sru-bwCw(z{ganIE~8Bt!2G zuI0~lwlz9|@`)`#FN@X-=C1X6;GWz^sSsoz%=~?@Q_t|0_5L;z`AAO2+2VBES(HXL zi2Cn{Tsi6|{RM)U>D*cTKIP&h<~zni&B=hqSC~1o)oi}K=8f-Z?m8Uuhxjb50Gb5@ z1>5w{gM*CG9X71Q>N3``z?>qTIO~hNa-B2D>>UE|oZ+v6k(uHAO+p8t$nr>n_8Og4 z&T(Q0=KjQSwKKn!WCd2EQ?cUDnlZsn_GN^9Vm)#bG0=V!$U%|Sql zuM*Y2g}Ga#8u1V{p{Zab#Q;nxDe?&N4dpNJT;UsFk_wJPdQO`2lC!hFNP{}2W8@!!MobhWvt$-g5CG_}}R^wTYp3*FJQeFW)6-2rsh&k!kh zYzLdCZm_dj)h*VJ9hPAG?$gb|S@JE|tHFbz zXxQ!|oREL!S@+6`fzUF9R_uDbeF4_&?}Y4o*G$uPxThgDdms^#sRRs!YQW0eu^*yY zeU#uxlpy5Kygx~%bZY`IWBORtp^k-YwQP*6N0BYElvs`HAY)+|F7^IMtj)tTg1&)C ze>Jy1qxNT6WhQAAJsBEYaOFIIWaU>4vFH;GFb+z&#okV}U0)=#56b}>yD)?_(7(B2d5yee zV0KA$Hy~Y@A^5ZTlx$4=Ku+Z#%{AIB4Jv9`XVbkh?EPNl7i0Vt%1kImOMTEUI;{?k zokC0Ahb*312NKT+V_-L2;xy1}d(PW6S*x`42j z5wlv>36@w10lMrO{&P=squm};-);5`D$MC)A#o``gF2v@gA54>^`9P((?Nbb$KU$< zIk6{wgme-PCX##}PQB&Z;jmNs)kHUXU-@*UqZg0L>kAdnr;I!Uy=?%AD;GOXBMBwWqvu)5E~r;xJh>xkNMiA-(t4QO-H!n)qG-V+QM++ zK1d^=We|VcukY?->LvGS#w<(9Kw4dhaWMyLdg^Ug)u4of$w@BlOV~-Zs1E#Bf zke`cB(>5~)JD_O`*%Lz}O2Bq@JgYu>9^V9wBJC^f#Z!rvmAXTF?tS??i?UWkSSk9( z9f4Qx1DjT<| zlsf>fztc+hSRSF}_`XIK+v2i%NtZ_ZU@WF4RN-F)691iEbEunYz(SiLeHd>N4xZ?A zmKUYn)U`~0SnYNDJQWjbBc+&%1*?}jZbNK~u~34Ro|L;_mEbr~q|Zqu;}`4$;^;(F zXxOlKbg_^+efFK8oO1?safP1>X)4`|Xr5B?Xx8zQvDpScZ{^eba)!)C+i%%Sa4pAYB z2RJzsT^cWF4W100e7NZp@dpEI1~gXb@JJ~vK|}bEGztn%cN7507?KRgB#ZcIZVK=a zG!wJI&fKZpt0iLeu#l}hjay3gwu_c~dn$q0>L=1}*p-5^17){(lObWJG2rW`#M{LO-fE%*D zfBAVGPEpMO;A}~WkG&JG=t&hL_hI$MRGV8h=`W?Ao!J7~nLQ_@k{-BYOOObMI=1uZ z_4=2q>Pe=qnV8+3%@!M9K(EDk0vRvSkGG4%%KYgNq_{{-w+20>QiM-Fc3;F#YYSBV z#Q7;WKXB3_d5D~1fihFJuxTV4An@uK+m0FfhDx7mHurqOp7Mg{ zI{Ob9dMs4`t+skOT}6N^JN?d+lePRUi03!~Ev6;cI63LTcv$?OhL)$_V@J_?GPY{V zqOw)XYGbqCNE=DAn3DB>l)D1a$DGb(|0YE{l`KE`IgU!*teu70A>Uf zs|SQHzC?f;sR|U1|1=sjD91%WBN@tLyUj?2#}0EHERN;Wdk7skXF$qdwW$1-CICx$+^-UMxLE4`*Ay+#=y^@t3JQotM z!8kci640KDW5)eA!7C7#h*|$bRVxe49Zc}SKI=svsT6T-bP^UD5x*w4J+ywgUQeuN zdTDx85aF}GxQ|aV5gnTo8sIe6$8hqd!zlG3J2)(;B|irF8>^-begn;`M^Lxl)Bs-K zJZ;~=5pQR+Ed%1+=XEoFnfa2;7@XAd)R;Kt5m20tt&g5b5>{RZWXde2wN|qdk$oo} zhM5bP3`E4)D%vVR;l@2|Z%RNw!eo3!P^lvK(EX z%hRrnYjAf79^9QkaF^f~+&#D~G(d1&xLa^{cXtB8-QAsUvG@MT`@N@5oj+Jb74g}N^bKavgbixYWF`aak?#G5*62cczUJ05M@d_T z+*^u-6m+Y2uLp5swOw81_6uNeLF1WnX4X(@cJyLdFb%#{r*wD zQk;MkIEG3JMA|kvb{jexLf7=w;e@kY<^9|#qd(q8GZqrFGT=WEHD8qj?)V2??-Gu` zJ3n4fQu4Tb1{iM9UQ-2%mJ+#HDPw;MAI3bxE-n+<3d$94D6gb@0l0sCw|Xs4q_v{# z``92eF=(BkuuQjLy;VI*L?vKDfrFA;EyO_nrLmi4CtpxQ7D5mUIoegHFZL!kRGYkEC&7G?V;9V^e8sM^+w3T#N^ zojJCxX|I~H)W3%iK696kV6yPxw{~>MnT{&#U!CW~Vbta{nT^eV7>B742#cBaqIUMw z-sz$^lluZPJ;)F68cD1E_6Sf;gln6F96j>;`rBjun5ST51&ZvgM>Yyz0Y*Kt6&wz6F!eea`-=E zl#vSh&1G2_hg2O@b*FczKgC#MW^6v#I5>41^|HgPuF;LjZIU0(yd%=h&i%57>E7ns z=2MxlrVVJ$A3PEaYv{amJ>vLsSkfU|UOb`Hy&eAsybs`uXNT7pKh!F_6zz+ShQp9D zQGDgq`s-ag6}a+a2NCwhnA+LJwr5;hsh)=+kDXDv(7<0Z?KzFNI1sW0acfDkx7@PX z$8mS%VJ7EpTUYjq&W0?4FQ%2pE<+i&qW1%f0Ogj(i1b#~Q~Eq}&3NX6(o$NIQUy5c zXGIEG=4DT7SxbCGdt<{pNbol!!kKxz5*< zt+=2~8h_3JTOQC&#NeS&OXQoMZ#CR&@R3e{u91+)C!w&qf~eQ@bSn|szh7n z08rX4z=70wUD_$c-|W}&=gqS$nDmj(TdD?DB94YAiDnqjH0r$oi%JQ-fV||rN_A6= z%?6=hB3R5fy-DdgKgvUs={}@^lvDAo8bviV3*f=x>Q6H(GG+xO=IE3LtQrNN{;Bo# zcJ1m>ILi`mswqfQPOn=M?mwk`O4AZ}TUEVh=Q{08kL84(S;LU{l1ywg6UPTQ;UhoU z6N%#~WWmutbx%?G?C%7GQrpt19<0n?%(w2^!CqMIoqnrMU|I*fFU7_F4 zn~Y(gy@u9(e7TnKSwxN)?xXGoiw0U^8r_x=iwWlK1AM}TvzXI=QWs2((tl73Zd0`;G6eU z@bbEHI_NfgO)nL09N2DMHn|11hk>bZE(*x{7)Ln+T0TF@LVA7d8jFs79t}Jjtx)B+ z#Xcgwr^o)D)EKQj0q7VL(BY_o`==+vgAwy-A`>boh5`@^1*i@<=*S#$IpngKJBuok zr=7FZ#>*OUwdU}_*m~q*QiwFaUgOGg4B?sTNLo2ROH^4m&Aw1!x`mGUfeKk@&tt3T zLS=P8DI5o(9xv-B@W%M47~LVfQe_;bWRF!OnogM}z?kj~7JJ zYku&J+Du_}X>$|lGgk|wipO2^?&Am`COYJCT2z8ECIpejB4&agPj46+RBKPq0|YCU ztqw@7ijocPZN7Sw1ydN0lr4AfXfv)BatC}pA- zvf(Pt+4@AE-Y(KQSVu6sR2Wpt_Tx`@t1jOLtOi7YEvVS0v5hwL4WI%XTknILD&9EX~V`xo>#H&H2#+yZk^$ z^1b_=@gwVWVQUs>BSpS)phTmx=&7 zR=Lp{n8)unJuKz|`ou`StNk@>RFH+JC4V;{Kqjs$`w2@mz^8ca`?-P%WC5xQ0@a0} zWDxLYRPqO8#+AI-hf^SY*2DTLj4YX58*Lyj^N!)gbmCcemtWb_SJogZ6wzDG5{8;# zknuq$_2&@gh>cOL9ZzPQEGS>8$1ue z-$w>1HT+v_&=jOL$jxdn_qTA+Y99E~w0{Sxhc<?aUT5 zT~}aJk&c5{Hed%8G*MbaQ&Iy{Z+~i5&0BKKTdK~~({b%0_S38i(K0X!s~Lqa(O+0l zEY7vqw)|P#puiUH{)3FgDs z5OGTgemhw*i3Y%`R1N!$>hP)i+4V)}#iTTYD}0YFw+;bMzMo;8|A!aMWQe3}*-wKH zX+u9QuL8c@JU<>9d811-X#Lo^BLjl9fUymvfln_@$VjMNbjRR-X#>CMC-LCz3(XKu zv#SvTEdTIf@~eg0;#1TQ;D@!xjp3#Ww@fB4DocjummUJB1Z8jX%F=@kuY?$Nw?_9X zhhbMUd0sun=CTxA^pHwI3&;hqVtk3%pR&bA^HKi(oX(4HL_RD+*8Qqc=tZNX*`neZ zeJ#lq5BunS&|u1JZI4x4lXBD*LAE}Dywzs${An?IGt7Gv61X#j&^HPz(yE| zHfK9w5}a+W(_L5H*1oga6H)f`WzHliZJv$^L}TC{3pZq)RspJOB^jEcHwi`P%xD)4 zTIf5XQ>1vZG@JN|LHG2p)f%%jm%^rS`2+zC12MfcNLpFu}QPK+i?}BM!vF%wf#M!(y_d+$9ak zg1TbKBwa#Ee9RDhI7Dw_@eBJT$4!X_p{-ong{v$^&PA#^DC2m{Zj$Mox;Mb=ZAi1F zYmp%YPLI%S)Yy%QiEX=RP3S~-ffz$H(joeM;S?jnLp0|d`OG`!0x0|~5~0;rr&U>S z;iXBhPFiTTGwso1nPU{+orJ%EOx^(V&F>Ls9)xEo;ubweWxm6*=2vLYM9ZJ+6R z%?Iy^Akn#ly{#nLKoHq?ON23>!wXHYJy9vIC6UA7@;LJ*T%UkH<&XQPfY9(OR>*<% z!&50j|644{Pm}v1x`2j)x}MN_=#5#OT6hhZQb_rIUyAHgG&#zT8^QJjk0zfvu!;%L znOU~Qbw(@Wn~qHhem!Q_!r$RyE!xWV{tuQrPL6*MW94d#RYQ_-Lyw zq3Cvtwm6(iXD`}r(&PwNzz^ieF#})ZdztrL#j*JirT}%LwD`o9+JKBXu+AT zufC9#K=82q0iJ^o1+91%@xM%Pwh6w?e|=RfiJ`qjU!NIhh^rx)r_OK%RJXNVU|N58 z-F-PQJ=p%L`T0fbAg}!RVFIOtIAGVzeiiJEy0Qb(1zPd0sutoHgXkN80V&7QQ=Fgw z8>>rW0_S%bp21v2MPTFNuOx{4LpEc1{zxLJnr)FqVzG9lmXeg^ASNyDq%PQ|a63zf zU30u{}3eS1Owvk0$pOqX=e$ zXWe;hHH<`W3I5CJ&zMR|v}ySaWr7T)pyG6I>63d}8!_*0TAdkrLx!=HW45G5Cud4Gki~L6QTf?%_ykQp>rZ|I+at zNlao@05$U9-;>3V$Hb7wcqKv33Pda#pgy&n8TF zH%XQ=J^HpfO3|{SjhxZTG@0>?tCuKHtf-LDI+yD&AtqcjLBVF>GEcfGY`;Fimi#bw zl}OgKV!di*y-#!q*s#y~Q$?^ZNB9egu(;p3&bCxfSF>zRHCL^JvoOp01Bu$+g#XS& z^QxnFDtBpJyL;w{x%2Z$J=)#k%|aMnm2=@)?wgA_k*ZPgZqXaf>rw|Hm;A@;?34%P zK&k<`Z+iaeur`w!Bo;?*pSxXkOr#`ohnD ze`y(!`E-$Gl#{zRo#b`4)D@O}ODlC3|1z*UU}oApukrl&jJ0;s7y9D~0*9E%?Kg>8z_UqC9Ynaxtw^MAz>>3+f`jI|9Z3&A!Jt4-(u zeshuTCb~ywM&z4aqTAv)SauXihwlAJM2I~DtepLddK=;a4$rVDHX~e((C?25WEJ-` z<{jKv4^HgW!|z3@6w4LX#0q0h9Vu}MQC}QI{H9>f3LszdSU#$mRFKbj= ztHmp{1vTm3$5$P*9-|xR_s3h*LD-?mMDa0A3AD?!R4xI2i+j zq2rrG<|AD~l|+YRV-NV7I>b!Ul_L&yhzjhCMaCpD@HPINu$@NU_74J0kJ!A|j}_*B zGlyt=@H-=wgEYaEwbNpfVv~UxVWqfaN7G2WV`Qjxf^oI zZaw}{dFSH4*=u{2po$iPz_piPp+4U<{+l>d2lW?mD6!bg8V~n>BZsy?qfhElf}jQt zh6V-_bNnaeF*e}g-n4x4*iZ_yp=1pFQXY`qML$5VE*9wZ*f`X&$pTR zs2T_?%xMAQ^#4E>aY@G@4IzyhNjhPHITNMmGNB6Bb#xc^}c z@Soj$=>;@4JWjf5cdMm`yo3jktgtg)n6Q5@Q9IfFt}{ ze|MNkihgKR#+6Y{dhUM?NtSjZL|zT+2%UbYJw?2k7b2&&Tol2H!$TyQb?_ z!9~MN<`!|x-~fwNfi`?#n~;B=J{vaD2jJNvv-3kr)__$(phZ70t1`}Eabs&fs%uvioLLxtBRtI1}M*i2m_S8L?Q*=r6D6xX5li) zDmVyRI$FpZqBTW_9Uh?5knUZTH(;|HzsQZL zS`NXLu=Cna4w)2^!S~V$FB%<3(*6@Rjz1VpRTnz0U{&wi%~MBW)!EyFrpFr_$;j-(kh^J!3U>wK#}^kVMdv6g?RUwD)eouRa7z7Ip=-P0Sagl?_*yx! zAx6@fT4V8BJd6~MnDCyprDkoEtA>n+CLvN`{1^c-)Lg?ypy&@}&N)2V!k=EN@mmic zzP)eM4fQM;!U8QVgYsj3^PWqLuz(naCVHF+1&*}pRw_X(;7@5)?D%v4EY`f`-3GKr zS5wtW%BsF9EM0I2>y>--w{)L7U_D2`|(3o z6_sBwG$)HmGYl;pshWu8^nOF)IYJ9^AE1qQmz>=v(w;gPjNsoKriFZe`eDsXN?xI< zk=vb{jgNUCcPoZ_|=n;MCt^%{%75IH!Q!@Qe7L!utfiwr7SGm#vI0`D=Pn3RtXae zjo(dMRIDqIljb$6z#k_&XEFdNy+8#>buqZ=v9&y4Xb*a1G`wJJ4>Zf{`on3pMFQs! z3oB^qa+_*r8oXVp#wW2%4tQ>MJ@WxiU3%)5>d7i8&sz3?o{my}|=Jc(rc zdkI5yg?}bQ8Wvi26W*+G0~dzC8p%-?=w&K|Uf%?S{pG!HR;~QHLT3THU4x&mz&1I~ zF~A4}CD|yz=a34jsSa%WRhlg3Q(82+n(?fcDs&fLo=iqGtEdo|J0571AFRY(HOBSExAhxI&Y z4?E@-5ej1L-;}Fm9-GX~i_K|UjwZ1BdQGJ6TDa&%*dOXYf-GF7S05q*oBBa8R)X!a znOJ!2gk{ZcgsETtqy+O1O54vDg#VcN0A%JG{+@$xATziAYkdM?kWKz8dv0K@1)^!d zQ21tD6IJ5@6-bLuceLr?+v}q z5X>R|I~K!EUpgfa^q}#-HuNmUprjqxMFjQFgYP`s1`rQJ?r$QaZp@gx8feL|{Z|gd zVr&BPMqsujBH8~viD3~(AO@ENe*KOZ0Z3&gRR;eUD-HJqt_bMyfqUr$A9jHo^PDn3 zb|#P{!Jr8ZA-(oHe*;Csm`Z^U>dk`XnLgzETQxokE8n3HdWpODB&aq<8sp z1Gi%krT8vt$DbUMCq#{|l7AVuGfX~z$PzyOTyyMe{e={1)c(V5Qz)f}d*^p#L@0B# zqWr&Li9|hML!@-?JlDTa*nReG{E7qq=#2k6ZIS%(e?%o>{J*0TkGp-#Y#<=AJk+|- zh6TZlNsN89Ajqj5>cC~@*y=xgP-QGpFROng6zsDHkg@aHALg zFOB?vlMU&zL?| zIL}iEn`29g^tIo*Q&gXYof{?tg6gnt*Gy_rBHz0wX&@~cTsT0JmRQKU$dJrd ziwF>u`2E7G0W7bhZn1CL9$3pZ`@XfJSisg)EX+E1U{ zwf}xdGU7o+H$CShIz%>^js4lf~W$X@6tMjF*&jV+Jsi>7| zUy|6J`AQM+gX>WQc=cnO{Oht&h6SCKuNn#2z-ZL3RKPiTQ(gr%bw{6dSM<`o#3vvE zqr%yiw)iquRT=qifq#GB1=62y-J#Es+4yw4NdKv=udunPWQ7+1NgJ9{!wd3*Ang_ zmVG^>PAB8DyK$08lo*(W^$ zKU|eqzh!M*Moq&o5MFn>D133am)exxjMN#$@K#@$gn@>YhcrJXEJ*Cc-lc@*$7^=- zypC&=*XN}hxcT-n;FU40Q^<~@{u=eH`nEICyNb|<*rM(2X$#Z9IkAZufd->1x+YuZFd^b8e$yU<&qBjDx-;R>}m^ z*_4lqUx$n^%M1mS@j9h=-=uHgfIBat42b>GyRZ5v$Zj-HsQ|6c0e}LdfW-v$l2E*jp0*4>hEgwKwVEX ztAJcK)y@9Oh#M@!Ndi{BMTKBrVkbkWZ^otA(f%9RS0>3i@MyEP)le^_q`ZiZ>fon` z{pr3>wh6P&{3<V*4uGl=a;4!q^29wcvEdH z;ToIz6MS1NQ`FuKB0gRNHt*r|ah-UuHj&$|ay*_(0jxZTV|o5X*D&9K$9eY=x#4jY>Eqs4SOV)Mc^AGR2;4i|R!hHaiE z09D2QsHGRhCgj_xKftxCqouXc%zgoz4TmOh@$A*+Ht;u11@d{C|CJ8JUQ-9|%l-iN z5}}wj!MO9f+B17@Hsl|FHq()~~LjwCF z{8{9@>1gV?x5i7pvOoeTmrbj#C_u(k*8 zkzd$zH9DuJ7oCV2+h8#wmps=yPXs2EMA*s^xV09&${`ybzjZs5pb$3B?eUZYrots4 zA`=rck2-CH8c~*SL0|IZ9!Zrl)fC_h*wI zZUma6_WPhYIslrZ{J|g*JRHY$mxzYJ1o3?9fy*v?a2NV@KB`G;CNfytl}6;PL*Y)P zj5cKM6z3rRV6HJen&b6|IRIrUif@kt1~lPZ!^0JtY>hfXWCDSm_q`S$7_31xT6x#Z zbF*~TpCJh3y3Z%349sHI61NwG>*w-2QFDwb-d_jF6k8rrtk)Y^o58q!c%lcK2y_3K zf!=VgBUt|fN7%<<(iwAk4K?AAXgZI`17)es(uy+VV&0p z>rGI6+8P#IVniK7M?z%SsPc@L2@V|DB!*;SL$byUVHI}GK}Zb#knSRmX8pY8dXGmi z?~jtm-9{PG9XrI*k?bHV^jH@r}qG*?MKmG2E%qh#&nrGcDXY59j3Z z_v|N9sQ%(os8NXk0E2yz_d}#N`_rfFCscb>qNC0y_bq*{#EwVo6<@`TmBFM|Jjzr>Y zIetbON@(`%3xyYi0Po%2s25%YZhOyRXL?Xvh-{Sl z_5=Xr_s1IG!CF}^p5j5i&aZ}F@a;?0QZFpIB2DeE9N}hdK_P>iQ#bgi$J>~#qCD2z zrT*PsS4=k0k$0Qxyh6>Cp?ln-HDN&@oAa&AqH;S%eDX7zV`l(4eN6=d$ma8d?%4Jk zcD7KFkjcMWc{;>vNZ`kLI$RRC6aZksK^$IDm#(2ZJSpZbd-4z<^E!L$fD@)feRC2V z5{lk)3o}K@Avvk~D0@-tkP!}O=#A1n-#|sfHA2I~&Cb^^-7j&Qd%EonR!HL1A;7>o zK*P<|B}B)4o&OZPfw6MVQoEDDQl-=!O=_cfRKhnUF;bW#b-!tJMu#bY3ApCsAok-O zb@=(g{U(@sg^ftRZE&J$hlzx0edLa2vE5R0P3-=R3G*jau+0I}HB+tvI=HUPpjx8y zB*M0RM|e16lUTj((ya;RGn!}n&AQOQc#$o2Zpnqj?0lvTRrT1(p;K{ zCTqRd+{eU=hUuQb;gqksh8nKe0Xb5EI%Fh6Me-itVZs2 zS1Uwceh^S>Ja`PSs7^hq#%XjkCJtgjj> z_S~pWesf!!PQ&?%L1p;3C0O+P9@+hydL%u@%B3n$qhEFj)}yQ+{tp2E#Do=D5jwZR zkuhd%DJ_xGXhhw_5RWh7uxx$@FWcrvsI2(a(DAA|kec zXrqorQFciru08==Sn$%FIcWae!{a>!%i^h?25N|_>cASVmtvS3M%6nDEbOnD zOV2ntP7Tw!v+|Y*^s+K0wfW(`o)CZik;sZS^2!nN+<&Id`Y>j7X`J>8JN;;);&nHE zdq3RrDVP=Sy7*Mn?`Ml}L6@bF_J`vyR9o7B2baA0l&3tWYn$ZV zMY->QXNN7_LdpUd^F<^Ssx8Z?xsO64`U47I}=ts6jLwx z;{_#Q`5K;&3jHp(8ILDHvyZP=*MDxcmwwCc8K)SrB`>a&u{HZFW|5 zW~H_$nV@*lgip0au(kSmM!Ft!QNFh`Ov5`*maLY4xQ&14p7bg1B4fxb@MMm`IKZ_@ z)`_A0PG=#Xj;QL8mV=@%V`#tL8Lk<#KC!j2RJq{Ap+KA-u(eL%DN(&-%>H_9Otqy~ z^Mz*Z3D!~9y;XLLCSxk_L-w=R09i?9T5|XdHhy+4^jhp1Us<#nVO!mXAzmS=XIuFp z$^J-~jZ>NaGo{Dd;z!mwGT{sdYigrnVFWCj13%0#rKM(K9zSl@w%B7U`WbHYO{Wu% z@iblwne3)Sz}AxB-LXa_LIFROr_mv!^)gV{CN1^{Oh%0ns~Q6bB^}Isj6v>B z@=@ZODp{h#?Of!eQ1xwgU@=#6cvFnTWcj_m)J!%b$oz-D&_{}*4vJAetp)f;I4N0) ztEylhwr}J8D%xjI*QaR?eoJzy_Ukenw2qsn&3;(#rTM$ah?d)gL~8r_VyExqB9Ul`mb=5-G1tCZ8Z)9ba`i z(?QQKW)>BOSz|eRToAyib+#sZxIXc7ya~$joM=pVqBRl6`8scb9p@k!1YfNnAXdKc zWr%J5B{!NCo}??=o5%dgjPgF}2O#v~C|uw0Iax<4HVL5nCKtRlirP6M z?CVpRvsBQpSt_*&3p=QVef^wMK+}ik>)6}=tN+CjP?k{80SO@wrtGX6rgb)}Cu&YHA#gwY6W-ah)v>p+R+mMc(ThV* z$14Otx5AYZtYBY6M0LW}enmFiHEf$nZ%vvDOMY@ImAo^-$A)M>*jtK^*f7bqK*h0m z7`N)Y_8G0LA}WQNtF7Sr1dEkem*c+7Cl_P)C5ndk?lJVi#S6}%Ax=`a-TIN!&Sloj znF5QU0%?BLVE2j1DFohDY{`T(gBnp`?1T|ubjQEN#}N?l%#=Kn)U;duifwxSh?yb4 zEzTO-Z`!9*o`-mC>+b7gKN92VDiAX;cgQ|;u|>o*Hl<3Y66-d`7%Hwprl*GxHgD7X#A6YN9s59DQsgC0Up~Ee`eQfbmRpY~PfLIaq<)iiG-e5dcEbW# zjLhGyF*MM$#cVn1pX7wG7Y%9b9P#wNn-lBp`$`-_=DNt7cVT^p^Z@xKvYs`sfsuUM z4c4cYyI}3fK*f9wB`huQzv^t>ojjFa{r51)$x;4QYrw|BVZg#}xbk&E;T_W_0*Qbg zlT;KMjAW<`KyRUCfXk_*bj*V1Fh|iLO+7fJx2_gSNw-0he}R0442+XF^YhRhcK4L2c+71nE zeU?(7`FJoibusi+OR7-3-@~wok#FRpoggc@tXQTTBpn~jIL3s%u0i&wvf?T`f}%rs z=&EWKk@KbzD@G}mke5sGg5_I6@rg?HmFTTYf4B`iu({>1&Jf-B3B1=UxJS(8hndgj z(+0bUYQ%u5!eXeG>X5#`&X?}_AtbeDqWx4~=$6gkxLFq& zMSXxMb&HX+ZX9vho3=Urc8+!R6kDHJQ63@I0lZl<2*!2|bq^^>e)J;{FCrtxk+o%G za)TA8(vwh^0YaH_!eg(!oC4F!w&UdVI0}Tna{z%>X-aKUcX91*oBEgtLmqU#MzJaJi6DTDFHsNDNVO z0oao^F!@8LNbVP(BuIWkWwHhlk|sZk=%gyQh@?o#2T~$k*rA2$cmE(NZ%8#nl@}OL z;p^pFGnrPk?p|pu3^3xqk2LqYu~|%1Es(S6Sj(J&I{h-PE)VuZ8D$~qk2kRk6;<6D zMK6=)yAGnXBIaUn*s^IN`{*vkCBo=*eY19%3N@o70jgVjv<$1f0WLVu?+lI-oFAyqg+Pr~|9*GAnmg9X9E6e`OH{NEPoYf#mdo7vM(jFx;ff4?}vHnXRv)w@%mSKU;jW`|XMQt(5Hu*f_Y z0r%ul(osT~M^m+8TO~7Bg}Uj86D+kN|EeIPe0m^Frd-XzEu6FH%qb5tRU^QHEvmV( z*%)1R3Lq4oXbZPu|2yIvIs3&BJ4edLE3=y;C>XLDx$d`#mmulyy{-oQ z?L^MaxbaU7iR{;1Z?U)WI6fXx8PiPAG6q}|zr$44fOYfw`DR=f{NUW-uNiy4n}&d4 z>v!;y66;Mc4|pN4V2NRnD#Uh_N7ZuNGo5D zaeTCy;pQ)gFt z==@J5za-PoE%?4OPoVwAbOb>TL@Isy9o%}mEiVPoVF*3D2l&kr-50N-iBz>Tq=M@M z))sfI1NK=_Ud=@E8pr@j;^JmxJOv9&;`ACL2%Fw?DRtL3Tc!N>&Qfo6L`dJ5o zWGG;tagp{0%cdmGYIFtLmUZ>pctGrE?Rj+!?JOr?KrUKj$El6)t~rXxm&peBd8cSt zaCzS#tW96@00R?pvn5K7Gyro9$7oTI{0Pic2=`5BMd~AFw6fjDfjn#@g-QOVtluAp zY8*-B%DZvK1V+u>UWwLbH;Ka-^r-c^?bC$XsjR*ypCjUTyPn1}&5F}e+;;bdatGLE{e@CJVH3w1#LZ z@I;3akp;s*#&JY4CjAoWXUy&2`(cl~G{+yVbUPXh(Gtwhp8g;ij{bOS5?Ysi9})ls zg{2AX+X*FH;!sI{o?Drb8ZgK_v+0nMIL{;42Ckie?O*Z0+&h7K={ zt>s$*=h(NYJlvn`8%ima=Sd-CEHPi$H?j?4+KC6b=)%>9j3iUZ07Mx4I zCOk9QIt^LBdZNUDY;tt5gcI(or;mS#FHGjxo4G`%*yP)NRtvGnL?oY?dTt9KHTWv` z+di5pn@Josz&){B-upC`&N`Cm1@4x+hNVlX;W5=l68>tfOu&fu6|=TJ6f-eGD*-<+7{s6(0=Ax=hqqqjBTATMV*g| zh+sLSZs5z%tJyJX%Vh$h3&$|P6E)cNTbKa#ry3OK_Jcg$i7u2U#C6uSYhcPZWJ6tk z`v}K$m=zTd%4h5LWB(ML0W1{DYb^IQ_~r)TDOZnr>N0=#@+z7xW{!#Uc9jXhV*Ru8 zqO1y8e)IQ}I&L_0?r9YiVaKINu-~x|dzYQ75casDk#Zw*!rR{?aDsFIe;D%Q!;hh( zk%-54y=$l13e3+o*rEILq0DrKivmcg6Lr3kg{Uji^`KD%gwW4=~J=&RhTs+ypCZ6It>d-7a3q$VX=Wu#{s(K{A) z*|~AvNM49RpC<$uVBDYrb|p_dq#y4v=rG&PkR}TBi~^emY5awZe`T%5&`=z#Dc{>q z6d*HADN1U3kCe&IEo6WZxE2sW9TapQaPOv`gr}4R9NvA*S%p`Kh(U)8R?ZDiEDByY z@Ot2ec=`2V;N|CdF;C#9(JEM;)WmIvrW(Y8#u?VQ=$YGyL&^_$0AMqnrCl>q#S64x z!TrXs8Wj&r;hS9Q{cy$kLq5HUx-`ueoH%|KW-Iwz`YBiBH)C*eK~V8XUQ(z6xn{^B`r8NPqb7uV-$*)1|{1e9HW+`d_eV=cHf?eK00UyMOh~%&_;TK5(N-9~r zf?)oJwUTT%fA1$rS#!$!Pv9tXd(CiVMJP+XB|DEFH{1y9&jtZ$HWa%Zy`5B_!*I&Xg12FH5x<< z6IL~7Jm}i`2Z!flEsD%5NjFv~8ST>}}lX~YhR-fEvkKW0szG2?fB<#rj8&8w*c z7aEndus6Iup&MjNt+&$sKvcoLqrCe;fKx(z=YdaKcwM48M6N*(LSZekRjEkMEI#6Q%G#aa zQCTRo!^a0~1T1AI%51j??23vm4vwZ~;g!vW#lWumJb&TkKEzK1Ab9*PYrVBT0L2vG z1#u-FEbxtHp>+~LH2+qb^}>Uxt^bq$-Su>VVA;v1o;w6qB8Pbs%q6xbxdJO~xjg*j zgpdq;#p%%b$b%chhvt@G1kI@EyT<)+IUS*jd}qZyzfmk%>u!ktC+HG7CtH!&U(l4l z+=%ci1bS{vo0=Q^XEZ(A(>>1v0Ya`^C2S_s9Sjel7ksGWqxd@&!+HK;1+Tx24s;*|IKeN-=eVvV=qBb}|kK=_L1Vd`tasQG^rmX-HvgojB~q;Z2`&9KO7YI8pl(x(df! z!BN$!N&?VU^xL?o6ouX>U;y#neoC*re0>aL1p!Q)Q=9{+VS0^E%aY#EGHoy&Ag#`-M~wfsb|qWPqxK!t7(_ITEN(KVFO%(<3M z1;L1l-)bvzqRmJQjgN9_RA5=DQ`f6H9-mF@EVI|#^C;O*0Z=dui0$5U8KtKU?IplI zr-E)|5iUQyUi@V}yppioy>6q!S4K^FDL#x~Iv=E5;NmP+@*&hLES`OH48^Sna(Nrn zj){iAm%E6==0^doaxxm<$Ay=9P*M%EGB5V~RxMx2Jbc}H#;$H6u!mQ0LNzv&OKv>^ z-QFosXGLP9_0Isn<8krw5ve9ZPhgg6u(XuPXm8iftQ)7)h+X387b`6xV@$k`6x|l&r$!%V) zXl)+y-+j<()Z-QEW%sZtxJverg}lvrm~Ttgbxy5^znne-n&yid&yp`4(i&)eHE-5+ zj!LCX(c>jtBIT&mpy+ATf$f#0F?Iu+z+Vf%H#3H_$h0fl)5_g3_k-ijo8)ERy^_Wt zG-?{FLm-m@#BHW=!OMzz0teT}WcQXeOAOV}eRmqVRTqecl)*U$?&V0NRk8tQwJ zQjO(6R3QBBp$W&FcZ6A#bB7+6oze$=4($1Jjyp$hc(3asmCX1L!j@wZ9HFDN?(&NZ z{EiN;95=@Qtr>pze3;%+s{Jkw$^H=VK=eBcGhSddB>3NS$-g@-O;S;z8&RwvLcjsP zsi4g?tJ;wu%HO!;pGw1=lg)yScUK=?2g{O_6bEewV{Ae}o$W#)LCWbiIA^p?z4lTR z=ozYMV1o;d8mBS3a?C1u^}d#|e3nJtBwb2)?3uOxQh}-R*qdGUJ;#Xidb(HGok*>~ zPqXW5!41KQn$|b}y}PF|z?;zCE)QLSw2-ieq(w`=UENp=t70xlEMho~kbBk!Fu zU52*5kG2G}=S#tCHMkL$7cb2{lt@=w!C7MB&tl8WQQccO`v$HxCxW+YZ}prhZa((h z$4*{~>0XLsQ*>QZbPk2lC#;c}s?LlP)oj>70`=HZ^(Ml~wP^~vU=Ps& zcEpjZ)&RpOj2fOG!SQJItQ6ZJa#seD)om(Q^W{Rm6qkn>G6Uyd(JVdLc3hC%MTC_z zR4xH4n|8{98~IHd01NzbbyNBVp$B-;4tMu=qDEYPN$My*P@(FHnaD2sjerHQ?YK2G zM76EE!xb1d=C@FVYQ@jn#3d;(7(B0p$X%MlP`PHAy!{Fk*Hq^TX9Apb{oJxqcZON0 z2~WJzzkgGW5||GS(aIv3A}BN)?}+_<73eJ#lx?gPcL1Z7J7;7T_he;~%dZZ+`mx1xqi5RlL3L%Jw z@W+gh!scl=l0fBI3%FBFKI7U}{FL24W!lc7x^75>1h2DhRwB!n@v=e8lb~e;o6OlI z@VIP2{@y*<>3^sK*1qSc?6#Ks358_^DesPX2m&zKs6Dvn%iCX$<5t_fDB`gFNRQze zp$wDOAaiC+gE)d($S18{*I*JSJUCfCd}meo^Mw#LOZmI+(XC3vtpY9ov z)m#Dn`&bgmDc0&+DPepJLYYt`SF@_L@ITtu zknAUki!ao@E`rA92w~+(U+m+=S}_vUx%1TqbVdrn2W{uJhGfpegT{|RJ6Tf2ShZr~ zn|Z1-At@L$--7lPy`}_Lxeslscufen(h$u@mVKa*Ghz3mwo~sckD#P%UZXX*_M-s1 zJTOr$X7GU|1m*0j?RKi#jNtON%7k1kl~Tx56Aq(84N(~+2G0P!uMrAS>*B8J`AY~| zaR&cgmSvykbWAQ8EpVmV^`q!D=JpTGCnH_SQqW+?`b*H((zBcf@5GrBVzxTixS5#e$X#kKaxqS~>aEjZ>REJmN?qsle^BdW8yBgfRMvRS=QF#YD zL2tpx(pWOeT<9Ykawy~32xP$1*>gU=408_rAy3n0IP?y-TPD?AWQB_a zRXnkeG{l+W{k?}PAziitJfn8+lZ}m#WRfdf!XPOuOtyF=`Ac# z2W2q$0L#w_`Cm1aYy-ZyL^dHstr0(`!teNH<8XqCv1@PeD{gJhq)|Ema*JcB8t6l? z8bW00b#^5bvd}a`Wbg0ktDDP`3hW_8Nn`IHr4pF6HEXbH)8KH(4Vg=K=DwM9x&G`| z>8h^03Xn}H>m!qct7Zbb8-PCMXb+ZW zyFqW1_?2YF!F@`-Y3(x=0DVMV_^3NB>Wv}(UCnAAqw+Tb-FrJR0fuIyOQM1Bc&(j? zp502nW?7xLrqnO;53H>P$%XjILTHn$UT;clir~zh32q==B9f@&(IYTLjc6#*WRl15 zPgdZ}Z!H2DY2U!m#~NP3!N&;Kd?7PXH&9D)X3Bo-HZ~Qh`bFD#0{UO!Y;eZ?(Iz#t zJU&mhg^oCX$gI1^p&-zN>lEslYV$j1>u-r1(9GR#fTya%p1Ka$MHZd8RLU}2vtfHq zKD9CX0?Kh+pTP3)=f9)oxgLL>AA66K`z!TpXOmNf&^2P7kFA+Ze@lAARxA|q2G5kI zyx%Wk$L2go91W8vZGfp#-AizT!6di5!sTYW4Fim0XC4!9dLlQ`rEVbOQI(l*_WA6Y zZ;haVf9UAl>cc0qx4n_80*Z9zHe^i3FS_R{q^#tqi(kMw3z`i{MGLwicb_WeS@usg zX(?=TtKkyT)O^7)wB^T6yzQDd?OuA;he{My6uPqX3M~=BedSsW)jnyNHbkC)|T1#b6;=O*-&yZvr+x@N$K2~-*fNkq( zdar(J^Mx9+)^boxlw;5bagy<6j;xvMd(V0J+VnSnNzU>He-!=6yvx?MLULb_kn}MFqO)m>=g8%|(%zGau`2twlL(e`xm48$@gw zyU1g*eC6YOqZOT@y!%8Ei{8uPDxbVb`$e~@2xf9pWE~2?DZvaQYg5DejMT^(X-1$w zCoHOt?xCAVgW8L`>BS^r{-ZUB|JPOTsDPf`VKKftW%&Uj{4`N`HfNXMWry#R8=EE7L-Z)!Gi%E?PyF4;`+WXXB{ z9;JaxIWrw|Z8_um`-@MP*@z><4>fx^xnp*1o#*0h#RLyDw(53CgI{HIuI`8DbGaXR zepC%M05z^PWa5VteU3iS;Fl5rCMXjWt7R!hNNXMv6*2l77+ISflJ@7SJR0+ACc=HL zPXG~n9|TYy?Z|3i=gKFk68+J1VW2a~dKn@kIl04LGpe&z4pP-4%OXC#Bv_{Q!KK7M zV{DUYHVEm?TBID&nV5f0j&z8@Lge>cD2xtQQWqdWl2WG#shzNri>B`){mr%x6} zrx$d$2Y)HFYA(1r(p=`I8%WAz=1@|isR6t{J*a{ilw`9=5qz-J4uY^mwq&<@bCY>! zV-6k-g_rUuo+FQ21?J9=+kKP2l%)CQUY{jr(MZLZ%2-SF<3+Slgy@%O<&Q~|-cbp~ zO81VtJit2-i*j(}#-ZP^uLUb-)=oilPCA$yz_lDTn>usW-fleP^g?L`c>8>v|=f-WK60 zBrLR;OIC@RsScS*c&YgM^NLAh>gWb5L|E5N4HX_HGYsv3;4B4;Zm9JqGfEH6XB#~IB z3XEemNrz*|KmxwOj4yJ~DyFPII6Eyrr7uI4LgXdyEq%yVGSzbZ>*$r7*{G|78~EB? zS-jGMQ8_$3KtC{A$J{%ea($Un=Mg#$rNrW7k-3e1Qb-4 z_u_+$V&;lN?JR5OZ^t_T3kn9V8fC;&HPAzw$C3IY9E6?Q$JL$v(n`rW(dq}@3}?vY zR_cCz;?@B^uU{a>GN7Y6`7ORZ3`I&dI9T-KWR)USQ~e+Us$Cwm2bHu0?j36mh}XI#^Ozo4rBkz=hW`Q(hs@SsqSi!X;<%>j zVLa(u3@Zr^`YJ7sHTz->q?vn5#*xv|Ifbk2G5=IdqHFb(;P&ik8CR1BO+RCqV>V0m z`nreVbuA{5SG-)aUFz~?fM|s!G0deS_&c`oukYqZ*&T;NXlf2A{e<~!K(CICtTRDL zhuCIpmc)1xJ!g$>lkm}$&YetIpP0Cc_#^Q1XW zPXRV)wEQ62a2UhgnH90etvO&{r%FdqSBV_&&ntNnfKluyaF2(3ha}^>eSsRl8_ZV5 zzL!`O2OwNV(G+=YmRS7AfWnmLNBF}w<4aQK4V%8A8^)A5^}Z^`)&+W)7Dg`yHT+Zb z={P%6jlIGxddhVFTu;F}q;jfxB#gIzb)x;ITyWyc)G&Z37jggarYy|ZxLLVR)C}!G zys2z%F}vyj;e!wqJZJzZhy|#h`PH$ZB=w7qN(coWUGlL5M-{25Rb##~4mRmC?JF25 zLR6>d`B1U=TcC+pw@iC&YjV6*XoQMNn@if#lKW{p$DM|Kz5bEc4a^n%#{BW1{Sg<& z_JQ7^4KEHf@JW+6w-96oqs4q@s0}chtF7+3Vj7-$EXPp6174i;h&eF&&Q>Lc& z1^1izlg?V&QzArqkoFMv%=5vDf#LN``kMvc-?mWAUm3+&;;EZ=1P3_m7$Nr1%P<4| z(5vZqMi=&knXPVS04Pt5ONM7Ur8zNtgKrS?f_Y%PLB20LZftM<5Jj;!BkfmssllHW zJ`%FT6I1Cd0_*^5vgB|6Z;uYIoASY-FQnL^1G%2gEMhFqo9JHywS(H*MqLAU6IJda zW#+J%hkk+Kf|$6j`iX$ug}tzfB6O~r#%2#`6YmC zMYySEJ>d4u*DoRc#maxaz8J8l6Eb>#*D(ItswlLm1R^2tp`Pm0wfs=F zY~EPnw(%(6?upIZ?m4V$a2t?&cvlI&eDu|*6EFw#eTtyHxm9f|GVxo{8mpS$T}HmW zN-xL01wJ0JJ~R4xY?$lkt##s)!7rl>&Vx@2ik2m1sTTs%GC!whXhXOoqH^Yp=kS@s z_Tu@fvCmA)MXSRfOaY*yE_$x9a0_XGzo>BX?b*4x8$co@G+cRjr0><8%p#3krLByt zjO<+56mStC1(yVZG`@FbL91mOC!}TRszsJGbmwG|HMt+95=Xp!=!PIP3js4kRTT?F zdJi8AA)^P|J(ZkuE7Iv-Yu@!0Rt7Ea2!C6w>MRhFSADGm(_B^A;qO1W1jNU#MU!Gv z6+w6iNeIHtJG0lk&2^c`%l-a8mDqU|eILocm}I}fU9jfNa9>T*1!AbMP7w9a6m!(Te9kJGMy!;AKMIg@$$a_!l1Lr8WCu~JHZL} zKzBk4W-O2eofYs8XU)>mlFt$dUI+e{P|NQo@QXkQN+6jQ94YX%2M)in9u02#?hB2>cu~Cs^?Tq+wJhk7o z^Kb~Lhl&R{0gRZ`U|a2n)W#}Gp^xd@7d6?<<@h;-1^IJ^-=%B#77BzBm|N4W`yn&t zen0$TNQWNHG|r6GWk~+`^FzCWL8h-{y%zpsr%cT^s`R9~&xNM*jPef)kAAd7jgRQQ z9x(at-&}Jr-tBCFkBj4q?=_b}a{g#y?I*sMA0O1PbTPCMVRRcS_f z6*MgI{u#5Z8NDxE{{C8$e-2NAb}m`bwY|}#5-hH0r}15=%iz(sIgde;M?n+<3FU5*euJG)Uz?M~wF3vKGv0qB17ZyHrqHdLIm!_z4#Gv!g zuOIU3Q0$7B#~e(VLX+G)++^z;$YRO&26z#QqT`^s1DDJR5FCv-rKyaFyE339TznLRHb`8XpP?pC)Y zOvAU@)yUk>L&zhVx+!>Eh^EJ{3DO3};2I-{{`~T~7DMAoXx0G- z?mYzf#d;MXu&Y9T&PsbYc+mw)wnPB|85UyYetiQomBn76N3ivKBs&eUq}{t4uMboU z7SgZx=4JAd3(|SF__MDc_U$qYh%?ObE_YQ2fSX>SJjcb+K8}?}xuQ1y8502T|1Jr? zN2IL3q-z#vG>T#TJ-PsV99CRre4LgiKz|2JOQL~XC*qi?d~n!p#4IPuyxZyaYG9Rc z9eyH^Nnfo7uiUocWX4T@!_#YRF;9Tqg~lSR|I;9nQo(CCE7Y^K(~tFDI~;6$6v-^f zyKpA}9-iDH207^a`0>!6VD)gy|44rJoe;Y7dl0^RSTnS%(E&7Q&P{sG54eo^T2B(@ zF~x{#vJs^ii|_6Nv2lR-2qhmSj8wy5`lRnQ9e>%meV(vgKD-e~3~$uRY}9`MJCY-=Hk8(E_6+hXbnK#17wbD`jr~7Q0{|aor{zI zvSjtnKGAFNxQ+UQau#r>rCp}?T{ln%ZzK7Sq00FgmPwfdZW5-Y*MBYUs^c2`emyysHR24WXM) zz)qf=V-i4$ASFdW<&|FAXzU1WAHF~T*n#3nAU&)q@ssRC2hLn0Rb$V)BZ1O={Z6dF zj@dNf@-NOH$6u=RmB&HeE5kyyw~B+_Q~R&3zdkjG%sw8*kUF=w;{qosW-YjS7FHx! zuL|n7ShOACjUB_z%awUVSE%4{8zZak?BX?u?LbzNIcbdcFN}x*25Pajv8k7z3qP92 z)W-4nUyUZl8E>C$;Z@7^b0|(N;yOfnRNZ_X!4HQaaGsY6a1wD?c1Y_=7HQZPqU8Q~ z9!(aoyQ=&{1a*-tz4yQX{cV!reWRb`^RFtnTsaQ>Vn4|yhbHXe*eG8A1GXVIqfgp) zN5jPcjyQaC0v_Oi0?7%h71;X;phpU(e=a7m{9tq9=#{7gN_&jx6CR6N<82zmE4mr> zU_X?QI5s6&oTcDYmqAUAETas{ju)HK{N8P8w_d;6XL^>v#TCYZtu31$_ST8YD*hif z$6FaCO?4lBy4TOguD@@K?i(IdY7G+j(7=C!U-SQdhe--r-47f)&!MSC?a;TABKHO0|%zO^8enol|IlXJUh)8@OZCBJgdr>!uW+GO17S#vXgr^=-`>{4)f zjje!TH60@ZJtH+~Y#bfAX^aH^ugggsJR!6bR<*q+rhHbvL$8xk&$z$P==W2?6c)y~11(SOgggR8qaS+w zN_*KY76M*pQ2r0c*$0TVfm&Z)LWuIbg0pT-RiO&!ckFs*JZ6(@CQtWSZ~mWS_+JhduH9+gJS?unN#sQ~9^m&#!JhC*_^sK3wDkPkgrRo$7x+gD|l9A(qTN++`);a(h_v&DtY zGBmUYU44C}XX=M6cee0>42fF^2_S0uO-v2NZH3QV|R)a8wjx7wE@|ASCu%iyEXn2nH%P{`&c=+Tb+jwlL#_{8#Pt zyFMUg(?7ql7n#_X5tSu7EgtN}u@&z#3HW-B3sno8nItRUj~GvCio zc8roJR^;#4*ubm#CfP~J#vp2tB771&SVQJ~h|Ivu(av3hH!+pac)F^EkYtQk4njv1 zq`#%l@GO#Q!KsKKVPu}i_E%epU=A8sy8%Wmf-@d=uMT@rwrXI-%!sdUP@5x_pfY%n zE7KeD0%7>0h`$Yh%3;XqEK!HtOr0-4P(6%*2q*T9noJ%!2FnB6Ky3y?-d(P%#Ul^n zFCDVTX4&)-A8OWEK^0^BoDLJ~n)lE|kpI-oQ#T)VDy&%8K12~K!~>WaWdr|JJwpW5 zcfKz2adR!1+Q^NKF*1)c_Ey2;2Xc1zXhUP6JU~YdrBkP{`rtI>!1yKTX{JGw)%W8^ z(xv+xG!I7U<|RrRnGhzUFOs?3j^el4X3j676E4Qwkt`Ydzed${;hY@QtZ+C&cq&S; zRv`}|9ZM0$j@~ZS_MJo`JE-jJFll|-gZTpSbm59x1*4*XT+#J!jmqEoIX;i~Jvu0| zT0v9(-(TI*j0?C04e=kbxxZxR(E?GI34S-8U9A`qV1i;W^$)V zOA(BPjT%J@h(9d#Izte8085Oz-7ZnFt`QiUrV3X(-|Xt-czWBo6R~d8C^srKNW^jw z^HQDtIFnd9iAg_+?PmSS!O5r0fs(d?v2}l?eBRJfifJFzmeYCtz_G!0!haC?E@_MwVs$MJC2JN>;U3 z*z@aEcD<;l1a><&{?~>BC*Tq0Vzni`t_*;Gie-Y|O-?0KKX~aM5AdoDiAs zdJW+eP(Bw@vuweQudDcgTi?0p&eBikLi1FzvMR8vihqJL`^+f}Q!W`Onus>nlO&Y&A zgPb0J&V|~B9#5CV8d>Uu0N}0gYr21`s^Tdd0D#)-lQ$(o|76?1*C$r$Eb1k2aK%IA zen3Hvi5ZORD|yH$O%QuHRz;KG<6w%2-h)2GG=Ih}5kEB(#Jen3L2x7nOFEypRnO6O zB8u%7{Zd8i{fKn5RtGF_RI;#|Ka2lhU?Bbf%rv&MM#hZE7F^>4aPMDMj?B99b|L=s! z#b(CJ%JJ{8-3NuOi6^+u1So8!{}~J%JgnT@Rwo*Y?*UkyPnZ?XmTeV`guBMJ*%YBi;nJSBvbFcicKtZp#XzMI;ITVrad5d5Mq^rI_ajb0RmS{3X|2Wt;1LMz^0X1<$CwD8;eDhuu<)^s?~ z+367PNtoN7UJnBb4-U#9QPx@@cco5Di#I&l7%J zx-P=xL=6_@D#Im@>l#I3z^|c9s|jj{v~^291~042l&n~x@^#`(v%wjnBZ3iU%1fu? zrNo)jDD$OHVNS?&LQdbrO2n37pn_fXGY9Mxpw0R1P;si44z^gKVE??zY5Ia0w5&6< z&weq;1#N-aLB&~~&P{{BO$Qej`L>&+(@P}4_GLWV#Y<1{V2qn^+S|ZOhBjBUwmoYR z-9%Sjyzso?JKX=SbH;bQ?G%$#QNg3;_6qaAsLt;WOYBeQvR$Ci{|#XNJ+pI~T5@oK z>@EIoyEg;;KOjujq0@#_2Ql8X7sR&SAxf|I2(jz0vhYTN>1lW@>-PUw2=gxl^JqwI zuHxJO5y1p_{TISy{sUoBKmJ5s`-0M4VOP#}of~hVD$7o7ODEe~rk8qId2^@C>vThT zy^kcmr}9&fT4k^kGAoq%)3`fn+(SU~u_DEeeefR72>kr>WXncP*v>K?+t$!bo*VJA zPmA8|5Bz!toT*qlP}99fDO(sosgyQz+t<0<2%JcM$XOL(D`7#^7W`PZi_wU-BIj|0 zhN7eyQ>hcKA-=eHgdrzqa1f^hB>&iV+iel>>yqSSK<~rN-d&wDDM+ErfEa{elD7Q^ z!Tg^9rd{j50L%~n0Wbl75X|{s|3xs%?e#M=(az37^JG6VBlXdcS(6$pA)@iX3u6%) z7?1tPITWQ;%ae&Xm&l-@sn9b*bAkNT9w2Iz zD=Q1l8Ydz8e3Kor*RS~>05cR%6Yvj$sr5~ryh4nKg?@T}GXk!f&fFtKQYs?^7CFi} z=zViA@?p8xp&3})X>SG7Hjy*O5(0Dg`eOM`8rjBY>hl))Ss7hTzv^G~93k>!ZH3>U{~PPS zGo;Bj{EOcPJLi9LZ!Ru#Hg-OXT{SWJURJ!5U(CZ_S=)~1C2lNwxoKwdar&csQ~-+~ zNT#{x-cQF;VS5r9JtIFFhrv#eJmbD1buPlRYN{-DhmZ<(aJJpGw-pYAbnCuhJaGOn z+YW;#EdbZ@Bt>j(w{Bc+S87~1UOcg~_bRt2;%Y6OC78V75tk4~fKTp?PQJ>gP-7#& z|8o_`+oIVnlV$_Vu8pL`>7YRt&(kkCp z$L1uD{UVtpH8x}3%P~o?KqP0slLiIfyG>ibhrXpD=d10ahvg_?{1&BbexF!4y2rA+ z7&r7~seldTTLxCMdZkNsup|U*RDjIu|EN~J*&bS4gT4yUpIsX+ZgvX}UhX*!W#<`I zEP!&WT#RjN*QdHnF{$@(`nLOvq~J?5VRgNII`gh{^iJkpIIe0-vi(jk2ynt+#!!mO zk%+KPtykntE}ML@GP9lr2?^fAEEApqop(7P<2Kmt^;htNsI*dbA}cphh>S1(r3sC3 z1nX8;Q&#T8K2GKz^0#A7u8x+c5xhBQ3js{Y2~sWX#K#TsX-fJ7GEqM=XyqE@e=1ED zpxYDkR4w>)H(QB%RLgVohs(;Thb^?lVaZXKN`12$2Y_~8tE73wc@H3|dU{m~0Km5+ z4o5S7WSw1!00e_RHU`y!T@|x-puX~V0XeDJ zQh?UZLs(#Gux+FJ`XL4vU^qD7H%5hUDTdwKvr#zF*+OsLBaLa(pMtNB@5nplLZT_$ zVo9oua8$YIwzHma)G25}=goLiN&pVh8jW-5Bvg>gmoLH{L zsY5Vx6z8T>tG>hQ=*$#WwUszyAF`h@g7&s*^FErUwOY7!&^}q9-CYfOWnHk0QhHJ1 zgr_hdI4zIiTX8F3??&!20}0Idb%;KfuSF|ccm9v)Sir6VJ{DK>c0J%8rhVa!o_l;7KC@k*#3~0Q^}U~;z?Mpu)k;}3(mR%OatsoJ?k29ej$BqEPw zi(b3ydOjI0B|c>@I6;koFWr){g-Vms8sM05titIAwXf8Kkm)_#PPETae0aM13`iq} zxCnCaOTZJ}2t-1K0$DH+Wf?{u9?E2>g(q-f^;HUgau@`*t6#ME3P4ijWMjIkM`Iu( z<=(Yb9kpRu3s|dO2E4STgx^-toEX>M{#X}Z(SFjwHD2CpIJsI^^!>nFfX|0e5X32x zwB$=3DRodnJ*dRmG`16ST-IUf2v8dQfsO!Fv1#Jn)y@k;lwWLk86@y5>)aQO=^i|l z;a(jSm>yd%G<|Yvq}y-^FyMxUy*##VxW!HJTuH(9CEfX)(^&lEeAwX^T6^5wsN~gW z$qSbWiJS}WMujF1#)g_C=a~n=7hMl4hSvwI*Exdg!PaCUBKLufJ4rkb07!NOM|Ph` zCxw8~z<2~s{xq(mh)sA>E9F2@(#7>o*b?1jP7FhmslEw{+psg@b+c|cnHch10g(G` zfp+vs1{+{&woY4<$=V>Tv}JRvLbZdJQPK<=$|@gz0t6b?5S#0=6P_G`PDj96LWl<& zA!~xzP{)1$BSt<8BQitN14dUZS~B@>#|aKL*fLevL%zREJo;7(M`znG(m<9f7TH2S z%@O~*g+6ry6sv>92e3uu({b_CHu2UX_0m{?O&3DA6Tf?RiHMQRAy035$@m^8XtuP6 z5v+u1{JjFm#A8BA3#lissS1W3M=TC2{0hb7v5N*)(H4k0ECX@y=XF%3ICZ00HD0|cc#j8IgO|b%2cQR!4@nm+0A*l zK}Kv*Gon~IW@4U8&?SDg6nGZU(8(UP-@i-6A_gNcRa~24(_3<<*HJ#0TTQRgGx{Ul z7#6mBboT?#ml1QjIAp&n5=P?&|a}m@SqycRiW1ivB4+Y zgyzwZ5W(XZDKl}GuytU@<0_8&E~Odce!&$#C?+cW(L6fA(!;`33?S_^7U8J?0(I=RR*1SDb}Q3l0Sq=FN^5Wn0_3{3kbG6C z4RT%cs;PBgrGvs4sfCIO)9$N4uisbq;)^^zMN6gf@ZI!6QeB zz|a|yvT#(62*)%oMB&-=C$6F*@3aqh6{O7%YW1&WVS-Ir)Y@We z;>-11m^luP9-4SG^@&FnUZ+#&k{>0}E$@bDd=b2tSnp=i?f6yu41{-pMoefpNU?sq zv(pj`U$q3+?SX+zXavyEuf#s*z+5IYJo=~0QLX!brGmdnAB4&}S~Z}gqa3ud`~{YA zS+Sb)0WXvw{^5M6Y9bQ?&#fVFfolZFq<>pGJbNO_0P$&Ie-i%XDp9=T#Rj@a%%5E( zkk*kUtHr;VBmcuyVxQpmy~V$;$X$X?Yy1<)++1d6AY&kH#J^Uwzf1@Ixwms1EM8+~ z2y6^E;P=MW3{5nW{lE8gxVbFMSh?7CwGTOY+{~#hP(CQCt=@OkeJy9;?Yg zQNm3JMwU!DdL`1fuC%m@o|_QFZi}J1u;##Jq~V#XkdYHHawUPmDhT3n`JQigCu>ik zZMU6PtTp6mPC<59u-C3Ubfg2a(--cDm=~tPXuiYBm#vy_@k@2i^_OZuGN|7|ejW?> zR(Pyp%V)__lVU|h?g*`1Z1pRUWp>a}wcw3-SAgXjv2q8lMWrYKv|N0AB1KUA zC%oIgQ*akaZjfV{XdU3dPa$Op3g{*Rbthg)emUN)4FkFF`skRQlf1d~o?{9e(#AVo zW_*0E1=j!vTYdHTqfLG#89G)LX2Rh7$b}@i_S$126xScv30$gaGAw>PP;TR7-$!g- z4Ndi31WK;s>&GPILbYcAW+hfYLngOyrZIRNOw~uq@HHuUXCe6BUq`L?L!%U}mL@hb zqK1^ZYFyF&NKglfEoEjD1s5ehwZquHBFM&_vuYgQm}tx?QP_w!3%qI}$YDf0VhQJh zA}d_t(qdp;pYvRZ5I#yN`bF{PYrb9=tT>G+(vt3T>4AdF#NI2QA>;$}3~58mjsj_G zjp0X;4E-#S{a&FaUSY%V?M3L=+2@W6W#TLA+UOju(RqZFgaM&NyL7Z<7(Y^*#q0=l z-8p(OU`!!5NK6ie`^q4>i=O^AjIA{>Y=RoED0{ccLy6O+q@{2l{7crHQ*JO{PV@)q z7I%{Un=p5t)CX?B(r2|YuSBB>gGw@e-Kh{CS+0+@3jQ2-lqdsR4Gl`6@%>{RHfAJ3 z0SX)VczMWKWA|9W>d$SB>L$B7CN6eSN^k5k6HJVZC_7SR@0u8xx6RU1_dCObN=N0Q za#Jv$hs_GP*kVHE5ZbgASsgS8KYKEoMrvdA($-Kzplllg;ItaHUWCxJ{I8Y8UL3ox1XeeO=JO3 z+8VP0*7UBD=eSKS`wrVuP9%WqE^xN#y>vss#;CW}dX%N3qjvQPG!_43cG`z3DX3){ zbozDa&}}_i%ksLIDCvAb;1ta5g{+e)e4By!szttp|GGhkHP=z>S_IT8GG&8&^ZQDD zR70S;Dvyg#5qNy+9F1@}Zj5xbCL%O?oyLy@iKkA5#>DZ&(*l6T+ZDig`4C$1iJfaO zMV8g!sOteNKuTQ-X1_zAVIXVN@gM2Fk z>%fkXBb;qQn$u(8h|mDiDGC@ntJYxgW|szEDx2U5uL3`=#Iu?<$Ux>xUJU`;ef*a+ z@TPckj(%k26ip@5JQA$upDfZ&RqYRW+0n;Dyu0GPYoSb;rjhcQ%gz#8BzIIM`gYg6 zkzv%?#T7A5SAo2M9&X=*cuR9pSsF%_dxi+Wi3-yEmsT+x5@X*=Vko_66XoqbB@uZ^Nv^86 zvQQfuI5Q6$LkH4to&^}LvMc||aX=}~@6EyUJp!q0(8`ea-zehc<}~GUM?$&11~x*1 z6aIFN`@KMrzrqor{AS<&rSLcNn{^B9dIKj1AX!D|=G|L}vlHTMaEo#=1aUH;g+IYQ zG_kUBE}HX)db3%CKn_mE%OhD;@J+7bfHvv+{Oa)WzMhi{_90OPaCfZpuozh^1Q+ey zK`wbd36s{r)&yB`9>Z>}IUkDE`QL#u%CGhxZWVNnGtDm7QTi|pH3MEZoSa=TQC?#krd2bG4I{zi8NCF%mfT1~gN-OgEWEh!(_c)ilL(ZBd@gsEM7qDz z!hh)w(ia=?UI%4*1nR`E}lPj|*3w`2I{>G9#A-JccbGo6XQ* z@VpPU_qtGX^tW_u*Xyl6oIX^5k99aN6ZArEh!7l>a^EXKHjU?J$%^m`_zWe< z@1@YeFbM)65D6g&i3qEYO$(UB9hxw5yqTU^4$pF@PYuQPHGK*-hw~J3c>=G9f_1Tb zX)&&|siJmp#Qn6Y3z9_und1~iZ&1%ZqM}j*B{^EUUX^o>=eS^5^#Yd;JN4J*=X+qx z@Z(C}$e+BrjG+vq3dU^I^`8RH19bSBgcsACPyhiR?KO`p=NrA8$pFr2Aw^R<_cy+n zoO{J+rJ}DmeT`kl5IQc(V+l|ixM^ci-$EVLb3K{`6`H{J_`1FTZstu6b9#&KY3Zi*N z6X)lCiUN3=sL4S1Zr?f`3kP~zHa{;Ns;I~ji?=2^9I_0)jEtFcixDj1?QW-Fk)fiP zkNS;ykGE-OUQ+phlZjjsJ%aBE1;TBsFKPT4wrxF~<_-*GwUKUKTk;twsld>i{G4?e z%wY4kpKfc*%IbrD&E?~r|61UFS6?Zta5aA%5dTV;d3ZQ^&Hr&g1PL)BQW!y@M!$QP zHVM;DI;(-D`t9BIq&(n19*9FuOn*EOC-=_3pl*&WaoQIY{SOaB9OVh-QG_emMb6b0 zZH{QkZ4L}Gd&Ir6?3=Odve0q|C(3MbkOv~s$Y_YR-wdN)kbLtyT)902E!|Z#V3>9i zg06637H&cN5Fz*@z)GWvyb91=jcx!b=&;%X@s|Ax@?Y@7$pnp?JT9&ngySuvw_u!V`?!n#NZE$x2g9Ml01PB^jLvVL@cY+M?4SSz` z&bjxy&oe(@sMTvxtGc?n`mML(ATXSJL4+tIN5f)CYtV+0rGueHO>W9Xj*Qj}!ZDJ; zgwE-9s97c$nup_M{I>v)j3Yxx&uxFYZze`pnGRyNr*$^qTJfa-KfYS-e{Zb8i_Y6F z=Knj}=jAoFFf-@*??cizR7w4XOMA~-h=cgAlOkSzV>534zo=^eyP+wm^Of_hYZSZl z8>ocmQsF&AJTFJ>gxqhLQ8{D$4&bF89O>s?chpFo_sYmnvC4K(>aKXdHehPAMKLmU zvHzWxJEY#~PtSXw2$O+~j->9V7Bi)$1`3Q~TzjWeSW>hHf!+JTVhP=pVdN8eZs2>f zaNS=Dwq!7(%)o$rI7;X{1(Z8rq5ujmP+0;&%;pYaD(?q5L<0nDdUvz22opNg?TIDC zktyu4{r7o3rZzH!<=%@G9Y?wijuecc5hRycI3o+irsu|7Jx*hlV@J0kQj3yCvl1v8 z3l6G`vdp<3WEOku+cv=gO)#0(-SF(gU?d9U8xjRb!4HcCQ)X#ogbdthg2Sbv4?v2p z74cf^*Q}`>!7ciPXG5<2Uky%St!9FN6Lbh^NJsc(C8k}7qTHB0KrvoeLZY|8Qe3zv z5ecmIjekM{UNbI!V~f9bs&7DzdJcBglv+iix30SJGGLX*v5vnVic}hsmt$g9jANCl zqGw-+#~rTWZ0SxCc&*Vi5fM4g4oD3e6!1Ded~s*~r>N z)+Q;4LOB3Q9sn6rLeN7Dm(mf(B?625(FO?G~-l?efSC>T4SYd=Toc%`hnv6oI6&W1}Jkp0FruwUMtdVgIBw_?8xNm19SvFk|NlyuC0TP8= z?p+BFf;KI1VhMo+fJ8{a*i|6I%FIcJv!`od6&k2&5^3ucX%LtzpdEp!9Eemx#X!f+ z8kUqOACp#5t8(uAP?NnoeGGgfatftf4MxR4;E32mX4J*IVm zb)}^)`a1n}M!|yOgMF!EvCLN^U`a}ePGyC8T0N@tOmlh@g(0SyZ2ZZ4GS@vql!G6o zqR;QhE@-d7T}?%kxyT9If_E^`$#xSsgQ`k#SU>488)Pp7n5kxX@k@qjzN6D2 z*!f@y2&qKlyxyNEZGf7-3lc1ZsD#G&8s{yJGDN(O5BuaVvfZF|`7n+2>6q?6!SCCm z{{OjtK5k=P3oicucKvU1$@*E2M__x^g?aaujRp5V=Hun$;|4GPYOAtDU~+!-+9gJH zR>V6S`bPLxTX`nk$!cbC2D2!9w)V(hW}b}%iy{^lg@%Www*H*1_j z@eY_U`4dQJeqZY?J6${YEj`vXD#%WS>bu2zmcz54YjtQamqWLwU=5ho%}3F+kALNeb8HG@NQkIR9OM#Z6bA4yyY>?GW=ESi-LK2OVm8i)9|Yz zoP-PL3m3JMF5P7HxGy!2c&}EDd+1AK5>}YE=k-n@1Gr8B!MPA8wVKp%9M)<9>XP&g z9Ev^)=etvS!X&>bvZqaC^I%^nHUN8bhswvq)m~6lDh_GxR)(-5D9U8)V<-rPh1d0E z)%yx=n+kYaB#{uTo;;cz?k_nn2Y%11XQFog_t&ez3w6K_Vn>N_OEh#JiTo! z8k61SJlH5S{_Vs}xw*L5*;iHmbDBj2>)|+MT6G?I9%OG zlqneS_!@0&s6HPukz^HZ-B_QMT^*Xm(t3R-HG+k zaIynH-5TT>e&pIBs)`DXm-QQSB1{63jURbF0lvIm4u4o|d|%VCP@|dTjF>54L|$uaMvzSd8mjh44K{^d9CdR1{@)l$oX2dZQaVess zkDtXdp~-(9v(ftGilQ3g;ZMC-A~3;78)!e3~Y`4HIm|t63KJXufKW zJ=@Ba;L6$y+tE#!cCA5CI62CxAzs}yI8ig-JXE)>sHG%@uj*$fV1VK=G1oTIPWQLiOmub@mPJTwEB5mC#m=W?2ZKMDPi6&1geVFZSeJkqe+mcbsfVV!`a^!5Xilpz};W_~-$yk8T7J>7n zl5d#U>OintKK|CMi0`z92uNUCHo8 z;G$v(6y?_yAHJ5>D8V+VRo@RS?w+?l>d4haPN0W<6eb=0PPaIO?FM%8CVpKO4ko}y zeS-cSacOfK{GpmWCp_Rrj7WHi zZ^*X&5a<&wVH!Kp$9M*^77G3@X&;q*v;QZxJvA7G=~;Ru9#jwOz=_{GPcgW}CSEjc zgBi+ggO*ExNxJiDFS>DaR!vn?tXe_K09a@BWuGU^srXu=b8a^Np}(5T#ufj``d)@rqh=_l6kz{- z|EMj8NJH&bkdmDG$Ipsk5{3)cfZh#K)c2m?yY}I4Wh`5HezIeSYiM_7y(gs@b3rl~ zcPO4O5_PV|y(6rxV3#W739B9VWh34K<+`|Z?C z;1Zm|p-#{FVvGR|3>z=BB?7y=O72H64b{vQX*sa*YG1ktedU`&9~)WBe@*0ML^a>U$M5;b`kzeqS%Sbt^s z+uTnFH|HIHW}q*uPd+_@CiCrfzO3HNOrN(r@C1+->r!fnSSQm{v4s%sUneH<%XRPa z_M7Ctd^)~6pY)mGB6oBOuLk58qzLlxr8N43;O39U(VdFjF>j0H1f<$ahNU}MChf}A z5e-n86B82&IHAS^B~MqJys9069%kyrN8*gC&nHzhO??Cy-JJzDP0$iz4OtXr2?XQ~7y#YAvoimJTu}f045oq|$uX z05RYMxAqB6t?eaN(TvFEh|sB*Q+~4jV|vDkM@SNv4U<=p&!iS0JvFKudHYR;`^VBZY&-7ayc^9+x* zhv|E;2rX9ahMhH~L3~^FVnUHhR_{Xcmh~DTRB5(tbdWP{IrC^@Uf1Ei$EOhXCfvzO z3I?J0)Q5@EQR7Or{WHEagrUF@!EgH!?Fs}L#-TQ3a{xN>o^{^-p#+7(+(}lB}_y-SI{)!dL9dJ{7eQnf)EK>4hFZc&G?E=mx(Jb zo|Oi5CJy%()U~ftykZMW9(U0!@!W?gOyR#eE6x}#G>8%e)jkZw(j?V9H^<&Kx<%5% zBBM5zzyUlO!?}N=!mfvYbj^2@b2#3mxKJ0P;;Wu>zVls{&h`#pzsx=IE;)~lBp>}? z(m;`#CX^8DE+D~Ss?YnOT$jr#>#OW}?)lIcwd$FN@BLeVYzFEqptRVxyoTUo=}L!J z2QqAbu?W&C2AC4Qbnw?8nm2a*KeDnc(K6+2~@1BwsP1EdBg4gdzaS(3L z^OifGzSrgF;n=}9I(+!pdJ0N<@t2TDH|9j<6J#_p@Vjnr3u(gfErX>RYo>&e=T zd_Kye^M3XX^^=C~bYv+)l`Ay9ww4I3i|fmFsE`?5X~tA4m!Op*{F)q` zVqFGs`FlcS@UjrAD}9-Ua&1aB|Ezz2YV0!Rpvz}9E!pob{vt+u^AmFN(NeYWDfIVC zs`@>i`W36EXVP3JVgq1va>y2DzU=SsFF;7O0Il0QlO(`(JTXC+#jP~e=q0PcH$U~4 zu<@n}kT3ZE2z>r|WDXGpV#<^U6woDV#`X}u$})n6*R(5cS;L;6j5J z_A3ZnK}=;AtoxaTSB`OP{Bh4&E9LxUm*+h@kS*-5K7}v#b{cACNHdC`lxj|A0Tp4= zZO@zRO>3P=e%o{P=nd9q=E9=(Hvu5^GXG6m^h+_sySdaJIw=|5HUv6=#>;7fUfJD? zV&Q%u#<)6Pfb7YKGAw@+3AA0}32#p}c$Tc{9bRsK-x_-{RG|bi-Sip%)1jQ15J+t= zVSbuH57(czNJ5`u(AS521}sop1D3zDXSBIMS2j+7X+2 zOZyDj8vi9NnRA-1XZ;E2(ou#$e*YLL@hL=>e|Z%vXg5UJVV8vA{Vx_1TGh=F;nJs; zsbkE(@{Vsq3_Xo{L-j*3hKp7VO0!ZKk2_`JPGX)Y|J{Ah>bw9pRPA{mQL)(&8 z+EuhaVm(lOe%6iWH5;}sepG;|hdSt4;k)+}tDV9sMPa)u*Rz;9cy@l|D*KW8p-Wla zOEUj>{;5~`E1*B;=zXItpZJUQvf(Dbx5_2T!80x-ewkI(b!=FX8h zr5oq(_wtW@ntHVZzzmBUy~-I0I$!!Prhn7EGiUembjI~98@1>U5YmaY-+a$wGHg%K zy7r;wOGfF~)+K!ms}ONieLAg&QYd|l^_TvQJyt3C!$5%3UU1HPQrXfvKDC83rn28A zwK?zilyN1#^uIg5yE?0=Yt9$vjd6yuti@uDp+j%8w}rLQVv9UlxB6W75sS$KYMKXUOd z-)ejh<_}4%zLvRIJiRynR0=(eNVOdmy`PQsOLq(~IO~m+Air4>9|OfA=T9z7FK!>n zo?8|3CFWvW&UXiQRqmXfm&srsp@83J$ABIaqiqtA@<#ASzfS3uzrq94*=Si*-Ze47 zysN%0i;YCAvl?fRjf3=V)ocFRPF{iM_p3|Wz$W}aF-33EMe0#x*12C9k=KP{;$xP@%K^$ zEu|>zjVAUVN^gGASJ)ws&!5NOsg5SG|F(%1Gj%whb&R&QQs{i~q~!Bx7qv!ipcuF+ zNQootje~3QV49Zxm42*on+1t@G(qA)8?2uLAeA)*kBHkk)yz&j=@oC^f1P0wu#vk` zDKXFFlWQK)f)>{3d)k%x5oirQmT9RjjuW+tV*S;Ysf4FP-R1gC+uO<)ZH%2y&N4vT zwCaZxa~Yl0un>;^x7fo0*rJgjyxow)$CTqhA_ULH;_2|o>)$5bb*JuKpZBS~dMt$i z4;Bxucg0?*@l`={gFyma;u;ND_gP3LB3%uAy08{OBastb3}5H{cE%?MEO z1LzZeyTOxu3I1hBe1+Hba%9(K2xQiHd29&Z9N(>2Tcmswic@`vk$96qe?T$9&itrHuo@Bz2O%4YhO=5&)Q`QwKC=&f$Xes{d%b z6g<4>f`C(Rx6(7t9;X06oYZXoGJL+hM_Mi?Ti4}E*k>I@RW3$YQC>FyxzS z>;u`SynjyWuOrMVhK+HW_4`*o-f=nm(jE)>aM-sfTf=~zA`5kv0}YZ60xIfU!&V7D zQ#{dXlul%&-5Ocmk6`c(Dar<_e%Y3Bl#23m-XG{X->LxCh0hzAjsqkSSv}87{}TGP z0${f>Z!MR}RUH?>uDc3SKGn1mn2mau zAR!M9fQ*Kkm^mUTDOCh1;2Zv`{bDTn5xPyosv#y$b=$CYr_BV~`JcncfLl>s3rs;B z12t0R3|EbSoXc;3Bm>Wc| z39zqz4EI~;4-*2LpIIcLSQ2w#x&R;ll=!Zfn^{@x4*o~>yimSm-Z@{I8*Ik2p2 znV`etcLuAU_s%4W;n@^i(oqP-2b&;sdh|G9ry-Qi z5eYKfXV3SQ)3Xt&A1rHQj~$nstM)}m=I%>ykH6D}JiA%9=~M{5QYf>*mYkG0KcIG+ zNs`@7iD0ZbaEB28e1&=VoXB0Z33y}~BV##rO7U~+4e|kfKan#PW&7i-gUAB21$;f| zCCml(RM5!|`B;0zZu3?(Z2RbAqX2!eW@;KVqp7liei&L&NnZUlADb&94P}eam_DQp z%0428G>XKBh8(?o{>k*!lQE(Eat&o=eIM3C5a3^0U|HXsiCMEXbMCfv3*fYysIb!h zFc}|Bzw(>KMRsbS>$?Tk=5#}Vdgv|3-OdEi@I!U*C1F{#0>22)t?{I-sgcT@amkC2 z+>xlYed*?7-I&#ZvT)=OqMc$(*iZ+36Lm>{MYTOIV!`?#YvaLPj$j#*!C` z4k?l?u~&brJ--;}>#1h3GhkKrfIk&`>0&eay*ojgJbcAZD66JhGet`)WL{w9MgSSm zGb1=PAlXJHyA#O55uPQd>C~Gb*Dv4wyDjAh8pXse40v_`D~(3B>NwTDM;g={=d_Y9 zpQFzVoH)O-c}d1OUXGTk1{_i`HIMet*p(P5(a1PCI7ex9c)BRA0kS?VG28Aqsr_DC^*Kgp|EfD7&%F)tEcU&Z=bN(!>gO5`4nk zShCW^51=QpoksD*PC^m5Gq>{)8O!xH@b0j;WZVwwnpCkQ{^7nW?UkTfUv3bz3jN}3 z@lN6PD)4m9p2L=TH)c>=&)J)Rg<%_raMbI9IM|KhAHgPq3h=JvYia28VAj8_qrpyf zGqobq6?3mLC}uE3)9MyNWYOr|jQ}Nc`7h{HNT!oy%hS@?o1VyeSY^NF556zeZVVID zW)8FVobRr5&o#6o@52GMZ>oL_@XivpyUL?ZS6dC^Z+f560wz&sZr~HaXcWmQJGh_c zEBTYJWk?7W47e6z$?r8!0;%%*FZ7M6dKpm^!+XyJX7Y533RK7Emh`&N3Dotw`yTzC zO0~%TdN~{k{b%O0z8fBx(y~;Q0lDg0lOkZJ|EBGS=5T76FqUEs7M;>p<&=zD>vg=i zirVK++Jt+W%*XF8-^50U*a%Qh-WeTGBb~miiKId#Js<%Cypw*K?!`6D?)N5UW8K7yaU8@wSbuL)6XA zoTYZbCrEkkWU8|)pmZX2QjuzRr46&%X_ff>=D! zvP~=114s{72YO(h>dXe;)6>6>BVBq1+|8_W0|AH40jVqH`m|w4dpgl-0^V%(V`H=N zwlYWZ+6IM${42kMYb!bj&8oGL$|qyVoy0O^kqB|n%T-4m@E+*_uZFlGvCbfQWRAdR zD%ih28j)hgu-ci7u&E#A^39fP1vTpg058`X!}ytYA5Ub1Bid5XTxg!l62`|g4`t-E zkU9FM)Y*TPU)rT}RW+fab6_qe{M0PpW5npApL`FGK3WXUAszF?4+pcZ!!8DQhB~4f{!wM4VSWU(+6Ad z&g-k}vhKQHnt}Lx@16vCbP3L}$8Xo^hVe}sAUil4og8|_K+>kY$n=2mQlKeIiiWYZ zH26_x)!7ehep@Yoo&$~+0XufI-0idzPBdBWfu3;01!;?h7$RAd!X6w4zR9=u)=r#z zK(`dixF7A!IN8q`Vk(99MMH8Z9EqMj?A>Z%gdoR(1(lbVRRIU*pm4#jcQPtmm0xC^ znDI%GKDA=Z@Ew!a&TbymP{Jzkc7Y$b^iPuBo#QJ;BB2QS%MYhwo+d)a--VjzZcv>N zXy{Xa2Emd9QCfv26C=#78#A_!zk>WdzQe^wHn4wh>vwC;8;Q^*%jw2dV!CHEN$lpA zOSmXRBYOG(3kYu%=&2+ym7)2l8A4bMXA>9ECoW>4ZpCTSs00E(X>4DG3OjwLHlm?O zz0rEp@z{trNm(}Bn2f3MQyrbWwFtnu!twb9sXxye_7~W;Fv?%&3#n<8@XG3#Y9_wT zt>c&^N=2M7R_Vd^=b=NH&GsaW;9GDPZc&(>)^9HXtdD1F5y3{bT2Mm;OMnQa)}IFo zWtt7JN!8{D>DV0koR~pn{8W|HB@Uu{I@OmrxtAA;;~s2a+#0v5)%!A zp2~lWmcNH3_zEqL9Rm6(YaG{PihU_C&bjIE`3Lc^NMEl`#Fdn3p>2xHvtT(F!a<~1 zxO66f5q8#x^J`4UG;Gepi}3uT0n=&a2O1j@?vqrkU*qK{0oHqJ#jC0D_-0lW!C|>9 zK7Dz=wHLOi`53(;+T7jX9_B(!PTdI8NzeuzKsv%U)eWGzk_wIAR3z-bCZxd%X@8!8 zm8FC#1Nf$VACD+rYPfNik`4ns?5US$oW_T3e}=#i;NQ-bXI6ZBveab4alhG*mHrqp-;s%$g-rmZt33$a9vQnM7hx4K7r^M3 z6V7IjdkO;EMSc;72J(`p7@|FJMYXSmtLOkBs@z$M$$FWH{lZW&e=GNjP^|%VQNtRM zn;MoN8e(nphdjLRr6M9#E)G*>ODm_rZqO1w`Op6D!FbeY`Xpv765-Pdu%es6ia-%! z4;}jbNZMM3506&Ii%nRq^ymd(tDV|oW3FQ%o}S(YOMY}2F2(1fr9cq2%NiYFF&uAe z2k88i6q1PyX7Qa)&wFys*tG4?{(-*on#BmK&z#y5_GFWY29)F!Qe>SU=qhhfnJAGU zyK*rR893_+W+l<;e(nU%Nym^Pr*X|-JrYw1n7wA}mdDkY2mnU=FF@S*X=y8P-#=-h z96T+BYclC!vl)RsU+8kS)B#$w9w`ZFw!mFyW%(5hk!puw$yFo}B>TbV8@JnxAwXZ= zKOgcqu(K!z&uQ5VY(}sjEzla{`GY@zZ(yDlJXwYt0RPf_*el#t9oaKg5Ejec_WM1| zb}}6Z9$+HbFCv*%Td?g-yP;vq;H7PR#2ez((An3&lImjWm8#=|Sj(k>eDp^Tk>GYx zrXiz~W8i|Z{sz+oJZh{-$hk~I3#i}%!y38fccqTb-~NrhuYr>oBlnYx!5R8Fza*4t zbA}$w^(xr$UDQmnxhP3^1YBv}g-P{y0vI?#vxYR-j;U_pMIPBiRFLJZ5oCDEVQ~bE zNbTRY9Y$whMY|*BKn*u56>Se%m_#&SF5x?%zQvu~8pxR$>4UI8Jz$^ECY?N=46z5C zI9tHcrHRlb;~ZAamk%t~Z#P!}`=)hd)j^uVc)78+ZI0U3Y$^T>PCsCm=?rT-aO+Ah zJQO_Fdv0GNz=}K(Sx0_^tTU8C_Nk|Y6u(6^U%g}g%D$pk7rgu)>><*~u#9z`qwpk` zK?;t-D&TF^FHPJKWJO5YXtDD;Ok;3pca{&1*OKfjtxTI4h~2@Hh8pZb#sF4hI>^q@ zcjwd1CG}EW_yz!+WL@@O=rZ6z#ndo2LM%V;0uA|x=w=_nIm5NwscFRDt~;A|L^VIR zKWH?dOn+AEhbX6LV?0(f2VbZKzOY{8zGqaG-L+udG1|B$Q~WP&Tl%T>lY>ymvmId( zHY{9lzFvUGF){eq!*h*LqIS-=cl0y*k|z`ZR=!gQFIbOB^kD!)ul#iWR*Kn{>`-u| z3;s(h?`>DBk+t9m}J3uLJ0DIK!0zQ z9q9kFvIERI`NpR%n%<4fj)a{nFKyAg1+HYbph>iV*>ZX%C&PmchxL{JhRzyp=k$)? z(K)Jngc~k%8L~(x&?|ulsux>0G$K8y5BS1{M1ZGOIPO+8mV*%EuO`2? z9Hb3gpF^bvFoRjfgDk=D%XikKQ1smh zCQwwYz@SuADuAe>i9vY~g|I1$qM&mi{;|aqjv=vKxYzgza$kVz^GKBG?~;y6P*fPodbP}D3Z|E~C0@)AQe3Y4?} z18#ZXL);JE!FUB~)9`ix+#@!b@gWMz*#_IFPdvA*53fN8Iz+e*LZg(4qRSTdqK6zQF(NtATYy>Qc_%0uT}A#`4*t}_!ECm)g>47{qRfI#Ta?#9BA_2gmwQX`j8*o zVt~tx?Z457Z?D^)7dIOdjCTFc>ozszU^n9e%&L#Sm9OL!LD*WeGKxD^NJ2YDm?;1X z^gmZlNYq+n`9y`vc<_*{E~0SOcdxnJFh0V0{c%i`6+`b1X?npk5PG!m{Kld{8BNZ2 zV!AdGu>Q2x(ZrdR(^UU6;^%wHtzUOo!d;{)b1WEX^)|EFw*yx`rn4?Kx5X`(zXzTG z-%`V*(r*d3c@q2yf8Uift*(7jZ9u()i84b+T4T8p8nG)=zt=X~ zqB64JE_!-XK2rM!TN3s&UGJH0zB1B%-m2)()wS%HyYjL;#A=MF3gww6ZYWz2hwScVYg%J` zh3XsO7!%sw(tfzN-WZitU*R0~`l}cpA>rN^ee`EwbwDX@A{F!`_39^5Gz{3E7idd> zQxS>tBQa-|r}C5_d?;o>;2jyX2AFZE2Se9(8!%u?YO%eloH^!p2)+DQ-O3w&URWpE zgdS`>Xke)HUv(?SVD=Dx(|^@vuKh@Y)Tp?^RCUDtS6!wk40joNX+#=2?`AS))hW03 zJ%;x@#_kuQ*T6xDzJ!hFV4r;h1n1E8Zact2pOt+0QfQ^lHw#U z2RG!56cV7-E9Ad;{c-ui{Iqkw4FqYX_|}0?=wERK{U|YCE0e|2-ra0^ol1Y^15mp} zHc_m-^zI+jKR|nMk+AL@$$6c3qTvC~13R?d=?3{BZQ0WETdvX(!}WbjrhOMfPcT!M zE{Mltp%)Qn{=IHjD*e7h4vIx)_)wSgl^dUB<_e z$}i45Gtkqa9V$YxNKTYVJGFPrXkq$bn8+!+w2-M(STLP>(_+hZejM!g_77 z_q6BlO<}rtH$7^<1&yKb2ZePXq1HN_*E%|jsd*BhXS=Fn%e=j(x_xH{6SsY#VgG^{ z>!K(P93(}O@_a~IwfFQ;B}5QWd_cw0abELH7pS!S$z^t`=sMvl@jJyMA`tm`(3lU5 zjE1kpIEUopdCcj0t$z8|89N&Tk5ax}&xknfjK*h=KmLxiFQgb&T*9^P>Gm|j)W(dAByy41_C;1&*``tG>{O<_<6F{lw3SpOJFWsxBX}(g`_f zo_x^qfre`$pCf!61G&(yQGVeW3&OGSk4j7OPjkp5#_=P0Qf)$2~>zn9zgOF!8_rK%a@PkqBM2@kWRVj-aHd=a?4Ti3t7a*k^{mse^R zUb!aa!W(uhB3sUU0LurVwp=2V7*y+R|CYBk9c3>Sur#D8N1hPzoFZ=A$DC37_iJ)tb6 zkcm&oEffL}Z+B$S4>h_A^T=l`Jv@1`iejX@L!baTL!6!71{UEbtD48%kKs$jJa@3s z7`oL0yP5X`acG%Z2{>q9k3oR*1U`psv4b0A@j(@z+$jov2dHbp z6G*F&yRV`;y--{3HtG1dM;P}1FRB+Rq`n*lZ@ z5F21VJ}7n9u{Y%0QM2WIzOXvnf`$6n?{u&`CjW|CcCP68+Y)eJx9+Z`fqpe;DOW7c za`O-4NKJ4ylr=7@I?-oIuAZ!NGfS_8bUrh&x=jvQR);7@_{Vr96q87WS$X;xVOZb3 zoA0C(l<&=}T<#G^6cL({UWq&62^yMydr1MH=QF-NvP?>Zx0^gb;%3TjiR3rR31%;J zyCwe!sip2K=uq-C`!Hm6p&+-Yo80GIs~94tgBQb=HU870k40!i&Pd6LgM8U$;rJ+>wQjfeLabLVbwC#CIa-mi*?I+kMfV$-Rjup2}k|=9Ker`7bm; ztSPRCe)Am%4?vAzSOjl#y{lcM=Ww|TR^3=(E&NOOyyOtb7=MOqbD3KEl4Y&Ey$0d= ze?gK-fs!~w;LQ;#)jyVRY{JdOYksP&Z$+$uontm#WN*i<`dv(OfQvc$tQp{(BF`bA zQG@|CAPpd+rWre1S&SVUVYyD>%2Q{@gvP)wqRmrk?0?)-(#2fvxL5sI`_cv0*(^%>7-XzBSx zmaBWP?LFdXWp2E4{Ks%#ZP-vBTS>oD8{S+}5cfjcD-K|w*9H3$axc8YfBwGY0-)`6 zVDm!k1VtvOsE=T7^nPaR&mGPS8f&M1k%Q9-Ij95SCuoeN71Ysx`?(hcveo$cYBJ~} zOf%2YvhPUqTJdUd@_dyCB&)P16LZH57&i#0{)IM&hY?UMY*XWSdz>{tIEL2aUzomr z-fZ=B(GoZqAx$EsU&k*o#Y;+R1#mW|OxR7-ktFM*^ZkAcwUn7;Hv8*nrZ7Z163kPz z?8+~fnxuzdAt-pKdhykUvi~NrOfsa-SnFim3d|gDjYGiGAG{@Y8r4S!xo|b5>O6S! zFjQW^hg*Kbq%p#M5i?m9n49{E;8Tixr>Xa%f4sC7vs^aHuLDo{jjQwg^ol0uQ8Ep51ESeI1s|=;~tO>1ifeb}ZcfT3{1t5jG?);bEGRM9H5yx*KQ5 zPvkUJEGVcfV4s7$mWBj5t_gsmV{m^bQ1A8pg}DFBlu@g_NckenFm`o@w~9jI&f-$> z@m&Vq5Qk+(hOD>~YVzwe)dO5QWAeJ34Gb@tCo;i$56Zk;B{hx6V}e zSN)$qt2YMNHQd%EY+yzPX^1k)ixfT;)|RBa_~er-SA2Rr4x^K@xs?U1(-nXI{1`Al zD*O6t^Yf?2iKThL&xF(ncJ^LEC>TVZnb#D!0q)M0jXd=>Xtnpb2dRFxoXeS6I;+uu zkH2}cw{UhXgLLICA*^wvFv=RRI~#Be|JWX@%qCXhCB|kd{<%@pICj;D%O(}pXb{%2 z_g^*qbMPWu5`FelrfOpv@Zn(1T6i*KLG1pvqa}NxM zCTKBVamakd`_Gd9R*OLkuGbs_rzRl(smwGs;WOhfDQ>>;tAYx1_*Pp!wKtU zS@heh(yH&~F+k@R6@Xw%)t!e4g!Z1it1oYDv-u+aaKGF`vky+_s}Q z2=?CjJJCYh*h)S6=ub3)dd`wnvYDg)%=6xw@t=8~NO=g_=iPoVAo}#vjo7nBG`b@N|4%>T_X{&$pT#=*hG$@kxBjJKp=&?t_a zI+$fd_MiHBV{xmmQ;t&0;iDQn7h5EN>${! zUf!V%c(M7YcnYN(K}Km6;B5_dJ1MjHOnbJTIsnb7O4&l)p-S#XrD*eBczt86_+Y%tj`Li>%r*iIkCm7aNC?xHE~-a9l3OA2C+1X? zMx3PhuqB!p%*-0Z3H|(06ip=PHXmIacYmd!PSSVeD)uue>F@Y&gDa{t9|J_OzO+F5 z6KovO(jSl0;yn0CV>^}{0gh|Fr7O{tmBUflqc?Rk2d3Tx4pV-s6w>tXT!xK%Zh`*6 zSL1}uRo%&HpE1uOd}E`^Lv_=iJ1fsUIw~xa^PmmP{8|lRzj~?_TBEnVOVU_U+%I_r zY6`7FFmYha(N>v$@)Q?SSZlCr=XDgUL1a-;5Q;DPjRL>wv?kYC5BTO%$ zauBq7I^o*nn7xOKtD90|K$o2VGioQMNuvtg72P#KL`moaw5w(p^moY_#7lz%xp#W8 zyxL(2##)LQYN0;)NHJ{;L>@hg%`9*;Q_!aJG|7Q5yk!dzE*9ey$J#RwkrduT!j^|$ z+TaQhfr7|z*ijdCMF2^pOQ^FQ3?0j;aH^7#V}l2lMJWRe4oU{XIVx@TtC%9KL^bF^ zYVjhzG1g>zuClonOFR{BVM+q5FwI($f~k>m^U6vG&LMc#uC>0j6n|9jPNtwETxu1r zA;danhbi&K{ZiIahT*Ru|I$F#Qph7DFGqdD(D@AZxrt^9EI-_Mjb`AFxE(UEAShAv$xwxR<7Dn(NBVi1@fmLJ<~>CZ7&W zCK*@4Hhznh32zm5@7V|b3?;pIj!dTCeq3tyEp^-Urv+SU$+dEJlGb?Lj)+Hg2&m|l zDMmkI2SfDJV*!NaxF_nVk?|-i#*Bs9Xkmm|5l7)Z3$D6ch9T_&1}JO(m12jE`J?I$ z;;Nhp1B;R<$c0Qj{~7){88G4CVB<5j*i9J)`+xMoCSB#C+l|rBp+`f|pO3XB z)A~~uf+w=ZBvo#=X?3-=Gj>A~oUBBc;i#@rN@pt+ee9Las2azG{Cw_-Zh(7tb74IT*5=HM5^ zU=NVl*5)O#ocdh>(5%0%Hu^|Xpkt2L)?6^cmBQdx!gTT#%#HKZ2Gs}$C?MhEr4Z3S z`G0)9byS;AxBiX0ySux)7I&w(yL<8A6nBCYDQ=~>OL2FXQk+uUoxY)8InVR{&N_dv zvR0DePIAwhy=V5dKbIbSL26jX4^jpzzqIrhy+wBUUO}xZ1bb(rXh?2 zGK4V9%&_HQ(0w0E2+92V9=vE1j|pW}mF5|N=PC4-<=edB28AL`lpNg1twbNSYA;R( zM6mr_DdRB-T!bfia~rz;qa*;jL3q-gKUxO$KpWwI>7Ztu+@^e-K+#nMTqut1Lx6QPQaTSNBhHidma;H3d~p!O`LuuIe0Klge0DbL zi61^bH??)aYj+V!FQF1|UpO88EDl?6+@UMz$wyx6P+-ICBT0w|QzP{2tlc7x{P|ng z*LbeA#4n2k1+1$ifvEaL@Fk|(0M!lvm-Bv3Ck-j)h}CCxJ}# zlukKQfcoa=mB6;rqFZu*#AAX@H1!z-egg>q$9pT^i<`%J&oiYDUezMt*+HFwfF@l* z;S`+d4sAh4`KO(=$g>2peHE7tu-`-H{;oOMQ%U%)_)XBv$&4!(vX_qDZ3V*tEiOc-(Ca`;e?#bIVXO0x z%e9fZ>;Y2RbW!Kz$P~Q}7$56o^?E+RUC!xQ5(^n*xgA3;y3%wa zJ@&@!iw!YbMA~sSJ#F#Vp}P7sd?q(Wo6qH()l6hYIQJiRXGlkE-2rB>b>}k>y2VM& zp~s4mZBF9~aXznmJ{nv9k;lCSb<^lo#&@9Ul=V*@_m;-7zZu!gL}RjJ<@|xo9*TT{ zgV7c5$z1VTSSZlPg~D!XnT5q>pw1a-NE%m^opp+-xknZ$C*96=AjLL#hR*}Mz&Kmc zcnX-Kqx-YDv}BIA-mPb^TXfI)%!_zDa`l?oJryPj5?84bBF?vj|BBnc`M&Q(%-wXv ztIen_AktMJOwd$7X z$g^_%wVu1M8Ib@sbC7&D)Gg{0cn9Fl-|KO&mkG{k(#wnIG+2o&w^LxHia5^((I)3B zadX4V>&;1XJK7cG8)cRRbQWR=-teyK6I^6JT$Lq-HTa!ekc=WV3J|d6M_f}(Jg>%7 zuHwI=IbmWsgF74o1>qOHKay7EpwtCX?;f!psZT3BzB$XZvqsZ06h_H^A&nH{{}|z* zijgEi;7TEcQT{ghLg3)bQ#}+%DMTZ^R!3i{DcFZdwB{_e3_@0Zb=XN46leQPNNQPZ zhh^-*r%4CYu6xv>0Sup@kWlwY27W&3XzweIekA{eG9Pyic3yONN}Eu4G*ElKr`Z-Q zyH_%mgQ$`t-8Uin!Rd0{^F9#{0rpqNE@Wk@p1QY4<1>z7!z_#AS&T z_hSeipr9cI3L1ZE6lP}T9Bls&SP8||BmOVkpMs(l9zRg69g&ok8MB{Bnob%P#QGzD zgYE=q#Bk!_5gfB?CDFjt4-wgTfz2NauOcC7+@mpw+X2OtAaQ}nyU0|4)^ah(;jt5bT_2AY`9{ot~MkvYfZHl^lZ(5JmIdp918cS|eU{66`5rVgebc7W_BV z@2wV$4ypzJU29~*AqR^n`KK_2v^_11^Z(Q#_B54w)eKf&9a4HV{qFPP3># zq%9=D+jc;?1<$4kbg_Rm1m^7gJZwO~T1Fr8n**f!$vy_^8%$p!Fy+9VEUW9&mvLo{a`O<4Ejt;$J@J z@F~{8N47Pv8Ze}Pol0CqnQy5%;hU&mKuH$SSgJiwk3?RH(2iXL8 z3A{xcwCaTcOpzo!#(Knn9~qc@QB7Es3ezpfDxUxO{T=+-(szLULw5jM4CU{owW;lH zJ6a#5rPskrfEOHbO@DZD;ilPtWHE0O_249zw+OVcivZoKziuuFu?NAy1FTI!{d=aX zIY5&TT_7PuyD|?m!CVUM5WlF88IEGc%wBWEMB_!U17m4nh;UGBP-sa69fIr%g1AUO zBFFA;?#_421Bb%kNeJJjI^lk-pdx4rA^)=(HRrc5Ww-pZ8U1S(z0LJz-FR?pNWwQ~ zH%zr5PbkpGYWjBuneuRRa{uvG|JyK5JH^zK4Mc18aZ>krJzrb-9a5tXUbARFDfTkO8MBp9i00?X-!QcWOpb0%R zHgLKDkrQxQeAW-??45GUK%87>oP6eJd~THh$?_z&4+Cz?lbHR-N?|XH>6rA|?|80m zv99}NySA^JNy4urT-&Q6K>CT6uZw?Lv~h6%pn~Hm0aoC+V-L8^wL)a$hB`mc4uyw@ zfQ4QmMt-Xyc`P=H5&2?l2qXr%wrcK$obcZPoLy>;Sl5in)apggo9;kv1zqmGaW8Ej z9&VM(6)R{b*ZtWT0~Nw=+@hYLudKgwRGL{Ol$mYn*spk2x+kQW$=k&2k<>3zGV-=o z`kr(!yu3G1=LsCLm3g`WIzT{8^AlaK!Ws(I@xiq)sWQ;V_U zo}QO0*|Y78zYZsATb&TmCV9z8Ajan|qcI(J@4n=3ZWv5k2tG0HP9WN#%dV>6^y2a*$LhG_>LXZ9mUM_zwMI`alh9BHs&4=GF9?Q;OyNg5;aHUdP3=^g`adbCU@T*+JuQy4ZF~KGU=t8dv zS6@=NeGM+b5hzb7m@{Af##4iBr=G$_!FmXU*X{31E8dxk~UxRYXYYReAS zmN)~IXq|NS4$e>N5%HC{1-=`9HU1z^hx!{s)bo2|8A!uY=`r-rgDYhpzCFb4wS7Bu zXpi%C^<^i}`hK+H`S>3vZ*Mdt7S{3bw>3%k-(>~Fz%yh2uM@S4AP7nznKm2`kT4$w zwb|qpJ_!5|STUzW3kn)E_rh~xF z=3oV4DSiw~0vV=G(2z}lgkt90K=wIsOaPRHHyuc;XIA=*04ZSsDP(X&EOvczt@m`2 z8R7+Dx`q;TFLo=Eh{rN!8Ub=w`6D5#g6J3eBO!bDP8an8PgD?Y8*)Witf^2eBNMZK z3;7A3yg|6X2l-Y}=OlC)KftjR$UNOOBIeE?4z^w9t!<%d9A;<5Ebtc3f>gvD_CUL7pCVZ(524Xj@zH#f=6y6m{_) zs_%}CZ8l2<`R{NU{XX}~XDZRGB|WoquJFJWCw%UT@nFTS>Iz#jx`)b@4*DJbdT3m|h8!lcRIk%WwC4%S7f^#}hswMSp!E|%+QWG_ zl*8~ewPD+-G`&2+?L|&%AiK-7`F#y{XHErosM^oHqbqQWWEt!E;V5Nqa3-oQXi|Qs ztnj#*)wydUJmW`?5Bzhp2>|(+D1Qgj7N);c&x9P8AJ$vU5W|ndvjt)*CP-_K4E0?P z(Jz})UzAjtJPP+;Ze|MF0IH?SI_w9A<4OBVFsGcLN^qbR&X4IH$AoN(0C#4Ds@e#A$aoMO?;GeRg(-pRqL< zNzSNK8(l_`3U#p+Uv&bT7(zMjkQlfmhze3q3OP+beI2;fOFK*_X|uRB#gS zx7C($?GK?Q2oQ*ZQUCYm%gx-vOB*x=`QZP~xh%NZ*tj`>;NGbJB_<{NBPRVXx8!XJ ziFKq2e}kJKH>5sHpy(1JJ^%*N3#1s$*Bw`lMFFK>$`F*|n{vb!JdmO@*`t^1w2*hQ`aSe@P9@%(UT1_X1mTxA9=6WMg3 zCR%};!ISO3S<`DDfFq%z+GKe1iJ!yMe#~)kK<#^#Vw`o!92o{v(4<9q`3)el+lMdn zA(`CG7=hwWi4#9&gTxCB%HV`j>9a3ko*viCFATEH?E!Ia&4Z{M{zZW4h{3&M2G_MS zDaxtty_EEYqiss5*U*mgJgQSa&+S};Y5VKZ@PI^_?*{8M!GL7yA9UsSoq zv5BuoFc+)he~@v}be@h9a?CYSi2oM>tIK~0SeHZpc3=XIZKJ>g#v$UUE+N)3V!y!z z*IQ36E3GvQ#xH-f>bM&|{dM)e2)fBe1^7MJ7PH2lASBpP*2?6EjYZQ`F13@2gGnd_ zt#d7f5HA|`azcWi7y^sQ|KDx-ZTmLX@A1766%4H2^Pg$M$HUHN%6(#ps0qLvA}~Tr zjAmuC3n15a41nI-g5(yA2?+_2s$K9!|41c9MfHhlvv9t@tD)=UOOvmC!9b6F_m3^`x_fuEYatA z89D{7b0LlQ7_P=Aq_(^0xYB6)n?Io>s!m&6c8(**WS41?Q0^(qP=-DLl4oql;d^0R zM6>&dOC|>GoB12j4fHvm!Gn#DWYHi^g_Yi$H6U5fWA+To6i3TO=Ord4f3z#VI84E$ zwY-TU=qHK_AUuK?!feeCWf2oA_&n&SJm^zgo%hX~EKigv0ses!HFb36!LEMNz}hoW zg&z2AHm&eDr_;CIVX~eVfK34CB_5-H&`TAQE_X-xr6?n({$1yqXbPIJ4DQSkSl~;N z>jzivYpMASm!LQ&R$X2CYO9r*sT1$`r;#rGFMd6Z#eCoR&kBla(1ya|HTm~2=6-Ye z7a|xJ#O53XOr8dX)R00l==5;s^Lq($Zk=K^2-VG6;$ffv`~lkU(Bm(B!qj^0!4=?| zfLp8>TQhci!6o=gIE@>wH~q5Gd^9Dr19v;R1GxUi1}#RH?ol-#w4u=>v`>_^ZLKR` zg({mjebBaOI2qH>!+!~dE{51miu5aR7}s`d=YMIkl%S{Ir#@d#Kr7mR)Www))9D|| zt7nz%IHWB^@xQu~2mZC=sBNUUiHPf5?anp0RO`8;@)5u*30w^zF3}U}m{l_Qv`2+q!VkQKg zRdYXr;7)Rp#z<){taP^KCYYynZNk_DhZi)uIu?@b5=BnCU((KHMNV$+L#qBq{Mebv zoL{J?EdhqdBe@eJx!*@}$B4$dpX4ratuqVUb%<$3E?4`hz{kei6WVq5>Z>l?hty|t zgQy#5P2f*jB^${Z;gz6%M9w6C(*HD$?sA%4`zdw%*oS(nr;QAvcblKl0`r-XcCz$6 zirE9*mad9<46^6(HkEnhdnL?%ulR}zaNpzx+K&L52I~)X2ZX}#{&>_Q4}IsQP@fok zAqgvKZI43W;1mLGu+H3tJt@{LpG`%k?uktfKRWI`)}njPIJHSRPX9z2g-WUJuf>Q< z?izC2f&Q9s|OPa!l~iY`5sDbP0?Zt_*70Salziy5L_ zO{5V(7)FSu!Zm6$i1_VQ)~GvV$Z7J<%lz~v$MU6W?Gr^GWA0aDXG*eRa<$nhuz*F9PJfs2IL;4^+y!KfXAX>=f*nMjMw<%U~fhBcbQsoc!oo_^h< zWc~Z){H|$1mx5;@BF+k@PS*;5ffm0z7S4D8ttqjYR<7w|%f5S8+#!_T8Hb)>8FzX8 zW50{^VCOof=5tqO>NLyt)!>RK&4X8_ht$vq5Lob0#=6-*)hYTnG$TYvSc5#2DB`t^uf-zSh} z{J=bnj9gDS&ikzJvv<}9={CfQ+Qjux$fa~!hs#($fXoPDQJZbbILya$6>AXma6X|> z@S4k#=`PL$lVCC~h5PQ4;2wb7psJxD^Zv1+94VyMMg zBn*8tpE-R))?h^z`a%#Jj69SNH~4Lz9EMy7fWDs@1K@b2P|WtKD(f~t;!`ACWDI_h z&M2R92=duv;&Z#_3-ZiJ$1Go8SHnwD0(;)AxIa8~5us_jm)Rn1+6GyMFCOs0WdXu^ z)`@c!S1K{2Ue?_yt}NNd7m@qNf68fH49SACzg*xo_GE}2y)b_5d?ZzEJn}(U9Fg#8 z4z}%Y*DT3P(}vN*SJZ)}g!qEA|F~OheEA|IR?|%J(`Kx1JoX9VS_bu;ncI)6Jh@eenF#*0~Hghlb=iM09Zs8T6*)Q*>Dt?f!ch~6t7bJ!m8aV5k~ zAZD7;!|;ij-N6@Ttg4hod!u~q=KI8+6XYS=Xi`q?d|aYZVQZRDR$ODzo`Y`EbUD0w z;lV1SYp1;=k-0K$nX&R@<*|{xtKZ7sz0b%(eKc*qT-|&LK3;aN4shcqrOS zVvj8LD%^=r_}o?jh@Y!L!Sb=I_>StFFDje=wW^`*Jg>dwiCbjfNT&t9lXB3&lPO~Z zLt5RHR15UpQ=)9;FC1*$XFMgYh#b!6>?d%L<|4m#4=Qt}*aJxdB*<_)1z}nnR>)tv*Fs zr5W|>b^cqizoIY`=-Y7)D(Xn5l(J4j;HJmsTP^hmciEl=2U)K?3o)lOJgY;8||!PMv2FXw6P&jWr>4&M#yfRMclilti^#}6$fps=XZx$0mA=8JhOIfDqUV}(B<5U1T2422etKU!Qbmu;_ppyTm8 z=^)(bY2Y95ZHzivPhQGoWRV_! z5Rgb(OfBTrF^H={f|70s7pT{LU*O5T%{R?@(<^Eoix)G`FEB=A4cWckm`wG0^a;na z>P9d0Ll4(MB{v&S_+-wD>jC&D#9`++7T)G%!14BNH;*HQsAwuu*ON44qO$L$2S+m6 zjNFHi1^BjML(gP~8XF~n!oys-feAVupK=!zVX^WmgPHX8<_}ap9VHQx>W7mlqipXa z84M<+uPQ4wXB+Kem{LlpQ%I|KQ-G|NDXg9M6qG5NfLm+iM7fH^f<^1NNnU)@sYnGH zz(xY!8mTah{lwW+X&>{OUtog>1tp8Og5E7%N#D|oGQaPcqVUtI0L>9@iTI$ zxysYTK>Zw-X3w8E>z^_AQIqO1tjFv(03~#(j{42XfDIOEl^nhvI7=dDcFqhmbcDND z7-0=}9C`JN*hodnOZolaY72rK-`%y7?s(N-DZX8NpF$Qn7*Ydw`Q>q%yI&!t6Or5Neb)G6+=LRsXX0g&gS zu5cmT1d=Q%N-=e5!<=WMo_X0WHTWN#O?KCJ=rb;fsE_)yO*UfqD=<}PXTm-zxBT`E z4f#1evTP=irACQZWDCE$c-EbAx{ z8BGoLj`Rr~t~8#iQTbJ*Eh-9fL%CAB+NScIW1Kv(tzGCRfvhY6lTo~=(Kg<89w#%o zsin+a873t~V(tZ71`xy8OpbLL-@=uP*|npNEkm+b%#m{Q%mBp{xkyn?1)!D9tf$c- z9*LZY^+EcpFaeC<8F|O|xdGDlfzI#RyEX947i-HlTT>l8^Gk+;OL>gXT@K<%)7j;} zYK>!P32dfthD4Z|kWJS*KL>w1s%MU-C9$!`8uFrJLN#3r*e9<;{s?*o5@V=@67&qA z_&5U+`rgc!XIn9@pdo8XKwlHqML%rk^TI{%`}BmGxT`afxR~KZ{9NyRB|#!W&l;gH zM=182bptgL!(3U{K=zXNLXxZ>?gY)e3xb=rT^zc5X3?6^`;SC%gK)iwt2|`-(sDm= ziBNQG81`X8H}plAzei3Fsfi;~Z>*P+p|GE-f{E(~FL))i_TCOL0w5iE<1>v(Ee}5I zuT@HT5O}Pp_h3Rc#D$t4!K4R+hB-kY;aHwm?pTYMldZG7y(SfEuK(9-7;TQUqB=&B z?dF@K<)Tj zKhE8P=iUSImjHrB4-=Q@O|GvGUXqdz-ri|m5?JYZgjk}#hg5$VUEmW9c2UlJA1i;! zVT&gcIc_@tGVrd$;@z&){Hd*beC3G<1qt%=75d@*q!H> z^~k5a!!C)nIh1k%aC2rgp7y7o3vqGLbLu+}vqf51T2F8trEK>_(i~oSmS}4I9Cs1E z`2C8@p@D9u9cDrI&Z>Cd(t_@F>6!NTcHSd>NEzWfv{xo=&f7gDmz(I~5y!DkUJYxWe4+Qz?E?iu1NE2{ zh8J)@Ah%2ETLO<=OVqwjeM>xQ5>hG{hL##?s7?$(+dVY;v>nT3juI`%&MW0N>=2pnO(_~5G(xHByuBZr6XVGFjFA&>d6H7|0R6dKq#iVPMw2eSpHb4_KVA0o3fYm%cy}(Qh6{Dmcqf1GL zg(tM5b%au5Qadua?K!~7w%g7tAyl_aRogPZ4q-oFe#!-o#d|tW5rg%fFSw;p&oz32 ze~>8@K}y6>6#yq?G~-+`2q0$7f`BXF_j`WV#Lmde0D&2BqL1V|*UIfA-W?|{Q!u@t zD8Y?zVtn4DKg|yQkyIXQg~N|-F+<_&oom!_4B4EB0dfhxhc6cH!$)k&V*5G;0}rBE zKXR)ubE{ZBUsQV!Np)UCgwBIGY8-2;hHv=`bl1bJfdp6r7xP?5j{szjY5Hp!Cpntl3 zCxX}DXCzZNtuXbYC*t7Kpas&Z@Yh=9>T||{{552vAaUNs_8m_?7~xH9B)ypcJeUC9 zAFWI9P|X6v6N7`V&j1ZXJS;EER+#K2+|I-;ENwhlcMo5!-42XjoxsoE|RUbC+$*W$7SSEMcF@IZtjO zx$AjF7)9#3wka_qe0iusAbd)2(Zu7@^PzDLEH)j^$c%%?9tV)>s&0-oc$TO9VZn7!FwCm_fFQy0;42t$JdErNg?~gXUj@r7g?L$3))SBp}H zmlMmqms$;ED>M{0@05&+EA0QNuw3;{@$^W&(Z#G(4?9AF)?C<9Qk4NFz&c^|a=AiF z9v-wNV)M8w+yMAVQC2N}l=EEG&5ya+mR|Dqrbbfk5hx8}UFRo$HH)-uU5 z^1M1(t@eQ^0AAvC>mh*UyO_00m0D#@8pc`~yUp(*8y>MofW$C!7a3g^4Mwyn* z`_!fmwg6gSML4G4g7+2b?O%l{rMAK3}of!UwNI~X9FBE3`R5G2zLV0%Mq)9kF&%{UW11?eLDp+Oz z#OUu8_XFw)+^$ozmS(rBBBtRlea?nL2-z+BFW&sibT~ZW-S|vq#;h1k#4-EF-Oav3 z^GDFOUAXhFmCCH`M4&;Zj8U()BShTXP!%^xrx ziN43~c;~*%GOoNw>^}$>g1AoJU4<*Mv)wf=GV zig2lqacqR)nSBvgeJiA01&}CCkNopRfMz^kW;}ZlzOePjc_XnBxN$Y5g$+!2W9qc# z^+wbTSN8%!Av}GXmCO~2u~Sm9+M}!uM5kz^uh(0+}E6j%1#F4h` zrZk%087Jfz$;@|Ey{c#PYvHSiT=AapdUBor{sd!bZ{t!OUxFb$QP|Zs5Qm97IrGg= zkTem@#e*d?9IF> zX)OFKE+5{_d(J*>goDRJ6!z}x1ePj0&0Rt3> zqjik|NN$q@Mq99}H}S`#6Fk=`F6-B=A+CzX_l#s{@#`s(RF!4w6(I-r-@qeB#M6kL z-8!N7?gOVpfKCstNAwkVht}`XGKjQBrc&a~shTmZ+NoLxh*b~JFh0w-o4TaS4RU||DKXCU_tPW_)0cyf_oC?mbAcrnYH7K>IvjqZ7-cutP=YBX>Y9apV z4?os(Nmj+W$keet%gWjnE6qSc_*_6CC}-0~bPuo3)zMnDW6nz8CHRwm{q_P4KE}hA z<7FzBMK{Y8c3vCSIN}E;0sZF@kyX8z*)qyDGp=Li1}XWJ-nn%*uBLDLhX4zBxf&oi zWhQRaS3DY{g_WdpeSXa=tJ`>2KdC^B^y{l^_H=wL-kM(@`Z+Sr?qFI6K550_t*?llX}XfO!WcBX3N&(m5$u73Vno|XQ?OHNCKmX z;uwzU;p3+C_1Ux1npMoXpaHblV)C51kyD`AEw7Z_=#ML%l4a*Acg2A!x&$6K;#zu0 zy8k|Awm;0%eZ{u71+oJ79cBD$ynxc?0#>Xf?}lfo+<{yHI)>|YvsczWM*3b~vl-LS z(C=S$uhtiPgkhcL&t00JS;w^I;BEMjwd?L0K^1BA96}yHVWxQy=DUU$&p1mh6Y#XOnw_?MF)s!Om%3#3t00L z8NOkGL7u`1?m|-f@`9>Ff94+Z@DTZasCq26=G2p@MMv_m6kET0YGi)_+(u^ec0G%V z#iFAb)_tq7G@-pp1LQF>#+Pm>)Lk!AHv|diq!2bbzZYS32;e~Ol`+M>KX;Cw*&|St zHk8h|p`5BkU-t2x7-a(~naj(4tS&UZcx$NS;wizi-e(&1T9YYx#XF_5H>=(&a@JDF ze_4vCk@*7c?;dZeZ4@y{MJ@JwGxG5~`3uxOmpM+m348VleM=?g1M4E=k}6u3-8dVZ zbHvpTfz$wGe1H&}=vr#E$wEmsY{{=WH_!cd;cofd%ntc1W5eqB*N~pj5z{ODteDd) za=8MPj{sM%kWckV&&}E*UG@I2#9X`);Z8rJ@HJU@#SVuNC(B_V}c-KprpKR+r%SSJWqShCACfO<3oWo?QGWt=>jU zLe2RydV*iA>)5UjqAz7$GR2!z9dnVZ8!0nz?tO{=Y%6&4%YN5jY-LS`ojcb1Ihz`J$Hsx zAbRz8K3T+{`T^y(7J=ipnXk2{AF(R3*KC6XWArUFdp~h!l+w^B*N(F-c3Jc4$G*=D zfM9#fcAiHvZrx6FarCu@w8``fk7c?`KyEN_Qz!=Ld_Q(%pKlVErW^-^@;f&P@eZ+< zU3fjBDr)q7l#n10`HI7p>-fY0XD3L<;gvg59`RF_?ClVu!c{4A80FZP5lnjaIrM|J z9~cE}+?Qi81+smVzj~x%5&u5^C6JO!&Z*Rr7%Ei_-u>Cch;)_8l!-!St4212r-pyfV{`ok@Q0)JeYen{RE+A+hE}85af^_*EoW8OFHPe(qVGg8g01@3Wd9simw_ zTekny?-ToBhpKi*QN#g4=8`Azm3cK0T(@&w9X?0m5+`S*%GqvA(}Q8|lM#=0Dt>p& z=lCD1#pH=rE7z3BDAv>*8XHEV7W7k#a7({vCcy*e#)f}9b%=F&Y@y5o)`Pt5oARz!%R9(8GDHCfF@>^ z@?a`#&P5-i19|TzZE5Q9uMQtJ^xc=6yUQ>JVVVQPHC|j}%P8wj1(}#IxqHomDYWLSt5k#IG`)n8 zs~>)tbYwTN_mvo6a7U=qZ!&-X)xxt>o098b1 zT=AtZ+qRbfUFyTnXU&?2@b=xF4!XMYTazhE6a;q~%>BY%B2E2`@*TWXpVwET5{YHa z!MnS_0>$pJC^1e~jFpvZM+2*Y@@_JX!vO^kI?Vm1U!lxRMA}2_9`TZ*XMCr@xw$aC>H8fr?qcnTxew9zY^*;C_`0*4Vv{{B zAd;}0DVgye$vw*Pp)cNC4K@XF%@%0W!k6QflQ$+aeK|U@P zX=N9)J&O6C0))M`r)13T08?MDZK8JpxS`yvORgrTT;o8TIXT^5p@Erk9AfL3zUiJt_$;&Ct)^%F z;!7tmfLo-~3&pMswW~g{a=^6kM3Z&SB6-iplIVNwA0^W)yng032>`8GPE-l{JTUe` zR=*JTKU)&kmrSv^s$IYQ)U=;^urdJi;k$`Fh@r4dtw%w*>P!0Mva*bsN1CQgOOjz9 zzY822#CYc>$=^pIigV=8gt3I+nqX0p(`q}R-%L$8Hk8|t%}{FJ?EXbNxPO~V;p*yz zdD0AJug2*XJ{$HIGe9MYxEeLy@zsfOYOQ4Sa20ufj`DEuvX=HI&F}UyPF_EC$$B+17C6gkyzJt%0+9NNR^T|al`82(!LIGsC%~APVf%zzlfqsIf zd$hi=`LEVI7RFdwEPj4;882hl9A7FR8{OBmrf{7q;BZ4r290Nni3f81c|Z8}*$1Te z+&+gmFx?wP)6se#cgyuCac!u4^rMVC?!9FS-&x*s zgf94WR6kyj4Fn|K3zMHFDdK9VavYjWHzWvy^M=PyzMLX0j5t|Zofak@2wRw|DphhB zmn_+Zz<<$U_PQQCl~%pkV{khb$@(N>m9B4v&@2+c)X7QtWh&`dL}4`-*OkZ*LmB~N zF1B@&s@Gb5)19u#T7_sRx2RvYO;I=M#Eq*aXsY4kR4rh5kVrNuMl_=TH^l$wyZ+ba z4@+)-4s%Y^|7`yF-`~e;$7oa z=b`ksBD7i34d)Aw%x!++JM{t~*VQ3N7_!_({^N>%78 zF}r6thbqafl*uAvINq@hE0Q^~LiGQK26b2@zx7zGi#QSa8VQmXZS8<2{pTL_en~HI zl?Ig&6Lmh+dg^|;mn|YUb-bZrc3aZ}=*R(y57i4q&H%2gBQpZNB~#(*vcrXL_Y#zO zv(_mgd?5OE9jt^x2FV5iX>fh+66h=UsfMpxT|fhSVi|NG{tJH7Vo_k*tQZ%)#q z7q%GVn3r1f)^dB}?|~yM7s!HcEMT-GXoEEWi6DHt>4wn(>KY*N-|av8Q%gPz0Eel$ z#hU>24J~LQrl*&9T|v>3ihywHlw7f(8V4;N4#n77_U;Xzl#=vfZk5b~U`Z+wfOa9B ztNJhe^L7|94h2V#kn>BR zapeNx2QR{fEbXt0r`74Ib%3re`mfF*Y2C<$N6G5u}_~Sl^vlS$*UgBNQ057F|)JD5Z3RZBD z0Dob@7gxu9zB?;HLBfQdL6ff=D!h!e8n)mQm1!v@4c4Nf&%SV3c|AUm&!j!CILp{# zbA7$%wKAGPja(nAPT*b7hp}t>;u=1$&59F2e_HL=R^G#+(=sOG+-7rt&!Ps--pXDo zEgP!siulj0_p&q{qToDH49mD#IYH zC58jLXVqWj_dHhSU8OtN41RPA+cP}>2PNrEL+I*Pt!@lj5#0Xi<+9|r;^G1~1B!ou z_@h1jw+U>#2Z0}UG~z|rBUl0r7FR$SQwL35*ng+4DJQ!raBC9r@1`1dAc!VG zh#UXbHOMk7%PfyP#WZq0qBuo21L_|H=1GE+0Dg}nArT=Z-djj=5DqqhS8Rd1@dZ1` z9GpKFd`k6({DYM}Kw}*Yv+yQ+gUu4DR){Yq3h(4n*O9NLK;EL+;}37Lkxjt#4{V0X zm8XbPF)5A*m#CNqh3ThYsA|K1PDU^LiPLw`DS(-MclvbTM0{4!W!)5$rp9ZJJVIni&J}Y{U6eaX)5$&IOkRinG9CLv%O-r#X-bq>!R-G%#c2IldK(Te+FV z8)=IREb9>Gvydd#j_^zQ(r4P*77w^IpMQhI#hOL~aaaF_u^LXTaEf?=u(ySXH-ss! z^<;p2=E>plv2g`vmWV?$ah*LR^)CqZ5CsD4(0C>wrM+%`52AV%#1$W?_$F@VW+g{m z0#fpqh&47L$>M*6r^Zr~z`~~dPwwqo;VF0(H_jUrc2+^U(?9KDmgf9imRx)%KqUu4 zDXgKPFA`bPsX>xyJOE*xGBK3p3ek}72xqGpkxdQq*qCC86;&t5MiyTUzk+gwqOsy@ zh|VJMw0!xm{Q2@+THWeva8VVW*!|$;yewfj7BOQvb zXLlPNynNvVY0(-R*WT5e3bNEwf#pBpC52wURRdJLfj`dRkIzxP+Tr|g zP}}^PzQuMw`4_hO>rL7jaet+0ytX+X=(mw)NJmiu0XdICjYj|v7c{~~6FU>Wuf_Mg zq?aoXP~<;u*>IGP9LzevvPMwewM|Dvpd4IL2csD_s6-hrjVTixv5|L>ZswTGQM%Ka zBv{!`d7VXlH3A5dI4|C~{9H0Ub;`%qN^_pKQ&X^;s4rE9KE>a=%#+TPejwoT+>son zM-+KL&mae=r_Kh7<~dky%Mem9v&Pb{{{CV7JHi^c zI{_G96{V`o_o-|vbLDeSp7Tx3`-Y&9-Xa?1ZqWvW4OoDSPN~a0{8)8*f&Tdo&-t|9 z*4%qF7rf2v?!!3lKGbZNdCMQC9%1c{o1wtRNE_njce+N87o}R6)?i%=Oo+d7efKN| z;5SSm0UJWSZO#{$xH4wKT9a}^5xu_C28>7O5-uU4W{{}anMcblS98tgLPC86^5A7p zmec%K%7g&#UBmkQuJLahD=^E8O z1l0ARZ!9379=Dj~UWw3+9be{XW$y5wagK$w)tl$_f7<-se~L0ZLLKF&3_-($q`-myd_{YXfcU^^E9(}&XUf7%>* zh@z$~Nu#Z)K+EGW?cZXWy%R?2$OmCPkle-rbZh|6T77x2C;na*V|Lm!|BBRPZX9drdRzSG}!?=fTx7t_}A^X|=VkN=~=zzdW}l zPh!tkO4p#SFEDNmQy*=h`MGn`q9>HcM28Ew^*-%>DzF_*N|${ORi66R0iRQYpeL;c zz}8yiQrL3xHjF9s1*@IYq-) z%*t`Ba$o4^nL)kBqZ~*w|I>T?zoxxeZ)q=9AtYgb796N8w?DWzioRS5CISfwS)Z&9 z`3X~pYa-vl4{hYQ^#Uw*;@f6T@mGoyw2CM+{tS@$tk@N25Emj^B^WzuvbWHJS? z5*~OR2Q1*sDm)PYk${}x+pNSNK=;0$kxf{Ty4gp2mybq4d4f8T7^*>tC6x5E+^peA zi4tNA?wE*T#qa4Uvm{K&LzGKEi6~`jWv3uYyVZ4)}{-Y`RjeUb_ zadSBYx|=@#^o&}XTXC{m@$YE@CR9KUdD$?C0-S_bJ z_jkv={Kw$H0QNrnS$nRzKGQsT(Q$DOf3+S627+CFe>3Ljr}XLh3@1v6k<;os;KOq| z;)P$hh|fnZa-C$lG@N<0blf&KC!ou?@mtAlu)3xWi{nRmsZnQT%0OI7#)qVm;a)BJ z#3T(Ma>EjU%Mu(kZl=k65L0x*uAn+yXKgezx(GAirq~=t*LDyNOT^ zj`8aoQST|ukeRWk``DipSr}tT!7m*!hOP(%9lcc(@P-xpvgNgbk^u^EmNbR-u(sbH zcGy?$j5O6Pq~384mTi?JZIJbdRD2;zeitA49T3GozpscltLMsN}?_3q}B)GrG zIe_XN=_Zc4$gKjI>o(*k2d_{wm{Zv0?0mIu4(eq4i2>8E7u;f!FPEMYn#YK^HfNYc z_EA{R9c@CWyXw8rz_q|xwi2gH$$J%`$K-H}0wc+xkYmKlUE<$RYT8|&i5yP>1c!P zLdJ0M$|IC@q)Ia}L*7sNUHx?D1G#oK>j|;qVnwIMaKy?O0%&C*9IdD*-oKPr$dS zI9=+!pizdNQ9U?XX5D!4RF8oG?G?zMSiKM5ISerP)mdkRDKnB#VjnGCl33OQ`k*Q- z8~vRi3VVc(Pa_YkCH-Bt#SdPgpgHD|XPqvtQOIP|=M&U8B<8uH3D5;DFe;8QrQ)UW zDiAQ*Z+yie*FZ^>=ABuVeRES%Gx#-|Fx){qSJkAv8%x!{m4Jv;P##t?89f; zoyj)2Hn?eVo$d;snTZlQKLcvESn;k^p(6hB?e+~KdB>SY$;}N>`IK5{O|)z4>EUY- zzkhdNf}Vfd5{dp!{d#bW-H zl*#Los=$%?M%>_j*>u&&-UhspbEC!`_4!j^I=hGH^wwvVx;a~bm2F6DW<#NZGR+UV zFV9}Qbm?$U0SpuW`^OFpB&+_dzY*YV%&h37eq-!_t?Ft8m2cR?`t+X>>F2}y1uDGl zIOK{+{m-M=N=V3DKwwc*Qi%kjZ=|We)>3r7gEY{SyNU=QH;VeC}rqyAMbFj-khobSuxer3r|ue5aF8xLEE@LP+w-K#SrTtc&$Q`?;=V z6yBlg8&+4$m1sg%%UC%1DUrO$6uyD8*al16KCJo8w2uAa`lJrmMMl=QuGP;4ny7RW z2~2$k9)i1K%9Czx-up_uy%x=)M`%i&*2mVpcD!>tGgPPMNvqPX{8-{@Y=p~VC?PzB z#O5vQIi3l3Uv%Ao|E&D8&9H#pojDD%^1FYN!L6*V1q8Ukr>Zdjh35QWGgOC0BL%am zBVaZ{&%kg%6Fy%ye|u!{y?~s7!H}Kv2b9Q~%NqO^9-Zbds7>;z9Syj87Y!avCW%7a zcyEMQ`X}row8?Xw3i6FLe{VT!9wCU#iS-)(AKC}>s~4nNf6_i&zblL=DX_UIs3@_H zFhvS**NiK{AaS8;{#*F{zf)Nh|4wD0PDfjxhno2eOVmoq&l?g7rb$MS125Afk%D`x zV5MXtvC$#%jZ=hK^m@kUwww?|ETsUJ$>f`G06le18Zp zq;am7-cd~K-;@>Dq68uZ;?!6nMf0@Ms2YfH7Mw2wP1;Blj@|S`teemFJ@m0A_sXu-5gVXrn(GfzzLW0QqXd1yueUB>Gsl*m}^g36!axe z4t6+my%M~=(W{Go>$5#;cQU@&J(4p#2V7?gZ33|QjK5T~$f-VU%YI`v;MC$yY0DZa za{^00bKSn}!wWi84MY?0y9$-yPIdNSl%f7b2IIH?gmOU5iWP^cs!g#fO+<6RRD8{T zOYk86XtnUwOyAl1m5nxXR!nB+Zg+E@`?c(K9z&9hqyFqTd)-sH^{sIzIfr=#3_0vL z;TdXzNua@F-q~?3&>9{9yxN|a+*7>?NLDLVIpeLjp%0>PZ6AKP^+mZCg`K26Xr%0b z+1C#qDWT@t9R9{DIp&UjLitIJ&#kYNFT-pk8ZLhUO}{+GHb1R5dYiy8G^rmWlrs5% z7mZzcgE*a=Bf40S>Gm>p4uKA9JwL^~W7LW++QSS}mLFkf2Xw%kVj z@yM>(^>6=*dWgOBF}y-_8+~rM zC9_N?PtaM*sTb7YmO(VK!8^lYqLU7?#%>aiUErme-YBnvL&NSde(803Yy1{p@YihW ze-aC}0mybih1Ow!f=EoW5S#Iz+fR_22gJ*L_`%@~t~Tz#@g;miAFf!iNd2c^uJ`(L zjwIv_?yr9JPB)~~h9EIH9gi*?stOC&r3))fT{A`oPw?tt$JP^f5w1i}d}GLnsI%qF z)54)Wg_W5g1tqk8eOc=pz4`_~M`%fIR@Ux!XvVj2 z^S-ml_6l3YoKs$(&dZR|_trH?yfsAS?mQbo>c+*_LiF(1#}Mm3jak=@Q%e^X1lqxN zq#Wrdv83yd(YHA8ah@ocx0dZar7jkGws0dZNK!Li==ciga%jc^@L^tSZ!XR|&g|#z zE1V8#ts-~!qy{f1+#T>mwOIWq2}F%p{S?^!jB9oZnszSwK7uzt3gAYYpw}Sm9J=J7 zOu)K^tJzf@4yT)!RUX;g4}ozA0k?&j8K(9C8x0TrSqFy5P1jed*!SOy#!_$7$E5QS zjdOlfEs7u2U4NQCmB@WZHE>MkBh$JtB9pm|av=L4a}f}4_vFnkY51Y3fz>rVPL!V^D;?6)EsA>RneF8!>^3DNUF`@hRCd&hDZnS(z$M0Pr6b+pl+;{G&V*#0_q|p3d@Msa`{Z7T3yGngMFw63)VdygAuQ zw7XX<3l7P$=eUWu?k@Ikl>iK+hD-8qELD{T1;5TS2C-${FVPl7DH)wIJ0oAVTG5fK z)s@>(2nFa}Uwg1TUXl>ai|HSoDbRdhPd3=NwnX~AnXEJN`Ta+drwnbkg+3x@JZGt= zPuiEU(=P^=9dSpqMOlEKIwcqSR&3ubQVYJ-e3wcYV#ZP&*3TSf&AdMel)AnJ#aH|P zs8q=G`0CsvV3v$-kInZhi_=4W$%sGwk<9!2O3JInw8|FOYl_u#i5m_KsBWekNdeQOYKl6TU*)F$=Txh+TK zSL#yl0Xbh!05^X#p?FIX4B)yNa)R;iJ?Xi|;6O&Tf2N&_{Vfex3-JkAnOiQVjHq^V zl6DG9t`o?KrujI0WEdePrBuA{^m$E#1dYRvsbO5C)c@X);CyQ$`~>=Zjf60_6JR*m z;qhsFhi>n3YO&KrZ!A9fbbRI9=u~91#DP0eV`p)tG4mjYlgjlD{y@qRtFY@dqFM3bd zP#(WLF@f}R;mthZf?xN8&|s%!+*ru=`^hgx!h&XT*ST zS+V2tNQzA(E5BEsZRUwFZ_*~u=&Bhyc|wdb^BJ)qGIaEAkb5MbFkW65o;vo?$K=e{ z?&$T=^6}{McjeI+N6nK18(CxNV**ti=EEyr#YWE-7r^N?rei#2_37Bh{=l%=f`!-F zFz{iU-XbTuwL#AmKHH&Aeh{8pIT|j>j%sx|-+BJ4q{no<+PtI!zrbLqDl5Tmq4_mA zv_{tCyk(G3a6t0r)&U&l*>P9PPUk8pRKht`lek{Z%*n!Mnx(1Uzt)aO9hf0z8Ziyity;9U@; zo{;#b{IRyO;^F!ScldV~`~MS{lJ&p16qNtLrHsP<|Kd^zxc-AnsgcMah@cRt2wJG8 zkm2_xGJlD>+W7}Eg=pzdWJ7Y5K9hZzfLdjdcrJmTUSLTrWf-41AUdmHv_lUt*XA`$)j{ z^&o|)2}&M>S@;uPau_7OA5xY>(3^bey7Tn3uFj(-F>>ZYKcGxsoc;zC6i(Dh2-llM z3wm-GAU(PUo_-2R*&?P5AATApPH%OnU{OsW(>QLfxlj|Cb>}$D~BQi z`EX!Blv0)e;4DSZwf%2x`+R9V-!f3#fgCGAf7Pt!oDd?9wK-@}Qw5T+MVRwNc5(8< zWM*Uj^v9pQj_SYIf4z~!GS@}%-?1tfrcd_zPK#r0JymJio15R!8-1|0SSH^2w6f^! z#pBq#C?$Ea(%Eyjk-hz(Tno%Qb-X!jGX8)$=iP0R)$I7uHCq0_aTTrV(YDUytXg;8 zM?_b0{p@h$pqs3EYtB=+<^_{(_ST~VY}FKYzE4mFatQ`E^92i)MR)3u8r%Af&uDQrm~PPLv3J6EYbgF3@npG@F90gE&QOTud=2F76!&5ef<9Mu;!sB&*B4!gM~&pIqCv<)-cB*@M^GIY4ag@J9~Z-V zr}5J`qSEGaCL+$ilEVWFZ1~OgFz1o#te^AIGT4Hn4hVXaCi#mq#xUUJt3aze`XLHL#(l`=IV;&qyP&a# z41A0{vL*Y*vdYo*_>;T2;40XMB4Fgm;(*u!OejndA&-4lb#eS;KA#b*ei;z9!m($Q zK_`%{3)7#D)x*ma)sBPusu)GB%KCD7l0lC4iag>h@5gber|qivh%!sj97h)|M!yIF zwpQg&hq75-F5IQ9{c2zDvaE82EOzEvzQwl%jmEPc-eYa<`gHyAVr1#e4nQhvsDcyr zAiZq-p0TL0)850F(>H&7<-JO=7BcUmZQ1SYQEK;zWbaWm!TBt^be%Rs%ye46*r-BH zl}kU_Ww_<~t&Ep(>q!pHRM!1`PwyRgFKEV@f@@5*;B%%&6fQv3D!HlN`O!j1OCudd zA66Fc@CJZ=V;<$%&$vaxet=M3rn#6=Q$z890(Zdtwr8z?!1~08?&6oGjr(#+O%VMl zN~8H224t>iRhG-+Xg%Blr#3QoJ%{Xiqr3+U&2eKA1;4;RA~uRh$iaJMB}J#^*BpLl zQdv4`7lXR(_uf9E|F^MYpua=E9BMM_+MR9>sgJ|TkpRNc9-m9K4G?;>6>W|mOR{yA zi@<(uyAnl#Am&E@p5bBA2DYVxqW^Q8P@cQhv2B6hxfI=m2*1yZtB#|X*{iRHOSh%Sdsh-keZk({K4iV{3P*8@@DZ8EV*8a{yMKvjkUVELdxn0|5rhF-fW&hvx`#53I+DBWq{NC#9n8=CaL| zt8K88GWy1VT$>Y>O!@g8yco5sJ#$hlaw3^}Hz~&+;_fj~a#rPz;PR}L*Zm&l>N(^tp0etrETr2UO*(1-J=@%HFohiH!cqb zIwSQ{%U5DO(QmRW%mqVqS@JEFZqV;0-3lFF6BLH$x}3c}Fj98Guw_~b1}b?tJjy& zZsYFKZP8m5Zl!kCpK_Yf6QF_z{m~@>C~1mf9oTQ!!6hm%A7c9kBZbm^cfU@Tb(6wr zm_o9AVYD)zqkJVNtYNg?3W)tZ`9O5H=$Sko1~^FY&LVCbWcyPp)4y){QoRFz^kG zcKevMzVoKn)7)5CPdZ|K5PN^iUfbr;)dxQLg_7IJqd>1h5={_7fF6)FxFNhPY~$vJ zE}TtpNb^Z8aG1WC%r}3cOUl8baOT+Ii=V}D-s=jx3wuYPEesNz>gelE0znJLR1*9I zdN&tmPn9D58e@ABZbSJ=&)B<^QT;_ovE|qfF8km6W9L2D>;|fAXB^r4aYFfIh}AY- z9-nhO{$Z0dQ3a)HuvUe43L*Ftjd$a8`)P+2j+`HQsK$&HHl5kUg>P*SrYF4&K4GgS z38s;k9olq3I@w*%oa_6s&oj^@Fb^!Y-NL;=y}W&x^V&RDHjp?o*sNzdjCZDJ7Y|7j z?}Eri6g`jVKl%Q$#HDn~F;hGEE0U5nQG0!bAIl6T+oe>6QFR2d6uBX%$o=h!V*pR? zCvMDFw?J|ju2%)`2~Il7*Y=seZgPi)_eL2F|K4S(m68m@07@vZt+7mTWg(t8nTS_H zMKl_?=^VTD$?egyA()0*$~xMvI9~huGwi3jCR@gM+6gtQtC;ajx_i-^^d!4=;HyZv z5OW4~F~fHUGum{1`qq;_Tu&)A4M&xOCcnfe7=MhY^|!(ig>AJ@3qMuntDrRF&vntn zWFNLv%;2P=1NN+g6f;g!4vMMlT2T=Drq`5)iavBKkuch=rV)jeF@I~<^K0Y|wQ@pY z}_x7I5m+fH*J(kGv5tV6_^`Tjrd-DkJ$j}K&w zjgSZb-*k0zP9bhiE+NqKtUb8U9)%-#+?Kj$rg&SJ+C_!65a_ZwR>O@rj{giVNr65E0^{Mv>4TJ{7w5 zCJWTpQdRm5>?YK>5YbpqY}>_b-($lcFbv zYZ|oJ6!7p3KTVi>d4qJk_=kqyv>rWjZA>Vkyt6mp=$k||Jn2KEYG%MI#i#^c`@NP7 z(>RpIiY?HK!agMOe#BH6r$xZKU(FP9e{{dOe(VuHh7V=g)A5y>_-g+qm0Ce`6{+-t zUJ>!fD#i2LQdqp1&D4)o!-kKAO5Z9p_fhDT3mYE}PkDDnu-L5mTRYtBLenGUc%@6! znMGE&5>AL&nP?RY8T(|I%)dkclX5)lissQGi3!)#x4FRRmuh)T`+-e+JV75fw!*Y% zkDu=vRA@drYsYL^E8&Of5E6=dP#jzRcnVvxc+qUl&tx@bI2ZKWj!b<~*kHyuRQoDc z=c2W%^zK!epIClU=`oI*O;D)%JjZV|mg~1GHtT4$D4rGWoSo9GA3%K$15C*d-iSl5;bVuI*{^e zTUR~=Uyug8ebNF9&Rjgqy+n218wn$Mkl-i1zEa|BNV|47C!WVItgfX+vkXnQ%F8z2 zX&K;G$M*a4_G5~>LSz)y~95odMm1!#x=%G;C*1efS9@)D30`xc^`A7;T=FSg! zUng1{^WqqPCc@`s4LxroyJNAM*%L9@7yOVGCX z@5$7@6Zm^JiuPutQtMWg?RG+d%rJiHcz85m%2i})ts~u+So~^YgkWj0ao-QkHN~h2 z2|So%1B5Tif3r7Ya@MuTSJS}xn>l!a}K=}E6T zpO4u7XVfLeD499S&n}d(g=_&HQXY{+TMLWHgHM_}yZTZVvjR8TfxrPzfqdoBqYR;a)cl@GJDyGH!-axX;GSl&k!E`-iadmWRNJVw6aDbJ?B7*ZjjT&BnH6qSGWj|Ax!L;}>AJ1oraq!Z4S*R$VSCK_S_<)u$EeXcwg|{y zY(&8y+|{=lK?!hR4~L{C>ATy`fu?&^OLW%E~UsRiwnZEkgXx~b=KonIP>}8G2k@LE}%7qr)ik;Pm3QHxb z7d*Ab1}Twx^IbzD_J`kl6EFGFr>T-Wr`cr3VeGVcd04BNRx`QZ+ zZnFe?X8Ua2#Frq$rM+L8K$E6Hy`7!i?xAS-8h%__&axx?2#(UF4&zS0Bfn=i9?FZS zFrynbAt%*0Z;=VUB=QtjkjdB>OgBg`O{AGN9uZ+vZ;4#T z12UJ6cpO5&f`an-=jjF#;)T==t3?QZG2;3DV8s8GTv1XkA0sgRpX3T`To-Om7pM_X z2#C-u3bpfId-s2$gUktNh~q!ANstgwzPtR|$=GQ$4q&65uP zp{aVO`Pc{jj$vSW)EeYD^nMXp(`QvH z^sP@BlYocsZPw@uU3laMZ&%N|WG&D z&bk7gWTZeleK$zy=`d(0Lu7TLG3hEh-0iBedhsjk-0CS?oTkoE*I2hb3g6{*iR%2x zkEl;&9m;+g9+o^ESLI$afyO^_aofBGH9Xn|g^eFKS%7U>6mHR{w)=sWy}|b^n?Kw+ zY&g)G+sn!&2CYKGp8AjTQ-!Z+GoxHM42m~A7FxWzmpD^}NZ22V$r!}=cnXvie+SUm7TA0*1?FY5 z{TtnStLlqek{qfAja)Nb4rVjQmr1z2jq0~OxS4?36vK?7{<`bj*wy{^5$~L%VIw{P zO_};u_R&^{H6E49HMA+*9EJnT`=#5-+v|;EE1*II2V;Z8=<PTa$BXl2f>Lqm!y?_M=z^}ZflLzmG#(}fXOw1=C;u^PnD&>()eepNcuy1+4_ zddCRt?uhx@k3 zG{F9;gI~jaUwjMCYA819$GruY$7I08R+a8Nh^z8xDg=U&c$Z7F~uYcs~udhYmSk|W{FQ)Q& zIv>YRvY1yL?kJ`e*a2SVmlvCrLta{`$M=5s59l}3pYqWt+>WZO?$^Ja4eYzy%I^bf zVV~S(D4dok5`#p$*$ti7MuRVyIu3*1@KH*kv5pcQ z{L%Lamc=d~UkQ`rWL#TRa@XiA^$aE@r_}j_9sh?P{Jq1<+d||E2dkB|_K6%bjLAlWy~b*-(7@_tb#x5Omy?CZh$5x{M>%Dxpjjs;sYET^639Hoy~t_xIoVpISnUg~ zv(u3_yrA@P`PL|0chjCer}7ieczNMh7u^umQh_~Od6ehcC$_cx1=jCdTW3>eH~K)z zkR^&JQh|BnKuNoKnrw_~ViUp_UsqXEjw8(@3eqG0-qphW8ql!#-21mb32ncNbAJib ziqj$~af0tmFyMjY%iqR#)Hemm5*^rXD9YG2z^{;YEg=1@iInEimo0HPB#El}aol_D zaZ$YxN24?%am$mY8LSBv#U&i<@gM>Oi06=gCE&U)Td4}t)KqFXEa~#y_479l^P`d2 zd+URAkCfH|O-v)^_2QGpECVr=2ecQg8#^X5y?H)C0{c8UeYxf90r1BqTN@Gq=?t0Z z{%U2Om2-wzVm>T;pVSYqnLZ=bQ@nhU_*ho>+d35m8Vg~JY%Mr8D>@2uzd1I6yXo*k za(u#McsOt_R*xGqt17;{T;$cq9+kUun9L6S33F`kY zx1bO&y?`~OIrY5W5P%k21VbDAYjw{22E{MMk|%lNQu*N~%(W`~&0zEjXhL8yqX8cd zBLp@+U3s}xpl*E1{^Fw%7x8qDxnZM)0B5P-^y}pjeAt?D&NsOHJbLXB1>&2i&n(+ zx{yL|L;uFklgbSG40g#3)71yUur=M1IQ$yHpKk}%F-mf{aS-^v@dO_iBvb9;-nK&9 zdB#V;d;?RC!RSCwG1Uq_RGwY4+7Gx=E@$4{xA^|p4VL?z6;h&Z^7K^{VPq324BzYs zZqM}Lu_GZn(e4`U@NZ}@oW-hRFXpoC~uBPt>a z2Z?S(LR#TxYN-WQC`QpMm;gxl;u_j>{Gz#H>BZII+iFbE zi*YmH_$FR-2gJ!D36+vE{C2h%$}YiyIP7g28r8rH+P$$u@oSl1duFX|@fGp2)&pZ% zvvGGg{#g>%=Xgrz5uY@_03cVu@R-*GfTwxx1<-W8Uwv(U^SWNE1S9E3RdX(nlqEs!1XOA zGx0@}6g&$QUT=JLal`~?L`w%~J5|bm=Op#JQF@0_G2eZc81#`glL+xBmZH;^co_w5 zV?-wdI1!j;p=*64qLLw#EgIZYlZw%+qpNRAMZNn6$lpu)d6?q|pW_mIrU!4);^#X^ zArRvKrDNyqueP`U#D~0wHy^q{Bgr5i{2@L0d&FmGT=fHqEWN~1uyz7^Lob{)lDxE? zzQSveftYgqi}yVeC8$Z05?s9D<%HZolmO`<*XLN4_t$yQ@JV5~_bL5Y|Iw$O9V*@P z=uSJ3MHYk%Q$G9I%pu9_R=ifAL-3fxlo@INve&~GC+$SzUL{B}p0ZubsFzhk*^Z@| zwoVs?^1wX3F^vLAQvLW;6oZ-{mSv6~);a4(f;l)0@&$?&Kp(SJ<&<&w$}x#gVTxae zhVdB1bg6OoE+9uhZMpUH4al{?h0kEkUfq5|SsL?`Y_U2#l<&N%DAkRXhoP-|^BsAAEF`qlK0*sv?A>bh1oOk^)@wp{cbW6= zzwgd8p8$4er*|_|xfGS-B-5_fw_T0JPa{fxnQE8KWXt!X&dE1lvd^uE6T%J&Pj`k2n}@`DRf_K3f; zYdmxKn8QLx%k}AZvb`1;{M|BgPjQkeyC~HSRLNal~fol zy~xl2T^|D!$A)30*YC@;h=0G;!8jY7)zRT7&;LT%OssD?ghsCTNrs+=F-5SUP>-*F z)}|LZi`9LkeMVolt{E%tBYQV@QT_RGAYz6W`j}`5$x4$O9=DOBG^gs(<72V>60LKR zz#wp!J8T%}t2^Ynq=Pk>xuNo#-Z!~b;m;y;MrnK7sx*Q3-X@${C6`Q zq6P8u2v{9z87n7WD-q_uspGMk4?U|H9zLRv zH~_S3vE;&_MMe-ybortZbA*jGznmV6~wGNiSTjxmO=A4Ntm{pGmnu?h|`!RGYI019Kdy7|XG`+N2$q#Z2Rr z>bY10+qi^Ph{(RlimO_^e~y1wtwC)OO4!jVx9IN{87 zx=N?8uF>6P9jgwqVa|NrASBf;q-B_lk7hw|Wd{FBb0jS|=6)?C=KkZb<-o>pijOInRI_a%h4j5S9GGeynF4%U3yn+z zC0Nx(-lCMyM{>EY30v1gYRk^ZRSi`GD*)RAZ5^g)o%a#UK?O_mB7SQlDpyNi4{SgM zYXv-uwcoX_8ag5GPf4^tCodq+EDI|>^F{4HGdg?oDhysvfFxb|^l%poBH6z5(SHt6 zuck)${4TYcqVBMvMR_}2A=VD_nI_x6@*EOt2#8YqjfokpCh`obSG1+fx z`s8ijWt;6luSP9)4mR-=t*O^QYhkgjqb@UxjGm4N6=3*nbGyi9+nq-$h*`j01pfYX zSHb#C$ml^M?I8bT{ySMjA?Ddl|7aF&+2vAJc2P!AgH(ZiGy>nxQk3+m8Shy)%m>v; zR$NeDMT;K0&{2|5p5=r?k;mc0VzzbPF#t(gWQa`)ju^S^VwQFYkk_)TYu3=ENt3 zaJ1yZ69zPxPWI>K57kpbexh$WTvYY&eY!w=AXwawPsphVLWQC@Qf*b6%#GR+e`+mj z>zy6Ucr5NntwuM71exf?0>zIgymByF#I(5`RUPiL65;CmTA$@mL7k+ko9R(}rEftRI<1{T$~qZMbE+{_tPwMmtp;x+bnhjn5N9g7^l z%}5iEVqMYeRboaAVsOc8q@pS^#;IP9#)8*nA)ozxXE3AD$~edw15jhgeg7?W0GCi^ zOK<0d@kH{hRvbJD!~b$m)nxBJvofFBuET;WGix6jmD zLWX=L$+KEGe%hXTN{(!_3~wZlrGdrxC(s97%Z^Xj`kF7fi*AUjWoC#^abZu5wn1on zLQ$?&P|K{)jd7x}JphknbyrLy5%-dIf>|rpxc@Qc2D!+OHa}65jZ>iIXy_^zMcA9{ z6@f&^K0Bgu%L{CySMx$|hVm0O=_Nxpu8MaIZ-7#8EbbG=uE;vTOUjAv$E zFA^0V2K~oO`fLIzW?OlBfV>C)9!@a_xcRI&1$Zr=r&DmbaC009$_wCAsn78(QDig5 zof;n*f91>KVpKR5wG^dhqz_JaSz4!A;$JlgJi+b{0$m*vQA=(9XOvOi7$$x@L!-Uy z!Y#O1a1;R>bT{p-@!$lN0pHd(r3KE9b_93n@)6Q_zY3X3mnB&)F8V7j`k8@Jj;eAM z-Exs7@ru#Wp5pDWdf5XW_W3f5EU!Axgh_b>S7!7ytHm|;p7NZSx@<0)rnZQiWkDXC?KCTaqVI(+19t3QTsbc~+#a~== z{4RUHJ!GAE?w$V#Jh?)auj5<}zNe1?LpS6_$!KxXOu;RVF?E{Anc6}w4?0U-83US9 z??`Ipi6)dMBG-TX_-87G8Zwn~&c|(T(r@>Y_4YCLc`5}5fQ+RSY1wi9F_uE!i*zA1 z!*@5coMF<@No}bMnM!e%^GgYzm=Jsn;re{@Tj=5~3&J2V&O0m(BRQ2CFzpK=9;YgN zaK3T3X?;i2x(IEHaQtm4NwuJ(7Q0QNY16kDYvha_3XU?=^mNwY7;5kSM3TaH8CjlM zilIMUwny3KgOb+o6>|PF%l3RCu2Ot`)A3&y0Ji`iH>be=aB}`@03ZS{%P6nd$7fZa2Oa@}i{WB|39#cJQRk zzNC!1u2zDgT-^MLiY&X+C$?%ZGmbVTbyo;J?LX>ee>6t);BVt2SC?b14>rH1-A{qb zsQW$+IN85`o&ND<)E)<{k!*#YGH~O4>u*yp{P4old&Yqd6mfhEy^YAq{+rL}OnMok z2(xrAMAxw%r?0fe=Ryy4@TXACYTt5b2U1!Qo_LnoG@DQ_=a4LjHeAz_Eyk|6yn2s*xppzWthQNbn*J~A$IY|ZwK@zUVUJQgT29fdDE4EMkY?K49Y%w@ z{$GC4O6~ImJdr?3p1MqC7vk;$o2;PEqU;8@$vHU@I$t@GsMyr#3uPs8#V$O zPfvtb1Mv-?IC6o6MtE=-C0t?(6><-q*DvWutedO|Zha8Qni+?Nl8TEn1ZJ-8ccX{d zifEQQ88|{w9#v%bCg-^Q*#Gz_yW+>bH&BN0h2J}^v4}XZrD!I-N-Mo+gFoesQ=N-d zU4pKg!`wxm(2K*NWUX76xbsRows}5frTX8geq~*)WK$h|Z>B7odmP!EUtCwIII@(g zYbm`(M2J(nk+>IKI7?=WrxgL zkR2TlUTF0qDTW#M?UeU6oa!>X99|n8Wet$Sm+`3?Lhb$K$|>~a@MXvV4rdTRp-mq! z_36o!@zO^rNj?y^%h~K!_51K3S<(bqf&b0QW>MmFvio*N2L}ap{Fx;EHpa1@TV=4P z6Wv~lZ|HqN)vJr1(;iWq-;b?QWB<8IK5J+_jN{u(kc0X3?*=IkmmrS-FYiB5D8owN zxIJjRXOBT0_n(8YG;yw@V}lCH3NfyiSEsHXt}z@;-<5}zI7Sp$6=swal&uJJ{xEZ5 znz%^~KetYUPaT8p?SoOlE=MQ~7O2$bC3rm^()Q`2FZe_W?C`|BC>!(8b1x-`Q|SJl@L08C5TC|o zr$kp&LHee^%08%!u>aaBct;m{muXa9d2m>1?A@-#Taa}zJY$s7_p@joO>Pa%aXcOg zyfSDzv9z_{!yl*Xsc9MV%Mc1_U4-(JvNS(~(=t=iGjw4zSvrHirG8rt1}o~q(BO0; z7riiEU$PiD5Ck5p?@o^?yuhNe=wxs_64Y4WP;*p4AQ*ce=5uf9XfRDp2sRUA*W0L& zm8ARDX{=;be*^tPhS7xT<*!mbIiEd{{~xyAGAhnCYZ}EHcXzko?(XiA;2vCpOXCtC zSfFut*8ssSKyV1|?iL6xr<0k?Jn#92#V;1!y?WjIl3i81N@3;LRKiTi*D&%E~dR@!o~e3jQ{LK-pJKj2*NgjY>xNr<^WQENj8{L9)N#IwyxYj}=JV z0QKLaWBoL!s zp7$MgHXdvI4jC10y1U!l`Fl++7dZEq=|Ws40`ffzIg30qOI|=^DD-ZoXW?qK(KAFE?=FEOI7L|~2BU{-7 z#jRAl_6~CW({FQwH+P}=yW#|FGppUNMH*mA()?ATIpfC+y1#c{K-kh^{TL-dMndgp z^CDguxY!6J?L!^J4@Z<0Rt!hs8*BG3-e~|wPpjne6N^3n7ED7^!T7bWAC z^!5fvK;o{W+;j*F-5}vH)xsW5!G65x{SWGFIs?;(4;q(3AqM8J^ka7X*H9^OTg-Mg zkVzzUX$vfv9Bu!xWu`QX_=$YBoNZrBi>}yWuV|n0ja85g@+d*3m_3?CCMXrjlUGm+ zgB}-}178edT3jZSJmSA#6u)zvv!J%X%I^ z&rIv{czl06bT9>RRdE_0PmlVc4?jVZ@CnYUTI!m01z zE>BWu>OHBbW~uwzRCdDaceTs{FmC(@9B3i0XBpMCb+TVmED6@+BVVAWeA8LDR%fnj z(Jr|Cci>Ogfditiimkfh2ZsDN+6wU?=ndkKPI#Lw_RUpBi6ohyp7rE1zDc7m)P0iC z&t9x3O=xEsxx5gv@gGx$H=#DRBR~yTPP$grzSduwn}4ByfO*+E{m|yhqfI#3V!&@l z|9tiMNOs$^Psg?f^$4i#g!Dm~yr|=XI!WT{mcf*o1>QuqcpVH6Z4ml7L3tzx2_e9` zMBjwSI1tO{nQR(oi_-3Dfk1IvZi^%ob=Cc7&HX$&2vjdH$T4 zk1mC5(+%G&PaZA4g_shIo`WbZTZnH#@!f{^9uF3Q;7b{CO}QCB=lH5z7_-uTZ|p|} zbxC*}0Z^ofGS+C+g2V7q_?LMye`H|k-p3+gm=TcfVlwR}htFPYp9nr-k;VT&C zrV5mW1YI9!+g%a4IUlFfrWEI`pnDmJOE1%ZsZ%tS{>w^K`VwDeG`_0bWbId>C}W6F zbBt?9nzJ@!pY|u9Ea`IsF&e%HIg%)_u;|G+q5ROb^cYpzw52n^ds^=DAM+Hy%j*B> za5&A_Ev@)@{!@SdF2A;K6SkS)e+~zi;2+ovylYs1XTm`VgplO_)k0%jA|rm32M=5P zQf3~X9ARQK17TEwZ7^n=0O*kEpuHvlHTM7dSP(fn5;oEAo^8ECsQI^t(%s*y0T%}^ zo25C392XrAc($a$?9o?Ej%}ZCRwVH~kqk>Y!@|t!Mi!}e?fT>oY_%GKJ(bjQ2k=6F zg+4dRT(t0L7>4_T*mRRHm=OxTUG8?o6>60+)vSQHMzo(Drb_vdnvRS9sqE!Lt?uk0`dAS3ZHf8p68{(qQaCH45 zBtR|=T|%Ge_FJ=7UK=5Wj+pd@`wr^+x~ro;a$+EY&JO%9*ta_bvHC}Yz1Ax-90c7z zFMtMIDXD`$&u(%Go@?E@WPdh4utT(WaQ>pL%2BG!F&4!8-cII0DufpB>D!M0Ghw<% zen7BvNNr8yJhZIYq)bYivk zJW?na!I`Kp0`M*Tt2Z=#9AkuM8sGZ(o4bH3Nv)ip%9*x|q54Z_`87b{AQz$cbq>{&y^W)ITB(ofZHT{IDti5YMV zi9|?5)>8IUq8C9kE1UPz{=UyHXzAM=VDxW#RtTDV<@xif(|>W{-xXco@hW)(uG?GW zzYBzu*PO>3wE6Q8C^3c7uOX9s?5XR@1X$=iq*zVk9R>O6n+?_%vL?BEjxI#}uG zO(NURdKJB`hQC_aw5lDjoN!G$**T0F{t!M=%xMjWW#dq_azZA8DA<7;YPP5q>4EO(;eWuY@0@)JvE(~$R8HW6!nZxRwXmhAv zRNH1s2fkd8_}&Y*!6cAG@USzFu@5CGo%A9IJv-v%N3FgEtXOluUvIeR zbrqoqXZYx^tW9F`aZ7ecdABKJ1Ic9bbI2g4B)Oy_{&<2Qxr$n4bhe~6zY-U80t>w zaCH zoKJqti6|zg-{9boASFJBr%ZTz?k+Zpn8IB$7d?RQ6#{9Oh5wGI*svFIw0MOi^EyPe z4%cS=V{y5*;Pj0!p8O9ZUN_8H8OFlcq|yi;8;;p;q~K2)&|cMEoE;dSmxgjM#5-SC zRvay5k&ytK-7IP0aRnX)2bAtbLgmC7>Yw=O+wZ$!yh#4~$7%7K0*tF+HqHQFv`7Dv zA7B)Kix(6xfb!>}{l~&S1V9A}>_bLu4s?UpfcyiasUepC=mM{ezgCc@T-=uY7FPVL zTK{%}EYPE%WS7B0BMO$6KPe_dM=yE@1xObQzUhWtQEF~r8xHu9#jMAA)}^jO+Uh+S z%^tbN#UPGG3;tPa@0&fy@PJDRpbzg4VZGn&Nb^2_UdveY=M0kwZ~@9QYXE#_rOM1e zvrsq5(kBdu@-)fWgc+#{#mOHyxJjdPi%%+L0M#LTcG`w@tC)2Q-+NslM^W-cr$<<> z+@l3xe9N1LCxJ{+`H3b9y&9O|`gKgZ##iTA>W*j>*B8VR{-yWXnDiFwusOS=p)Afs z+4r5t5Bi}{%6G7XyFjj+;K_i=`iLE)8oi4h29s9E8_ZSbX9k(mdg%`Z8q_{Q$@bq5 z^zSV+GtZe1DgrgxVVRXEi0|Dk-@^Hm)&^Ge&m;jCrQX>(hR)OklI|QHE`6;ToT(4% zJ7~dOUz^z5uQ};&la#^9R>Xd~l2RXqm zkdhspSdO$wrg@Kujk@H|FLr-Z%8s5dF=@GS_(klpZT7rcft z;K}Wfd?+~!QQ+nY#!O$hYTr193-<~?%Ub28L1@qjGIE1!RR&OkmX}G@($Y+e=_G6f zG>+*&ZJ#Azxkb=_xh$Vfl1Wa%V;SQZ?~!P}DNeOjDZZ6bC;n{P%o5)7k;L5rWB&ta zc+Lgk?3<(eC;0t$^)N=BQR!A;P07zMtL?Nd0JBa6C}65Zbn1P7hD#~AS3H*cj@Je? zUzZq=RJr3|X9amA&YH|Ki~s@^D3UfdAac7a;X7^ryscWtI@QUG+B8uxK9g5s{z-)| zg?$JlYe?5~j_7p63i`QZ)FBc(xy|4C0{h=n;J5VK@dl@>30&!1fBP#KE*^GHP#gse z)xV}w|0Vop{+Edv!Z0f%^UZH-bp{WWQRYv)9Ndwr;}gvE3d}4j%2WSRgyYMA)Z38A zh)@OlnPlk0A$7>Dpnglj55XSn?c`su=;1U$>a0-MGT62he30t4Y@@tveNG%x-M>!c za6^ChjBv&GKk}u7p`j%$3?D_@mnkx?tE2qM>gDO|t@9THC&8L#7&$kHI#o(GUqTRF z8zd(jq*yvw-w4WOfaO5ENF#zNT*Nmi+X2=5g5#0oha)6JW)vHZQiC0BLRRe@TSe;y zfpE{Er*FuSEkdSW1E}rM`XG_#_ttY7JsN<=-&YY_<32sezaBNgE>R4@59fid8WH(1 z$z9Z{v$!><|7d;)$XoF$K|%b8xIl8~cvAn;z8;^C8Z)jMNs1gJY%3ASNOEB!f$cj93y2F zK=mU?7+aN=Ye0i}E*GA%QSU??ExBIV)5SCiWLF1G4|I-$F*nC=?Oddxa7=>GjjPjk zAf6@Cfz^GZzR|*0t%dZPvGp4{MJM8jckld1lAPY&qW+s>W3Or zXOw(ZP&gFQ8GfW3fv91 z#zt4lla<}UC=fZ~z`L?{9#STlp50}5jCGXLWb~IQo5=j;35Dw}$fYy`2_o*4;=xP| z+!++=AjRPv9eV{zS`x9G2FOXIQ< zT%jKz3)&1r-r6eqB4{#BZ*Qly+cjR!CabIW+iBDF!hJxRcR|bA>2OJe;jGD|3IiIy zUfwpTB`Ab#g;elk$FXKKAT^t!cHu~SMum}-i_UxcJhNOb;`V)ZNE1i8wg1v#hZ%9F zby$GJzmr0(DepnOXb%8>qIy1mT7Pxba-?h&jhMt)unRZ$s|=Z-9R)$SPqSiU5ZXMg zn;hUS!bQk-b-F%^Eok^6yi24PlJf2*q`pVKVv-fX;R20NbUJZCYjx_}e*yFfnPoXk z6&&|_uze-HC6f*?>u?$U7TxSwf48skgcfIH7c6RA(bs|bvh*4FME9gRfps4@pt{!; zxdk2MMUwO&y2JXAdS=?_8E&|MNm}-culexqbwTju9{vs(YSpJN!&rIVD}**_5WZ)<+#%Ym4g(xJDKB1lyd5BfI%gdwV5%}yZFHmwvDIg#xZe2;G?!` z99wDktF(B^sv`i%6{Ww!e!Ir>9?H}mNL^rP5BF&^j&A0*vkb~~l5xQid8AHwx$krF zaTEjTyu>-EU4I1mHu=k`Nl(|eXd{47^%1SmF9Dh$r!AgKK|P^+fh%aIlAs=o!_BLj zcW|87Eggu*`1GIm4HdGJnY^dbFsN4D3dbIwX_Pm#mR26DuBEV2jWUvwtc0)EhNfk9 zrFF*(QLcF~_9PWjXPHd*yuZeiH8J~r`pkb-#Q+*f?|$zXtNj|$OndOQa9?`spD`Q1 z_wqWSx#b#gd3yduT)52mOf7jq>R$nPz_;{dC@18>(|Yie-`}I8IanXlJ|?d+|Mu?f z>4J#yVJB1;^4{2j{R$^60cA}^+QP$58UsLkC|)fhLj2a>AClA#*6?0Ej-7Y#Ht1@U z_1{smG6>Y2g*JGP?P&IIev2BAer%EBT3f}6b9b2q&Peoy{EAMBuOE>6VVP+}YP|Ma-gmV#{o^8`4AL(D`#MbtQIj~f^ZpLKlYM&YB zbiIHIUilei23iHFi)e{>1Dp&Qs&lx5Zu|;P(r)Jg{Ly#PW^aHtv zOYo!ac~-wT>hmva;+?yTQ!p_N)DNJH@txjQ!5lkbV8#|5E;zf-k-gNs>QP&k1l)GX z<93PU;Hqs2V^Oa(k7oJDioSoMDx$ zvvX;G-cGAc6*(5c^=v+CfZio>#On1`BqA9wv9GhbWP zQq=H6i1j0LCdLY`ZF)EE#S`3OUw1pt10mKojK5k-+P~8D*cgmX^Cv8P$xq8Z#vrj3 zd;vDwQPZqt%Dn4(T>~Mz$2t9Ro)U>kT z(DDvF)p0`_8W2exoWW=OGs@~Wq~fOF{!0;jyaj@9?f=?mt+;s2KPZtye8zU&ibHx{gzSK`;sMc?fU#;jF#$<)($Or zquYGV_rBA6y&cbLte%HQu>VGqkPP1uhhNv(< z)o`>Tbiznmh$qFeo!@*hd31W>ILL)MTf%37uOy^zYo zeMs68A~o)v#9fF)(UV5uSDg|c^j~G$Bhb$s4;h@qI4uZk(y>jO_m~%>cbix8cSLXF zd!zAwz}m+HbQ|&**oMQ^LH0RbBGzwDi|p|gXxd#?o0yL=4()|W>#8MPRb(3M$0eFw zQ}Dx(ZHzk#$B&J+l|*br9cn6)-6$jy(W34NOuZUEmqjTYGcX(9YS!M#m#Bwj5F9mL10qQCW?T~+{8n;M1a|sS1bUEnN?s#Yg?jgc@ z>y-v69w}efZc;O5XaZum!o|QA{7g0mcaF%=uqgh?YZw{17MBl@Q7oYfGPz#&%c{Oe zMCrGVQ9tWhd~-WxwHJrJu$*Qy1BaFg$$TC7_2-uZf5;e)HFV7y!SXDd27GmxeX|U$ zfaRC9*V!JRQaCm>wSE&oZ@e2ycFO`A(Dd@G|HCMIq~z($s(Ft!L0j4vmKdfrF4fq3 zW}{8db+2)(ePmWqv}00zyD|Idp!#zAIMiYIK^LVs`C^_mzB;3}L~gMt8d$~1u-(-m zd(cDFY;NeLW0(WB!rk;vk=KlC4Q+L138>=rzb&A_tpiNg&yB8KH0>jthmEa`!UB!l z;5qjcfN7iUwq|juz26Og3N}_uu;HJ^;C#K?N-+N<_Szv`X`H&Ss*f)!{K>&YFnzE2 z*CtKFc$6=lC+Beq;CuQhJndejC!xBFqmuFYc-`e0$gv-KC`Q)zQ>ETKnllS5lzjZnw6yoHXzAr% zL9uf}Q%hhb#cBrr3^yTpQ6pibDZ}x3pT=KSOV1U2Gzn`a>@O?~^v`hyqVr7ODl^eT z;J)kZ4zAJ@<*qBGhBm0Tgi_?}s0{v4TSqHqD8y#2IHK?obLOWhZL}EH_wAwv@dSG( z`zHeY9z;}RHPwUeYuf)1M19Xa(5e=>Fn}I>pMOVhO#aFg-ZlsHkqdvFbcQ^Z9~)z0 z8D|2~L!;tDGK0jSQ3-*9;P^QtE?cpW+9sp`hH+LorE#XRey*0DHSE$kFu_S~DuE#V z16_Im450tFZTv&awak4l0q@Y~{|*N<(yS@0`66Pc?Sz(!%kGj7h5k)?;aquol1A?)NF9(^4(zWDRd1Ki$BMmoR7@hAa!G z$blcuwB68&dpYwh3l)j*WMr=+$>D28B}E!l8pUEOq@LUv0r7Lz%LwbKvtc68$a>4D z6=wYupO5(hDNx`Ht41@iP)*sf55Xl9N%NjByNakaUwCRy$YSt4lB_+pcyF@kf?KJ9Gd-?%M@jdwUFu+Vn`Nwk#|x zz$h7>eGfkxy$tM2RbQDnvN{(KB&P5cNa5RmU3)ge#Saovm0An8QI6-nb2b=^S>m0! ztGB7gWDk%z~(|(%JxAd+e{QOvRx#vrrqykaVkVPIFOF!%`?R@bjdA!3H-m@DRU` z-14~xjcD-UneZ14<}v5w=KRk__Zuktx9|*&lzEI{m}y8pRuxQ}C^HR@PQ3ZV3TAny z6cx)&@E<^z1^_ZtI=tV_zm-e_n3OI~1-TeN;{Zd7XyO;Q#2R)3?Mt2zp`rV{a0a)w zMpvMk3lWp=;`964w}_qV^NM2?30#)&)jkt`HV&SV>FAitPzS4vCBc#u8{{21^Ja`3 z_Z^=L`1q7wM?+^sKzcT0p?;tqY@~O*76&wr@WGA{ zI*`rf0TP{T$OEFDgs-TWFE}3-VY!bDOXrc?L&kXd&=RS!27L&wtO2^-J=f#^u&*C} zimiIz#KZ|Bhg?HI2L@q9o(2tM85xQ#)Nk*MWU3DQhjRm6_z3!6FaSS~y!| zi(nY4(n2k^(Z(kL*FZlIG9RqsDV%{SwIzaPZw-rrOvpiij%SAb)Iu4;4II+%e3zerjciTYrEvKd6me*Eq+MDutin2;l;RNfwykdH}w zAGVTkWUAyUN90jHL{h)455C6?{)d3^x0$|A&Pm-T@V+nt-WUGd+;}W`%uP-I$Yemb zDo{lKV%{j);YdK;?x-lByJ=*C=5{eCc1YlFVMMyAl1da3@tdYI#*s*NTSzcPZBr?F9{blox8W<3Z->!^Z&9v=m z>Arb?w1rtc3c@>&$@|gSPLSgVKUMAD#bWlI(hx`>i;)MDk1QW?+OOV>qnLvk{$hSb zxG=L2T?tW*fw|nJKzSZtN+4{m1qFilJ>UBXWOvG_Nq_z9nm0N4Nth8@m_?nwPUs9 z*!evASEOTzpWczpJr%+D#+WXb>|_>{xHhRgZQPKz%iHy{`@-R;@)wD_hr$w@Vti+J zfq30kqH~!X>3{;{Cu*$IklR)>W$sBGQisQ8PWrHfpHVi>w7}Rt6-%c%L19Br$Mu5l zg7!swyOjM7e^H!FezbFik9mET0G$?x@*$3OTI5UbEh%tM`*F z^5qxLG9taBW+uh~gjwIHL&L&elK8>vY%C#fXH8% zLm$K!G&^{c8i9$M}T}9MDL^$y|l4P6-li1ZZ3PK`a(SgNVtmX#w#;xMKIP$fe%U z)J9PQ3FHvp-{d|8Wzy9~y;tH~s|nbC?9{zVy=`8#T0v_N^w|WqQN;jH>`|0YM&_TI zL&{!%maJtH9JDrzff)#d$t+Zxv;Hk1IH~lANl}nEIWz(Aw{2;}N@XDcd~(Fn{hLeV z}!A$3(~rOiPV44WZMuntXpA>b^rOX7@H{P>ZXwu$kb9req^ zYi~pHCXZ!{G=Wh(0JVa{uWG9JY5g+iAqz<2(gSmO&4;Gr)Vp0K(VqY@eor1r4%M?C zu|Jlf3JMy8!~;Tpg6ItaqVf3z7vS*)^PORT5?nUn9CqP-x!&}pzkPdrH9p>Q?`wO$ zyIG$eD-+G+I-@%H9=mlvIRkTt6uzEg(v9xEICIvP-{kS^117Aaz?VK6I8?E~bseuD zZrAQ0EFuEzmijUYsF-h*iknfF3Q0Zm5fx}_M^Y|_bRU5huoF~5YtBlbrk zd|u2x60eUy*Swa7nlBu#Ek3M{Tp!zPzcV3w7PVo{2zu?RAXLZknZym=w`Lf+x=gMg z$$FbwZU+jJVBLP|aUKBw#hF>p$Zn6kaQ{(g|OeKrUPrOUIL;Ld^qIrkm1nc2P@J4c&K zG4P%>KMyx#3sr=3CT#2M0KTVEbB?rqIS)5_%c#?bKoR5XI|00piYwzbiG9-HZ;3w= zJzn*tuI;+hv3J}vci6P@T}VQSxF*m$U(}4)V0)bnk<}s_+g2r^z=%?lv+>M@vvz&l zHFY%ra^OZ4C>~iPy(NT-iRG@hf-2S{Mtp2h6p4^RhA^5yiDGnyFbM{_V&{soGR!`A zBvLxP@bwFyBn?+XGV*quXWQdtt{&sksyD1%Dk=31YO7tcQ|TFiL*iCvARK8o$838d zMS7DKZL~(3W_|BWYWGp+#OlJ4;yxNWxwj+odqF)SHHG5@-*qsmE`hZ)|+!j8HnB~@2!AWpq2j5wmH+keg) zY%;@)T`*ynml<-yAC8I#_{rE1N%W!tDO+;w&x5HL-$Q?^yIAPM{N&qu!w?2CXP{tW z8IXx)5cqyRNUvkFCr97gdIKd38C$&(!vYwjhMK_1*d|O3qX8VO1&M!ct|rctD0iGn zR<%6HotmFu$zOu=>yx<+>q=376=_fAemL4(j4B13ATz7rnq8(bGpBkD-gi0z>%7)% zxVIn`@)3@MsaqbXWjM~ahcPib4NpR(-l)i%VLoQ7vL!0}C(%&*ef5gDSaQz1SeVSc zC`9Hm^n0x#J!9@ND6$HdZKErMJy4J|cQ=*q(<7=b{!HDH-8H^+A#DifZeTcmWaD5N z5VX|*e~nWsPEpg@>rbqyI!6}`G;;2s@PQ_fI!EtJB9U{Z&N&g=DtMOncmw~$Ecb*S z$V&k?ThpZ#eOU9gVW+x2Yb6wcRz5w4t!Jm~crTP+o5NJb-Z^h+0LyCK&G&ts#|yy) zyQxf+?0)d#lg)`=@92`NQEyK(Y?hl;^wlBqFL>VX6xnRC>+W)V0vT+(K%vz8T`!NR z`fE7`|8vh*i(G(sjr8HuHMz_Qq#o5w>5bMN`d*Lz2>Xs8DH$1Q|3~42`=6vSlCRg~ zF;u7H>IkxU(J6d&fc-D9CebO%Wc_BO_77hqd#BO>I2@#bEt>6sZnP{>(hG*qh8fYy z5XWwKi~$Z~$9jRbT@p!{KvMD_FrTHEJ;b{LJ?A8UKIBs1M~xq(#9uH!Q0G!77D@Lk zEaMMXt?!xf5W~MVDH35q4kL%ry-(V>vgmC9$?2mEl>3Fu_8Tw7UEDzfGtKGY5T;F{ zELhW^d^T(;nFciqInv$S6zzMpYsuiwwMOheif(Y5K5@qv=T63(16f$MYY?dKVjQg} z!bTz=z5L$gF_iS1(PLue0x$9}Gc8iOzf5O3jq@(rYamW6%CE$R;bbUiw^~Ihhf4qbs6?zxJGShk9PQ z)7wONxI)8BjT0jB0!_k{by1Oy%_kbDSncSY=$;L^!1Y`jY;aVwkf)t)XLg8g1KUS8>OK1a`Yo18{4n!e{-x~;iJ z<#JLj{nH$?^If;}JvAAj(;!G^uzymT0jkrPiIkUZq`9baSC(=ezz z@9xZG>ICH)kvjyV9ufTR=}WL2%VjmjP))Cho%=d7>t?n3%%>6u1*>Xf#NBmRhTTQJ zb|e_M+ar0ao6bBGxRC{Q%#84(@*doF{WwAA*@EOgc>@IAN|#@(U(s+BC@Qd}9qTyI zd8aMj#62Yr$0@X=hv782h;SVta5j0g%@x&D;W0(P27cbj8hNX;MR%r8TyQ1g+rtny_KGv!N0dN3T-sWZgm1r=iNg3$E62}0(xte{ zciY2ZW0BU|d$3>p3@?^&d<0z%o5Yshjb7LilVo+D82S$M;Ge&>I=LUG1xXXq*d&W^)$0boZ*$)wP2UewKKL>p zA3O%MhV55fKJn1dow-?yP#}10fiR8lvFc8iE4=3~%d9&byrz}ZFbC5EI9Ndp!{mEWFw5K~p+Mf|cI#%-&#x!eIU!JnD2{_>z&HZdbrK`yj z*DW0@qdYF#PlI+ucUi^*KF3OopiBqj_@0hM^l=#?3`F%zZtfidm*?eA~n)JQwHzcYu2)AVdJwnl9 zYwzGHlq3>RE?F{zChiuU=+)E05O(g#LWBl4duf2+stvwiRq-*&lNzxQf0cYSR76b+&(%DwhpH zEAWf7A918IrBI`Pf!qq)JG^eph>d9`KX89XJnVT^d9C#MQ6(`UMDr=#UM+!;zfD(( zP)fWlOoEa;Tw1nL)xvWl|5<{XjKoqC>*R(m@t;u#{|j_C<>g~%H|4ebr;ztIB;a*C z{^7Td{NrC22j1Vgjv)5pzYzSt>}!C(?Q5Vo+`#e+H;rG3S4sFXFq6s}lgv7kW9s3rl?bzzSEB*`^K(JVXSv7D^X0Nc{n?gXItyOLBkk|R+!vIr#W{qbtri6?^HN(j6kP9Pkof#AJ|2}tqJr<(Z97>hbe#8l&6l9;e_v! z;iSixG!hU!;;Gp;oV7$d@kEl%biw%yfqfP2n>*{^IiU2OqvVT^U$73h+KF0B4l2tP zL0yJZjD6=6n2=2v>uUXW00FGOpSSxpzrm4%&~`5~w3p-a(YBK)DGIv&UKPy#hK=}H zk@Eo3$sh{71MeW!Y9ZxmsQA!{Zm3Ls@vY3n0Brnl;fcA;{Bl<=Z=w1qHrbk7CHi3l%al*oiKnYNT z++bm8pb$bq>9DXAf0WV&JTet!|CD6&np;?LTm5mF{D(O!73fn5s_mZ)!nvMte-`kw z$Nj5L0%!Vh@PUV8{>=pb9ks&!KN*D4ynhUg@F78vw2)XZ8|D$IpgK=f7N9Vs85y-< zjF>cK^!oX&PpiH0h#{6Q^zQOw)#Lnv^mA;3b#EgK>dpIiqf$J#(9oe{5KVX%)uzuv zZAMkzj{}9$w|G*mf(GvA4ZJBGG4lp0+IWH%Zr*{}ra?ZT2)1YEb};}QvfI_1%wL|y zuIY8c@eZQ5%OBeJ(p4{%VAa!zptyBIGJ;G2oKl|%Y*{8_0fC!d5C`9$%}8Z~HWxQ? zjXDu)TJtNuPrMmF@U}NPKPn59-uYY;mC${Gcc*+msOeoa6t( zetc}~yqqA4&yasI62R!QPLioR8;HIXfDg)TMk8w8EkaBGmsV4%<>Tly_(SjiQW1P? zX6C=8P+%&8N*w*nMlY(O)<}%>USD_80R}q-~x?Ic~sb57g++U0vzP z+)SNRd%qF`T=`riT!qXUFv%uraV=U1 zexIai^OqTm3~iGp6L#a5`wLg+_)BA;tqOF!PmrwC6`M-TbM^KS(lj%$H0!B>{5Yao zQbvIXNtE*&^H{VlsbH7SnzGH}K6eZ?&JXaqJ9RMnreacDsd#FR8mg!tuUWh(B@Ag{ z1oJ~E{iD;Zw%_XZqeTu|Tot{sA}923U&>oMCe`GMgmu~$p(`=_ng5nzY1!-x$;Y6k z36&D$Fu;FVsNd>dup8n34F@&lV>h!jHRb&08S-1W)uU^i!b=JP;iLC&e2R~QkJr-7 zYS+M1PfK>bOAZ60a)C(QTwEGf-4ra8?Fpx$4TO!2ti>*pPYU4mp!vxB%?NWKoITg% zbB8BaU8jtBehu>_Fjl=lM!Da}?B42ZZMCD#x3w+x_VMN3ih77H_}c646AaZS#bBI?Hd_+uydQIHe4cR;TCEuJdEU4VqZi> z!Hkuvg=qs(bjz{-8|`^V3YqQJNP>m1u(2F>6N$Au9iUXqQEpb&Vz!`bOjwnM_qf5= z9}=-A9|{D?{q*wRGDkW++ldIZzDL^DXA2Y*_(c!z(30lnG}!BZi#xN^v~0t6H3Y1` z=~vOw@h-b_eVW%sUl(<;ZC828N({?gjrqVe#1MTbdcb(lB#IJnmyhm;tv0bvRq&JKgRU zbN=83>UCJl4RW1-4_CIjMrT>p8ei}!?0sy_P9Kndm+dxdUuvl$HSF_YT-cKneTUsq3@dtn3o}&D%uIrZDx7SkXd4&G7oxBDnQz-e zsODZxchtZ2&BV4f>(_R6VfNrFIFXt8i$A&9zt9L=*+tz$$L{S*UCoqC_u)@HJtmKK zm1P50PEZokxIXJ|Os1M@-$4ABf$fIe>=|~6I?8qkc2ytw=@=;F``})h0$J{*lohce#ey!L3lgpZfjge$Nw^ zrM8Rtz_VyZ60W%krVnyR*9i+V#=b79qzrgsv~rHM`M?Q8Qok?|mJM7EH1S!Ks!p`` zjXJ^ieU69gm$m4Z{z#GMcsg;X8lV*DpRNLFxAw+7@V2UlhW{Mw)c0Em=S04mt zUGo-l4s=qS0o*C&s~|?k&Kn*+`uxIx05#B?dECvcg_0G=J5}sAPtpQYHdVYi-vjJT z1~t|hXH|LStQD^6G^RPaCxvY*nuK8v&=Thy!()deYW(mCw;P$+>`BDW4OmVF;?$!X zL=Nu*A2~@JuLGz;H@?U>1>TMZCLx^;{*5UpPOIv#`r#O>6QZp78PI=3p5F zu%%xe>y7*Q|G^magd4Y=`th3*p zf5mvwteG%3zZkLkWYf8IMa&oSmPV>MKE>@&Wd3$~%uzqi(bNiA1S-Ts2^aWu4U%(i z>5smrIN*3@6B{GT`3y_u|0_`mb!>;iz2#JReVfNI!8(^3nfmHr%UaIfr`IAY!AJ@% zoXD5IJJ0a@{mAljs)Ow79+FdN4?BNWcU15G5>3#c*dcE`Kd(8XpI32Qe#IwFn#n~Q zyX6mex7F@AeR#~!kTbR%XZk=CEyo)DmaRD2-s|kz4+Oxglq8-BDnpOVB4N32Zh54Z z9IK)9{umR@&Z~ag!+vf4b)s&SL2T>jX--`=%96tsx))7fPKx~{h;ek$tKm@l{IK`} zY~9h?9q-W`m?xNuGEf=b}gxI47#VyR@4k86PT!q(0w-}pk?Qg7&nY6 zB58xDx^wnCx4JQIt%}$foHr)7y7O?LBevw?cndD3)Z>TPrSSNHeD8N!44yQcX^Hvq z!N2UTdTMeg?iIxWW=L;92}eU^n-n2Vwa(h}T{ellWIx=XTB>MLMP4-}Slk(#X=Eo7 zDDWxu`Q#cod$_Fhl3~uxq3D7Fhro$du;=0ZK}|i9zM^G!>E9f(O)MD9Mg0p9JlGGS8v1Gn}Z{Mb#(u2@`0xV0%g4pMAC+kJWHT)dC1?$bFE zPRH7;yGu@S6L*Q-C;4M~!0(v2wrrn(uDK}UYoLdJtVIcPckDz-u(Ahl#n^nLT>BDo z$RiV(*SDQ0yO*=m@RCYtuevNmJhs6@jqhD>+5Bo&`5wrU+?g@$PzMMFNGpjxoFJaR z#bi#MU#t-fS&lc^aeHYT*MS{5?+oo=)yeS2hHGM#xfX90nC84 zYyN{cwFpQWpU7p{yx>y}xqN>JCAo_vI2{f{g*iP=%x>y@>s&YV^XD@<9Nr9a+zj*K zIGr(6AKDfy~POk3;sSzjJ2hoMG(j(8HRfZr*n znMGKO8FxF<97_D_o&QJku02&1Gh(0Rmj^vd0iS1p zb1J0)%|An&|0$9q+MaOO?qU#G;fZ(kut(9ls?y+Dy;AGO*?_#K!n{^#CKm{^}hIf+#G_I`1R)*iAl$gNSPc?0AWnkZ{j5S zTsLsh9zs^8sqX}s0!Df}ob(&(Xrqmct*6YN7Jadi)M=2AJR0bUUNZ_vqEFt{vY~g) zWSWLGU1pNJ(f+I$R(t*0$%OTyRVwI~WiV(d{?uUh2CKwznmiXXB7GT7J^gVDzJJj0tg2jb#t69!jt+i`lT6l356a+9chkT zOgPDe2$%f46WSMCIXtDvy;@URxHDlz`ZAR|_N+tq5FW~$SkL#4{7tBFr#IQklQ0%L z+Sg$Iu;rHZkp`0!VVncvo8U!Z`2moq<9FlKT~rnst3D)`6fFu$Z8zD)Pe6H8g<`Xv zcw5oI@$ZsFs;q1sqD1iNQ?1UgUvO3uzw6|RaAyKPZ;rx4C4jp<@^d+so z`Cxv*SGd`+#tNq$cSJj5{VpvkATm{ML;~6DvDXXAX$F)Dzr8kW^y4`f@TsyLYXU5d z&Fk@fKDH6(MVx6hu#x3WDFSlxj~oS2l(@fV%X5a!Nq&g+=nsFRbUOQ{JI~DZ2k&4_ z#lED7#lE9YS)UV*=6S=#(I_qM2P`(j9<6kW4_S16aa$8jKnliRZg4!nnSWIjbO5z%6!n(%0kZD&#cL_Uf~$Z#6o%;^`S$k^Z^Ux)zc z!V6hUi1Y1u+1NLm_t9|@mG2$$%lid*5+ISyA)D}ovP+!sB#{v!P<_rnDnQbyc{MQH`TT|4jwAxVk?|rZf18Kr9?bY>2ntDsS?SKZ(M7r0u zg_3kx9uY>9N4w-{^+&Q&;z;Ivaf^*t2Wbo zO(!j_>4_reKh7$-C^4+6`Xv(kf``V+WL&Qbs4aV8Eu+*gCAVs{&Gd$xymw0v-t}j| zWx6i&-Wh2c<{u}b=*}yNbO4IQ#A&R+{QJy7P~vvo+1!af)cNO8*y*nxNm~s=cu$^g z>Z=uR@`QMn&>Ymm$;POhAurkqfi+LP26b-ho~YyFjGiJ(wpzO^#yWa-L}fg9LGw!D z$oh8e+ChE@ne){o1dU;4{Nzb`6H%mXN0^g!-=pD=vG;W%U zl{wM~GskJT#8fj$(rl7QnCmA`lGSV&VhcZ_t3PC59Wmj0G@d@!7vnj^i!OKBqa#62 zlnLy*i-7@DPGlT6D%c%b=f*RwKfN|kTPW$=hnbpfXg8SHp{cJi>76zPFov0ys6F`I z>>h>fmmNrB)&SD)egrMA%7smnDCj0_brc*CA}w%B9i&>IOp4g3=&=!0dU3p^KhWQ? zKyx|`cbXA`rjAiM=5cTQf_X3QwnLiROl%FVM5rc48vimqP2{{>V^wmKwzXJpHrZ{x z=Er>Ua!ph6g|V_m8dnoljj{d;f0#^A$&&ik423hTR{;o?({~ZzC?kTLJM_N2`dHC* zUQsU_Vq#)etXXY4_FIO{IO%Q!+4a!l4ANUToSYdP<3#k(yd-j!+Ry(OeUJLOHphiJ zjDfZT4wCi5)1~|>Z%0l8$E*c~>s8lur*b`zL7lKI$?O3=1rQwHupdUq5|TH1Gg9xl zny1i5G~oC9u1;MrYy0+KO0z1%+C^BqNXEmo;ntRRVJ6=#S6H}mAE^hnzoT;@Hq!Y- zE*n{*;}FA=eSy=6guf!cO;jQ}IX3ODQF1xk>uCA{{gHr;eXig1w!{H87W32nC60-1 z4tuZ3==ZWvMGjB;90ge9VfIAjOn}?vgJi~iZNT6YUp5Tb*p_^>y5nO#C71~jG z1PO)ApK*kY!En3dG}-2o^l%>Wt_x-Uz_l?!*5}BB z1qhojBMWQ~J&04lUtjhyrDNXOCM!CdE09p&aq>%o9gG z@r-_IiV1Y6bcNdZUfI@M@Y(r0XOG0i0sz{bWmqUQgp96YUr7RbaVMFth+lR`V3hU3gpQ1N>w01bjJ zJAMP2*-SUl?h0xM>vcDtsMIIl)yYZAtOJ+y3M`Zb7c_ zJ}BU6yC^*GW^--Y{H1l1YiFc>`w^NZ3;)sB9dliLW1`dJPoC1Mwp6z>25>@Xu{&}z zoMpbvvwTAs_owE(b|2Dq9*3LB@pOT>yW&gXWhPTNP?Bh4ri+Wjz%<*Q%79rH5Z}Um z$2daH^I9hOe2=8Z2(E;2Wz-X?9bRgLL#ZK7{&uUUhAH!CQFzos zFij5{H5d3OQrwM1D&U$%v8_FRtYE(1S;x>`+kYHCovnA4$AS^Vtpbkz*%z^UEvi}F z@RXKJ9j(b=Q{X(rqei+$R`4ZxIaGzHXNa(C%h=g+QjhJpZ%bog1b|J(^)Tc>C2YCT z!XwrwHSfi!(-KN}>xvp!`W(TM#-H)TAaNc9W?l!7_^OxpB;a2<1;0I2TBoAEgq^vp zB$P`JhkAUy#+AO4LVTWQMGU$<%W^jrVE|07U?RNRre%575{>N&ut?oF?-;IE2-Ldb zw|W5{JV?o`IOFa2-}CR~IXfKuvlWE6ZW?UL)P!&x-O#K1)9_oi0uKLfNWwFCLIjrTDz$aM z4S)QY$-Y1#n(a_DBF^7MHbTBf{@K5Uz1z2Ok03T!>|TnptEjZcH2)eJo;Q9qq1BO? zUJ)%F6C+;xsHk?c6_k>{n_n=ebP$&NnbI-mKTCVwU)4`KNLr?(H1Q_1sk~FX0?*}j zHpZ$*Y!rM%1(16}`NX5S5WD>KG!Ro&K%#c{uqBaZW%F2|@RthLd&UYvFJi4-Wv5M` zl(E8coH2i2Rnm1-jIz9(aOoXR?ajq!$$Fv%s&MI}U~%Esh1}Lr{nA3vGks0STK*-v zB-u}@mE=T(W2qmB3{S~4Wj!a^`f5#=`V~7(6mQ@r*#Oe85YM^vuh_He!gm2pM}p8+ z9sQYtF|FfjMY&tLDmac0#Glk@0ZdOW2GQUcs@9R3nzS-xVe$Q32dCU)tvg9M@c`O8Of!k`>-6j^WGdXZSAFWem zDU||H%=+@E$+9qTeKTIp6PW@1DPql>a#1sxasVKQKE2kj3z?X4iewBP zr*lCMs=eNvLx@4k3$QIu=G`$vUH-TH2sGp%HR`fW4~p3K#dJ!B)>UeCUFYE1ZAz1n zjYK2LMOtlM6>hz(4To~>NSEz;ZRKlWY86m&dixgB z3S-!^N;7)WFOnj`L#`2nD(XK8;NkW_b%265*iCHR&J$xtG~tno!gK#bF7dJO{hHjz zl;`SO{6H!A=3ep-Y@tq#2<_3AX>~Jo&)Of68*^=%3JWDwBO+*|E)pZiluGf*WFrP% z(0B6njRxNOf<)c!wp9kIF3y<0@w%lU9(7XuW2m#rifoZc-6F&!v=k%rFp7e3^#OO& zGR5?*zT;ef%x0*Pbk}^;_(jiT+Zf-xzkmo`M3t>q$n&qnD2Bc42iDX!m)dZwyv$xco=PJdp z{j^c}fYbBwcb-}x^}a0;ExYp7cz`6FR*lBe?acUY^y;r}vir?3%|Yx>y46?pg=AD8 zdDC7=cpR+67{zytIUfw0>1;dKgxU}_yDZX|Iz0&uMVepGL4~BIj?1M;bJG04lz8tx`zO4|D0T0(Af zim`M3fCb;Q7{{*akqvy~7yzHt4#M$*&MO6~4!&A%&>x$_Y<^sA+AUVwu1JhTYiWev z%T^t)TxQ*4)mPgTHYHk_guE3eIl+#+k}4kvG1HTHTAeESj6o9Bwkw!u9Hi$o*&i?D zo0cgdKW@4=m?l5VuHB{=*V>xm5p%=B=ej}U00b!LG}o4GmG_f5QGnJbKV-Iq?})dq z@g+}SvCD-ObA31fhKo&270HZcVht9@$RypRIQa|fOqnkm*~<6dDJ%`OwZ%)9EBqDR zq2ZnY)HXfk!`(wlBv(RL>k1{T7pW*FC)!CSl|frQ2e6)7WIst3R_trlB+2y@lx8 zN0Y7#qXyqkH4docA_-~PACuDC)Tb_!j!nxzO)RVO^1oYxa(1M=60POBVaSJk#8V7y zlTK$qR?pnWCk2J%lvxXR6b4$|CUCDo562_weKs?5?j4og0HcCJO3FS~+Rmh*$#G{9 z&o%_TP@?bhNI&iVjZ*cKl2YP3?s&}opmwomC082eLfsgyI-B!>y(W=`^q}_-Y47cF z>;P5>aF?$>-#?gt0$*0PW+924z$K=*MnOxN+_%`@z-<2L)agHrZ5uH-xR7-Jm>u6# z_?&?1Ejb2AIH(bY34ql^qqPYCM%Vi4mkUwSsNmnr^4W2^B1wIZOE^~3u#qLf-#^YR zzyBzSA1qW(O@xqYOz6vgaAGhwU2@|2hHks26T2ZQ3rWjjiOz-wFfI7C{gZ;FuymhR z_PX!OD!utNX>YQOu2OWc?wDE<-$Pzd25uWs2H-BGqE}u!hR8&A6=B~5x$=s?se-P~ z9z|c8w8^yo{#Ko-)Kij7MWuz73a1%@4CBrw+;leHg;P3G6Qo$0rM{=!%phVGTx&MC z;avy*ZA%PDXr~eA)`nN$ zDL11qSF0j7qaasHUhz+EhHhqYZiY4ps)U4MZs>;@C0Mc$EbLioN*>=2;uJx31P=6C zFi;X>eLt*7oX2_)M)@gUbbIlD`xL!G1d^0ibp$k=P~i9<%JKgbk(Dm6n~TWr^-o4t ziWcV&ML;U0JPt)b>?{(B=saQK-d{2SBWtYKS!vx3Nl5yj0OGfXMT_z2|dx=*557TQP5Gwcyg;OGLDmyaj92F3M7c z9G)e@b425#txmZs^bOM{AZCmFddQ+H;CbBLA%i?L)adS@03 zLjp^}=EET}<4vmV)>Ft*&tSD{zr}scLb=UuA6Z|a%0`Sx#-J}0xOk%{sDNlj4r$K?%10S*QR69J&7hQdpb zW00D{I1YymxK2y*_XjmcM?ob9mH+uI$wvjo(k5VIpxX<)y^}isC*_WDL%0KzIT8FH zvfo{gw43a>46S70vNtA-@prSz6m&Q8eO(y^)G`%z3Tt-a7@At8VI3{Rlxu6!4+0JrtN{8vk_AKW<$ zYigh?k6!)_hkcW4<#*)E_e_jI_`JTal}BAn3NczkcJ_L{%pX2=MwRucE|*)K6-bKY zdzgzINX)h1tNckw@j~B8r}{w5_8_%Bwua%lcnp<2Aiuy)2~v9E;ZgAo{79IR_A`k( z6UQ4GW(`|(@!S*HmirjQW9a0AF#i1GpM^@v@IU|*B2wC#HZYK8qOKiUCIN1WL_u*2 zgPg!DMP+bHBOVP}suHXLl+rB&gAI^Z0REi`n@jgNGn}WnzYSxDl52?ZWBhNtMN#2h zfL~FlO0}=6X~|Bl83#c_%8n34gP%VtRr3q)#Z)$@(O8c>I8y-d{|7({J6#dmzX9Yw zahIHIOa{h=hW|;s%vFUMNZ1TeR$u_+$$ZdQBJwDgP~2}95v>`ksog5nNl4NoUz0zZ zb%@*LLwqIF+cf>D1Q)#ib_^j)V81gZ+b`7R=kA_QA0O})YZNLjT5!nCG}4=SN{ZKA z*(^tO5us0Zt;3pcPB}|khjzcIuz(w?51YVgEQbN^R6xi;kH9p`E?==h_^<*fW&9K4 zt~x&q0+=E?kbB_wwSbUaM@Yn3a-Q7Y(`W+R70+{h? zE5H$=M)K9P-q=*C;H>uDMiUj z;lnz5Kz@wmro=$9+&8(0bPpJpBWwV28A7xR$brCwhiAdy{sm1#Mr7EmB;;TY(HYRV zp9`*l*uXnUV>ptZ21aqh_v;brp%$x#g)<>jES8;MRLT+M)7;iDqqRBVxy;&jwQEqT zAJ*o)_?rL`&WPkYw2powv-@L@=mRd~S6Cm184?!83zLGf_~yf}4s-yU#&lZ40M)OR z-bFSCfUC4`C~Zp=v*aYnJ}qZJ>Y8CJP_HUrr{q{5X z*VM_$&TMGF^6$W@hMNLCUw`%9zq6Kkp*rcQ4VtqXY?S%azuDxG%9uvJ$<7-xZS^OB z(BgL>gaCFaBp&zc-QN0;)d)y*p0Ip#fZ&&aTvx(|gZ>5HNum8MG?Pu5 z(|-NC(tHDb+$pm$EJwQ)7WHsrO13%xxHYrL5ZFhG@T53Xg0XOXgohvHNCa2Hr_Lt= z#LpBt!uyAsGqhU*(Tq?qdsPER?8A@1aL&=uWpT4`k*dDM^1u&Bm4?AtO~B&egnRxP zBKP{QkzJ-#H(xyQc_~dFGUVSXH(>a}Zx#EwBY(So)gyYCDJ_$*U3#$=kIyROKD+xJd!(JxzJ3c8aC3k8~E(X$Vb*;s*u z#*+q@*(`cw&fb#(wgVLrHD+pF#OdFlpa^Q15Sf$8e2)5}o);71f!`A~ zUl}$m@l|&{5VnR&Eox2h@K|qrOzqQoyACwuj8*L z&kOah$nqy83xF)(s(;zU2u=q@?h4?Eb;0CKP|xaJU-ig5PsqFReDzcPP^G%n^MQkN z&MNbYhE$n?^MJ_QQm=wx%baXmD?uy9@DWb;;%%4Z|6dyXf5^1rtEiC7-&L;rZ^1Mt zJ1d)!amtM>$bVbrvnZw@Nq;jm(tZIWr9hJbLpR$b!A}DNPQK6n|4}MAjhGEMng0)^ z@*lUQW1>H#58r_KpGd23cXuNrcB5}IJgId7)X7t!N{R*%=*=G*d0|-2I*q@vQ7vw^ zr%H-xxg^NgQYC~;>sp#SANWgnAM~#2DT+2bp8$)2>Yh*25fEF}OfDfSrPP1t(tbgMJ1Ac(ieP@86)ZSX??lwcD zW3)q3F#Lmui{(Pa<;B$?$+j(Kz0Rn}*}MLn3n!Y_8;UzNsG1jco|gEL_){ESIQDFe zJHXFbtLL{--cSkPrYF^_$il4iL?amXq82EVDiV|_l>F~0gahVpQW>l7I{&IH^{kiQ zgNYRBAp~k<$N@e%o7!?_ zW0!h$y*T*x#}W+vEot=DVjK06nK&)-*X@uLw2i5<8dsdv#xUA~kc6xy5t(gCi?Ex` zSN86u#3so9KhY}c zfdT*6*coEY+p2xnulK*}*MRZ6eA!vP&3CO(1W~u<&6PDH0w8+(@P6yAGfs%{2TTki z_lgtIzHn3qNw~&WoJ;Rck~H9vi1EJpvkP96;q?b%tbGF0-cz_EdEOAX-*4x2S-7UN zloB+!U-!m5ZH~YD-kENmZ;k_wm|IDe9WWnN;o4=iC}M)M`?B%U=8B2Km!*mD7KnFF zo>%-9>*byTP*QrveiBBo+3Y%6F?yZZu2RLK%{+#6?i-4ZV*NfVT&5H=bSl|JHnsZ7 zz(U*DZreE(m2!42m`t-(29I1u`_Mb@cKMajoohj~JO}+O|K}E`=8z8nw#O7gE~GZ5 zTTdCEzQ`&@{rXmm;!E-%wJirsu@mL^TryhbS(FWd57HvrNf<4rD?uN~4^?95>HW8! z;2rthLO`B-ISG+Oj-Q{gTT}M*Vju>`t*clGVbfa$;Y z;UV^7-qNN^?&p(SXJZ;G8p)7fE!4mct)fl)G7j0p*u`aBRnIV|MEt=`NZ(IU4z-F; z@Gae+lrVF@g;Oy%^6cWBaNi4e-3t%n%j~&`i?Qe;U!K@VhoQ>=oOBASW1pQSz$6AM zg+>OGxU07tk))6qr%O08N0o-9+XjPHGBN1;^YYnwF7t*iwD9etZ1CQ2AExDEbM&`z zVgBO*Y}dC~FL9o6>zm8jfMn>-*0#?M`<2Mgbq#7>&(5a1GZjZR*>U;=tm8ehYrH=P zY~B9>P~87A!x39#VR87@Fc5sN6TUw{1_q4AY-}tkaj4+`+GGD~SFQqwlQMk+ik`yn z4T{m6(~JNI`s*KE(_fdB7mI&(BmXI17WVH5HpY#lf5lo3k(1@CQs)yuf0_qzqGoQUUz=r#jvbJ<`&QuT;wsR8>_r93`d|#;0!8Y`S7pxu=aCY_S zt%lTpMcx(yKPB?kzgoSq-KxfsLe|?gn|p6nBDD z)7h2BQq>mF{Rw%DXA?VpI1?hpkPSW&0oQTCI9B*)U0FN``3l8e00)?{B`L&7A{?X( zwo?gtac9dPtG{X86unyfC90VYoIu%j~H-fQT zq&P4#W0@tVLPU@!2NV6uSj7R@lewVG=F}ALP^4xEeB`7JyJ?k%!4d0txKsd#&7zLx zmg@HvKN)R?L-6xc|?3|=;Lu{}^#H~=NDMK-O zDuV$CLLSKVRg7r8AB+G(7_%##edOnKX$>BjIZKx9Gh&Sws{SdJQ-uEk+J82`6?N`q zSLi@MaNjP#|5d97hAfOm92=T$%1R?o0D@c!NOV**#EM)PkXaHByZB@1wlGv~ne=-< zXE0=KR4)zc+k`UK(hLTN$za4WzGc*>`Vy>__|K z`=*ZkZnobV+e@RjSK0Jk6BOhDIN9+Uc&Tuynj1J-wjAV4bK5IJTeGXv?Q_c`V_Q3` zqh%e?Gjn6VA zjLou4&C#sQvTy}&$0f>lUrO(HUnV$9IDHK^jM5lqHO2eHYpM4?op@oH1&mg^1TPhK z!h6H>;;_I%4uBQ{MrNJ1yC>oV2qEhrLQbalp8HF}DCk0J%UqohqUO+@g!V33$mh8a zj~J0~qh@$Y+{#4b>i>)jAwEG@1bQg~jNR=WjRP0SErVSN-lsa0p3}zgSLC)Pfo=MU zEfb93Z{~CT7qAV*9N@geCcsPm9NG}tnOi$gba5PHBjjMUW+ov*^_~|JBij^pY!U{R zl~0CJ<>vUb*(+Ny&9rcMFU!t2yD0ZKWY&~s!@e?R5%)SbxG~8KgMN|Ll36MO(&Xwz zP(J6ohW`v9&P+cQOtA*lNjo=98BsA^67@Yd$cEA(|20x7h)>m^^t-XZaxqgx3pZs+ z7z_7jEbTFKrrb+?AX+@{Lwi2Oq7CrM@u0G%t&VWVt))ZGZ`nb3;nCM<2WlSXA~LkL zP8PwNJO~^qf+_EAX{P+fZ0rmZiJtx@7THFcDfrLXxW`u!xMfw5g@C~KNupX)!?x0jxatdWy$AJ$;?Len;OiAL>swXx)8XymeNOc;K zM)WlM`Czas^&@@1cqYZ2ZwWjLgm_h^I<#Uu2cXB3g^{6@7L*(u#a%`-C@Gbzz} zZ{|7;LDJR=W>p)bW!1_6V7zUCYpMo=H@$hC{l4Z-^X6&=z=)E$au}4y!}N<%bmWo2 zT7;;9UmS^}bRcBIYi~j6ktsKr?ijBYb@D>gby&h&PrU+r9D)ub{5Bzt;T%x92=102 zx7D_P6i&}&E-f~~rILt_gn>Q^S#eip+a`#@2A4GG8h)#~qsiL=D1vBbJVQQNj+rJ& z&k$C5;KaratXNi-Rue9|p|TV4FpdlopP(T;Z^;eNuBJq!;%L&9W33IqNl(`Teb7>? zKf&V;&5@_|Q9S-i8aGK|inx6ErmsXx*4#Y5h(M=mGe%fz)C!^Q7}3)b&u+0JtcMiPm_()W^LkHzQ2;?u~I zld-NdeQJX2--tL1OLk+lH`Kx@XZC_uvvBqzO7u(X8 z7F{wPKPtnwOfHUeagwGn=J%`WY6 z+eRADzfi|w&sh55b0h*cys3GIM!cPKAoNTmsWO;dk*j%DJHB!p!!V+;0|if2Z0FBl zCUv~C-OM%svfR^t2rNNKjZ7A*Iy>Y{{qXIv*)`jZX%Hl$Pespz>f5Rjm|Ps|PnwZZ zA2L(kyGmIv)QlKl$sFh;V(;9)P|3PAv%I3^&b@UP? zEt<{>BrDzcs=Bkw2lHb9D`gR(< z_d@R&;%lL9ABo{X;DzKRat{^*H-*}8M(iZ3$% zRJHyZ&}e#!&%4nt1mR?4*k|M2AV9rSjs^BE#12iBjUDgC5~$y$N9}M@jWoWxjp*u? z;xayK?{&DN<}KhAZ)8?MT^l`Q@5nR3VWp2~ezGPB_F+uo$)2$ zBJ@X~mC)N2_og_$#QX?P)MY#2paK-p<_t_dKv2L@Za3`)9O)_z#!JzYb4CAM6ZcPC z1b(@@nTE_tHebLv+d{|JMi`z{eLdl01@#QTkC(4-QtBCUE|0EyG=v@Z;>KsCwxaa) zvZe6==$+6fACs*^`gub1o}%U`kojP3Bt`TyKg;-P1K0gU1}|)DCjw(yG?Ep!=O?EH zfUMQA*fV$-XNI`CBZugcKEn1|*ADq?u>ENwO@=nZCCpYeb}( zgyHnB@?%V!^!bFcZL`4rHB%6;)iBaY0A=K*r>e9MtElrI4~%0s9&6JXFGJ7`tuTPF zS?jAxpDgNY^CDiid!4I*0fww~05v&>4-YwS>DCp@!|Qt&88*Me*pR*VP3q?!&P2wt z-5X%}RPqkC-xvkd$n)Nyv2{=M_4+H>bp?%Gj%oT?fg3+RyPGv8{MbD55UUa$@Kb@- z0sff&(nNs^8LUC;fyWEkt$vu0=C@++btALY(|7kt_b)L~WpBpm%#rIw^h{1k8M%`{ zY6@y7cLZ7l_ z&tX9$jV|?pCI2&q^hZDbTe@~` za0~ub_|wW4KGSpxge$g6zBb#aBVi+g{tu%Gw$$Q0xqgV?zoBYIG*p-+ZHhn&E#bj| z&cx6mdvvs=N;{}&31t%RO%(zO@YCccRY)MRrr1?xI#0JzJWEaiz<H6-CnFqELZA4SZ-|5$roKjX=(3ikTv_R!DKYV8p@Wv~*f+G!^zG z*tPF1%G`xVl0TfY@(qm7lJNQ6y%Y|Wkv7&5P#8{zuWTs+6U$0ZTgtNB|M@m23=T|@ z4J@tqT56(61G2*ebQIP}+9I6=VlO{k!i7*a83~?5Zk5!jo20%OKGG|f$fOtMK4g}g z7p~h(DJ7`B2&@gN{ly!cVW^o2RsToH+Mzhs_4&ejcZ6o(XZPW!soN|C56S3DdD(7R zQWHaBASm!4by51JNo?RljFKKziQH8?9`xgK5=^xds=F6}Ugzev60xN*4(2jZVDOE< zMQAQ4ps>ln(0z#s7(ox4Zs5MAYS8cR=HUKGvM8VKw792ahVyL2ITY1>f(a`)IH)nQMvCn{5!|Gwoy7bj5W%^&~4c ze9}Kwlf?kR;Pk}sZBBw3)}_ebtC}ZeEZ8E%Tfy=>jLac=`$>5T7lmt=PEc-RM^tUr z0}xh*GNA5LKZlO^NreoE?~D$Eqf%ZczIxQSj($krGHDVCdql*o&NO}aZn4zIG}xO9 zw2HeIgZ?{@9eaQ>u8N(>m`A4kaurF!5oW zN1tl51jn&B8So*;Qyfq34BFP5mHRX(HlLWJ^c|O2pZgguHeWzpUh=;uQ8-mxf~$2(kwEY7_iiXMUSgg1`oWW=LCfauE06Lx(I!3sn>N5Wjtji? z^X!LN%oV&?I~jGQSrMkb8aW|}rb72j#t3GPvi&k^%y^v4@rOKVE;3`!=cKTBLkVCE0s8uu5Fw1NS*SM^6aXpbasxc2+CeNz zW>+lR@9yY0;VC$FL^I7*pE+xtm3tq=K`>aNW>V( zKF5bAWA#AMV9=FFK@_#BwCto1P!Vk7t(ofpx0WVCNaHSTpW9+N*8WCy(-{9q{yh+e zLIGC59unmhGErEe$=owIhBo~nDu>85j)L7Po!2CbKc2Q=hu!j}jNgE9(cjs=K+(I7 zUJsxGCFTqWL&gJRQezL+K4*+Ny#Ww{c0gJc*uJXl^^G!be^_LrE_uNY82}@6xUGdC zFw_6tkyL~#6d8ZV$BJ!D^)?LtDbU>%$ueoGbl3{hlMj#%hgkx`asU8(dp(Ms!VT&*)pDIiXaAE>Mji2-tN&!XI0Mk+bI)&0 zWGtSJmM(YiU(|K0GbNKLzpf$1$E#O#1QKR^6J%m=geMR>(ew>&^?bKjccw=$$1$y$ zZG0iHlY)vi@+_QsUOVUG9vc}oTk&hCB4*AW;TGWjxMoCh!Y?&s+}(%i9e4Kjd+KTn zN#h8FxI`7H^ToCWnzeoTI|P`tHO~9gmyOLpSZCleMoOV9;L%0w}mIvL^D&^cK%3sgAi(86gRVgJpuxrRSXc{bHu_qA+#!5gk7Iy~l|lG%69p9mCl`Gr3ndFL z7YQAW_Tj|gDEGNq*`HW0zndKRn;$S6AP2$jk?y|9uNlqI!uG~-YH~z1BeFOF%zGSDxLhcnkW@#^ ze=aSVmD+4wZRSA}L+)t}bxWxgY2{6*+o1k zv0&z6+?B6imOJ*&b$PFF4!v|W>hNagSVRU^$;M5)JEamB5+9H}6>O`cEgsQ{FkCoo zSxOXYInZOaqji1EC>$1h*f;+rDw>#6K1WRTL$W*UfkLcc4FONvotmzO%yM-d`$Laj z++^N7CZIC%jN_?K#yiBfH8WDrMDY(HmYd=47az0ud?I2h8q*CA;>28(qnN+TNY+i( z{xe(d3=KZ4sHlLbuRu#Fb?PX4;-i)M&p4Q#+?vgR>7BZiYuvS{T{e0Z_YbMfg^WA$e-o*CO44S9}rp*B4}t#LnxN$~z^ho@_V?yIk==auM@4SHuX zGAiHvfZ~Q>3E_Xnvnv&Wp96+6r?MSP2F5lnzSX0PzTfHr5luH0OeM7Ndg*L7+Mn5_fVhV6X&J`0wYn#MVo_b6Sj$`*5+sWa<1RvOcft+*4q9iFf)vnS<%J)bdPx*eei0YmL2#t z;G!&_f<80jAsZ*!jH^~}Fup#sKd>iP`hkNkMf>Gt4oSiY!ae3RUS`*a--4oZlf9xeTEoVE+FvDXCu0F#hXd6Q z#00;ByW_B%*k_2ErGqE!*nE>aD;jB~&r}>kL@FH-EiJ?kY%A>ts>M-cz12R^piH%;D0> z$6#XsANq!c%0WWhHdLLGXh_b|su480Sgyms8slYR0XOZ6$=bba!j~L>$4}#VFdbdmgxVAoz^zxHJP2)`OZWy=;yBK6dyw`?l}IP& z6N-|ZdDHx12OcGf*BV#HmKVf2tIUh!A7;h_5b+Ivx?%xNzkLg5ZqFbD7u_Ky2pt@e zE{zN74bG_X`rKv)wB`#7Q63q#uPV?iZy=X!Yd%Jj85p|R6wPT)neRF=Z3lYx{*X@r zuxiuxUYw;Wr(yYk=wDu1V(4Jd_KJZb%@zHOvOSxdogSeGbzbDG zE6}TA@pJW-2=X!Kv zx)u-`K9OZ}_-#-rGp61E4h8m@{a9cS$$@G?;w4RU^F7!}5U?1a@Ih|;t;q@2pkmz4 z(`r^B6z)>@rrfl0eJ%t6%vufhCmiCm{$#HI+yGNpPSR9U)53v@kQb~?Ud%7$Oa}socsU4GAYEC% z3N%>ISJ2SWRDx7G8@#F**xLU`EGdvu1{h6rieCyO7Jyk0HyI5Lt)5hV8Ci@e4*wejbnldfWfr}aS|rfh+MT`cF=;M6)sF{*M-P4sUZYs zONgJHrEWj)w5h^}MOz&RzKHQL(MU0ng5(9z9JYBj2JW1D7ms4udo7^1>nWHWp{Vm`AXXJ`MXh!!->%u?fU{mM^F_4@uPXp&jk~|1tErqmm5c=RylqZcqtpUXFg87wY6I2}%GlAX*5Z znqYV5@dfc?-~@P{8im6JWB-&*5KwnjUQlJdTrI_;=?1IBoLJ*a(~I_|!CT5_95@N= zcjnoQ8JzC8;2ULVb`@2;5IsJaj>I!NN>c$(PZ)(subr6@+&F3!_VS#-Fwhn(%36p- z?H0*>-mPhcoUrOj`|1@si=~xc`?Uthl2XwMv0?|6Kt-8ov-na}k?UK?@FQt1>g%J& zx_8!ow>VxBFuJgEmc`U~gF1-hBmYTNxQ&-cl@7c%6F+qh z0^2$IcG$pMHIW`vLa2n_ljsAu>w50k7UsT-oPLBxi~g+QhmED*Q>&&b>B2$ZF^<+~ z@hKO^bZ-gH^sUaw6c=+h^`bXM&Q?R@M;6P?NQCt>+$erE<{8RuBrlD)&b%8f@!87} z?37N)qQf}ou1{~fePe@;3_=s`m9n0Nn0tdP?0b+?6J6O%L7C6^Ad>~q)9ZMf1$Cyg+cSEP49fvi6= z3{svR1gonHohpMr$;tOColu>W`nl^SNIWqB@5u;o zF^D&BR3Dz(auIG~OJjrlhDUaIRIO;Ji#k}49Xx=3Hbt(x(aG~&6tHGGLT(GcqLz<_ z7LQ?I40UDZ!$-+XVR{WuT)Hx_9OY~oJPL6JPj6)m?^s|+HNRk}PiX58q{K|oc-z=+owYpw6H>|?ohf!KB#BNBc@-?MZFv=T`YJPa{QRE%Ep=fR0 zpo~?iJa1Jdjco!%r_5b`$WHWcz@X1j!K92JHVV;WQkFmL_)FJy&}aSfT?yxJn(c3< z5$*WShusqCRpO#1_2tsg8TSpbYWCo0nnSmyu79=2!3UsdoKZ3y?EAAvJ_`5LA zR$3&g}Zru=7Ha{U;MvkKSM)fV>U*%gMa6? z>L#k@xu1xDsLGKw6e-eL%6Cwp2J5c%k*yp{veB+YEo z$s!n$Xi#sysitfrUU#mhbz2vBF0ybDuN;^svcn;w7%-KApp~^n3pf|1+UMIRO{L2n{&-`~p4pICFmq6p?}o zkWna8@3EMjB+49**P)olg%Ep9|wL3cV9LG3Ugvp1N=#d%*@9{9I2H4m$U67xm zO2_(wAip~ib~JhN%202e&gH)%zng5Le6A~g+KI+%F#nIQuZ)UwS=z;2gS)%C1()Cu z2u^T!2_6{S-3GS+2?Pl45Zv9}-QDF5*=O&wzk9!R`NLZ8ny%@$tGcGU>Zy8=h8Sf5 zUvujv6Q5Jr@k1Kz`ed}70UB&r`BECdczhvB*S+;Mnr|%R9kjbw?3;<$rQ&)|HrWqT zG#NCHqf~Qh(-9`9!E=R1iQCb`Lk5r=Fmu>f0v7`R)zup%l7HruQY#1rqV_im#F&GR z%ZQ8b519=zFa;AD|L?A)AO9y9q!|fL8xrsa1~IKGS@Q*fLD>I>rW=F$mm0HkPk&mr zdgCOV4zH~ywYI1C7p4D^k}vafI?pb`AK`P!kt9}ape4KI_pO-J`RWMe8@4H$bEyS6 z=m?he8XO@%^Y|g|^e^XPXoPpXRaL8et9%I@=B1M!^DC^imVsLOx1NRoqc7!S3n`X2 zki(T4$;lenjKg~6CkkB3twQz+LqmQ^zmdNY^bo_lyLn$G1uoleQs#~;5=46d4X9m- z>PW`=jHkN&Cf#^(H#C#Ck2o@TYfYgZ*&c*}t)=_AlaLBZg5_SE(=SCY{rY7g3V|oO zB75%!ew%M1MSWj`?KYV8&3rmkHPLYoX*Do{KRst^$!ptZ=cv8hMO9+KW2 zG$IFELE?OXuEeK+DI$4=&Q2lJS(an!^sSy)rWLwrFuWO=MZ1;9J$Cc15#a=8Xbs-c z3*2n`3QH@Oy2H&f5p5@4dP?#FK}teen(sSZQA7swKBxW@FsuvSwP-Kq=LXDCVXzu3 zCB9dxo7yK)lt?rhz@4vCfl!*virs{H(b1$Fbf-^=d)4)kh8kkD3AOh#*eTLE*`wOYiTX57Kq#dJ1DR07vi zm2wQ<)mv8%Y3`YjJbJPxq)%~$bX|o)q&t7 z5bQu-YXscd0~952f;Yw|VhFj)V9>BP#-~5{6JtYDLq5YlXw(0T>?z>@@*R*M2L-im zb^(zL{LcoFliT~I1KJ?tf1{<0jabb%S-F-!Er(BnHi(s|>pXOkR~0#~2{d#<_44#| z-i)MZ5VnSA1wsQisk6$F~FWdZVlVyfm@AsOGVY}QJt|50o*p1%dUdvJMA(*y9@9D3pH z6u*2nQIa_pyThL2Y7@%OGj-xcy}LTUzB)QgD%xC1wX@gvgyM$ry7sBm;!BlAw9qTd z;4FAPKkmGRMZ2WowfB7$cW;Gvg&w;CxzQtZs`BLUzJ)9_*bil)L}i_i{04ITq2GK} z)8__?G9U`Zarz>8k#zjc`T+%3?v(d1?>~Rq64K>Gse?EfWN$6=*J0*xmoDk+W=wA- zXTX%WBfA#wVBCnvlU8Z>hdZa;{URMseo2*CJ7HfTjb;=PK3+**);@VqVgTREt`r+jii|{r#ZwxhVE3%aVL<>F0^V78p{8*xzR4qlnqFIDq!HCb_pXN zI7w2t!aS=qJn80`uJ-qx|JtP>TF;t5XW0>$_#=Iu&ay}Kq5?m@XVF1fo=K?M#%g}E zB|IKGI#sm3#DAVdZdBbYb~j7Bp-{1*($_+3Z8a_gKuI$kX4}^x&gTTby&&pZs6a%s z5!Cbk`J$xg4DrqMN&m}!mmD@V`PM`D{2$u~`FT?ycs2O{#QU9@LvRD1@R2d=o@x<4 zg5$q!fM=5%Mhnnb>3_zWa&Y}+|9}5Hyw&5q3v;*)qhnzj8I4dXlAio2J8B4I6NJGs zcQEk(=e9}}YX-gH@JdR80}~A6C2!gl(as2tM<^2Pqie+KJnXk)24;y(y7FzfjWq~0 zHy$q(z}>pS!=h(0>tC>Y3pwxlC`3{XTj^)Uc?7#220Rq4_P%}fe9U~cJ_4RMArb>) z6(C^%-oJCfO<+w9!7PbM)n!KLCglEV2kkdM3hA;t&tZOK@b8;wqX?T`O4f$|)Ye2s z7x@>3o}Qi?R-}o17);2Z5ZSkyA4e%OJu^KkM-VUzksLQuq*%>h1fu9~KFLpu2B`nK zI?myN77d@2mK_PS?Kl2D2bpjh8kzywVE-z6{F~E@)bUF+JaeBklPvNmWB*yd{3vZ0 zDzYO7=cVKH8>ea+FjoSc5TG-JghYrGduJlSPS8^eUK|JQ#Or7CVfXAQFC)<%^3PiC zqOtS@nz+A@#fI6S5ttFmY`K+uCFJdd)AG8B^h)lNvQk2s6EB%2wI;_S_3=$tEFux1 zWQ-m1!-jfWCq0xd3=owd1Qy@c)6${ld?ij-w!`-Q2_!jnt!%qM_MCsm`sC|ty7F*P z$}vZ#!W6c}35UhnBKW+vveMii0xzna!j9^52sT#ocDB?Mn+%9V9;m~!kOO5pnbI-2 z!6BI-zIh;P5-OfVN>#+QDn^7Xdz+R32Orx9mY<|VHYF%iRrLLQlAd&_mX-zG4s~a3 zkT5%`FkVQ4VGS~=MIKapo+DZ36#<5^#Gikx0$o?oNCD8c|JF?hy?LyaS_&50bQoP5 z*r25P5CpPbtPxg9uW0z?U&U5z$advC(8bqgZK(t)WAEUc?(&R4hW+24inkg87hEjy zVvy!Y@c!fTO+XZV#-?n`KreYr4a^W0drgtp>WW{&0Pd&-gC(X%k>uVJMu(^$Y`I2} zP@IhZe%NS+5wz&R()#0tfuv|(<22DjEu|;9Q`VR*3uVcF;r}eWG1OM2Ek%~GG_qk5 zblW*Oflh9VOyxXQP&_d-8@c!P8Ugva@_0u8f6jI{G_X1`jc1lqvq$t?3U%k>?-Kf z1=9(QRztDZ+gygJgW{S-_T%6A!VifQd?>kG*7>@QQ+;Es_?8am60~A$Yd`_|pZW#Q zOeJL!p}W}PrB7)eqNPn3LiG>Q%!`WScti@C{Q&ga$SQR9<+2{)p9TnuRaRJ&E`on1 z@`x2Q<0oB66({n@7Br93Z+|XOS;0-Z=qXNgDh23ibV;NLfbH^z`#Pu|2 zg$G=kHajI#3zW~{C3Ctnt2q&n_E=Kr-F_)eGEEh2U4T`=7V?(po3254O4b_^&~~u9 zM~)POIYVAgN!NVJ)>2R5GwPyoWDzcE@MLAC4cgMe@eGxFZuPs=$5{>446$V#l*j?0 zIzlRsh*Qz1KNCUVpLRC^Y&#PGF~%mX{(#dX7N=Dh>(>rZvlE7LIrLuITW)ut_e)(Q<{{v-J06&wXZVM z!e%PR9P`ReG;Orf{lQ>|bJz6j-nflf*2EipzXYCf+kx&Tgj<9N8okuIX-bZ`KYEm) zqnG?xwyh-(B#~!U1F{Y{v24h#0~Ykl^&lS3TJBuGGTB0020h=!^eXaHEVYueJ9m`` z=v`KpA8ubM4c=N9ehyz-NB3kQ^ticl0k{3CBqEMn9wXdlv57WR!62l6msWQKr&jo= zX&|i86Y+?P9Peq1!^cv8hMr6neG?oB$AXAzF3YHiY6$kTH~v&@Q#0Ez4pi~%&}f1b zar<>1p+d{(DWUVxzKW3`_DYdlyehQ78a(26?%eR3?Xq2iAq7S z`D*4dijJ<^Fc(WcpB2-=A3Hzny>L}dO9!``@s(PRo>6yk6(=xI<(TeN)i;t7zjF3f z26iqii(^O(8&{Z*q33RetY8S@ z?}avw9kl13Z$rzay==%3oAlH@v{qo26$d6{8j`hHE;TJ;D*cT8ix3Cdk+}}g4l5m6 z%3Z?FD>04qWBNQj7KqVNWb}*W5{LCa&(#nd8hSX$iqNd0D{D|lbpq5Q6&qR8!sfre zo~0ai#<9AYDKo>iB7gnO$l8^>mNi*Tvdk(p^54<&|dx_HOO9qP!YTl~+L`!CBYkZW~b4;gMjJ98Q zXudrS!QElpml4Npl<$Dnj*ogr9-8l;XutUDnTt?5v8a*89VUk(eUIxxdVo4#uen;U z8QIW&_M50QLcVym$C0SAlSY%2M_OT!3$w5w^!QHD{PjW{c|bgBKwM!!e0V?{1FLSF z_GeVMBoezsq^x8lyM+9J#89Qg(166dYid05umK6~{s*e`#PB}AJ(bLWM7&9uW@4D8 zNf;%C-Xau|W^7B{AdhcI^tW#Z-2x1ajgNsk z@`P%*y{NYWoN5?t)MW_J3T{m}NYV^meBbC`w3+dzjE>qy)~c(TzL+IzV_+_n-tn(J7<~%1!>XKV|b#U0oy#Hd)>y?%C3e-E5o(dyMRxc1t)vx z*AG8^C;O^vSTP?_^+&gR;uDQPvhEYn@*tR-JVv@1@CdaUP16W2PACM;5(=N`i_>Y6 z$B^xpC^$i%rmUauKE>rnAEP-(zG%$S(Te*6XjlOQ(PKZnY=Ole5s3hWc=$6Cn=$@J z^32|q(O%M$q%0TJ&T!X$*ex_9leHBq<|0v3Iub2)^op+2RExw6aWpRzP{1L3ZLW;N zHk5f}Eq*b9SascL)2IS)V4S{GI3KFTe~Z|e122}6N0A0K!3($dT*vj1amO0em*WML z1Pd^?hB+s&kMVs~zIv>((W}+J=R8#jV{mfMLC)^XUXK&UIosPg+~s<(*~;{L zd6CeFhe*4%`p)4*4BXr_wO<$by}v`qGUF6g^}Q_pHe??enK1-FmmkAG7c@wycO%Ne zO!lQKgqh3PBF@2mMdNj(47*mLq%Nhl$T)_B9neU2v4Dp%%lyUJ4e4Z?+L?OOHvFa8 z>!hV)1};qavD@ycXL0xI)8WX7(`g-1{eIA>V}W|muPw!mIR?L7 zP5ZhiHJ%Fr%yDMmfF>pk!j(trjV?}3)#8SRvH zw@C>x*r{&x%5Uy^*Rj?{$YwLd3-IgUlg`Q*_y zBAXHkGh?c-_prPWcjtZNcvAPMj9&E!))%MuDM*Bx_acesfEmM81rBa2;uz%79D?}_ zf!WAImq*5vhGY=y1%76A{zY1}y7jJcAi)KSg%#=)AR}3x5l@N zDya1VaE=kY(NaXKuKcbWrdwHaaLK1HTBY%k?699dxKNnx!GH;wNSPxb*2enbJfGrt zmUZ0OnL=U*?FIS22iLbYA^v5~eWReen$JJi4ns~(W3E56^>17;C5AWw%!4a8+@azA z9F(2RRt_BK&2Z>|Ai`#e;1T&4%f0*Dri9qVBb}oMO1-YN&tKt3g#xB!>Y~~F%R_>g z?tY}D{c3$MH2b|Q^q$|bk+c1)Nysy=^Ma=KhZLQYXf@}<)w)BqS*M>hBuVem7N)g4 z?g`wlk9aeAk>N2iXZ9=n7tyt195zskj_%o#U-;yL&a9^y0S>!zF;J z*BchwTL!U!pdxh{9Y8`ipdVNXSTTU84p^}paS@!5wY=5d*aXa0e zlJEV*edHH#rDmK7GZNE9(p8Ax`8zBWCRoXze(FDI5q=o&WoyP0Ukb!6UxCUzgm@ni z(zJRjELwGL2q>QSb;o!jZwp{qk#Ufh51?9>ICd2wUov-6DKA8AEJoO3#p0yQrK7hd zEq(DHlIe0JwT#o9*!{SL9NLQOg!5v7ZXlI#>2@v|Lyfl%F0-Zc`q8wdsZCU^$Cuj^jAcd0#@mPn`T181QP70=#>RS=)8f+C|sEp zH_!1-GF|p8Di({2WIWMfq6ylA2tMQ8m0yG&Je!5LaQ{{OThko5q2?C==)NiPH<6Ty zAs;7)(LXo*|6VvjB+~Hxw6Y2=%nGthuCVME8{*S+ zcJz#-P`Syzj9jcLV`>h6wHX3GobZ$VLAi^$PqjmBTDX(c#(5#)UFz}RpV?22<H)Rr%OUK1i zRnJ?6)JbguHjxj2a3-Q9{BL^@2SMZ;(wbscL=me9j(4i;mlMu$SXCkv@R)O!(tf2e z4CO&Neobpwmn`kM`c0)No|XWn=kXnsodaAg}FovQj|eA zQBr1)M_L;>EwW$z_(3NgCl+eriy{iU!oM^1(cxt9uo%*){eF)sFqL{ zp0UE8@Y#R)3gT(0y)n_(Uzhc>3}2B4U1T63q)KYKCKx@A9Nsu#Cz1;iceiOhW_p`H zT7G?XNj@zb6G@>u6vZ66%)5W-@GV_)_bEd?161%E4008Jg4rg<>}ISSz&J7}vcH1a zA8nwC3D1!b!uy$q>G~P_WL$;@hZGq5S?Fg58R?C1NB(fm0mDcTxCq`P+JN)YX8liz zh9J8DRzQOPOCrvjL^?&qVL1gBS;jsGkj&{falmt4ctY4I@Zt3?;}Bp&AUxxrnEMOG za9}aW)P_Ol^uMNQYQoOR4s35n{wH4f7IQ>-i#fu-#T@^NHyR`%5{eR<8X2q^_;%4y z#Lu(Vg1ndP8-M-!i>MGY5)$%FiXxdF()=12`_<;VfK+P~PB+9iN5V}E6HNCNF6l@_ z68O;?5gQ=FfqxTlcEWQ_y3qOvXc3&O;rHr&y?zY13G(0ewRz-)l=KSCM1IsFy1Ef= z!mK74s8cGc1`+ISw9-+Z9*dMLX5X4y($h50?H!^mxZ16(7O|+CWi-_+m{mL}lzk5o zikOF3en|&^H|Hu+ixLat=_mRx)C>U1j2?Aq6q)sQ?%&3RL)(Ek`Ck{(KQ}i=94wkP zILY@URa09nd%n zlxBNtYj9Prn7tO9(W%#d8v?T~`J z5;7B_wET#o0;r2y#hBb%V>d%wp+ELUvu5P?7DVo|K?8+9`@z`VMQv!5p$f5~w|9Ya zY^+jhR869?(G`?JV+nI5a;z6}`)TZWOGi+&}_V&%`G{5Cf7QtY3U8aHnOj zJgA2SDAR^0O{?a2jfs;_4cwu`&b1cftphKSL8k41oq%%scdVGa4VY_yN)E^okcY;% zqo*pu^0Z9lD`Ksh&s~QJhhu_-;UEje8}uNXfcDr&DimQOfRUh=?80MYMt5BYHIL)) z^>{}oX(aK!EC0EVdUfX(s;3uE2PT*v2aV)k8~e>U|2Eim(Rw@h{k>yMd0E+wxHz^| z2W5fRP-tj?>YCQ@+Q70v>_7xNZIgI;7fKd(nVhDtL9gqu(tx&?1h=$k2anWW+li^vneFDu zm&{N0A;FG_D{P^)hO2(pbPmwURT;5!U)jT;Rkf1T^fYqUa?AQtah|V+gdd5Z_s7>u zir)_bw#Cj&6uzlp$&(wXAB{Og$tcvZMF(RD za9~s|y_{ZU-vOEG1^gM2rur%im=Pg~2w4le!9|Y@N$z;mN#B_|qf7YXUEVtk#Z!L< zgpTFMKpS2X?*~s%<~Oj_PSM=GS5C*OFKIUww{!s?ol^Vh@<~?3?CZ|dzVl0sRq1_B z_;V&Fr$j1UKiwMLvK2ZPcnu|do{vowWzT_Fbd+L%4%5CveY-OIvWY+u>`+=3X11W< zZ)Y5*xo+u7$3Ti%&s`lo95qZc;A+xWzz-E@2_@uC5`AXz1ogU{02QZ-0Kq5s9o`Qr z)B|Z$1M<2h?~LPT_F($goUf(pJZ$<~Eo$Km`cBJ`zfU|TBHY}gz3)w83exPBNo2ku z>ay^6o41BC-=fSnQF}3#>9gDR2Oq}L^84Ai-T>n72dIlW|V zJH@<*GHzuM&oMEvALVzhMVnWt?UP2QF4%0Ci*lkl>2DVjDW^H~X~2jBD?f{45Z4PX zcDPt8Jn$FRm=;zQuKQ5RH?WAV0ANH&C@fql>tc&A&Dvs~7CTF)V;t)x#STxLdB{xZ z6To*4Wqb0m$e{*Hw;Do^&e`(+A-p+BIEM$x3~Bzc zWwkWVVdcPBovTkQ1`Jst4Be&Cfrqpia&L4%zJK5bKH?}XB-lA6#(-(ldF~N1^dI9zzEa*igGE!Lc&~WR7U9xp5a||TNX00 z2nxkFg4hYot2Gz%qp?}}BayVo2q-LP`V{gG(`5wmAK%c#waxm6Du`n&y2gH#7{ z6g&J9(L$j4cayt7CIDs6#jG@6EA#0bT;2~sohq%Jh4%#3p+8lc3BE53SDRBN79Px z0rMtn@MIq!io-c++*%Do5#!Ul=JEoWoz6Ge7#|nkILg*bqUBmmwf*@PF#_xL#c(jA z_Z_UDCwnfK>_)O7k;Qb&D`RjUwHw8wb%mjys12p_1(ZXFc>#JK(|39Oc*ri4q~?dG zBT?bczhPgY;Yb8;8R}L;*DN82<~-P@9O z>8pR02t`aD+A-$7eBalSP9nX&mBzZE8i|D)8kIl`*M&&-ppZVejG^0=R4!t2fzv-+ z!Hwi7dRt9t;}4icM%xHj=Tt#_kU;e%lSZA9`4!aG3hI>TDOc1lBa2hYu4!Y1{)~px zMsiK)Tw-T_j&;^K!GAOJE7by(?Plv^!B@Rkrn{J#S1{tNpB~1<7I9>{0Hb(Sjae(!K8p0I(=rMrV9sHpBbsL7dF?>NPkH#2- zM|d`^@;2laX*g>)ti-r^#HFo8upJHI*!|nt_swC?YPNlD&(o@>s{7nagx64rw#%{P zSLj>Y-T?{--EiZJh;0TVC3LyCI7abNy&=Ol5nJnQ3XwBpI@X*}%R^;JM06A99aGhm zB;dKtgG~6x>LqG4-3*{Z6{k%-HdRT!@fe&@DuQkTd#3L2kayxj}NY%Em@7#gxE!dcB)AKx@CFAlJLNviqFen%%t=q(!2grmq{#dE^$+(c^ zlXgXnNr(;`&b^J%lN!=o30Ds>jz*fK4w?hGGPEjSmGS`cIUF~O_zXl=mUP-8VF#mY zBDozuQ4CFd8uoydT?y=xNq$T0^!_&5c>}#Kxvf=TP&4@gJbGF4AH%++h^Z&JU!Wqv ztsQIQ_k>J-4}cztBXzV2XvW?(nh7=YwEB{A!b4qW;s_T@6fkyR2=OH=_~w@&lGO&j zGVH2%GqeDJy~FS0bqp1b5wn~U0~udvyCcphM_P*eAhxYlQ!&^u48HXUed@SS3z}BP(fzFU`}?DMG#yhm z`8(MNsBgmIjfyB^yx+Br<#hHJkzEYdnM%OCT~rjc0b5Hy?oo`SuQQ+7zkLw>@gb~` zE;X`xdT4!&M(sEI*)ngfVG+#@-_F>b_iTsA7!BD@b!naUhX!X++axEKQh`}b*!+g7 zJpYMYHVp_P&E1{=rB6%|3eH5VjH$2RAZBXN7#^TagTGj+wFx|-$bJ?`TDABA4~1Td zZb5Fd$O#Z_@Z@6A%#B@rTut~*oE=hwbcTY-C{zUI{m$qYCGBO^6+2aP=V{KE3pHkg zuemlf=Ck2sAuaa!Pk`f?sdEPJx7F|pEa9&N8D@uNyq>D^%*4lC4aVb)h)WN;cvj1d zRSSp2DX>-s;D96MUH)_=tZ0fsOGxR zSQ7^@{opWUVt{rjSx)^LMDv3~beOIR%Ee|li((-6Hv+t}^MDV8%aNb&oK${kQFb3B z?SpE;hHD<3tVHCYDd1XZ&CU<1N{@5)aPR{-!f;lAPU$vXBHx~5wv>CwYCBsu1M9aC z1gJ)lGNT#pw5I+u?6%$v*n>HDlJG1q{j~+ z(%n>}+*I6^W}aqf*5*s4>kh)5vkGT*xiF-5=WaR{Va81Y)XLr$C-M`+xV$S}jL^n# z?e%4oi@qC6PpdWmBDKqm9nwzFdwnr|;Yb=hONp|*dC%}0JA$771wSNe{sEb7>eg*z zWM0JdexAAm;@6KwaLi|$oY0r|heLq?(5t!atvk3ppXbb^Hhe)8A4js9#wB@eG|aK9 z8T?utc}6uM3F zm<}shLy4uaYVSFy>}jikTf84RHv1`TC9Sw9R{)Gj26)QW$Z#Q@d+6xV9UGD|oiG`h zTGsn9be@Yz#o7;-kcKO_TW7LYZw~(hp_-Bs^fJ>ll(9pg;Jq3sztXY^gLm4T3jaXa zrO4{R`$X5Z#yb(1CMz2i;gSx(Kb|Np1FTm*Oj_(~8{29;KxhTQhft&N5O(^o(i83tI zQKw_N{GQ)wGV5Fpu{#fnFKZ{511p^GDKZ4<&TeUaEG%REDg;sbGtOQxIkRtl#os?7$XNlz6DK%_XTE^N&8@M0pMu!hl7nWIcCHV z5C;1^_a^=Ev~+t3Xib0?MGP>t0BUKsWxNhXwp_{pm5w@3d$2$}n6_?HPjKIi%{>Sa z!IMCEL48$luHlljshMb zPe5Ly-m5AW!e-c5sJ_3J?9NY@*=Bs9!Sb8H%2(TCnd^#^v=#t%%LDewvKW#7D7_Y$ zLKENeE4J}VfHD3fN(>T&H#@Gu`k*6pBFC2jfWPZ%Ns~_7wLq9Va&u5oxO0{&X@eyIVfrTZ=R%*TwwjH^aqs)10(uQ5{r4-5fn;v9 zkH0%V`!9bx`EmmASv!z&tjnvv)y5mY6EOPqUQaMkcxIt4PWWra#+iOf+M`3=#)F!h zRA;6trA0N=pAuxlM#G^+xx~#QK|nS|mFjN`>JTH7jpi*`pKcYmHg6&|Rk(HmHf|LqY#b#h)44H=IY5XfQJpU^y~Q$ySmaz^Rn|*;+VpgES;#|yF@2CoGU{| zNQR%_^DY74Ugo06rnS4wJ1_xKwOmE*ToAZ}50G zLS!wpWYM-_g){{PG^U4L4i-jFD>Q|$RE3E3D(sRSb6Z1+)zz=hmnPv(fnl%ep}D5> zYau!rv9;JZG1mN|^#V_btt_H@z14Ce_V7kuQOb}Z+&}#k$eNa(?ET^Rs>#vkZhGS5 z{ym1P1AsmpS1wq;5bb--#xJMPnqq93{t$_C{sRrQ>9lRqO6Vx$?D<#CT7TWwFTKCn zg9ID6Jrhc6tHGd#m&t3JRBzM z=ivVCKGBPfuoyLk&Z%q@=r^;$t|_?N(K?6PTWzec5!yJ?uBQwH_4TnIp7|{BF|6&I z?J_KV&o%2<<(5Z&$YJSo2+B4_wqBN$MQ?GuQy=uR(HQh9YduXe$@k2KAEQ~U+FZFI z`}Y6>yXTq@7oUG1%%+LUsh~n0-$^M$5F;ikF(8X<54rGH2`FGB=s}y$mvMg^8!63d zyz~7vu`q}UBUAQaVSvY(aJ!^Kdldu2<4d#@uEnA{V!!fF(uT*fMG!LfnqT~;PLYa) zs#M(k?q-u(_Xio${TQ-L?;fEc{B#zPK5Q~ztr0bm2sG{BVEF!@`>OaVJ>6ViR$kJh zzXj0;eeG-wM9|k0rTJ1uy5KY3S~ZB)dHm5?UhYhFt9JaQ*<&_~zIvg7Cf_6tHfGj- z7$eAa$z-=Re|7b_B7XgQ*i7VhBa)kux6Bb9C(a{dMU%}zTijBNVIw@-oSyAy{@E%3 z0WDx`s*`kl%Esx~5?y2aMZMNFr^&AMYqhUJVbzR7-S<@yed4)qgW0H#k5Ur$UNeNl zVAc{ogC4l27$%|243Vs3dN%J8ShNtt%6+Pij+TBp9nW=O73F8(F_GZ&)4Q8(RXuR` zzoSU|5~-N5u)_6W(#e={!CsSX7YLjJ{N@Fl1}$7iGv~!**2)rtd+Ylp<2q)M?^#dr zNOe^`OX22&SQ!^FX;Ia7v$m*pyEkyxzZI3EoSKMX7KXgUCd>>gj^)FLv*pFt$CI%{gLWPX#9--_7MAPk- zWv%=92)yv=2)K5vSwl4$QDV=j`KcG`&w}C@^HPb?qIuh)=Qm%xbe{=7M@ANh_}y$> zny{0XGw=*Q(=OQW@@L*QeIZe5{ZZK&d$hfjQwfuKySfii9mPQOO)2-xwvVv4B3#sD zep5lSCNrHmqy)(z&~jxz{hNHLdY*MMTw^Kzi9xxHoquz_vZE@U_H@JdOB}ZRNtlvDJ5ewYy0qXjCgIji2P%Z@N{?HM7h*|J_N~ax_@A z-%?eY#nC0gAeb#z*yGW!bPNzV(y9^Jy@yoAkiK8Uw2OO0zlkMHwL|bm+-p1JDuv56 z?os`rm6o$(fbC8u5rQ7^1yIJ>A)@2Xm@H59N%V^&h_LVNF7pGB$9RgR_q%>Yx1~t(A7+uOs!u)zQ zkNN`*NKZSwy3#XI#WZ?TrIxfVPBU7olx65YsU@-x_vgF{$6TE)0V|EI!MfLMV-F@5 z{aIcQvEJ~oCvHj0U!=IgDAI6btq%$&FbhfY4=6C5IUgA=upFB<&q4`2>eaavjlu_a zCGTh^tsIVd$D0+Lf}h!<7w20lDKfho-M;ln>7=U6brmt9ISDn8&2Z>@ZA&jUvA*}W z98Gb4B6m4$);2yc1mrxw(8oy7>-T%^zB1OGU5*z_l%lW328m+u7KytK%f)LdwFOU*OZxs1aa&GG3quJ&)akgF{qxd8 z?>ix%y*T>9AwZH8pZ!puQrQbS(qdMjGH_#x@?0p8@r^wNjt-kwxTf};08-IW5V8u5i~YcuINzz0oxFpY(b-*{vn zU3_F!g~SBMgvo1qS}aCI2iZIlk6O8@R)VuX&sWmZ%dwZ*vDIH7mx0{`j3 zj=JG+EXQE`E`ANi8Zjza4zbI^bFU#TwESu_kF z8Ywt3F#HsburARKl^UGjO`6?GhlV{!+U`HnI7~U&*nzo~uz#gK6WSn&fxhd=Q14_0 zeue(Q^*cLF4=N29;l2Rl=HW4c@bBRfNwGm1zC{djoqjZZl33Htv6yrN5Cu{Di-O=LBU>N!zwPmOw~lj z&F%c%<|2ozxyGj<7X3Zl<09vKZoXmyt87>GdWc#l;Ar92yh(uw2f~$ZdOXFUjHAky zle?sttkjVOFHLzcCHJqjrAquuXfcY#bS?JvuFp35e1`$=7JupVoZVOVF!*G^;q+H2em2$Ytlrq%J&@uRlF8 zQgRAQ5XBLzw_7-Cd@Ybgd98XRIP?HDcW1*t0U%hqk}7$TKrULX=k(_O*(z*9Y2eMw z<84>cI;n8Lp!3D-8Eh_v2YLUpe*eKpw>;v!DM z1EUvel@G2>#-Ny|U1<_sDbYOu6c2o<)$q6LnS281YD{A8JwLQ@2LZ*Owh_kAvj$L`D?U5N$3=d^?2&_ zH^a>X-u&Ge?Vt&5H{znz6GpQc^R^zOl0T0Ya?E^^)O$)uAPHQI-(C<))_TxMepfvL zoAt1_qsNc!KVQ;mo}zE84tmxur6l#~my>m=tmUy})Be!d?+h&fi4DL)6Z9(d1vM*S zI~sk~Dc7mx=!8*kb5YTL6fN9ucHQMSdv>4Oll}l&GBvu=mLx+T?^ENMMT5;9+PC>7 zO)S*M6;@qDD-1ormwybr{%h>L^5wh?MU@aDcWtD^Uqiix!lq`YgnCP|;RrrRk%E?{ zI1w--G`9NHZn~>vG&sur?d3r7SYGIHfOY>CKmF9rJvn&^i5|L4L3FE-%Lu%vec(^?u%YigqAQgcl?`Dxn!-0fHK|( zfjlYKs)okxtZx$s4VJ?J$UJ*#+^`;gZ|@lte_KeAr#){~R^ zYp{ZV*a2#`U|&f#Ji#i;e;&3hf3$f3cqmW(Hdb z{@6X}8J%tZ3)ZfoSqlV#7YrHbyAMElz1z5lRGw(oL$$g3*w8nHscJV>rA}qXedCIj%IUDkSB)SR~y*3^bn0X7?xMRfr^|_{*c+c$D z_f@T6+&8xo2gr7%T(qUnt>IIsbPsV_`fvoZn{N`4Wvv1FVh4-wnAr{^48+?#?Ers1 zSeY?3DsatF)r!jv;rM2`Fawp7b5Xw<< zY@LsjXkE?qaY+@y<$elMwi2UtAxjKK8_*?7^bn)HlvEzz6Qcz(pF-dO2Q}fN0b~+h zNMsAfaO1?{p*Og%{Wnkl7qmA_lwWwfj^|3eludoRSi z90M^0w{zG9^|Ku1&$+NHSl$YH*ZqTXeR4XU5j^Kd!+^FX92T*d@MFNH+MG=Kcgvro zZ~$UggOvWQ^wadz*kL0_bGKDm4$-GzI}M^y+IW#gs#dcy3%Q+z)9sq-qSXBYVPm?z zh3ECNEtbgfD#Jv=*+Si91XutCk6Z^9F-@P_RztJn213B>=Q||@7VE~TFJ=2&1ep8`*AM?{HtMedZdQhQ#5dC- z(}|jt4!(|1&)x^+G5qVl>WQtSk18Xtp!ZIAm+L6XP*R6nI1=I%d^gRST$1eTurK@K z01ICILc&BlBRW8W{->Rrym~(gRbjB63gL)*h@OvE8R8J)Xd(1|VVaZ+wh`*mNdVZ) z;D)=Ls*mEzZd6r8rD?&&At^1eN0Z@7CB9VcMR)Jf-HEH{pqV#Gn3y_JdGFzVF*rp$ z24DS9+wM||{?#@BE3rj~L43^wYIP8I0wYL1WvEh#PlV}F^}~|eXBOR2(5NEkd>or2 zC91`4xae+)ZJVy*oLfGB?5WWr!gsl4W z_XiJW#%s*M&h|ezi{47y2hF*Dzv1Q*|2dHwnVNF&{5g@n^_~Lpdi<$zR|K-8!(su^ z2#`MjElJ@w3FbkAF{t3@R6*FS_P-&-X2xthh9E*4P=Wkgp>GvC*B|0d(*NMMm`i1c z2IY`JFyem32p)E>iT@zB%7Ev(u*85)Mb}WRNM$5Q)>aS(kB&3|r^^*W(%kB!vX4&~ z5u|v4U|~WijQz)zf+RVQ2s40D?QUCh4Z%by69&CT@JFh_(p+_O+$U27Tv^DTEU=9le zHWa631_scP1c^P_6#^a&%XefO%#j=H+bc5pN~&LdounaxKNJRZSU`BT76;X_A#VN$ zAh?QIz%|f*6&?$yBLPomHcTjxi{3Kr>u1Hux%df1z_ z-nQPFnVUB%_iY1qr^#K)o6=~fkBYV1vf_Ko;)yj>_QT>T!c4SfXjH$ouub7EqBcF2 z`E5I^eXeGpGOFlq2!f~|lmJu~0>i9TV}8sah`-)SVPos{bCx zfGy_k1Ivr}87^~E=@WDNRYn@kOYuXWLHu}t_4lqo8YRC0m$Th{r|xuv zsWNQ|9xKVbUe*2{T%n>YoAARHSTAS?MylVEbb;b}9}1w$&B2`Alj=P$SkgoDcNBS_ z$>)5svY3+u1+$Wwp7w~RH`2XS8|DWE%AcbzZ}nFuTLHvte3g&o!p#l0*f#+l0z^gU zXh&3SpKUMzIEUx*P0kOWe%Xhl_nT<$HGe%;C|mhxf+VrimIbW~eH9q`lx$P-dq;tE zlC!;aj6K!c*4Ue9<2e(J^ZzjRmT^_IZQD29-2zh5pma%hcXxLQNXLMHq)5r4Ly_)o zL_k4W8l<}$q@Tf4&&%t6p7(dZd}6`OS~JJm=ZO8-|JxREv)EBB+cS-+eJ;?Y7=+o4 zFsWT#ng4t^0fC2g6m5!MUXb^kz0vc*yjqNj23XxjuLRM*&5@(P3`WavPG z`LYc!-?KJdk!PQS`_LRztqXC5DHBMNimMpe>sI!FDg~Y541=_3kIN7@^!=nJe@=C;axA0!%jWx~@7FMjvo&YsLF6&46Kc5B9 zRAW}@e-V9gSsx%Yz?~8&d`Gl{Gg7Ns;7?EsJZ_p3ReKI~Gf@V|kE5Gh^ifmC$(HAR(}DJ~$vErhX!av^4@Bd6D<|KPTph^#g1WCleMO-MZS4iCcCD3NuLhQw$am%>ql2S)h*QJkP+Eye1bxdq0}{ zP1|D3USs3yUiwnC-CT!3<|Ko%ppyind~Zp+7Y|@00My#)$^&P>!ONXsWaNw@)k=)w z&it0Cv-aog0;eeoF9A#So%I{s*6R1)i(yit61;Y1NR#B}$0t*nU0xn9)$R-LXR>-6 z-!EQT8+z=&Taa8fhO9|g_%R3UcO3gTz0!8Q=V`Mf`H`VxREM07qG4L=U$;CaF*Frh z6hSo_(3(=>N89`onAy@8@|_XF;2Zs{-6im{_P%L6|48p^2O(yf73)!XWop@}Yqia4 zQ-s`r^u3IX1JBvRn?y9v2?Sa1DZE<9?ARaFbEdMEkX5L{Ep7YZ!#0p^Ohj5ChQ_unfMG6poG zYOC+>`P+qj0mr=5p{)em@pa>UlqNkt+G!~k&&ocyFZy%~S6>@i@oSI#+FF==54tYu z5+)}N@o}8wN9&s>^VR(w)VtQtDC4j9l6}t1wENe!zw?&F17j>_SD#~8hDM|0o)iI0 z<+q8KlY7&_!1DvvU?8UHHL6bD)R94nU8524Sq=WcJPC)wWAAKJ6@gpC*#@ewP*0kj&KIIPuJNrGe?r2 zxgUnde5o3bDJ^;yb;E76xWbNMwxf3^zxnBW{H=EK1Rys}&Q;-Ae6787zB0!arIW_+ zm5CUYHsHHV#6*)VzJsf*r+HS?QPlSjWIoT{TYj!(KjT0>eT0!UpqUbXqW^QZq;s_I zLSf^w`P$s5o38biyM2Dm@2vcJpPwY>Ud!OdC|o-W&%3yV;J1~ z+jy8+Ua|v|`vIrovzrR1KQg0~NzdTjQHw**8Is1k=Jn1mUfJ#jJZ+@3q?qw6lzw6Z!3xHRWy77H(zd7-$pPZ;=2zLbmIJ zF=^LXLdQ9l3X{6mg+u#w08RSw0p7y+$0kmNs|HEHOwDi|VIo-wR2YYfI-E#(+=yLX zyG|>S=GV`EznnUq+3K1=Ohe>6=yT=!eI@+nj9jbM^)~so;@QT|fqT`g<`iSSFHnTt z;#GcNq+hM2TYzc4da^Liz|TCfFzwb{BP84<=3FMCv2s$iZq9Kn_l;OF&*zj;YIv41XQ*OQawJH8Ww z!B~i!hbP9C*|ksAx1giZ&*3{t5i!TJ^flF6*qj(4Ojm37{^VW(=_xoQqAHbq8VhYrt5n;&O%rG*!%u2 z(h8}^2r@@y@#*Thkoc4&Ej_eJR2)Qn;c6?n8OSgnA|-PynSViNhfk#1sH<9nJbNGO zk1#Zapc#>m3~D(;A*zF~Y;LCDY@(mSszGN#=t*FONgjre5p;)?I&g**f%<2L1iBBK zTS0Q{P=8M?{~0|<|Cw5{xje9G+((Mc3^D&f0U(sO=wt{|N(cxT*^qr61V%9;iWsPm z==vrumiT0(%02=xZ=v39I;>eMEvju<#sp6sMpMZ+*d@(6}-0 zX6;&~%PjPbFcCnpoU-kc8nvUB+?Dg*l_{)AR4850)mJW)D}1-Q{Sxi+$ky7`3R~;Q zP*pC;5i6mu-wNL;(RC;bDR=S1&uEPZ@nj{hE!%``7Bb!jnm&E_MiY|A>8g=w%toqS zgLp;RI(sPjcu(|axBRz5z@rrJkon9L-)`9SnC4H@ug?Ghim=%(2GEOdj!ZSA;>xI`^)3mEo-Wm%|*|*+i?2_$F`eLK`qzYrUqHi`L zofwAr;GY8wIxJ9}sLd#y1ju1+#NqwW2=gq?T#t0xjlFSkI07wIx9S{}(9J@|6QETn z++OX*76rRQqC>)(@FJ}GBPRHz_`oFB%=w~Q>|}+ZrpjCzV1v6(Ch#q%!TU`ds zRR&!G(-t?zKQy0;py$C`MXw13uAnbGKZ#g)5*ni<%f981)z>D1J#T_=simb&2id4>R}`D5 zE(NMsAZO3xY))~ANDCGV+ylh}iRDKpfT)Ng3mb_Cr@?l`1?oY=_lw;81a1ScjMVk2 z?nmx@e6fV?UD;KD&H&as?RIiAGOYW;dQ6iB?)$sk+O%7J?fp9VR6|TOCy#7C5W6A( zSwpj5QpN(=JSGH3VozcDK0|C15lG1>TvWO;1y{_$xual{3M|;?p@Kc08&1?PS4RdK zL}3oemf>?!2cAtdIxLkcd&eBSJOUDviz#mQBM-D5oTIUeJ|2Xv7uLp$CJ@ z^}x$<$1oGkgznUf5mrT}bmkVe?ig7AzDRB{7oG(XZAQRWFYt(njw5*xaC_*VNje zLBFh)<7G`7EM9mg`aa6W*Mp0EbwDS&94D+#RM^!3$t;(hZ;T_80hL*`a;L@NW)37knpXXpj)iZR>4?xprlH<2p-}~T`g7dm*tbU6NGM^ zQ`?=St}cy}dt$q%xUBd^C&CMiiY}>67&$vts*eh7iPT}grjQYRA?z7|psz660C&X2 z)3;YI?SBYWtBtw@oJuntT=8cy&9?4evv;kv@3}qVWC{A@-J=)Oh;T&u2~DOXj5@mr z+gn!xi(IN)yA#D$-3l$CtYe1MM3lNa4g12uuDB~5E*}4mf@7Q2tlKC)Jx-dshsR=# zvJvD;>%$L1cUFF;;?(=)ozT|m0Yavc0%;UXxsfj>QPUE2Iip7<&wXn2LlDR|<`EPL zr%9-6Men$oakwJZy7yd+*)Xe9=E~1)d38A&hQ~>PfxaElgP8KmRGN-f@v?h^WVNzgkOq6MFxz+g&uFB ziej~45stgrb=JDrMI|^#0gcb%f%5;@yCOk7EL!H+{IuSHAtv*mXV}V;gWGaWqtzLd z9BdyJf#$-CC5j|s)-dUCis!x!*E6PnN)`M5J9S2Mk-Wdt8;7q|83nA_;m}8jxoFHt za3sL?F#K!o!esqI{`c~PuVum`f}rQSx!GiyC@I+vbMrliHWm*2XC|wrPy0($RM5=? z7uVvQP;{4HaC9v%e=uOqBqdg&MQHTmOyYecR^~8|Dt+~d-586ym0o=yiI!v3GcT9a z&_#~moi&%)aA=KEl1*C+7CA9K3Ne?(X*+oTi(Y9fTrn(tCI`iq`&nNWF6AHbN2xGI z54)@ma^NkV-@15NKf=KF$h0ueoiM1}3`f#@VJ!#TmGtpfLU~t6i>5{4!u_xdQ5VH= zD@{d-ZxOr**vU2tpo#V)V8)AJm*5E_8K0rEYzo-=YJ2m;FMZp0d9kuqVQ;4o{%8*H zf#;zL9f%?yT$${iopNx<#aKS~-uOfY+p6@^F0OSPTHtCc6M%w+OSKuP&EH@J!uX zJFeYz3u!$GmVzNM_nVCt0QPK7 zhTa-x>{%`MQI5`damTOsaTrRLA8-5ysa}`jJr(>~Hgi+cMxFcxM^0qSWo%||BKH>E z#?mVp0~*nAKSSM$Dl&v$ln)trDxq54PaKDO!r2lFC zU2t9gUFh8_vYBR2XEKSSd2tr9E86L}SVb%b&=LD&vnfjjWR7G4W_<=8$a8Rv7=W@s!miq#%_#I?$@#*ga}o#(MQox3vvnBJZ>#Kwd|Dr3GFAQ~SpnuI-u%~MQW7a& z8z%=fh|w4r89b{HO(h(ZftOI&i^SVmbs>CPMg-4Ju?u*s!Ijh;+|CNbZcjWMs+O|eMR|b2vKZ=TAbZ}a7a)Vjc zU#{s{Q;X8Jl2Q0AJ@l1$yH1K~5fBwAcoskqf4ko*Ul&JG;&3teYnuPTMcM@$zj}$r zAcUppxr^$sN`LA~F@BfHBY0L%6f3t;_0TN`jCCaoWsE!#=}bdeO!8$dzhb-bBLxTb z?lXgo)N!*lgEO2;hjex9?nQu5G7Kd&5*5bvAoFA;1`=F-rjL!^=mKkWx9fS?7D=F=@H3&xsRW00*z|g zR*n7rfQz+Or~$_xdMU=OhXp@x-1t|0Ls!yD56`vqaj#<>>q5}wrTDv?@Fv@irUuUP z&b^8s50-Ovj-Oer^0a&KwyUcSz5zb}coZd&jLkI%_$to&H$FOJy?Sw}czc)-SKShZ zk3qWLrrRboxJOo&8l1dMWqr-PyY?Ilu`hfnkb*=iF~Y0=Q74AR>Ly&XLe=YK7sVfZ z?`8K^lDn$x=6vb+dbQxBp)=T@V4PK|R;v!nUmYUbt6j@XQ6|P;DYLsv#(n{o131i( zUPd%@btlS6_@te+QV*~A)v`pKyO>a04R?E9_4Lfc&!5DJ>a1u_nOFG*S@x09&~hi3 z$Zo=p(pcblj%>l_o4*he>O+mVxT+u_${{@>u^$a{IT$Rvb8u- z*>T6+)Iv}W>{7i-GpJ--H;|cC*$nd(-I$CAO8BpUdO&yC=+|Q&l*);J@0C1=S@2l$ z{g=joYB1sx$fs*$TtIeUP*HJE<{QfhtQxoftnc3A_!@qRQPav2_mAh3Q7%jSo{cucwYKLx3dn|a*uRoODb_nH1(AkQwahS&UvK2n)JZb1?|D#gI5|hvvc$_G&R*ImmHoWNbD9qm7Q|%C z6k?qtu;C#Y#?Z=6hjhG$As{9qptpL(s0IB!oud0+?3}zZ*Z>2v+kirXiqM4%Dx6v) zxnapbI!ZCgfD~lWQyo?j0YsR;n(1M4qqtIDX#jle{@vVQwmY-P zR>6Y19J9vq+5a)k|Gc@{9+1QoMGQ!H8_IMG0LgRTJh_izE=FZ4B+d2=tyY?AIOn-k z9v^p;6MNUgq))a=5*4kbd~gb$%|>OkYKxv!Gee$A)6p^wJx%;%K)J0x&gS0f@^rWG zNxg;JyPSJ%HGGEd+(d@kCwIZ^iL($apYNLG@4_j3+ECe0A0xTDkpQ5=%-17YtYdua zjjS5npEuzP&c`{!o>HVI)Y%?B`c*jsHMI865xF!FDxxuygfVAogkS>7h@BYx@9T2OuA)Q#)P z{HhHp`3r$dWomzIQ-1L6?cOG9BWctRNVx<4`D}bNOfTuCTOdR{7@aTKG3}?2#^pVWYO$7E{i1`3&nT@Qq^ z6r?E?c#KHr%He5Kz890;ALpj#WDyA?c;P%^DQ*= zV`MH%DeEtiC{CGrQ%8;v79Lk&X{Q}gj6EBbFh*xXK}ld4T^7sR8*!K`dZaJ1tWhb| zTI->X7C7!EPz%WJE;K9DMY}hU6!Y;?z6$$H;I;6aE1Ec}_SVH&3)uzHwG9+#=GP|QC7Kl+g(>v)TLDR zh3=RS|4YuXbuXbg5F$i7Ln+v!$YOs-qL7YM9S`ax3G}cGcrg=}Tsub`LtK(nC#1l&Vr;33lf1l+G}WHt*^Gd@$czawrAJnoI5 zFCQFuAost^J4owB~?bs zU|wZD!13~;VYhoV`~I{3{vEWTt3H;;(dLkfKm=mt`bcwcKN8a`MAXRb!n?Mj?XvAH z@A=NsujhftRGy_27*A%O5IbW>@b64*Ih4%L>*#;Yz_%{d6;Ig}w69?aR%~-@CXa#r zrg`6y?1mHD7Ad9ieM66(s?J=Avldot1Yn$i0`yVzN%iko*GcbpZb0otPZm*35~K`K zU158CzNSEL%yWTF+&r_-f>|h6NLTYWejoKivc|%O$GEoQ@sw4yq*g!Tu2NrXrVAgX z{Pd)_)311;R)aWraAv-`g~yq}QqY{;e%9`^2e97pl-@d-3D+7A7~iD#w-3^~>Ev_y z0cnaqo-;;91P{NRX?{E4+sbm0^W_oL?BZ<5nPP>t=v=Ige(d2UI!&PZrKJlFM!}fU zw}vEVBSj)R2^iWs@lLx{y`fH)ptC`p%0L83)^8n?9hn@9k7>75p5bXolm|M}*ks9* zpjc?w1h)njy>{46@`5J8FqdTV+OM<{_zIBHEER@d9nQu{E-!U--_mehIuv?rwVQoioxYwqusZbzu9(%HB6$)7fUgXJyb89{9L( zGP}L~T<6k>$e*PmqVGE67J@SnKo~}O7G^lL?*A%f0Dzys5)QxIkNzUnjx zbZhbC5+s5VP$Zu=xc0o-02=ovv7Q&_RWd$`+<|^^-eCmu@`b{b=;It0{_E$N*a@vJ zPC)uf&U8Riey#_FAL1^G38vbJE5K&}=Xdqf%JuGSyUS%?sjjX}03j`~H2`Qb;^%uu zFg#z7QS*-hLD+)j} ze+&rLd*AJX{sXiEhFYu8zx@ZO9{dM@KL!L@paDVRzXk+VGI|~9zYGW@zEM@vWN=qI zNBlA%@KVK}T(b4ntChbA4fEEQ#9y5{d=dVZL3{foC3lb3zwSh6M22-2F0x+ho6%#< zBAx+-tLM+il*S`ddX1YnE!7~u-8Z1h_12x()d58&q~rl}CzQ{jDN3@qw7C+a{mQZ& zDe=lG^wzr2H&h=RF~5x9E7 z=cwc$PC&*O%TzE7x^Fmc^J24btxrQX97F#qAb8l)-4>qN4Y3|1EXZoz zG8rs}fv7&kx)uAx;+?M76;Fjd?Y}r7Vbx_db!wYzz`vA7*#pbE6Sqow^TY+0f6RYs zuw3J^2#@D+9_RxQg<%!%Mj-5kH=uER@uXhT@CD1~mf`@rum)j|6h9387d)3*uGS)LRQg!{`eSubEv0+fOiWkT z^|Iy{36|mM1}JOPG3ULq8zwIs%@SXWk-X62V zKReqLE@w>7h;MF_Rgf-TTaYfcRFF%$E6zVH+rJLM!i9MZJb)9H_6{3=gA-=#T%bt- zxB1==Z--G!(yvGR%S7fCm23#S--z(O=w0!9Rs@@yspKtUi6VTcAjsQebmWNv!HIX0 zxT0_!DLGgi=n-%#Xk-==BcL5C(otXmYcx!RjLI);Vxe?lV-nF1=a`86#Qr-_!r6W& zRQ^VIevdxGNT0vis?6NmJb|fVaDI5#cSdywMc3W{y4b+%-732#%V=b2mHKxzT;`F! z9Gc!>w@%|HfCulk-yK3dj}Ff$2u=_ixR>Qg8CL`-n%ii$=1=dGV*V5_Q~A)&pws^2 zvEGUY&$#fK5#dV><@SYR;RevgRew*kc+S4|TKjdmP;u)=N}Jn@bLIJ!kDQ}sy|xjV z_Ng>io~b5N^qAys9+BPgWNm_iST9Pe2R#wRwer=gbo7chpZNjylNm8vhLOxA=q#tG z3z{NvQFB_L6>y<`QdS_qk2 zFDlk(C2w;1OkXShDxz+u|H=XcC)mI5{5bV#xoZd;D>qE$$k5D!A?ejI?pHJ>EkAHg zxN5?9qq~5~ZG}$-_#^Z9%eDjnu!UI@>U|{#m?Vw~v2BTIZJb66jjzTCr(pW8petM) z%oJGoytinqTLL;<)v`+J*>(^=OA$|i726WFdvRbfwB-`Fl|Q3{fP*+#RQ`^>^xd}X z?Z>l>{wvXnN?VwR(r)m;Wt!Z(h#1)ZE6%B(b^_oZfrr0Fcjw+oOk!KznoRY4{^#tB zn(#60^K`3;{LU}0U><7MBfif>f0ezRUybU&qO7R&C;k1FL6^Bg3mzG|!g$<+>kqZ~ zav;zkEVuo()iI@`XejW_$OA%v^Rf0R$W2iDgRO?kofPwC%kmdu0nD+7jX^vyO(!se z-_(~p6nBFp$K7;po3|;(10LY><)HxmTjGQeZ`9a9WBS(z5&-6b1W5Tl^C~6x4swQ@ zeAa2&nec!}FsbWZ+u|42=kX<<@l_n{`~QAJ@jltx_h6$7!*G{HKNQ%5bcZ`6_G$o# zL9z0G=79H5vJZYpUBMS?+wuOZxQY=@l&xO~N!^UCmm`-mMs)z5!|vmVe?El2q~|AT zb&{?yF?ZR7~CBcn$Mgd95u!RYu8)$lnr6a0fe(Y)cSg)q7GejyEvi4y^_ z)?S9qXR=neL{q##a_~cOzKWhN)8x+^p-(0CpT7(&{iZXJr(bKYAx^S^$c7Z(!&fb4 zySE`8U9O~;a&}o!NlEf>g*i3nml|pZM}l8V$Pr1xsvk=3@j*&KhOMp6&U}LKlN8nO zQwaf0tScVp_O23gOp@`=Uk3tm_P9>*SA}yVDQCDQE1~_#Mr*$yi{l4yg5&|5Fj=ud zc=)d6Y)d_AKOZ)EkW>dyIpmswEmo8`F~bsf6vY(D zA36t+EqU_`+E|#D-oAecbd^ASc+`G_9Ebd(sF9+f@m_rd2rt_1IfOU@qCiS{hB?nA#1Iydpv!_C-%j06xj zMmNac@jz2llRvbXl*A5&?29e|09Q8*~l$-kTqcd!HLYVe8@eBi=dE9;`~N2 z0ArDDPda0Z2}tMb=m*FKd=f0t3$xsht*!jw9YSz^qZqTrvi?I8O#N4KQ$L4aor+xi z(7V}p6;rl#T+&c$H{Ak>id88WFY|XaSNmVE4-HR^;@`(UYtUPy)Ese>n4ewn+-ogA zpi|zLR>zL>ewF4M@$es=|A{@v}NJ4(8apPWUD5h))i4&8NST`DFG$2AB{&x>QK_@nbSj$ zp3I)t_MET=kfgiw^D}hMYhG1GDWNy>#{B@QMI2XAisw+wI8O#!iHlj{Qto$Ygqu(-)^XNOmg)R~r#BPfUnH z8=F~;LIO}?x#IG5d%CDTlPbfo!qU^lueo}|YO7}W2u^DPG+!)BUZa`qrHB!qV;>8? z?lBs*>iYDBUiYYXGFzCXM{#+%h{=-co013+Q|-PD*!7fPIe5R~-+`P@pUCS%2auXS z57sDle=Y5PJc44V<`BA*9DMd%a=$^v30lkn=ZnmfPc8<@=aar-Ly`n;u_P6J*$xns z^H;;4Wz|Z2^J^Y6!WLsk=_Io?qP4kZRF`)yzBjq&rZTcO7{(NSN#nzX(BZP0yi6FC z;E1>d07xyRrw4BRoyxV0IXVupgn`CAX@NK`9{T*4ylNj|TuB>R;eT>id>qJ;R`y-q zMPD!>8<)TU7wUusCZ(YJ6RWiBd3IdL z{K>{=@w-JCS>iCuf7bjD8>!OPFK|nb!8F_-4{|ehZVM|mNbGZTs=qDBDgQq#$e|;; zNCmUmUz@@uVE5w!JN;PIL^(u{r=Z3i9(EMCS?^vQpUCeL5fSfJ@+0fEmMSqAQD}*Pg6$fd2d`HtVQH7d zDTHG8;4Ju;j$#CHwXP}b$lPu&oltAa9~XoZ_SC~x)yfc2ELmlx>AZ(PlG9K|5!9ei zJTWLRm=*gGOe-)RXG39P760$5+<0pab?z4CO#Y!sN2t^syE^DX|#nLQp;%>Rt55Xq%XzP!!?+Us~M{ z%aDa=;ihJ=XZj9ipa1EZtUwnsNGv5B)jx@4E=ZgQDhYOs%eiNyEQ2z$+^GDZvKbM> zuPidGQl%I~zX3rEl$!)i-VdOBHsRytJhERIZg`MI-&nd=oPQ^lzU)lEtRnGxF1R-8 zdDWEX)c)3|BOo;T{jFj9&R+F6>TWyVedOe zeGWT)PAEJ%>y}=Cc-3kObk$$o@|3}>iJH3P&EH*VhI^eXT;0~+iFNfIjLq6Zb&Kxr zFeTMBPUxe{dSs1tJomjGo|vPk+blXhLG)zS9XgNDv~d!*`0#YNv^vmf8R{EYB&+vd zMY5*QeW+diXjq}&M0&l%P2!=qAeB1^xRAMh6l~xKU9F@OO7{M5zq*Y>k?~Ca-vwi! zRR3QEW0bIHQNOW-;j^au-#IN3RxxUv(nFZv-P~gdl?jIlohm~ETY_p-QzPhoQ? zcs&+(`1m&X7w+%(CWV`I>)e1ITx=SpNAKSkt_Fs!ak>iU$F@Dro!nTcnmd@2y3%Xa zhiG7RA8jUou!8UZIlY2Rw^k4f+65+2*>RHY3I#3&W1h!i;o^xd!*ltu(j4FJp+NHJ zwN`-K0(#ZGNM3sSObI>Oy9H5689AClIN4qok@#GM4~&-w%k9i=yCrnt`QwtMp|p3T z&4IXK-q;j9=*V))Oroo?-l=Jn#J+s90fS$jSe-}tYSBAj12E? zh2fX0GV8_KI?bpkDWGK)UdHG_hyCpeh$H`ObfWhYKWQ$jCXE1w&E`M|Q zf<(933M0fvQL#8_xH0T>!=EQ^Vax29C*1JaDz%-{jQ#3XK*BgB&l6>x4?3dah>Qou zK(&1U+(2}xQ#7LI+u_iG6`K<&I=8Upk*7IHwvCfEHqRald?+X9bF^tf7|PCz8{HhA z*PAH2gkR+0dYqScVfRYt=h35W4=uL1pDu~_P4SHcvt~Bm3Pfs=DgxVqpYn0i z&Ekq3El_Dh$AnagvG9yyYra!-qXeK*QA=uuV(1WCSS`wo>t z$Hm(r6t{Db!gH75*p*)4-gmT(-Ez-o8EKypy zghkOe!A9xqZ!St$&Xc>k2v+veWS%V z`+;V2r$+PlSSUL5JKdkpqrSKBttasTgIR9hr--}`{)hXy&lozh2RQEL|EVe905hC? z=A6IX&lT;l-)V^oPR)`P(c#Xh6%sgt?&k!dMo+3_x!q~fLU!w>^o2W$;g95V5r=N^ z?mHrS%^XmuUJ)Xaaqzd)J6lh!I9-&ueM|wyI+s*xubGFNbh0rpRQ<`vw@am}H662k zYU}Fb)t9{*pCx{a{ZO6vsJ}jopJ%K8lReBE`nL$7}-Uv9rETB z?G@_%7R!o>p=##IkzpfTwF?p{tSej5QdGr~;^y`HQu-%?eRsObS6m${FvmD1s1?b8 z*|RR&_*c(HQk@jkhG{atIAcn`*kB@JhOI<*SB$XFFwOB!#n(VY}KRJe8Y-r!%ww_2ULkDu7}i+m_vz(JXpp1&CCM37@k*v&arTEFF+?B zUiAOV$%mEl5gB}LW8f4UgCG}w1t%K~et{WkKU@w+l;;x#S5`j4t9k6MsuFaVS?cY^ z5wf|L2-M{ivsi#;NHmK$PNPrU3)EWo+QD+ z0UG*D`>Jj4U3!n%_3k%{Yj|b(MbltA@~*)w%G&LobKog->O!zpR%i4utYMreqKMzy zM>!ZGb)7}ErZJNkWItGnliJC5H-ZuOKv0gq?b75LqvfY5I*0h%attT(53Xx;`q};o zLF=wimk&l9u+(h-v9sko4km>{x6{4a5Og|}j5kbbEA+ws` zC+~>l{Fm2D1!Cd&?|J1%2Nzc=R+_vOwQ>}&@W$Uo$_z!t@mZA_7J?+nU!(Vfwh+>* zx5bCxhA{h|*x_Wi;NUd-1!MoEO*G7c4iBlAfCfqBW>kC#uP1yY$wLGSYq#vEfT1_` z@97-oX53c4ikp7Nts11m3{e20sDO$CadU=S`-L*+4kd-qf}Iz%-0w*PCl|LlFDKhx zN}m&0I{aEWb(o};LZ|ZcD=NxQImoT3q}5_F6tRpWirB7?^L46l&G{MT*4Vu82|nQ- zitHv=TGOs{If1aXemWM){ZKloW=KZ8_-EA6FyK$Z#&lKB_%s3)*GLz8E1iYgm z;nx{T4p65gA4XPyuh;Ld4tnW;Ef_z#t5cT~<9A!enWay*xiq&w3Y;}Do;3=b2#e9wu1k8sKf!=oV)#|v+ zjWf}quyPLnds3k++)3J~y(pgKfYVj|xc2x%X+fGcYUQF^noKm04;?Y6w*$z)4|8_F zK)h0TJIp@K{E`V3=$-m`b99Gy%|Qd)R^Die47RUsZj{#+-QX@n)wcC4aK)ayy~dr4 zyp3qdDP@ak_l`YL?$2TaaxN2=`zvpr2BrgMcf<)t))@8%+s@eRXWg*^irIIn{!6Mh z2CL4<>}R2q*5>SY1+*8|F>B6`z}G|M*2a~>>c^AheGBeAV}yaC{&ACfaqYRX2RtWg z08?xs3+o{#GC<{=Jk)nvDwfyA3Z&F(Z8{$gzMH(F0_?#9fc~t4jL6%R`1U)Uy9vsZ z>&SZ{B0YP}yLfx?E4;f*Tp+9WZIJ%z48;Z}W$9D&g~(#ZKF^;kFFX1iC{%eIbnDdR zGaH7SoQCO^tCd!{GiZUL&lo1hDT~9lp-GRMU0+1Ji9!$#e7W%iS!nA@)IvXVR_JNu zWMji#=s5k0U7*Z5RKQCTW&NuR-3VR%W8R#-nw1fy@7Na4UHo_=e`IpZ^k$EQaZk18 zCMcOqJNX%LMmEQ44ZR%89DSDF?;AT&`DW@;ZSQ>W{qQsV5END7nd6et0{UaNT;y1( zrpzbS4k^7A16_e7-QhlFx>^uKPsH!q0M0aWq(b=RdsCndAI@St%1lzOQm5%?`ZjHG z{$q!&osQ!2XL6(HcuwaC%Tz+e`tfZkK3ldPK@=nUpbI3FPx|I3O3to_+;IZbn7wJx z-aiM$k7EUrp}pO~*W$-kBJ=8hej$htTcz~opl~Ju{}J2rD7HQrd@VCS-rKwlYye9L zsIS5nJ5D<~Z}H(UJA$`@!)BR~$X+3iB4T=KV+p`v=3$aKl~H&hktvY37=nk0ALe1s zlYu8udW|AFlY_6ZT8e`%5dSmkKGd~fs2f(Hfc?-l+Mhm!o5PZuhy8(g856P@P4Y=#wj&Rg1b)Z6ui-rp@57wJcKm8-g6FsHZ1d9q$oDrv$gMmU1l4-hbZj z4fYz1;!)0Qxui{-9=y}Q6G+7HTeUo1zg};>jQ{cDM@xNMj)N}7Ib)UXv!p~tQkk8p z1a|F@FRd<*zq>L%wN%?;;xI1|JSS7`&j?~_2DB6XMz|vOHmWh*&{F(5sL0Nv#nvK> zU(RKVD0I)ejC7D5CsAL=JIGgw_SHSTb-tYtjSjvocht*ou8E&yAn$DXytB-rgjB{=6~PlLW7*tKi#uB0f` z;9k1b3Cq!u6kTD@WR6iz?9^s`QbmWiA^kGht8$rn)#X*qcA#MZOCDWsbWQsBLy-_B zI>0@H~4AJ%+yQA}OxA0#(SoiHkT z2;lk4oKw11QR&RGb#j=dpNw@%nMCxOS4!#}hwAXj&A)0dbT*lF&BW+~@HLwHMjBH| zO@AR%&cu)ByOOwhwU!uejYYRfIDG)9N{8S*U8t{dZkM}~lmO_o;WRU6S1P5puKG{sj(Uknw{4CGT5(?v^K$I_Nn|@n2uHA-E4uqh zq@n7OyDj;7PrEygyTdN*i4jk_TNY6#@`Kt;koyS}0XuWhIeC-WT#?1Xs3wY-HBKQ3u+WW=b$i81X9lj(tZh~MyUTvYU6=1=AfPZ zB=3+Cj{^q(*1@mU*{G$b3|@Zd0I_QC91ya>w3y|{nTh%wP+TW=ejKUjhAHgxLewt_ zGi)*v2;Idr;_@tSZ&^PLdSzKBhILIZ@^^{b!#%0#BvP7y^V*U>DJ@Pu3obS@h$=h6 zzZ~!bT}b|$E*xNH{Kg`u_`6Q>Uxk^vUl}gUqzbWqvsY$BCLw0v?cqX7g%F4U_-`;N z)e=n0zS=cW)+&UBDze5}Augx)pGMZW z`1;u?1kqR*|98?UW*yS5gGo+JR<+zt1SDMg{LPyy})Xvpb$qc)R zR_28mWS9dktZDI6oH-$sQU-KD-{a_^mB^CJJes1_@|~b=>!QL(vFWw05L#7L8<4ULcxat9wwu_{C;Yw;Q2j&=x;7g zc5YTv?z!IsfTMQhj2)927B)Tj#trTUU+T@H8MTTIB1ZYDJUPmOaVKi^D?g3RJ_r6 zR)gNBP}lKC@#H&5Mp>BOcWSHztL!HvmpbgV&v$d&iYtrVb2>ROe- zCRM0>^e6F|#s?7(4XVZ>SiU{9@Ff5E)YnL&O5yFuR8F$>{=F3n)o(5sMvu}j+5}@8 z*EC%n_D1|XrqL5rZ9;1Q2AFokNF}EG{&qk?7IW3){HI_rC;9~Q) z3AS96T-qB0!dsO-@Wq_v*op%gI-;~oCN0(JfyO#zi2i~uxH0!LcBLFQFmHxvkCIT? z2E`#OYwwVDv_+_6 zl4m>G2A6J>zhdCdjD`%Cy&}z_F@6i@Ev;1~;Me zn>i+pM}`XxG!qIk4$!MI4vbET*p-s)71B!PUpExbPi{BFZK6L&0|~W)u2BC`Bkcxh zr4^-1y1TnW0qKygySL|fj^}>g82A38W1z@zziX{`t~sCQ_i%ApEo*T?O_d&s@b7H` z-(v!)^q3G3?WPr^@=!S?3_+-I`2Du(f{Wk_y4Cs9c@1uH;h$J;Z~-u4xx%QH?2_`z z}OC~Nz=Dlnv zAxZ7N4wLCrXK|Iaugpb1=ngUaK?C*olJ9<<+ax(lA6`~<@82EE1=S8j73mm$zS}OG zFYS3TtXV^~Te3i6UAiTm;B0?xJO#Q3d+as6Pl@hqKrM;aCkK*8YMP<9A|HGSZ=vMH zw;UY$5D!j1C(P}^id?jxsn@ z{=@g)!pM-1Nbz#l2cQr->o=R8rNaF}47np0i}N>Gjv9tjtRkyGHEjxdlAPwpn?t^x zTlCzjgWPpfB--g1#{I&K7rplR^WYvWiOh$w0*E1-D}O)9HRby zuM|g}4JHnH$SAwVLj(HP0Ul;pVViXGtm}ffg`ut!gD(c&QGpDDykrxkiLQi9Lrq16 z&bo0}UZMWvCC(ar4@V}HP9cBy@SrHQHt2EydxX?Stsy3Mss7;Ty66<=jN~0!MjoD% zI!JCK!EW-J&_MZ;^XvR~WXB!D4b%CUeXF_!UR!UO)vI%V4(m+JunHPf zhm-X{1{se#wKdTd(>3pTaljj2jmXB9u93Tii87wFQ}qYcTZnJ`IK3*MFmg z&3FX_%`8p-NKvJ3LL>*bxnp7^@4{i%!8afQ0VL2y!Hh6N2rcA0RUu`))YYb^`;9*XE?)oGb++T|n4l)gt9`vKa=?qdwK;ezR zU{)f#0J$4_tQAG3g_IhUi)=q&V7}mxx+IdH+Q(`-XkPu?I@IFo6L;U}d42Ik=kb2) ztb>5}=Sl(;IF)d(4gqQ8;kG+ILW)-r2()ye`+;_BRKqA;7Y$MLKHhCqA$omiHTd5U!GV03WJo9Co0kwr z#M=opd^p@CY;YV9R+y%;6T&jFBgSS1qc~8pmQhV@{7T`}BVbPDf*{{+6IH-!B*;&G zeTdp98Ln=S5Ak>6wi&OvnK{Hi2Bkm${t%%=ERgg6BXN6&fq93JWoL^CJ>lM(8UC## zIy&J#c2(M66W2^6Sw6-{jM#zPyE|NA#BhkKOjQ!*g-!ADn6ul zM{xOifw~Bh-U(VR?ykCTxw2YMWcRH|>eQ@VBTR+e|7-F>AsN?e(|F&Eh zjz)a9xxfW!7R|N)+~E?R;QF(E!q&ari_bFGOePO6oLU;%*cjsaJFeO9h4}ja-NJhj zrU&y}KQl2cDIJ_0^C=C1L?O3LRSMP4-ynz$9>eaZpRK&xtB|&NZtML*`vVClDI-x2dV58v zWQc&Jh&r$S>_|i9)4ESJL~egeDA^XI2m^0`WLo>TVGPr?=`sy00SD#pb|L^N%D? zXWqs<#87`x;sRSJCAo8#v;Hvd6}uaBwujGaz(dZGKJh1f6Xi^v7H<+EK3Kg4x^Y2? z2z^n6ZSx9cQlR5QjjUDkct!X`4Nn?!IbtoPThpFw#9r)6gACi05=)AuR)j^y(}?)> zY}$ItT>dYVN8}W-N9kLs&FSgm`X;m$a-;9eY0nGGsSbwZ4e>74XS25AkG_Z^qfKZl za#+u{Jykm2syoQqx{BFWaWDDY3_=?{>@e7q$ddX-w7nCMEihLkCbk?%wt7j!gKEof z8i2A7BVSeVMPQEM$IN8z%C}F4*my{9DedbM494>3)*Kr$NxJ0u&*>$jF8R`Ml1-P3 z^y(Axnb%@~q^j%gJJ@6ooySO{o8PAz95};#rLkCtDt{C?m42r3OBSLq6#_Zm9a1?X z*h@sJ2o~{9kbip>sgm69sDVA(DRkc1^pwGbZ?1HKM)lA%8_8EOL3Ca_c!AK`hZ@OV zkf8YWI!3l!^dj-A#3>qPUCERCRfICu;uwubZTDGAM68Bgyu**qa@u*MXav)Ca@rr> z_z55M3}`xj5Uwd+v9p;^7K{LG%n~Jj2J1-dl_Oa7KKWKrc9~ZGK5$KKZNYK<%Fq<9 zvRv4)GNBDTnbQ4%tN1ly)1Hd|d}~p`pDq^Y`?2gcibNc;hV6d8vG{=8X1rWH%UWts zYD&(OdQG)WcL+tO%)~~!;c3z9ntVOlW-YMrD|8*u-R{JI4SUh|s)h|^RE(L$-X9IN zYu~F(c??IXm3Njl-#WbuJC~h2k5PlSlx@e^5i@Qq_#ru&Ubt8m$$4Nr3wi|ajaY_e z@ACT{ObW>fD3@LK1N6ntz zqFSti5U?1fZ8eckx~@k$0{jEM)UA3u9Upd{!-=+9x7=JcS3YyEp-BbZkN?0>rE=|= ziD#o|jon=A%@WA&I>PrDP{*~WWJ@^=KvSyRTG~@_6?%OC<>X=f;gDqK7B)BL*dYAA z%rrxVC<3vUUBiri4Sf!sxQQ0f&6*J-SY`4Al!1Wg!KUa{{Hm(c$nW9jlonry^Q(^p zC@v&&;2Q$DtFAZ1n5s!h!z9!=U{r}k+SDYaB*J#%1iE>IlT4Q@c4@!VeDk-)i8~qP zUsI%S>B{j$)UP@_ZS*#{clU9RuICEZXI>o!-L1OlI|-wbau4LFbZ``JVpf|Vl{?^O zf+$8f1^1QZ`QivIrO#;u_g^;8%@vbe+MJ7S_W+l+bz_|v-QVFyxm9p{`N8Ba8NGWY z;N*+zrNFBm{K12G?QK!HPC#6>uv_5`GYIzIx(TXu0*LfQqe0fiKSC!yPAg6eUaM)X zR%lh;lAoCS0>pBnl-j8GA_2Rjh)(5NqlUK(J2H=cN<}w#Oi*+ZE{A-1Ui+(MNGbx~ z1FCjFF`lGZcoc@Vw(QEhD6lIJ4i}fv-{;7v;`Lsz^j=tqxVq&@Bv zeQDydLD{OBiI(~aBd(WmTc^qhmV4iq7nWe9YkKQPr9j}D%2v1GLr>qY!SEAk2&)BL zPY;ilPoF7#aQG4gRv8IJmZ^)72z}VI6bfg?nB*Vo3cCuV?-4tAeBhW()kOABliU#) zIIMa;VNM{xL8bbU%)yQk{eyd`tad|zng358Tsi*d5vxI7=wl}e;-tf;AF39L7#&wr z>TYTZ<6A-Sy+;zC08^kDCSXzE&%4bI2weO|{eXHk)b9){$NYuTtz~Af@v6UmNI*Qq zYI^J5H~PWOfshdg6S?SRAu{mN?YPeTRGs>TL0|`KuIMoW!;&daWc4e)$4YCpZMHbh zxWQ)}Z+|kyrDw?Vy2v9{sC6B^=g283;AD88sn8Efs!;7Nkaj;%9i}2n0>ohcJgT95 zr?Id`X2Hla8?-Ht895q!n|x(mL){Jb?LuJZNFpe0z{xb06?uO_l|`3X z1cYlW3#~BUjI3YF2r{1_qN8J6q$x%bh3LU^J%g98f~jz{aYiiI;-d2IfHc@(pba*x zqGM{U;Hf)kf31Du?Do=Mv>wtMf~!2(?vBxoLJ`s5=yfiukQZE={fX9(*fL&q`%RHi zG`&5?)6&@#7X4%L#eM-Pv?y>5ZSORPF8<#yc0L|UE;HVLx@rFu1ytI|lyxH<00dZ4 zXhVK1YA+iNa$UIm-H_+w<>ln&0-yLG6N9>PC1on|kfT#d3CJNEgtvwEGnsH@Rthj| zH830 zrCdj2_<3I1Tvt$KxCp(!l0pI4ft8(JQ&A|rQIJ3?tK!nmZ|m96zEENxp+WLoz$?Bp zw=C+cVg0U7BX(o&Lm~tIK0I#Iqxu~uOm`&>f0-JB8oQ1r`_$A&2uZxx*_R^ESQD8X z>9cd&988>WLUJgnHPuS_fJ3fm&~~G$PB*jxf3{RwSjOYsH&bfX3|BidMStj|0zUFZ zres%KsT_76;7P80{&jl7vcSi_l9@%rXNLHNGA?@|HAVYsorrxS9~_5&JCP*pt~ zE+n+QBqWokm48TUPPPCpGXb1V4~U00Qo$hha*u=Qi*nbV#%({!?5gDf9;SN~cVn)( z4Ce$_S;5UrJg@p`57M@;kcK+k$j~X%h~?Td40uM9S;NQ|X^a3L01^rkQRJ&bG9uHc z%VqGMDxywgQCJ3h=K{J(kUgr0!75i2Gv6Cms?TG|`#8Jn1}6ReoDNuT{lZux`t?D_ zjOVU%wV6bnr!OS3tC~ZN=^B#aL=vB|(WCv0y7C@m#^sR9%r&-Xl{3V7UhcR0G&vyg zzMYTl*f%dyze|v%82#f0jkM-+sr?2Sq@hj$X{bx`2#zFwiJ>ib%^)nGZ#|m(@=@OU zYK+HiD^9SVR0rBnA08s@g~3AZrdJadIPG3P?VjcM*a&mh{ps639rb;w^U$>8d4bCA z^~$iHwsL=_|3J6>!+^vabjW`BhakhpXU547Zoh^5Pe+{!iZEvHlV?-J7-j80hJt#d zAlW@tPN$dCP^j_eznbg%Lw_Fx(p;oHwGd?mf{Q?qo!s{E-TTZGFF5E;O?exeqbJnD z>sbOJ;s&GejA&N#rOYFlKqs=E??tTd+df$vHOx7wPt#PkG*74k0y9)gD8=bm6NZ8a z;bC4=P#Ix%;X!U#umpnN?w0m+=PQZ2a-6UaT^@sRyv|Dx=2)mLVAfe{f^H_ z_DMyEX##~|@haG31)Itq!QNTc%E-#d#+g%@2(9C(b%M={Gy?4DDCRbpK^g5KSPY{C zGlH~UiRd#l++=R0r<@oL<@^Yx=T>d$q-kTg$Szm!%^*kfe-G``=P#qtAzz*P-G%1k zv$C`l0IwJQJ3D~hx3Qr2ZH1x1A>IkNN@7`5a4aJtDd{>o5*!>hCy-No1D|koNWB(A zJ&rk{6U7XU77UyO;Dg{Tt}qzvd=!YxrMS3L02?O!;Gy?Z-*DliEL3Pn-wFrqY*+4I ze66It6#lY|{1$RtOPHa?iK^DKc3IWqRKoh!St3bPpC07+ew5k0IAZ1$hTnjQR;f7s zS^!Tdkn{C|1O&d~PEW`46kt-@GDRBuBhM#r_!e!rpL-z6KLZIfZWR*JlMss@d7I99 zGmm(Ty#IE8j1i{b4lEo z2~DMhEEA`U{wMQ#{(}pd330Ue?0I8O&I4b>F^Jxl+utVg?(2fagNQ>Cm*ef~6Fu`Y zniV=PmK`)(=I=oDcBq)&=11)gIG!HVvatLV?PC^kRJ&ZA^1np2o_BT3I*c52!sbIF z$p*O4VJpFKV*S$Y2*%VPNf38|YjpRJI|yEIkWqUhy*V&Vivp0heIq8mi_y-g5qt3EpmDdoU$0bp(+0&Cu2;22UK=+t*1N5mEJ6(|)g66=q>2`$5$#O#a% zAQc4|>+caip8&T2mmnlNf&@VIx8vX!CtVWiI8cDneIZnA*8WJfA?7~$DL7Ovbld+0 zsr2&lKnv4Qp1seiJF1$z$5Ir}<4h%C*xI2=meZKI7pMD9?tVjH*t*A|g}L&2lraWG zDKS&$bIxaNQH5(%yTOx#5IG#QWi3AcRD38TKj{gX0!0KB@sJ0sscbl&YC<(!?*(wE zD-hGf1s#2S*28DLG9JfaHA)H_-AefW5kzKD#9eb>9=yotK^)v}XN{aK>wcS-cfrZ! z1#@s3xPWv@gq)Mx=+El(_<}s#1h@#{HAOxl4oI}mVH;~HiB0(V3dv%RQyi7z7t6G% zYe_4OPolU;0+S1IA)5u{lBAFD)gmjtGm*IM8~`s9j92ItRwi^76b z!XmR>XPA$zzKlH-khx>uR@e__c6k-{VFgynSsvH$P(y1jB%~!8e3g=h^zQC-OJY81 zxC92>xsQPz)U8yUf>rsr45P5KlQ15shzayCni=q)CS$-sVB{wt$S_}USsA;#OYRNz zlSDY!7{aFuqv>q+YIfh2THFUQyNv5if-uGttGvc($_s0?wTFnwpC^WpQ9u0$V>L@7 z7ny9EU@ISK-juBqD69*{RZl=GWMO9H#l z0{OYYOKs5el(e^4nk>OM`;lBBO{X0xv2@-)`*55TUpt!93Mm{eo10&r$%T;*fu-pc z)EkjfpXl;pl+Y;{eIriRGlDs5J}6CnCoMNplAL|9+Uifs=2Gjx8B`Y+9`H?BBAU$5 zAdwa(j?94ylUZ?ygG@J%+l{-=#qH(% zcr7bPmq2o{9`MJug6dV9qDo5ML+&X*|GB4_a#;cS_?IgxDD$Ir*BRd~iY-noIBz0dc@S806lL?S_5lI9M-pUKCc;1LGfghztBwg>q5QMr=CT7)@R&|Y*U+u~})@s`jSekeib)LUIo_{&H zPjwnOdJvNQ0lm?_;7#vBY!%bgoofD_ttNTCOa6^~oD69R(KG2%7L#7rG2_dN#dh2ZUmTXIr?$waRT}~(&*SxWb`b6?MOJdz!ANS6qyw^rFX-lH#8cth766y zDx7c{2lh5Op%7wKK$J**#u|4+QZm>AO>dRr1JCz@T1v_bX)SYV&e7{uTQMr`c5GHmp(fM0D~`EkFOtB}PI z{LepNX2!#7#ks6GY_lkiZ8RIsN6lVPCy7ZzM<1pr@Sa|b&I8v6rEALM6+62n+W{Zi z$J9APdI84s30KU9a~U7`NJ^@_OHmn$ysBuvw;I-Egu&)R4GsG!c>mglZ zUXhrfB*nzbS_lZe|G9U3v1KOzBZ69T`ztnFt*69xW9Zv%EWc~l!^4avz%s)twm@0D z4V|@Zm@;HrwYA7O1~eI3*A~yvjg-A6lLFn{O6IYm3NvaHdyO*j0(DASB}sZr9+qU5 z?r0FYH^F=Bw@VSNFA>tXPp;#ycGIFl`vQ^gg&&k6v)^7TV;5MJUt%oQd_Xerc}guY zP{GR4tEjI`kQm9_t=i`{-lsh7a>Aa&qUzN4)5Pa#3cqf!$%Cm}W@O2<{&dCkM{}|c zh7SrZHB_y&v}p}evad_6VzX*mESOpgT4B`bl;Gg;A>Dsu7-%n)rM@#2s_k9;Eezr_ zGqd3OFSrmYq9KTKx{QKcWRw-yqSaVcM~0?8Dvp|hseNFn0hVC#KrAAV1M)9RUH~E@ zf_A8)6%~7|ix|w5Yn$@LX#mwCpw9!Q@_>MG>L}-;)B!Y`d~?q^x(Ai82xs{Cj=%W6 zjdiG788Fz$JX9-Q1%exfdGZ?a8iL+jv=v5}CzOU%29$?cg66y7+$W)v5ffr5HASnJ zFJC)9r50%v=L8w0Wp4yeeVfSaqH$B{>FK$EKne2^@i*aK52&z?vyAjX%6KI<_V6EO z67cDG@-?VKdQ{Wb2vPm%^r>k!r2Bw>HyPA12h)uj4V`q@LpIo7d(48Lo6Fp6Sxdzh zPXpio_4|qHbK4KWVL`IgG3YAFpqFg+43sijFUJu#I*OYtjFK3+ligNgDn6gWEj8fd z7}Ps$cBGXRa2#XRpSBDsb8|mAS1+2AxlrMe>2Xoaz#5ZQ`r@S#fOLeUsscGPxm*zD zmd29p6T#CiDx&q~2(cm78zqu+5=nB)_+~uj8LDW-Q(Z=e>;P>oGqu?XtT%{_!oo+j z@Ozu0h7BNB?&gPc=aw=xCeWU1ypi^5=8HFWBdoVsiG$Z%(uuFbW_FkS@$ww?joPy; zzx40jjmDy3hXfjI*3Nn)hz{@;U3WAhbE2<>p0uteLZWM6h7ozazOXqvnx@C<%=CMe zMo5hH^NePJv#Z@Jf;)F$rx| z0+yX|V;2>qPcvs|L@rP)m}!HDcXbP7RXp*jNhKB+q_z$qzAlY>i*Kdotx^t}$yzEp zoBklE2q z)-s{UkivcHkB)|u){<3t6BRXmV*RjIS6;9;v1P#{_{ zlRNT{bh-tJzNMHvV=lWF=u(3Sszr_@aT`A^gi4?4Ca=2OVE(&^p=znt zXBbw^knMd8dFlTe=<@?DtoVKj|9?A9zyL~ERdA^^0IyCV2VD#Rf*RQ`+NP7FA&Yc*}jMvZMhcT7Pi0GYmB#tA??c0{it>$GH z2sf+D!_ZM9{Mu^fluYM~dC4?z)&*gBsEjqoxSyyx({u}KB)83IMRhbQwD@7qr}Kwi z7h#;uXl+FpX_84DV@3)}lwJl`jI$HcubOPKo-Y{yLDCbZXEhazD4+VH;qVs-x>c4raW zRIWG&HF?YmpylW0xIOd!@Upe}A{W-%a`ne;>gJ)7+r^?2yw3+l%7}u|)rf+tA@f=g zg^ z?mWI$Vj6p?5W4t@qlB2UjiXv#)l_wbN8+t3vZLtjpm}n)tX0d@am6Fy} z!X$Yh!uKw&@38ygn{glB1SP;f{BhJmOH;Aw_=PISYQusawIIm5$&8-|lIg++Icxt8 zy^Dr~-cj(JlvAgrbSG$C#|0DmS=GUuk6=@tpw)DH}CMq>g9rRc>)S1^n z;tFa^v_JNDy!cYJCrT14R^V;=E}na?z8Jgv{5s~dBTfX{2pj&oE`3j@dq^tzF3zx? z<&GFpO@6Vm2D!{R81VVMHe2DH@WV3Rz%U@xXN1Rv-VB0(4H@MZ$lSE{+VX9oRHfFM z3^Oj%Q?>ZmyGlW_Sx7oEr7)`wY! zOY5|y13s^qIw{_qqa%+lGKOCsot*rhIwoIeiMIN+_vg2n6|I1aQ%t{r&il)p<>}S{ zvNb`M+hcz(+aq4T_`?G)x?bEJr9k01dH`Qix`*qH`WMIE?Ua6?UKFNyb{LyfCliQTk9jHDhK+@+<1fo*)}QMDpsS>G!i*$0;m&v74kgC$ zRE_43$y6#wOph{+VDmiHu>`qHqVQ-lSar8cH2M8t9hdCTF4kcPQfMkq%^zlz<(&o3Hfug`4`Mr=^%A&A7&8wTBL zJ7Pm9BJpckCm8qKffRyBM6wsyGK3%!clFHwLL~aqc8Xv^5s58-BNAaCh{OdbA`#;1 zXgJit7GhznP-H%ZFcL8#jKu2Wv~nYYJOyrl;dH#sDupe-r1iXOZMF@t*sFn}LTGimF!|TK$;;WuyPVrfRP4TMsRm8#pjpV0g|kUieS7XBlH`Zy0VZg` z5+jRfg?#{9`WYhB8CV@B=qASK@%hVWGesWL?nZ>_brH!V<_9C-Y(Pw)3HUNwN<#KU zM`npsU4#UimM;tf*Cl&m(IHbvd9Co-BNWcOq$??eD#!b@hkhAF8uP`$Sv^P08Z^-Qniv z#O4m#D}f0F zQiQrr+;t}MdLh&gQ9Z>!+B9r-Uq;l!fQav()xm_~wa&`t>%2+>!H7-_PA|<53c|$n z%E+$Y8NfwKv%XogkD*6Ip!xtC8ThCvb=85B=mbyk1{rOG3ja;yNqp!dBpB^MX_5c{ zGv)^qh`kmMg5;%vF#ShjIT)k;Mg<)`_$q*Pau3ZO|3esjvEiQr#bAlv;OTTR;%l0bVE}(zzY+Gy2f_uu$e8mj6GB@<$38EB1)p! zl9pb(CccW~AUV(8RE4B)t+jx0yNra-*;-jVG16I#&jMpW0``zl(>GOIrA6vag{#JL z!Y{ZV-t7x}557Ql8q{C)I<2|A;JRYC34jSyYjh5=+TmQ*u$H<3;Cb;NUCm69fdp(% z?DwVn9;Q2R^z8KoLwuKgW2U`Nr8F*T&G7d^w(DJ@#%Pds)YOLrs@5*8yr*ZFA*Chg*cY(yp75 zLPk}rjZ_CSctv6wLWcz-Gz#Y-yaANLBKVS}tP$mo#jChbOi`*VtvTPDKW9eau)NIeJ<}Q zH8K7Cb=v*;l_ku6zKz-@IXFvJC^V@Y_tRL6C*B5)Bx2GU-ESUOXBbxwEZ{7B%EPO{ z*%KkuYNWk+TG~Bd5UBzl7=24YXRRKWHf{TSM!i+M=E1HkUyITk`+m3~`L%qMa4IbY zQ`Z!+Ft6^LJ?=HxO+*6V{wN8KY7|L*-9gU2he$R1CZ-G)&)#*}<+IhS*BA|7C6Wcw z?PgLyDP#2l=JZEyUUyAaS*G9`qA%st?{l%I*fxYPBHPXl8|BXv(e>?Qarll>lJOdz zu4;4_efY-C*}|n=aN-r>FBxsIvNbtpb!q)VFQsT{U^jrovWOA)r3>N?#%)FM_D`>& zl9z7x-PxDb#xp7-V$)&IKT=#@=QDZ_Meov2gIvjjz8$TBJ`X0mxa$v)DiOu7t5SLL zc1plCH&sul{_8ipyWPzNXWdM;-AiB9B@rA}EwNm^dPrtSB&OljC zJCUq|k9aJlJMC~8GmLEx-lZAoTRJLx1?-I_-?JClNa7z!I)p4Z$tzZ?UF&aFOkAYU zMnRfmZf#huAKrI@d&Mrv||GgywF_kQB%F9%)|R&IqaXp{8=?<=^%cz z?Z>9I|B*-RIISm?8PO z9?Gm(+RMSeHv19VE!ASQxuq6l5cihtD&IAhTAMM2%Il!R2GM&a(XTnqxObvO%}*jA zMbIgl1+DG5|EgL*emEtCb}F-fS@scZ0801Orz4zRT?AV4CrJ8Bu`*fD$$Y=w&6g;H zyi7}-1M&`MKZKJ^jZELm^n4>D@{JK65s67c8kvWSir)GnT&Sb9q0@b_Ux$vn0{TkC z!n|jR@?%YKE);&ZKOt|KWupy+ezj)%i6{h27F}}3-0HRT)!Cc&0Zp*IXF73NI0jEP zrbSdDYer%;!;&EATO2oYo0fj#&o&`@P_olxN=~lQNkC+2q(pv(Vt3Dz7?qey!8gGk zAHQ;kg+u0Q+)sIFQ5{{~_q4d$!3I}QB z^GJ1KV}uX)Jv~8#@m78E&)s=?^s&?@w22L2O`3Q|PxLla0)?NryW%SV!GOPMbx@W=XKW}dlF*Q_RP{lHHXZeH8?zxG+hN>WANU}rzV?JU!E9XbXDNm!ZP#d}=#_aT z&$OMmJn2(X`X}*uiWH9%J5I;+Q#~997X+(E9OG)UKb^i~`a&r_nv}uv^i>Ggy94Sj z^I?e^b3ZWr(qL+hld4}gs)4Ebl$4yrnzR(gH4z8WtwEXV3sMnov7=?M5>l}-C`ElS z_Q&;7qlAxL!B=~g4O{s<`vdyRCG>t%D}s46Ol$|Ucj97kg>}sC zrSORG?j!XTlf)ful-^k;>*95#v>;vk>sQTP84a>HAFkcERhZvo%rxVF!b}wPUUAai z_qvM-C6ly|UfL}sUl^kaGLU$TaeTEi(s{d*j_}lh?`V6+GLe^a zhrh=2IOc1g;jMs~n0vHH<$Tl;B=LBFU2!KKIS&HGgB4C!_H>_IFAmKNiZ7iY;yfgK*V zRHxID1@NJcs`u_V&5gyTg)@k6u5)k30zZ(_2$;e21yM8Ve3uTu{C0mVoiD}?1PXDj zsr_hs^khr)q%`}<*m6|t>O)2?4-Z7`mZe6S8*3%(5`b~0x-ztfhd29hqT!+YCcoSC zByjbQnGUqbV=A`2*nqTma(~Zs`1!2(A->MvG6v`z09xeLjglaL0Q`bEXdz9CJwTeh zyT3!I`T6;{cm#jxyne$RAP^E7Fcb%Z!CcI$I5eyV5kEk1AYju^Xmohtau7cOgy4pl zmgh&BOM<|FhzNE%L?Z;Tq#$sKq03hRoE>bOWt#v644r;(+~g_f{{~dg#qs55jmu8) z2w}^I1d9oBf_>UeF?s5di1%5=FW$k*hBLlEez7lp;(g~I@wvc@!pFM)Y79#gk&&W~ zj4}KR$3@12^88T%or~Dmr+Wr5&3#D!II;obcJOI5wS*a!pf4l^{DU5qfnNyZ7qa|# zlwnJbqnU*-x~T{rInWUB7a&iPTjHi`j%zE{J&QN1`7Mq8zICIYzZca?m)jv{`c;R| zi-C3cxik+p3pXj}PFK$}59RNL_okCIY3gppro70!&XrCEvK{S=t-i8QKDK;6LR9`@jjLU12FvC_e zc7cZGmb|uWUm08vAFbHgKdDjLzAn2c=UOMqd7-V(c0_aSvT#vDT9aZQ$MO3XEZx`b~R30Phpr#%%S|RAGFX~P4mE%SW45z!OGd$>PfiD z-V)_P2T(qlL_HQO9|a$#8xpvh?p@N|4K!p$FAp|{_R}HL*}zYYR5eUbn9)skmnk1$ zZ>12nJQHs2g1f#AB`GRbk?wO2!K=c~G=VFMPzXWTTY)`Qm^|4p6rZ#FoZxbO-jIiS zop*vBeMF_hZ`=zb;;F`8PC;J`)Kz<~YGZ`T|4wrS{;*ui8CBlW!3rh?{~|;Y{bO z4L{rX(5(GzOJ6M++e_N8p@*6kZ}l%P8Up42*q6|@>w7_BHxkI@tLFE3ji29~*OFi0 zALb8)u~Q0uya(X@?!x}d{rT02ebR-U2Ox!7vKTwwNW6t?ap8ZqxEU8GFV`<;&>!p; z>_9ApWK|!+y0sx>X@KPa8Uey@2{h-o`cLQ#^zWGjq%c(eX$RrAG`HXeJ4YeV{PhDg z><}oZPtZ}L6%<(2&W2o7hx-*+qdg%56@?SEkmH|RG10`~)W1##aQFZM?=MFakW_cg z5^~NAVf;Nl5#Zvt68N9Cu)o9Zp|0%nK4msVR>hIx*gs-yK7%62;xP$n#{5H%< zM5QvSPJS*abff}RDT`T)g^v_%+Z|zq6&^cg3@&hDdIl zR>kwm>Sr>6WQ4`n$gU)O85WM+dlv$tn&?&OxmMg#!*5K)oxh?aUH9O8Tt0c%%CQLF z>4#W+%{n*CFT2(h=qNzI=MERGeU{D?sHSL8;+wqpl!bdmxfdGY;I{)?z z5#3>{z;~owFj3~)T?QtG?%?4saQsGa7&wH8(m3#g&avniw@=!L-^V|pwMe+exXAP7 z5K0(M32Y?!JI8v;fUrItsaE z`tvbfP&j3u-`|1bNg>WN$_l>33_`@?yyHA3*lqa5!{Go873!B`$E7pb*nEI@02^zX zQaZ#>FdFWGeT#S5ZJ{2BbCIPkfRjIZ(NOh~C?mr4Ib`c{{vP`YaPyg(1FgVG)bRgN zA2C7IN6xB4Dr}1A1Ec-Ukm({+;_39)wir-UVISvKWws)A0Bd|jqr_z(?P6s>l+Wa% zNyjo)hiBda> zPp%h8 z6l@_O`?3~BT7eK4OPBaz=3roo-r$Kq(veOj9#bdR!-gn&6>&-)k?^w#7wM6DdVkPG z>gR{%c%8)8k6%?{)q4ZVISy{kb!u&Fgt zyXt)s9}0(}G$2v7k$&}{gm^SKsSuGuu8nTpM089lDKU0VUD$%KhFBghaFpy8*JPgo zA=ECJ0kDJ$CbbCqRIPH~FLI4z_X>z5;(o#$li=RVi78j;qc zy@2`kL{)Stg=&_7S2^3o+R`%}OO9cNL-pXv@mUfB=7U)cf{{Comjz-7%rMOq0Ee%UMHV}v(o z5;|eU^=S^gPi@roWr#!J!vY&$B`SKlKOf^LE&b4r6cB#Hk#rY01Q83&9=eItseolk zO%dC}h%nt7cb9w**-B>>3x+ppjjTl1-G|>asdL~&#e{Ay!Df$qx86R}6wJ(cmkj}f zY8xC`--esSwYo3=gw1FKb+GO`q=z+^orjp2AQd8iOqn!f_$Zt*NQ2^j$t1qYQOz|2 zKV$GItTMbN`nbYMVXk8EisjBx^hpdHvWR=NjU{eVJpEW&`9%*|cBGEjngkVOD8N6l z`?#nXaJHr)|E#tOdA(Lv2%rNtRO!7Q4^3t`ez6vKG9A{R+_O0j(%ZbMU4e19YZ2xR zB*g-;AA<9?fI~BI*DP(;CI_&@6p4*$&q~n|@se|3yn0Bds1sR~a6BVrax{C_^09y< zMFXAUz>I~bA{j9BqK;jeLYcZrH8I@%2wfW}CijX4;g4#%U6ujgX`2h9_1R}-}@;9okdG51ofddQ*jPavis5E9>R1xYDZQp1PDuOS3S;-(UR zh>AdIw@_Fb7Nw#>t%Aq2>tNWSs1HnDnWxyXFj5^2_Hqsg1i`3MGr^e1lmfb-`y|~(fBM7P#Gyz76`}2 zU0A@q+4*6!IK!nj-o z1?W6pl;mvp9durg&8*l8d@0jEk$*!!28NlO15pF`Hs-Z2f9Abh*3Rg+N_R0%e0XYX zuf&B)=bGyaqXSruriCV7a(LtQRkDt$o!faBuP)66UcHhFV%H$Pda!_XF$!h$#oSz+N)$uf;Yk-VD1vq{MUlM+vGi6&t{B#Qw@{G#hjF>IC5`7m}oaUBuJ5U$ECj}}M z>g}3#+OEH{;@!qYH?T6xXdFDa!{cgrjij)JS7o*-&Sos6#FJP~uzN!Xj3VVro)Q+2 zl_VP=Hl!b>lj{gU?AD9xI;&9VJohk!BwzZ@)u=2b8#3s(Th@~njSDhlIu77^EnC{? z5zJ^^+KSef4A^@T(072iMOE`%!?)IIuaXJMAJv@6SG=9=hG7xV~=^6S2 zfEgf~J#rp!*w5@cVRyHwR?acr#1C6D`hI3I?}OzVZGj}yKCqlUWBU>6mpu-m(;J5x zp`fu3Pg)-S7(_vhGJ~8)<)M%zj{aLpBFM#U&S%O6HeW=h`pq_gO3Z+N10n`TSwEvI zlrb^0{S9lv8sr!l9UOHV?N^Kb<7U7P1{5HYNR*cYflfg2jbxmDJK|NuVg~ZQHH3;R z@p14={FEGHv);BbllUKW8{KJntO*Fz;v_qmi0be1rVP?HO|6i`hcABB%2XFB7#EIS z$rn$_lPZmqj_i$(t>WR>Z^gF|0k8QIGVs98l;~VL zLyq4~B;ChDO7M{5YjASV4e3S5N$br$_F3SSTJwEJPK;`CSw;_KmH65>%I?*$3G|m7 zvvzuyRHC`ZQ$wCh#qT?+Ah(5pC0N1$^B)5f^r>k5^;Db(6o!=)*j)Y+ ze@F3iaZf10qHv;X{-dLhZr2D)hs7KH$ z=I-!kwg`mlz(!1M^PnSo%WW3O)kAcI z0yPZw{QnSkmSIt_ZMUYoyE~=3OS)5#?rxQm7`nTL?rx;JLuu(Q36bt*4?eHY>-Qad zADch?U}l(sJFjc4bBQ@h#PSwKMAKl}ub~xt9PkZnFQ1g2zSBA?uUhzZc2u>HQ0M=x zqS%u77osukddHg6+h`NjLTc^sk|`(sX?O@yuRx_OJk6SZQ?8X*tlK%ApkFyZV+Unb z#qw;ibBP%YYQ>A5*CnL|>ko1zQOAbj^Y-uN0e9=nABcyGOSZ1CcAzR}X?Cj#Hrj)U ztu$1ufLyK7zk1~^9Kz+u6B5!22`%ZDJ#5zS%`>%wDd4wis=*(%`MH#rg7MdgtiR16 z%GP1jAZ&mg27Gd{V1)SII1;G7T+Tr%?3VNO7wqDA7-R|OEgBzl@cYTxiHwuEp?h7I zcmSnWC*c*cOMcl;Ch5a82hlhto+&S_$GAHp*DsiTD6R~;!44VAy*~UqChH0VE=_If zjwJJ!Q>DC12gefPEG%qYr$_W{7AzYrrPfy%haSCN0@q;g1oRIpw|zc|u!Vh-iy?4n zU3dGXlCDbIPsd$Fu0`fPUBw5M(s-rF`Uu$P**it$(N(yv3$NlimhuiL5`=JfIiO3P@mqw+y1>~gd?87M{p4K>_|ht%Sj_IY6B2v z97(g$V_?h1O0d-lsX$OADzv-e8|96t*huL;OEaRid`x>A*bbQ|7(wLMQhJ_2Cvz5b zTTeY65w2z5=cV=oE24c|sxdZ6!XCYVyW;fy_b&-%{3!`gv{3JY(9<)`T;t>ib~z}+ zRtC@f=NeRSm&v}R{?zIJzW$VAg9r=26v;|aHn5H#slp&C=$V;W|2lB|BB4$)Dw>RzDJHsb7X=TW z3(D;Ti!I`Vbcv)&y}27Blbb>$>=O>o)ewdac7gdvMy8K?znt0o@qQfgfaHsS|Hza7 zcW&};5iTE(1s5;(|EOWT9=U<}YCNy;7NdVIXMB7hEF7oVQPOX{;*eq5WpSm9(CoDT zJ6%rs_{JifWwV?~8A8HHy58j0uMX)+tA}6G`>)A&?l+`h(RFe`a*?^3V|Fel*i%%%SY3S|)Sg!>D?HTi zkqIBg(KFd^RD>>t8nt)m z%V9jrD(u>HIz;_WP-tuT^MXzJ*8(nh=me#T4&~^WWupuC^cVMQtqmWp%I^-AXmoDY zqOt^saxGHoC*JRy8plsAwa=S)hF4n6&)f7Z7)EIy==dM5Q?GpLNu5!5;~KsC2$ovr)v^nFBF zRi1rQNxMcVXqpM_leImw7zLZImqr6FBHw+ZflW1Jr)B#%X8OXUuz3Y7c(aA4Fv8Cu zBQNhEUf@=ayARuh=kZv=b6&5JM#bmTJ}vzb01|WWnH#vt<*90gYN^GijLq&n;<*G# zNU|f9ZcMID$OhEM_U^rZw>_=qkR*IF%PC!Nd3L}%OMp+$U@qBLqQwzfGBN3D$HgME zXkMs!SWY0myg!IezQtHgbiJyLjgE_nPZlg_*BiT3C&c~(6^U}>xOgZ~_*UTv#n|36F=kZ22( z5^B#Ksy(U_iDKt#6AsMPfyD!E^dZ3l7viC@feQghNPwHy6zqy#urP2u-@vsnadg8z zl+G9QeW!Cn)Sa@1@(8%re$+9;G2pQGvnYZf9zfA>1j+rut(C|cf7h8ndjB8*bRgLb zMrCO2ow(_A^KEn z>%xK3{m;UTT6Mq_{sELCX*ioH!_iL(YQkxgqR@ zx0Bs4srSv+SKCETWM5iFV)rLu{9X$hip%wb(F>Cn?Ki{62NzleL5)_*z||~k%o5sdaAqS7mDKCurL13 zJMF-K1mobjJu2CybrzH5L?0Y`-uK`pjh!VSmAO@0fuPG2FyD_Xg$!uDy$ zfUnXyCvc)1Xx07z+(K_|=qOoH=xI*q6p5cXS+ti?U&yyfsET?HPyjJ-*o_nZ?-PpZ zl-fN7Y;72v^wuvhzA|s)rG}DAU#BEE5k$rNJR21?LWIE^%5@o*BpQZm%pYi=_L8_f z-l_nqpLdahp^tst6iw~jJE;UYd`>?TJvZVMoPNk|^~LsZ;v!6gNU+1ZN+Cv@*i$I) z$U+t`4dij~^d9;AmS0O(Ii$ivM#(yPOnXC<88biD|9VC~O+%`Gzbeu1VY}OY^)0m0 zy|YAzim4;^a%VFB->9S4-cH~liF@&XdON@M{~$C8ANyZ5%h%ox$7^rLnQ532=3G!{ zTbx}@{~Kn+ceRKB`Ed3+^-PR}x~tzU9{j)ZAb{<~D0sl-5_l?tWzg?2S?V^N03DYx z{-_Q4EI3WsfTC^?|G7+nKqBvui7@`TOq5p0MDoo1!vF-bHN(&Xnt91A*u>b7Sl`xy zI4JOB0kHirG;u56Zu9J)I%Sq34@{YFtCzuSpsr0Zm$JBpTmWt}(WT8-5y>g%P! zlc|GrRGhy+sBdy2kCSZ#J5UvA_5-2N(d<+1`Dk7?3 zwFhIzAlv*3hpY~pT|9?jlkAFQEYwChI=?LP{>Z$#%lV7=RKWey-TJ}J`m;(G;H>ZS zL(|K_Q4|XD6Kex>@Q|F9`vUl)&Hs#vf{(@|5Y6fB?%k3Ap{IpH?>dlUP||QI^OyoI>tIrx7xw-($_S@1kQq<+jc^e`r>g;~ob86?~?q!SRFh zT$8O&;=852l#hK*SXOgvU-XXCF*OGP%dt{@t!or?C45JWWh*ICy9p))-zB1w!80Qu zkV9j`;Cqg8WyGe~j~ugENOc$928RBcfLoLIVj5j8QYLVX3Gr5*$&GS}J?;*Ukmln^ zw1oI3O$J3x7?o=_A?FpWp6?#Wdg#*hZ6%K#$%cY$#zlXJ`xwN4MFRHWjo(rMQrxE- zGy88nPSmQGqxu|06Zm}$p?w&PA1%Bw=1V)+F(8L;>fbY#se;3Bl|tSsg58oKZ7^j+ z$u|n96c<~4s3waby?`U0EQsE4^V{fS_2yhCDJ8 zx_lu;gUxhoLh|dWX`D8Dg!%v!fD6+H_iVY=UTBdb7%)3PZ(`yNZ$RxM0_{_7{J86l zQ9BM<{cGr`G${GpJDK>cl)z29m8Q#Tyse9$wU|5TZcxw$wv zxc^$vf0s30HX&)6F2+!#zyYt5EAUa02nn?OHxU2%eSB;nng;X1ECz$do;NL9VRIxBP@v?iMP3L z#LDVFwgsc*7)87%rJsc3g4i@hqa^4~?O6SM9W6c0#oYr?+;uo+zj)eBe*suphJ5>) zn#rYXZe(9y$J?`C%df##pFWzGY4#mUEt8YU z6jkBG0&`mdUA;+UHAhb`JTol!CYQwF;i(x(Uu%LTTnq!YmA_Wu)qr_3K#N}MwU{tK zz*L*RPv=iaLS!Z5H4>)8H8N5WjrYQ*3xNDFvXPtPD|-$O0}VUOBS|g>{`K7a)XB-$ z3qLU2SFe{x-{Rb(wVOukl9lbAf(@IaWrf1>Q5r%DAToc<`W0J9FS0ZCls<}P{ik!w z4uS|TnIMT*yxt}yMDKPgkm)gBLfP`ZAPJc@aKDskhi$~wRES2(@a=6NYXUw=NYGgE zs)9+l9vW75N~ACX+`7$Y>?98phITJhiKt%Ks4b<=#$a7Tj4>Y0^oGrE#yaPpxsuvj zk&bD#0KFBq)T|NoPzfmf-FlMv-4jVpK|Bp>uv7f>{!IZN%1Sk4q0$mW3=;0YBh9JXb$1#GN4hHX;bG@hql_n$5|=@kus(_!9` zLl^YwM*%FD2Sj5!u&!D|Qg&KG8*F&p?|!PkGCA&WFInS*D3PJ}%?N*2EO#ALJPyo2wv^V7n|^AOCh$#a_E*vgad z5x_VK)5J0y02Je!+({R^#%P@oJn=ny%;Sx}3AVdfo6Fi{bhf1Ds8iK_(1%`WoP)qT zXD9bAf}*3)@&%TU+>a8*-y?=xE!*&KjO~di4Bfj-T`egp3P0s(Qi=B((Cio6{_^y} zsE&9J2D*FdTA^HAQ<9i`x&(Zf!pIk49AQ4%-(NSG0VVe2p;jZ-&q3awfG2B1jC;=3Y zlC`*aQ5K7!3a&F$PBQSkpAFir=5;!m%qUYxbFYF0GsXblck^7a<22gx(R|MN5FJ0@ zpY8$cy656ByHAN-{oERg#Oip<42(1~T66Jdr?3-o{kB9{&I_&%t>m%0_FINO-Aqrd zY$ns*-e=O5Y(ht0`Xidxv`>RcYXQa-5N#R3;fJ*ROs&h0`LnAhI^P{m^x5uV3c0&K z2?BeZ8jdVmt`Jc@OslQiRjHQI-2kh}j`Dq-kY5_uFC^2o)_4dyaSx z$B6ah-%c4}xCP??PTDawVB976RGUt~-58kg=r0J-g$?@gG(#7!Dn8{o2`GYEh}uiH zBa^?(?y9P}Hu9zRp6QLy8OCEnK2fqy6INqAvp)-wNMVb11J(@DdFXv%@f|{EnO`-U zM7WOIqmO&T;fI5e8h(_EcEBJ{>B=CH(iXWC4{GhnS9$Sv7VJ(TAk6I4a-#~Y=2GRC zDNU((VnSR;_ERaQ0JbTT2m!<+hYUu0bpAo~&P-*-W;U%8u- z8b#G6&SQ5rQCZ7~74`#AumtuPE$v^TeTH<{xzt(=pOkzuA)|>?AyG&&&NhCA5Eh4? z_qV1}B!xAwVqDRyasa&4ioRDDFij{GWyI+YS>56?u;oxSkz! zqbzYC0wZegr}50wy^74r)eSc9X$!U)=pqJS@6HOAIGuvc@7Z;e7EXbQCFur-IR$`~ zU-I=X3dC3GKHB{vlG2AA7N_6Q6N%G|!KQS9xHxVYZ z7QS>e-3STae|hRUy`eoy2otb+DJUTnep3I5pN=0j5l9oDig^F>R}1Tvw-JL*75Yl& z?g#Cm|LoVs#;m-oz&I@Ezk$iGxD6DbqZkYxa1F!(Z%R^ye*DKyy~0BtEehJ~3;&4W zj4jx>IE~Hz(@h}JLe!}vohl(Q8CFDClx@1=S#{~p$nOo@nd_YK$Nv+@@B%rQY3+sA5 z>P${eZ={V%EdPxiLuI&IMv;Jje&@vE`DG`%#v#*Xq(T56QvLl+Y)&0O8Q>6A-Vkr> zkhEu#l&0Cd1Rh{q4fYYb7N_qm>5L#i@5D=gT1o7LHc@i@p5(E#BHtiu993XYUG<9$ z2VZxZm_l#|(jf}fbx*u1z3(xAKkeE;FNJy{Jv#%*_XIFAO zd=aCXWyKplF>OttF2p7%a_sorno-m@)BfYKpn63RC@k!;EV6)}+Ob)pc!L5+uGX$w zm#XV;PvF5$|9+DADXsnCOB;R7iHGI=rw@)BMz$9By=E4zC)O69O$4_eu6eg1*QK{z zMOWUy=|BsT-i8>jLkuzuZ(zvuaOTUYhiY)?t)roYwAF;FeTge1&bgxD6pDtTM^~q7 z7_C=Rr$n_wqIHq&eoLOh*3(b}aLnH@mhH>4_*#ahkNTkLAN`FWBr!A)6K3F;wffi6 zmHy+SM%&4O5HLm$fUX=X!B)8a)}RU+7V2b!+{FcXkq)|eGkB2%;lp>0;1gByE} zrO86paMG}JVnbKGxC(G`i%B4IkEf_BI&3{l>oMAX;TaxW0xoxT0pj5feAKrKU9qOa z^u?2Lg^FgfA;}=Njr*w8O-JhDs+i~4?!yyg+Zc2lWdurlw*yAhO<4bxy(YLiX`*=aU8P&+FAO=IH~So4Q5t?oT*5Fc5{6yz%$b-i3 zdVVOP%W>71Gstsl-aP;rSS9Z^`XH+Fc=rgP3etxh#w^+>K#OK5rnPvo-QnEgpFRMd zUX1a!XGDsJS__SpU7N!%D^qM~N`59&6$E2{eW? zgMJ_QDfPZirv58BmeA>msQ$w!u~=Gi%1gxmGBN&dx@aJo2@=+CDiZRe+Ql!>(DC`x zGdAHcHs;~s0#PsI3B|Cota4^ZCrMSxiY2j_n&l&zRIS^r?NNgQ;rI$dLKR#s#=4(P zK>mx4PcH#kzZUbQb2~zF_DDRxn>uE7+$erABl%Gp-t6i)E9%la2(s8?h3nMToSRUD+&i~tf|8gRyO8sL-UssMXfY^im zVcm`M>o(V*NB^4}0^EQ_Zy4;Q0h7|~b{v5kfXkc)nIQHA{F#|JMyA+lj4)pFVVKU( z3(NySl!Wq9K!hv?GE9#s%S)&OLP8q0$Mx>AOkbGAFj;Jm3R>Nm@ni17BX#GcVD@-s zrpSZvFP3N~pn=~BV=Qg%Gr?MU>aCCk1dwAMu#>+Ju~38|Pv1>g|4ifK%Y@_VxMYH2 zfH|)#F!Ru48qQ7QMCg{7AwN7~1I5Q<3}_?{8(nxpWeN=bIyr=$StqZ7m_TC^j+5L^$4|4M1M8jA_NQRI zvW3YJ68^=ntqV?YM=Od0J5Sx)9xuSl!vx2jhk^%W`HeTza$QJ5ztzaj! ztaOupq`2Sxt+!46cn$X|g=_I~3p2g!_gwCu#3%Uc>bjg#sdHK-t3|G|{P@$4 zB_50^gO$9^&Y*8cA5SKVi|Z#0>jNYY-sc@(DAsPORgf(`$zQw(#3DGCf1yJ|}c?6*DS4p{#cASoGF**`BC|a~Q$XfE# zMT^TpA^%hi#B}YET83ED_8XL#l)}q@3Imm>2r8>H6-fDp{qQ0#vN7B1yqHIq3oXGY zGG*7r?M;k@tUl+6O`(gRVUk$2!@y5#De6$vPi-&T*gV9ui6p$u^q&Pj( ztOyY3V}a;vU=5BChNoF`)n{Sz>2tH5JQ>>LDUv1bs)p!lGk#3=!oV%a@45Lc-<-UChrg>CYH0+$E?B4KlgqHcsy2?uj#^fq(AamZ!NECKKN9WHHH*cG*V z*6kD4ZDq)r?wM?j-6hkdpfAz(O~@h>ZwHo}pE>=obG(A|V$1L#IxR6aS7|=pgJCMU zWRqfi8|uKj@Xw^-X)|n*PqMZ06KXeLv;ndDw)vL@M0Z?BHbsQFSg4y+hW{P)uX4s@ zvg6fw&{FtshL8y#2gtm!fK2&Mf$CN3+yoLc>VgAaVOeC2mY<72lVtKwV-oamQx0>U zomW_v7+#jw?G#HFvt~_=3ijuP!cy7t!ZB_|^dQZ8zd3PinnhXmFKx1J+)t;85k23u?QKbR{u2JhOoKD8uFy_$ zzBU-hemJ*M@x@|)AAtA4AU>7qSG*oQIFhWvRLbSaIe>Sg*$W}}sIN+^KLAe^6|=hq zHDR08FsCB;O3yFl2mhhKTNePAp2prp-dbewuvjE`5rge&HVm!K*Gyr|(tf$-s|T6o z1JpE{V|g~zxEr)I`}}{I`G~*ntpL#ZJjsEJyJgF2nfexP>PLpUF-%M@{kLGivU2^p=79#uT4-| zqq-->`^Om#70qk}9of|E#TdUQ#{PU?pC8xyktr9RSCy#KiZg`5B@l!$HzZ2_d+N7D z52BgDchI5wV6)wgCU4y&{Fzzc*B`Arq=>FPe!Q7*=4LRBN~0F1+afW^a`CmR*2J3) zos*O5jSTPrG@@2DkJI&Po_| zBbVr)c!GXGSqWT6Vj8+ou822El6o#@nGu~Yo%$qE;_Nysu<NCPUG`TYS4h*{r4zf0%}N@{TD(DvQ}#THf_s$fVwpgB5HF;^djN+DIlTNWk`T5Joh4^a0oDKMV*`+RpWzWQbm7tAus*4nbF zCOX0j>2OkdoC|#zd@|KQ!*~#5`gIb1@vtE#1igvXKX1a6lN$u8{+r?PC%GLONGyhk z4=k4e$7tf*N2~w`ydHJ@qrXFyf@bl*%uiDgRf&t+9E5q4gJeTnvk|Kl(Qxz+A;ZRM zjbI8FDXH8L6I0#qkuNM-v_m$llaJT@j2Fni{)hhiTMIgt>h&6Fn(*b6~ENtpX!A2n_vh+Hl)GT z0g&EEZkfnUValteMJ>4zb>ydU@HAXGW1KZUWisP z-0rDF=hku&@8)+^a%#nBbH|5ZyI3?;T!2EL2F9CDY6Svf*>G2>Y88?R6xle`J6ix^ z5M(Cs=e3slsCeRCN}BpvN1q1nLQvfq?AOwi3?3#4@3zs4v^P`N)7w5@H;DhcF2DXq zNfxgp3_wF-?vDV#l$XPT*VuGcW7P&E02tr$udgRtUekaA1Zb$R%JSG(GB4SSspQHt zc;@!Xr6|(0QQqNO&^!dFcp+Ws7kHK$T~W7R_tKs!#B0|P;-ZT=ZER;yt*4%3d` zU$^Ki68VKp5c4Zhq64RWmpC$IUm)X}jglE5Bd)KsD=x zmqmfXCRhULmO=O*`M4M@VD2~9cRwDdlfq8cv+NwJ0mQzFJy{+6%O#mvvWQj&Rhis{ zPuDwR^A9z9Zg2)6x8A3Y{`wG{;#8w>LGR%!eo)|oqt?X4ixz;-Z+c+Y&_njK?)LX( zA(ZV-p08RCBRwFs_+x!dYPXZ^1Ye_;JnpSbXo6rKqv*`#c7wF|5WY$!T9ML8!H_87 zo-KjJ0l<~cV~l^tO6f1&%ZI=5Wq5)*fcwI+R7N3AzTaIHd%jyYOOtrRYSVa4tqnnt zU0h-+)TvNd*I{=!CDTNK9S!NOHe8#<5)dn%{#9Y{9{fOYc9$ce>y!02DsWAS#f~pw zBoJAg6@8y-bR38{Vq#jTS#dSF-!S1NU^KoXN&;x|zgf0XOJlLF&d~X6H82xCg)NUI8-ZzMNNy3+K!CNLiTcsajIJw-?n$`--Vy;EfULu=? zgO9hHs_L76Ns(R^cM#T{bFXU?(Vv=_DW93Si3#@~iz_gV9~ti-cPpzVFm4W6;FIZZ40liNLzzK3 z_xVuS#RR@W_dHn?9`_p78(E#vo)a~}aBi~kjiJnzP49^;P$2sb+lmdhKafJM0K6G| z9Xy?U{ftp3y${BbkcvdxVXGh3$XiY*(;kH1uEMgX;@vDltTx4>V-B)Kk6khJgl%p$wYK*bn_8xrB4!154yG@ zmW}mK2k&&Q9az1oq_H%knkmX^{d!1nWLcy7rDo`9O(+p8*j3S?5#0W2X8v!5CTJ*t znV6bbfEcoWXU@IuriiI$+9==e{|)6|sJoZaGY?0_b)#{^ao7;yqe2pk)Nx%eIT ztDLk!hX@jNM$!J~_GM~n&I;OzSG7I$ux3d}p|H8IV|$y*{nNhn9)FWJve2Al*foV8 zfReyEOc>n7SYzR_&kQ>Sa_4M zn7a7UVqtS?Z%u?bd&0>TFfs1cwSMP4@#teYK2=meH8xFOrvQDw6|N#~?Gwi?X_%K% z%%WM6kNxKA(pq);olOwG9`@9FgwxYv@;wp}jLxlo>F6*EC*D}{q<^nJV+6TrFb!LN zL49+-od$g!C(PE%BMYZIx{YdJ8g{NZ%;av`H>?-+=LEnh3ym)sAPa>Y&d_%@#>wM= zdMgxi&kIcH6g->MpvH(?>^=Q4ZTSOZ<3#wSuB12A`rd#uI*}HOlRGB!eQWc%B20ibPRm_!K4?1P`f44>`=Wly8hji{I>rZsCM9Jgnx{7CDH>L5k@S?Cm6} z4lxuh+?vJct?$ZMBM1hf&Fy2e)yV-Jocq!WRg@QC^uaq_qVHK@7B`J6SaH%dD;ULU z_c~p}-qv1}XXmIK>H_YSOi02r-!=!6c5@ScWZmCb0ILrd1 zVo$5ATp0hd!g9MqeD|KWqS}WB9`?XMhUHhX*TP5UL-9dSpE6!95Lsn zOr$=i0cW^FDgX-fnwQ1M_%Ee2-lyST^?1162kkAKs(C!A<`*%B%l1g`KU(KQ;UP;v zZo(vwiOl(qafALecUcu5zrxi>p)@mHffe0GYDGY$yigF>sL~xzPS+999U~t3rMQH* zdg~M0Owk=D*=p5b<#yz|s|9w<$;|NILIhKz=F}-(hebBR?EnI@TtxjUKT<57=3FN-lzPt!0l%IL-&C} zcADsz#}MFMid3+MYOQMi`xW_hjo4{$2bj%qo6b<--lRnWpW z20MX3TS+1t5%i&*OhY3gf#a?*G&t$!{%H&pmMY>!wh*b&+5+PZ&4voqlzEz zy$3!|@_Qh=Y(EWY6XSNuD+eqA(chnu(8i-8@CJQzG(BJ?EMxdypJj&^G5kWy6ZoO0 zHlhvN;JGY#Jr$K>UY*pu!VQKV{@#&GWGW=hc7eQp`=NlBf|nX4%hpj?bPla)L3eR& zixd&C!$KV!W(tUNzuCk{%Che3rxl!`3llmyp{v49C=sBPMf5_USDw+XGwp&VdI8!ZRO-GZSZPI0r%Ji4x7J zUM<@$Sb|O~@OW>#-235x{EgExaqE34Cle>&em8YMBYl0oVv6Ot!~gy$YOG=k_TrjU zLdb}L6X2NDZ&}}HvSq&q%R8{;k^dBTn?rRlE(2ksWJHB1oJB#tsVmG7D$5BeKwf+N z2t~QbN~Zd@w>Tm<6j>S`h+Mi+LUa1*?5WF>kLT$_R2nwH&y1AAN+#6sIT+eVBl~6m zcN^#U*`wlI@Wij_lKe6`O=JfQHOUM(*#@B0=*s9`_wQdsX@_Sk@mbyBS9odkly6Nu`hh@07td+PDt0#G zT4==Fa%~h)GO3V&HCp3>qS4lDgu)AGi@>qn%LYe<=6I_&iZiw&Z8`+a@p0M%9(MgR zT}qrubZVKZQlhvXEAo1yJTL#7ln*4M_a+bm*0LfRO6xaAU3mL`C(m&9JhV)zCaB#+ zsZtHJY{)6FmZQ?KC+=Q??r2QW%Gp|OCPb~pAx1=BZ%{z5l3L#%$~W$CHb?_tA`}iC z6kIq}Yzxe%L@hHD1amHSNA)FLs&elZf%QT#-`h38?0#JF3uh_!#za(E1zM@~LI$S! z#+US?e`ngtbct){GsBb0p%dj#;eXxtv$B4~3=T=+Ki* zhsrKSt7?#VV`!MiIJrl7Cl3oiX9jG9#X4|O?Yp>jdSBNAQxq1s6{wo zABOY@Eb;@lP~8<-0mudPjNdKO<=))ddcg_j>n?s2??|Bk(YKkyjewsNai4-x zVwX44wtmBkjmLyTAN1=G>Uhv!K62+9QNrTz3$I_BZAu4bQAi~-<2WK)^MIaX`c0a@BE&VhCt6V7hbCnHz!Ca=KwA&=5B3&FR#a=!892+0<2NMW!jkSP_!p_G$(~h_YaJFeeHcMX$EV_$c%O+z@%`vk%3#kEWil z8N$5rjpNb~3&_6#t18pBM7az+K1O8n-C`6uU!8gFIweFYEH@=8wDR&+2@n{P2fAUV zzSmFxvg!8(mE5>9l z3sGm{Ha;VA>gzlNoN>+g4N+3ZxP4HC4mhYVh&Kh;*h{p1qmzvBdHyY*TFZF`OLG-J#dfnUvoPMEW#aY&gbL$R-AKn9h7 zuun_XsYido4y@hD6yg`AwO(C=Y-m0}Q7mSfDo>Sqk85SJ`SwazVQPX0x|&$bZF{=< zVe)tkscEnl5a&Ev^`)Hqc}2E(kd2V#vwELM8`1jh%BaIEp+vsUxb1AYChVn7i2KvN zD>jGegOAj_-~6W^VvO?4a7-p0!CgnIuC$#Y1Y92s`l4|5ZOOK-HkAqSDwHh**-5bx zo`UZjZ}wCD(m4?(-w0ZnRYRFStQ2H&P9Ub|Fg?T}1JYl{kwRIP4?n0`ntRTR??iI- z>*AT!oV5`|+dVf+bh-(3uf6v{=V&t=L6CAYB-hqHV@uU*;A0%7gQPP zeG*e`3ZMYUOjx=;KAJ!3TTGM6#;H0@S!TdSIVJoG>32)jEvFzBJVDNuYYSGH0#PsJ zzE5z(b(s+4KLOe1>zE4ooguZWDo(6R!;;gF-V7D+E-145m?E7XYiAjI);bVuuQ7hK zjua5?6?UC=_Ixjz$NKr@K1tTyZbPCngurwI0dPl$O0c<0xMGgMy$I&`5X%3M`)qtH zoGLAFAq0hu1k8!V;4m6@*Fi&(N!|!)xt! z>Chjhri}ipt6@I?f8A4FE7UTO3ix=S3&^{FFCZ3NY^L1**3#39tvrKoKq^JV=$0GoauDJn?TmW*CE6oh#_Q#Qsrnnz5Oh znDKJ0s`beAfm+ma28o(t?U#)q2VVmlHOeFvu~`r#bLVjusnT2H6~7%9P3lHJ`)^f; zLQnYkNq6@lIG7O-9wH(|X(6iy#;dC~xx znjpL6rbS0>otmh#Ad-C2n;-kS^RO#Tr3|opLza*%8#EwR4-2oV+Rd2l<%Bp#ElusN z$rvd(?;K5IKVa|Wab!VPdcO$o<_*>Gps-VLECX0NKa~^q3S$G-+uXR~7ds{{y8v0l z5AZdKi!yp4F{f$dGnv#&%z~@HhbF*0rTYQA81`GdP9aj_*f=exRXF|B>+}k7>9(dz&N1L*v`s9pcAB9e#QK{_CNB z6PvWXV5wsxXcwqjEL{noze*dgE~{0G2>TFFX(RSeX~T?{lb!3oRJ}iuuK2%QRuzpaYBOd}#AsH0-+06)!pVbqJHsna+ z!$w2J(FAFYLKaLV1u5Pp2QLu20vK3&8uv^?^|L}FrR!wblMbMC_{g?Oh+J?NH#!$k z;AwU=%7Md6PN+S7xGz%y6x9rbuvV$(-O<9sqmZ|$oDp^Y^;oC+P>b)+4D+#zkFMR1 z6A`WaKM{L*66}CA@#=^hQm8XOJ6f`3wvCuXOe*Hh1(M)Yyh(5c6g(wRqS)fwZ6NV* z6XX}aEO1(?|A3spdh5e{iMqky-vfErA*n=31U(0baDxAn^F{HEG9^o!gZdTIB8~gM zv-6->|7UidQBO4lFdg(N0Kf2yID2*8ZLlI#yANPrb-{Lk97c*==SV4cq%e3Vg?u(g zpF?H(U{UzmTiko$C6P#27r=y_CE~?!A^F_EA#F4p&3(1=8CDgsvzCdLTFwpq;{qfM-wOe+$egn?SJcO7Pzr^2Z@E zx;LP;Oyo~*z?{{Bhm+$kF5GVox!^M#byGPz(m2HLa!L|<0BHm0t)u@DqM38>vYK<4 zuD<)HPuHIlrPGi%u!a*UIi;Ugug1hJ&j<&O_*N7_s@G?Yf4K$hUI zuXVWalFBBhu)N>jQe|TkR&YMo4In-W5;*& zpIbD`>=H+2Eyt201l1_f5_H7Han5VZN|>A!f=fWBQVDr9{qJb~_J?qJQv1O*}b(jwW~skFz4yr>!agO2+L=QWH`45e*+IGmU( zDFE?yCBwoa-hn`h7?sX0`>OWlDR(r$S)!F^gm03Yjhm27%^gIzX|#D8BEiRFI5r|^ z5>$iO&|2uO8gGopjw%KCcJ}rVCbry)#`>d@1zFYf&{|G8U-VUuu~<|}RBhnqmB9v7 zyD2~OC8+Pl`@DSY5Vwi@^Ii|nksocF>XWdQL3DSrSqjdNLKf&T0o41KA>DUf0T_## z_g^$`Q}Jup$g)gwSl#N$#bMcw-)*E*ZgAHYJG;}sai>gW1xC68kg4$OVUS)d;XcG< zjTm&L0zDqrnIG=A=kI?oZ(G4rHQO=o69{Ono7a0!H@;^wtCfs3sBxd|J)1*j?wq{&7m zel^MdfuaIOdl1Ng4|=dzO`#faaNvMfgJpJKdnPVuf^7aft+;sD*m%rV6BR*f54@pO zAY>#qp3|m9u0I%hIlXzeZ&EKB5*ueCF&Y*&t+S@QEWv=%qQetZ#vPW7Oq-Kvdj@YL z0|u!tYERUVtl$@ObyOLmn#+^znXazvA=j-ebEfJFjPwxBHBP_^RcNRrwLvbMgJGYA zXD&zAr1iGzNISc_nD)bI-Wo5msu1RPR4L{Q$(Qr^SvQPyWCLeDqR>#jFy(DOGeY(- zd_Ut$QtrON;O^jsg{0ZwtoO;1&MYA@HVT}GPG6~Qy-?&wH5B7B}U z{X9REU(X?VZ~WUjR}(TY-l=4w?<(N7?sJPa(+o5>U9Vh&S1PWm>xyD?TIi6s=2(vu zO6iT)QC5SllqTuAGO^`G4E|A#H%{xUbr2nUPFyQt!a>&COP>?i7*v0O&ktA`k>&~= zaTdx+D4)Ju^uECScg=s53#}vA7@e$&cm6MB3^gls4IsbriexU4qFVK)13*sZO z;O40$CIxe8S2l3~_PjFYDv%KEff-m3g1}jPI7{#vpgl-sPxvap{E6uP!VUTy|7J&- zo0*uIasTx>8i21Rb->kwRBf|RvX4U7$N+Sv~k zF(EQsq>FYst*b;AqJ z5oP0;VaFPv-nkn{r7xx556905pZ!04ePvW!+tMxW?!h5JgE#K(?oP1ANsu5xI#{sa zB#k=+f_rcX?(XjH?yt!?=ic*uZ@kAC%^!Mo5B9FTR@JOobAINeP;~MHs@dve$DWU9 zk%$JU{*Q)}HWcwzDTQDe{3;mu3;h4g#s^CB!u-3< zgfGgOB)Zu~tPqBC9)^k&UUq|%oZBU;=9^&rPIe12QIBQAEYFE&WwB+sl}kYQS_W3~ zhyQEYYT9TTBn|XhdWe6k25g5%{2S;<^9%(0u>TM($dI639vE2mw|TCRhlL;O?+y=; z#~i=`@hF3k>;ENi`$wrKZ3}@AT(pEtTzmKd4iWAT_2?xFgGAe(pFhbM&=ew~#>f5d zWb7p@FKIsfe$mPv|7T|hnws$d+1WPL73@gZv9!lV^4gB}~OC8r;?cI}~~t zf<@bOz?23R%rk_s_Uj4<4*}w=P51H7D{IND5uja~krp*)R@bXci^D|;g-kGp_kiqO zb7BlKaKGWUx4-!r98u$1KB`$JK>{HIr$6T&wutWR z2Y~3O<-b}Az$ue?vxJyRrnJ?a2x>`LTjb7yY9OP_ViChm5re@tf&);pNTl*7hX!1rLHc`IJ_O zd#eb7E{0m3LP~=vCQ_SM39S7ZXM$>wD(IA7cmV~kLW16XK2p25Q#WFqHCk&qE`_6B zQJVc0{e~`SVcWl2GAq;a%JHGkK*=Csgwm>HY{81&4n|sAUdFR<@*9(c)#B?h{0l9Z z)C;{zJKS=n6cZC2E{>pqRrNDt?M}@fxi^A%jADknxTndr-l(G*#X;aIJq^q6Mk+*H zZ!gg++KrAl7~+<(7*3s9m%i-O0hjUDY@-PzcL}AbAI!0GdXXOgCD!*cfEirkZ2cM% z3w{590YGyzZd2gD#wh<8z=Q{fd7u)3NsBRuiC^*qIr}e9ERdDw|6OUxV*x&Sgrx8OEzCJNfV_*EgAl$SUi!@E@~W&X|5`0GhM7g~WcjKt z$JdvXIMFN<3X;IeN}xqc!mK1}(iLVj0Uj$gUfY`3GknCS>4p_K>>N6kG?Y8qhH)k( zMp=lt@cZS1oh_BI*w6$O2)HK!S^g@sgL;8mI2L527MwC z&!$oP57>bOl}MYag2Mx!i7Z<;R#raGw0jf!Qzl7ScM_$j&oz(DqQ8bk-eyH~eqQ>1 zFhaz_Al??zeJ>)-Tl-#{#uFifv0Z|nOx5A@=1 zVk{!wY^oHcbLLz)+3)cVE~SD~Tp9ecvv>ztf`fCGT-oR4?#?2J)bC_FvQx&VKFc=I z$ePPFd5*#@We8s)Z{x%)0v{6ycbsO(NT_?Qk9Hb+wdINBsRB7 zyTd3unEhyr9RVS3q1$Ubf3L+&QEKh9_VArWF!tf2;u^ zd%PLYk_X~cY`&=30uji>OOt>J!}c<*ymJaDUQIOdFy;+b&B<%bpHyxnM7|#l66&}v$%TIVg#7^9 zTA_9Q`;{$Uvl3^MHjTcUAb4g5q;+|dnXtro9C|&ySx+sh1*4LE9Y`42b?wU`buaQzC{}mY#LqalnD6B|qZbBDYqz?!zolz6 zzP8$~987RKvAQR^;*xye8Ipovgd%IqWzFdQoOV^khr{UvT9I_o=R)|OZ`Hdv-?TN_ z(ZIwSDBjaobl6a~NP#Gb4!ZZ`sAeenb@{N?=y!KLi!w=v2}Wm6c#YJ8OmV8!C(O1V zakacp&KKa~M((Ni1j+P$r1#QCE0FVb#Et00=+@zJo)5LSZLEe>Y^M|#vG1wwr9Fw3=*VT+NW#so!+pwa4( zWq%U+IXd;+)=igJSh9wQtoEHRB1$US2gth%m&3!K{dj)n$xK3Kzph!T{8l6Ck}hUG z1(AXF{}SipXclU0Z05+QNWzK*fMrL-qN64G0kw(V#{ZDXulbKDgejFdc!UF;n3+55 zQUfQZ}rFR;%~&=5jqr*<&oD$4(@sf@5tHo>I1DdZ55n9 zX>&dV{QvLee!&WMUsVliLXPr(R2a1Qt{+HGK|Ic3_a;s{M2><;TApE@FP-^Qtq|xabuim%5 z2(1>xy0W`u%+jiQ%|a|#?0!74g0<7 zlO_4^2MjJVS{&x``~YD={&M9oh*0$+&D-5Hj=(3#Q;_p*#wu)~>$SnyhnXzte0 zn`F7^owV#AYR%qn!sTNb;3xh>w!-8}<(hW? zVc@#o@;wff39ev^o^lyzD|qVhJJ*|O&5z-#J`ysx8LIQTXgw*q^_UGcAuf%B z7H@ySd70P7n)`ced~e-nQ5!F+kexkV9<;`(rP>O|`V6)QVF03jX<*>PV7g>Ql46p= zo}pfB|Bxe?sF(2;eEjrD<(IFj*O8cG_YJn;Q);@3vl4J4N~Eh^($xXZHeKw{B)Fu8 zZ!VMX%ZqERH?pseN4sx*!t|A0HF6+#-t7b7f49dMrg`#SFT#t~VAnsV5r_?F4sovK zTl}W-lH<2pDM=Pn_yrvLnkaL+Y^!3l9 zYmprg6ASuuwo$BuN*;tF?o-(iXHQIkory>xxHQnX?Dc+W!2T@X7*tib{%2KAM{K$-<>`njLnrNs)+jN`3X1Mppx?0D0p9F}w!J!q?@*cyw0 z#pc|FF(gj5Hg3}r&&Bx&+I-p$MV}m05evz}*VhZ5Zz(q0qym?|j~mM8$!t=wk-Ss! zD~TmXPr?s06FToQXVVLJ*>{SRSif{t`mP^%aom=M(4-^2V}!x-4J2><KHiDoR~Ffs&zPyn9YDv1 z5FJbBaSYBQ4M2rl^m21xt}^~=^1!9dJ9VBEmRL77wLt!_E>oG~QeD*kTO20p9p|CF zzm3%hr{8e`_U7^&S51u(y|kmL7RR!b!H9Y4pCe;Ysx0HUSwYnAGcTSrVrMn|x79v9 z|DIj6pqfPMPFGGl;7u1?p4WP8xXU;W8M=_LssCBz!hpjzRu#GU}p!g@v(oeg8o~+j{Ofe;8i4~tp8t`*XT>e zbp$>&M5F+r{VU_5#r=O~T&AK)=po^4yTR&lqp8i2etpU^+=5uLl`u{i^lh*0deWSR zab~d&d!fBTss~7|Pw*%Qq1RlYE#t8uxmL}x*-fL4mD%}{&+|g@y3yqIfE#;7L~)}P zDn80MXuH9IjFbQ}0$RbgF%J+dgh>WNzlN5n9bG(~lt2UwdyJjALqGVQ=x@8D_W zf_`9Y2D4!8@9yvJ-Ur?Xl*Kf^Hxm;B8rQRyS!x1HsuOZf{`bzlRCN3` zc5^w9oAcqH{D~dF3j_ezCe`~PNVK?->D6H6NCvf!8rKU(kRrrSQQQhZ>axdRCC?%Smc|XTHZ#t1uOr=s_ zVVW6djRX0EFUj^MW^@L>|?u{554Z zMOsYDxzNSm64q1LNBPhAC(dlLfuEWc+$#8Mg)W8_3eAMO#{MVM9OSWOgd{lw%(EmFYIuK@!3v^uYcpj|H)D z#{35cfmm8{7pL!FtI~uG4Px{>*Q}Tio&w~^U!(#kxIku-9;s^BzNMkReb}>72~L-p)_LcDjUyTD#E+&x(x5MpXXgccHD~AHhB1XuCE#KH zWgdqAA~4ze7rZ|-pfKIf#ArqY{b$|-aRPd9wZl9ZjC}~p@(0f~UrkSIg?tt{%|9Q> zYYyN6a4sfbs^U$PbuYsgJr|0F#M=ChkPPKYk?j;&Ib6p`wEkw@dAdy27bCFo+bMV< zGbE-#I!@G9kvKwmQ&aP+MHztCTHbFSHfc^#fmmsR-(f)aSr zqEb4SfRIBCKbIwNjvjwU#M^V!d_Bg}*N(FbCwSJ(h4}I|5hDKQd z(!(=FFZ`ax5B}M_CyG-M@-=o=gwJ$1_n>Oc4mtAkQLdvHD9P+Aak~OsC`>#Vjt?ey zZSSgh&|z2DC#LX`j!vQ(g+wB!kmH5KE!DLmG)F0V7%O;kYxAFpxeLK!eC*@AxfZRuOcQ{H1l-gB;l79Ro=*?p*Mi7H?}U zFc>6wvM64cU6?g=;;^_d@uVH9XOYPa7^F7M5NJ2n(CEc@pduj*;Q>}nz*Yh`{J9-? zSau{aWSBSO+G%am5KWShwi==?zJ*i2uh^J-(G?Y>?%tvTW7+(nDJ9qx+EP~^NmZjR zexaCj!v>zfx1%4B!o3o%Z;{TI*+}gX4t?&PpsTHUs<3<3aWGQ3Xdd;Oy92wBTm%IX zezZi~e%^Y2ZM^FY7TJKN1HsgEki4cnnNUrfX3$>8ouRkFg3G(Fb5>bn_gJi3*(7H` zI`|AhN3FwR0x z#zK$Vz805Ba{{%mUG`!D!+tr|gRw#rukz-yLsa*@xq(8NqNpl23P{Xt{eUHxlC`E= z;xmk03zjC?^%pZ$*qTAO9u)ETxZfT5k#?$Rf8u*JWZ!E8h=0J~??QRqPpy7{&qr+@>rWVQJ{GoFYR?9bF>0*O5so=S?VD(Ki z$&wtIge%*4=mEnOJNpr$z0!~*0i*a9_rvZa?vT5+E=?7PTQTdeqxRDr+=jUAzVQw={n}t1Kr-cWDpHZpkCxsjq$pF%GKY?VD20{0Kzlyr~mtJbnrg z{&Zdwci5kW_7sz@vIWzWZVZ2%Cc+0gw832%|EYGtO%02V_k9%x-IpKpxPkZ__NJXn zN)@CS+aQGUe2jNdqllC$YYvPG*LLM5{tt&2Z%O-I#kHVoYpo4fo{ zb-7zO0VPj#b7-ddl47#%<}vQ+xIH1(DsdDrhROHUKHF0Gn4a+*maJ<$HeAs-71W>O>3<(HtFmh5 zZe5KUCic#O?bTA#RBtBX1DNXUS3Xs0ncTQ>f`mGyY{NdbPrY~7NWaBUANKUZr)i~X zotF%vxKkXxh&fxl>*plWN5yxf$Yz|r(`^hpAPD4SiMNA&wiswnNC4J(JDF$ zpSCb6+&@_pseJrSI`Z9HPYm>tD?(v3qJ4p_(t|{h=ozJYlEZm~bzHQQg^>Okwz{g+ z4rIe#6w0UMMRL9i;@oobW07-eucn~L++(pT*gfCddW&3zal+$wX7@CU(RS?+^ZuY0 zyyB0&=-SDWdOSDhK0m|jHHx~|H~6D~i|a>qt_||5fY7+biQYH)9Sw2^g%AADK-S57 zfZMkb4Nz_R{_u73;>bviED5B8Xj#&f56bs7Lrj~;lctu4tI$z9ess&?_M8wh={wh` zOPtW!{j$vcz5P0?cw+TcbpT_Qe{!E}&QAO`>MFa-+a}soq^1v_&H z!cQA>Urrp#-f}#1i0kL|RDO=4FdmL<0U4#uUZu`%ZFS1LdtIh;969wiSY`}HAIuoc zYy$4El2ODL zRDotq?oz(6CdoSngsc3bLL!uY0HKkbz$tKkJpkBC4xgA`qU^s9FlDdKx0#)&IBfD? z!;VbwEz9@62&ZZK_G+WfO4TtRw}gq(5buWbY$s~NgSQ-B?-#ucOXdP^Pj6MeLvSNo zf=P>@9mB)FxJfS@__2dG&vcL=6!=dNLaeyhx&DKAzi{9ocHt!0kxp0cVR8&AO!DIj zLn>xO4B+x*1bmpF1aM^{hAQY7O1@E4eGo}AhX=IX)?=cLSc_WpF-6exOw0{dg^pIp zhc5cnM;WWx{9>kAO!bCy<8MCeTMX~+9a;Orpc6@8xoX9TLS{37;)BH^wa+WKHiZGF zSHd;I`pIM>F8TsTDhJTX^EylpF2%LP_9YW-{9gAXQ;U=}J3r6P5#8~a^oFlOwX7W_ zEV7wLBK1Toc|SXY81(b4_>e|*fRqt?BU2^ zG0^mp4xeqE{m}k0Lsqzx4eO>m496#zb< zKqLmiX<)*<(~VC`)-z1e`_lO_KS}c)fuBG1-xxjZu>S_{-%cC2(8}a zS#0HQXT3$(^ibWffcjV-C5LHUhX@hwd%AsmxX(WlEwfCPG!P&;&H z6B?m-W-fG&=C8qH8_*SK;8jL5BOw;W|AHeV<5wCgA<^=WM2b0wDFloFax7{HDZq+h zE#|NAgrqJ~qo6Eh5=x;bNtUUepsLSEy1LYcqIxxSA4<#pNY$OcMLZ}DiVy1*DX+p$ z0n`$^AcehKZ8Zm8FE#SGEEMCTB!lL?+(MCYrkG0i5Z(N&8Sa&QA+kjeUC}pst)w#-pak} zJ+@#C5cGG1L;LlkVg;$x@Wd2O7>PfOlN(h`>v)(Zdz zT02I4>(}~5bieBR+Uf-5zlZM2e&?&Upnn0mx3>_=7w8W>!C}c^$!5m3sNSMN!j8uc z|MTfHcdiEEhWzJuzi^RNeUVtiv=G1K%kmHerc_FNJ@Ve2Meaj*7VD&F8yLxi#UH>| zqnU_&z-Af{+#aIuC9|c;!Kl8tSh{T^75IutAtUsJP<~ zmPaG(u|yzroKHd%8@oa|>nls;FBjD&PQ!#8OxDw=idWpSC#k5kmbK{YxTSU%Xqu&H zcgi7!+DTZ;McZ<&f(XBTR*>Tpa@$N(Js7S@z5gWy`NBNxg0i}Q4cYab{$>Q4a{vKm zW`DuN|C4!04Q5tFz^diU#H{~|CVpIv+J**My8O>l0Hh1dZ2_Fr9JYJ$;aOzK&+SY{ zYC^Y!#|9iY*4iq}&rr)_GVkXVgTHaiD%x|#F(t}bzxNt1By76X@xafe!xnstv~;mI znf*TYYlq_$Ib0@e)b-Zp{g%%;Z6idvWqAi{9@X0Q9f+5m0xMj;QS9|XeNb|7=T$`K z6{#av(s>+yd@&EE-8f)nGA)`MlWZ$|X@RV;wy6?-RP>i=M{PoM=VQs_58?SGo5N!_ z2{{_OVcd)i+-5Wq5*QL;ZXCo1bJn)!>ZfjyAu1u(9jD)jO?;D8ZcZ1@JL3S6Y%`Ba zN1{IbK+qRpU5=UWjT@;np?a_g6bPkgef%?5(x!}6UFq<0%Ujk~LT=cIWfx9iK_bvu1El}yCZq9r?oxDk{iaKZs?j1x-HAcns8B-)39;(97xuB~DjA@NY8bSW(ly5x3HKG9 z)q@iQB!#N(Q7%K)dPc3Q$3-Z9)}60VqhdI0rGI$)z#cE3ptm@ww9m3@zoej78J#l0 zG_Pvqr@^QERot0hHIBW66g#^?9YMLvZ@xYVg_MpX%Q3$kEIsdQFbl5S-(vmme)Ix; zC*j7cNaU4-~s6ijI4=AJZ2 z`<6jG-{&Nuw*R{6daEglVcK@GxH~M;aBvwsn77Wr6(Mhs#QN<>u5)azZ%^MzkC7Sw zIIZ8WNBC&Nig2d41wZ%b9qyc@TX`XFC1fN*ywU z#E(SsbUfWQuhRY@3yW|R?p#ZIgGS(dV7Ti!P-)Bg^EP(fjNVpSpVtfp-TkUl3*DLf z9XpiwjG;&RqzcRA@Ns}0{wQWt@UTQjFQ77Ab2tF>XlN;npH2J3k)EIafgpG{rQI%K zO65A@+&lF$n|%cBe(Bw*lAAMGL8LUkj!Q;HD&lCxE!Iax1~>5sGAt+5FNbewD~f3O zvIaU_j(ojxP_{`EACvJ(cPPbG*+k{%M5zWxv0ZJFT<$v?8ND;GPBTWUxI~mHm=y4b z%Fr+~y*x9EveM`uFD&o~DHa)M0ciei<=y8Fy4SI@ zMWO?69T284Z~zUhk+KGt9zi4A|Lk1h;163kRkD!?F&@5x5>3_xnw@Pjhk$196=Vu@ zf9|?q9%DAgUFqOHT8ZCO0Cx}}&^UUR3Jr_(?hOp?FF!xziif)DZPkIaCgXnc*%Z!k zy_^Jxufqp{OkiO$6e5B?C^_Mkwa;S~Fw~~II2ImI(Lg``1#q!C1_#OwDH&XjpB{7) z9Jm)3iRF(cvJ1o$c?HglDvNpyGB&FN)`9?kX-2<70Jzmi`9aD2|)bm?Vy978xn_jRx3sicc8w*pBe-4f_wm) zT2lVd_X=k9W9nqn(X$s4Pc>=YA1;YYG<9tI z-&WHYPQJaIg&~f@#8fyBU)fBFE}@tkSYONq%>!!}XTz*pQ`ydHi3n#skJHva(9ZD} zu)42|0`4cw55txUuJkiA{3rL|oHL&7tO=%grv!^=xNqnj{hw_fhe3QL>C!v>XyVfdj~&ecx9NSCsP@!OlXX3I>yEz5g|sXno%z--FPe4q&PAt5*J&I zPIIQRAWUHq{_Gd@mpzQYt`LtGv5 zZbUdWL9yZ$wGUDmlNqEi;<4ZjseSCXVfd$!SZv?0l>CbkF|Kr@wD;A99VUM=tJ_r< zS8K_VuYpF*%j+jEMGXojf6h;i={FQRm_EOcZOzv*^-LT->P{WDN)d_kY`Gn}Z@O){ zrp28sCqX_Uw>5O*R#U-;$gGkU{e`c!a&E&AlXQI>m9`g+xhs$_* zi^=1>OW5PIuEAUK%9^Hi?-_ABx}DvDIyF6%j78L)+~C;<7;~pOG@DdG@|IDW9DY7e zlT$OhmROg*;XM>`v_=Fsu*Wz}QaRYc1zOLJ+rYvnOHa*9K@OtUSsxldQC^hqlamu^ zE(JQ=m)konbI?+7sD72lZa=S-OKUaN{Fnpz-IXk-G*pzzbN%L)XlSKIhb)Ark`I zeTOHt9X}xUD03YcAaZ88`L^>#?FR<9w}1fB0M|I86uq>kIJ&m|w1zxl7hUDq1_imnqLTKU z9N^U3t7!1)cX%R@XWuIZ^lN&bNI7n;bUX9T#}K-@{k(TDJnehFn#2b&clL>sz?!n( zN4s(dp(*FR)bB``2%6Y=#@W7^MvW_casxg_DiU9D3T=p+JC^uu>hP+KRRRjHm(nas z`@>)w_=dZRhVEti2aB4sY1Y2nk3ZnGbCbVj=Bd1k{PsN=G#kRL47q~lkdX>!0Lf&R zSC{~_)&Sf+AV{ikzX1uJi7x9X6Atb#!zlAe{?~o7KFW9|GwI!(YE>$<7IIWVvzDyyjfzzhx zK$%(67;n(7?CC^Ef`2r+RLv#7xF1`~tz(v7%N&$QK`SR+`(*2=Ic=*B1OxZKPQN{Z76fPq|d{ zDBdcHqE56nPCGIw^z{6sK%1m7l+x)q$Y90D4niHgY&R*LG!$tJ3Ek>l`l3G=*QBJ# znH=#fy*_2n{X~b3ItYd_)@a}YBY5WmGkei7nff_d+jDvFZnj2!c*h%Y-1W-fRn)d) znuoXIqQ>uI&_0s$>j6kEm-)~-$%c;fD3q3P3=4Y=>L(Rk&~>H>!;h6jWR-J+z19}3 zK;TuHFFH=UtGa^RJhBZPWv_;XEvd3Kyyi-e#;`-MJHj+3i&a}t$k?B{a1RX#VA%bM z#J*nXrrcMylwpO8o@kkdmH8lUE-f6QlF{*YqqH*_R33G^??oJQ3fl?Tf~}guTq0kU z56`^|;aRt2HLgDQV&2$y{F!efr}tP@T|bP|H+`ofHv-IOh2}drwE5z zA@XI@Ed;t}hbG&PQEpVJp<|V??QK=w-P!);yJI1SlH_B_`3k_1dh@N8&Ilk4%C4~k z@}(JH6WKB?$F4S=G**gP1~tT;-rqnO*Jb1S?!`@?Jj5Vx#B?KK-(UG{Y~uG?&qw0n zaqO_imkB0Hw(v)HfMTVcS!uIuC@{s1ig8EY%&K+QNl5f0d7AJ_BNVCzqc72-z$j#@(zYHeiA<~!8Mn(cAF@^Y5L4cdSeEr%O+jfhw^su z*V=GdF+lg$o>kktylkcqg``EnPJY1_Gn|1!*ASE0P%_Jy$E==%uT1z`%F%~Anh=q|D*EsKwg z!IaVtc+Rd=Bf%R5W5~$9Umq$2h>TE!ygK3|`7emF49~!$7Sd9bvz}(u{KVhBQ0wdv zAD0#@%<2-FU_K8fA+rd-15vlYEW51~CVClp;@-e~E(N-?mBXaN-ZZ0Jh-tAjyDKZc ziD$*U;lCtWqqpj)b^UFB`PGwRWrdQgSxqg(YT)e`5458@>8eNX+E;I!L&IEsU+Y7& zqnwp!e-Xn_E-&n<3HO9EgM)7=kVLUpPsmuMO$J=7|W5~#DuX|n@d7(wM!u< zDNljsNZ>8wf*7Ni%V=IK)(Bc=QaE=nm3CkV=c0q`5TD6Xrhsy@x4(=j3N8k^V*PmcPO1>cPFF6om4Wh5-9d8&r{M&MZdAvp^%^!Y8p z&06V~N!y{&qh)pP!3+4Zt6C#K=~ss2#vAxX@{+po+10t|uXNRjb>fDzAeGZVvdzc< zhy>WpmGRj(ul{ed6dSM4-}aLxQf$TbVD^!vzKz4~uwI+rlouGV>PI>29XoRlerW$7 znBNGePOfNH-F5I|(vc@8UD9#k1gzp)`CrRRti3^Yvs`Nljkjm?w+Y3`WI;W9U0W49kbzCU(!8(2W!qXk?)0g51;S!H(T~yJvTZT7S+K`iL(9x0>E2V zlO&oGfk{a&zpK5RZ1f%02n;XZs%STE4h;6$k}n4C=L!4VOL^Os=e2}u72RT}d~{nK zWBIms4T?VJvzX6e{&j<-f>DH4nVv>`u;cbcriSi4Jxeih;n$g(m4b%N^sN+Ll_P>p zxjRGUFB-ygjyh>8y%R>@1FW}{(pbyqb$Y3^HvpTQ{HP4R%9tc^igJSq8Mc+2+l4`f z4HtwIap50)3#r4eCp7^xR{@X56sHzjo9`j3L6GIBNhl+NJDU@#2>dNrnd}_94r+Cu z;@Uo9tZKdggmY(m{;raJI+{=OJwW&CT}tTUdQjE{Gs&Gq4x9c2zf`)-z#w;B`2B~E z*R(>vz~LfHue)(_d6c+`civ(T1s(lRy8BS4ylZ?+A7?Yr*H=k=q$9ocCCjpC9PO1S zALvv6VNgXyMYLB_c66IXm3{=^h&Rq7GiYa@zj&WzIRW*fMRi!|vVyB?!oB{^=$6eL zTDHShYBxcK0OOQdPsI+vzDtBZA?Y@=XW*nEao3T(itVvDxBEe2e+nVHeRC82^!Pgm zW(vql@=0o8Py__Vy&xf5<%v#XA2Iq-4k|CtZ$?-$-tq%{DD7$OX?QjBdlQZPJojm)s(xS7OV z`+Wbya?AZK&u{yoGkbU0ZaVZsj73Xw-e*$k=TD1+E!-@0JHPUdgrtW*hF(Nwk%G{7 zaXKM?CsdGR5&pzOXi%48z2!EVVs&mvi$AUI11R`40K08k-Xn2W=qGYfmfMef=iPTp zkU9w<7z^Avm~p*qMt{$G-r_(t&4&7n{$GswWw42#ll$`-1Y`F6hh7aZ=V52#Vf#my zy>9?)$bmrc-wCH$$b?e^^dEO&w64MpTFAOzf2%{811z{Wc>w=!DTaYsbnIFtALQS# zfBduVdJ&-mCU+i?NGav+UG(5=zi&6K4@e?)$;%SEQMc%W$ zTkIgJ0e%tx2|Ebb^8DPA_*emIh{?jQ&1L< zb$f1(Wy_layqV+}buGF83x?93f^QCqt+~=aFZLzjy!wta616bNpcZel{C)Y~T_%&YV#!;>_~&jY60uMH@-t!TPk4X^3aYtyg;9(NSPhVFr{vb`aGP%sB^CIu;s885<{|*XBc#D(i)* z8k=Ri^33Nm1Va_vuW^hqYrI3T1bm{(mpB!XQbr-KVv`S?YLt7Esq{O0vQOaNu#0_< zFW2`Lc}pJmG18hB*yn%reYgh=U#aI;jEM=eHv@8rBa)RuK)l5`1 zxOs04)X+^-;U@@BS}dE9nAyw+*2(7|BCv`+oYTPLs`sYNUXIt?&)aJTZ#ljOX3F)W zXpl4oZU8wkNyu6m+9%qWQ2V8y=g)ILl&*%yC?F+8$0F?;g9i>_z$-=!fGi20{+$kEw4I#hMoV0^s)FV8u8wjs*7xX4?80 zYlT8)-5V4wVfNeJd2P$?%f<_oL}=NTsdN{&`9w0)KeJRN{?t~mU7g|$&i8BUt2=mQ z^r5spm*NCi4EjCU(@PNxn*Kk0y>(EO`~L?@cXvvs#8OMAba!{RgoM-rtF*K%B_+~G zhtdtw4T5xc2?zpr(c?LO@BPgk|5#^s9);%tvya77y9bK=1e`JJH)diHZU zA10ct-o7!W`9aG7nB{>zYa!Jj1Pcpnq5y4`QN8avATPC1nGa`80ah~x^1icfMv~6D z5#2VORbH>I%98H7l0sjXcP@3rQIO3oH+_2Rb+R|lTPnGsX{N2zFpH+E)2;Hwp}fnw zW@e?^hBvujIdaU0_kAp82qqP|3-M1;r}c-Dhs!wc=CHA8HmPWPx2#VrWQFZN;DZp| zy1pjxDuVKrUX}-|TNY++fS1gaxc3L<$R?Z&l~ET%&0v%{-^IKgG4Cg5dBa^pA@u|A z+9voW!rfM$gi=&|(?5%U8O$#l5sd>MM3g(Cgj6s4a(ne2!|~$?buGe=ZJg)eQTT&k zc^-P$X}H1Si1fomzx>U?pibS-xf!gI-n1RYdwZb#PXx^6Vp3aE>)i=#N+TZ@-uJgr z8%}QsE!wZ*WWRnhdL71bbiGKx=;Su+YnV3hmEj%xlTdo5Usk52dN<9}y-D?>7oi-AcX*_-Yba zv@sRUF?QXtVGR=M+fhvvw$~&iBW@BymX^WYENoe6xz6M{WLnhW_}xgduIfQSk(BVy zz@pwvG|~JAeIJl)QTtEGmFF%JIeNpaZJFV_J6t)^WQqqEkiz=YrGacdaO0yk^M^h* zaz{R;up6B<;-%{#R;c~vg7}qg^wi<9mZdjJHx!g4X?Yz0 z&;6Su<>t*$QcC5ZNGUa=j?;F7Q%z%bsoJx@cPK$dFg+6asaPfwDQwi=bk55(s^(n{ z^UJoNr7zF?^^-0u4E(L0=N^^@mPKjven?emGs zz=nn7=Rk3ej8OQOmpn$d(TYunU(i~xJrqY5Chz#YmRmXvE*Fgoh1a+#UJZwY*#%Re zcC$)=hQRrWq(u@VmWPr!NT)XJGeV(mGSldC@=GCBP@I>g1TsL-oZfh0SEj!;c`pX6 zHG}xXS^%d}DW9fG!#OZ#y&;`Ab}`NM*0cKCrCGme;~x}P=;eIq0et!(*2V%9u$2mH zhxw0=r(>`KzC~~{bB^{}Vmf5GA3A&njAoryy|#dyWMUD3a!5Fp)&8)oKQnIN^o{*N zZCT)R!#IQ@wxKaIpP}O=@hGucoUzFhg-n%nvcVLykNj4VkjB{3Y!<9J7Q`v?0nCCL3)@9v&mf%~=$GH@hJxLk|O*0_=ho<7*Si^Vwe2Hl8W z^_$(eAZlf&Y}sOWHU2 zlM8e~AAY2*|IW;8Z7c<>9`Ao8Z4H99_s`N;(xeG$eIq(hh5=Mjw!7rxui?>V*cR>M zgr6Txq92#~9NX9L-jRQH-2EuyLOb-8Fh)O`8YR^G(2LybXsG2TGmiTe5#_b}NXu2` zx$ySV)rfYLeyW)~=xtFn_>J|awd-Qqt*;_jwFjvw1F_g~v4u5;z;~p(vALfQ*!uh{ zz(o7njsvG(x^0y_qh$cI5vTnpqP>`-)g-I35&@wvznI$XfRe2hl(^X)oD?QY=ISpi zeq4<(H{9a-`C{dAXoJ)c3961mM=g=1h+koj1}vXn(@W)YfbKfiJskZlti_$@o;gBM zXwqjGm5VU`As=4`WNP#^L|W)7cFS8&c##S{&305gX+aDmbYm^33}FeSYpYj|&KZT@ zIzd8>xiABcCmWKCUnu3=O8b4T{_;jzx6X}(Y8-#zHtF^J(^K|Bn3q;aYLje7Z!bjHA@{zj|Rolfr86l((cEr~wZ zSr}1Vxzo4KF0BMA)PvO$;?tg=-~*jJ@z=V(p}crq(GxOwV7-+ zGyb`*Cr3xS4P$+A)5M5)abkvdyrme|Qy^B}=2N@ZjCl2mCfNv#?k{;1TEO`9-MKO2 zd=ttZY_#_3S<~_&R2j+7YxgZ-%8uTDbXm(f;+|*a==vt`W`t`uK@9*5RoNo7Ix za$CkU;SuzP<5z%5a(=?28p;Au3`KrvAZLmY8*&aMua8efs*Vg7{q((b*Gs2aIoVFy z4Y=C=7+|fI_6GEm<&rS{N;c=xV9HPEMeWcyS|2yY5455~`fHO_ue(i6$>maACLBKz zx|z1Wj>_X8tv!*E6Azm0ggw?k(C`Oi#RstF<_G+O0RM&T%JINPf;6T;^}R$ykyP@8`+YiYH7QhWgmK>K=wo;Ubt52cVDY(aP>t|>hLLeVywO-n zakzm>ol=j4QFm@)monGKrv_HG9)7kWr6lX~#UU6`vs;r{9k^p_CX;6}%ZwbOqnx53 z0?Q3g0hFSKM0oyD{Grb2P#w==J03@i26c8f^?Y*@+1ySybwG8x(dqcZrzsnm&8R)r zlFejey&tpReI7i%k;v}2a7xLk2V|weJ1!y&A&-Hn(Q6OF_e4J8>XOJ6xiY5Sh>4s{ zYu)>0U@K&^F`}`B9Kj0;c(t&5DW*4qQl^-v2YK_CVZPB_cUkR>i8W$NJU11e|N2d^ zX;Wafo{>>?C^Yt!XwVV~si_kRrezkXDbMR5pUwSS&S~N|byWLr-rTpaRH{@CKVP0D z_g?|&l=G@mVe@wY&2*n0{!A3JjJ+=$f9G;@zRteli`DoJZrP=h6MTfs6)o^+CQr|O zLDIi!U2%km3|R!AHKtOGrJ|rb6)OZ**{G}0G7l`l*>+pZp*fIcD%hi)FjR)o`;xk% zoZfXJFJV@E*+?1WeS%ZEVVP3E*`X;Eb)vI}_{yLgT{ya%vX+2G=8GVE(g^LX62cpX zHW`_pFh;y(Ui+2=Wg)h+9H*aMX|{CI_~>=YBjAlc80$WF;Ri|&Sql|tW086Xka|`p z-IYNSh@g6GB2nQxPx{}J26EiskFhV?0V~`^=|!g2olL@?nndIlR(Oeio;mI}GVv!W zd!ZQ(WLIHtY1!5g>BODD{_Hg-Qf2)d5$rm*rOu>3F0rfDzPTK_zS<3}WX=P+A=SMB zrz&R%sYd!>Y;7Oj77*Zi!Uo7`cv7%t8aQyYMBbs(|Cb3qMhD_LtUOuiv|`1p8$JP?|V-*7dkR*dGO z)*Xn;8#VS(EdRHqTZGyWOTYXSJQ_EK)4%$iIYudP`8C{w1Urro252E4pjK_-obd3- zV{E#=weSj*F)%WzfdEND-U8V-_O+#;uGa_?D^2~YU$l5TPE%2{_j4msQ{Z4_$u zZe@M`&G$Grb-6Zw7;(N#AfdjiamcRIwH3Ac$B@em^VZW%fxOg*A~TA@A47A){4&6Y zAJ(UI{WrQ5OItC{x}Af%nOik5Rf1zbF_?|uB3{O8gSf$T1M4^l;CWT*p?n9%``Xs%Dv=+n|8v`xFX-I~=!&V%$8{$YEsp!DS zV;tB;fz+Uo6V#H0KDaBhX$usjns;fzsUfSx^Oy5*hZ$c`6yl)1b5G#&SE@!;*v1Dz zzl`VbU-^-3P{ZRRnjk{4c-<43c$FNKMXwY+R1=^YOPaQhrl`tv@)R2i55I71Z!*FvW@CNjHeU#Rfd$p>U^dv)uk_~cOd-?&EHaRLPXDfLD3lcHfiVyP zUBFuP@t_fB2Y*Yt?aOi_Z|eI_M0Dqf*vy`2q7c5ix@ybbo%kq<4HOL)h4L|_!6Aj$ zpNIsdGL6B;&!i~Uzc<4zc6?3_4mAdtCw$SI zJ*z_KglN%Fdx?WQgTfhYU+T~qT4NFsZNlRR2H2Fw!buRyhB~f9^b=zm>jC8lXNJvJBYe)z)6_Yi~ zZKJXEHb1&baK83p{uQ(y>$NC`giw8Gj2iH>%e2hHVw~B zB8vej!$Elh0)#_VeevPxRY}JWDq%|$kkC9r=i28mzl?HLS()2c_PxM5wN#c53x{*i zrS|?(0RTwPwByyghcPh3-SVi|f&cT+Y7TB4w8vJHrVsQoOXQQ(p ziu7oZtrJMYp~1u;_ev6{?e_UztC?5L!KVgQpYBbNISvq+EDQEb;9sW!IKk*TWN4lX zsng#_=_J(Qq@ckH|F@z+3fplKZb6y%$pfyhG~ZvvviynRU1dn__o3dqcRsI!zWXSE8}Hf8%ohzb@pJbUn&Cuuxh4Kwe-xCsi} zEeSjJ@XgW-oUDkDu&Taef$R9&7I=@&*ay9~wla+XXm*_QmC~>7R`?;}YiV7 z3K9IWx-g8pzTrnp^A7Cy*Lw$~;q~Gaz{r z>;7A|75 zrY|r*?ONPbntJGo5}yL9M%}#+8nb$kus~r^(Mb#s=P7veoNYg~!@OQy_h0S9?{Sm& zu><=uyBLB}H|rqBvIa|v$Ll-Uy-eODYolEUi0JLPUxsxyY+=eo&P1&b5cndrEZI8s zd-xYWRZ0hHy+ePtza0I6(=7UfZR+wzV!G1fXhO;n(UG2PKcwQ;Q@zWjzMiD)?3bX5 zHVeMXM*HRu-`RMGK3odF+1sqUo$}fJ@^$=&aLtE#U8D7BXlK+0@t!C{Dyu8#LS`x!rorwWr^M0S$OB41oyw`SfLm z1Pe#CBX#6WbW{CayeHBuNdsw(S$cX=Xq?hKM4mvmo3o7 z=Fs4q6M-HQ~ zs0J-u>&}tU>AuW~WPV`LfLJ$i()Akn4joMg9b}n(Gvn!fq~hvrYn384rQ*E;@UaDL z-;aFS{<-CZ93I|ADMS}X26QjLOMkw(VX@W|9)W)>hNtFrbxE-&>Px@$PMOl#AwKkQ z_tV^^_uP6FTb#bZoAjgp(=rFVH!%V)h7<~{->5s_J4cTDcD`X6x_;=MtQrra_1PAiWRVuoCJ#z$sv;k``NgjwO&(zSK(`U|w1d^);grshJs_N<# zE7g7I=?PIU*%t}N5TRU*FUKuIW$T>~z!+LTXe5Ub>Y^<`jh);T?l}%RWM2Cub)Rje z6kTYC{^Kbaa7BTKaEpf>`?j~ABvjz2tra9deMU1Y7WTFCI;i#LSylXVPO*T?705E_ z@(@}!{fPqA+U>^CQXuW}6A>orgyXxzpA=_z2KIVeq|4v%md^tAw~Rj9m=OJFg<0rT z=j!#Loblvu(fx9ad-Bb9LgOd-H5P&Ckm~n40iWHa1p^X0OD@8`w7P3oj*B~nGlmY3 zH$WR)t0_K&I%;v}7Am#jhg46rJacs(NK3Uf)2%)nQvrWX_WEZ*u8*zM9iH+}n%3RR zZ4>zRD$rypOxfIHe%t&6p!d^$S3D^;bN)}?t4xT5{LeGTTO zO52yLXZUza-hvruVu4s$yc8wEQh-g6ec4c9gszGl<4lpHOPrNYrQ?UmI3D}g0b<~% zIA@a>CRZkgM@+hLw;z02ceb~R_A#JoyTd~VbpkBq~M}rjhnPIdS=O% z^znTP@~b}PA3mWQZ3(RMt#8T+LHE8B4Sd(AWFKc<#0|6Pn_S`6euH=~~Sn z9}-q|^#TyeKklP7d|uoAxm&8_yMmjxAKuLZm6U)!8m_CxWtZ$_mjYXlmeD>x zD3;{h>elOC>mlzgRfvwipVPRWZmo1B`}McAjF;t+Pdp_KV2eX{+$k$*G-NxtU4g?7 ze-XbPf!ieLT3Mx!N~@Uv=30W#Zko;iR|oS~ZG(!5&Z0Qn<@WTz zph9i#y75|?yBD=nf$?xqyJ}v<6h>PxKtCL7N{@9wP{uFvlR{eYO9p_7p2%2ys+h{q zlRq|3M1^=0@6o*w^#AJ+7ucz3L0zAoX*s&uy1UzwhN(bxI~5SOgw#nkeoKgVZWyfi zk+l=q!x+E;>J-{LOCfhG7^EON%zS-pGE!ECVnRQMG{IuPESeM@{Dz`AD)Gh+@j(Ic z$~M-_2LytR&|SqZ3d2ek^cy7cUlzOJ)CCQ{L~N1R7FkuYaCCi`Lm+xZ-SfeQK_=4S z2cV9Yq$5^7@vrpyu_r_!y|Z%Y@t6tF9TE{jbX`DX*G+ED zpUKOWint|#4i^md@8Sj?79f{3fE_QgHN!(iJit*ob`jEr2l80(*C)TuIh%%}9&UFFg<2ck~ zhzlSi*+`_IUKj-y)*Nc)k$z}hqQo8sL1A+<8&>d>vH^uMaPF|CCCkJO#IE(e>6(Li*&n+{H4GftyU~QS*kc{0m-?BrGfQ? zNCaaO3%Neh=hj5OVqj=pjbqpcS*W`so#`g%of&+!xoI$jZyNJozNr9=GBJ2SsLm-zPba)?xz1S-j& zn3kezn5p>BD=TcI=KI9URE1)aR8>_4<*V=(!}dt5<|abv^m>^IX^=FCp)tl}Pbi8k zQ@kT#YK=t6`R`#1*EDeMKMoxQ3e4j+U9?r6KZM?8Q~!1>t!)LkAvuode;f&Z?Na8) zUHaRm4&%${fID=d9@V4Wpi8E3s`f=ug=3sYmBp6C6_P6rOM%2whJisL0kOV>=Y$`_ z#DEY}qWbXp{^A>=Qg2CW4q#}Ht&IBb$erGU&EMTOt4h>cO;NEh$wzcSepo!qpZnlI(vk0hM0ui{;bdr{g5^_R0h>Z2^lD>FS72ij|XVB3M{a-us@oxEC{X7l~ z-H`}?ZVDijV-B$5+SD9X>H?4qFJiG~g!-PQbX`~v0+}XrXUvFgx;i*Q@f8-dc_u#6 zALbCxw{1!yfW8;p#)+hsvCnwt08T7dPAB57S|Oaf8V&w4M@2&JIOqhE4JLKbB6G4B zGv4NPGiChgZ-vTqN*1C8aX$9#OF5`i{?wh$5(RK=wnVR=KdCq2Y^+Ks#JUi>##S27 z?aYp1a8o;@CxcBX?Yl3UE@+~LwgI_>q(OuT<3@F&{ zcBAf%?%6vKL$;@qf2cns2g_E}V=>gs-YTe62NO;6njSSDMrU#6jfT2W zMFbMQ@>f}U19qlBE|aAhge#nr68rwOzbl4Xi0dQx#CC9^|2SSD(?}RdOuO+uS*1gU z1<0(G04m2n@U5yxsUC%#rgm2c#7<_N`YT1#h$;p!@2+wH1ES{CB$t)v7&DVB7+GAt z;xu3IiMdCB1=U8fm5K&W*^Y%yK-9gu? z;ZNuXa@#=3cs7stC~9#<$auP{Q6%7Y`JWp z8q}I<(A`Ec{DS&RSdMA)Cg8c!+!nMu?L`g$I$$^;IYfN*~ zqwAbTHR9eYk|!(RKBdX4v!HwzZ=r@moAKWIuNK(4-+CH(K2YR`M|O61(UZV1Fwz;V zw(V!%;}IjH5H@Vt+294q!HbxTQMmo^%2q;A`8esisC=vfJZLd2(0Y$VsWZk_8UKRR zUM}!!ee~mM509Nbv$;5$Op2d1IF)r(;b-c<9R- zb1oK+ilx<9BZ#sHNY zo^b0KjOpQG7???0or^VbXI^Hd!X4^x)VvmtFSS*VQakF@x!dhq{VpSC>TAWS^c z>pVy+BPtLQ8IFMosmDO)hTyOwA~V~2AjNM5e@@3$AmpKoSgy>5jiI?o<&uI)i$g)x zei@NI)=W%UPkjqnI)aBloUk#NKmck@7TOVW_sB|gVjyff>=00%1&?lxhVf7i_ygF+ z1P~jU;|6Gd3cmg;0zB>s=rR0X#ygY|Yy||^{uixLVE#{LJU;+n!N>iNBPfUf`p=-i zJW7{D&M3uuKsOk|A1Eb10BRh{Bei4%ZMt$jhu>^mOKM9AJc za0JZAcbwYG#S#H6Eeu~liKa^nLjs~%@7@f1Q@yR4aKY~iiT?)X`-uD0c-MAB!_dUk zz(k|xt*eLjh7EOKOsy@aK2nzG!r_vHI(_1v7a{{{^xVFqN7K9SBS4j0{Ua15eL8Pk zd|u)3;l6q85k_|)$X`FP5hVJMBu-(JLVdwNocl88twSnEaA?~lcsC>mW-U+~(`sOy ziF+Q=YcxZ@j$QD>i)9)D+$|E^3`=a^%Y#nXJoDvV*HxL>x9N6R$M(^U-Z8o9&NLkc zg8jr)LWe>@w=kf~x#97ob?uW&x9V*1STHthAs zvEAK{PWTQ9U!_?_eu(~HjrReM0*9Op>MP6id0h$WEZ9ujk@WVqc24c@OW!N=Snd$A zhaN<&F&BK|D~X{r24x|)+&0L$&>2QjAV&P@O#Dn9#B)wyyu2OV|n zFExDmmNi4`fAp@5PA~B4W|_bm7!-JA5oEBQb~WgM#S^a#gq z#R&BIwbEt15~)Zr`ZcE2yiQyUvSV zgt$^sADOvgWxVCab@tTHNV8%m-n?Z94WgNR+xk}!cs%c-=NWv4&^vJE&mG9m&%@1U zB`^(<=t3d@ee+&0#Qa)IT{LFSK+G!LY3&0fozJ$g1-cL@QauYKR^T8kYkf6qdX11Z z|1C13Oi~($;##1lX<2Ytu*PmAsPuc$OM5SeS3kxs65|cn*);GyHx^~dRRf(0TaT#i z0cwy=l zD_~36R~7nx?)m{TFH<048?4NT+>lJ@ZxzbWw@`dv+%v5#Ze>8JFbl8saopO8tU zru@q>+SSUgb^RlbP+xy zRNP;%MO^WWTXL*Pz9tr2cx7~dT z)LP+AC(Ri8T3BbyL{oHG-X&XrvmGsK)qq$Nh3E}M(|TI7@NbAJN1f&PZh|WlL+cqr zjpS}hfHg+gt)2@$gZK2bH@udwn&=a463RkZa53>TX?B8>Wr8?1Yg0gw*={68N!@WK zQu)|B{d3(f^T(Tj0&cC=pkROey7{3gPLouCg9NXJSA}C9axjyZzc^)CJ$c_E{xb_D z+WdEK6v=z@L#-fUJxJ8BaS*c}Bu*A*`=5VBfX54)g}&P%4Z0&-{)~F~`7HoY)wyOK zOcGFPt>IVYCo-(`GUP=Zd2UIc96k;yPkh3k{QL#mZCg$jd$J|7^MxqnsJi{}62{mI&nHBE7A>j<?63pj;rJ6>(5m4ajBC?Yo4*A7s*5#q#`QVYf6=%ib-aO@pRM{I9b~Av9sIKeke4 zf$~&aS(5>-Em&M=02H44Ai0mvDBx?;wRwi>>6>5M)R-FZ@7LjZh*xJL-_mxYnBxJC zEME^Vzn$gSxZSxlj;FB4*42fypK}F-;Dd5TPAYKMm?bo;XdK5VnL3KzyS9?v zN~0v$HD4BDQ{qw-OKVBzY~zhtYwy2YjRYAcHt!`Cgq+iQ$gqhF7lJC|zluja9;HBhLRiES7Jk^CtfJOIQQ^-YF?2LQS49<^6f2nH;id6e}zykDP-o0b!)l zB&=I%T)uiR96h2Ks%M-eAUI}1!c^*`0gol|F2}Xr3S+>|b?o-B{)cu}@S+yqn8aZ5 ztdDe&573s%O$>vbSm0f&18>Y^O))6dS|w<3_b*KNV+~>^%fBrR-LX&qG!FRrZMb=@ z0f+y{SJZ3R+v}h`LBQ536URE5$WNGAJ0jbYvCoeOqdXdXs1RMs&CT;(5^+vvKy;az z^L@{m(fm*}O7z`6fL`bE%baNAFVib&G<}H-MTp)4{aUdgO zmxzUpa)0HDc~~9(m7+QFtNpAe7-q%vGO(=`@p{~mHzx)9M>kgdqjTIh-;39`Bgm~g zC$5trACIpY`@WvkV~~pUZMT9-pH_gDufIcJQrlqb5bA32uN7B*5Mr1s(?1J*at4s7 zieUQMowvFo2WHIlefPk4M%Xvrl#Y8}l)f9)t%>RApX*GYdOSaw9MEL=R)Ci5o4zp{ z&({hEzKpYNHJKl);3V!@l-0Awu(w6Jz{my8o9hr(8d_RM(il>u1l5)f89Qna)hg{h zTABS^miyNqJ}^xj4^pglM# z(-l|{U#?|iRV<{v-f6G%8>ljmLpBsKd%2YNgzKusxAo)=S&ErRcEVNDweZuYXJ7Y9 znl(!A%zkE@{#5&~?*3IaG48~Me1w)wQh&-;egS@fHAJ!+>3_wqX#d}3)8bI`(8Waa zHMCUH5~c0{{0xTR=3tR>Ra#p97Rq6ZB~5rlJ)j1klO0qwAw0r{#P|R;!y#KEuuyxg zW)yh=0F8Dv1UDU)LnG>r@0NdX`e?b|ujLT0k&ckYz#*`Q{~gTKY}*L92=X|CB)Sl{_|@>W?N)Pn=UpXY&zsb z4~+m}`#@p{vfqeCfnW$0<%TG=!?J*aU;;^d;55+xiWrZLyBHTgnMc28?0<6zYbzdG zZvH>=F|{G~4joYW7pS&d5bV@9D%?Bm@v;#|2x!#`>|6}?8a zszWFG^7JEe%Y0iG|2*Y9klY^!0r|->NUrtyQp54<`P###1(n6CXL!fEuANA8j8Y4X zRko(Hj$4N7Uk%@XOp`s_lS2Kl-PLtA!R?!7wP=%|1iw_iT-|gy;;JllB*V4v!Fc05 z>o7jJUYPIO!MAe}RhcHM9VFAkI$BADX}zH*=j#Gd3ynt}7uggo6}!fh@G3sd^dOX4 z(6@&{v#ex?!P}}i*cmq1i`ez&0xsO zzcDB(Vc^k(uxu@Ng4b~}9w-M-?!bwQ{ z6(!Z1ZM5$nn)#RI&iN&mJz>}-L9JM)HpwINmeMQnfD(H=K-`4PH?@9z2mD?_X0}kB zchtSFz6X+_$ruhXp6+eFRGKH~`!344dLa;-6`AUG9W10EvGzV6oIRxpl*t>~UZhg> z`a-2p!s_LLG#)I_I;YhJ0eQ+MAwj5xK2!$!whD;w1YO$`-RI%apZ?@>2f+@Wt$5V) zqV~>nmxPM-WKpSqxO`EMQH;0LII|TSNY3wbq^wVz)0m@w7aZogE5L;}&@a)Nuiy}t zN_*l))R-&F+%cfu-5pJEY3zEC<#U3&h{XKW_ww-D^NiRQF4k2RQhZPrQTDOMY$5ya6SYfM@Id z?2x4)%fGncp2_fJqo;|9^TQpn-)@IbBBhD4CU)o;an?}ZeO6%hP-ofP<&7+&FdMby z@(Zh_ZeZjX5^m820ilx8W}ng~qBbi5u^fm;wgGE-vll84 zp1MW-gp&3B#myc0XcBM944UuwhH`|uwiAhRFUX_-tQ@IKmA1+eL07Y>_`>H-?YY5d z0mk~d`jttV^z6PM;JF0_l1>2LnAAAntL}ru?%gH!cmMnE)}N@}8;OR@9(Sa|2f~1I z2?P_<;07lvHG!z1NpT5rJ4^>$*?YA~1AXc&tA_KY^R=^XHs@Y_-%)^ab%Uo4 zE4Hp^@8wm~_s*ht;5#qCM&OldF)75pa(NuisRM8+ft(5HU}VfcQ%|bLp2DLo(rRiB zY7TUFxcs?+1^6ulxB&kev;S+0G)jho0Xf#e#%U1sgp+}N_J4LR1O&M(Eo^!J?r=Qz zSGU|DrHIg5&EVfHXlctQVD&%4nLox&z@(q>xDA5$h@jt{%|Z58db!Xa(CObF&9eC64RvJ@Ku)>+TT14gfw5Z_$(Hu*P96?It?+p8gYvZCh$#kGOVplA%Rp2 zJe<-p6MI=0K8cY&Tm4+xUAUct{r+fA2`ykO!bJXj;FVEW0ywCs@o_fF)QNK{xCtBawM%9{eHqm+U zUQ8y)wl{qjaKDvl2`2;4>b}uv`rg8ban%!HsEpzbjQ?oHOGRps&%jTaSEFkqd_#5Y zs66=-r4Hpzxtq|-mL~&kd{h>t6xN?63cotC<3OtvLUC-WEMXcd1j~$IouQxoiK!`{ zD|p7-8?Ocazi9usTT)UHE*|US%RjMAz#7Uy=7G2pU=e}%GfJj&dP8%hLf;x|)8G{} z)eQ9CWAG%^YB1lD?13Zr6OCE*15hh&F`(740)G>xsV|Mdi90aqIAGguWXQGQwz~jwUjznfnJgnb1!dTBMi?KQoBBVz zmVQ4gnVbl68w+t+>WYZ8$i6|jxIMmEloUH!sCT&uPq?IFTbJN(biKY2j{==R_JdR= zRZEL?8J@X|!i*4C?gxu<$G#eu#UHxyQi(PqWfFVOPL!`B>TwtxKz@)uMCCZ`DPsx~aC7bFeYOtzGIV}4Qs2P;1gz3-+LG-$6I=MG zcJI{3?w|$=y8e#CD-J$Kx)u*T&M?=5DThJjk%rZUovEg-u4kHiMrTHkHCq$rs(|cH z;=X37C#b_?pLPS6W)Vjt7ccTDu}&`WdHXDbj94%^J111_-X`E#q_7x|V9!Xu99woP z?Nd;4=m`xfi!BzGjG(+>hZGJ4&d2}>1f0pfTl@A7f)L5<5s}JPx<(dIK2mz=-dLN~ zkX+I(XB*5cL~AU=X@{pqJoO=N`+dja`y!4w8=Db&F${w-`i5>@r@5`MLA!n0$;*vXs)5~L8sch{C^{(?tq_J3X9ptBfD!N2Wuf2-RQ$GW4PN4S5f=pRyw!yZtB+Ox9`nv>i^LXJ@w z;1+Ws=KN@kvH_1{cTQNeOX^~4q&1&uC+uOrs@wRvijVLT^;#+?Xoa=4PO&oQ&RA_X z<1dO3B-gzgEbixU`Opo|eOU?a^<)m;x; zq5-G)2nM#t`d=`xI?>;-lYX*VT}J^+{vr$Uh)fU=ZP+b>>=6%a2gv)f>ODcWHoDlm#fns*}>K_P|_p-%Eu&9MS0sz zK)SOQK@a9Y@;HJ+n#zOUXjP;*LLg+wS%d%7-_F>3B4q)xU%3h-DnGalgm4{%BfeFi z1ql~lg1nuQjSrVMf*QaqAe-C5r6r=&#rLGRN76*_pFBC>HA!*%f`tKyK@7sh_6Gv} z7t!RJK$J|c>z2~d;@yOl_3v~MXL&6Tao=M3+O8Z}0P_#uhV0ek0~p36p9aTrNuViP zbK&REQI5gkJ7u^C3^w;QMsbji9aKulR2?!dw8q-1L#8Kx zY{1G~>KlE99(KGxX@($x8)(Z5fvtu8hYk6+mhyn23OiuxkCyV|IfrjdrAeZ3X2fQA z+&7#NJb(amxgu+1$j=reDiEDTUbm>~G`J^C0!nFY09%YinNSyWF8bZZDd6x&ePk5} zx%DM}ch1&-eb)1wdjam7ALb6DYEC8;U^NJ1QJS2uyYskPIg z?q9003pg+*+2FzmWJz;y_|Q|Ve=*+$P|l`N&m=CW_!mz?=T~NFuRJ`=#xcUyRq4JS zhUpE!m@Gmf*oJpNc&+FzYinw2>gdj;%!I!91wWR0niT*F(cbojy?0=0ipbjE*5R3{~ z@`h0pI5t?)$K~=d!9uKt<^w~2##w^4P^aw*cv!mM45WV+i}kVg_xv+5_58m^rk=k? zrU*&6L--&%V;rdWM=I$rh}FFWsw<8#RGf*fm07&4J2oV@<4M!|_#X1hbi~gx zTV%_tyq^=HzVHXKNsLHJ<*B{onuETwWxeDYgT9Q=53NC8+p^va^+8`E=m+#WUFZk& zJ0SD}`dxg&mc)7>2{r6nSc02sw1C5hzSsx;9%cE(6g|G ze#yTu)j}Hohh%KQZD|Rxw)v*5q(&f#W0{;cJ zal68?GIniRpO9!%1o1ZVHS)?vLI!dR33x{(iD9RsyE}>h80WccsZZ0q1yvNysX2pL z$>+k7){>*F^nvXf&?lKX36q28-NT7m+UHPbx;Z^fd_`_PK_Rg;d6r^nkFpB*X=}R= zO%JU0t-8}TeLRuFDa0vf<|&c)>YRRTV=jAm2c?%n&mO9}(G@dU+>Ih3Dq~j;20sda z`WGf=fKfzuB#VfrkF?-q4i;8wrXt4-T)X&|zc-tc<*MTcfh<}w_e@FVvB@vv7x(ed zvqVtYX4_5kZ8%e{r&zv9^D83e^(988$7H6c0egNdg|=b{;A+ja6Lch)85J;$*}~z)& zp@dp@LR(__Fr*pP+JI=M&`>Ba$Hm1}Dxi@(gfW5q=H4331FJnr6xn^!{8`oXcB!C% zy2*|-UM4a9&%~{W*Gk^%n2lKbLG1u+lo?T370WL! z3OouXzGIcwx(ugLb2%NdO&nqEd%}BP8IK0AlFBXcM|vGz9N~=cTcb9+CK>8R^1Z#g z|JKat4n_30qQRwF3l71pjW%lIEDlBpaf`UYWt!!P#}#nA2ym6%?5l}u>coHz7pEGv zy%D>zrS+e1{<*GJ$vNK4k5o7Mer7Va#wJ#`XpnhhFt0vo#pm_x1q9u|r9v}JYG<6n z>;dk-66f(syB8==tb!h8+Q$e4f`&RP3+TY#($?ymmLwF1Loo7!8jER7MNLwhz-YWYx|;86Ia<_82Qt-5g|@4fia6^E zU11TiI`SC&@%m<6k_EoJ6E57j`A#QQhrpWJJ##xRm-q3{?tGj3iS5im)BXz|!xQA- z4a9}S$KCc6aX74KnSB<#-SBfCD0JbC@Qh&VExq29KOLyrWED6iyXL%U`^jBjh?`D% z=(LH4AxA3UrO)&NOOM{!EQ(o^@RiUs8`P|}V43kkK+%u)9EH6g#@@dbG#mIbXy@kM zfH?Qoq#t(EWbCD4uH%U#h?vt`qK127woIZGV_zVL49~_BPjk|o)`1&IAV)IH9)ojUTzx?Fq|BX!M!oD9>oKV9uAv`^b4G;$vrut7`>VxCD21cXtc!4uRk@xVsJR4#C|exLdH`!8N$^P40cpExOK&U(eFG`LphM#xg$j=7!^X&k*CW zW0n9$$tS1F6PRgMGnXb@5NJc{p#rj zIWbOmPKvxX{53W&2@&BBxbxxRH?}HLX zZ1jI6jK;?1patiDJy|1e;U7c}hxjWL7vDGlJ$?E|C=Oy3H)Z>~j{Waa!#|-o@?W9& zSk25|;>IBbD0PSzSG1_s9{Y<$mgVEoS(j+!vGU0bF0Om^e;RDBj*LN^X6gadvU_$aS7 z&#Tm0e0o1v$nc0i6zTXc1M^wnxWGHXf!`1jq@cidHiaF5w*iQZfcq;H#m{-^oYAOD zt6(c$e@gNHmN@aB3ezEhZGtpw`@XnXcvJ4%Lx@i3PJXX#rQj+ zCOn&{k8~L1|xw7?dCO=~{HZ~BL_)nbv*F8__g&@NC z?cxHl3o1!mC|EG*>TF~W-9`Zhz<}XF3?MlGzdl3x0N8u{!O*Ye^Qf^!${TxiCoJJR|Az)O>{s6toDg0=Finz628d!u_x$_RX(`GaJkj8_E zNUUZESoHM$xp*U3WHjC(P@rR2BcP#|irzxsV{RChG%48JGlijgzEV^l@WKpn3?orQ zZ5sO2w=Mn4j{=nF#|jIgH-{O=T}t{x z?+oDU&(EMZ8j=KMDsJ0@R)t`$$Py8}4Urimwf~^s@vPvHIE}>oMU)ItqJ8>b1GqP( zH@WKaKH#!+_gYxib=#V#$b^Ep<}3_kRV?ZaG(~uAS_9>$6zI*Qt48QU@nVmimA9k! zoy&;gKQX(GD3B+r!b{h&LQoX@BQY}2F)_+Yassi&N?Zy=8^@%j)ypy@F&6Wb)c>*c z|M7dAUhE(+kl*k8$M4O|L0k~P1m3^(5&w-%C;9R<7LIX5nnCstw&3!Q+(`rq(w7FO ztNTScc?*yvV8RLLl_`?wBbSeSLnLEHv>frLFAS>Ae;twiD{s5I}DA>${ zKOP%;hl=lqV0PEN#5)1^0IZJpU9@-Vh@_1Y^0HXfB8e>-9*LiSreZm@5L;yDA z2WujdA0NCNz!PO9^T@)oa=i)ZKHmjCU{v#O`U-#l&gpT0A@y0A+vn*WfKkzg+TeI1 z@Yx!H{T`3~5_GJ?P)2q7FJ&V&<5iCUT+9Rl;jA>fEbwG5$dk*kW99$c8=e&)a|#Nc zcv?f$tr|v@ENib09~%#g6jLP$pX1 zvdQ?VUCi)MTN6de2n~c0U5S0;@3Pp5<#DYbX1(8{#4oNwN0EkEhs%#3W7v2v8 zvyNwTR*PcWL89is+s98k>J!c&40mCjXOk^6<##JYD!2Yh0;-xR;?w;V+ClHwtiKTW4sUf7N0LokoRc#%-kEIT-$P~l{l1LAEA{87V z-ewaA9tm8|H?EPh@v>~6E~-zlAHR178;pv?H+lGS(uFembl$zKCLDJ?*)kxDomj>D zeVA(?c||Qcpr*YKK{dnnn669uB0-(}No<2ZJ#%Eo?0mKliD9c3yydtGP>&h`LpF-4 zg0Tu|;k0)3DJZsvNP1x{2l zmp3O`AbIPj;t~q<_71hQcI`WC-ek^V371-VP3AP}Qu2{8S`5(B4EJAMqyAj@%APJ1 z+t3$4+o!8>4!0%;p19t6fF{bU3N-?S_1x|eHufUnmz=aQ*P^z?A-fM?!R2p`y(e(e z8opYz=p)uUW`XkiDCTfAB9es@iIhpgeq*q+De_(zX8yg*v20j$umrkD6~{8>x0HdG zvNqS#vas-?ahus(tk*ehfct5M*Pjh*>chLz zH%SL4Us8iv)Wp-B)^1`0X|Yl9)h9Y(4v01vln}=`Zm%;(tk}LO7S}`CRb4@`%H^q) z3hbgt1r;PGeuiHQ_8~p~#oF-j+aW1hCqz*9C9RWC#)urs++P8qO0sq(2W$>Um=~I2 zxq$#-PCmXHa_$QWAwX%HWG}AwzMl@wz_x7H|nzRA%paYgVI?q=+CS#Ney9acPcA zMM$`1QAKcTWNE6F-LCL0TF<+J61`@ViaZ_i!$udq^xC}idq9xOq%&ng1lhjf{wobh zHvF75NgvuS9!WOboX&_DzMo(pMg<=q+g={lWZ1Px%_rQ8Nj$8knC>iEkNvKF`J>Qx zyI;~a)XZT5yQeCysZct^mvb{%Xd&PQtDWv+>31bo12r7w+14Sm!4(h4J>SaE-7US< zCOUytf)R}K5C9w0I7A`OPNzPL5$9~1QsvQYD_8LV;uF*TE-wgL$9>C6lgYggaLZ5E6IsfJT0aKnB_k;;u&$ycRDgNSL9dcAuQrY|y1+-0NhoWg+c$#v zDJW|&X(McZdPr+D)w5*mphn1|YY|=9-y!zI1n>sJ)_@TRxadMOL<&La+HXNY>ZmWU z1bYFqO2vb%s82|VnAU}adl+RTE3>6C?l6Ot9qol|7U#}7tsIj-w|)w3$q!eY9j7%& zedSvP=@JFdG`*?nrCf(UXl9a`YsCi|SvuNtWE!YV9(TRB+~t4kyx^%=H-Ll)K%IE3 zD#lgXItDO!AZDqSCdhxZ)fqYQN_pfMh=@q*uR}=|3nh^GhO9d_*r{1sxTVa^A3{{j zpcsa=zg(4ph-3OLo`FpsWnU28zrn#eyx3;PjWX_dlKcd%WrEVS^H9(#FoO9?WOi$%S<;pO$|s+~WxG){hm z5Ebr>B&eS#lciiJR)V)}Ap2>N;!L@QxXdzIY~XV0Pc?E$dEcLkMXw zdp+a``stOQvtUBvu{F>QF{fmWrP*lhzlBZQsDL-gL>45kn@T(;ma*>5r|GAAD4k8b z9lYmnm_jNM9!&)YnRgY{)Xbnc9YqmolmY=qUA|5_lfV3AJplr91t=^O<$~hEm)wKm zd56uCi|ZlU0k9$Zb*lA#ZN4fDl_$T>m_wXLs3u|MbNGKG&aO}HMYzBl&@7lDu2el{ zr209X=l+5jlV-7&@`?oOC7Zx9cE5q)p)dejWR=D!G?IzG!S&PC-=WZtIOcZ<0=01N2;e8Y7J} z=Ls6sz{$w(BwL2ZWP+SBGljhnyzceFR9tV{=B;BX?xfr6C23cVV1p(Wiljv>{25ZG zd0q+j4dZ5$1fv#>?XT8QzVLi(VU~gbpS&rrlW-H-535T9^A!EH8bL+YN0e#tmY{-G z?0JhOlPFS*iI3#5)$&MDNYkf%rNNmi)@RK))B!p{$bpBH3$hZ-};U1Alf_y-sRia#Y_ zL_rz|>?41n_>wOicXt@6&WPoDzxGCExzFu#F?r=yHE^{QP*kd2C022g=pWJ?uOR7c z9Ev*xeuNVAJ60&`wpzOm{Hrkw*swKac4S^kA-ppr^1{bPHfyNnRX5g2?{xwD*}xFf zJnAksJX!wykwZ9KH4(uYCA&yWfLyxp$Oha|Ugz#bm=3_>;1jn;Pkc!$kL~J8Bs!ZW zqa>vk){^2cL-Jg{cnE4}gNehbWMAlj-lftM?Fq*0p}aG=5Q_VGom_XQpI!!hs$DSh z`a1(BlUxO6{HU^4l9li`pXALIdMier3fH}IdxTkO@Pxd(L+3VxJl0Cg0HVkwtgVtw z>4-O9AJo(HDvE}~g~O&D>`LZ-*o(`_!eHRpZ}MG^IPp~V6Tz&Gb6^SZXDb#Ss}8%! z=W0|~M?x?_Uk51fWIU+~+OOj8?a@;b9&7ONogt&7xE70cyKT&j1T^Di!-z*1a(+^& zObm1VY*!rkJx{XGMlfm45wKBVKg77yq%Rr&B)0VY1g<47W~BC2Lk%R@gV_G zTf>Q;yGQ5j&th+*%+@7QF(z|y>h2?yW(7CU(z2;(Z39#?fgX2jS%8d!&%*JYjb~C! z+>&CR9p{zK(nVe<$ad3q-tA_kBQI#>4$}(KLuXL+57K~W`ToaDEz2ox??oMTjDG3Q z?aFswB{AehU!M&tNpBqXgPSFVV6T|0ln9b;aX)#$b@i5za@fSwZGEy2RzCbuEH=qM zw96LDAGa-RD|3{aI-DS{G6KBuO~)^iY+mgK%esY(}e!BLjv13>mO%HE#v(% zbq}(n`|Ay<@SGT>)>VVyF3HPIo17D2SfI8Km58RX_5P@?ms%|2gqlRd^!LHMb# zr2BfGl~CfRpJuGWL)SX!m>&Wnx)L{pwRh&>?MT(DT!1&*9tr^4#=>f(_^E}aL9lAJ zHeu%=$hCKe_^n^tWbvBhi`uP_6yQa23CEZtFzEbogdgC}6`&G0b=hFj#}mGwc1f5r z63jn*CxjQPsesv)V)Na}WYT9-_3^MS?m`4=()B(Yd!YFFy`QqJX|jp4tOT>$?x_jS zwZ=^xz{wY5!G{10CTJ&ap+BvLH*lHGFMSQ_+rs0(SG>6GS;fZpuwXz`g)E|$W{KY+ z`9vMMmdT%P*3^jCK9cN?6oIFb{pJQ^!0;z-RXnH=bn}`HZvm5|S{D zmy{-cj>KFz@Rkk+J?)1^Dv!5FAV!v8QOrg|KQE9ecoz}?+_Ft!bQI2m*CywzY);#{ z<34kl7zy8BjiUQunRQ8xyb;&yeR&Phm$Z6LDT|5!&|WkqDdUAuqO(eb2eEi zDxe7W5eqtMCyz>9J-s#-lC98|31K8XX(tZbP+zO|8ZXxtE|~`WG9`nacgKJ@Umj}2 zjQ4!cDZUwm$XJM*#rf)#b@m2+ zi>&KkkS+F@cK0MBDsAKtI|ocHy3vc1m_JC2PgM?261U;RmDKuD?)?o%_s|{VBNi%u zlA88i2O+q9JVj8scy-Zuc&EIPYrY$OgUui}Y@rWe1}>sN7fJUj9ML#sD3AFQymd?t z+(yGQ1ke1no2{W(A#UHNh*~C#TDS#^&p&7SMD(?j%Odo>qFqO#3m|RW%f=|9>L-?H zqX`Pi&^lgNu042A@>P`O1cnqXe-zRph@zV_qTP8!iApp zz25|PmtnRP%-DmaAd2BTJpa|!aidc225})gRoV|Qp05ktNy_;_L>%3#N9));jyrel z1EmHp!LTQ&x~yVrdqtIfh&42xKyDp^7Gre<01uHO;KVH8brn3^qEp;I^t=yWdS=_9pLxv8XDVKX5chP1d1*#DwSc3OiM}<>YQY$XRn@cdpg-8uByN`-*(vo;1>g=F9~QG$2hr0cB1F-u9t2tUl|vunI5%1 z4MhD`ntJIZ8%uJ`W`wygza)C`={uVqJ@HidjwKl8j3A9K(vDTMCfrU~#3$U2Q3O`R zOa90!?M|wpLVB?je=K9+^#b2MXxCg{(Wk&;FN!n0rxt?no4%Z+zfT;9v$xI+SY>(h zxcBPheeVcR+heU(jhVkS z9Nvs<@+&j0kA$E(AtqW{Z_HzpU$=}IviouyshGTK_%EB2t*P>pytLj%@H(>jCA0-+ zyE@S^rPcm(R89N>6eWF_PmoOIYPKn|zBTn?bLrtYGMORxHw$hU_;Efk06@S3qk4?n zjUM>8)oU7GW(sx6kJv;M23j7Uj+SOvIkjam=209^U+vKFH;=~rFsI@gJJ&qG55`hedr}F~gmt5P+%|a>!_}_OoUQ_pyLehW*<4W)l*WDN zO%iQ8o%5z;c+Q&!=>&=zC?Sv)$Ma4+DoUCJb%<jfAY_{2UCEiHq&zfbTzM#Fz_4 zkGK=6i9*7d65{nG>&obsG01J!RBtiwl;xe+_yIpRN8@ZB^Mxq@C5hUyv595PLdo*R zD4!rH*^htfENsvvfTI(K^fpdt#>MHKQ~Z zLVi?PIMpN%H|YEM?JZ!h>LUu^a(f4m8@4G-xnV${-?fFV7o}31g!vVmo{S|hwG`## z95FTBoVy0_UbLnP$ms1tq9FS80a~MIk@|mDJ<;#uWR<%fluM_v9neMSTSo6c+F(ZuuP}O-ofAnQvTl5m)2+ z$bmDIrUY=tpkib%(MF07QWzDYb>ec3)@&Otktg zYO(CKBgv7O1&W}D)E2~AWs@0<^?x`tl}TspK$-K~om|hv;Y6z&(j{fm9Os7%w?*m! zR|)1^_#z{vyD^zVol`RixoiS?B?K@r%E%9;r6L-o5>H(dY2}EmC%A13l6B2M9g>C3 z8L83=(OZ`RG_KiP!3KX)(h8gY4(bwhMh20I9{6o?JHm>1TU9ePVmT3*4KSS72K3RB z%mSi7W7B1#)Yg=&vN82&Ix@T}t~6MgG$PgUCQx^iw_Ir#CCEg@7qbFKP|p}BeSU}& z&x_d%`bK(z=A-U(U79L(E^o;Q4qLUeWggv;5x}d}@}3VglLh<6(>M|kr!}!d;qktN zm#XP3pgl1oYM_+TlvIa-gKOO2Wd-=?O(Mv(*P+v#CmMBUv_UmBaDfJjuGchAG@sn2 zV_eo!h0zXvOh2Z?Dp15}Sy~oG27cmfF;^_iLme5;7mVh@m9ZqXBac%4dJDRIX}#(I zWCPC9J|9_?8l4(gaXAA=vI)>tkWBw`jo2#|?!@gRh~m~x&^_BF$O>7s=RYgU8LQ2U z3F6M@l`HmJCU8HhMENiLc9m=y(Ym(PT5#USyp5O2OQ2Z#fq!~u)j7z`6rTQ#-w@i| zOPWDOi2_h$hYur&=(Pq~tWmYF7gH zi;f>5-hIDiHEmBC>F+zw7=1F7xZ3cfeql1u^Y6tMXT{fx1-p+AHlHcBbov-TXUK5S zsQh@(B+@9P8me(5i@6(qm__yg>06%s)Zpy^5fMjeb9$Z>^C*AQlS}*=ho+Rrw3+OV zyK%H3Q_&0YZ}u2(*s20%aPLI}?!tipt8KXWZiKma{~G~nSm{leBN?-w*S;0%o$=D> zPwJhB08xHJ%I!EBtE6gYC4=4MGP`4S!)Eo%%U40lBpWlfm02P6pIIyb`h!wx>`R{X z;t}n|Kmwl)k1DU=$pI8sz~VkOKzhD?9nGrkp#Nn?{Zr>US&ktj{|9ETQ!a-1I#kWzSk$UMsR6Cpu`0Gi zQvT)20XdQeu7d&?IrG9EAZF0JqoHijA=ZPJRX{>DKL;^Hn0YzAU)mNvFMrR~tPQMz zt{fA)X)JFg|3?NNd{VyCQtuHG&1n%e>ip2#9h{F5;#)%&!oj4Q{!i@P`=dv)jt%O* zF+a<;adlh2mgMxa<%8ocAf<<{-AD5`>tEr#O&e;lF3M7(1&4J}0KHY|3CyplC>ap1 z$j<(8jEv$#W}!+?y^^X$GEdIw!Q!7(m(>%cWpogE7fc1XIxD6ZPkmoZJWwpZmT(0UvGZ!GTNH=kIN3p(P{BnAi$ovxb zB?6Y+Xg*X_vN#T>5%AzyAs@Gz7kkg*I#`Q9LwGc5`8*vPVWFjTKM)K1_Hh>dSdj4N z?KL~Ks%PtgBMDan zJyyZyZvi+SIvcB6ef>U^{r%!X%AV{YA)8%xQ*Pye^`?7!1%RPJ9iPiZpoXJtdyZXj zc3L&1jVS> zh!83*rTp4qmF2!RirOY4tNo42OW!@8Pr072CzlDEIae)`ZgG}Qp--oDhWgu`UIT2Z zuiYnKW^Z!^=3x0Mk>#Ed>XTDB^2gWa-SVLZ|>Hy_ezN>~0&!1*CG1e^?t)TGl z=c!NOFtHyIx{2^Qe$`HFEsxYauQ{^Sm8#%+WJ??8=L+X)$Z0yp%Ub&BMT~ZRcIcme zdVU0Q_D_}6F7nzYcAH|zvCZ}L{l*PHh}o^3NaK&_pIY%_peLuf@!a3IH-40DDRJy| z=f8ef!UwEmiy4zHu}lp%bLYw%lWJwKRUw=?35N7*wrTQQtS35*r0YnQ&Y6Eb+G-z7 zowbHhk-XWw<%?(K-6a`2oCu;WY(OrEp2`u&>vIEt>n7F*9FSq$nlIMDo{m4v!#G+m z5KoE?-AmOHS0JM*;V%)hti?QH-qrIEZwI+NhXI;Po<(||Ws19W>z`Ij?ALiPu?IH7 z&W>k}k+gQ6d;yiek`fFy8^7@Zjd4=Z>~V~WXB>RJ2OB&5jdA>Pn-QKNty)g}b`2=+ z5G5a-QQLjHdv?gj`1}yQiz0iwO(#fAx2evS`QWH7d%kW4H}@jCe6urrgm`%CSAd`z z%LLp8MS(u_#u7b1h}vPjReJeap}BlbO@I4J=i+67bX$!jknC8 zP$zd>n+bgvV{(7`=Bsx4i1^KFD*1wehw0mZ=#=U5eim@inAGwkADX3w9X;_N*yiX&e6`om$BSz( zpHUH9L)}Q5Q>Hq3=@&c^*YqqKkr7-=>b{vkm|97=gm$+Kq#K5XWDVC&@*o`7#IW<`t3wXpf*S6{ZJwkI=?UD2$#qXYi ztUrjir3*c+nl5shULsR&eOGiA?)NZEhM!(jPK45C!yCZ!*ABq&a81=~O@#v34BsMl zOQJp+ryzE)yLFrcZ0(IT5IYvWjZN44`f?ZY#0 z%4+Zms@cxU9@U9jm;e+n^4MuXAw0i7U4{5qs%Wo6W*yiO{L1SdG>*5 zMXkQCC=Wk2U0mC8FU3&-pbhbcw$`47HaLAoS10+1eed`IvmIkemzlg=r_p|xL%GRS zk31OO2&(J$Mkbq^4U;0W zJm_a~UA!0r0EmV+A-V4=G@LKlI#ZVvp%sdb9{d9dN*-OV+J&jR+FRGg!#+UTfby_}47_YOTnyt?^EpuJ8|Mory@EPhnGAh~$b}>Uf&F&iIQqz$D z-*0wXxhH-79?(lHh!rZ|oT1rJwhmy+h{+o_FR>O-Uh1tM>`^OAPR9ezTza$zU6q&f zJG>>kuR_26nmg2}XL_lC0o<1g7|~wz+Cf7Ty~`#iTSJfu7R&NN}byj!1p#t~!zcq>00HMsG={H&e0^2PBxZ|g46rVC+M z@nbJ)fAZu`?c;J*O!-oMI<(E-gZD$y7*KoCw+*)FUM#ig%l9U*H%C}r3nMh?p`=!o z-T!tqZz}2L)2ZS$F=p?<>iZObW({$9A5o$W6SD43=x8R>h!K3i_!47o8|rZO8GeWz zz{EMoOLJPtcsSkizcF_dWiO@gDik z(BWcrP}wqu9qTiPc~Vg8n7b^X`XtWD?{e|=QHJXDBk%cb73TNQPP`uq#>#*+k;Zwvb2ttvhP!*|7ZXwR0nug`UufIBj? zD#EO#clVz?=V_Bh6X8rcuRP(_go;(m&vcY`n2`{jnryYTLOpg<@Z6HsjgOZ~sE>EK zoei_gTP9`&Ztn^N&i=c}Kt+Js#P|Ms71hm-BIM`Uoh5U2Y@hGBpM8^R{HpjepBPob zLYl3rd@qSsmIl&+AB{n)b^paYKzn366eN$!5sBi6qcKXFmqyB3*)o-`cMA$CH zTm7tNzM6NMPQnh6(DlAHHm6m_5g12vuJ5%7t4LYR9q!|B9&{bX@CeVBfH>?;jmNjn zx7Yf!_GjJI7?K;_>-WINv!&k^Qx{`T_nS*|4#_IrjrwI@_}omRuLv7D^mQG94tx*u zXund93In)#{W2a0ZZ8oL`Eg?m->0X|-D{e+v;@DpK6ddnSK_b4lAE4k2dW*m0j?#J?8r`|Syqt_vgFpsoqms7il^-gE_a(K)Gf9#@*lb7 zK-cIHb178{PQuqvgy=tCCZ&{1wqEHzrmu}@_r5G}ftH+a(yq~vH4AC_UeopU!%$0i z+b6R3$V?b?=F1A?rq5tb?jvHG6%ZDhp1sBMaO{3~+4J1vw{w00lP`bz7r5@}_cXk`PYef38cO(9% zazvB;+uK=Kow8U>Z(^AzY;|ZRAdN?y)3-tc|aykFd;iwbZBG8Q|H2qSRH`~3c0lN;k-(7P( z@NfI=MQ|Pgu=m&>Abfpxbnpt@vVr$rn1i9yE}Jf|v9B@O)(Ny&_JeS3OO>&F z$Aj?L6xIURu~J&f%eJWPMEX#}z2ui!-wpD3s&H_d(E#4**7z6*CvQ-gce?Q2_gCJu z&0F0dsfyfQj#mlhTvN65j9U&2jiJkSWW35}r}uimlY`|a;#N0j+fE+|^3x^BI$L7@ zx4C8CJsxrl0g@s zCN|MLIL-HRVg@c7d8@{??A6DKpVnhgIQuu03$gf@>OUBLgRhtrJHFpdU&cr2KM&o)RU2qEhodr{6G*LvQy zJ^7YnFx_n10hrz^S+*Zd(%&{BXRbq0jGw#70UX}#h@b_`=me>BOtJF{|4njv?YOq5 z`DbtM#w@0{H{so?ngRZx-_C=++9{#yGG9`|7ih~)ygNmBgr?%xkoMWPeM2GHd00N> zu#mS{;|r_Eb#>6YIqgG7w$r7P+8M*Y{+-dxhrecw-jOcnLK2xj=OVwBi_sIa6j1jJ z)3SSJ)FWbybD_)qak^%Lzvi1qHx3^0bi5efo;NY8U=Aq29Cv2}y|K2dyjl;8jDR5UIrBq{d!qXC@ zVOZNvn!5jTNx?nfhnXW)xO7G&GBm`ye$6SMJXoW8y5gG(Ud>^b-u%`q>DI#&DIuwO z&J*#G>IiG_6xp-T75?M%Aw}(tUJ%i}BmUr+yCw#|JEI}wF!E(JzW*g4xXH@B?!!OyCnrtWb_VS~z4-$WQ8c!C3_Nt3yc3{u$Pn zIK1S&YkVESoO(okfEtC%quqC6hqdFxMeHoa8QSk(tOy#DWxZb$d?JQs4~~v5uBgGW z@Y~prn7((dc#%7)1SzsRks<|y9)dHyh_S$xq!iLD<|7-L9r|<5ZJWu$SS{j`2AR3( zPrLC!g15_ECSeE zbGvfMM73=oJ#pcVF*A$Db}09 za#Csw{L^CD1(sQG@c|fBME|r?+-Sm}*Jsnf#i0M#uG3*(j=r(0(Z7tFpUPvI3I^2; zGl0bIEKkJl%zp`>a>kvJFZH>{qC{zMJUc{x^U@O`qPfXq7ub{h?fP!~Mvgm7DJr+? zrQUA-oX)J^aHR?xWPm>}{~z|Au3KyS`MyoG|@D>q$^u>T& zz(Uolmx*@NhjyhI_Wfm8$P9wXkFw*XZj(?D&F?vLvx?Vs(oxHI|9!Rs0v!+_usU4P z%Zd7@nWUv4-`Z?@9vv+0f7mh$20mOBd=-3>hVh)-mkKA&#kZ$Z7)u|L!g*tizT?=P zuO<>k|BG?+lhv|OYeIo6#0zV=(C~j5=>K#4_PQj93~!n5t#FkP&)hEoj@ftOBdBN z-bDC-lbBg%6NnRl%r*nSX(QAw(uxRU?2@<5_JKbEU3jwmKdRd-uY%&CpfaK;MTE(a3h-o385Kn($@qWG5 zdlVFW$A~}u<+K4t*~~oA50{^q#)_#=K%U+=C_JU#>#utr@KY;dAUn?)RsD_>=niZf zg=b`KaAYU%&mJ)$ai205rrp}Xb%H7Btudp*iXnta_xmCS&l%8w+~a=B!yz!|-026Y zvJAu42E3JVAETXm%&q26eSO%UCf zoO1qcON!=HSdPH8j~*LEfiBqkOj0Ul+&6?__b`Ql+VzmuP&P?tDw!2cA7J)!ih@ZK zL@APhVtq*hskYKcd-gKM4hK#2TNAdlGguTtnI6d}OO2Fgz}jQjdo9O=XjwC2emSab zr0wo!awF!O`DNVWHSob0vSf^IrE(9!gBRG{Po^-VFq$Y4Q^JPuoRDtqR$bArzmQQ1 zat4E_mwpCw-h`J8GZi>|w&Rh?7IQ3Pr^iCiA{_ITDs)5p9M*NKsRi#8%JWeUX-G6OZYN3rlV2jxyMX9WpJ?%b# zSH3X2rhNBVIn5TJ5R%{Ue0?p|chQeS`xDHsPYcQq0)R9A?DBRlnd{;@A-;I1VdOtpWt z==GVDRw@1ZYA<*9Gl6|8wCziAnAV3AX1yAh)|{BAYu`%OfZf^q6D3K1Vkjb~ePzrc zjv1}MM*xT2^$%ov8ZX^zy(q4}-toK|qpf6{D{VPi@fHEQ5O3ws3r;Ei%q?=7`mClA zk6cFz7w~I1kD|1=6w>ml$jMxuZz3UdWVP9c+W6!3y#mLl*>Fo#b^2tiQx$G&cgPaJ zs$`k)jnqxULi~QmBt-*F^_?zfoOaTRKBLL048V6?htcfudD>?B4MkInN8G3ns)E>J zgVy5+s=8)Xh+J~;D{nQd!BlhudRhatwF;pH7&M{wCbZfL^wpWvf$PTFk>W+a$&y>i zqK_teWl|0?;zuN)sVa}{fU}6qcP#QFls<4`J<77VpJmT_I#qf!#+>{N^GDfpciX4F zaxmP#`M>PEKEnTZ_xj`9nKM-(WFTBe>%YNVCT2XWY#e`aUHrqjnU_$ZfI0inI6!(R zNR*a5LYQ8Nzi{~tXxnVTAUJE)zexv7EG&3Tx!Bed739E0aEFJ{X=ej3ckGe9Y;l_U z6P@WqVOh!IbXd=)_Ipnep3yz77u=~~dA}a3)|%5wXZb$`n-KSgJ36Xv}n;)x=pKD+@(E91lp! zqo*c5%7W>_$r2IISm?{-dhpLcjc&^H)>>%1d&Jlb;pq6F{Q-b9^l3znWRfhv1_b31 zc0<$wBUDWa=C_LX_lmyE|AKUET}PAcUC}4cc0;vs^MLB!!lNMTfmvo=H0)kZqfY?-Uy&!64}w>W}MZTN!m=pPy)1;2SSD$^vEGv80ySg zka`pxV*K}J|AFiLWJoz12QA^CVu`<3a#LnDQyvr3^)z2)%mc#VTm;4$= z2#zf2L7dCGZRB*T6sy7CXTm(rFnX;xzmO%Oe{y6%s+t1ktiIBgmEn#WSvt)mgSWs? zu%sumXOy|Frqy-Jn54+j076d4ol1$%G~q)ucRLG5Bj37nidgef@-E z4CU}XbNV;H6v69Q2#=Rk+n_d3948oAZ#&QgLky0!DGx3*w@LOS7O z#*`?xf1se5(~mjD{c5qQu!0Tr?CSJOsS;c>xtS(krd}{GVRSO*uF^EM=JqyEsu1#$ z6zCXHvEWFDdUE9rNR^6s6TdN~_%YqM&&Qd-rEhbD9VzD~#{63o71dC~X8T|}@YP-n zeOlrUpn{64B@+&xOdVRw0DWaCP7t#?&JZH;9x}Tg=of9i7li0oI`<&cyUWe<`l0+c zVWJlw$wD!-hxGADyhJFzkv05B<3Y^kLFINdXYRvkl^eH%%|yW>#C3na=-#=gGYglp z2^K>@yIh1DB8#Kzor$gV?~GJ&i5&(KRBp8iK(L>F&e7IMGOC(zRd&#+M{jQP6=FA$ z?z%W)^C0uoPVBv9w1;w7a*BED?(6C{(W1<+uSn0e^);qFUai9#54=Pq!A!U|Mh7G# zm$R=Nq5@xZ@C@>;&>O4be<&EPEwNCX|WU=#=~sm*63>1j^ZWPfv?@7BbLY~ znffq~laG%KG^ZKmJt?W9D<+x~rkd;20khe`VF3fPE^BqZVmsv{swxvZOBfKwT@m(3 zeXQUjE7XuHE*9=IP>Uws^spm6cL*XHEHyOH97b#M{`4f$JT&sr6=~3ey-CY&0UrcW z#EZ?jSqt&kgwUuPBg4n#BNnza_#guGzu(bP_fv}@00~g;ATWm$x)Vr+rED;sPiER z7=?I2*N6>*|JX$!6?0pPLE!xH`Q+mYjP5Emf)_NzKBOl}$y5A6<0ZETU*GP;;1eEX z*kdb|#!w_MVTS*MAog!;qgauhw&g_4oi@PNz;5s&i#)>1J)>9Ah=853&)do9f#J~~ z`h+ELwO2wdQWDp`kPf$yt2Yd##lf#uynixu3smG2MAncdBu=_kpbyL@l%_Hd5yG}^lF zOf|NtP{@+H^M*<~AeufHld5JzEBUk#T zhRQVhB1$lMI=290E`dU=+tt(%uGJ+{9S=CbCRwtdDB&3fjM6VhqZngLpF5FPe>AlK zJbj4>A<$bLI_Hl<3WxufGBEUenFF zUs!k-Q)ZkxBfPXfOPKHTD=#GI@fPqJGD^N3m|N#o-tl-e*aX&Wts{C}6w5LWbsKQ~ z?5dUWe*Zq~8w56b$ZS5{4T@>N|OcCPEd6?sqT`AK`zJFScw z<_Rgua%nI;`(+zn=?opmtvdt+NM153maOM8=ih%cKni>)6CUX7<_*nj)Z=vj$ghTF|#=k_9@S$>eb=| z>`w})DrHWKFls|&y!R+_D-;vrqA(qo&>m~Ky}>jqu$I$C%8s>M$P)YdUAdoCo2vQp z-BUW1x9?Kurm7Y+mi7QRdbi`IKKc|vjB2Q;t9GC0uo-Ke%y+Y;7<#sF3G_+WM7s_A zxNui7^gvObUbv%`^$+rIiGUZlIVw0J-|Kh;S~C|2E|x}Al#n~zIG?=itT}k>9dg(k z?sMDhJz_=nS3$fer2X{S0cfP&z0NY{95;hZ->q7whzHX!bqjmYw_3=I(TqE)& zSHP9+TRL*zy?uh?X#~zzAlmxZN5$;>7lGYbS zDayWg$edO_aDwJP15WpOmK!iX7fZ)RaPA^F<2?NqyL=(<{2v4E|DGREqM&aUqJY~^H zq=ar5C$M^hu?T-eL^}OHjJ0XRKXw&$afP*PQFRu&{9PO5rMSLcbkM5#r6> zUr)Th8(gG5$9YqFejb{(JC^%R8!~RIxzV%t;YXFtLffm1DOOc62N^cSzT#FdLBQ|{ zP-CO32%H_b?F6HvrvruR6*xs5pPQ!7T45|ir|*^A0P`0+>$il>RUb!-5Z*^8dhN_o zCMzyZOr>%-yB+_i*%#l>0C^nWFJD<2cw5so@)6%Fg{m!@v3_XVi?yDwxvC!i#*8D^@v{(bm!-M;Za?ru3li#HznMH;_{wm zDc_u!qdY$SjQ0xoI9idIKKL@art1D)wDqYkV4s&dyp>2ev2L`F@kQ@7)66q&&x(Ge zZhhvZ>z?{%;+mt^Elupc2b~wSiBnSs!~_nCV|9&FpI`Xdz35y&dz^5ym*R6~sy(o- zJt|b30E}~=UAM<_506DF&=&&iWq0qcruJrnMGip0K`sh`$O@kph)rYvJ z!WVIlqB*MGKSkEBMelxf74uq%y>s_>>$G1=3k8?XxKmEmRB=J-ZIFjtYQ~ndcDy?F zPbRWjYtE2W?U7#Hajt`3W_(ZKazBiS?XH}NEh*%Rz7;TBUgg0t-O>A{xcT*b;;nYd zq{0jhf4OH7aHIX>e02dFt&_&u!%mLL`X(=0RkD0(!9+K20-d3z1d z887B38BXTl%l8Q<`j@-K9b^3$N*h;=H)e)i%*}TKt&2Zj!)p8euVwl6nua#0-ZG0k z!M@<>ujdhC*0`;o^>4e6Wpy8D5#-=@MS zqIKHRo%{kTQ)25K8bI_2d~-1V+-2^O{Q`Hnacx+^@O~}8_~H0~Xldfp7e1xydRbEq zgLRb26yPb<)G}Q3;pBU&2K=&`btaj#*8`&WE2%RX%`S=LjHHf3KG(jZs}Z+nG+H$- zcPV$}TpK$F?v-;dr`hU!fkONyud)L}{VFZpd|b1&lcfn(QI5%_8P~?@r{bMbj-?Ws zt0$G~X1q6IA`>$T18j|qkd{o3xP>L*yEs$H?*MlsXWitC@@uf<$mcz^RhK&o`ykwd z%bN{9v*Hirez}i3=}%UE37?P*#X(&?JaM*6Z+t4h1s;vHN9?H3T;sgfD&%W{U=Cc| zy@`7bqy4ajw^pI8{U6pwVuU7%0W8h{g2b2?0mos+R3Z}a)U;aiL#(5UeM*Y#bev(f zD}hi@)+kC4_>^It$vkg8DQiaH*V*PkM3NT zvFIUtGraq{bQA?*!p682TEWGUkbp~g2a!+yaPj35Jg9mgL^;Hc1QTIASK3ep(YU?1 z6W1~`^L|4-pgn1$5jP^mej4TAwW;qZaOa<;d!q_(O*=;o;fk{dhwS&#Fl`0;Fn_~ST%rxT{2J^!(8!ZDXB5k6K!LaU37Cy!bNo-)OJA@#; zYuDioil>U6Vu`WZyv_H{H&u;XZQ?)Y5qgj3}2VYKy2h}r^%m$SL z)3Z^;QG3$Sd=*5B#HPO8=@ile(+pu!K0oG!eGi0}?k@M=H{MtXHRYK%bAM#kbS)!N zB$GGNsp%q_AiC@C@&R5r>AnD@b2g3imSFkUT2E+6mn+-W*6WL_**8NeBz3b|CB8+2 z3ftg8%^(E{^^*M3n~&-EKLD}Z2o~LsM2|k@E-)(0m4vX!+NVa!cHW!bvvUh+y+fBe zDt@9}5&hka@#m}09bE3FHuz>`rXC)%m9)Fz?Yl?AN6nPKluutr8e2^QIObc?JffLR z`k2!@pQ9FdNg9E|>F91#TqWX0=!o2|pVY4bfT@@&URO%q{4>hYozXA^cOE-P(+~BI zCNpt~!X})ibaBw1q8g^Ris9fJ-qx3e{SsgWi4T-lLQPH*v64f{Zbt_LOtVN`F~_X< zaw{%6xTc*z;zpV*PF?`y5w|#x#u8$?kLTd(wtjnTU-(X}39L7NzQ)}BM6gIa$Q;vA zsw*xu{NSMDc%K2qXY}xHnL6L<8g4!HrhNNxhp{Soqku(#DcXH9eALk~VHo$6MVw2< z(8XV@Oe%$qOBf(Mk}o{1nxfIk42Cxp{AJ?#{q$aW3m zyA!<0vPg?55%<``e)V9zI3cAL8wxP3-!va-rHv^8c?}g%a%-tY=<8V9s23ajmF4%YWtFkkSKI&)yuCfql zv(1+i1LwoNG~l444PW=ev*BP!CC&&S-tp01`9zlHJP|y*`?F=Z(q`HJ-23|5@P5m= z-cnnpRBlC5^}CS|O3vx4obXr^=Zu=ttH`dee(<7AROgS6@&C{quaA!YfMFX>K1Mi) zZP-=DSEgvBINUIta2Ap=!eI-kbq&*YX;6c&DR57*83!hxGmAPVB{s?QF2zNEbRK&& zCMu#aS$;WcvQonn{(}Ap`vW<9f$R(C2}%RLo5mN9V}oKe=|9?{`@V^hqD-utR`vYJ zS4}F!WLhx*hK~*(b~z?N-9$C}qIa= za+M|vce5{bHQ@D#{|Ci;D4AH}T?*|#K(2pECT6A}FyudkNq=f4$tjpPRnan8@V`lo zM}8^{y1_v7|0FGn1P%O%!hjGM0|g>cIZUPl(*l3M z@k%{t$m4_|qneUF!GTGKI?--is6USxtBLi&qM!_1-+iEh^}3%ozPS^3wLSlwSx_@v zR8a*TDuRy|pJ&I=rb%zd)fx_AenT_ZM=V}YS>8^v*{!c8IGYG>OH7rjla+#AI1NW0 z@D~SC0jLH6YZ{RnDt>}V&em2|)<*poQ_({`$}GPeDd%sZIx}-Hgby0H4NvzUo;u10 zp1MBHLDoKwUU_$zinTIFA2-|NZ`Qh@-xRs1H`$g^%%&tv; zzM2qzkdQg=Z=v4*;vc5L7VwBrnVMnM_m-@UHiH4B)lL$I0(M#RGM4LC0l9Wq=RNE3l9>Y&$MN)MMn9t;ZQf z-I>^?b!gn~U{#Q8bCmB^Q66rn_05jQ8kI>rIuM?IG?V-5us_+Nm;ApG6gg z3=%HRlf{8u%a()Y0mbt@$g#ug^&uUl&UW-l7I$Wu8NiIr?%LCtHv8(pJtB*>vu@+`nR^OQ0*7_`iYai{X9YXb^l|)?)fZE9hLZiP~E-zEe#-S zCa4C51Ae_DbKj*Y(x^GDr#^E1*#r7tKd`muzw2DpoW`yy)6|NBg^PZ>@g;)k3i zsW}bHt;2%w)GOE6Ll@tdCgo*h8o-fOe!KYOE&*6gsya%+V0BGUJGaMk)Sok!#{1T) znJ-UdDg#i?t|ZOXko5wQv5}96Z9BA*O2RT%cl`nE;X~=ie(k!iXL>|y>W4$wUu;`` zh#+s73$oS6q$|_;pz&i&rvw#DT#S^BpP2B|O{~{tQ`&dJ(L9cU@#%}`7PgEPyT*dl zvHA;>{g16V^0ML$x=*3)bv`4{G;Juty^EK9!?AN53Cps`yZdPh2 zS>)OW&{I5184|0xBiFsHIq0mT>K1zhIA2y=4?n&k6uRfM(+fsQksWWwDmt70_Rif1 zi35wbA)7O~`Ql$)n1}kp!?bg85M;E3&5qDNs}973UkD`3w-7h1&>?}>{i5VDTuZX) zv^IRZ4_moFGnyQUn~t~wnDUusNc&Qm_HH3}BzR?Zb`N9TV%x zqIcF$V*?uki^01(lbxJA;zjRS?KkIxnowrpOV)bdc=z@3`?P*}B?f=MF0rE~6w3R= z&c_2;em4TmhJ35LKZ|oj7+d~ZBA0wVBt$i)QLQX!dp3Vx?(4@u(7H?BC%bP?*P_Dw zxa{ekJj>}UPeQ)eK6Hc`^o8t(nCe^pDLLPA?|0|~x zP*STN_}H9IYtjwt2OuG7Th8@%;$uJTS<`R=z1m|8R1B*QMB>eu2&Q>SjK&5c zYUoL8ALyDp=W_?fn+Q^#QRkQOs~VN_>gFQgcw>qE%YVP=^OQro3YsF)g_HOEk=#l9 zDbb@`Cg?f?NwzIQU`^|<0ZuOxe0m2%%JGHenPOXp)l#d8EN6xr%ZOCs5+K8wB`p!KtN6+8g zI8DIAD5L%VLhZ^W( z5Yy)mYj&QS>WsMA1@}yUrTM{)_+FYoPK6d8Y{`Dz1ce^>9Xw~U+&h=u`LVQ#w9wqqlo>PevF!U zoB}j)Lie#rKSOS7qOid6L^5b`s^ZIZ!t~1YH-vIejt)n?`z7{asB%c9cgWMMzKi04 zd}kQrw(%64HizQ72?lAlCN`-CeWzp8YoTQ5%9SS8`xMqZ%vZq%2m{GOpMhM(`VFy! zXPqQU`i-YWl=cp(sB6CN|Oy?I}| z7v`irM^%`h?(XSnQbbDgH^kj~9xB6IT)PNn?@*iCj1<%90@w`3u!5|*}UQDlZ=+{Q*q4QYkaKi%D(=*=0YL^h;vwTP&c=#z)sp%7N?MsfA(PBRTf5g-J!pWeX#lr?s`nlymyQoH(A1 zJ*$T|K|{tx!xT<@4MB4TTxF}QQ?UUP3*!Lm9SwIfQzD~rrI*tE_g{y8h6!&;aYL@UkRZNs@EGB3;&WxHC%{4ceO?|Y+8G2R3ICqtNlm1wkdr1Ozvc+^ZTA(oAUTM zSO1dXEiw|&;4aQYqF9KIYY9;@A}9e47QSt}4*Hw;A=rH|5GsXY7M!}6RQvl87QLD;Y~-L+pcOkbM9kN!Tm)`q@FT--}fCliZeOXv5ov$7OAeqBJXtjV3`v`%L9DWoJx zxJ23S%>+$!D_b$_jKL@I8O1d`pKI=Rbo^qyHFd&LF^=PR98{uH1Rc(zXW&yO^PCTGvfEHQU@jp-l3&RFE6m)00Gao@zNsw0jlFhBF~ zfUpz3W!G(H?PDt*4vF!kk$~L}+lNUNcC#}IADF?Frt86|TfYz9VY4{%E&17g%`wgL z^`BuL`PbUk6YbZ!3UDq!OTRBXjg&dTEIFm|d;a?F@uww~;^-n*Ik zax#0Tim|iN-YxOx$8?Un9pBdSMI?$kOIq0T+JBhrhHMT2-%vf!b~f6ck-^^b!@-|f zud5QdO#E={cE3G5+pJKD-_!Vs#<>i_$>H#r7h4ZTp!i&at1^lNSc$D|>N?{|zxsrDL^G4WZwUHvcM!GK>yFclQ5mT`P`g#A9lN@f{f-97niq+^6eQ59zhdoeJhiT3E;(Ujtbo*hp=qkHi9)oOu;w-c?VVywm5#;b>r zT-c?%t?if5ii})#-jy$+P>3@;yaj$h#rA^6^lSq~6?5n1bZ;B%A~qi;adyqm_V;<) zeXs>mnI9gSU&R);rFYwG>cgYSIg=dEe=p*3!(05zX%gAQ58v)pS^(^}Cxl9rm-@C9 zpL1dCM4QmlJh-v5-dt_W1Tb@vRNjIl@Z{*>4Z^%Bn?&mX7kEW732pEGUhmwTUR>j$ zV%zFkeqCU`gt-IzwXEV{sOaaK))LDzza#C?GxPFnW7zHNeVFt&?Af*r0|+Le9nU~0 zFo(C@s6JQYFQS}>fIzJFmqDL3pT&OXk0>>}Shz{Eyr4@H3-_Nf+a>eu&Zw~bfBZ+iVCZe-m_~FZ z^C_yjw^6p^elewSVzo}7?#sd+{M0mW$3-}L$A&F?Pw9`1kfkD$U$5i83CLNFY`fPk z_)1;25`>HIvfN6-O>os!Ef5yFq8R+r`uzO*uRP_UGm5r{Sk4I+7pr0Z`D~hlgm_>Q z!tvzrw11e4Vd6s+gb$Jf2t2M2#OoSo2`7o9&yb)d#h8p(xGE949RI|`T+n4@EK;Ct z7vVh(O72X6(1UQ$Vt_`XBm+l{X^Mj!=NMVVdj}cLvG?Wg9h6}I0;eghuCY+$nx4X8 z2*6a~P>-wFjHvR9eBF&v@$~sxT{dlB|Ad2x-rnlB(u4$xNK}iVNe?){MSC|^9)uq6 zA-??JKY%{sCoxMMG8VY6AHCL6qv=FLIPS;F>p@db&FqA? z)-p*piAw!i$PF&-#`p)S3x(VO?)K9-9YpN*w`AKbmSdhY#`8cY{94Npur-NlSdSs{ zvGD*k^+v+$vBo98sdFYce!mL&iz*a9;mZRlHZ3+=)Zet&*|F7DF(S6$@6i6;Ky~$~X}zmg zmW?3bFl~IXyeQVF&CT=G$IXN!02asx*tB=jxhZd}H`NX|#n>$&A5?agv;4u|ad~KA zvI!`%S&s=M5sv~r)(6P+N%I`D$ljumZv|TLxFBNx6>qP>9LI+2t%niJad2Qg$iFqK zAm)5vLDL0IWn0#93DO~dojMy?nW#k_M!`?IewP6V4feb0j5+xpkV0# z^i_}W;EvJHCr?AMGMn!#zbtoL=;^Wl;BCF9%G}L&xq5}H>7@y_e9D?>Mg5v<=2!Tc z2ze&(t#RR-!SV@7SX&Df_PL<30n%oM{L7`&I5|=7F4L;V=ipD%(JR_NoYBkMSNdwL zMSqPD3Y*6gaF<3H_hW0W35N)+=C&c1DopBVB(+8-*ja+mLm-`6(0NTXuO;E|;*I;R`MW4;9IskSawC%@=Pvd*j+jkRwlf@lW)s-Z`*;XT^6` z4fFNRy1egJn+QD({2m+Ji>XeK)kvDilfNSThm{J3VZy=u?f2jBZhVNjiJ5@#e|7CY z$Th1>9E6C%ke7!-&+l>OAU-|;(Es3)uwDm^#0nJ(EU-tUJWQH{UD<+E{sDue0hswr z$+AhQrr{-Lw7O_q?@gjMz>W5}o96ofHo=^U_*~CW6x)yGZb^ zSyb@9l@hZ&+TiGAzQd!Spwc?PeaFEYa0)>0sG)UzY%yH_?a2&@)xH948d(Hv{!``8 z{1=X!{=^CS;_HA_IkeRWlNpNq2_9GEN*k|`7{aVpnp@2>p;kuQ5Cs3%EPOCZJhAjT zH_R&Se_#!BUYI(V@P9Ag>cOZK|9^@xu;+%UTXMl*jenPL81_nt*F(Vr;+r-re5{OR zfk{8EX+bN1I!l0%G`4JEJl%$+j`)!@5Cik$JTBZB4Jf&}$!K7eW#j`2>e=zjb0sgS z=WZ{ryt~N6-bz}aN(`>UllLMhe^XMc0*uU_lwa2${8}q+y-65*vlnQ0)3B5Wtn$yj z4zgscY@mS&(4@3Vtdma;SM5xs))^`3xrvY5;b<@1>;~@l*m8X?jHaq=Pz{(ym8XW3 z_O4vqG#hfwO}R{UE=pXT`|teX_fQ8`4^tae=S=fBM_w6Z`KyJ@!O!T?-UR%mFp~m> zCpe^(D8_pCM(~XwE8NcivD^~i5srHib;%Z3%SQGwzVD5C{C&h27kaplK@L4@9~qR0270YA{PYXeNF7aoPf?%6hX8Eu)C~ zjEH!j8-i@^$i9N?G9 z?@ykMYS1$I9j=5JQ3cxvmsbAKD^=xX*>;{_w3lxJUd-ePuCrxdDfCk&xbmpA(<0sp z8GCLiM7yCWFXC8xQ>(Y|{GqRokrC)>!!gY&-IvjB$$8BIs&jjcQe(1z}icT4de9#pv#I_&Smm z8?6(;}90Fs{Tx$ZEAIaYj+zS# zn_CE&{f{~obl?W@(LQ944J`$Q+(N$$s22%2k#ELLZ`^?;e`F;W_eFll+*)2^0x+LejoH50qt+T- z{1%7OA3f9WkkHE^VJ?a)=atLy&E!I_~O?l}ArzA};Mxl~O!K-UnR zZ#NHh @Jv)QivK7LR-nQQ0guWz)3)W7ty<^Wm1L$}rSGNEJBQ=OCmm=3j{?1^~x zJTIxfvyQbQ&X$P@F<9APY7i`&ZM|72ij#Zq%8ICK0t+P+KuBJdJeBWn4^D^gUBs;9 zMs>xaU-qjT;s&~+ofBjQ6DSP=c?`<4S5ti-QudWGZW0kxQx7bCrEDIxdwwm2DftpN z#C6Di{ruK3Z^NienQCLv&G+UT^)%7x+0EEscOPqA!1+YCeA*n%($m)f5*P@25U&o~ zn1hK|+vCa>zJ0=hH0gqGIQL>VYdS_FJngUrXL<$ayO42bcdb+5M%*#5i3y3KiYksE z>Z`f+61pOJVnDJ6|4PW8YPp4Dm7T8sr$$ofbd-Ti^cH5Nglq^EzIf+&yT2xJADa$d z8@0)sH%>1hE%jqszc`7}r6BPvx>{Y>UV7;-_e_B;lSO=W`q#xiEHXVI=x1F@l^&~4 zMP)O+h}74Rg6h-<{Z*@hWhsmKDd+D_d0Inn?njfz66~&kTf$^OC9cz%?sJhR{k9mG_eM#X&PP{lm$Y zYU_q^3d-rO-tb42Ut8(l{*oI?C7g*1WlrklFBr#Z;;sMdQ$zj< zbI8=G_j+P5hs6FhEH z=;@#Vuj;&R|D|rW@^n~#uZT*M*{B(2^%$9z02IF*o)qd}iHi#TxQ|SPklzC}jzSd% z0)hx5t^%hS`8g~2K6eUMFx0T{f>C$b3G<&NC5&Sp*oSD z{g@Q+3z;|+zEw6+poXSoPst2JOHQ1;fHwX()mu4pNNHtYTmu*=!=~ zJBh8l7;+9|Vs@fpgL?PXZ!d|97oh{yeGE3YTyD!QOG-n+7cHK^!CGwp&ced@_GT7_ zmhYZv9i@v`#Sp(q68loOaK9~Ep$%J6!!eJgxg<%H5k0DX7kgWkZ+HhYsw|!LQ%|*o z@(90ulD9n*%QjOlqmm@*LflvIz>@dt<_F8Wv_({?z`s8Vc=-C1u6Su zP`y^I$-4RC6v8^d!$H#iCB|k!=lD8ODm8l_Ei`mImj|#2GkXlWG%a^mmcho0@2i6n zH|goyelouvz_LN<<3SJ`RA_`6VVf&X_ZuF18#{0i5_`To#~2e6++j*@`Hr{}#v)xa zEge*}P2GCbD}2$18h#ngy#FSH`g70$)>NDWVcs$IVS_P1O};sr`1Z_<@4Zv;V_nGn z9p?{$T7FQv)%Ag@ulS`@xmp~X4~M6v%kkM+U$v88CDF!p>TCX9->+3CmX;Yh`yZxl z=7mzaH*X*FeJK%H_xajf`PMoNdoX-3ZlTbdXlx!|JtthyXhrhi=nj9zo;!24!Or;6 zVMja?p_2Y0uynHW{jj91>7qfA=~mV5ptf$q)4ydw&#MKcIeqtjoYdZHPw#q^7wmpC z$oDpOc-NM@ML{9hJ+5bO_tLkm!w2*7HAu4ii*z8{dwEVi0yE-y#ZE1BTamLKp`G|6 zLvZY5sB9q;B+-(WqX#VxY0@`{oH)`7nI5qT{uY4{n3sMzTELVGk%b0wn_9Kzij>bw zMt)42mVMS-%&+nzvbw5DpI&RRDpJejaNpopca3dRpKGeV$rDbQTTrwnyEDY@&G0>_ zV|ZXFkD1`T4Y^n<0oWjqxcdP7vD8!+(}cgnz(MwiuDjkTf#7I|EKHd#cv6ScMf-e*c#9a4_&aYSq3~h6mcG3qru@!NM-+Vsz{6K?enE_yAU|4w)&xO_bSqnW@v4ld#`;% zY#%sX2|PYq#T$+n3p&V|3wK;@1RTQYLCKPaNG;)D^FZa?Q1asT4QWQJBg)`Cs0QS@#N~sn*i0 zSV)8ergs}fI@3w^n=)`8a3wAo2k{ZLm8Wp)(Kq0i@u`TJ&|*M3>_^Gz1|?;c$H_8ILn@XOGwvXA;MFHS7Kwz{Hn!?gc9DQXuK5fIeje! zvbEa?k`%``(voP<=~h9d+9>ywn2GIqVxc7h z#=|e}Hl!~}SZ@}7HPKz-biPK1Gfw;oc8%n<9fMo;7s#jYM`UihV!S@H*_IsiF~{uJadF}tv@?9ZMnLg z0ysVi{otZjrb=H8?im*UtD)dw4?dP0e2NCl`Ir9$5*B8>X1v0X1z1K0YZA(=j;5Ii zx(xK?z0o+xiV&&srgvBypZpeZiO(6~6Cdrv zT)}&|qs=sisx)AbJol9La+=1G_p15A*KyrEnLI|ZpFK}jY(Nl;*#)sGP}+~owb|!c zndXMd;LuBpQ=0}CA1Ud`WOYBeFR7S!p@4fo-mBAfJYejAAHoV?)6bi`}~_A@cR8@j29} zrS(4N{0CW2^iu0ngX^oyAIQBY0>NK`uv&GEo?JNJbu|qf-S#hB$J$<)4mzsN2iJre z;gU$43<*iy0LFVyZpGpKnX~p+Mo!BWHQ^i0@dNgpZw_l;#v;bHoiG?HpoAD0sf7!% z<-bGtG!x$Yp<1|BI+f9O>svWi^WXHD&cPcZzU zkg&B{GWRb*b9(SKnVK4NSY}{ zeKD&4^z{u4v&VAFb8>xGR4gPJJjuzyRDs0}Db8CdzbR6t$ZR z_2EhM908y6H9YNH;0v25v#*_7I1;Ys^d`OxO*A&c{vmfxKCSzPwq|&WxJrW4ye956 zGJX%uEwvIC#0WFA?l7rAobj0d1$L0+y9xE-`&VG>~2MgY`x#O9{XSM>l2KCK0c zsXwg;O!yhef^4ZXVf^DjC*|L|$q(Ni(YFA5Gt2^Nf4V&^%=v{(&4pn2vm&g&YN2ph zFv1J}36i=RC>!Myn+=f+5gUe>S3$49%w{_iYoq?By4#p@s29E%+ot$;n&rV65A886 z$wPov=r9Fxvflh2z0aY*&C6{?)9Q`)0*;OP1gnWPm5D=x?PO(Rg~oJmV{)32Ayr?t z$9x9%8&zqoi`W;j2>~E=t_*7SdUNMU#P(rE{7OpG#}~r*U=y51m62A=M$?)0%J*l_ ze+{?3Ig<~;xt`M#j@h3^8p2+4{)*nLkZS;Rx_fnahiIs}j;i|Xa14IhgR&7jg4O^rONpdB>Bvmd6yQ zDG`d~+UOVZ9KOo4gl;Ku5g3wXa%Fv%`5%Svip>)=D^$(z8d)uV*sPh^JX^`+d~sK7 zET}Fh{JBpt4|&2_|${9hbH53B4$TJd*w0Re%*e0)Oue`gmD?(lyZ z$7ce8nEpNPAq&yC*d>F9xsCF_69)p~fq)>U=KldSFstDo{gsaVA$K8xzBxc6hpInE zOZva&gs_fcb77DG-`^K}n5l{i&HNzP#gP7`nSg)Io{NE4t0G>b|SZY9m|N9cy-`%`fU`9&&cPhY!S-`rY)wljnCK=X;r=X})zeUW2 zCx6J^x{2z8lVGR*1MomVW&*J8;OueCzq*5oe|HBDuye@|C=LxMPW^5RhKIs4!4pCw zX)yRHRv#?uLhfh*v+RSI_Cp>BGb_kk2u5N9d(eOE30B0Qf=Z;rqtv}s$6$pA9>Dsp z5)yg@*u5|P&%HxT1WinNCp23f$0Ueaa^qQEvL7kREpQMqgdDQUzwpEwph!i01rdpIcgB9kV*$()>`)xXAW zaqme5hiFfo+4f*uBtpr7Cm557BHHsA6AYV4U}Bfh;;kB#p84}^ZUd$Vrz zpT0d{2OS8VBWRWph-T^!9wEii0fhQqL;5WIKey&^Iv!c0tN}2@|gT?zso{S&blb^#M-#xjEcV}64R)l3DW3q}g68jr?u?S1vRTt3O-Jd1EaP^MF%5mY zoRMHm12qJnf{+3+OTeq)7qy1 zP1Do4b81y-^8V%pLFy31ZQMI0HSrjv!CQ``Z>r|TJvRh*Z!O%*87qj**k2&pxtj-- zNVFxE2j9!yB`VH#i-kNL@6oG4=pMLYby}1JeKxz4xg2?9U091R;#5Rsa0|@T(2ZV~ zwJpIpvHAM1R({L#&DjrZMUT*}`&{~LQLYsMpu)rRcW>XJZNmITVvHXnXr|=2=X83d z)1yulc)unxq5Mg@zH6-GgRT88HECtAuT2wd|*|Bzy!6YQ;*W#Pqhu(h($B4T$%&WN|5s z3n!P!__(Gf{clk2QX*V#!tB&o>3li*^3kk57Rq)LDiLRYkncmO)`OUeST}fi>M;z; zeH}k+Vojz^6-yJz>+4Ep^<@ZII27-z3A&xG&bq);EmQF$%{cgqJ>Mms+&uZ=fpiW@h%8fe!_dJg75RH7?17H<{{;@s$Hgul9?$Fy0NEu25ra- z5EO<)#6UiFycjj{Bn5Q@8xjw?X(!DSI;d>xIAXf>Xc%j)BF|dG z8l&N?)%L3&_LoxiBX$!EsNbrE2bzLd_!()LE9x0|$%>yR!GAPDhK93XY$0f(KwVfd zxGZfDK$29EyT($a5VU*@$)fRI@HZqYB9KNrxhN?-8rWLAT?QrWjwf}*27mlnV9H8o zfMGbH*(jT?vaeh)mMOts5Xm~sdknI-6NO+akM94hJiO+@LXh7qQ~yB1d>T-EB}~zO zzWr2V@RR>6SyHXd`2Byyw-7L&urNe`=b@XKLXs#$r_G4CQ{ORK$EwX>C6CcwjW8P( zvx4}1nbDNFk&qW8+PG^+*H9vOv^xlV_2q6x6J}$&kI~L{Odwm>WkVA~^E*6RYMWw{u63o%c zS@Z*y+T^49(mkt*px0OFFv$ZDmd*joGKnb82taNz1`0LdSxvePzb7?<;?H{XPO`B; z%n*eDT5g1ME5V3Ck^T71@(4AJmmk*RpKdc2_$O>VUKq0&HKsYnTDAtZ80gd65gn!U zmgsY^j@^5!0)7s}9G_}zeKcZ=d@9v?-O=W4FQiix_-yaI=WcRgPx1`nRQtY^8^{z% zqpju(9YGjyl)S?~rp(%2g>_al&n}nn#Mk-JbIzL_SuHpFjJy=aqd^Vw=^T?D!;mXb zjiVopDyJCZYskuYo*)iL)a3RlUp~it#QW`S#%h}0ym>sM)QSgb?C6ed<+CA~YF1qN zH3I4lo4Ys+0_QcUk#!GGiFf&=gaoD91U5$ zwm!%WbjOIwFPsQ;K>c$(x-5EaL}-S)Yc(j0gySrDRiL|DHK)T zr_O5YhjyKH7ZT^w-yv62W9+;H%tvhhgj`@ja}zNC?=0{?Ay?hC1uFVKV0!g76%H8Y zjV}LgY=VG=O+h@u;Dwj}L|e55mt-tT<+^xmfsi6})=(+4KzxMna>V$w@EmcS6Ek~ct23fxoNgKH!hEaI*Yc-D zj&oUyF;J88wyRK{j=P*(h;LhmG^yxW1CM?)kEocLX5P24=g-wBX);NoEFTvwB~P4+ zgt*MOiF_~%O2auR2rsJR3}U@L=&&Qp<5O}-u@_vKznnS~#3h|lp+B{w%q{t$z==()tn4 zYd1CfngMJS@*3;V>-aWWbjbY&&eVOT!W#sOtWJbAgk`ZOx5C$HWHiegs;u*)UZadV z%QdCPJ6sj59(A_mwM)&`8T495(zDurO5F^`&>d`LHW6BhJPOkqEb^J}Zs$QBpVup1i0KH#On+ULp)bxZ(LqX9@M5?JpN8 zsBud8P}|X(JV+M&%Hrwmh1`2;>5sd_U(ljoq&DkEgcj*a&g(8EZ4Qzm`Nk`VM(S&RxCkC5aMJ05l0EZd)+Vh@aNq9*(k=L?r%6EQY3Y9^IZ(^Py;*5I5=8^iu zmy%R1U)Q2$hr-D(-mVqdYdd%S>&I+5N5wmLv@R9H*S^CUXgYUXQDy`O~zlyzj9g$}esFx)p3d;A<66TVqXhWG^ecKRyGTt8Ci`b{l3_;9li_k{Lo+ zZ1w{S-?>?@c-JveP(1SZYLPW;lv!LGs}h3j##I|D((ZqAyuKqAaYgk(`zt_kKGntr zCj!6X6M?{ioQx6g8h|i31R_OIqj1m}a=yn4_zbSgWhIODsgv(cg<6A3x1*t~iI+MAvKLWIK4@OE0v=UuHbUw$2FX0Z zX5BHbHOWCt$Q(IO*kbH77omw705R@PfqA%=N(pTHOj1)QuLaR?k@0m;R24CqW`pHB zg%^)rsY~#1AC~pzNG~Ovtjlmg@L7mmqzkHpHnS4SN=v7Na8akYn(`WsvB zWIxQ+xc}{?fq>1yAb!|4)eHCUl$st&tA$2WH*kPrk3jK|YwDa?Ph!E2TlkY}^6>GQ z!ZrfO6CwZJ2n=fs(|TwO1Hc~WvFO;CtO^6{DzHKWHViD2T<;NuGJWbsWoBN_4GSZC z*~z@Yuuc*Zwgq1U#xluD%gxd+&PvMxNt|bX!qdS3gI<}3rF5ZnZGJ_`w;+sLN2&-s zB7T=?WZLs}#Q5!keD4bOjdMYuE)vfZBDpGriWmN&fsdo$FPQeF0fAH5fwy{JI0@B;n=lohOYXjD zsU7Plu`&`>!{?5B;Mo96NDV#}tdQa61`87BVdugTZBt56>ZGP%x5HRA)U*p3Hi)(u z{~^@)%6BB;M=ao%nj(f}wkiKWyuqo$nEU+EHX2l43X=lBN{fS+BjlKWDPa<46qoWr zR|7rKGH}NlPCpACg8p@!2_7@Y)Yv=zJv3IanQcIl_UvH~m_!Y13z%dI`Zk`J6(s*% zuGZ!!^Yz^JSL|ppSaIxuj9PIyM&)US0hyvYPy)3$%sh5hW`6F__&75OHdjJSiJzvd z^r>bk*|9)dUOg7nlu!pRhzOdTM8uf)vtvBU7^M-Bi1%-@hyPn)8p6W|!xqdSf5Rsa zA)2br|Hs!?2GzA?>*54=4est9Ah!yfI(otlMJUp!ts)sgalo?uGhbC5@6agTdMhs;Uskgai zWh!ShzD})GN>}}m!b>s4Nnv7zQ!YTG95Yp1K4CG%b(i3|I}Ve;+vFr1o({GCijWIJq(2ReAU^<*d3@*NT2EjVsH?dI}xWQd^V) zNSt{4<&)I#5;6ym32#Ns^qWiJHG5}QO}!`wg#7&8dcFLxAq zezB}Nx^ovOStq`3StA-~Xsjz~#L@la_p%W~dE8i@(Pe|c@tYfxg5^Z$3v7X>zXs)- zJj%bp*k(8=GxFx+nKglie^WDqZVn)NJq*1f5Z>_j=#dkgc<KS>$y$TJ6@s=~`Ig7l#?T0mpK>D+<>j;(ZK-0(;43U39aV!fM&zA` zM<}vBNLQ3Sf#C#vD167H)8x1b&=NhBfcl96J^2#w0{%HWBhAu`N;xp%J+lulH~ad1 z7W=&;+v8Jx;d`feyq=Y)QrA|h{cuV~G}Q?G1f$Evo*Nq{i3r8sgn01k{<7uGNp{>` zfTrGL8QtuIOl7I17$tq7SNsrN?uCAog>r-wZK?ERNQ7fFX8|Dn^_e&ZF#HYdz|cS6 z;C$b|-+Q8yz=>&Nhi42SYCb%LSvgRz-#6ALGZi6a=A7NX$Y~%g9CH}A27Lf6E8XPD zR5-j%L%}v0>HFQC;K{qWZ{$C&JZwMIx4kkn=AzIaPb=yJ*L9T@>=hZHvO2eYF!Be! z52(|p+*5Wm61H!w1+4Gb0?y3)Jfld(8ocK1m*vm*(|$g5{qScEsHSOrd5Ku*;)yE$ zlxA2Dq}*d>$hsR&w`@;NdW?TYTw)IJ&Fkw}Q*jSkYX7|M5qJ7^@k+?C=GNl1liy3Q z6N4w>D2XQ;HxxBOfnl*@))51dSGp^#T>YEvoo99OK2*l%u%W0=tAI~Igh2$>#EVPC zPDLu5QZR~y{W@1L?3Rl+m>4FCh6HFQ31&lL%xqQ~O!rU^=h;6?b@`H$hg}r{e}vvk zs_479tLC(?DeLHtJY(i=b83}Z_ngEl9exdsJBo6iI~ZChn+m#aWBe{>bb-(M`)MfB zz&*7A`?E?uW!d=mHe0|3mKjT+)0tBj?2ws6HMOJLlqoTV(VST$SW+eVV~TY{2K)cYq@P-M{X2STGYdGmxGd5bXl;?~n(H+r0-~m_y(ISMiZZ zfCLq=c0dm@s2#xDU~yMp8xn-92D|$!Ww5iDvhwh9t||-5cC+A)y1*vO3%8u4bl;c^ zb5Tv_x<%jw=T;ww6xf#H$#W;TR4>1TZ0V!HW4CWfZXaGv+~DkrrFsnaI?I8>Wl`Cnw3c$3+w1b~)&mz;#|@#sLu6O0?A1=2Q#46p?24zj_R2_h;)qz65PqPqM69XfXi~Ph~l6J4;n{l)!2MQpvqDTT(* zbFtl;_GGqpF2B~2EU|6pD{rUGM3!p;6~oMpig6qkc7)}qSHZ;eXQHkCOL0Di(Fb5@w}~3f>0Wo(J|?x`Sc8!;7dM(Z(cW zh&Jfv#@8f3KETCncd$^6j5-JQTuj2Q8=>f;Zv!0rvhc)Vm5S}QhG-#dXV-iO5kM|{ z5VHF#^Y_!r4|}b7Dhdc@+aMq99oShHQz=>myHQ?zP;F)eh|!O4>z4W}jvw zR)n-Wa#cFy2K7HtUDc_w*KK3S`1u%lk%T7HKYllNfcow+|2^+myJxfau@_e4suuzo z;-~_%V>A+~&cSuCoNuNMm$Rl$Z8Ebq_61nTL{IlwO;TC@gA>87{yga2a<#?HZESr9 zAQTz&+`B7rBxE5LLJ8n6p!}$|@0eU&=on-r5mCaqSyPpA2^x?{{W4)yHb8SB9(XCS zwk=_w>ZmV}NYgVTd4@S4>Lex-g-zcO1Z(wtHnDc!ze%yxUrf*BcSCStIJvz3HE^M& zYk|5wbCFJZ^HWxT9Z=FzT=lF`Wq)%HkPo!=xApnmrne6HS|-!%cV*E8*Kk>@Vz&>x zi+8yB7=30lokMI7*3aH?3iV(Y;EU$+F>G^7>AG6hgu(;Q?j3RttIx*jMX8(}pWHS$fR!A! zj=>i$WlA}yN`;wZghFpYlj87e;X6m#{qJIYksQEx__Bb=$OmvPOO4aHUK$O^=t{yZ z*VU0>Hft%m^hijZTpe|LTW(gd5j8F1lkdDC@`#QcYb}}z&b;#&Vl+2*L0)pz?QiHfz4zExv#X$6E^t0 z*j5s>+xuw0&R!6f>b&t`g&>s8+$=@b-s%&g9n>v0)!bDIK{ zIN`AXLtIpOkZlf7t(G8${U!5bTP_C+ANB?}`bCu+DG4$a!W{a6`(k z<619^t06F-VE5ON>AMhn*wG8hwR+z-qjmbCDgV2^V;kQIZ2^|cIqUfFepjHsmwLL9 zAjRx%fOyPs91YjT{|C}G-wtEPmRK72rrP@xQ>qU_pxuidaF2HYzjXOXKQ!G9FqOQ0lyyD#e(07?>4e_vx54>tf>#Yf+d$jd1rF-CH;)lA3^ zNsr1J;@SZ>nUOHD48FXzFDzi&%V4u6V0bMg4Hz`|K$1ilEb6yu11rxaiS>n7_m;nn zROb&`1iZTXh<+g12IkwdQMd*E?p-* zkyspNm8i~$hEEX^~`v!u6|MK=uW8o0RvPG)dc&2Q0E^7o8k1UV=q z0|oV)R&PN;N-qUAj`<$85N%y*!ps)BhOpHMIspbgwn|d!=gbuSr1uaBBHP}3MaNh> zh3u&iw)KWW1-4>x-6~*R!A;e06Nm;162L_gMDjmnBkn-&oE0d5g8mL5ZccU+Q|{Ho z&NqptkjDBj8SPvTTD?0Zf#%K>nfhYk%RD7DuZjVx#hK*Q0+U3ePEmc)oQ_Z>eviAX z%-b>9a3}=%DVwqCNQA|jVp)gG~k;l<)fV$Z=yRAMq zUvtXPqD!YwG@nTO&qF2?+q#2}vWRnT8D7t{9`y7bV)5EsBVT+`5io+oJ9^FoDX2sx zH`_B_UxpXTNL+Gq?uIDSqkRpS675}s`pmE&HRVw(g}148C?~EVL?UU~4E0pm>W38T zZy_(*z`r8~cMt6tB$}&E0VXbrO@2(`zw^rfGy&&qNzsLjq}frDip%{~4`S9R|3@zJ z{V$aagz&4uB*uYW+y-$2B}>P>;B>~Z=C-K*&C2(*T*sb1#pzl#p$DS9M4Se06c!gC zs{<;kW)+{*G!E;fAe|ST9Pf)`y5zNwz&vX&VCo(0%-$x=aLnjPF92o)shIG}^Wq<^ zz#Cj>73&j&JSrGio$J3rDD2!O#zvfMr@C++7`;U6DG*pglUhPCDI}r(^0|zXv?k{8 zj7paEsHg{@EkqN)f8jU;7C?WG+W?O!77v!BCxic`gg`VPseB-zhRG1R@XhHR7W0J{ z5r8DZV12}_VRhA{krs)__rp5330v0FOaGJEOI;#MV)<;5sY%}$yQWJ+ua&Q(p>nzU zzLM#IP3eQ!Cmo-uut{mhe6`E&Z3(w`dHj~+nQ;mNlk|SX?=y5QX5Wvv)%RMZna`Vl z8=o;#WaQdql&U$zE|oFbHr{qFH*1}=q6f_II!VMta58^at)MR1FPU*mUMl|;xkGGY zh>szx%p8Y&D9biKE=&@IDs3N zzlL0VHE1ZU2)&HFWiWb;Y2Gvom7`Ez>`ND23<(-k_#?Ub1UJnw?i#~yh zx%2OR@mGS>zVu3!b{J87nj3{asHY!- z?eHEBg?br&b_v3|Ml-g@xgjR*)?ufi3X0&Y#uhs1)}b00`kY92!ID6?!IE%r?S?BQ8M`#o4Zj=J4>H9;(Kg>#~LBFitMFDDQBU#E%XDWY@{h z*T*Slmo^7We0S!VKX?~v!AFnZXw`1)XLOT+Q(R_Oqxn3%Z*^s(Uh z`RTqA_0dNw(6~!9BgA7UJVx|7g2(pq7=8#0Z#fi3KQ<@8qSms75e%0E47r`IA(%sh zTe{z<)2IiYZy6`e|5{|uWr|l4rjQU>brK0CH+SifL`E0ZRWvar>wGTs`LL=sW3WY| z*{)Eg1^>7ONdKjh=ofu;S5_|cMKNBeQR-{CVsNHBB9A$_@>z(JJDI)h`@@42JF6(J z@LIcPwa1ws>v=~OT^CGx2L$OpGyV0~h#^?G_jc7!b6;1b}lWEx*59e+Yxl+{bz ze`XfmJv`{zY5F;BRy|-60;@++8w2uJ`MqHnPJRY;>mt#+O>Yt@qrG&cuXP#tg~%ut z-vA1pqdM|~)(y!%p2!g&v-@CO_%{hLTIAOdcGr5C2&VE&sLbS*nGv$hw|AZi{l6XV zN!vHvH*=3(fdK$}F^TJ7$U-X?**DmpLRW{Mze3tm5>mInC-DEK|4P|7aAh;Zel;ck z2pyBzdAV}X_U!xNT3ZJ?s~yIw>5e-yHjn$YF-iCO=KMz+-}W%sUO~Ng{RHG1+n!Rk zc`e)zkwAGMJI@ykr%PjM9*&CTrd@WC`zZBWA4q_~Ofx#*;_d+JyY@7br;|GMsQmM1 zHDIeIgbYxEN)`?;nz)T-yy!r{BDf62(k2Y26+ypk&G+@p*IUPvikq(cz7771B7gOJ zysa(sj$PV%oV7}+2roy?btFj^H@;oZpx0ahuP~}-Y_V#^%;Pg6m%0$H)yxA4Qw^nO zXqFJkCe}T`j}7#qY8Tqb);xJQkFPGY3#N>WTP!tg+NetKlbosFnEUvFoQbnI#%J34 z)Ft*8YsKdUJ{`8hRs6G)gqItA0*!4q&_brEIXciPRThS_KBywql9KLj_SzSTdk4jK zsL7j`7u3QJlZFg;#sjcSTY+Rdke@LGErzFYjEO!1o?*+F`&{s-q>qLl{kvVzo*k?t zS=i0&P0-O5`~x}b!ICGd<$@))JpvAU=|Atd-%9(8c*kXL4-zk5vjFgP5SAD}3>ck7 zC1{{ z4-6IqmiaX0)L@K3zebk7F9$q$ZPC_JPu4-AIG?48ZrnpMVP6OTAZgkgs7vr_Yvx-X z?QaQqr!UR&0ez$=ipEUtRBS;~b@(e=*vNe6al2k<`+><=rJI*w_CwRPp`aOAZAJ!7 z*So!R6p=I>G7Fx)TXICYKziblFV+kv`@Tm2%a=!n?tV4WkwK_Bj7~Yvu-w=zy>|)~ z_y{Y?oadDGr!|e1c!7-4B}syY|^s042Y?Z55#66PDRgRB!9UKgIvLWI)V{2Bka-< zWBG|blEpk$6iaae3&$PWCF4r8U~~Xs+<;=j`T@vb3R9umWfTJPc@v#u0uQBfo4jJZ zlrTZ>M5Io2R7^cAakc-FmP@$V^3?nlaI&oD5a7|t) zp?J;8t&$zgrho=@9f;Oi_Bq>=xJSnaJCALZF)Dyr(k@gH5pv{ihTrV^QU@lv^SZ>7 z@l@7EC=D;-Yx$~;q!gqJRNskYJ6d#QpQiwglp-seGFDJs!d}oz%O$w zPpepp)DPIMMhV?}9iy%vNazC5a6Wfusm4khNwi`t-^P-jBksgL;s!Ox94tj|_z``p zXghOaU2!~w4jZ}&zWTYjgj`kI1UZ?SgST_|8{A@~-OY!u*mK|g%kyIK`8TwYGpOr< zA^BNYSo2PW(8lhBY?SGB9DexmkATM5UjA}Bf}Hmuo_q1~pK695Q$gxx*6++vCQ|_g z^U`i3#My=h{XR#{Dtn{!3VU;knR55eg&P_43UT2c>CdaB>kp~cXnSk{o{*hBKisu$ zsTJ2DLZ80p2%GYSry-m#eXfYVvRoq9hPh^ShQn46fHRXHrNjK_2ZN(X3Cfk!d z_W~&q=^$-yRQ!j&a#{F66Hf!a1oWLl)uGH*FP^S>lVV!%Av))?oz(LnSFYDfsEoV! zuX6!on+c#to}t(y4EEmNv+nM;Pf`oYJLa=lye?oC)3>RjUk~bgmv7JU;yPm-r7koO zjaURUBYb!Me4sdCuO|h1(&xT+c{Azb5Ctpqcm@}T&8PmA7DcU_M7t|&g{=R8Ybh@Y4RyPC3jZH{Npx}^*DG}5u<$X z=Xs*$Q-}3LPN1n|<2wN<=G8nc!5$2#?^rR@Pux_)JGG^ZyNL0HUi#o`un(`~VtQ57 zH}Kj-182F}T1_o2Q1T%IQSSnIae$gPR!_R}43T)AD9{^gZJqCWS@ zTxEX#a%{%Am@3Q9YFh#++b;>X5LG-}StjbL`&K4O zrHH6K)05FCDMB)dH3>?&DO9!vZ9*yuZmtDdoJw+xq7FHF#<~~d{*_eGuh@MGz^eH2 zd{TGg{d>9tm~#vO-;)LqDfTI&^B>BB%2aOo7SB96+6reGP2IWVwK{JCUGE#34}~|o z%Fy;XzYE|SVMFfe-N@=a-X$tnC`KiAm~b}wD}jtt7W z>qW7WLw3xgY}WCVC_R~WpLuCMI`=a$*)pYB$C&lQkIMx#S?TJ)-=;_~n+vR(<|;&q z+IYMZUFv}VqU6P#!v>3^ff>!DlKlD_NO`<%2R|d^LQmm8YX1BJ4~#9nk+6Sgu^;yPyHH_7<;u0kfv04cHUA01AG`%7Pp?DJziCp zNUR#io-jXhI`lqomRwADh#pIP{yMG>I4WLi^W?4hncC2j?+5=64?skAOw^Qx5QTBPjmA)=2 zut-Rm&}g~!O!qGGW?H#9Y5{ru_GR&s$<-BD0+6~W8>{w#u|^Rz0TPsJe^yOI7I&q9 z&enffB5%tS>mvFjB7!qVv!g9#Y&$W*TYkBE_nlLf@AY~>DYXm{PWP%beecxvS z8bIk!vsO|(IiK}3xv13 zf7wyOJZ<~AN*oL6&n@0qxCcRKr_ionSH{`d8?(xoI)^Vb6j2Qo+FQMJ>$i-=I9=9I z6bu`b?gGt~2C|P^X-aDSMe)yeP|NvL@Bs6L0N_SF{$dwB#8ZvGj(9cY%j6>H2`aXL zN9+x>buxsfY-@4Y7ul#YQBF=eZl;a={6WV_R=DLwdYlJWisx|WiuuX?%)2RpEoJex zGsP%Bd4j^xih<{Yc%32B;HJus1t!l$?#&CWMRv9>=e^RZ?vg<01)h1ii>&w4fOkPa z326c``A4}-qwIMM-KmbwbbKW7)%bw**M9&K-j?kDA2o@c$M|g~@lPDe|4MaYH#9b8 zH~B9ig}-nu0MP94&(|NO4ZE?CAv?!^J@~(VFb4~_DH|*AKR@_wr#9zG-&_HjW8M5U z$Kqf!G6aE*K|3`WNLEw@Yvm_eO#8I}HDw2&oAONFD!d*5DpCYRPhI9mhArf8$pkI0 zGW*=NNDX2kAGp{pcAjOs?^*~E8=YTbL8!hF?m8PMr82@#inlNb@6N3hmSb=59F)@GxBPy%o)v_)DjrR6n5v^^Sk+h9chvx%#-FcUOze!LTvuZcB9wEA`*VWqL8dzZxvv+p%OI~>UV-vtnTy3cf8#IuVa5;Q zPj*?MxeVkp?EQ-$msP!%zdB}GWSXINkw?pc+f|zXuKchXnkd+V6$W00RqV_Sp}M(y zd1Og!wP(=aIlwI1g6xNF@Js9n{IUdHLrTmHEOdqvV5^9Xu5OS8y|WFq2nX$4oS(o3 zr=;=>nWhTF(5_W>qQm<@RVAFHx&yPqXNVCCJu2-ZkJTtp85y=@8+$Q%hoxyKC-z+f zRoSlFlmG`$;X*j*m)tuy;ePQoMuj12bI5oWGA@vylPZHK$30iQWZ=24++=_xg~hL& z!NZ^yzFe)a-)^bL4ZS$F_annZZ0EnRuCe|z;D0;*Ptgwk1)%rD{V#9_NV9~~%;nHETos)ym?Bs^ORYU+eQ{w0ss^4Ii$RsKLOJI;A22OukBAGzwnPz@;xh23ko+%= zbS-e08UA+&pAdcjQb+$qb$_w2D&RhLcGt?|ohm4r`dR4LUx1uy4U5*_A>(&Ce5_pKT~*+wHIm-Qwlr)EeJL7j$F>fV1YRw zZglJG6{-lEm}cS z=e4=K8DdoXHSCf+1AxeT%=+Sz4RMQ_i9n#tB2|VPDd2>Pv9-5RXsjfvIC0ywpU>@&OmCyxS8_DGVW?jXG6YUNcG7KjDmcAX6(77hE=x zeek+xM?NftvKfgulO=3)Wz5}2oQvD05-`H9Zh%dSJL|nLWRgE?gtVP zLMo`^Nz3@~Uh&`^JBqEx9)r$}pNw-P>45d6qO)-cB2|~oR}f-ie8)y)Erq*&{t&@Y z^_)aTi~@{s{V#3(t*rbJfevQ~)Br>>!xF4+7g4LUv3HyTxKeeHjtXX85^$~rD9${k zlWLBd!$VyR=W0a=gk}KCtV1N5EFCK+%YrcloC5(Qr-AYam`piB9C{faWK0jdOu<(uSUUIs*{f?6 zNjbh#OVj!s9?>qpZFnT_geh7Y$ExL;ZoAh8+it-ux(S}FbO@|K8I6L7G`J%<6KagE z)IQt<<0!ZZTy2;Fcnaq@3+hd+LmG5n1db9l0UVlmI z>TgqyQ(^Gl4yE0IQB+YQL`}*v%W+rTMHsVp|9Jo3a@)L=2jv9l%KA%C2IMHjYGP!} z4$5tc7{Zu2BL72B235>Zb_XDYVKqVI^~I)WS#!bUNO6|Ufk9XKkIf0pxaYKIjpWC|Lq;q=*)jMBnZ-pAIekPqBLZYHfZ5CcI9P4uZA54=`haz8|vVjNxv? zJA7@>aLU4MetLW9SDlBAn$)Q^G3$F~Rk>5(!6tZ4n1g=?7YHB+cvEU;RB2#H&AU#F zC)?afEiSDDc>q59qvx^QJRf525cpFs!#Yk^hZqI!mvty5*d9<&@Qh0@NTyTrRi^2o zI$+#A`x|0!RPfFe$I0Mg?hEmQ^kigRaICXQ`T8GbS@xk`&AvF}!7$BMTP_S|JtZ1C zjk=g>QEH9$RBHGE4hYCZL_Q<_l+lS^&`T}d z9xj;r@!Y%V+%npGOP+Y;0iYxyb*E)8_su?n=k8a%91#oSlvBVz@EC6fHNFMD@NcRF zD1YIGI6>JPcu5cYN15&~3rcd3K`#ikEX62;1ai^37?c~Qfn!8aP#75;k>w7b0J-(z zru>000}RZA|AhfC24Mg$z<4u-8uFbz{FD`BTEHPi0|knl!*Gm6*!WSU0$1W7WjF`$ zYt2{c#JI$~ojQn&7$NZp-UPgxa5GtGUD?8dg2Q=M|N4RR}1N7@@E6m+;k<=@HzCN+9|NLcCA(2i$Ub#v+ zi@4D_WW3ZB*4b0<8~<$+S_uPX-OJYMljr5rY^f>Z^KAQc1qu~~OQ}RJUpaElmC^j` z(ZI!oIosrOvV29xwc^cKgiIB@36sKBg|)K=ljmoB>)M{l!O;01uT9=v3xltL`+ywR z#pcg`IN<=@6pZ-GnuliC;p1jFy}{@8hZI`}cO%b5DhE2H;Mu#y2vrOLW6@Ho2)W<4 zX0=yoCsUT+R0Ym0fAj3fA?TxBPt3j?tLOAt6T<5A+oX5)wD(#4m>M3GPUn zanxbz&#ZLZ-1n|7PgY8Z7p7C{??2!#Ky+)u;acc)T+~3;*5i^KPW;W>z&>bsbKDG% z>oM8J{MtgQ5&BUrR7Tn=SWnALfsO$_`YWHy7Y#*yMa6aM72=?jU+-WT{d-eDwzBkd zit-F}gJ3|Lw2mn`<}wmOn{qfM9F&oTsoI3Rp6@=XgJcsyS3vGHR8r^;3_O}npxzp) zGX$Mf${C2g{00_k5Eyc`1QjN6e-)ja9GoEHpy_V>AB1ek&*n&HRaEAmyDS2WQ_+Ji za*?%>BA-(GkwDNPiF7xLLx)DfXM|tcm?+uLihiz0bFL(09+!ck%t+@M-1=TC=Q&Hj z5K+;QZ$EJAY9{;97gO{11g$teRJip6Y;ubh7wB=mdkUb)&f?$fEVIBcTuG6@;DEX$ z=^&Gv7!Qe^6|2`=7uZ9HL-475w2nBzOQ>HzpBnY&I*W={arVuzRItksK=?B{rA9bn zv~z-&$NCaWc6#R5#cX&RQ7MF9_zuvic&4SEg9fxiimijB9{R%H;onPE+gV%#>U*m> zL`K5+ED$unx%`PP9SNk~%XZNs3q~zl4fW92RZDiGsqU%Bu*xq6>q+<6bs&up$cU7D zPo`8%yY`s5Hx|Ygh(+O)jrVYIE$Jce>xqUOX-D{FL>2`vOx;`{K8<{HJAP>?B}yjd z_97yo`?-$d$RbLY?wjZ7$dCX7fLgG>vS7I9{6F2@8=1-f_|&x$lrBO+Xoo*T08TDL zkeVXfs=BNkhA?h6qc~d6S60C-Q_55eBkl?8oQY&?EKUh%WFn=^2JJVc=|Ynl2_lE&NW9>I8-_?Yi_#Lj$K6ziNN4a){W}%MH0}uk=8scW>ELBo0MDnL?l8Bj;%rAxY=Mt==@M@`;FAZe~8f=6R?Z8HYfo^Vr z7}f80<{H_Ry*bL+({MMkvvop_UOh@b8~rY5JbGThsdsXC^38D-4hY;!kX*adykt*% z)a7_h-`Zq-f@SKlwyZp5-+oqqY8ZL4OaI8+25>?Il&G%rd!BJ2DO)AJ->0 zE_Nf_O>vLotu!w@?%pTEX?or&MJj;V1UE?ZVKpg?l|FiZ!md))nxBtSBe7m}Q&?## z2vBvF*eM-Pnc*&5mukJk^E}Eq9%jE~{fcZ^#(ul$+s*qhe!H0XyRq@@&x=YB7td9P zWfH#>*!u3r1Fev8aTtk1=y1Lme(5O6$cWJYx-!bQphXJBDLtzkIT~K;PvOjRf)gAj zylUz#Jh__ZoC1TG>suISw%AoY{i>+xrK{yrWhT{#vRxpx-mNvgu%Fr4{A zQLrd*@FCH=^76teEa@k|2%Cx#u7z44!ic$|q%~5r+WsgFE~X=G^}8XKfD@9AI{AL2 zF9fyeR|pNGY@ce^kkM!89J3I$cQRTs&`Cg$wZC_5K0dNt$GN{d5eNG*=lGy_2(XlS zot4E$vzDE6b`ZoC%2gnT<>pMPj2@=7gnEATYc@KXb9Cj`sI{vaEj|MUO*@5Hz(`fk z#u!V~=IamqM6!?*nW8=QGBfT)k(KiLQZ__!>GP5Awy&P%J8t@Fdkz%Dh=>Q&y9Pcg zbCR|D3d#G+19m8$!{sp)g7*(&1AuqwN|J2c&N{qnI0xSPzK>IR<)fZY7KE?2!@$cl z=j|UK9)ELPj`9kpZCA5>>*4tJ&NLs9Tn2GyA>h&@uxgRJyF1&awR!Gz=f3gFk)vne zwiQnQ{o3u*;?JkmwZ4zXqyHEfzVRD7Vl(0`K~=CGD6Zcet-wq;xr`0j*k;uxt)`W5 z1y4gpnxk3w4dh4%Fqz%DvW)ot9t{6B80EZ-yS<=^^@n7S$vP z)TqIyA{WphjcbUx8-VlzGlbyU@Fqz8v7F5F*S6Qpr$LFD2Oj-6dKhwr_s8;Oq&VU9 zyW!-8>?(ACRyTK7#(J_spep?~+)k|Ghy28AmPl_+Cd~!~`Ixj(Ivr-)Ru8(k5ZO!K z3YAc{=&Px^qTE)WgE;KI3}~Hd*F~GfgDn)Dcotwa?PkbN`b~Uu^f?`myw3%I&DY0F z@(+O%ca-|{cpEoOu$h`3ix^}f*fmS0{SCU%xdNPkF`^gE1In95Lu^xxr1|0D{ZH8Q z)!N2KCGCYw)$m8!EV1A}s&f^Bcp(OM>^&B{C7X|rLy3BhY@&B6Up(l?#y)sm4`I|* z9d7?_EMZn2MNGAU@(LGnel-~J=FZ=#C2sdZEn5xDS`j?n^+vnl9Luh4$I3C(m$l9wO0F=ry0wo(s>Xu60Dangvb+GtF*zFGS&%#hU{R-bNvg zP|G!J4`11dj7L?t4P)VM0P6wEF*+5d3~6gyNr#;va?l7|^z^U-hCb&rtz&w>{Hz8FO2H{vAA4n@_ zr?47IxzSFoOrD7T_xxqel^06M`3Koji#VSteT+vuj<3SlaqA?`G)p9&N9c7=U(Xgg zp4yj89=Ol0?L|4TcHc)i5t%Ele{{ys`(A`E+|51Pl^B%gzMq7WMY;PQ5flK}TW9t` zB+9($zdAE+4v>xws52XX>&&vr^76ze`Yg5#MOkRWS8rgU%Ku1xatLP(K(EL(*0Btp zHJsT9^Q1mQM!EBN?o{G%hOKeXc1BVw_C>l!;RrmKeGmoOmEj^&DO~Ngrai9xUdzbJ zDluXO=%=d6&UBt><>}OwS)qB$fd7>7(vdE#BR5_&(UPWC&2MF$!Cj7A_5Iv&)m+N7 zkjz%I&~@U2wt|)SQD#`py%#$7oWe-~m{$mc1L=Gwmu-wsCPx5GXDYSCxUDGj z`c((}a0M%~Z6c0ap}pZ8C@9;-X@em3Bnv&Ozk$_xL^pX|F=vDo>?!a(LoE1ZXEQN+ zd+{@BKg^LkaRgFjm6@@k>sJg~2ZgYUSPpqPow^p14g8Vc zV50mT+7&EXRHk?{jQ(PGq9(vpCN6$_09Aj_q=S==Po2L`04xv>S8upb;VDSYPNQnKVAeTkwh_vOQ94`SIDi$V>mrqYYH$}j2A$0;xmQ2T0+&EVfDSQEP zcWDT7{@!ge+=OUu+?Ze-;G>(;am=JTU0x%#c)mVrfzD03SBL5kEcZ{7T%ipGz<>G8 zt1KA<8w2^s`|Em|0>MgvTrk^*x0zh$W3hlcGw^xxVO#ITC&`+P9PorTN111xuk;(y z>Xpx>esmIflojIfs(4%W;%C?UyXnW42JI?ElJA0}`|bZ2KFon$aqpz1bsrFg%;8Vk zeapJMJltlyzywU_e;XlzRNMR^-jse^VrUgc7zd=InL!itL568i+XW<1f*}NiAacRL zAj3%cuo=~KgNWbsAmX=?d>#XJ>Gjua+Vkid(H(MB<=tIy#tAjuX}Z;ZgS@$| z?tRHJpP4-KybJHT-|9L*zrHpi`my+7?=!Wzx>J=}y2g^pNXcJUgVI8Jz#wDekWCo($^kRO*L zZzN*0)yn3$ccNNe-zWV^{8X}6TgjZ+p{n++)8%l6IhR=b#zp~G&MbZ2!&4tF_6giI zu}#(*Db~j`<*fP|AoD|HWv`ZZ>6+8Il=!8N7RgALyM1eesXGk%XX|fSvnpPI8S_uK z*!Ys`H4oi>OY?`ZNW0=R``_2%4X1EzV+p1rFRsejjBSMa%tW@Pn7a2~i_`j9Ra=y6 zqm@^8EGh1fK5~aG0VmA_v8}$g=E&X^*9ymtR(_=(4`=X)0M+_^W@+eWw3~_#_fH)a z16s7FW035Ar{(+XYd=-#a#M26CB?3%PNcN^Eptreq2_!iqi!DZ+G4Ak7;o>in(w5i znJxyUcNygs<1^4+ikBKj7L!v+cpa<`op2w@o!+uLnZq1SO2hFu) zaQkb9dLJxW#rtEgv}XKLPxv10-^YBm^Xx!1{^FGfGXU)8uc`6B>N!KP6m4y$qm*k8 z%V?Vld^hf}TdPy`QEVQb5Oj315p-ykU-+Ci6NG?R?#Uj{ISflq_YKiTuF)5@`18Yc zsiGe9FwY>jj2iJS##S+dankD_vy@W|bp@}khbt!;svy&$Ph<_NpW99MWW^glg?7m^ z#vDVHjRW{u0J~>xiPra?1TBsVR};a~*pj{2S0!?uqiXZzE2HdMI!#gQBKIv07h zE_Nxq0Q02PQU9pQ*EH3cK{R|YqIK^0wb{Y6p8?=m>of_>K>)niCqLwHOiyigMMTeq z$SkfhpGhj#PpI4RtABT#W0r^!yqtTLG?qVG=cQpg^(pCH`Bt?D*JxSpa!s>3*V41w zmpNsQ_6g&aW!|DG+{e?@Qn{~}v&JWZk!Ag!UF512M6G~k?D&s;STGnfD!V8g!qkeT=PTjCYM&O39PROfFFse_CD&vv>TfQOV0+);7DE@a%O-?gb z4sPTB@>zK6eGv(4d2v9+NaJ5Z9$YM3JZwC`O9hC(ggpK@JjuQZdHh*wzFE$PDgH~& zBAWSMB$`>sAvQ$Gzm+?_YAdM}ea+Cz{Ps0N2Le-CTIFl#vpFqPiU=a&aT;kNsSOp7 z76ussKrWTlPul;L8CJk1g($&chkd=>t-)9ydYber@9+3(0Yr8-4jW-~ZsCD1r)%eI z!yeFK`d(d<^7}Roa2QHz9w8e)XzZY^4UUS)%zTCQ=3EM~FgLZ-nZw zNCkc%q5^?Oy08Qk3qgoN=?0F45b&W-0X;h-2{Nht2s(<83lK;ovS3AAa2hk1z{w>z z0ssO&DP0G;Br_vBHP)V%o<)!Ym}8i=L)af#j!<+Ze}p3Pf6H=+{!5mFQV%4{A!*~y>A!?%Y4tRCD6$g{3YGO#mdRS%k{>4 z0?tXJ5dP&P12P=^Bi}*I+Tme$b^F(gjM)chZ3PG zE0ducb6i%FrY7~+{R)J6+Ykt0q<@t^0o9@I=7uA0b!emm%WqiRbBC(|U1lTHR!fxt z9L4M?oO4_SBA>d|T-nA?h~co*k5_9WejwZD(UCD1km5XGeE3arp0n~llJoe$gp%;d zns6~08OnsTHm0{aRN#3YREIJ!YnW!G+89=9fHg|YP+MDtmn&}#?7@q^K867ccoMgY zFslv?h$qu;6mQ)XdF+tLZklj%>xvz-A!v5i!4+!W=Q^*18n@{){ZxJDDbsPCz6*G; z*0Wf())X~5Rb$y4O#JFZ_~fZY{}Urh3k$R;s27{jV4K7xr=G=-cWk{kr~->A+^MGt zb{IG=R)g|}VF~>lo=^2s8!lya7BtQ5Pq=Y-I8|HLr;-;;EPzMZ(9E5j(b@u;v+nrv zGVDDBnjP>1vJnu|Xz-RDQQnGf+_s3P97y~Sb)yzpQUiym~`k@~7)KKCiA6+hN(4CMwk_Av4 zRX0RyUT!}zocuq|{sJhDF5Ch|ad&rz;O_1c+}+*XWpD`)Gz{)Rf;)lW8r)riyM;i| z@P_2KbI*BIw{9lXRPAZm-Tn2pwZ64RxIHMKn4u`160M>`DoRdZ*MfaTOwwUn87!qe z3uE(h!Dxp8LE)!peLb1-eY@2r_Pl&J*%`{rJz=Aq4r>18m?F%{_9c`J2-BZvyn6RQ zhBlJnOzQ38MDa^b8pYE+=;&sugEsM!Qkh|}$grCMNp8^gbB1RiNWdpB$}p>6c*CmR zva)YOr)sx4I6ytM`(&ZqR71D;G=bC#J7g8@nhOmO3}j5mkk7Wwf`LG75F^$l;YHci zKAcoep)K=FxbyjS_5-A15OlT-yUcXf-Swm|l4q4Q22z@j^9(uEgR#q#Ix~(sZ{}Mm z;FBgdM)3@Q57PGO3;LX{?sWpvf?lw?d-{*2)+;11us?4i019^K-?%mI=wnjD?(tF5>uSc`(JTVYDvbRP->k zb}RGZQ8-VMmeaz(XH97wSNh2`43*Bf)F67>*5otzErj9qJ#UfIGI@z69R^2|(!Awi zWq=)R&rh5mnxG84UYHWN_uDJ%OrgT4>3xJ$tm*(hNp)LO$x)V&bIiS?5qcg>e6C*8 zfPPtr3*~+5n$zA}LUh38Q|=YuS-q<)Ng(*S;Ou#^)>yw~Ta{=up9Qj{P9DO6roL+8 zNTR6?lb9yUGU*y2Ui;ooKUtM51Ckil0P=?<#DI2v)4du}h{Gz(^W3l%YFyR0;xMW= zB`a1Z4vZP5N&~9!a%>_GJU6HQV*oO)`+ArhmRJH6I*?Ps!NAprX^RF>=?@-85mNIQ zmnJJmJwTmU8AQQL<`vAORMf-f%SpjYeo={I5Dp8}T`Jgk+kRI}@5C1}G1C8ump8h( zCKNkUc8UIGgsL`rC`;}bGnW*!mByy-9Q)r|)WE{&ilj#|orHlGb&-*J+9nvzE@7n#%hl>^vA|5tz24M9M zV^PIDl(F2gUu>H0GS$yv2_xE?_TkNr6J(f)j zLIpMkT+Omc#krSIn(~#J$kW<%eu0`HsGmj{B#kp#o(zGB`lXB5aT%h{kE=W7i&+$U zW0fy11Id0I=F6y#(q>OY_Z%b$gBg98zhrTly8;r??6hU{V~J=ZbK1r+2=^1VoYAE{JhVi)ET#y%CvqXaq23HXZR|HE|dOvP7K8cs>aZ=ARoO zuqPndoVXP{szV<%i=+Z8X(MaCg*=@##jEh03Gx4oxH}o<&vpY??YBR_VITh`kO91M zC*AaLJ>JM^`4m&MJEGXCa7(1G4{`WuFQ%ex5Oa{XUk2l?t@_mrm#Oub3wP-%zEu%H z%pid0P%zfm)>rBNAQZW(N2O1z(c9%5PQM!^_s#D4m!qxptr$r{f@CYy9Pu~J9Qu^* zOMDp4CI{*8OxbbegRyc&01>tE>C&W6QH6SI$EB)VLsL@M(`P@mqG5=_&=vRb!fk{~ zIXtGHJj!2w7M^YLfb+sIuADc>Wtis|szQopm>(8Si+s~3)3fGga7Qwmd29JTL|Lyn zbBFHVm-|(htm24D%LoLaW`bVS-+&#rsTm)KIk2D}_HWg~-`;bhzKBG?M*~lFMC50I5Gkb0uHi;I0UK|V)v`3KMGq> zuAloCO!tc0o0Vu@*nY5cv~Sm{wwZU^n{WdkIJsWkKIYfCUu9h}GQkA45c;!Fe>$T< zkvRUD=`ywo#Zk9eC(V50D9v>06&dM|m;YjUWT<$Md2aX64dX8gyCO0#azE;UKq@(!F_fA?q)O&daBQQ&vv69+G02yz|@RdTcGq|-C&q{wcrosqcDl}^>dk3(u)mN(U zis`D&XwlRVi;Rqt5G*z*R|XO~7f)&}l!~As350yt&H8H8M86=s~<=rsx`H)Xt!4C zv6*R#Osg9ev?N>6_~EhivRwe38T|~gTz{CoNdB!6h=*8+NlMgTvhSlXR}&+m+;$;G z;={5PviOzqCP7m+mdO)@|616rgJRDV{#URYh)&=}^4I&o!^&#O$-{A`V`xL9iPb6B zyi&q_Q<{&60h1MN=ACKLOv8QjzMSG6%sX`BOn?>*hj+4^wKXs!r(d>5uSyE)dRxLf z4+~pN61{F(EhVs)#Zm2t7*-Fis;wh*oyw1KcdPUDj&=b;JxSBq&n~SZ?m?aY=l5Rw z=ZAN9nC6eWa--90_o-Xf*WX*U5(hc83Gk91V7*F7*E;NF2@X#-=a;2>Z}&p_)2M#% z0s(t54iov!JXf+4&0G>$E=Q@Wi!6i$)I6f{if`$Z-!7}Yy5wocA$&Y z$k5lWTqD31D}cp3xE6JrXzPl-^q1c5mG>{7MYLO7=5wK@o8#Eys~j0+c@bm0!6sv2 zU-M!i4EICpty1UPcXuSvpQCIYP3|^=ECHW26w*WluYYa-MA{U`CPlwYvNO)gJ3Ihv z`7i~{8lSdE2DBvC2KYz>0CH)WDLZ377C&J3{d5Yh*}f3z`}r`Rz#MaT4z}Fi$dA{# zXq9VF2|# zG6~gZDQpi{5mu6L*L{Pi&M!E^d;0bOjsC@Px9F;PjT2P&NP8W?VLp~`r)Jj@34kw9 zZEQ8gm{dr2zN`6(>C4R{Hu@$_8c*+jbPeHU6XLx9l7X(xH<`mbze(>+ROgb#UJxSH z?2Y=Z9V)-MM-XzyA76>90^34nRBJT`T#ldUsrvF_+~<#Kd%e5CEIAS+{Q=FT1$ z52)R?!PZ$HaU@USo<~GC#g+o7s(w2tG1GHL+GyOGM+HJxw(LLvV)v* zJx-g{`R{i^`z`S3{mHRvxsD~-`%|jRc@ftf?grk3+S3ws63hHMp+Hr#(F9%r2|e{TKnFzH2-2U&}A5ee&``_z#5&b(Td7W7o0v`olP3*4!sRRhq<>C50DES|bwK$$^ z@$eI`n3pGLU11*NT05@DG+_d~;)N#yR-z%H0_HOC@LEM3OgM*N_YQzdY_II8R$TG+2bzNxm77tG}`1ZDR z<ozn zeJ_!X8wO?nK)zWhY_w_8I111&5|#kq(Ou@y^&w^Hmqt_B^D)lWEj~fW?a#fyQ|Ii; z73cd3igU@D&&S!1v!_x@AC`>+iNO?g5O2XH zV2(?myM2Vgtc=&l@JyjSjFHr$L)YLC*iyz{;(H2Ue;^HCs8fZIx5E-8BZ+3&N|ZI8z;jPdAAQmrVj(A2Ni*GLf?~@Cf3>w%e;; zL~LMF!}`s`>KGat$+`7^pf;_@i8?kwuM`e}$sK}x*f3u4$bSufEkIIG9E?H#35wsr z1EQS#Ptz?P3sW;5_W!jGPtF5~Mgc_+>hJX_(DD?IB@e3^@4UvO^DHZtSIgT7+mySH za_v%OvT*1XXZ$djj1J;tD1?@}qaWe;Vj$7I)RvV7oH|_hAq>9Nd_#~BaNU}KcDe+3 zU#|5hR?!KNk((ZUz32$o^v`>yaBe+cuR^&kOpg{4ki7?Mm(|3Y@JLAW?we$+`Db>FcdSxrwP4KD}Q%Y~-v zqbFmtn<`JgFY`FdT9U;43+$FaCn_nOJ9F=2!&(b&o^VTUScEOYV(pI$WOM@1; zF67iIi#%+6MguHA3;^?KT!d&SBM#N{XTk%=#|QR}teT=_!u$)qU>q_d*cS}I$ocY? zg|7^Fd45v9S3-8rCf%Npnlt>wCp7exDEVvc5s7;*}(m4Ar@# zo4+Sg5wVmcqJF+pA~wgQ8lj{s+LA2Yo+)lqExjPaM-x%=-}k@4wdQnkLI0u-bJBB7 z9oSoVcg6VxO)0yxhlv4}hTAg_2(TfDyEdJ}4vg%JRxP^q5JsxP*l5j(cl^nH?y!m9 zFd^YKQ7b6Dlkb*|7r$$fZ#>h;E~S9)!;8GetzFi0qympY1LJ?*@(wklAnS8M-oK5` zE17iiRL9pB)bbtt-LUeqa`JJp|Hp$ZI~eJY2U|)vBndEh3mFPkZlop}l$yrD>Fzc^ zsyqTDRe=Hhk_L{(i9>iA* zNzxEBlx%Z{fr5sX(w==n(^-brN;B+Shi*zV9IYHvYqLEbmpQu8>!iQNRLmG3n+Y)d zk$FF1q_?6?bHp|7KQV^yW#w({6(SYyTynu_jT!~me0h1y+kBeL(9OmyRiiE~k(!vo zpDW=*P*fE&Eq?0=udJEX3yXrBK!8WcLB(z7a@P&68kYHpep=`4Ct9I&87C|wU4o0p zrPrZr%1U6B&UHkmu5pC<&SUu=p5~_Va(g)BQskMDV_Fn-AkHO%&!7MmAbXoIcZG+e zfR+WgJoM;`AhZ@SknR@lap}$~;3wLQkuHj$f+OsHc0ln?=O(OK-=C9qag4u&g$k;o z6#Ef%!)aJIjWJsGCOauX4L=u)hnbujeO_%xBL(A))$MzNZlV};PtTB@7=tM>Trx6M z{T=Q%J73h+l})~|<%uvRAl_4=V!cc9wQHCF7&v+cE7Rfj&3q_2&FLU$a2RRe!6pFA z5RcON>ZOWq&oAH4mlRQzg9rel?maLgeSXUy%W|U*&c#0&;bUJ$NZY^l?Iz zSBCL7nH5tbN4zUvD6K=vxQ1pwT0L|DA2f@U9%7OT*XjF*4P5cmR^%5;XeYImd14%WmFRywPLt zot_q=?IfLyB-(r2?!8IQlMnA`ppRy4wDYciE1-XKpxXgC2?@uOp<4jQqH;jch@;_t zORkiBpB$(OQj}Zg4^K8TLYfSO1Blsy6cojv!leS9_)f&*2ks2anM`e=- zTwS|zY9d#SIVw-rxlD+;0o?V22!iw6qqkM*#w2JIz)#)vh0J|K&vkcA_zDkom++`PM<{_EhQCU|;9g zx^i+C?sy zpYOGoAtum|V&&*2aDv1UX_!CNtOqT7{}JKXpKytQ%M2Nrq@@@~PSuFGnRW z-vJ^2&UJCI@SQ*cfa#Cyat=mAxZ4Lw`EFK+MT%O&J@s})7s%}xY5Z{?@Fmi(C)$@w zIp^bts{u zb;w}cb+@a>BnLSig!xllFfGRT^7riLVi`K+QaAh*y+t5I1AuoxmNw@_nM-Td@F+Rw zp`34aO~&nL*P_(XPp}3WT=Q)XdW3d(vD-2f&N@Ek?due(i*1^FPhg_W_B{+m0!$Br8G8-W#9V|; zss!6$H3POFHjv3SH}1g^ap?o?LcK3LN``_d?CLQ>vrMzPv2YxIba?n>n-1TQpcUE3m<_aX!%+ohy;=r#$dpIwfs z4IkR++G90p==W_XA9tYN1qETdAtd$@n^wr<5X zwjkUsY4B454In7($hyzs_wvrZ<^`8%<(>%oWVdIny_++D_`{awEzsA# z&%BmMXP(Ww)9`19(Y`S}FRUlu;XxB8K-;bilTfGF+@$j8%vr!#6O?~!+ zf!@&<@MkB-e3Kl9&E$MxxMiiPW7Na5nB^Z29J-v9VLve%#0)fX?i`Q(Edvw)=?d3u zR;;KEjYDF!{?~pm9L2@qYL;hcHyjHO8!F)$kvqC5FD-DJH_d(N0#+@BJ9C1be`<90?6i6}XkieF}Vxa9>{FC$3eBGIbYw5r) zi|TA$k6=ly)?-_nh`{a12!ImzlI=oFgvWdg1<&2aj#lV&m-bV|cPiu)GAeDw zrbk=8hcKvzw;A&hFUzx430G`U;v%2nJ17SY{3sGPuoTq#goTy*_*=cr_?zaspE_65 zj{#lc*KF3}B0#gTq3oxCj%&WbN%NGZxV#u``9tLk-6Pk7DvziN>Td`BT7X2a6@-}@ zmIqQ&cl`eBC^iApG4D1i?QDQG61M9O8S;q*V~&`RcfL5?zV-JLLjP;FKJuSbam)DT zG+(4sjE%FQnHdR`#;b{7C}uXG!6)nQef82l2)8ok^(ai%ht@M`xoBN6&_%zQAU!+` zWmCQplrU02EvEN|QCTk+{sx$jW1jn5E;d)-?0%G(xa_g-iWvB9)nH1ai85+XLqj-!^qm4$(nSNkh$$vRi2xFnz8ER0%riqj9H^5FxbG* zXiN8=X;nv!0EHjjWH{!LrekHAer~-VpH1GHAlgYg!RWYEaWwJ2iR|H2I+l2&{7?d6 zTJkiFIu;&8AQ8(@!FkTrMFD)@0+XO_dLXRfM- zip_-9iD#t2;xF!!u29Iyg)EBkh?P@{j+K5-r>`et*tnGYf;j~$_9F`fjMdUQFc6e0 z5IM`03=3@pu0)4GzwJCW>9~kvhaAiI4I#!C`f?aAo=Vqt3w~9Ao_3SW>p23vEQo`N zU#;#U6VSUY(!dmT3oqBlO+xNOV-f`zk$_Tg**8Ky{P<$ghsA_F$54j5)%jp(x_P*v$IBU}N(0q~(|5jDm*SdAa%dvZj$z zXNMQl=ewrGVg71Az6@67M9Umb#+*unY4|U#`S7hS=R`#*fOEl|d;#Vb{w=4IDW+D5 zH)Es})-)4oi(imcY4y3CX@%ho7vd+ROYeRd zlQ8@`$9FT_vI-zAn4`KO63Px;V1Jt$w9EGv=bfO;SNBxh0^k8H-;EFU*h6~Ju5$*7 zSkCY!`&YWX3qXomz#UV{Q*q1I2*`t{h7nVj<~uG#y;AhbQU5(6IA6{%d(v!7C1x+r zk>oEzy!-O(CmvR}^D8U`-}lL$+ls6w=I@XDXTOSyOTJkX=@1k1IJEFcA|EeHf}W{` z0@(#Ry5+`$>2v>t{7xZl)IT>$Aw9wGwt(KsWKHb-ya%YXP5I7 z=mCid`z1#!jmfq`($VuRv8`QLHa|fozsU$*$jGObwgpEs)x9Hy@04jUCGSUeY~NPT z*@8+=kO1|(1ZliRL3D|dy`qkNTNegSJp{5Dg>N;pnDo@M#iEcCvAm^gga{A>E@-~2 z&km5b4|J?+?bgCGU9B$JY)yXQo?A2&Sj=O1>U0o8n#wA-t2K^&LtrzBGbGH!h-|9= zJSF;#YZ+$%6Sa}+ow)#3T2$>B_%+%xOh2du91vqZiw-J^C$qwCMB77ed!`ee3mw9h zJZr|f>WA%kn!oDRPD`kbzrFyEj~!mX&-KYy6d)q>tQ8D*gkrl{<0uqt6U^9tGE=DW zi8eYv_wK)xgmfI(S_%sLNbW!x%>(!fJ9#0fvh_ZaLFmFJK*6V@J@O5LO%(D_H31_u zz?4v|*v>lkz2yG6ZWBSwv*b9>#AQEp2j0RJyG~jx=)~hK+EIs`hxH#r-@w=q!VWDU zGeUy)T0_F48u{iuG#M}`+G_avTP(~_Gt%$hsKT8nMGOpN+s(g?j0wPOSQ#9QqY7S$ z)#!PBG0NDZbl7?Fcge(X;{67Q0bkkeuB!td6>&kU(>LV3IXsI zpw%r?&_;i4XKuw~3RGo>`5Ul(%?F@LOGl(C?PiC8_zkJjuzcsU1MT$>q{_=_W@g4= z3EV0J$Ho0$h$`jd(3ryt5Vahf2mncH&3->|Kf&j3)!e>*kV9-P8aOuCM(kTKJs^H! zQo?m^cO&iYUh&yzk>KQJH5NOya?<(JXobn1bKjwFh@!!U{Y7V@%@2NFq;iqdZng{b zv3{dXg7&!<{HEGfQo{3~V2~LEDrb&;Tg5Zw^G=t+Pdm7EL16!xIm6!PeJMMYMIJgm@b>#v!uVcn|bLvcveCgp}>9EhoeAK$jwpgj(dqZ z1AtA=q`j-#J%n0QI<(2GOnflmVZO6XS z0Q(XE_ef}h3&wkg-nnP_%1dGI0=h3Xu zR1AZB1N?Rljm{qeLo9;UUR*+*wx4=O1F^%x!4?JnpEc)Ks$^yVw5b$hB>i@F2v$C}^ zQ;I+wqe(S5#t1w-Ep`r87go{j6!fnSc$+X~G{nQ-pz8|IiT?3qJfhkjNH1VageHH* z9dhJT)abZy_kGfr!BrXpG29WyHWZeDbW_Nz@WP3o#Y8iaclUt?`EVS-a~23#z?21P zS*+M}Z&>j={5Zl}(89XPWDt%EZRii~CHrjbjaQAER`%lwc90MaP8{0e3iz_#zf|ww zi74G}#3m?_ed*U^RixPnSvuKBdCo|KBWoUS6|T?ESy( z-|Nz7mX%w3Kj@L9{>|0qHDzVv0@-DPSSSCBr`-bLXptX&pcs?cmA833e0ChW#VN3i-Dqw zVuf^FZh22xM-mYAb99L)^C^E`>L{&qG!|0CFtg>9Zv(2oN)*YW9dh|xwE1yUTcILF z&`FNg0O|h`W6nib8#JH`I{O>!;5l8~**mz!ID%vkS`-Jb~Z zBrx?=qGn`4GSc~w^|~oc&3xP6vw`=s2)DorAe<4=EB5d-C}l7W3Qm^48Bcs%=4?D1 ze<;0&|_Lnl^(8eQgsNaA6m7^sG1TNFO!D9BO+;>0m0QLBpkb6qP$&TCf6{%H`3 zM?QxQdHXqr+Rr!Ub2)2iv?$XStQl_fCUCPJjT<6)5}3P<>?)kE!0NMI;}ROYelNuB z<;`MPPndn>-5X(b^3e{9Aw~1tdTd3cSjLqlRB=^a=z^go!8w zcGAFe17o6)kb%uei0nW#dT3ZG8#kE5{opnNzL^Ysv8TvqBon0Rp*VDi;Q&e5{1J({ z@coWMAixEM8R*iD=mnu&m+`zBE|L&TJ;J{wTnHFYYwPm22`A?!0A2%;28&Iqs z<}ZBzm9t0wzc_o|6T@S2SIS|Rf3l^>fymad1hAf>?z~q^roco}1m@p)Ft;u>pDRIe z{EucQA0M9?pT%z#z~ttHdQr!q|}RTtI69(k#HM=i)BRJl*5 z#}yfU-J4iH8ZlrLH35X06g+d{I`){!}DY*iVsTQxAeo= zcvc&iq#T|YI0%QahAoB_cKO(qrNR}AdzGd{L86^M9o;=GhgwdjVd^`YOxb{3l5 zN%k(lCzyYB!UHNLJvRtdX+y>bUOorgRe!7k@c6%9v%D5=cCM)bWor$^#Gh1LA(y$Y zLd#GR_;2WjWm2-PqU}~m2qFf7eGAvoLr00hDchw840fF9r%Tc8<*bYXSEm;<>JNpX znv&Zik~RYAcBaq_br!GhstGq!OqPXkeg5y^MUh2*Qn$+)T2goXQmlOVNXjreoUu#`f(J5 zHD(YE(CvG+lh_UMlobbdL^J8RH*vi7-!TIR_S)l~-W!>gf*z{u-@quJsig&ng~i{l zP$OgVjGyL!c?94X|Dyw*#6W@u*6N`6^Ow8o4DH3@OZe~riZEIEKZ$B>l& za$X4Dzgpp106jcQZgA_uZc%i4ofqMLZx-u;kLvgw68Lq02>AI z2@~~15Yy${-1q{D(^>?hS*BNoE!}X~Ni;1CjHdED>@WsodyNQuOwT_z=MT87RYU0- zEeg8o!`*Kepx?u4AI8?;MQwacFF0p#&8P#UK-I*S+3)tCUIX6qJ0`2R$Fz6CSl_uC z8h^p3L9rk#Y9rj2h6DSWaw3dV_K4FGLuAUAagOn3#%n3w`}K@#icuofqx>t)H=>cznHtkjH5 zZHQTT4A{M_25Z2?QV(lnZt7TLVzn2+ki3-ZotWmz4rsqi zT!Iqf*JDYssXjt@2uTRSEjY8+zsz@=$iIF4ol5MomcF0lKLe~+1l#WgRI##z}=CYP}y3N6X(!O)maLR0B^sM3SnEoE*w=*81c+xAR+8 zBF{tSY_YDb(&MAU)72UNM@vo3YkFK>?Rl=&079ZB#T#XT3IlNckE7P=-yQ4Oo4|a97Ky~&tAq*}b%Xi(-hj{{cI{U%6OVRUaT*4o4RLdGCa~1}Ax#|dBn%NU ztYwsNv5!OhwmP8eV(FXXhfe7(791gW&r5r=7Y+fOIW8WU%bg%Sb%TJGgSOc~otHYy zBWx$Xy}X;f+mkzMfOa5~!c6N)u5CoMu^$EC|P949*_I}P}<&Mvcr(+@i&YF$Bce)tu_B;4Dz!U;v1v3d%=&Eu$Q|EAh=2|VFM#T^4{lEJjW<@Q91@S6Lg5#o zZ;$=fzGeK)O@xr#*h5n7RT}bZ%?lcvT}jHF^^zw*UPkd7F|Q{__}GLxMt$?htZcGS z+9Qp#06Mq0t>Xfb+RNx5pnU8>wRS5b_{W-Fg^J#zEqr+kHGjsd%&eeC z6bIS1gDQzks69w7)UrUIy3lql_pD`&-XILg?N$q_H>fsQT-Ozi2v*N{OE!41e-5Xg zWY6EC$D5}sg2R2AAO^ZUnzU8K8RkLpx}e7eOSs4Zpz!;kZ?E~*o@GhVI`Wt0*uzzA zfhp)5pHdh6-eeh**H|qm2gmPEzg`Lb$0kw*)|^ErK(ej~I(OU5>m38_>ui~By!n`Z z!@bnXhwyqEJ~ndGjC*KpG==Djz;h$i{n<=JnLRJ3k@W;5Y_3l5`UKwEo&m1mi#OC? zh#G>}9f*{qUTa8K)giJG;50u{IT;$SQwh2UA7)lqe$i9>aNY=t(G`K_rkAGpQ^UbE zs+$IXZjO`E-a$k<^p3%*CW4Pm5rD*p3+}Fw%9g&tX^YpJ7(b);Y?pNO#S69}h`@o$ z1hltZ>Hu&YAV3v~TbU{q+h#d*iYsKKx|9Fk7(h8yuDUt1uy#@&=V;t*vpBN(EuMd60y3uh9(Jn@1`6!TR9TazVhve46#oxmU`Cii6Cyg{?X; zxsBu{LDx7>TcyaSaEzM62k5TMgD2cXdA)K_X~(*z#Y3Rdn+9QA?m@DSiK-_4k4+au zWH*2|5wnHSKtlM}3W3V{Zj&Fhv!l{)5FAbkLSLV@y57mA#If}T?^va_>CThM>$!7g zR?ZxYfBAskj}92ZjMqAX_BGU(>nOdUZ7_<8Ujc~ybwB}Qs+&4QW!4kqr9-^vKL>0- z$5-oO*uiQLM&)K6c)jZ5)P)i!&^`B4<~X@Fr6hcPJ4zdygP6)+{4RLL9w3%3e@7^2 zyW2|g8{ro|t7pcgB_6Uup4O&?{Knfy0yU8@moiq*4oj^#peP0C*@L3~(M+w2=bWOU z6O9||^?`?h9yo*C^ID1s$4RUSC0ZD$KA`PZwZxA7TZ~N?aQg0@J%Lyho6I$^G10M%@aGe-`gKa@Y_Tr zZTy9biZ2NK6b?J=3MO&s%Dthpk*gnm!G`~0a6RmMFHQ=jvUS^<`6cA7cK2C@yQ%NT zKM6y*V zh6*210}GReWP&V`%=;E;KT?FNVT+f;7tBSd5Qx)WhpX%(7BHfT(H$TFX)Yj20Fh{C zY~eNu?1x^W6>$+l^fBt+&0HNwSJXSBve5vAt2>If-U>l|S9aM~!@D8Ly!4rf9lB4EOo z^sdO$-gPhn3{A{Mx0tV}n|DH`?8yrR_P!om`*->K{!DOBdsDw$KE~L=I4o)yyDOh8 zZXH500>;&k6lFGc_-)FDlf_by>$>cB*)3xA@ar3YnZD9n3*&*q8mw!JuU`9q2lt7acxwY_ie!&OnK@efC zI=+Y6D3bx_hDxfcVf?<8RKWBHS|ABYJKHlxA}=;kMuNZMQ)8{#R1wLwImvZ~`9X`s zY$`;lo4o3hXSAz;mibP51f)pX1~0IG;~Ek5Q=nkv&pR?yaYUaJNvx9TiJx556Ys<}*z%`~-(B3`| zB57`WwQ_d`phxSaJ_Gfn=`4-ZV;?o+zLmrWX>n9Ba3%Y`ulc5F4i-SlbKfFxE#q+0 zatK=!MHmFzNFJ83kVz1>uz4vd{9)v|{;Q4yW-0eYC*b<~veu=4{)NPO&Wni!uoWAg z4{%nUTuaKaR0-vw7wJ#_WPZ*gxr)d%aFtJWjGyoR39R4loA0M)Ik*GK4-<%j#xuut z>l)9f8GHB77J|PhV$3L9@?nQ;5P%FZqR;AymK0=6h}o3_{d4-WlG#)?nJzc{B z!U*@;K+cz@F}6t|@{!H7e89FhMAwBt(817w)B^~V9i1j<)| zeV@`UbeK4Fl1&u{eP(n#3b8<+RKE#Hx_>{Bl&T27Kkqs=0I$Ve$P{nuXsN+-)HSXJ zEQ~3^n_WHXrQNLt-X{$_VcSnluy6ET2V7E2I@cqsIqYMHs&2wXSi{*<=oA;?yzsLBAvS@ zFL?kP|Aixi#u}GAc#L=lmVJpe@)5g~;ZG!bAMA>>oKt^R*?o3P9L=}wShqkFn7Sd^ zVMY}q7(TbG;OYshl82d#6$gYwToeHey*5DvXxIhPJ-}1_`(`vhgN)n{8Fe~C`Mwdk zv-WrW9Ve_Bis6GwdhJhRR7bPU1u?HtNjO@Gvxx9 zbMtb8WbD@MUS;e|B=z+Ym$Ke{qrlc!Tldhfg5kn}!p5lFEksCSUCvP~IVI&taST)W zj(42mLplC2bO3m{f|%FM(Jrt$PHF^a#Cz#VlX8)Lk=fy#(C1&Y&+lVZKo;U@F~k1C=Z}D%-c-UUhEm!jGVrei1PWez678%ZOY<(XESBr z%jS$ZCfU_jBy2i2Xk=~U6Gi?2NZXkAs6NUq8A4ftB(Q(cc=^Gy7=|F;GD+!y{&BN` zQ)Y+UML5I|`gEEX%MTJ2{zL*FfKPc9^s&Os;W`tZW@!C&74Z@_sYf4b2S?8 zPiB5S{rWXT8GVnKz1aQ2cIq5r2r(DP7zg$!314YJQQutJKLDvrg~C%G=_Cv5isyEW zCd2oEBcJgBDgzy8sy{{XIkgEOlkD7ko=oArCGFno<3f&m<%zv^o8CidhAKGr?uenj zHxBM%mW*PICL|qOjv*b5TzD^g&_Zk1L9R6Zv`dmIu2yltMHPF|v?W{nEXl-_xi5|S4uZ+EDL>#we0wSui!3kV^_ve&1h0fdnxGlB;&@Py%fS2z$v9=ySqd7X11VO z;2Xy)mUrFu7nb*$Yw>6G=f}K7{{#qYp*H-h12*NhGUc{pKg&kcz*@u~io%A65Ekvu zFSHMwgKbCHhO{^^($HX}ZPUYu?X7L^9uekkM>Lc43KS_ap_g$CkgVc*N3-A~SusW< zjRccQ;TK2Hw6ChjDdVW%5K!!Gbv{DYz(fZy*W`Df@D%aBc-qerc)55yU(1lF)FaMI zFIHI0q8)XJ;9g8G(opC2rLatrK>|j}NXnqZqL9)j;9&{(4~2beE}9iujm%fxe|c;9 zZn|&{oo4TtYq^MNj?p)lT^v8jj@yP~42RNEo|s+3Hr$4Ozn&jaHua@_kK^CkNTiGOpNa&@x z0~PwtsYdLw10{SfID!A%j|)GO*sT|wK)(X3Io$>|ST5k{ccVlSW}I~{ZsbFBvuR85 zA3bK%`tZ|~1BLzw(^1h<&PDP`DkGU#s>!RA6sVA9TA7BX49)Ce(b`i%$bsi zTBKrMY^IMHqH&oFo}sP^2kiAh1>mbnXe@gD&A9!sIQ7J@#g$!TMveK%XrO{7;)qN1 zLMg|5P)Qjw#%oDWsLym^bINN$peAU~xk$Keso0f?-^GB~*YY!Z&?)RBA}+%~KRDsl z4Elr#bBxkVe97uQl!M|?pH-2*>h44HLFiHRz$u(7x~aSvP_VT=J2^D)D&8)WDDtKt z40`ZZZgm|%Ct$lnZe4LcJ}2HpBYxQUa-L;}=LOND`F+(!rFusIZqeg@JKn@P51d|2 z#H1B~xy)Me#E`f}`pqK!#KO0+E#!CAPw1$PMUPH-o<1`Pzei@m>n&OTN5R^3{&)*q@SFuQxq z?lIo+ys<;wV_vTu6NK}Lx&VBu!8PrTKa5Xwx2YZMHlb_R$KP;hGtbCU--|jJw4;}*aT#*jtaZekE zec2f^Uo;Loo{4oo{brA3pa^>(x6;YRd3DEpyWNW`?ygBJ#(uk0*Nn-9_}i`<}N_|jYbF+2D*pej(|gmhL>QJ8=X!AZY- zmFYfF58>CfyczN3%C}?Q_u!M;W?kBGc)IU`aaAU+xlOn%_W3Nugmrg?fdFlX?;*>i2T5 z)SzR1U@jEzcbZ?c{X$Ep5MQVV2^UFjLxfELzYbzpe$Cmx{@TM$cQY{&$<{M3Wb7V+ z5{9_x&51)8De}2o1`yhiJf?@GpR;q?9+O|6)~$&*wur8?DMRxRvIf7t4AuI> z@Gh!Y1ji5%rqMl_VCH_oX1`%?fV3jzd)`b3Q<)I*rcz-3ZeBaF1Rm1)^L&RF!6 zJYkvs`Xw~ac+}vNouUtS?ib=Fn~B@uiC?iWE^`ZU;`J@8ih$`X@F*vbuuKjL-I6cz z00IB8tucJ7K2%c^n(KL@44=^H^`O;nY@A@6(~=(a#{TEu$j*j|(N-+tNx^?ZUxX9F zLU;qR!Z!WMW2JePu}i`0e$Vw}FL_|!q;nKaJ4~F7nB&}6L4_-{G)(jaL6j*AZfo7l z-W&GgTVX7k_>MVSCT1|lP~x7lk0#?D z*#->4{gC_CS^F3E9Z3%QAVtr^MrbapjlmRrMNHbd)Fx2;1Bl+#8l+jCF^>RDk2R~?1!cY zm1%8F3cinr`osPHo{Y8@Nwc>|eBTQU_MH@eE}fl?TbG#PG=!R1X)ehBStaB-;{MDn z$s-H*NC~K#Uy!H)25-7$^|=p#M}7Ucjamw9+T{cmUJ(VRXS2J`whZ2;55TpWZy`iD z)b_MtPZ_%{o;Sr+-QPH?#;GNoM!EXoPGs5UN;{WF1P(iQK_?&&*=zS+a-#H?dkDUm zPD6MPr?+v{_a-}qg019DnIFK2%!fq{K~9`Sr2}kSQ{53mgEd6xa532o)F4`LH$I;p z(o)h+ZFAxl2I)qo=clEotBFs;pCN6){S2 zmE{(2ojA-|>d?h1O<$e`HVwL6D13TMJI~6opQy8=3*JmVuKC^vy@bakZ~s*}$v%&% zX3D>Fs%G(sY>}ypUdDR%NU?bcc4sQDR~+Cb-L+6LJ^K>hG`+!B|`?Wz*+N6v{Vy=x%^R zl${ipp_(C$SNy6>@80Gdn|ksOOy@-P>2Zo=<3w*|P3rhdhm``exj2nNs(e{)`3f~9 zJnwR8x$;uE;72CAf3Ilv9OuB$7#k86&s#7jXp5yo^|5*+8`X~XfzNR@< ziGJgYx@qb(bn&hpr1>J_X>p=Op2JA?kJ)5u{Y1I(#L@hEj*{#6O6}@I3yRUAat_-e zs6px^sDl?cIa+1~TEfNf0P5(jo_z(NPIkyIHw^LC*~rsKLe7Xg0sKsRc@BU*bzmb? z;IrGC2>-NrfN-(t84^zd$UhzNRH4Fq#_EHhaIVrUB}veoCw_whZEz zIG)N6p0T1>-r}!ZnU2#JCA#wb)3%1ZF-$BB>XWW~(rhPiyX7C`TGhf&CkbG7)ra}y zSvP1}*goe)RwHaMRHj{KqzC{K>5`HK^fClg$0AHuhgv##zSWjB+~OQtm4=oVHq*%M z+f6bsoj7#KVaSYQ4A&QLQc)ru2-=z|B}O*Z(j4!VPfhCTBrPfxxns^QDHRb=?~{PW zMu2>vTy3tORE`XJJ(c7Y?hZ)9UZ8AN8nR&1#HJmqPl1}q0WP0BHxydEmWpP zxkEGyL-b#8BH1R)Cl{e!72Nvw$Vmk>jq0F71M8woy-9^d9N=}`m{7Aah_EXaG*M@^nDi|8K2=xl_NB&J>elMNtv~V;1?=g*+o6VHneBnQ*G`;sz8cweiLs{B} z#rr9Z8IFNUXH*KC!n9s6Gv>?+n7;D-uByZZ*#7E6yy_WFSM0v&u$~gHyzBf@=6MX( zAh&|jCFX3J&&@tR@uaswZtnvzSX{Y@0;1$xxwd6ZrYs5 z2X~aW6k@+glNRY84(r!f7P>Lj+Ap5))ixs=y&s&&&2z8tO>@k!dZMYm@}=;h6hMy( zkcZpo#(QF*8X5nv?F-R`!dLXcIGNB(LZ>unrZMMJiS_M~Q$}0v!9{%g$6kv7${8To zVMoq^fpz@#fkCBr(OKXV%n^4w0G*uq;~w<8!qU2Qt7eMmaMQv1a7^R~?rfnWX>#r= z@<+fQt>adfyXnhIfDlCP_Z~0EGtz#*BhC@F*haqusYzTJn7tgD?i%Lq_6&AHZ){Qi z+MHO7?>nZZ5QM4m%BB1_rbda+P-~B+)8=t^Tb$)5FvWG;QUEmqyFJZvUfUuxl&n() z7TgpEKVp#VGqkJtJErDCJ>H&T(X7X{G1dTTt<<1}F80z6pfN-1Jh6AqYE#V!8vm38 zuwqN)91DT^o1J8~s+u6gIl{x#<3zQ8Dr|oHLD^Pmennv_keyoT^O_IOMB_apH zXfY<(#+ESkk~34Kl^hONx-$$}rx&9n!LVPtF-+eM@zgnZ)67n7zP{XY%?Ejql8F7q zL>KxPSHYVRz&YZINXPpFUK0|nl3 zcdx;?!9RM0pg%eDADN!1IWM;b4=~>j@&B{|f4L1hUc&ADr8rp}6W913@+wH1z{ksB z^-f;>A%^uI^6CtlV(Nh7JuH+#C`$rlW-WYsq(P5Wb9P@^bB9Meh`jng4gk9UkXKo~ ze<`h*j(cdc(~xBCjr(xEygLA-Pq~$A&;h2#EkWc}=JKVg3WL5Hje)Pp>G5;v>qlNJ zDG40qw>rkS2t)VkDsR-azAWR>T2iz$`dRvPf%>#3!R{%VN_Lnl29`&nq@(r87V2}! ziSEQ_!g|2h^4AOFulB)k8<$c?R0vZa!K9uEdvuSakFb94q&aIdTwqD$U|e@v@dI8n zaCLv{Eyn8z;wXDvbCnsu0CE-?oxZA7+F@u`rbK4QmIkq3w|E!O*ZhV7Vfz!3J8_EP zP`rp!aC&mUCU&@Y%gRL^C{i;7XK$lTV7q3Lq-!5wT-3 zS*+%w-O8Pn1vfoG3*70oBnVq_X~Pty|BJlJFl$HSQSeS)RScai7$V=+)Pk)=l{P z{d2bOh0m|yu7@kOEsLSo2g)kMfu*6md)*(e?nh3Ug~S==Sl8I9!@zCrP}uvQD?#;Z zHi{IDBK?P=|4QAyD{<Zct=CDlsxYIWWq?EJMT#jHqVtHgLYsliYg^v(c#DJb_+BQXOnIMnUT68cvrNhn;A z2QSW~OY2QBt&_W^RT|gMfZ=eBMvZ|JA#!dKOrNhh_kC`*y&2T^$=sYXkhX@7`vAnk z<;k47Foe)sZsfk6*#b5FCPIqa!V+9IYKMnIDPjrke3ASe776rrR<6g6=V9Z;XSkkE zEO#fz+pZ}I4J#Yj8r>ZJ9;ueeGcA$Aab6dYUVgZnYeuLW5Q^(r8~wy$`3SU!3(*Ib z*nTxz`DV4!r3}Y-nPg;tVbBe59z9JY z)c+0~_@s-%xlUx`1ru)tZiY>EAg(@&q=AJo<{dHoup*8|I^qFQPYm5Rkwu2$ygUt; ze@>3#RBPR5M>;TdWG~p|5O}WylQ9ndjtCc+QEdRJrf0`NuY*wApRoL35p4lFnwkrP z3zO_WXrXFg_mux_Lkg3|Ljp6g44h^~VF&a|7(rtpJVHl~rcucJ;UEJU6pfGAK)6$^}_U8 z>5;hPcJ9pdW*t5Qu3$jNkHGS8RQUTVbrMaW$P=^#|ASvL<1n`b@t5}1$KO|A_9Bah z9`t8Z&xW!ZMH_`;y&rk4YIF!2&Czlkvk9ZY6GbzIpMUZm@jf8Vh1vrKzWw?-D&~Ly zK!D~o;#*JO$>Mi)apl1?xOY~}gr>^DbJ~?T2#{T;Wp^Uo)#_L}zRw_DcWOpiRG_O~ zQY+R9uemSbzx@DoVeb_AP9V=*x1-fbo0zTx-Z$IVF%=tWDOC?byNx+mm*9 zg0F#yDK>lBiCKNah6k9cfB=csXEfS#iZ@=t~WnVso+FbV|;AnY{V9F{euKK~&zvR#GxM zB+(3#?dlYF^#n~Qbz!?APnpfxyR8QSA>F;Pc;1DyvRdibbZf?yK@DNl)!BGD*L z!oNf0dwbM=*Z7s!hp2(6P0$^H`fEjN zo#7$EY@rzhl_Xcz z?5$-eEOJsqf?KTVxzIk=URfP?vA&1$>}kbeVYB{|U+{2mVlQ{}x8LL8+hx~Vmv(L{ zkHbJ&nH>L@k|6#BU8%N5HCviYtB`UrOu}!GkxEBvtmG`pm}`PGHM(HeL|@@!^_mZ- zAAB^D*_Sdbo3RLz=03)BnR5Vqh9#9U(qmtZzmCXdj7TUINn!GTkxv*bcr?DreFz;6 zz(v!;2v%jg?o`=xb@w|L^)?0I$XWCrcr*10h=$f zK~(WEXnJqj@nJf?v#OCOlYbsDHf9&YMljKU;dA$=P}@I=wd_K%wfxfn+pu2O5-WwD zG}OMCm=xu)nf!bE?XyyV<yaz zxtLxq-!pbJe-&UBrHxY;e%m;WM5FSx$wLXU;8lj%OoXt$=~03LY~w`;u`%l-Cd6it zA+!lGt&&TlK#Y`tsocC~tbDJ5ga6eE@l!pB)*yX5fNU5?yAF-2%*R<8{sB?)4`l;A z;;z%F_g5Dv^A3p}kv|u81L$bK-S^->k%J9BC~>Z-J;*F-e|#Y1#ZmYb${3SNu-7~6 zXr|ZPG?Hk^@~gDp834U_C;KPJ;2{Z;{riG=TL05#Y0;J<>&KYxg+TW%>H4M~rl6L! zF*+|QdAUCwSRy>NHT??g`)Wp8dP(^Nf@mf`ry5hpglU}_rXIZo3%wmxU;HJ1_-vQ6 ztIK-n)y(1j=rl-kga>qUivDg=8d}!?>@`*3Cl_SnJOa=&!=H}ps3w3|fWHn9u zR9szf-~M#H3g|z?5*500lUJcEzkmw5(8Ic~ZpFeKC~xl!9;+}_qs4Bpb0j-bvz)Vw zHYW^?(|}Pqr-T0)eZxS#R7OB_pvgD=qh0IyqY_iF;*33qz{h?z<2^>|RHETbXR-yN zK5Rv%{*Nk5^!W{ihym32o&aFtN?N1J~Cy2QeS2jHIT=%ZQ9%fg2RkxBsdpRQKC@X?#A`L=rM*R92lRs$3!`tDx+UA#+LDCb8%` zb;*em8w>=4f7x-hDwfbT?N=&q?NIC|xK}BEmQ3(y> zU1y5kGyqCkEiz70z_8zPqV);cbl4YWs3me|AsiRy)U4BxK6OQ|$xlHP?dBQAtg{X- z&gf*j9dvRD^amCGmt2FI+%DvU?zcu23KLCf>rcYleSjbOz3^r;v{UQgj8s{bBVCRh zU#pl!UeJSc(PB0NY#<;)%hEzvrO(mgS)~op;sLDE`0S%3K|4@Xt(e&IGFSR@%{6%y zLQfZ=5aDb0>sR=R4AW9m!xpa*9Whu*NNGTuXIGD||Z!{L=5eXVoyo z)C|C@mw4Pro2?iz?iu7GcvV`-C@ZH@oWwv`wm@e{8zH0`P%!s3FwTYzb=T8elU2y(@o?u+7J$bp$NF~n# zO5DamJNWPq9B538FFRdoP=1{g9R&)CR{+53t5+F?zOM%C=#SWhS}X{j?#_hN%vV_^ zLUQ_4c%=N>=_cP z2?pI1RFE{3wB>DhM%!i-oODr;)g~L#w=Y#kn1g}qCq51#cHOLS)9C5z93ux>A36b^ z$$7bIpdUIoowxJKCOFzkW6HJWQZw<6>MAfm2=(@C!;A0X)6})m=xgNAFEKqgGG8a> zEw9+lPvSI8X7Kh|aN_QzF)fozF)bHFqr9F>E2)LmaK3Tp001YH8ZEEKyTf-6lt#3J!^K^Jf4)SQoXnGctHi4P za~nBh9KBjfnp>oTkwfUS58rZK`t%hVHD=1*I+1Tj_bfsaSeTAlgWXW-yafY^d#1BP z*<>0^m{8Vu-<(%@5uX`ZHhod3n$I;1(e(xE+wATgcWVia^_snRwjZs~@(RGVG4%90 zzWmPSw8-p!w<=$+lsrWjKtEg~ZG&GR??avL)de*AnbNWm5%H~9ztNyUJ3f*=-2J4N z$GatKuCBA31%-JqoD5#mbjpx<`wib;`NB zukyYTluJYq5XqwTEK5SFjTil5hW$_o~Yz{d`4p020I;Kfr$^Ejl`V(^Aa zUhisG$S6KM`j<=dMKHn&YPZUsNL<(UgU8^shRAuj-mn4l7yS+zfiiLB>g*d;jFVGz zJiw<_bc@pb^;Mhi))2CH&ak zwfY)F`F&rtf?POXWyz>M#ay12`s)r>J+!u`rDSD7my?#85=JyVEChaUFx{5+R{FLo2RE^bUW-^dx8 ztbs~e3v}?`)`T01s4$#$dNQ%LhoJb^R6cMlH|L+Wm9qjrWBWwYCCry#vDuGIh2ECv36Y6wkqF`WbJe^K9jzr1jQ;xzt?|z*(S$qD@yAz@^+EkiK#< zX-(W;sl7x`V@Hg>1GzNNtUR%KY?r1zsu*-VG9`?`Al?(~!t?Vo%Kp)VNl$FQ`&sm+ zOYnN4^%@^0G_IvHp%>M$AT)vq?RymrfY=?C6 zfl{iuA(;#<(WSZToP~3A<>~_bg)w2NOxkX|alJMB_=8lpCV%a>Zz&Y|=5%T<%{+xx zwZxm#@s7nFueDv`)mTPM$?0Tw<9H{|k7rrUu&5+wfH!i_P6z(|rG#->`=ztB zZU*kv8i?=djsIro<+;HB+?>AU# z_AOI_e@kYWqB=tWs1SrC*hNQ4H%-;b$Wc}0VHdvPSxvIFnZgW_K8n6^cpRV!keu7@ zW5JlC^8Jpt20OfEz_EgFfv?0tlP4aO6FuH&;Bw7D$s+eFnJnss-uv9MG}FSItkWr_K;D>H0QM7X5(Vt*HWT;fkWyi zJ8LAwZR59VMcQ;L?%3X}8ma||Zi-T;Ken11vPw#mYc>>eh}xA?n?(?DV(`L1Ex5M;X=xAGZLsUTzyjjr^KP z%MuE3hg5N|tgpb-%F&qpE&x%e7{CUe4o?M@7AFsX&~l&qHago(kbkNPR~?{-jS?jT z`-y{X2?C}l#187u1J$C81e|VGf8Dj4&*XKLzLfolp)0Z!VN6daQSB$&%CbgSej{<) zy%j{qpRkQ$ne%K*U{k$-Fu~`?B7|Jj$lYSakMp5OH>Q?Wli61+5gpsC0V($ZX|90g%_H3% z#FpO^-um;UzsqmyzR~Mr4y;E?+KDSU8zEY9fBEgwAmHzwYTG3a;J)L}&|>{?RB)5^ zJe58r%D+M#B3VK2sF+%aIRvDxQlosy+@$3r_2JyBg>sR&78* z(D>j_JD_i31i!u8*~{Qd)Zt>6Me_quSZ7aZr52MXuL_*dHi*3(L#`(%Q{xzne*tks z0LNX#O4g`;dPRU5;2c&qMIG0NENj-uL~p+T0N&!IxTssOlSY5juHCKRp*9y1qYxE# zho==YN3%kV#nt;c5{*7kA#)E_$%KA(zBvC@xX|s# zr6fG$_Lrw{`mIi_m2u$k`ydVe!=co|{sQn|&*(Gsm`x4c4XA~7aO^(6D!N`#ZiuB0 z-_j5&m%gk6Aj~IOs~n_;uLAAEmd>WZyj;z|PE6=kTCQj!jAiFU3?By)oHW&`Bi|o; zaeGbIfm?2c@_bwXaW{ks4$-*Tbl8`=3SBSUTW=vZnY6vgU3NS6jPEMEgj%9quaN&+ zMEffkYY}Byfr4@3KRRf0kPE9R$TxCB-B1BS9E(^XLK40LxOvdKxhg(cJHSOA0zrAr z{z2NanRt06C3|J0CFcqIH8$u7_hI$&_^W__ql7rBI4+9k!3FqX=&L_dA=4VY3~!&~FWNsBRTFq}O{CrB*(Xp5L3GC@Y2ehW4+JM}Ur z9D+!`yMicx4o%(bsO$E3M6XF-IFy^wy^S(&^@&i z+YiZkI)6}xJa8^e`e5UQv$W&g$z!0F=|vES;e|y`3%*hggrB63^Vq~yI4 zMl3?!*4)Vo?}RUduK+}-Ky$`=fS(31_wc*g?3L4KGVT2!L_{qaTFJr1$P`qjvR=J) zSbnT;916-}Cs?uW8Y$fIETE=jXwQ0Ns7aTZh=6CI2I#PF)Q?ngRBEH&+QwA|KIRzU zDZBoT4LpzsuC9N_jkZ93LHl>&?mcUcZ=lG4sSX+s|No4Kg_Q*ls4F-L^&k7pzw+jo zAfIEosZmyCr7KY4d;w%~jE4>crvb-=r!x;q8-yD?>H&(OLQt@^(s8$isJohyfP=f{ zt)9;3rR0lMc zB?l>ar~Dwg3CcU&B+v{1Y~@)tOiGg7X^7+&-5jE4b9r0*m%An)Cr_a|^w%q%xNi#3UsJs-J%K4tG#( z{qFv~x!<}Zcxsfv1Fy=(vpztYE{xUB5@q5?x_DA8-2l*Z?D1}DZpnbO723j**B6Sm zoRnP6WFw+mg;=vOAR~Yg;#!u5YF~RO& zo2g(rFvore2VO)jQ<&44L|dD`2F4HoZ^|nOm5eLWjdzP3C{qpT)Alk$|6IQLuo7c_^qY zwD`zk;DqnQps;RIb{6*WIGia?kWLE4F>_|P!JYw8IVkp3GA}}}r_|a!JvPqbM zw(>#zE12Yrn2SFqWRoZZ{M#0C*gwU4h-_|=U}Sr2!2CGD<*)^3{KKogDfmzB_uM} zUzMW2+Rx2e^}V(~!`>(c3nzU#b>a#tAfeCa%%?`!W0M*LwRQh@_}-sCn5NOK5a{`% zgP#B2!^gw>FFUJ$h)q;~!*t-MCZ}0P;TTb-rbiY3vZnl(9p%@*XjB}Z>e>DW(R9EU z--~D_7+Ap3L5Xnthhoj?RPf83-~wRl6PRO%`>wPk{r21X zwW+`}>IV2DZ)Y@ON7EebTVtXlK_F;=ux4;8gc~_zj(PPdCOVArCpfBI)l$n#zj$l= z@1RV z=piDo1bY5aQ{2$}r!!~dykY3T&n-8y!i1+KkGdz%cWi$X9RZdu%x8mqrxWdK~K`)!U#c`Xd*7E-P7c zyYL=7Y%C1DPu~R6@im%rrb)lx$ry{&_U&t`Y@hCj6{%P2a(1D|t)^f8DH9cgkk(Jr$(8Q$sP3ck zqEpJ{lX40<&ihBx{d@s>Mk8M}JWv#w9f_L&Dgwp>3X_n-evgiuA0aIP+h8Ue%fmvy z-#gn2hr4^(Jkbe}Ur7zYB2!Q@^V))%4#3e$L~Zn}qU&cAnGfB-bWqVLCn{ifpGrQ!?t8M%H z?t<#&bJXIGrNot4we!yeVdP&P{=L;4ddinTjmnjBfy3( zlo^pADM-|V$_;+)t9MkT>OT?qjIBi+TNDFP^>WB!3(&m zqnHtW9^?-Y{rb*fs#l^)bH&x61-R{`-LIvGzHh&?U9V{g2X}*g#Vd}m)|l1o)7;A= zh{@v|$y0C=%bN%*?ML+`?5MxE3WPmB)C%)Az@@(dixL60wgV;+Ogb4BT+D9QAFALeFeN`c$h?xiad6zgy$J2w4?-dh zIc|4`3qjHyb)-@re2QM)#||-|-fjiC!DbPrd%_;5^5ODe@p>UVa&7;fy9jWD5;n?p z^CBTxx55T6xx|-(5$o8IT(=E3d^`Pl z3S3c9o8(G!kbG`E*nCa??QJw=wdr?n072MacP~Ax&RA&h=I_6?7v6n=wq=n4uDT#APs)*H; ziAyx^eQ~|M>uFY~>7flSU!FOhqU*+sstjYU6Hp_BY5s8C2FE`T4_|rQsO*rUYP~!l zDxM3^?ml#D$l>5Z)M>-7bDE*!UUi~u|AW4!$EMxWE_mjOC264+#?u@n@h3Pxx>Mk# z{(L210fun(KCY1RF*G`v_dKMJkc#y8l9wMrtW7-i9`6W56pw5U-!k1+^$HH#+czHk zx5%ewd$x?&Yj=4(LaXVG$DcGpwo2TAL(Ub&;q1DnOe4-~@Q?p;IDX#)IP@&oYk>9u z2mgrBEX=w2KtdakZcdXL>Tlf~@SlAE3@}a&0S7qw295=Mf=4Dt25oRfo}57Y%1 z1!{Fxc9imP7jM^Q3=-E?Ws~ErtifqwL11WXor~5iOSa{(mAM|CDB^}wApPJ6d)bw6 zUK|w7y3;hholcdcq#qoC8w4vdWpO?EIF+8;uy!tTe0B`EOG#kwu@~wM!2R45TxPea z-ZF7;mu=OrF*&ptyAYMQ3ewy+A^+OdU-B_BF$dnQKB+)Y7{P{;UxgE=SqaC`k=_-4 z-ik8ZT}##(IUjBpgin6!YYePl*K}O~6aj959vvu$UL3KSqqR1k0XOK+1SWAYkTp$e zF}C0H>E^YD(n;o%+H6e${_Sj~BmDF8*Edd2)f@f>? za7Aq_$hMzCuIS!r?|kBKDgp^i2eaGqidtArVN7+QAFU8GfL5wQlb7a0*wB&y36i(e ztW8FX4>+5Mfdm2|6>J9479I8Bmk0;pga-2M{&xn#}En71P1;yfi2m2`9LSQf1_#D zf?+9vh-%1)hHBCV*bno>gcbQ zN8$779Deih9#v?Lpnua%-<2-Y$hz14pz*5y&v)e-HM^#=I=Zsj=#-%9+Iqz#Il)9x&e7)RM#IhQw~R#qM#pNjb{BL$YfjY`}2j0vF>VcZw@Y0?{~ zrDx=%k0^vjKJNz-MGXUKg@Y+g9y9hb;(7y-DrB%iRxsL#Iq&}9kCOo6`-PKh#V zC^LW17}hG*GBuH<&YfmltcZTSBxjZ5NU~5!bmwejIyPR~dKv%hh?no#1xGA?_2mGi z>@zVRX%7m-fz1N)9z_lMcaA_+Lj}G&8sX~&&R6eDRQO!FAw;Htb4a4B_RUm*;N+!5 z0!zRm2lDY&(D}}v9d@@exeLg-%%!*%4^Qb9#hbCky}d|%6Uv9^X+p|=LS!fK)#DxH z*fklS(^%3i-OCO=2Kv7D=bRI3clj@V7t!49xkDb! z$J24VVn6X`JP>?&P5sdwM8z6D=kYDmP&@$ewm;QtdqzZlV2ps6qJ`y}f(+6Gss-aw zl+l9A*SEy`nf=j01*N|gnlqDFdmLorf!kr*Tdcm@8xQreHTvCsLIvSC_YK$3x_O0g z`uSgFe6#t)trNVUnWZ9>@C!BPbc^`CX1uQTH3sf#m4o$KG-G-l$PAmLvT8EF$XNi8 zM>5RJQNO9tRJ1Tet^tP?EzSGvw$10UJCle{PHj6H>3-IggaYU7&c_}S?n@Qz(8ZYw zS|cwYNT$jfW^)57I%=G22|hyhL2!33YPQbtBiP;RX&2hRG`B9Kly16|HrmYB&(*K_ z;0!Vou^WC{Lzu%*trHkhX5pMUQ>y9X?es#V^>G`e=MSOaw6Mhke}L2 zd|Ug?1y16M;wzJRUOVP1Tv^PU{`OaB`#Z9|PxlKQ*@OmqFfa-=@V_^iAWuOn4leU^ zL-?sY2OQze&gM`@NcPk@|trh>tJ97cu<>=T4C zcW}oA?Fs{ysA|35ivmYK6}{8K1wH#pGvmt3EQ^CpxmH~kh5csE?_1=f@o$f>TYzrY zDbK0&QO!03no2)4vW)9P2E-487FG%4#%YdshgOAiD-dpVs`Y8pxv|&K1-2jK|FHXB z?F{E280{QNMFUc4=E*q{jP2&^Q!BV2b|hW`Km=~%3Dzie@x84V9lW$IHc=l_vwK_% zz_33_JwBXEMzz1CF~q*$&t)BmZdZRO@hRv_C5;(u=J=36MF;&{goKbDcG;_O-D-WC z+u~yOB#n5kiZ5{WM9wu`S>u0N<66_u}(O2;2> z3s1|@XzYCYiu8nN;V%@8$v+Im+ZX_e_}t!bV#b9YRnjNkHm^A9Ih?=R#nOgn*0|+$)743l_~yudF~W?E`jG4F$T-(|lU9 z#vQKD4-`O?Qp=)twBDG1c?+p)ZzX*VyKaX{r}`KQ`6U!c zUZ`d@9#2mu>KJmQQ2Z>%A!&j)o&6P8ilqx>0jUV!Dvc=qU>WPaRcf)O-{5_h>hy(J z!2jB@i@;T!fci1aUyz(3%1_+6ccR8;bxO45&UM&B0WtM@Ji7n@((2t>FZm79x@k?C@)4WY$KHnk zsqH@+Yha+r5u9#TSgd6h5r5w-aJSa5Laab<5Bi!Yy_!p?*l?Qj{Z{fIa%mRVOoW^?|dz)etIUgWr^m(Qkh(`)?WAR zcW0^O#ihzlu;8T1CyJ>31oLqYe)(fF1JDJo?sf-4Z_aqYid>m-AY1O<_Ty3F`FaD-FmHr*@5h%=po zw_cSemZ5=gF7hg^Zyk0lUks(#2)26fr+>$qrdzo|_in&yPB~vKUdIK{Nc7`qv**^H zV&zA5ANGF6b|I%O*MMPdYoeF*uuXuY-@*LLb%WzmA_m07$Si3`s#9+;B4JM%AOmaKk*4VKNh+Z~@PHu+YA*NIYm(p}}0w3iz@x#pElJlDT zOf&C;;D<{Q8L3{VZ}MNRg;$a_6r#=sTWNsRR2ApC?iYq>MA$MYAel49u>=4hjX8#T z5BC)HDBI1N7mxy8K3aNw*U;tZB=FtTMYO#0JIXOzSep7R9t8zdr#gqm^{V;mt68UP2xX2J^+M;m zzcOW|eaZ$~s0$tK1e{`y?|szD+BB~04TCtfkO_+5S!h^}|9q7w{ck`@f?Zz>6jTQN z0Q6^gJZpFvA}LsNbQ0rA^ChGb`>{x?DnEPi$R_jlkS-KYAE#(T1?g5mT=# zMcl2LIi4Sz2u9ZbG>H$Gl6-k4E$Sxdt6EJ{FaHyTjEDAsAIy+?RJU43x8SVZChV=I zyKk}d>sbbsNB5El1QHf|^ZwK>iPx;B>PEZ)g?a7p!)eL{vr%NSU2Nede5hfK!q<%iaTzk(S zrPhSI=V4aYAbQS?QbKU*v_6yt$2ziuP^1|U*f^Iup+HUX9sMTkOMQrrg(NHzb$e*Dx=aL{|In+SI%uFH%j%C?7GXmuO*f7SFc-a>sMF*8j@Akc- z(P#8>=jm95p;Op;s1cJa#oouvEtAQ1*d~4r+#y++5}mudp+pCX50~AuVn;7$SB93N zaM!Fy02KqwJ3MMAxx$frN_V~Nwj)~N5S_FChqAW-ZlhWHe$C8w%*@P;F*9S#%dJYRgy}pot{zeY-@LZ|K>35yWk%}m&ErX z>=(09mW|;cKIc&IZpb!B{6^}d%8Kzztb7(SWRf8YK`6498%1E>ExpXEyP8BbJhj3+gq*_v0&l|%v{`>oKb=Fp6no-&)Zh;2~v1Ttdv-D zOoja~=#b%3mKKwEpoRU>Gg#*ae}6N{WWpeW4N!!6u#OQTpZj^P9HM6+a|^vOm8xMX z*1Wfu_COX5K!CoI+~IkC5k4KL3JHUogzB2Au2+u#AWxyd9MNsW4t{#XWZwmCMu-Y4 zjZ3%c+x z60v;{ONYWvjH^Pk);0XPsy`Vc#Ib@8@uVp*3N-ruC0TG8;F%lb$yKF{N>bA@xR|p{ zF{er{T^RooPC|E6@Ba|ARy%fzXd)B|*Go(ucH(L|NW~(~&Ko}#M{oXJg41L8v72T! z%YFS-8+Q;!P+APkDPFXokr%CqknptESWNVsm1hZ*EgY?6zOYo=_Owi?n)NO;PT>@G zsM34f6C^4CpmECf)aD{6ua1#adN&$6ZBeu^iW9QxF)49&+(x90lTViSifG_1luE2s z@BmF_5<@wlMv0S1j|n|TYNBCTS>&N0dL@QC8GUg~mp;t`CQQ3b`tUZjcKNZs!w7rC zIN;3xYohp0WlP_`c^aDxkL&vJ@I&pH>6|xd)`wLU(6%3lnj*PB{gB!(A)I3=onKO^ zO*tqK)kNu6j9%a8!Q)I_$(*OGCtPqVO;%()k;97q)xNc5boFXq;Q2W> zwAC)5o>riL71{#XL^{X>|CZ^CiZlOe1BTp5r^$iVCcTOX>T$+D(bf$$P5iKdRb;Cf z=!~cW$OiKxNY$zdh!!=y**NefK8nQeGZ9+!=wQK-KM){^LhYG`;ckv>i z@x^@S51a-wR^{3PMVEhMSO>;-?rCl$jZV!jAh^e#ceh|!TdHsX#-R$6V*1S-4 z*zLrnYT`~OSXN**Q_H@%8C&&DOW(1QJ?No^l0EpLo6;r7VS3I6?3i_dAlVBhwL6I` zK$+xhsjOGAoxnJz2Yp5?JPf~-lvJ&5ItI=jn*iHj(+_yZ;&Zd7 z+-0>~`J(Ww+cp}Y2n{W~gTd zFhz{A@vydq9zD#1-4IGk28zDgfVIwd_gSU zS(MR$Bm*ONFc|QfGecS{;g#`TL&HcXaTjIhcm~|7jG@;rwM2#|C9fS9};6P!^fSV4vCPEca@sI(8_iY}P+Z(eRru%H5GO zYvbCMDr^n~hvM&hF8#hS@<$Z8TZ#{mB#J!s(rMT_30gCbc7m=U|320*0iZ-3eqF+t zeYpl2H7way!=w=^Tt(EMiF0YdIf+CLXZ|9Ca)g=JuT3jrYI+OAp?h28{sq1eKf$#* z(Uv*Q#&#v|Y@N!+UvV`9R?e>zK20G)t6h35o&pdrk;Q2=T7_s4EtU~H#y(cP7i=5_ z8}18~A@Pf%EdJJGyn;+en2MiE2HGxHM$*4+1OO-Y0Sk(3UA9q~6PHNjjt ziO1B!I6-S-1@_0nHRvpgFmkq>9xf#= zN~hG1;$EsJhG_CQc=MOy@zbJw;+Sv;A{bTrv3`g`X1zYNc!f-XehFXm%YrwpAy~>* z+83EtrYx_ogJO<+od~x85s}@U+-+XHRL`9CL&S8rVp?kEPy&iLXIF(~=QbWkGwtY? zvN&K*jj&0^=={H-r_uHI7D8M2ReuqzN>G~>p)f@{ zwnOBzzlU&*^P;8zC}ACr4TMH2CgFaM$JI$?x7b8fmSJL*Q$aTS`PG=ix-aVkW6h!Y zS!^%7x|+(+$XkjDLtX)yMbQ71_RpYho%Z6ITG9Ov7}qg!0pK^QAAsEyUc+{hFxBT^ zDymIDE3?GJD~L0~Sr_$cb&CUzPk?@7lbBdoN|I(miZLLt(6lFuzFwd}bAzfh1l!*_ zia(vg4&HLVOoZmF^fCBVg|R7wuc@0WOaKEdph6vM5)NP8sU;;b7!oQ<9?#4^ICp&) zWAWfYNi3(VZj^wQydfa8f~Y)pP7nvvGDT;G&l@-hEWOKZnNE6%+2|qA?hNooY$IaOiRX{6QG$fC91W&>E#485hUs)3_h2vOt&>+DH@sU!03ZDF`@1LBz$v^POTnlrHcl zoTyePxD)!)IlIeMzYl>wXzq`%`7~W7v8RBillQ`(Kl&=%goz{S1PYQ1sFFkOjk7_v ztcdWK<2r?{m23)4DZs1Ml3wb9i^3&WzI3w*%sLu8lGLt1XM60_@-IlbynvM?ZpHMtT;I9SsI1y{e93KO&kgxC`-YqOVF~s@-|a8=yvwH9XfP4` zGVbS+JwQclJD0$nASVG0f!Lif|IP>Cu+cDB{Q~Pzy~C@t6bJ?mvxW19LcJ|JO#tGZjG>Jlwk|yrTatJM|~z*i#O1jt^0SMQmr*)qDZ^plLXB5xV*_`d$!#78W2U zoPDbX4aeIow?9)f-YPRog#fi8clvA6eE40-$$RLUS4g)0$Mh)u*P%4b1C(p3y$78Y zpT1aHoQE;;&cO_!$#|7gN6L-pK8b!8M2w{h{Z7q&V`|$=InWZ|DoQ!ak>Wwy1mcuZ zt$2l)s0^4OKD;bvs{-bYR4^&PlPAV0!>gT}@Wcr${M@Qcb{lyrOwhC-kyUA5(i8?W zn5e*qhjEQi$XdoyNi`Lp5~=!Hm=cV#nk*byCe4p%jhXoUkczAXZQZ$YnsV9l=0^-F zk=?4r;--R{#G z(+@5}ILB7CGz~Auv7)C{5B}BxA#HK2i$7HNW+nGA$MiNGkS6#>Kn2^lv2fyX1W&;E zq{A4$j9A38Mu{EHjO2ZB4Rf{{maz9&$Sz-fIT*agpTd=Ma& z*wwWq7^BC~1nFVQUXptb_}zkxJsYf5z>Bvnf%nPcT=SVXsUPDc4a0sg6Vh+)`t|E- z0GPbnSDQJ?Fe=r$ijT?sY1i=Tbe%q5Ck{E<=iR2hIX|TdZ7#rhL%_G2w2RxXUl_pG z)?_KHFwJU(>OA;3NuPvP+Vs--3^b5EN?~FOSMfl<{(Fmjt&B4ut~T-_FihF%GH>C* z=7wp9Oeo2<0$|7nubpAkOMcJup6>h^6;zJLmTDtoLc>h|H46nA;6`A~g=;@_%a_32US{!hwe?c_eGjYpH6<#D?Ka->oQ2(Oo*r!_ zjg8;#c=5T)I#**lRg~`Lu1WyS&g@AG)1qX$>Xd_H3LvW~z{GXgX3x}adwx$zzt1$# zw_-cw$6WYv&B`C0UrRJyztA=P3=imrc=ev9Y5v26=S|}qwd=$mB`(-gEjffl(E(g* zx^|zLRlKT25#>J&%Z~X9d;g6Ua6;SavqlAkHd`+#-y6`e$SP~tENwd{wGXa%3T`Xj zub7Fz0XIHp`dV&sSyCnz_PU_ezwlpy9vkdFBvwyv)M(1pT}&0!#-3pxt7v9)iDBR;_))6g-zO?(jIY%k1$Jl&-_0!E~ zd)&wMbp>07c|^aKW-0nJB{GCJe%cCyKR%TXxLcXf*q==u+1f|N4>^V1qw$WCJohu< zjOw&K8h$SNCfa|-CTh5`sd`p@#H2UdRLvJLWV~Wv)Xm%ReNnx|X?fe`!Srys@#1XC zd^Kn}v=+YRR>AGK=DhEU&22XYD{^;W@|#dy?ffnl7xpf8x4Y z>4FGxBf;!v_ilvbbkj%2G*zNMZ);k4kze5`caJi5w*|B_Jn|=LAXuzDMQ32K8<8Bd z*m_SLa~Y9XK=Bb;xY^R<4>Fbv_Qx#%`fZE^YA)Qvqr^unyZ!qG!SxNWP4E!?Jd4k~ zLHinl=ypn+dh#@9NXd* zt-gPn>-c|~(*Sn$Up;(ASDx_rNmhB3`%vpWxWl5es`acRYcaE}8681@_hiuaMyX6U zMf>vvkgZAgHCnkp`VYj^c~fn!`KnnB9^&?IxN@V_Ld8YDB*=w)Y-D)AS!`;u)o^cL z;&&+TiR^mGrZJcA^i$VAJg4T={gYhWI4uO`m_HMjk86B6=a?skS8vgeWF<@g(G+2@Jq{0!m3I_*AqxcbwBa|63< za=-L7uIV;4X4)%a@~wsD;iC*^93KI5YMba=Vna=>Z1K`^UV063ROV{<)r${=@lA8k zyhd%UBt8V0>XutQ`-SEB0O_9O!rI8{H zE%+$C``JIYvTo#`<;)kJhydG2FEx&R)m=1LyW?dKLuA>Za2h9wD;?dtc3zG8FRIKV47 z6``k7MBk$?vftyXf0GtpR3*0`dqwLJMauY2^R0r$b=B$cE`K+{lCX)v%HvGZVp{QG z$hI%^hrmO?!D!fpa_36b4p7U8+kU3q zJMyl@1OpVgNIz!6>#FPkIbg4D7;Liw{*yQx@#WLkXYIVEdq0j5V(zdTJ`S&+{;<=r zC5rm98}x_FWotpmyAKx7`* zi7BL~$Dd|OZ-qG;X%r;-fX$=34moZdLu8Z~I(ypgC4o*UW-RxCaCxo#liWF^#M;GS|htH22-ED<0LBvND^sqCI`~(_jM{dW z%^MG@c2r#W;p>>=P4%~rRM9J1PTb2YORjL{vx#nyyLE?M*UW8AgiddOWIM~!gW0)A zRC_I+h2AzxJKo`>TWZ(-g$e3GV`;uWcbbs=+wQ|PA-0DJyWggekmg3`La@+ztMfFp z!{bL?;spdNV99|*%9l`M9a`5l5zWtjm@lkmz5o39w0fdrwodac@%n@=gql^z#ekC07hFBYZAKet`v zOH~p+^L|o~(^S5Wfx*MC35`e!seheF6?NhXmLIH*C+sd<%(6i>I%>r>Q*Gh<#+?d9X?L(jGMZVzrIAHh5r0-!3P|nvuI{K6Rd=8_fLX*>25wRxO++ ziUMeVACRv!zIDb-3X={sGOqJ{Hy>X7B4wfr=;d8uvHG~(hOewK5Y-+gZ`h7ByJBM~ zuC1>020Oyl$@t5bAby{U({o6DN9D zC+qzJ++(|=yG8rqLUUG&lp|8{^8i@~-{rC&UMH)6d)sckZg;fNJIdnRx3L`6{GG55 zz=b;n=CXh0)I!yC`Vzy5-0AJI?hR9wTN}dQQ4$>Vn(;m~gp0W)JA=e0X7be1v{>WV zd79F%Uuq=$i_0V?O=X+Se|Q)W`{drsvMGEV7>3?qR|?&^YChYZ(2G)wp{`>eLYrq8x> zZ^JP?bBr3@#u`Re5h6O|4^qs5c{b z^<+26J2qyP^$qrB@Xi&{GtoJVqG`XIQim%2sL$ny;yw88x1v7J{W?j-t+KWRySKIe zQ%^X4d+Rzx7wHxWg{PQPH061C{1*1$rPH4(hR1aI6+TrqM@)+jf=2~h_(rq$pf=b2t5Zt)dv}C& z;O#aA> z{tWMWHna^5Y-1ak83KranIQnjmI^>*4Sew}j`5CNS;cU~{^EQ=u+_M3il^N0<+|Xx_kCmM=OottJeY95E@QZ@7Q$kkd!x)$= z=RV&9t^>k0@{|(t!e5k$T_l+{Mor){U`5BTg`#s9vX{qhYa7fwc+^XMNU#tk+M0L) zrHB@A4RB5Xekf>$LbeaX1|=iMi9h!f?vU*MX;D7G2$<*}y7j0nCA}C>+{vIKWG|sa zAGs;y>tnkOr%ECDTD&=x-=EbO9<5K2L)8Z=!TKsksG^eh@mkhR>Sl(*Zw`I|FU!b729$|E(Q#EJ%ex=khd? zJXJe}oCYWKia)&laRWE#+1>FYA{-p`O9r7X-ELmMe4q_Q2HZbpkO0@nQg8D`p+hwC z)7O-@i}U4oFCL8$;>TCP!A6M>s^rM@L^54U*Pe%GXx5@(p2~afv?XvbL|8zV4FK`u zT}6d)q54-fyFOQL)?U%EP@H>Z?}hvHK=yj+0N4AePeuf6RTRFXKnrJIRFUrZ&i#%T z93v$+@O|B<-OqKlqqQLqFGo7Ae>Q+WOZn0 z;PZcNjE^AD;;qR|@Q)!)5%6!sgTo|?6T>X?Vxuhc?%WV9@FH29%q~`^;>?FxJ2*9l zkCn|y86D@%vV!m*mZO4UJ)3L8r9G}Ff4hpl9Ozw>dB(%@h5N4o{{8f&B_k{XLIF}C zD6EWmw~$+&Jo(bk_tByFk9==JAZ5TNUVmy|SkM29IXa5%m@EBzq$g<|oBf=$9shqA z;Jw(&zoy|?@nfGd18HOb`mM{A7loqVG|%SC)(dU)6{~}iPmA^VPeP@XShy(Y;yyv3 zgOcjsTTxaUp_;c?!410bdp~QupL%VOGobz&^w+@8|Kg7RLdSw$q#H!Q70`nJ(3)m! z=0+^$9GeM%N&ES)D8rdC;0aLFj=N1FprC!_+=!rXd3r=TFnHqfvESoB6%M7~uyD2F^HFW-0J;C;VN z6YmE_F2Ug=#~1rf6)qZX^z8*X#F{vfY*9EQ;d59h8m}0mP*2_@k(H0z9u!DhD6@pP z_?*5eODYd-o=_Za$8=8^o06iw<2;iYDjFNl*5vlSLYHn=>04h7x6XUjn^Yg&sV!{- zGLsAdL)}m}Av=SFXND0xb#Y&}y9<*hy!&Lv0vFkj2ioSwzGnKh-(SA4d{?Eu{8(yZ zJ&wrECfo}4=?38iohC@xuW-^!7F!`>OdL%X1N|n9h*)YFwMOoiC+13_Qi ztIwd{i>G8x%!49M>LQbOH$Rn-d3e^rUO^9-&f2rMX@3~hBDUPLNaG)MrVVB%uglwz zVAj|ZVrq;wd47|QX-9e@Y)Ta!$I%)mzR7ghoNvB9+J6h%!|%|Fh3n7FQqR&1CDua& zghp^N5>bmidgJn^K{lJdLEy*a#jbRjPGcZ_=YQGx{4ehGZzO4eD!NhuBMJFGk;Kjc zEUa$4s5Wi$m&s)Jx3s&V5^;zSLvacrmoLM-SR<7|u4GvskR_kEoLU=9-K=55J7?hf z1b@i;48Q_ZYhP@(69-`Zq3U?1T%EP^TL~oQzD{{E@4o7E*v2#8Y~pIhU4a!ryGqsX z^IoBxTOqAg?le~`D{o9(T&q)N&^*24Vb^vb!o*BA)MObVAoNTKo4U1YpSQjm0IJVn z+!4^4a$auT`3jqrN1o}eQ$#kcE!wliiOp$up0NV@yem0_$$xii7n!8=F{c`}`SqpT zRG$If$6fy*hzx>>49{3*wbF3dgB&5A4<{m{TTA@X6}2>!PfidZI-l__@r8K3P7%RwliE4sv<)7+E8!W^e? z9zP1{Z$-5+MsZpz*D`43m=^zy`EB@a?m#1ezwA!toECHz6R3kMieOq$cL^j-#|j0Z zp(m!UR7g<|H-Uuo9MuXk_M)|7alaDnZj?=x!@9ep$=hYDD=5-2$G8#uy|ZMPvXp|? zDTTbViScb|iq*~sy`y}yl7D}J*_b|&%Y>V=mpTp-2s!3WYi0AM!dg5suVTZg_^+q{6|RD zjGN5}D8&AY7x6#M|3^r*`J)f!<=@5K$#5vpB7tt7{0AyA;$-D!{g>PS2I&8%xVsW4 zB5pDPF(_Q~Rv085C}0!VE&}r?QVsC?+5adcm>HY0voLcXs!YlZFr!3Qg@%7pbwa*_ z24S{;RE}GtDiT8EVj-WAw2!WRolh!gAK!XJg+LbkK}96u1KJ5I7`1b+*lvd$uruf% zlS;nL#Ws4dP&dWI_<-pihHu$G=d(!)+C_|}X|n<-S$aY`edEyGWO=k0QnFQCMt3RS z>2Iv!3X)9CPqWC{N0CVz1Cpw|6bOI7=e4y|wOneBHbEekywrBP%RgUb`Lrc|ccC5Q z%EmTBIac*3g8I2MVibX}S)x^k`G-s~Ec-9bv0PbNpmI$2iS$`mLMjLwsY5Zk-A@6_uC{an&`J#a)_K}3O>6GrWwXaA=)y%>@?2{j7~Xf4kSD-rP|SRF#BXY6<8 zz(r4dV-ORRYsY{cbOjWyo>~C}NrUy1pm8~glGJ&w6(S87B_RZ~^y{d>T5}=v5nT&s zz=UZ)+RNeHX+P3#9kj49!QBILYnTE=8W&=9YE#Y+DBf^_l3}EgCGfe7ueRCgT6xLI zDd}+VFv2Ai#IlHy7~j9>s?4Lwy2$jjea``g36Ho}SgUkusV4<<6u**zO;(qoMV%BR zJ~+0Q3hVrwOoZy}gO65~ITMR(IDuRYfRSGM$2|sC0cG+LIcBa6n15sU#|jT8$EuN~ z%;Y3J;}m^=4J^(N_TD~CNDQR^Ezzx>0!iFBh!aMW>Uq*S68l znI5Rr*A}aX{h~j_z<`PUJp<)mZ!xtZzuqtuy)t9o@icO&cY3E;5Y%L;n7o-~g*YsVnY|2qHvWe-0&4%)1M z$f6gpRN=p-K67ppHgmIo)s6V?*)sV@KLT9x4;L8BX8Rr#IPiaocJPv^n{5C?6aSw% z2gv$zGqWTMyMz5}uKOpV08W1+N}7QY77?CCW`a&(oM|jd*mxKkC{JDx9E_tr0DYKD zo>Y*QathkWjNtVDt>rHK6UP{n3?m;LFDK3MuY3n6Pnc&ZRPeu~+zI|A%>^mU)@hYCA93Kd8#Se%S`PTnXNIdUl*ED_j^zbzH=YNdW5`3k;huB2oZU)qj*fCfrmlcW{}1z@rkgy1_~? zGJiFL1@LaOap_ePGZEOW}MPPh;!7Mf9rhgrQaH2v3v0OabBP z3?A>ysr^U)#bVSWlX+PYbJrR%yNO>ecy`>Am6=Cvff)}`7lUcPDxa9n#>)*C>&;yI zSIGQ-UkZ8W?R;NPVZlXQyVm{=d*r-=ZY#y@>NJA~(CIa@eHR)(CsQS6`$`#4W{M>C zQ%S$Eoa(Rre(z2_uAPsQ8vm*d916TLg)eu28#=PF-iGdS*B z>k#NcpiEc>c!&3!vGe1}?ZA_RJSP{^7Ib=m5Wu%>jayJ1bEa*9+n(m_Vm!V2iTKFf zQ6KaZptrIO(hg!7q@|6D6o#oaCO!pDh(bi=FGo<-d&g=h&ok1mr4-|_R+`m6lCSuS z=Z43Pf+60vg zUM)MW=vJzsz9cazKD&4157X3Wgy?Cd<;hdQ1U8&C;@oC%p}fLL`v4IWNn3m#3)>@avQs>tvu~2o5S-gQQNisjyGD_ zTr7@`ro^_lud)pUvqw^^y|b@evhFgDd5$MMUqgOEAQ7DiC?{ehrY&+%lCcc(k<)Iv zc&L>XD;i7_3VsN@J-a{M-JfjbCzlfxz8ML*e!uGhj9NHcIRU~(S;l@gIGGF~!eFEF zP>Uz#$VqF8d&lH{2)%#L{JqLCS#J|yu{?qO?jA=wfA^X2c_8$DVJmeCMEaOpRc$l7^?o3Y@9uF;$iGX*meN-UWj0 z`9h)fGddKG6sFl*(}I{q822)kPLWwH5e=szQa)Qi9}ys6Pj6iPEio_k5RZAB#N;(IvFtz%*zYW zV9m*9TQeiE{24B5@uF--zp>Y(*0q73^vL||~ z7Cu?TQ+B8@scHTV-mKq@|Ew0C)Y$D9J38NRCTV@%hmu7WC*yfLkU97QcmiejR`Z1wS(QBmo6J=&kbQuV>J(@VvY(gnHrQkkgi*tSD!deN@fSf^{0a#ke@!3J!Tk+%JucW|`2gKdl3{7ajfk?ex3p2+FZHme3HObM(E^V+~Cs z~+E{Iwe3gcvqA>-LJt!9xwrr1L#_=Y(nG=tT zykYQNm6txkMTU+~6k1K%X>5V8O<5@>2>g|&-wfLLTQ}0-1eaun()oNXbGe4Wk?TkC zhaZplL=)6QV|o9AqiVlKU9LX_9ZMkcG)e<49%i=YkM7Kf#!g)yoTZo}+U^lR@XLaX zU|UdAitJNsSMpw1H{-rUWtiIbf1@9IC|_&7=61=n8U$6PRP#6Oyps|bFOVrf`4?H*qL4D6%rfDFboNl=k{GR z;xc~b(+G7Ae_=SZ-*R3$@-ml-u5W>+@nB@nkt@O@DrDMw!7NR8z)y8(W_q-U<~%sY zBfYzL;y9r;TXY5%Y0+zND2YFZ%d7J5XWsUR&eq-ncUYI`&kfnI8qBo^fOv`JYd>8D zxIHk=DhyiCu?cBQI@sw}{E_0?#c;;gIe&1`7TWa)e|f4ia%o1KcrCR9O?Ar6wOO4I zwC1Mf{nZjbv|dl}gkw>y^(h~{h{H9apB?#vGdxbEddat$kUv?3ubeE$!;t0d*OyT5 zNO_aMrU28M>H)RP9moX=*pqju;i_ErM3?Nan(oQRf27p7rd;)h;WE3PWeME~V{@VM z8#}~gfLzJ6?9HTqC3Y)DK1b*${)w2?XA+L~c>09b;}l5Z)L%KRUbV<1ld`jsOyQJo zmp^E`3&z1PfVc`tFv@BSmy6}c?fAVl2jsFb!U~NW?A^+q4+*~vz(w~g?GGM;35`^V z!fh(a+ZWlVDJe`ktfY5fIQVPdc~o{Q)$za(`1m!E*{_UQsd9oW5>{Y|B}7uQtHymz~dDS(W^AuCtQ#TTg1{|M)8b-&V2_V=BEA? zvjeXT%ti#vTc{N99z0|hZD>lf&+Hlq=3a{bdHaT=hb2d`j3r%VQ*59gi4dhiac{}X zg3u`Kw$E{jTNB)CCk8Bo^7dWh;C5;97SW7!J;Y`Dr{X#z`8dz%4_WTOb^Knj&gNCp z+@d<)raSFmi;i*X$2V*mhP^)$7k* zJ1OQ{iTJCJL9KaRdS9%w9gKdP*c-tRWZ8E`-|J|#yq*TH zd~4Sx@*P*~>d8LMOV_!fno)a4j(Z8l8#$D{`9IcUlLh&C$OHt5c{rp~$BIX)4460a z^K8Y;=NPd7Jv*G_*q&@WZcN+Io2P2vzYT`pq{pVcA?2S>gd05i#WEP0Xl@`>jt* z3Uqa-z}>2wkl|Sk>@%2-$$lllb^JS2#^g}CNkb_^_tE7#^)Okoglu=ZGFPo$;hGEp zJ-hQT52#!AR~jk(a(lQ_aY_jMrLo!AJLAncI%56OjEVL||90zV`a6hE!um^esOA%* zt5a5ouXo^-_8h%cRTVlo$*a6CKG4=8C^CzQjp)*d2XZbYth7V)byi~4y+mv@yPw~S zp_%j=;+!8OYmHZX$6DA?tA})(oQfR)e>@T@WZz;3cFN-Qetxcoq5HAz8bQA+dB(Wn zQ%~*{A?l7?yjqc1@{N8`NNbKF^rzb2L9%8)3dXhbt_a?>$Ei7}Ofxu}T5S>$Zq>Mz zeIXhv>dl68wJ1r%F`M=YckahK-b(W~ZgRaF-l$Djc&wz5Fzz~uV&r+r8)o7KunOqP z(0=MJ6SOG{%Ac;2ot z)b6C%RcUk=<)C>9^_<~F=PevANbhPbzjm4m^f<@IUTS>V*2)m=_cJ$o*Rq^ZuN!WC z<~vEsFO&HT{Ct+%g$oocqFfPV0Hx=T^hfz`Wu|Boo2o;Ho->Biqq>aChe+PmHq^fx z+;MH4bBZC?jV6x#%JZeSLv`!x1Nh%>k{yH~xB%I~DIt128GQ`rSBKx2KeE8S!vT8F z({gskh`9C{C!C?N@{9Z7X=Tfzv-$roGJ@v2LWh}U}qF0pykx@VHyeig9s zq@M8q=W?T~Y3oPPU@*21YD*?|hrV zyescvy)Us)o;87{+&tmo6V@J^KeXqcdi_)nsmrJ<>oJxw{RJf80^lbQF?$zV8HR!U z4JwijzlXjeYnbZW4$g)jt`7j1Ns}Ypu7Wm$_DT?FP2I%`Kk1f=cX@JxVX6y#i+Sfyr13nm3eRtSzP20Wi_yqu2#z#n$#nXa)Hh+FzMQ&|H z@3=r(nEwvV0aHV~*aQ z4$qTW-NMZl+y3UoD{^+K0?ml~4o54eSw{_UYn+Vb?BqCL-v z@^#6c@yT>Wg3|BYoRQxlK;tF*B%^4YUCrB`4xSh7#6xv#26h-@;3i#y$WUQGPE=Ab z8q_@lZc6yfw$pJ!)xrnG!kzdVe)#X9-Ken$lBY|<7M!xC78 z6B*|trIwaJ`b_f@_G&U43O_eS_zW&pNnN{c>zWW=)YV)Nyxs^45zoXfT8#H>zuU5i z9&V&KSy6YRq0T`1Ewp(@C?b;uy~1GVsKp}FzFz@)EWleCK1Wb1W;|L^0zBjjQh|wo z#h_Z@sO++0cFXDJz&vA2cpa)$XT>Spa2V{w2%YHm*Ewt5G|rN*HPY!*1o}$$z2L}p zT8JCJKtDv)qMG&8^j;B{LzO`5K$wjaD;5LJTu;E1^mUwr*!P=+`&J5RCiU`H$H~Uk z-|hB_4FC%&0P>ptm_&%|D@gOfou6|4k<0NTpl~M3Pip@@04mw7W`_(hPCrRX!Ex4# z6{k5`=wm>A0!hT6vI7#I_g!w=wlaVL>U`%iLkbd+33*35xV84GaIL?@e1E6m913&v zu&mR5!;MGEb?SacQ_9@(mlf+id0Z+O72D7FRDk$#D55m04ylZ}dFDJr^$3R4lHc^= z3nvnfA6U<~r;qcaOhBj-AxI&2* zM1W>Dg{t z7+5d8>0}Y9TlynHvILR3@uk*JUR%74;{bbJ*8|$4qaGT`^t=6^>!F6_evTn~m%D$m z27k$t<$CkITo$Ivd&Cn|w0})*&H-V6r$*O@sTzJGwkHeVskjb!B|v@|Y}bOf@!B0) zZcbwBya;_8NPCzuHrSHN$>81N4UN#~qiDs=0wNC-q$}yYmGabu(b9gsQ3~yf%m808 zmLVxCr@a}u9G}|*sN;K9s7w8t2wkj`AfPkpxLm9(Wf+H7El$3wE?)kjb1itx8M%>r z;@t7-NkX3I&JoK$wCmbc8v$7L$^{PKJ7JU6S_t9 zfljR0Zx((nv>fYUrgy7V7WBvs{F_!}5Gm?NL#y`pn176%bo{OKw!qB+zW{^?n_gkb ze}_JhHZ6@=8I8`}dH8TT!lVa_RMt->Y^wbZGVXWVF*gzP7q!NXUUz6@*5kII;@WRPf{ zvo#FgTJ0|MuT5>erU5#KrE}txJCUA6%)%=C0xCgI1Vd56X?KjjlN+gC?gQ3i4cY2+ zV>#Lpb3^klKo!N^$f)*)s%s>ESLIr6@hkOf`np+BVYC5mcyODo0yu2qBW7356CU;@V!bepm4=7r zo>IG=ub2SH+K1A3+dt9>oE}5#rgHX1%^nvUPp%JJL(bjr_*ijLJ(X%7*j1e<@CeUh z1EbqWUfHhf4L>%I<18A;Wgw*Oxg)WlMp^EMz_?J>-0_|kTgiVD3a0P@Oz0|c1t9I^ zwxG0qGr_vYM#Xhhm~7r`P6MK`lGMjJq*&E)F9iW{q7hZ7nX3h()(tz4mXBTC;My+C zaW7|q)EgT88jyS`nJm@|<@Pp|hC2N9rbBe_w0qlT-L4i;p(T+}3kG}S`a~Rc0s@yw zxSLt7!GZ~Q0e10o(cjd)l8|Us`+tR;_wMF<%;K(Uon?NI%p1R;!c*?$9AHC*r$l~G zx5WU`s5%M+f3y$Yn-))555%>X6hyITxjl#N&IIfXIjBdP!b89xt>BFoOiKj>LB0s_ zl9e*uOH<^rA*Jkg{U5^KIx4Ov3;RWayAxc32A9Sm1b26Lhu}`*?(QxLF2NmwySux) z+t-js+1XbV1zxKf1y$$j{n7#@6A`n|pB z;F8@Dx3pVR%o`svAYfkWkqXPj{YLip^UW7-oQ#bL$7^;S5o)&}G&({@4{!S;a{pk2 zJUf|c$|)91&lxR2Mncl^FlCPk0OAM(_-YodVCrOkiJCDs7-pQu7`=Se)A*6Jc*Ltf zZz0s1rP_^EA4aAIyv?4Drl>qLI}T@a5pn6RCC65_O{JyiIwV9a_K-QcW+Hij`{dam z6)E{38xa$(K+#8WOu-4?dEe8kbB7{ERp{{*L&d_PRJ!Qhz>xaJ^B9}4sEE3N6+K_E zqJ386QQ*A@SH;>|G#wLd_9NbPS*ax`eG*G0o>n3)*>oKTcwG!3P+?nD*Vw^JM$erM zJn#PH^SS|9^fpMi+wnM6pLj^y_Rd4%STW|q=CBAkpnF(v#2B$sJGa&H?H6;o;wW?e zuBoKM@W5bM8R^0?lG>58_k#6!8{D6T6QlY0?`N`W2gOwtP*-~TNR1+EGKs>RiFNeN zl~tYjj3Ld9K=}g6%nmpglN&%ko^3>}p2EI{zxhv&iYJt2AKA*6h^j{^16!Qg!>K)) z+wtERnO1AT0G{~ zQR+7;ibSLgVX-|Ba-~yU!~lz!Kup?X6W7VlC_LYWs}K!2*db12p?$qGj_1Tx3LtUo z%A&?;fe}#pW_-+BGJB|1y_y?kqGmF{3w}@?n{Nj?i*N=eXN~B%C8AosNl4WCF=NP@ z24*B`W@Wnob!=E9lZT13+n85ZH9_5!&cleoANq|`5SQOpBBQko^Zi`o>um6svYP0l z@IgyoEfrTtlV`$`%+`1oECmb6`o(5nC)?KvpmWn15i+y;@l&RgwUrY!fE zZi;~webG))dAoVT1qTMYb*NEDG}dwk4A<%y z<4APk+t?Fh%%i2q(SC{oAK<0I?JVf z*iu!U7Ok01A4_S>kE*c|Sw&?$J6x+o%T(hGL>_8)DL>Pgkx(FRJ5bS_stic~!3OqC z3OG9$_z>xVm2X|-SH!5;NSFlDFP2-mo103&*u?88d0d##8zBL4Y`iNhrNZf`>+~st zqF{%Ge!WK=bwtctO?a*vmv6CanT2&krYI$29>n?+*h{2fx;Q*yvYk9?Jx5fNY&v-o zRR?zl)Xu;8&ORMd3>gSP@8@SvU<1E$J6Vs)NIVtv{2hK;)JGXG!V__Ghh-Cx+ls6- zr%T(ctGJ$2%IkBV_o6Hf2a!rzE;dcw--aj%S|{d?9|fcQD-`r*tVkS~BNOZ5&;j;K z>6r6*HW2U%^n10g)(1TU92|5ey3#1$qB^#_5*}U!H_DkEL8e#6=wmVtYoZ=^YTb zJl+wa7a%z*eV*<;e%GKLs8gQ$nEY{e%FM1sfhUyuXqgnH;Fr`pzP*&=`dZOIO&9ud zmTZ5o7Sb8ez&~G)6$GXs4NQGca(jjhtJe2hn6&A0y|x~0$8uPdrbN(r;g&l=%3M@4 zGxB49)tRmDZpjxei|f6%kI&MX_LIH0Dph&4mIejFi~PzeXJ?T#Rq~LiKN>FKABHv; zA}2>%`E*)@x^;n+Ehn@kbf9taRfTZ=Flf2D#C@GLtRc9wtX9Yd$jdo7X!P+G5a68n z$Ya<1O=_6axhSLGL5Ak^>cRb|wLFPfRG0xm?F?ec0CSXBK~!{(ZwN+uKn~B+9Ce6I zuCyK4phiMsV0yBjq!Is1vV%t%lC4F#NhLB6hR=KV_RC(82dP7t#apCFQ?^zW*9@aXB>6s`G!r=0) z2J_Mn+UU;jUrN5vpb)f>gKx0&wGZv2d&Nle^HPu`R?62dXVgMRer z^ZFa|XKa+68^?CpD4l}}ljXI0z6Mo9TUkw>9zX}gvabTMqoT^bUfJ++*+|q-&{Sil zKuQ@z;e7i1n^t!kLZjEpRPSab+yU!$$$d50!#(3u@mf9_{oU3}2a;+m%@S*|Dv z3kI42EGw!YzLNv<$QMX(Kp2=>j*nD?D= z43Pr_{gOyrIud+p|D!BE0_B5q z&n(KwK!Sw9e?z%ZpZ=v$YGnDHf~F4pB?VOk4lX4eq)BNc9Y&b=w*&cp z3hGrmsO^8a%qC3irmRdxtZV;YTxN-7n|jSzbxh^OKFMxXb($ID>FC{wwA258EVJ8I zR|+fFOO|6t8dq9YT1Km0<{U8jXNZPM{jhEB*p@tvVexJi?atHD(66H!dkO)7Pcvi4 z_SK$*+6SuoRiy>RLStyJRL~O)#FHW#4ESAg#O6MQzeZE7xhmnYMr8V;M!Ds9Y0P^{ z9s>=nnzERJOzSD5`eFameUXCY@gE>_)QBuDRHhuV zx$>vLGX4_m8e@4ih(u#MGFC%Y>tHsiaf%iCK^%Pm$&l0!p&yTtTaXuj)Jz;^4De7w zHC&iRhEt5g8pynYJirYouYf)GWLNO%;ixGNvR@0^#f?I9r*<2Eh7#*11kcHq;reOl zwOEF@5pvwbkK)C%kM)7;7HF&5siHSlg{F=6Cw?XEZD4e#TA5v#cCk>TG_-+XESb|x z3L`(0Nt-2&SN~>@u?EGPId7IP0KRtXZF)t!Ak-to*D>$hG!1p_aSzm7_)BDNo2xJB zc4+;75Sia{XZ}TGR;51t^OwjR4wd*3sQpCGWh-m#2ai)9>-e*XP}od!wqc~Lg1OUn zgY}E>DAy&S&F@}XGgDP5SC$W`|0)9iYPR;DP;t3H{ruq{(GG|-4{6B6mID3)_0J$- z0|BmK$Qy28pZ^huUW?iFf`nQSpcWwUAD9V~2{Q{P)1K15{WF)zG|Q`!&LLC<^YVUG z#3&;5B}IgzqT)C++Z4O##|Nh=A64d%Ji=AJLZbn@&Od#KptiZsu?^*K_XI(P@WeQt zrwwGa6lVd(_psTSi7{_G42JL;ilFxukG=sFCFibn>m5jv!X+s(zUz8+4DZg9avN#b z;_+oMP4ONv2RpA~s;2xPJ4ww2PQugwA}NGOcpn7bj<__1Pl_#%BweG~uy67TYC~wt zPYp<0VI*XBx0-EmSSmdKc7#Qm>l&|V3gm>TW^44vG~<)FNoXed;NQLYt_@Z`M&<;> z;Wk@7L(%&#FC?CsBXN7fd$GY!9Mg3HF3yEZEChtv=KaQAO`oxd`+*b^dyg_+Jw>*v zs@+%Ind*v}AK`4Ni|3=L76CWqH?%#wPYez#xNVF`UsB>#azhSB! zjHGC|4DR}w0&7%0>d0yN=oU(1^4A9N(n<0MrWh67^f~KjLC@65iM_8dDf3U%TgoBk zhMC&Vb9kF*83P0UJsQ`z2YPM#)i2~WJX0?Dg|mySp$zQ5Bm!Xt0!k8(kv;J}zJhyN z3!e#UZx-cH!#zX^qEeCH{!i!lD;F)AC~OM=J!<5C0w~agnaRk=n2BXgK~Sof33qH2 zHAzOW?R38P);Iz`;YgmRFJfDM(OGC3Feg48{RPWqWkde;>vmUNXIDXIcb!i?y{(m? z!Djd5LQ3$%^>ci$>_MTof%;?q>53E=X4HUg zo-#CYClat=#5;s(iBEw0%mchJw8_c4yCy!^ZY>wc?<6%-RLm;VxaP}zR&}FiO3+#c zJ9dDk`EAO3pM~ZA+YKUOV6Cm2c`;w7o)mg-BGC`HO;j8h>F)DCs&&x0HJV7UT#yW4 z*XFgh{L=#6R)O+Xn4VgfV4}ntZr*Od6_gklfF|(M75Hcwb$Z5+@4+El5)kv-u~=R9 zv(-^pXqa`3J07bY=y-eVE#IbH{Mkc| z%p3`81!4NH0IWY)i>ho=uWo4@dN4gFq`YF+I>j+s~zY0at}*TgTX8ciF1_U@YE=tYdU zf+bc8mP2ujCyD;zPBA2{@G;^LIgK3T^2c0^7Q#zgeCh)ec!#2t zB~i6I)G&9fR-VY8BQ!1|ImN_bY`WR}nqnomc1z&2g1VYuATfk4LLw&%Ax0rAV{7PP z;f{+F?v(f^(p5-ZBsL3K?ZNEmPpm0WPI8YL)n8tJLaE`XFOW7C&nBU&g~6&_Gi2!?Nfu2i;lxE zsb)ip&HUJSj3M^&N4h^wj6h1zFA~R4D?eXFpBL zYy~b;zA22|@eQt@iBhZeW2h#&WJ+PAm_7lUpAZjh21(Uo-^3eB&bDvRQM%(JUS8vq zBh21@VigIA)!h1SMQNtY9yMzy5G}8JDA3s(v2Ma(#>j}l`Hsqa%+!#j7=Mx7t#O4! z^{C_V(~n7kV%WdpTw$+*%q@qp6ww{#VjvSYBD*iAi){zn>gwN09lgxYrT#wbE4T$5 z!+_=DLhwvi5)Kum!s<11?KX2Zq40&lRw1qd+eU9f_N@Rwc#k1TX_!;>gorOPRgDD43`@tD)d(eR_^#oOK}8KRH5q zy{8$OM{kea{e2=gZ(UV#A@~%!9Ynp zW(7SaS|1F+Jcvm8(3akNlCmDfIIr*6UlAlrO_1QQ)*T&fxHX2FP>JyV-p7bwj ze?Ba_-B)RY%Wj+Bu#RU3Xi;0M&>_FFB#d(8To~_5*&5fS{jw<1Z%$JN7_c%0;BNt39hAL7qR*wxsVtR3G9Q;2;J z{7}uZ*~I)_K?N~iQ+?k+Iw{Y2s>&Q3%8B5940P8PF;|c(MR}*YMt^Oc^Cmo4o{T*=vZZEsZv>d{ z1`;Um?4n^eIVI2GVki!7mhUN~~rOz2dG438ijc)J7QJ>4eDto-}l}o@b z-D5PMnaRYJtX(k-C8fiiZTtEJ+W_pO=l%+wUl_Us5|0)eR+kEWYVuRan{1VWo`e}! zQbo7tQ#nfm;l65C%Kenp&Srz_*u=ru2C7GDIDWCXt_w@y?rjbaJ1|hD%G>Wc+k%n3SabXx4#d^7rLr9hcjFYHc2;0R=+<-)*;JzZJZNvP=B(5Qlz6s@lO44mRu zX!iC0nJIYnQ+g$}*Wr36HTivD*Sycz##zO?rmdV`S5p!AKg!m>MMY7sGm|=?UVQ(b zRT?uJCkuxW`(J7G-^w=qZ(5qMx20rF;!seo91?Su@9nhh3YDau`4bSsFWolpvU1ux?jznMk4ou5~2b3rvr#u^NGRm!+f9UyFg&O}soWLIdC}qDmcl z34SNkL$@7~FRs{~3429-;3OPQb|A$Kv?==NBNGgzr|lmpZ9;CH)0ktpN&(z7gwqbz zY;BASO!^BM6ok3_98j~tb=gPP9=F&lNb~{3j!LKu zqq{WhTc4ADW-OJ=M&?Y*a*{;$1mT4k5MwDuAWRe|+f1=1MjDJF_LyLewq)NciJ;wXfqICU}uv07Hq~u21@dW z=taT}jh-Q*$_d67`sJ-8+IfC+n148VxWG#0Ma&1bk2OGquV9*e;`Uu+a$KQn;M#Vy zV~gDvW6@&#QbWyG|7l611i)W9WG6^KT?==Fh{0+2t z8+rt}AXuW>w+>ga2y!6GCswX=b zrH?%j5sP)w(aw(zz>Ja0LpZq_*5{5G%7&5$y!Kqq;d4ys)`Y+S{#`^WF;N)?f*x?) z|6N3Ku^X^5fnIyafJ$g_vwwFNTZ#yWuisCq3c3u1C}JEl{DQecMTH=1!UMD>7$5o6 zux1oCuJeZb-*JR)E=54Md0ytYDP78MNSIEaQI;Kr6meb}n^Ij2+;mKg%hu}x)jbQ@ zY$jkEfhJ!aAd76}f0+gm2%ywof;~gj1(IXgv8q+{r(X8=f|R_h%cK(ouFS=Tc&s z_|riht3`nPQ$Ghy6mXve$POrDephOGPx>JCQhcI%ExGB0-h?qx7nA(p`mpbW345h^ z0UFwkk~hdYWJCea*KE&;E`bPRy1r&u^Be}cpUf)-u_k`h{Al$R70U^m1#w!|^4@59 z8NgLj`Hpat&+2uy682ILx=jqMx%2#WGEiH2WV<>Dw}r#IGp}De^Ab!NHPJr5Xz%kk z>e5+3l(&Q#f9W#a#Wi3_d%upL?aG|j2VPA3a5b2DrpCJQk%tSEjXrbP&BOP37n$&= zUxM`i9AFP$Ti_mYWM8S->_<>m)K>$zk;v`Jf(=Hdm$H6pL9^c~cw#LBP!kSRq_gMP z+#Sq6PNd&95iM>!Ts1H_69H-hypx|y7fkJ{I)=(~iY*GR^GC#{p*?u8_hqD0f%R+# z*zVl@F^kyzLc;`4vx$-vGMh{#{mZW*C6w@Vod-yLPygc||F=-JZk&+j2^$QI>EoY@ z4`u^qRwHA!vn&K{Ws~&*l>D-73P$tw?}`dPu=+@`O!j#(Xk*hMmarIMSwlx;7^?YQ0-nt!|_)e|aepBS%Dp zmXh^3)i@gGeWr2C(L2QK8CmY0FgqDm@`|v7iFD>+{7G$N8+%#?^%bZPeFuGbXUhBC zAjj4l$^iD2f0}?eA<-nA&{oo?k&eBajfdJY&wY0r3WEqf+KtWT^mVXCkOu7m1wBx^ z=EzU;9k}F{bVpV3DG%e-XHr>7G@oWmkh*b+{3u!l5ssJlJ*po@*=PRJU1>&##7-VX zUT$(NSC^#xjGyGNb`r%2We{eTco(4shYgGk6(8yv5(zue>s1guH!pX?KiDtWi02#m zx5Z16N$OZ+OvDxxHas?HHf&4?JeVHT?}8q&;K0BrN)qxzA9-AJ2y-%XbZP=j@bFK3 zVCjhI5b5w9sBB1VgqTp_(0#r{5My9`h#sGAsSlYacXFw|)#Rq-YUD2Ea^-SPYNKYa z!I5ALB1(Q5gQW1=5AcDJgf8+`6tu{7nuL&trp8Ew8iuC-L=Qm^O%J~3o9v(LmmHA& zsRGy)2U+o{0-^$%4{8{)0=xpM0+J6&6J;4}8Fu-T2XrC|Etn0o4LFv6gMT)Z4J03o z2a)n8TIhDLW#nb>Wg6Nbv~^tXrLi``HbzVtD_Y$X|Cim zpZpF-Wx?t9NlxBM9)Hr#cAi%}WofXj$E@fBv^gW(Q{tWV z@BkVuMrZE&RK6FSB_mWC;4K{Wz_L$o`E6K*>ImNyt@AgwF5{1W_2PeeNE1^-G=g$n z8QUR9T`61h*rS+tY+eSoHSMFa|5D^Hi%n-0>mAQ+)wE2stH8DknUWT>kA^=EoT>S- z_oT7ipH0j=vHg1ZJw|`eOfr+=vywQ-+zZzT$BZ&8jFho9E2O+hd{V!+zM=i94*U#e zsNLWDb+YiZ>(o>ZD}{1kBc>)}ckWFF@Z{p5x3t@HKup}DXFv@49vosI#wy`8_yyO5{J` zKTPNV81cym<45B9=}#B0qW`$Jp<44G>^jG&bOuqvqNlasgNjt2d-ItmlJ(RpQMQMlsR18 z)5YLMXk7@@m0Pv?UKM%Hp10uU`e0o3B6HX>(oX3Fb##8r?Ml`Er`HX}V|wb1@|JRN z?O^EJL&oGtRVxhtt}No~C(xI^EFNh*Z+v3`5+7UNIe4p2KB^mB&A{onu$ei@9jx7E ztrln88JQ<&7~-aJv_!j@A1B`*(2o0}Xj8u_K5yrf)okCv_*9v~nSgv=mX4Y0?GysZ2_W=w1Cw^+`E<_X2XrljZxgY<{;){PXwdc3+(>GY>y4jNtkVsm(l>h z_(S2*axe3^s_0EDIMRKftc-Jg$NSexy?egi7|Nby17T{;rTJ*B&Hk?`PP1>S?R|YK zj(vZos2aH~Z~CDd;A^>gD_c-0o7X-$YUyzLnb#@SWhi$H`uk?t3S$e*+`BgBdMS-9 zkEr7+ao0TK82~$O${LW!pY1lH?Ab&ss83W9=+3KV9h+D6)U0__GJq4i)=3Wo03+KetWE$|j8|YV zW5{xump#xJ-%ILF?i7zjYHYjle!V=IT1#I=oipW+@8b97x4o^5J{zi)xw55B_~8}Q zCTG;ewi=OjffhrgOrVx{wJgj|t8At_i2utTvGM*;Xe~C3jboGi@KCBje?Rf{3t?X6 z%YhAQ2(Z$MXE@G|N+knHcS2>GH_E1emCSO1<4UD2i=FO-v6j=!YRLm-&jxDsT=9-W z{ULaDBYoQD+P=Dz$J6Gm^_gI`^!g5M_69m`flz+oaXZBKU~|&%rJXQK?2QIt$D--@ zqbSfhs9bG~0j~7tkbB{I6{893t#0)Pj-rM~HZ!a{K7?UsEQH|#H(`M%O>3VA)c)O! zqV+p1T8xsChook%-i1>nw7g69lJ&!xLPtYN)Cvp^NH^)CEMKB%Efh5IqF6tc!P%Pp zq|jjI-qh`}hiRN)rLKfy5?aa0fQ94i%q@U|y~rztc=X&kc#0qr^Lcn$z-0(oq2^G_ z1_3LsZ|Bg-KxW*V{iMpkU|+4KNOlPfNlRPV%B;*rkIN*aRQ;6Piq&+lbgXl(x_k`& zq;0Gh$VO+yT02&+p@ZM6!XEY#QhZL&WwByTjq=exvJ6{jZEO>*EydZvdZYH4%<^N? z!Aoq>ie*M0AjOhlu4_b1Tk0?rtz09C6cRqTZLhsYP-wt>06p(MUcg4TKdP=)pQlu_ zC^m08I;@frz)ojX*TZdh@~L=y)pX4oo$A_>!*YkGHZ@3+R`}u7q@; z-+I)&+pwMVOll$6sJRE=^mx_lndVIdd!6v7ScitISaK>0W5?{!9@yhyJKE}J9q{V* z8jeRgtKjF+V!sS7M`|=%*6H@v0=|~t0Pz30%Fi2##tY;M<{oGLcXhHH>;4PC^Lhjx zNlWYv|I>l{;&R!Ag`cKZor6Rx3O{lR0QgW1>w^^BI>m)vEz#6gZh9s4_CRu%wxAj; z{sRg%>(s7up)%O=Fk?OI>M{x(?^z`2>tp4HbFDJ$Q}_yv1E9g*9R0+1Z4!H40C=?&D8ogGwf zi+AT}=>^4=jk@;2n*rr$O#2zs)K36IXr0tz`&`FE`In2hlNoYFj{%WL)R^zh!D*#_@he_rgP4C#D)JoEg?=gzZ4Zlrcf`6@cG=~Ky_&`=p=HgBhuYQ~!9$Ly8I`{RIY&PILTLo3|WF+WOv z=QbdX$jbH@*P-Wv=V&_!!J}P`)4kBUD z>2&cP;H&tt=Y6b_3#|#TD&~^3d*@i+`WVSZ7oMEa=~?-j!R{-!5pkjQ?GaI7!2#FN zG_-)d-k-NG1?Q}nNG`*&1*eU2P820p6A}VMVc2@nZ1EBWmPO!@``jiaO81lN423Gf z?ST_;FCAioj>UE8{AKq2q6+ux&kVaE+g6Gvge$@uT%s(jCvCGpt83X3Yc?y#IF4qQ zi7Levdze31Hy2bq`3(BwvP-zb_jvO$nVw6%+bTDeO?MLpg$HXmMepuZnYAbifT|JH zYajoTBFA|%!=auq+=6v(e_Wk_dmssn_2Gf+XlcRiG<5U8+2j>cKifja29f$cP zmv)g+VtFVzGY^kz0@A!5L-mImpW|i%aN<8>;cVhzOa=yR z$6ZAI@XV}bFACI->}f#{oWA|_1K9_mGe_w49+*{NYJau@%&wJ_zgJw>8&YysD||$< zky>vpYoGGiV==~JKt9WuQ5xI6t0FfsQn8MHP_g*snj1oa$Q1zU{!i3F_-MDb8Q|_I;5>;ErPUpc4XfZ6=GA{Gh z<1#!jS6|Hm)+`3M^20qYPd)a-oj#wzJuQ}wi$q~vr59>Xh$nccnz5(Ux;wW=f#&&V z?cx~wU#{*HL<39goVxl8b?g0&UeSXSrcYCuA}u< zruM~!BRhgy)Vn>(>X?qf`=G2p>6J+bX9xY2Oz~-}n!}I;Xj+kMjrCou zH$I#GG&Hx&AY$I8>vz*0Um<2cQ`?+9TxYzhcxDYgR5qjaBN{z0pjx(P11EM9e1UB4 zl$Z~gSPx-q;o{QR2DE-PZ zv#Z4sw=g2Lu39(1`?oQ|r+e>F(^kd?zb9xMM$dVL3|2N9(~iOXs)jKbzC?CB+qA@} zpKB0S=GG-}(Rsg{d(1H4%sGlu3b?4G`he+U9ucyQ-%YoW2Mqze9vuf(S_FIuwZb)fQCU}Lb0#4R#wZB!gz#= zQQ%7*^K+LePo$BP{*We$ScjBy{ndAc3rT>e8vz0N1ePO_i!wgf-@B-uFuI@tw4qaZ zB8%uKA3H3wscQiwD`4licAm`?D_$gtTRPs)>{x%%qvu!O{0T@dTTEz(PU0*c9A^bO z;toi8@+rn#B$Qr>V0+tpfo4DH^Gl^a+nXsvxea#Q!dJPtkcM|zJnd%x(aR71 z{weLo@LJNZ0%Xa3BZWaFDRCBj0^|j%rs5_6Io2$4r8#<4#iykK7jbt735EJPloF3M z!I59R#A&NdG0ZlYc||lFwm9J$>HXehb_ZLOc5gmkRf~dzzWWNQIX>~gHuCb|X74XG zZr&1YfI^9Su5Ot{7oy=hiPd@e`!qqZ!5R^%qQzH4bf0Ym2R<%MmJFQuWsa0g(6WXv z(JY~8iwszl;Z zd*{r%L}CcXdy}(ZC^Q{-twvBISGRol0&_hUt(}IIz)v#q1=%WDrO}<=8Y|KsZXPW7Xj^#x&0KwjI5WKWH!I!QQ~U?s0}v%&giK zw$t&5Ef<&JRPhqvsUsf1Q8zKG{Xze?(!D!Y#8dUV;eO?_R-u6gFwS{y!w_lYIikGm zy(9OZ4QGi-9Y-Xx$3Ju{dmV2|5-yT`4r;Sq{xt%Lpau+zac`3*cnk* z+tJE5u=o0WV(BHtP8ZE+q!VTL*@T&RUT?IG;>}y3*AV#mq_mUKLj4r9@9x0_DdNq< z+VM?gq5tc>WB2!DkDZ$wRR0P1=Yu&xK8zCQdbM8AlE0>|yCoH589mVbkh6Fbr3M8U z050E#nFc^zfMbmDi$2~Mluuk#rSseGw#u0|C2!q{d(&%i+&0YsE=o@CP8Po6tMkf& z{#!*}G}hehg10huTk9&WGiBNS$-GnoUMY2>X|0FKG_tkTmRE}@>G5rbdRJ(u-q$x7 zqAY8)>Dm5S_P$$7d=d4s8=jQW$k<}#Nr~Er!GH{sVM;03hoJ}dT1bzL4vUB9EEq2M zE?ST!yl&fa?7a)`PtwryG4Rt^!R;)1YFlrREQ2kPv#w$0WD%s~v2)?5B_=u~OI9Ody5zMLBI<-ka)0C*E`S_^ENLBDI*JvGP^#9>v003* zQ6lE~QMztJL(s_(uIF7n&vcuB)<$b9rgF*qsL@mAf6zUFo(&=ASJI`lN%PvO7+aM_ zFPrz$FtshGlGPWV=zZR*_>Kz{zCcqd7a+#yxfq7(h;IR&xxdn}?J_Sa5S;}D1EH9C zxftsDK5O$P=c8mRmv5lfya$`Yzp5!}Wp>x`w24R|p`myIq<7i7C*oGJVFbh;=Mr;1 z^P=!8U8ZlkUpns2PoTYLF$-{{j|2!bZ_!+0y1{#8?^?m?V(_A5!%PGmbl-rE<9)B% z>t4`rqXfDU{qJ^mT)lv|7c0=k{OhQ{J6(6XH*~hRE(zR_d10~xJl8k3fR5ib%U}gJ z&0qo^m;6?MQ%h5tNn#Q2>~*2PcQaw?HrCiV7W^Tsf!hMC2=CSr|Myp4TOm5m|L%6f=0(Vcn(+VE(XSs9 z{u>Ew<2yKcq%ow?*O&S3o6!#$wbP1P1U-xbAJ){|S7ioI-5<_+ux1^vEVt(-X5WEP z0z@84q?c+hpc~=;_tI^7QQmP@o<@g2&*|^&;f137``oJ1+$jEjHh=o8cz>KAayjK8|m%z9{9>H22YXImS@W%kt|tCF;2g z0R^{$70uhOFl||a@ZZa5F<8;1>Bn<_NO3T8sG)Z9dCq$uKu-9Yb+I-feSSswZ@%m= zk<>mGqTviAplbY&0+rdofW?p#u%;|1wfYTn{P;Ui1+zSK(}r3r)-brmwk&BrH*`86 zg1w=H-X&g|jWZ!|)Y#t6^M-ga`x)mIif^{n)s8O_`+}&=?J#34k|9G!_!ElvrOEoJ z*G5}Rih-*2%iBJ-i+}7Fq!}sqNE@;#N(p&)w6UZV+Nu=Vo1d=^=X2uS<^wSkeKi)i za|Am;ycphLVH=;ZO7GX-39<5z3O%krW3z77XuV*2zp=g-FcBKV8?zYqgJ_0)Xk;@< z)gXIc=HnbbrgdrD{vrLB^6$atZU~upkp;9NUwiOdB`}9fdd)T6@89N~+M#}4A@!4O zB7iwF<$xW%Jl*~pX7tf{5A;&mvvzP{2X>4DJuB{RW`9F_oHufHhE!Iq`*o6&M0I<8 zzQ$ofhNP4If(%!pSqxj6Bjk%h!zFJ{V;bcGBgG)av?cpZ=$A-=22}@jZ%#@<2C07eCT}T zuI|3hVqMWzJHWV)H@(UeDpU_0!hvarrFL7e83=FbWhS!sT*8n%a}u`S#Yb;vzr36W zui$UdVwFfjfbhFp@ZV3YI;YDwqN1F<&&V^^ekUjM`w|sH)xgK^yHB6J3Z2|=u^KIv zc)+_fpfosxvGs3=YHe(=?XF*lH3T7N54}!5IG*f@e{hd_E$=Ixj5vP1VLt%9i-xNg z2*8u;afCdT$~F5&mjg>q!mkoFh)_Nl{LOX-S%No?5ZDAZ;YfmT?RyxK**vQfQreu$ z`;5$4oR!Myk7Yn_r_zJd&0VRF-(h=>8UwY)qN~-m`{?N?@!z|oM;=6d#}8z2-x<*{`mIJq}PWypa^d;X~FBgAk{yUo*c zK=Jy2gzgFl=uk@@!$QA1ptzh82<|_`)~NCJpvSA%A`6Zb_zlfG-_kK z3KA`0P~8>O9I}i^OR0l_$FRw7zEhW-0 z)WBdJAHPQ3e#gG-ipEEK=;$^DbGdJwUT+aW0!u{j$da*Sx1X_8z2usiFymM^3V}X{ z#CUI2EcAt+0<8gX2@J2VZ|P8}u2xakz#qwLSkpn48TVDYDAu?Zig8e&)y)$bRglG;jq?o_uRnWe};d zfjoeCWy%#lzO+GrWj}RloFb*H5v5!oyp*R}kGA;bOs)4x00`mRV@@VSB%S>fVmy1$ z_@a8#>*JoiX2ouHpF8di-5|>J=JOkp{f23tbN8&r1MZc&>pqMPa$AX>DK7ly60$|m zA8krFgiC(7R5iG30On{xwk)2c-}JH0Zm25Rwq!EJ!Ss&8t_XW9Wy)3$T*?n@<<1@a zmZlMMrP-hOjzDyi6%YZCAI*LYqA8dG$+%P8)1LwDn3Z%9=?v#6RWe=f0X?o-RGac- zLxvfqtfuN07m|-l>aiY#+0H|}BaOR8WA5|)U(4E#h8&_8o2dT*%Knv)gM6Hf_dp3) zB$j^?uq=k4A`2#iHBDD#rJ)CWpl>cUY`!{pH+%~TiA?+hWmsiygm}$Np#(}w)Flil zP*)Xd?}73QvrX802k>?LX^e}DwK;8dB1>z3EbC>lqa&f%Z7ERLJ^*8;ychcq#o{A0 zRfZg#EL)>1b7P&W^ADGLN0!FMddJgBKW8?U+=zFu7O@Q*>(`y_-X5cb^5(16*g~cc z8VrIrt}9Z2y+L&M>QBzo5BEA`=0;f-U}H4ZCKTACEzL zGDAPV&dmWnM~)@=L_V>d^*Ya_N7y&iPwiB;Wbb6KM9=)@qlkL!q(Nd{Uuh4p@9~fQ z`DI>MhW5>(*t{oa8E5GhmkjUO2YA~YET0@U9_=nI(yz%9DR<&@NJh%*VxWx9Y6PzD zr75_UrYw^GdCZuBnaPy&^0Uq`r)hg2`^yig4pY&H&2_VEc&(8WGF`Fqh(K!FMiY{Hlj^Ap5NK1E+ zKaazEL&zax@;8o{zp)w0T~Em&2bF7#u8pfpPOHz!GTODC{Qj8Q@5TP|C09MH?#eA| z6cR!43hedN9rjYZLMzGJz$$cPmo~ z;~H!G$|oxkDJj`-W&St{L(y0dWm6fUeb%aPylFvbs)j%`x&D~_+6w$ozdxJzVZh7S z*on;JWdg%5+I353DM!&KEKeZE`4hD0cDgMK#!(S0c*D|(H%2Jv*0=V)+3!VFEui`h z@pEgC`zTGeCF5g|q05ec9kJr4ED1is6L|>-V{Lg(j?w;tT5uSeS!#Ls8{u`=EHgNy z6pYQ~KVnU4T9jqR;mAPyu@&D)x^ZPI8E>STj)Eq%tuP4ykwleS*T?(!)qFm+KdX}t zB4g_G987`(5Vv*Z`fEH+1aeu%$OVfSDl91~!*neRFT=cCwB7wX2RH~_yWtwfBg0Ag zu*9AgP;t*4VT-nCu-2Yw)gF<0VJNj>fpKb#7{`GrO>Wjdw0nRkNHbe^wIqfBEl8#y zas%kA=t&*l01B0=(CdS~&Dm+~(t{+@%~c#6H}M4mmwpbdsXp&Y-5j{ukPZq&@EB@q zX-FQ;7QeQ^q06CkUQ5FS_LV_0R9D7Ia?SO=t}q*$^6^tH?e0Er?Q+gPSQAdTT<)!d zXq+YZj`Pu6;&py3o12_Du-vz zLj-0l4lt;R^3C`u+@ws;3^$8q**0nL+>^jPV>89CElt1)Gf06=z!mG2*f2>Pj&#Ii z;Fg^_iPeh9_VA%e`3`I8)x(IbVr9^lrA`}sf~$RwxvNKsZi0~Em1us+Yy%d){W&`H zBGV9FG2+_TvbzsPLYyIzFNRV@he}h^M8056mv=e&drp)y8O}r_rv&|H4nK8UJaEvin27N5qxQ{2U^2Zr2^i154&y4Y#+a1?Vnhto)Biuo&C+31qbW{8Lo^xm3bxjB&{6Tu_i zn!hB|=K*95%hPNbca!=*WXwCg2k?)`!?@E*ro1`+aMB9?;qkDigcU!R;5`8f{_))3 z&Q1i)Ka{wgvLP0y+XJ-g8mdYSC58wgScx-LBz<}a8)WJxM7(R7qeAj1Bo6=9n*F`m*=2T0bjj)WJLy%V@ z9d7(Kf7EBdN8=JqQ&eqeXq} zSx<+d@wEZRKcS)Vg+)GfhDT2oOYr@I_n{Q;u%WCjiBjKg^PSR}2>(^pA3Dx<;q?ZL z4jH5Kkh9M9M7Xj$q*LqkSPX;sm|xz(k()=Rp4|RJ+2r7_G~lS1@ciDPUiENcRd9vT z=!H0d6LZATG1V6K*02#`Q^_{*O&Y*_C>O(D&g{A>O#Hqv&Cq(iF9D4wV0j=kd(*hb zghm)O#k<4qPhLtf4)OMCHXGFB%A-WM(J^f~XaH80K35Y8)eIS&jr;zL+|!aV+3_}HHXW5nJE zon|!7)HTg_8V>0v41zJ-p9}B@@x!~&Bmtr~!C#@`UDelnAm4}FaTl?0EkcE&w!thXL8l-YnP zr0Wmb4=-;>V@B*e)T+le5M5Yc^MTt(e%DIN5^k= z4T5KS?CXwg=2KW8T<|kO?(yP|_bSkoBiQeH)WRj89}{sGPIn=!9V1ef8iyda3>;#04sD7_Rc; zMPd|u&`b<$K8Js9ze$quQPga!N;bDue9)9jY0hWoT0vz+y+fcKu_2<*MQm8$Cm{*@ zK~btRIp+Jj?dicx?Jz*gC6KY!9!!E^@}RchF{xrqF53|lum_%3zix~Ux%{N?fxAZT zrkkCVsO~Mc&ZWfzoPO_8Ni}|JRU+bEnslcjDd~?VZZrU?qRSL z_T)S_2}X-w@n*eRqbNOGb^eQgP7_+DQRd#;Se+#gwxqK+fF<%8bt}~^6BJ8ACRv1R z2{_|C;?Id6bvYL-O(Z!Tmg!&dtx_~L2Q*x?B3Cy=Au2-ezW;f*z1$;gi1%URj?hIjAXps(}phqX4+5b~b{tb5XY$*n=TfIaLS zR`=QRwP2v~iokr(NR^3Sp`d8-;bXUkafP4*zv~~*!wS@N;JwlaIOw- zMUNF@ix`RvoDYgEL?5wZi=?%+)V;`?l8mT+9o#Y+bw!}-eOin(P0X@Gllh{oDyhFu zpTH6r@L(c2SY(@h_au;{?opk=UTKq0c6Ao=k-2HZh|{V@*W~K8W|3kVO!npA11Kqq zqY?x~uFbLPlU-Q;ghwnOT!eUUW{_tRHn>J$5gXtT;}%@iF5j!bkvI2h?#FH`W{)Z~Sy*gs zPs8FeKZ^#?&rZ)M(Gg1YvyBD=g+U>OKYiP(l8(ba_q{E`X8W39TlIeQj1T$eFjFC? zJ{`RvC0aP!o+goOB0c5IGH`n(!51B|!G0z9E4~LpRpf2f&<7+-GIqatp<}+h6p7=Gn?%Khb^u7WEvdzyV8Io z9`B%0v+oH<3_X-TTgnkI1E@gtYWSyFO97*s_+k9#dZ&=U8NJ^=aMD)4_pFaaqqx$Hy zdI1+U1HDhFw*3M=m^x>%3{I;=6x2s7K@KBNGR@g38K0)TR%GqryaxOPhnpx{32=nS zyB<(EpN9Yv=nc5=cBfCSYHsF;BPw7XS0J~03t?%6A8@9~tP71LXgdj*gg(aWv zEfaR!l$+TchZp>ZLUJKmlOt+P$kXzrOi7JFcg!ueNsZv}Tv0N9wO_ajN3ogA;(Kr) zg|~yg1yg?;;5UydVhTE?ac+zfLF`r=^#6ep{R0>-0;4!|)48*1#)*2?!4{!8VNU%1 zHVl5Tr~dPuOOK++)fny~q5APd;GfUGS)TSJH!Yyp86{~%x3k>ajkoL0niX0G{^pPwmEE_~y*hME9 z8v0T8X;Jb)^r$C`?wC9IvyDA#vFS>OSba9~qYou*`f^E*bTR8DV`80o_FC-Em5Fx6 zue4vUmGPws4AMbfB$t&gNjp^g7J+0J(rUJ9d3|!TpUK^6^OXkmYo@D6l6$ZPYhZ2@ znY$|*&*O1VYd^W>;vqD4LbsZTj=jTY>}ED#+{Bxp-D}&m_Dv#{+PwTq>w*}SHvoO; zjL&6gCDVVHqToN98dt;{iljD9g@gJ-B6nVszr?;|;k_Nm%`wbIeErh8&mhT_FmQu~ zs%6|P6lb&W3t|M)yP`T8<_}|Sa-0p#oE2hv{bHsq%*ZlZ-}6AZaacYc8@1L=SmL4V zyZ9Bc17kbM5@#z26RokC0`)0Go~C3psq}L4lJ7v&zF|Ajz0nfz9>k!^yJfv> z{fxP}y>}5F892^jBG^B+a}^AazZ8l5BO;BvR_b{ggseu$HJ5AjdYymx(Gfc{+wcwD zx^`-!l}z`S6chjD)V!kJaHJ?gk0k_}ovzzlR(F_mW__cJV_|~179u31o@dc&njZ;L zbrt8f*3Z3?Mk*vj99_t3NAF8qdmiwP6T=x=GItadG-M=ysav%thH2%D zeHw@g1>Wmm^XNv&j$q#Bp%KmT5_|8t1Ge;G)nqBFB*5rE1VWI|me`@WK1|`ra69oe z3GFMFU=T`ByOB}q$#)9v!kZslT`XR8FbF4Mc#Tn? zWEQrX%4`jnH;A+K(?P=nDc=)%TsOinwWY+0${jnrjKv%sXb%Xl{?PVO z!!}8;wQ$V!<|zyGrY(LN^UYhE#2?GLqw+N>uEG57m&7kO4HYon*qE2nXQ|qp;#5|PqYr0mr-i?tKFQ}NKMQig#AoJ)U*cUxtG)?3 z=6CIP$o>);0p9rrMALESN9c}bDt!O>uuglI>{|-s?lOJB8s7Ke1KpxgmPguQr;QJ; z`>n!cL|oDsgF^DKBeXx_?6V<TekAIUazX-f2PKZ3(=Ers^f^^s%wbV0}`3NM#q`?NB zbWeIt1$cebjrTew{FP^VJ)v-301Wc>YvJTM6UwG8+I(-S^=6eFe&HV6`W;9}CUi!j zb*nn+aO#j3R`Q86@#$+Enu~!2tErS`Tr@BE>N}7E6k83wl1s03*~mkk;zrGt*RPOr zgq}{OD7-Xo$$9=AT+r{5!I)-?MAvYwUMPRj0avh+;>_7F$(ttz?m(Wzq@3iM?T}RK z@x@3+@qyWiiJIhdU*LFk+?dmhkkFc`fq$^Gi4M!RX|?k#>RV^pZY?#H8J(6jV3RkE z0eMUy`a)kQH*XCwmZU6vSvh|P47n^C&XO5BvA(9jmVsW)qjyC-+x{kds6&Z!8PleK zzNHqjJavn;i=O{bO z2I2EpoYY@w(?QdLNYwdP`)k3MFV>F`0a=LDH^F( z%|N58BWwJ3;5R|Ba74@1#C>padhbj~+o=lW`G^*|^YXG1RPlCyxa1W%)NlqwwlIbG zD94a!zioD0xDU#BrVaSrZ&gMWaDWT_fti#(BOsn=y|I~K<69XZFFwX^(F=!15%CbD z^sm<17my$bf(aBP75C@wg|y0?-NcN~%!C#Auj5{Fc9@l~us%cf|IO=X&TeYLY0UMn zl*tRPALa|MAH$no8D_c3Kh%DdU;r%u8yrE7#6|p)KAA4M)ai$OALIYbhku+{oS!TUlJza&s53X2J@APE$ie^M@H5N0j2Kh#)%ox`dHNpAy4@Z8uw zAr22R_sYJotxXOnvJELR4;z7%8<8oofgD{-QuI>r+#+1k0aykv4VT~y4Fm#^S#YPT z>jcr&x;pS2xfc$P;v;JBFiXF}$YAboSF;3dfE6Ca8)!JBPBQZ1<>&ptJCYg^4c-(e zMC=q@5k8+VKOrp)wudb^HW7o2q|8)plU~o>o;`e(+N-U*q5INj514u9wjM@>^EQhx z;HAZM-Lpd)RiDurc@gcFcQYZ@8^ctfVzNm{oepfcR{#MXb~O0-44N2(!G(MU@Ppy9 z0kFoP1*>Y=cUiM?oSiCx`?5 zLct(9vhXpdI8_^-A~TaFkt-?^@v}TPe%`_uf?JQ87&$;3x1Aa68Z|<}T6TMU7JZvV z^6G&&`dw;1YQ=00sAv+TL};DPJc=g>C$m=ptV{~vq@({Sr}p|{oZUsu_;VLh*I>CL z?0-o~9O==1H)MGKfsJA}H|JtEW}DPpgrE&zEEh9ZPnvv-)W8uhG0K*mGpN@4VI``P z{V~a>sH3k!k^4~28L_d?k79Z$9rT18SthhsMYVZ1g;WBHQuaIPoAott@eq`NX%DSW zRq*FHPhad?au#~#t^NLE0?UGH7KKE)&(yHrnAXZ8PuI@a-rv|lYuv)Z0o79Fr~CVh z*yv!qkw`U1gM^u;^2#fTaIIeBk=*=GBz0baMq3Ve^|i7DT;=b6;PKI`{RVNC=orrc z#VcOFxibVez3DTEx0B`m(N>cWdiQ+7GQG$aB7{QWN+h|R%9q_O*yal-2wf>RP|8xa zLS+1lFoeiE+KQx8+>m>~hPpv~^Q`#ca`w0aN{kQNP({()#xf{`_ti)fz^|>^`$IgFa_8fGAb8tHx9agemLux59se)9GljyfOwc{WZHH7h zN5O)y-Ut#Nq{M+&rzq*+Dse>FqYk zU*YKh8~lD|N~K3lBHDIfQaog^nYp@UNC~<#NVazLzI&R1bXH#{b|9)$pHb4Vuz#rE0z3*Yjl(a zLNjWUguF}iauVDf8bcW5B!$0I!W?YI7G~h~2UMy*=OnZN$#70xT!8EGzvFYdqJJmm zJP0&5{p19<5d!I;+e5*i2zWZ76Tmo=ijPj520PGcP_Y7-6qSY+68e6T+{Gmg7$9FOs@clkx_ zif-61_CtQ8%HL|2gWZG^0)OkUb*@;ya}ijQEx6xqvIqSkRT%#&#pxHl4p-I!@?&!Y`LQ$W*M- z5%_#C?J#Hh<&@TLwnc|jC-YVF&Jd^IP3kZ36ZxBK*j=JNMGngiMMnIz|RHEtdVSk31? z*?I-{pLBslKdTZCTG8Uan0t*mfA7kRa@oWxDwgp3&TpaVVSwzjM>=beyCYoSDk-PV zU?*p#c&(^@H+=&SlJ$Vc@OFmFb}2gj8l)=GiY~PICS;g{^y_WKx~DnLN%t7@p}Va*GD!p!kD1+OQF z#(c3G$Ie2lRtON@u^kXOahdoy#Yw>{QgpG?b7{$vY=r2HVzeTQW)MxGI5ex{2WMT9 zc-UdxUx&$RJK|cHR`b)cN&yU&0FU)HDQ*6Q_4u7xMu|l$ear8f`I}| zC;UiEjwBg|IgomF``=AGxvnScd+*Hz+Yu~~%sF(!XLx@--KZbhl2%^!OurlCMyejk zxth-|X1KQU6{C(T3+J~Fnm}^s9l?+67i|`b80|)R`wa6x+FS~vykE@R7d!ZWnZq1> z+`L@>+Z=vD0_lyY-=KsXSn-c?G-b13=lq8m`vnPv@(F=N!|BZF(j~&FUv@}dmf2ZW zQJ!gtA%cg!>bE>JA{&bOf9P5DlcDpf*avWSte4nK6kmcKX)82+f+hFlF}RsnwYK_>&ZGa<(Q z;Ww6-DC#qS+#mbjNGF`E791uCY!d&_8^7Eg)?asbig4+6F(LnQkH+Av8vq4oFdp)Y zwH*c^ScWUwf{ANKHhCME!(B~JFWlM{6PVpjHX+*;#U`ptfh-ol*-JW{FZ&H_%L2^; zKCglF6yoZqPzZ1N&(zTgg_CK9jHB8PHoDh5cc2X$!5u0S0 zWG7S4^xQ==^|1#?>b`U)@04bX#>odS;{tUGq=O41g+|aE6nRjWI1uT_`uJ%04onJF zNvg3KbjWw@;8?!TGH*zsS|xl^bL~$t-{Ru^3HGtUr51MrbRc{LmY`-~etk3V=U2n;Q)e9R`sI0nSPd7fJ8{V4w0)bZIsSR z5K}_+Z@J=RYZRvMv$IW*m`{25DAABIKmehk!$gx({ zH@90IAtmVb#5__)`%ol(K<$Nd`-_amfD&Dl7knL_^Th z8PO>RO>0r2A?e0#6m>&Ojn_HdoP-_S?NFcqXhE3-|0bdVC{z7q!vlHa7W;OW<~(6; zP|g3GVkEP7gnrwSX!iVanGNP>V!J=IQU<_s}IM zS$g=Ym8N1-5C8203>IE= zDXz6(vCa9wI&@VaEU?wI`e5iLQu<&6u9>Ro0A6X{{=9gPDZnig^WMFuRu7a-9c5#? zpz%NuZ|TbYJT0}l<+Dz zI%3f+sEu%Lopx7>WzJ~ZB%#H!I^%?qB?>-nfi(WdyGF47;Kw+}X3V+F>h=@%6a8wE zZ##){Z%f_CHW)HRE1|IR*XKZ~xV;U=!T9`^3+TkT$qJ3%o+_ONaJif$V^+fS|qfWys<`ZYTye z*+DjlpB0EK$^TigS6Whh9`3|vLLdu*pA7zZtc@W6gZ>>J-LQhLexegp>VG_~(V&{BPtdia+$^{|Di{@Bb#e@BIG>@BhCf zyq9=yM4W&*L*aNeNZ4qVJ~e|$JQICQHv7)+De`9<-r;WLJck{$yP`O2IcgsYgg)`p z;MHtZ*I@*zt;)s*vsTD9Tn_a8sS|oRoQeW!X&c;s`GVgsP^pL^!!HE!3;uYyoP69o zd@mK#L;#Ba6@z1RI|UfKz@nPsUmL+ny9}iSL_e$rML*;Wn)Pf9CVCozNnDy25=p|0 zVZap!aAd%g3Q@2MJqi(+^8pDH)CJSEB{JX}0AZPDF)}yugi>@pl59&{BwPlW_aD+L>0RUQ`YNYDmvoE{fN z6nX)Ksh)#{gQdETK)pJMTBe$DkPl-rf+5vwx4t)0HwzQ!0!N22AB?k2v(>RUgr*52 zX9ple$wJtrpcaekbmtTc563V!!0dq2gkhfz4!UW>Q~-sn1EVB!PXTPRnSg%{BA)yC83(kKBd|!_1?7R~?gs2ugtiOlcl#`X4o%K-5&=yCMLO!0Uw3A-cqHOwRZzGB6JijZLKQIjvIrc>lZNLhX z<9f3fwlp+ZT2tuGhtMg#!A6uzJBi!h$gi%jYs1|aK+pXP(NZ7}m0)Me!K9YLS@btd zg<)t5_!9Z~+jFQ_&0#I|&m5%e{4C8Q%33ZcOOm_I0JJFw9TQ^0JPTKBF{=Zo@rjEA z9e&oY!-V2bDdhA$S?G5lnt<8-3BGZF!l{K!ZkrxSx`_y47LE$s3|z8Z@4IWfwl4s{ zM;;;n(WRza?T7h%WCH7j*?M^)XKk@7ri1Abtoh7|6WyS)5V|Q?u1=#nqqgO-h39i) zeP0iBvYl$S-#3HAvAx=jbq71J0e;a(0?#dF^(c;5A=XWT=hG9Qw?F6ow;zyi_KpT1 zSHA1yzb&4Vx{b)DyzjgmnRD=a%0T6cS$Gr(BWm?7cXm*zg5%zZ&DnJW*O_nS+Q>VZ z{sIyfZB_@no!OX{;bd%IBG&L1@gY)e3k<0#SJ7QX2(q6wa^5Psz*#qKY-*+EePt-} z+8bm!=1Yt9NizhMhEx>{PBNWy_BeWN74b9p`Ihhjs~>j1(QQt(h9O&%@jCZRG&OuX zQ`;N4lN!Y{!hS6(9pwG?q88v7q(k}TRS|g@(TFXV(H=$=H=&$iyzbZ+qE&&{jx5gP zai}o?Tty7gX-IkrG z*J*@nvfuMKP3|_#0hO@=*kqR8@o7ktCBE1mup9~>f}Do$tXle9UHpHxHzsqj#Y-4Z z8I`stwSIi{(FgrEu6prQkr0Hu!YQX?>6LTeFEX!OVOYy0#;9Lv0uFO@G2~#Ox6?tb z&q}|Pl&0XFLE`~P8+my3e7aE<1F})}stJT!t$0bgM{7Z`k;2)}Y>Xd27UxZnbIKSh zD99*jSOZnRNyFx-eOf5`Ayy?xBNkCjkPwQSkm(;Szx;mb_2F_Y3vt4g$@Ls+SKb#r zi74)0iog^eZG|oWo_9}vDkTVKsYsC+-T*cuuC#VmmI!+=#a zQHjAPmeAa_QNIupAwmD}Ju!<@WEy&*d-=73 z8t5is>fa}`;G*zwqU3M|G|UogUCk2`ZKw6sNGCIbuySXBD6{41?XZN za&WYpesp>7`F=yjuC6Q}wiSf!4r$A^EmP3Pd9_t^-a#j@Ey8Ik)SeMBP61F9A$^02 zH3|coDos0XY}z8`Nm=h|UMpH1)2;f<^0v3T!-$U?QTPZ-pFYbU`F4gnJSODzLvx!d zTIc~Uv?Sl@pzD*d z`?5#;8&mzIy=A?OP_qOwOm_balbHpV8S9_S+uy_c*&Uf0JVJzk0zTG6#{?Hk0IKooX{l$tHeqz9TMq}>O1Eo}1F$?#7@4dc+=eDbjR!TK*O_}yaP}s^W&!Pg44HJ%@ zz|G2fvuw+CGr8H>!nxid*!|F}X&n0m6dv;R&8@rsIq%N)q3*LiThvd7 zCw6{MWS)LChoqlF5(mB<@{ol9_gc>qe6SvSEZoXzDt=WYeFxMuuy<=^ zt;o)_Kj%E1!XEaKh6w%c(W{2;9=v66bf-+2VDqIi*|C((;l`ZvC?@^#Jex!{eg`UR zHv}Ru`uMNs^cVQ#9tF0dt^Al*2U9!b83wi@A%xcnta4#2!GVB|_@8)86&wzYE^cLd zRB-~IH~5E@uZ=i^9v*YC41%xL%3_JL>RE$FnS19$ZYXckp|snWKSg8}v>B*Mu-HaP z<&8|rcKGp*0FzyV=Hy=?TYZS%g9WK%3rP-tNc=2P!CtQw{i6?^LXUL=?IGAqgg2_u z@|2mH>|`*R0rf7!Z1W0rHcL(7N+)BSDXZc;9-%U;W(X234e_Y;=ZM|B{Ix~d&#!0z z>YY^uIw2pfT&sUC>f zB>W>bJUp!29Dh8VzkCk17j6z>!Wbvl7{otGXVeiUNF#*82>qD6f(5}57?2M~^ue`? zmDQ0|WGw-+&z4{wt|$z?cNM0R^h@V?l(X6z>I>p7+ZXXB0_^zJK#?@ua2JtpaJu4G z(LTw&VIP#yX2gG(Qv`Pga1vwS2V+ADv*13Lv$Dabl|pSm1;=EI5X#h1X;cD#Ie>=^ zVF^KLRpf~C)T@t@g6G#}KSto9TEC~719S4prh_N9@_!%mEU7v?Z!|RwY4mtIo;)~1W2who3(~BTQE1t6 z)=C#dJai<*Afiv=;)A|e4P2qDRR;5JWR^q7ofTy~7x|Jn!KsSEHj8<<7XqLx&-^BA*F;oj6Gg2AsR}xW zpADA4=#Pcmj;!_r`kYtB$zRmO*+Q14pdIz9K%~0uRZQ=o0)2KkQBD!TzpdZ}h-~$- zaw{l9G+Q>r!u{jWK-7^1AJ3mS+h4N9^+&c4Vw{FY`eYSk!7Kv^^l&atuI2=A;J{-9 z8gS460v_NSICTJl%;H%=zYe{tG|C6m>zv#os39D_6dQ8*`NY3S@E-H3)2hfIh)^K| zvG|^14?iQqrW&@P45JtBTNSX~0uc{PiU~vk{hzUFE)!E84imP2Tk7UX(Pq95uM?I%jP#V?U!LVAcrkoso!W>NJ4_{|L&H@;#=RWPZ zR}M$~9GB&s56bv4Mx>dK%a~9&o@&CatziC5fw7tB6wutvBtn@Wi_;_#xy4-&J676!y7nP^bM!aP?wUs~B{QbF^e_JZZ9O-$K zS$Jn~WcKVEXt3c4*3#b}Y5DR_eE1w$yn&5HJ^`Ck{tw?i zkqo!>6E-3Ujv1j&jXTn&O&kjgv1$@d-#$to$G#T?fe0V)bRI@M_n-AV)q@mg|vtL7KnPTy#_PSQ-qJ%mXFzlSJ;Gi*g);3{=KIDGp7DsrvAT8{Rd6` zAJEUvQ^-4kkG7Hz>mK?iwnBVjf>%)taI^B zJ6W02AYv5xTCWm0o9K?Q2NBQN6GQtGxyrr@TYbUFHP+0-!z4#a#SR3MELHP@u`Mg} zv|bYlWVaYhuEy>Ksc3>gbeHPFO>8}6Pjk^gE^cmN3MRACr&;O0y z&CSMXZek7wc%uJL@SL&!DUINDBD|b}g2*6B7n6uB z+D}ekzZSrRtcX8OfJ4P8Vj%i4{gvlCiFefK{wW^6tr9}gUV==9lBb&9+?(=&{81F!*D=H#xYsOzJp@;nr_P^PaBmZvsWk)5gqg2q? z74ehQef^7X9fNs6R7WW&=66jjqBZ%%YVgM-=bLwAmr>*`tjmk4423h2rCA-Rb5|8& zhdyse+|7m>ER_&h^wBfbmtAk>G-dJO7f~t?t6=A@iLF~m<4SNI?XGAwMMzZ7vn z0z6Tf=w^cu&_)IoFyL|oC^DX z&^q=+^ZwN>eAAxpFh7X% zvrU0UE2N<-)nQQ`nP0dTQ$6x?Z4OA{WM_q{#WY==@?8>Z z8WI(=*Ef-x6l_&NG8zRnyj`!)r!eYNOdE2i;@m9kZ0bLgTZtpO5VH-gS<=>G>i4R? z!A3pVrhb?9ol)eKf3vya<^$tmp9wGeeJjS#yK+zW0q#GM^#5ZX1wol}vm0A*n4AB% z{0PZgM!XoLFVzu$j0SFYGj0nu_C*bOWgJlqdoodp2$|@yuFepn%2!7g;B_loz9zNLy$f(;dLz6C#is#C3OmH@cW#QM<)X6KD3r- zD7tGk+?NI6?Ms-b%DIMsc{|D z>pxolapS#q9Y&ven=|Txq@MfjtK1q(Ohp#l2t0Wj8+K%9it*bNIb+h74;-l|Q5o7))d`Jk;8 zw1=4#k7!pL1WF$jPcGo%N$Av|mKL_ewPvRvs_s_{)&+uqx~IjZ44w1g64AZWPT-t`FKi$gD# z#3CHm5S9(&{bQq-<{Dm?FDjx@{3hFaSEkbk8Alf4sn589*eegvk6xT^+3PMGjKW|2 z7Ep(v9B0`SrIxgf>KrwUAi9MfBJ9R0P$> zsb4cDF@%r}MO?C|$WsGha3C>a1gIA~xy^~r@(H3c`~DGm2n(nMFSr5-p#0lThC~2} zv16RBJfI-yNxfJ1t&n9b+TEEzb zasEX*53?VGctj~xTush0pVlUD%{?lb{B}Z>M)~x=kcznBez~(Q>gJy5WP$~#n3zDD zSWs}o>k&ZZc?H}6RB`~a_|&|(+y^fe4}&4At`J5N@wrM+)r1qoMCbD8Df7N>8xXo5 z{(3sg({5DNe9lJxmSR4}z$GKg`o#?4OyqOKaN{Qk>?vT}bs9raqt6!wgv(pn;j;2`z zUd)3>hbCnM+wY~;okD16lod~b-Cj)q zpm?yL!dL>z+qVeFlwnYHzl`wGfXsbR<0KSl#431wG=n1UUwJzHDO`j#dRyKcHDh;0 zhds*7kcFj|&%sx?w5Qf->1X+cig3$(c`+LDyhO+ph8f1?`xN9~Gb@GeZUmAvoF5R9 zLyUr5Hke4KAd-Z1og6SY1$mkR+L;r~e~(E1r)J^*RcXV`#ldaL$MN4v_p^a)lNsa* zXi@#Gba{D$?tB$~&_S$j^-rZkUx6h-3=@Gz80ra4z*}6f>DmY(+7Oo-0{FuQ_waq9r(N zbZ1H1K3zQYA*_K(pt(@4kLS%~V929VWCw-hbeK9gYqtba*RXuX?!1Uvn4hV@pQl~e6g&Gt+W$0rqo6D>>2o>>8(|M|isuBgK{Ean% z{U_h5ajg2)VA^(ffAx#rD=H<_yJS5wv+NRu+2}EQnM5(jGH&3Sg9BL-r3NJ!{6dfG0W&Lc2{+ z`LAZr7W8U@2bg=@nKG3EzLqN`C!fY0!G%XB*T;W>`n{0O#Fi@Ma-cy$!3zKVLYkPo zunI1wd1?HfBI}VZuSP1>{H?X8b6v@h9!U|GZmi1vQIwG}iXEvkA~-Uc5%i|W&C95S ziasa6gjrKH@5CCGE+9FQ>gZ%|F4FCrj!m&$lE*j74R9Xic9ZFoXGQ{=5_{$d&-K&M zms>@r%j@fltEvn_LSk-Eh2%|8idXWJF{0dY`K{c3MgQ0oTFn)jyJ^x?uGGBSZkFfe z`A~GsyZiN?WRSj|QfvhBG)QW{fEskXn-*S|!uloMT}vW}d&)WajnwJ$lPR0JRkpgG z#B1iYtrco1s|r?w!o(57bK$4x{d|=sM_(@RLGa^xcp2fsyX>7X5P47`Ux)z)c9jk( zJ~&I|)!TCpS&^98#H-7_Xwm?mssS%6FTRE5G=aG5fIEa0ERQ{jdZC*! zDDn>|_k%fU33M~s%Y^P^Dm;&lI*EHx z2yNHe5YdP2GROmJMM3KH5&LDT_vIs~v$Ft&xq*OJZI=tR@@skZR9Ac)ivU)uRrE5T zz3Q~zc;w)6C)m$EX4xf<$5je*1?}c`dAttbUwYuefL}{-bs3TG-3F=aOYYY6!aQ&h zC*Fh72GyZBf`^zsce|M4=|3b97%-Z^`yJX7|>F4*f3f*=&kjRZ@ zt@H)g<_vHhuZg(wR9PrP1Xj1q7Wx#RuceJxN2nYt<69NrRzNV-806Q?eaE}E8cXz`gya-)fCiUshP*jP4}MpS~lWo}=gIR=-A=WSk2NL7uHUXsIIRjCfw2k6g| z&@!`p-1i)V-B_%nLw8h^7o+i~UyT+w=Ob9wr@Ra(2BF1wYr52h7y~^)jgz-HD_1;` zamm{2tB7@}?~Qy%^hjU~(!YNmuS@XNIB=Qlw1l$%qRg3~_<3a^9Tt-c2E z*r_lL@EKr`Cz_tL#JXRIFL>2fLJqyWTsqvWB(vsS)HJi*Z8;BpBpb`v=EgY7{Hgd9 zcKtqU8l=_cx3o)I7xS2q@6^oYe&C{8*cz}uG>ClEswx{_2YD=);ZZRAhri~S+TLYz zgKOUKx@i%72QFM{8$Wt~`jD)F{xSfDGO!ERSgYP|>(~@u1^{3o6`=pYnaB~WJSDg8 zyf-*w$G9?Q_W@=>u-+YO8+9u6tQ)hf`X?y(-aGuB%F00LiZ5R zTS{Z)_UlrtXF42@+O3QFWIU@?2b$&=ifdYjq0^mWfBL^wNyNX}j@5ZLWTp*x_ zxWesQt6CW*=Z>%6x4Zph{{cf{4S=^FK&%1QZng!^JAXCB8FIvLKo2@@V{Z6**v8E7 zxPtd(`y`8yQtX;?rR|Wv4t=2%2yZ{_6{C_?5x$9__Os^D0BFDXZWeB#0SH;~3X@3t z+|RC{&dMyH9XRiq)n+H4vcmnfPzIDscnb}j93OTet;>g(4Au8uX=4@~sfe{mMC8@e z^C<<^UK@2d`Jj{3HE;9vTXmZQq~+5`+*Y*66?pA01A(=70zJ5Cr!sA0<7bd-9Kv4* z&ik*l*$Iz~NpSGHVK}bTMDNSg*M*wA#ge~lGgeg@bZL^Tf=A+WjOunn0ofG+(H>XX z{~x~IGAyobi53m+8X&k^aF+yk*C4?ig1bZG?$)@6;OcL{cz?2~E+0Sv6{mQS0g)H354HlSj-#$jjyDSWT0Se#h!8unYp-=$8!E zOhp8+_$v1$zImV3h8*sG9C3d~URBqwe0jsAHLKjI=#j=xgvREPvaarSF)JRE!D@?I zaJY`k(^XMol$yb?u7EIY4cfjv&f7!`Z;(4=o&oAsc?&Rs_~3P#rGqe0(yA1l=fjz# znOmr%eDAkW3s)4f#MY@xN?iNKNj!x`53I8Fv3kf-7l zG7afR$FQ1Fg!D>jhPynM;fr99olw^RRpBN8ir2sXUJ2HkwRYeM&-DvW^bDVZ?V)tS zYkf9;Z{Q02(r$K>*mnL?Jky-u%X>7Pgkp1HPI{ z<=w7QJhq6u&WK#r+{Wkl0Kjffv=oxoVsXTQ$#ulR2Hu~k^>H;_H)kOlaxY!CWe88)r+X5)T|BUnag#gM%=udsIOrzV zu3AX=snL24e0<~)d#>RoDEUMgm1I)q#deuKfQG*4jPnirw}2!)96YSNuezoCd9E`L zH=V(N1P+Zf)OUvjN!b}hI9N}&w85Kiwa=OJcM{>kHyvX)7SCqYT=Jun?a z6<+w2e6d8@&pG44`3se3^}e<0j#<-a38B-Gk7GubXFC3UnzQj6KHAJ^!*OV>;yi4##Df>wk%{?r;A9yA#*vkjH zT&d!#I%vSXRBU}8SDypua5UR#-VV>(88Nn%4`5rdNa?d^jI8)f5@u4pG}?(2Ky8Kf zusmA=g#lJ@h~j+&^(;8yFgtHCr=9Eiy)*#B);HCc)xw5O?lqMbYp=o z7Tx=GIo#1y(A1do%iAF(qRXp4j?C~hcFC(9NSn8>W%0}+NaRs2yykgB5`SK1AU^4` z<26bDTrcBr{Jxq0x$&g@5S$f)?LL(=-Y(FE_}*w)*8WFZ*7gF?(t?Mz)!0`tkG;3r z&N~1WoZDSbIm-nlS-E=t_ws$tH<^cN(nah~CI^=pN=vgN%l9JgcXLKVHHH^PmZqo7 zsY?ZY(?!ZvzheV>XWFRi(7GAwg_TWw$V1Tl}#@-ks<8VML4c^I};F@R1f6#UOiuL=( zh1f-sZla6>efw?tQb93x`{R3duI|vm{ge;b+94XEnYx}D1y9ThWJz`ksqqL4PT;r> z2H^2_-|qQ79o<4SHPc8I*kO#DNr@?S3DytnQgKplZFBeSgQmM|--C(jFBgxXK!!}Gd`KQ( ziwd~YdRWv@5GSB!>voq}+RLPuRv7H*H)0&MPx*y&9>LdQU+DC0%n-eADKbeo1LS08q@e4jR!#@cPtKJV~V@*#W7x$cYlw#k_>xd3~Be z#?V&^(O@l3y-;X?8kZ1tVr=>)^n>@YBAxYD*XdrKHw+dFPH3-(;_k^iBbhM@$oq=- zc_riIRS^iOy9!(J?IJ{4MHCvWtAOO-ph%@cQtvzU%m_jn#vg5_gWd<8P5`I_)OUkM zo@|_GUt!*Vl0V`cj#u2G)rdB-uklteuyOolqDyI*`cu-eyfD;p%qfW~uc1$l&d};H z>laYWdH~Ul1xKD+S1e_k)&4-+;xkJz=>5v%Tavjh#q~iByfL}S%o~Rhr~#CttT>1lPRumm0#ByeXa3ilVu^mWY? z47|VOYI2037}sj3xs|!6&5%0z>G!D)nCy;k=@};x`W)5j^{bo*2lT;|gsb9h)UrbT z^hn7O4npuDAsfH}>uYIa4c1MM@!|kd^M{kH(6b}Zj(q9gOb)7ot@e5d@q>CdzuE4bOiV!H zDR{DfxbA;cF_b{f76iy-Jxd zUz>s;5{Zl?eV9C*+}OxJ4M9N}1Ofmw0p)*`SO!(y(1j)xF(y!(wlBm)@1TRAJ!Fh~ z!n^3eaPS3!ytNFN97cV2gWiBV1D?mnIiG^I0heCn>$!N2R)#v5a0W2$U3UTY(i{B`xXDXo>;|&n6EhG z?jIbIlf{6Y*$@~@0{OQlNgx9Z8W^nzkJ(^z1_2KCTW^5bcVX?-M>9}!%;A10> z-vhJ%qc>0jqRAl80#jajV<7kvqekmn?LQ|D&ojzQJ8={tA=TsvmN-e z?eAXPy7LTHRyIl7-%XxZHzU~0*49So%i=P<)n-zUaVNgly_3(JbG-Fhf%blay@zpH z21g1}Q3KFstQG86`x*DfVKzvPBqa(%48JgXzYs0?V@e)q5iN&bXyLxyA~|=%e9i>s zzqOhcJ;K$L(A@5$nA8POI{VL4{B$JF8J8bpGa+gL@bQo?>h^r`)uOI|gh1f4FnTIN zt|UQli=3ycGB)@)0ckZ{@rKA9R^9i^gzJ!EH*dSX;POr zgU>z&f_Zn3zuT>%s!72HXlc7m6#XmHj0|PgzW@f84|h*S(R)i_HPJv}vPCh$u`Pr( zouHpANWY^&(*r*w6mG^w+q zruKt@;WKf*O}jTqS~2YAD$zEhytbWJJsv<}gFyJyO+s^;tKxwy&y?u@d^ z?U(@Ee?6vuKXf>qtxDO|Nbu$xGT*!YGm&LyvMVpUd};#T(dUKC=@P#_?mM?m7Cq+> zZlryuQ=+YTJNz>j_pcWPx6RsxKiu&B7!){$nhVxS(rIfq^@X@JylCrzEWmueLR(%SI2Pq#v zSnG?m?UJ|Cglp1Gy9$(sY}ht>NhV2zo>?3~k=KS$O_KVJw1pJo1bb!G#2r7XN4(Ix3n6f(!#UvbMI}^f3exm2l(f-(D9?bEr_jCwvsl1||T^AQ;|jm&+WCoxUE_^7+?3h>OF>fYsoy zGvw7ii0suqNK%qc{&EB~N`6q1E(}F(MD}_>hF*$JYOHYj)lw*)$(#z<^9>mlxKs#7 zj{AD^&sYB91^;t%PEL>ohoBbnf4Y ztW18G_}JN*6TUxX|LsZ!J@~_9qM(K%3dc`}gHAV&-J!9Tn%GA!!7U{jNmgIGM#Ct+BwB6M9pA!3L^xWmnq;e;7;<8-6`U4N9Jd zn)*70Jbu&}4>Sr1`O%G%wZl#4V#L~-6Zcki&Ny*#{!q%@tjQh%W|QWoXHm9FL$g&! zxAar5##eVkDS^R#erowFnBh$0rZ3zdn4fk5Lw&f)WknyB$}}`BRD?fXg)*cOz&tew zD~S%iqfky@BV&_2*X;*f0u49lge=~|5{OIk2a*{qgYV+Zf0_7T_0hN1ucgOA1vM-o zAvDOf6>DcUPuL=);#`le6M9~9;zxO&aJj=!BibCbnl!;O08A5lv}nWs`r@${ zfT-ux-o~bK$pgmpHu3(xK`&2G4t_3toYkLgS`V9l=x&2g2xV=q=F$D*M`<^H;mG`o zR&OV@!6m~=ny{>2FuJ-7tegE_DuQp{Z8}(20V!m1@}v}Hk{SGc*2>x zNWo_K?-?hL`|^S*(cuqp)Wf29z<-kR0N4g&bFul~bs8tIc_$ITeu$EH%Doic`9yuq z2ky~xR*5yiLzhp%atA*$W~&|uAk^)qtm6!K4gEMLBY&fv8%TL`@zWvMf-a;()C%Z| zTjhUFED1#>7$WMGRX^w&v!NGkGS$WvvSknny^>4A@ZFN8WRcu?W4IOahMWwd8bBX> z9Ci9d2rQM`xKMvnwj-o9Ebf_#oE;8EJ}>{pvZh89g0v**;|b3g*C~(g5~9?Jyvzq{ zMdXD;gXBQ%cd0r(CY&_J3;mRjZyTR9xteg)gXv1U+fbG6aOG395i)S0Jr}r!ZJ-{S z?4SNJGkR_9!Eg#`0aQS7Ec_4MgPWb5nT5?@MMYNvLlB!tS&DvC#*gVhDm=`3d`kI{ z%ci=7dNK}q8m4>K`nI)brOmLpU5R8L<%hIL3<}zAfsn|Lc!?Wy(Lj+3 zK5UGu(POL3RXDK;VF;qNk&{!-4x8NvlY$?o{Hx0VQpiH7TAdbb0k+@L=uc(3U|;0~c)vUD>`t)d4)#fH8y}X{tCv-mLTz4(64QyJ?l)5dEjKw}lqs8ICL$>@Y} z^RR92?DG!r@Jn9VkQCoCPzZG6P{fWfqq20F(1Ejr*C+uQU`c4CRVTFK-cgO`1J>8a zlPW$>v^ZnCDdKxAcXr-_4bauN4Dk; zn{fDhV%}?pl@JI3RC|DukJ~@V2dF4uVggkKO3c#T0@!V4Fo~*y+RZBp88T+lUp1yb z*(p-PYin-DX$nXubq(>e@}t=&tXh*xKKQ4}Mv~z<@_40Vo!f#kI zEtBpx;DZZpetX_&_BK?Lyk~}2tBAw=TC6Fk1h6x75*8G9Ju!+I)_Go|@94Uglew>z zp6=qhEs5oNB?Z}2@O@vC_o@SEt*@=O(*3Iw?4%0pdFpYGd+zyzkPQMXea<#t9S#mm zwj22Bn~~Oy*cA4s=Zvrj!{$yXA7O29Nv4cN`_(sWvn9wR?Cbb?XtFmm?N{)l1>c9C z9sq|Vu0(>hh{a^{Y6{hy+_6FOTq^z?QyUgOps`8e61XgzUbqdDNnhuwtwXvWEy_ol zFc7{BA=~m{E$Nt{S~DL=e;v&`iZtdyc36>^_%gm?_2W|rZ}W#wM`&PmWYGcqP_oI? zrb3m1lwTHWky?LgXWfr{6Nzk&Sp-=_fZd4fBC(lHUj07VU;h}3*f8Ip-ZyNj> zCL>CY<(WY1Gfng#V1k>IncIMq`6i4nM~MCeHP(tgC!VIPV}Evt zAHrlpJNA3dk1ia_dxj~|Jt0EU;a}y!bRBPHAKlSBW0cTjZn^;N^ZATkKXr+xQK)Z< zY%*&cY;H_kI85FrSXM&>H@V!noSZIujM5V;%o}YoS+NjWNBdg4!@CPjL$Gmkv@cJfha_RE6+-_Q1*N|)O&(SQwpLU9+V$;T7hQY1Y*GOj4FzCZ`g`F#ol?+lj= z%Ov+t4$j{E7?_E!1dH-{hA*l+rLKDHAl0x>Z|8?DKA2s&S)w;SW0fI4eY|O$zFqak zx1;OOVmK6%dgt7ad)PT`|aL<7{@#0d%if_NruP+`6!PeyYZxf%v+J$@9Ouq$pq_o(dj?&dmRjFew{oJ{; ze&l#m-In$NSeX`b6vgqUzt!n}+<4PFaE)li-5zFV>L~p!v6-tRtm5#H30z zf7O-KCO)Uc&X9T0fjrxig2-dPMpjS}jIang@bzqh+|z67Qf53t0^@0<+UruvMn_Ba zdjSARd)aTU+JKbZStU=%vhqWkhNR88`b|7FR~L@}T*hM-CNSOVch#Fn+MctrgurmH>|`TCpZ`Dp8cNVJ2%5lKVzVr)=^daWfbr=Jad9h<+8`})&vM=YMOSAQ!H;3$EVt4g7~`ISN>d&`v-X=hNXR^9tPSv# zzf;6|4L_YuOpl-V1o=q^CwiK+Myq>FG ziM?x9p>O^IGaVA*k^k3=t6r;@@5FG1N|{hl%Q-Tem-=vO_uEjDObPTE5wnx>l9%I= zD+_^WxmmzgbqMMh&X1dRty6~YXFtK)>3kY|Ad2Y=FX>_C)^Ep4boUf$?u}Gx;2vRT zwS5pOCZi-pWc}@Dw{g~akp`1XjK9;)tGx;SASnBG5F9r--vBy6rGo;C4Wmbmj*-D= zZgz97^CrUe4ItwR&h-3D$DP~2PAX8|uufJN>V^kUVal9n@84WDlT>x$pg)}O%TP|l zo2#I=T?1w26h>VAaSrS48+bdQu3q7bh0v%P{s4$tb+R^n=7#K_%dUG z?Jkg2bQb=d9HH*kwc?x^V1u*+93m>aM!R40v2d^t==dP(1rKbWpDj*ziQZgvaRg`q zSUB!Su1C;lU^w1i_9>-v_*8OF1mOszLT$rj_pcHc8Ntv@Jd}9GY)PGhK?jwOS~Rv2 z5Vd7)+Fode8)_JxKaWjhKS^gM9gT<5)sL4WR_mVC_IMvQ{CaAsE4dkND_yg>>{#Wi zYZz+pZ(QZuuzvC$q^*0%Ixb$bajRbi=p0CuJ;g6vpH+%D5%okG8&lv6oOmGg@S2@C zB%`@!)3WTp2{~mZn+Abn>UA6==Zjtb55_YWxBlJx>w+G{OV3d@?N5+V%}?3bDLdL7 z{PxBfPpP8U3JZs55b_u``zUGZ=0#( z9ULs!Z^Vw3=TpP0odouuq*0Xia7Lj@Q72Qb`Mr0h2^cjHr3SVZ@H(+J)z~Cn5A?CfaR13T_1O*BL5`CvpJYMGHSA2bI*mFd5%^VA zvvA^;ZQ&v~Ct#1iD=chN$chF>OT6QecR)y*hKb6Dj01MZNF9;QccA*_KJ-}n@j?{B_zR)se+YOu@z4+^NBB<8VwOnCw`Z8^X<6s2*naW zsUq+EzS-mK82QW%rrXB`=4WLGvNNHcE7laibGV!37+k6+6QUNp51cVd*S8<4lO_7w zQj+jv6qUpF#AR+HjlUJ=bfq{oMO$r`XpWTgdA^_PJ1Xw{l_;~+8ftrM9$gmlJCNsr zSj&8r7A?Mw$%*$Yh3h2E9YbW4u;-?sRL!0wHQ}`Dl_7JfaS)6~TBG_!MW}EE#EB|E z7SFqk5-E40@0j>V?>?OUGxq&QBt(Y(?GDYUs$^rztr_)xA+1a`95>a1!T7d2y8TR2 zE1eE)7V@aCqlve-h@p8F4zBa1m-~@l7WX$N65oD-sF4kHi$^nYN@cptCD;=W^_P!j zp=xK}v0sSc8Y{Cq0G!W?XjAP!RB`dE{uN+e6+vb`1++1sSJCPZM5NEjWvI{2wev~Z z;;kY^`I$tfol(l8*>VMlG(5Yyubexi_4$~VQiBLeq}*Al8S>+jgDD~(aD{GM zomg4y;7MN?hmG5E&?6HOkYu}Q7}PW|NlTKmUkrL^mC_~cWPgd@uf1$Ex`LC~Pu#$B zqZ;;ff!mICZBvg(C)8D{mZJM>1p>UHz0-BhfNV#s0Uw6IO#75eg|-thD&=H&uB-EV zbW2S*sDxKmR#2AGuYbmr^R%}meqQrXH9IsM`gJrlSLXsuh}WEw_BP$NZ%2+b)hMuV z8h%30v02jTYNMzaT>3s95supJmr5^AZ01&knzz0CE;Z0Y% z567KhC5^fpXOzxK4LuEbBOd`t2%%+2J*0bKZ@n2i>`2zcza9FKR^FSPc9FXB`M%`> zJ3!=*L=^`Mi=tofnL&dS%OFP+(6NXme4wjNH04U0sgjCh*QO>#{vK5qY*~jFQ7m#D zA6pVd=C@oxS(H+4@OXq1vIR)jo{_;h#FRpmwv8q^U3puAJ5f}tYQelY$J@%Ed0$-< zfB$%$MCu54{$8s;HGgrklAAbZvi}XqkN1XGa>QHNQp#fwnG-BkU8(c<7qsJKE!|hO zm2tR58o~wFmJlV%{T1ud?CY%p$2+$5PqqyIta|$m(S%0g*L)yCXq$!xs zSabe`{NIe~HMn{>7-7AtrLO-CllpAjOu!9?{|T=D3C?`b7(jSRF!+Wv76fRB-*koI z+6Smy(Dmntf5NP>u@ML8>;N$x{@5eN>pL+6_s$`(8a$-o`5^FK0fA%Hiuu>0>*!BV zH(+65;V}O9{HbB7``rM-whOflhXc7;ILper&<>4X!_7$-Nf`cPRKf@}K7}FBBG&Zr z1DAnK91&2dF|j9L#KH}+1InA9pIIr+4T4U} zn3Y*d_!q#By`bynkOw#*C({Kiv;L7@rNKJ{z|NB(A_9*XpsC@+rzR(l^s%=UfL&w= z%z)QabY||SH8*Heul{LK7;v(%au{(P|Krdj=Y*-Hk!XP87tH->$scZXak8!vPO}x3 z9s`U1`w)vHr7UsBfKkiIpli{KK-+uE^WD!mg!xCK-B>oyFk!1#+hxCWIF*4&-wncH z?AC`paN1API4>!SX3bqx0dpALNM_4PWd%g<*;8XwaO0Iy3cr56@1;g8myw<2)lEx;7OCQWE@2mDxm#|vUNX{sFK(ShK8;KBg zK}N5SWnfJm@RGc>n@{e=HFf(TQQvhLe2l{EhHKYW^wF6NxmzSYAMk0sMm+1SMa~Ov zh$$G~mYm^9~|7)FTW>sr^jq;9nHZW)vYH z@uXe9M?%b&k@SE3&;xLIv+^wzT_G#bmKZH!85z>5|Cgz7%mX|I1auO- z@dJ-1a~+TL0!$G(!>0O`ZAM}oUxBtf1=P2|h^04tdS;W9r&o=*YVRB`n`vCI~KF{)r@*ve3;BcT}!qrKmxnW|eD| zUOn8sg)xbC;+mJl3+;g};c3Yl;39YQ{)3S>x;QyJ_+i#NXS5{PVAy^L0b-sTieD{{ z3yg=3Yt`m>;cf8JvxkUmUi%b!*G@zSN!RWvYA=pf=4mq8Rs&{&jNrkY&SFgyGHa~! zK@0J&JTRxIBAVIFK8Mg(1f5u)Vng6fI6l1L@a0`kg_p z^yxJGZC`hY8OJe~vU#y*hx*9GN2G;QJxzb1iv$jT&Y$I77=mK%`ntWf?08sE3^yr` z7G2ms)5F799_7q89Sb+1!JW?+4NXcryRW4-)pA--ZXY!RP-(Mng6OV=i{i zV-=&ChVyXoAp_QVc0*-(uAa~mbxF8Iv8#fmb`=aGW(sAz2{B+urrE;g`ov29 zrzHPCoV&8E;90J2XEd?vC8w1M9;cWyno%r)>j=49$1No*V|+{5Z1?WlGGVU~=;E1M zcMXJKskf|Oot2AbXUi+fRf?s`l-jBk1f~G>m#wvqVD5HhU#u7_Lxz_kP4U3%>V@ID zM;xJ3TQIX-Cf{F$S9x^XOgWc#xjvuS2CSy8yO#SxrgDp#m!SCERA8x zH9Fbr9jl~{Oe_Tp<#G;a$Y}hX{;W~Gm%QFMX&_CBYybNs+Fa zgzw;?r_YO%XRP>fj*@ zF`tBHe#`QCTxOTx>IK?@eZ#nX!JUQlf_)c&_^dGG@y+10kW6}gh(N6b1UrltIZ{6RvktPvV|Xl85WAm|y56!5NXhH)xE}UKZ>(@i7W6%lg%RHk7_O#0dY`tn z0#g74b1VE@JuAfI7t=RyfAlkimO+rxo30ddr(L(CT{{gI&8ohWqK-$AAC?}jG$-1s z5AhsQ@#tT%AX3C^h>9kM!wkONaua?iAm!w1qB zmN(56LVNT{^J6vr_SVO%bC=1KGYiybq*7xA zFXU2idt`x%G2poMm=^aG-+YVSsT`y3Qr@%t{6--!YgK#1?aiUy4dHYHcsA5oLsvT> zuzG6P^P*`K+`%5VNk!DDpO|NU5{h_jLY)`6>9(&UPC|0Z zfJdr~hY$tuDnbG;Nz80nZLBE@7?}_NTn>t*ct?vl_TNu0^f3JWT=mq-y z^V_+_h>4vGWMuKT*}!WajCy}CY5<1%SC(SLtk1;`L_34{7oPe5VT-@yL*oPXnVA1$ zHyBO;VsFv)s6-W~6~ zh{_JoCe}cuKBa-71F)U5J0T`{1WJF~$|a{Iq@=2W*M!3y6x5iGfg({*=6?*Vh1?x| z4O*Fad!dR3zjB9)?x#jXMjq>9=Sw0{_rXjifQkpT^w<<&3Q$7}ajMr3mW3+D95cB_ z;BPahzn|dilP(9e<9+G?J?no*z!`Ds8?th-tf*+enk;3QNn6z^6!U$;0BVSK9dUfI zs8gTI%@*=cFLvu^4IRC_ltzK7zQ@1uI>2&R-*xl*T&clS%;6*}hGh9}R;6V# z=fyZ*ErCsKvObQZG|r0lrTO_;Hwv#Cw(VGSA3JP})kz{Ut@HkkGis&4uue>7zsh%b zz!vPxRkE_hq_8giMn&Cy%+;VlZYTOYU*|@Vg;mj8voj5)ydI4Lk|&EwULk&-peVLM zF9G-Ki}Rc3)dj2J=6YUcy98xU80qSz{LeO8Xl23^;x;Y2kCUCH9OJJKfq}Wq4|0N5CETt)E(N zfx4vCdjM&5aXE?K< zJ?40|CM;A!vmbRJuV#jrnYg)TEP&3T%XV2g-*tG#HI3!-joLc4)w+42waB=)VMRBQ91JHUKART-LBu4-5W z-l~JVS&Mej5fNdF%21UVmm>Y(GQ8?OD#CVIuBeUI7vr{Vl8V|!9wW`NM&4t*jDXVH zay;@cB7kH>WVtA|Rso&$kPueUe0T%8nR4Q|x4YHu=1(oQ#RIVe`U8X06!v2j;&O%S za-T#2IWLdH>Ua&Mz)V%fkK(45Z>W5Da_7#%$Rk-}3yLj2t9i#h)p&^6K(Qecqr8!7 zN(x=wbvkPQdHZwc1T^Ck;GMeI+?2WO$LC^oh6K3lIXt1f!iTWwR!|GN=GhkX$jgi2mo_!o5~uSSyqz$w!;3e*_oPx2*hx2}lny(lyMIV1g}{$Sp<^}h~^ z*ENk)f+`yYMX!G?zKryZKyI1FJAX|;BmH{<8kk};g?%<0c5Sc@aoXIm<~+d2Mf3L9 z&vubtn9FUu{GB0&w===mZ<0;LlNy%*)Zo zgl)bL>&tNBdZj+Ch>veHd%Da?m%hlI;zhbQrdTEg?e5T4AViiE$G@q5!-DKd;7Ytb z&>oj@tX2w_fB0cwPm03>P_jXP7gGsM(C&5cnVoaUiQXvt_c7+z!Ds6>SX@B; ze+Hi|j`F_;4L&0S4L;*}`*GuS@EI(uHY;fG8Jj_iVvGp@hW_{Dvsp=u?F97+>J9{f zV)jy;6O#r8F@eL6KNrbwPLblvH{eJ5%w3}F_CDr9s=D+}I7N#MdAl%Gz_!CM>vF%b ztQM8g-W*wkhH*{abK3sAj=|L-(xD^UR_J6C^z*F0?rFl^4{c;e+JuLw+Ai$z+;nl_ zgVAAhMT=~R6}Wkpct(S;y!1)UT|ys;E|}8_q$%cVLKY)tLbsS9bWRz!^E2FkgV`%| zN@h|%RtPF5|=Mj#736PCYw(f@615nIDxH}GG;3qkzm-)o~0UX+1ytAEM;#!O6{ z%>Nhv9{-hpZ%02s2Ytb_Mew9FtUdHLeDaDVJPbRC8K_^1Kn@HVf?~&cof3>QvXhno z+JyrM|G{C6nT=S0*_~iGfEBB+8kXJGg6fr|Ctuf-Cl!0aUd;7B)gW$U3CQ_mAFTkBe?kU$Euy{W!Uy+aYB$g-86d zLRR7MhK*1w$jk-l0QU0JE63womuIbOhSwjTume`hM%!i6sN$3NZpV7#l7siUPldP7 zlRwBC>~^^^WZV9rPNhBe{_f`2GA}!eziLtI)?AVPjg~1II$P3JC-4zoq+D_4NAjjQ zGFGiJwH8N*NCuNw`Wpa2;BvbDgVYMkDD+C6jM(k+ld~G;7=W9lH4PpANIgMg6ijIu z8uv?-wLXx7doFXd@H-5yA_^Xo=4Cwj6r0LMdcxbtJ0w(jR=Rq6u7$RZ4`4SmMpNL2 zhEsjeHL1dIZHK(Huvb+(?(>`mRA_eGtZl{bw(705q|?ZX zPI7^U>WGarZv+Si@=p3yVfChPSN$+*H;LnF0FdxP*_}{egpqC57uvwOa@bpInV}d8 zwL~Zda74LhiHo&%f2)4SX!>d61;ixqd}(579)i>md{2`WRo^#`S%^66GJ#&wOU@Cj zM9zVRG!#1R$A6SFHUHy2?#cDijR^Pc{*MkLqzXBW6G6bx(O+c1*HStsTBzOzlm+bn zDW#2BO$#eTdeV3!C2>m0L2?6^ zwxG;Tghpkp#v5e9UQR1$Lo#Yd5|E=kMf9nu4kgUWNtIiH<_Oh>f`b9TCfh|aKo)&- zm&2OvW0~`})$gP3h8FLGDX%>hsa0}@U9?Z#e1)6#GYB)UO4o1VV7#+fvkrWnBA>m! zV9i3#ay{ogHsDx%^PBMS-b|Ec(r)Q=3up%)SUnpUpz-Ecc4OJ%8MGNOFHVY`f!@Np zg6f>Y7rK0J^4(3cOM#jnFg<%C@Bp7LihZQk2ZP6tM;Pju<@yPy47?MM9wMqx+JG>H zJeP#blTItx4Nf6m$W9c0_m-D}fqa1KecD8LoaLngRc3D?(R*t&;|l6LyX3<@KRJt& z)8Zh%X|n?bB{JygC~i0a{4dg6!nb}aMsWqAcoV}}hpa^2gd~#>{Ci4Asf(i3{$N#~ z*+%Te#df=crjbGks!j*~5@fv=BGc4#g>#^FG5rG?7_&3$8w2$-|7ew7ML`7TaJMk} zdCA+4t=m1-(|3N4=|fkbQM>6EoQ-lTy-8+2nZMmaz31@d3}ga4&V~u;C2Eg zpS?pFG%#2}C7tjL2XU=$FK$c^-b4?!o&l4zAXYEL7jNP|8&QZ=tXcUs)g{TPpk{Y@UXH`~G)^q=yoeX9U7q*!@ zU7Opp9VcVd8!@2({(knAOA;3EgVV;v%?x8ik9^(C)E(~tjITn#02j~&62m|%02tDV z^<2E8BUe_Wfk%IVFt5*3WzA*N6cm$L{Jp_X zOkSZZQ}xFU_k)L1wO0(3NIn`XAbaQ^v0S81@It(nY>nMk>e`fcJr0y#Pg%)utXWzQ zeCG!P;2Sf#$XMfbaQ={CdaT_h&pRTfLhA_8<{voQCsVTa!~D8$*4Z$xV20DY0ZW=X zcD!PExFmbWM*Fn6T@-)S>X;W;=(5BGTgYkF4I=7|^mvcsb5GY`vsX=dlzfEY`=y(| zI9IGy@?nub4DblFZ}6LlbO^0b3Ts`47^9l_Ka{<7R8?Kr_DgqncXxM}ba!`m_oh=2 zsZDoxBMk!5DM|}SNrOluoQ=<;kMH|^XN+_Fn?2lnt-0p9=XL+?>jF%K7zzB4ZjF2u zam9lcmqkx2P&neFwkI;aPVQA6HU<_@FaxRVL%eHf!?rv1PWwuB8Rmw0R)OQ0Lqfl7 zv^nGrsj*UGpHbG*^~u=Y-f(n*MFa5cLv>nl<3h-u{%!^R)y&x$U=23EuiqE?n6&>+ z;2X5q$6<+^1_jNKQZ7JD%?W#>+qamdP5YHuFFP`nKxJlg`eJv4RR4T(PIFF2ge+>{ z{I%?NZayQ`9g%KZlo=F~9idB^Ft%n6fIL=twIPqiz>o7E+ zyK;01-i}nsod3NE(GY5b+_0@Nw$5e?U+oI{mo@7zn#R!l3q}B7whouppovy^Z`elL+e=Fkv_L3nZxUr?3BV6bP zX&l*WJPkVHk|-Y_L-O=C2Z^?g3=wyClsc6VmOm3DS|{PcTpj_-l_EF(XUURIfwmt4 zT9M$t?Y^ye&CNjhBqy2^Af?_?<$E{z{Z*`*kRkdd(ggNNMn< zJ(&%P$W)S4mN_@Pswl5eWd%HeGwZHYzcG||HXhF2lsjK|qUl<#TZV}!GQWT|*#l;} z^tyO|cXGDmsLa%(R&knSXi{s6lZWY=N3vEAl!_b1T#UwSB&QcaBRmv{=+^JrSPnvw z0rf4L(k;+ZCfY3aJKid7^iZQkznLUfCwsjlu(iBOUB#-%ZkWC+hXinLM)7DI!)`t< z0CenhQ+deoP%mdf>Lz#Fx*p8jE#BxAm!sXgEqoL>E^bZk9~+>vwKF7V;tf&Ny40!e z8rn1D<}yLPm_6<0#np|)^8$++ph4bd2YA@nrfg2HRo9}T1kWFm5)%AaxwQGX9r=EU zuVK-kRT^-Aq)kzC2M2gfBas)nck>kGy<^r>+2K#m-Fp$dvbYwCv$?xe&3nQncwNX3 zlZ6476Y`VcM==`-tSyc=HlYF4yO{XiF}?n2!L)48ACVMZ9=uAEej1w$H9nB{5g`WN zeB3eUF`iM*yb{(W{SBw{Y|8Ca)G81aKdpX#IxyKqwOB8(u+eRp0ipIDG~cB@u$C^-p_NE(x5v>TMAko34Tyq z3;%(%vGR0rk9#tp$>@E>V6cJa^({7Ppk^54&*2K8p!wpu9;K>;DJ3nbQeLby^aUCQ z+$7vIPCBAAJ1KVTx{`30P)%r16|4OvwQBWVEM9I}}Izl2@>e-d^FC0`Us!Cf6ZJPLN zK*>R5bgZx;@lc=Z*Ke4SEWXLT*vv{};Q}2wAPKSHOl{?-rkGf!nFbr+@k6)ul zM2)G8waMH4niJUW0KrU$I^U~w-smXoJ(H@iGN@CmNhkPOc%M>DO9pjhw|JU-L z%>#Nf6bu0k3aHQzPR|ky7KA?xp@#TZaqyy>zx~XKkP76`J zcG$V2j-vtduMhoPy2mH20uRlr`s~J@D(;#6R7{(`Ku%_~ZL~v@_41074ISLzhrS0ou^> zph@`Tf28k>3XoAlE6SeK@;=txSx#q$WR1F_xy zEOm~L^YZbHdX}hzWWx4hFr@Dp|LyjD3kE-c`s=d2Yzv`{G-xWIZGrE1S02X7n#+pc z><>=*J609%|BO}r5n_%sNC@l`fFJ~z_D}csgLB2>|I?R~Gqv;xTk5An9-m=tw0McD zIHj_@i2C_%p&tWt^qfd0f-m^;Jbr)(m4h=3{A*?Z{7~uw1*D`RFZr7G#r`BYl?S0V zKRmx#GwSk`?H=J4r|5b5w7BIZ@AH#C8u0G*(iHCpo8GfsC*{$->=Pb<>jx_lOtfss zshgJqmkE4GNR}aU;7}-JYYQA16O|TDWDBYhGx5Z1sn1rLfQ1tu-!%4csPOsujpURN zIQPt8CJ|?5fprsm46!ws1sa-1)TW*9R13(+0KpTBZHjXVeAyoo6QgBT^>w8lD<|3G+FB~0RO+Z&bR+Rqgel6lUQX3pkG%GU@!f(WM1}} zmlhUi#r*pBtCMBTZpLWA#b@!q8!?1P)ZHDRKl>xfSaX03wmE-gxBb%`emMZq{iVtX zZ%cBh|59btTXUM3ac}^)%71Tn zT-qQ~?iCQB6b2m#!k-)4tsGHP|ADAE5FNIQ|HkaBc`P|B&4G<6sJ|HXU)=S-se!n_ zoMI$g;5j%bjyO^QfeZ3iOuF-}QGzLGzxn*T0d8%{%gxRE%U9@sb-n@Y-tgB-HLkUE zqpS>bkO*u@0R`D51qL+**~JCfIoeq%#bPcGGwN_mk$8C1;FQVX;28O@b&ngst75_D zg+TKZ+S|E8KZ(LAPJShYX{FG>G|v#(zJf}!29J$pXEQW?RbdJ9mC(e6__bn+2wEZI z$t~4pE#-#0NBOo}nym74>D7ZU%EH<6d(}SCXaAm_kD>k#+|*asXWm&3mchA~M@@a} z&{35{9!{ZqqTyLCu$F`n|HD>Zj|QSO31~VBgM459ah%CQo z_;1MBB6L-2buwzf8Bvj(B;pjXjvM*RhA2lhX}V*=!+rj?YYWye|PAmurbSpT~= z2I&wb%^VY0-|V0D5JF4QAj8ox|2YYpxlP7cM*m;mN$tOynIzgUQH+i+45Ktf3Ka^% zqhZi_fA#tUMQ^?PV?pqr?p~1S^OGAgB+vy{{C724vvG2A@PfjTv7rB*x%ekc zjO2Hi*z1?{p#+sFX1YowIYrjb3UZ28cprdjU5KQnh=1Jsp&;$7$-Kww{|OwD$^sD< z9tCqEF9jNPNCvVTHD|^TzKDoiw0CBr7;Vv89nD{qLFO-da0_ElL*8O-C`o(Z=4pQt zi_LwLcS1X@fQBikc!CRNk7CEkS?Ri28eg+@ll4|F>wh zX5+RtGqe693IC>A0sls%y{4B_Vj5+Qo%zRPMR^Kx9OtNmuag5w;lEXtosTlqfzWA1 zKaB9B`I#xQUp*$2JRaH{hw@iM1c6)u6l;=E7APGiVaFZO2_RLhdPuvuD~+^Y8Y= zEE^W7@Bg|J?Z47&(LD}2A!)glTL=J)()ujRr^dH41NX|_&w+d)wTmJ zi@%WY8zzN7VsXaQF^B?ON0P7F!~}Uc#3_bRM%%!CN3a~Dcm{0`JE`}N?OQ?;+$&S0gvyT0;o(dxJf0$m7#Yk8AzceOHFIM( zadUJW6Z7T;Ji2jUuN^9`%#LlyH%(Wl%Fj?uP-azII9BPJ=Jp|YZ<49{-H;YSl-U1T z@GqL@Q-TcHi`mh}p9RmyZDEz(0{*uR5LyT-0Z?QZe(jeJpMFv7xEJUn4}U(wZ_Wl9 zeEB_>^s?u_kQEp&K779l#CVlT*^j?cx!B*q&_akv0%t~GXn+uS@Z|U+q%E*bq1If- zuv@XfBk`7?n`i%r+-HYl;6)cA2{1_s5(W^|7rNI3(fE>5ag{Is8`J{1zf1;`R0z)G z@ms(S{;3Jz59XlbF5dr@$ZQvV} zdM$(pj;z=3)WH>)fWI!&9zN(geJ5z^GX?F!c>gLC)@71J`6lKg{j;WT4v4-E zXB03cZK;W6A;w64kC%_f?!Nr4kmSXl-!1@G^!!{88^?_|<9y;BlGTJy<^5c>Lhi`( zz8j*+Oq5b>`jwCKV6dURZW0nI__O318@=06omGXhqOj`iIE0S`Y za=5zL1J%ojFG1i(yUx?>G|*pJO{X}A>3%0yF}Up5M;N1nG(+>6@L93ZM-amfRh~z& z0*Af3+rXjETnlGO1jt5=Oajb#hk9f&cni*EdK+qH3Ts)-Db|z_mOv2_j2!WVt zAU+Jqh}N~gUqTm>b_C}4znGbi;25yGqw%;9$EYNHri-hC7SV;Y)SS$Fyp3ZTXNEz7r!WZ^&sc39K4_(%}=^Ha|jD|dxe_WwPN{zAijA9HhG(zk_C}21n zELWaa!9~q)`=oJXtx?nj8`VHqKu71D0L-_JfX>h>I`PN>|73UdOZ9hiIp1kqqlx1* z#27p<5ygkL+8R{< zRq8=c38;a>!?~^@?y$;+rTw|Tt%caCeSOl_EOLp;tk_^V9n1e4Sz#!VyPO=ho-uS2 zF%>_6ns=iuzj>R*AmG@v5KyVow!kNc82%mwJ1}@=X5&Fb7@zouzlng6%Mb-qSzUgF zMSXPI$AR~D-9Cp2KidNyT01{heA>{Gr!(nO9?z~PJM@_$jA&HpAZmFSAxHp^r3|C> zq@zcTVp7+XmB)(j^?wwSdE?kYIg*w*K@5Zf!0%5#U*`+E2KmO$&Jjq=s6L4*`1l4w zO{>IYhp=Q1jXQ1AV-FHY*nM=J=NGOnjr8x-lx(w}Y7r;>s?onbe~|16-rfyurs3A_-EJM38t;Hu(&NTLO%Hhcjpuu zfRXh*c`FRz2dNovS;!pMH16YqN3nLVaDg|}mz6Hr<1nKYtVz(wP*I3lRKUp#+wX*< zZA^Ypy!sfETlecDKDB&X?^7(~F%qTS9?~5f%_(Mdxyr(3Woxr`FqtxDljO!|JU?0X zdVXxXOV1p#P|V2s!aM9R%FwRiLGW|cOnjX4cyKvlVkeng=LF|RZx9Yttl{!?esyu# zF!F!p(#!pJCZ_1B`Rin2&1TJS#bf>-dE2{;6eYF!1alctNbfMNyd^utBOgI4UOb2oAXAZ@{rC>E_Y9n>j7H7pQOvk4BjL zjwHdPv%z%C3q*mbzd0lB_4Bz)VkX9$5e;;yn=*8ao9ugBA}zs&n_3Wq5Dw^5@4IBK zLQELO?fPK2d%(8G{N&|I_%#S-R*#R@6d>%7y|pE4u|&!74s0@PDtv$!L;X1Y3f%_0 z#uCs~7$qE!fg`sfp}kuE<_)r)1yS_1KRYe0o95fTo%4{T#`wYQlE4cKs;_F(b{shL zeNYDsx13>Ao&D|f;ry3#poFQ$ure`|@bwNM0kXo}qtGEz;#L9(ljK&!Zc@{1nSkvT zyZb&ngYy+P!md=|%qWw$yJa1wunoo}hLeE33{r1;iZ1;(ol@5nqQ~Cl*3PXhT_@8? z9@JeV?o2?oa#wW*h=VOLp)R*AU52LZl>RX;S1lgZkZmdiw;A9PVxP>)Ob$7qDgVD` z=tVgqxNYzW0_~Ya|DN%z*+KKbe0;qBQ&0w~`at{-MH%JAf$*35_F^{34+N(H$286u z{txMvdFeVPPH){w^V46zAR!@NXUNCmhU-Cb2)&%_8eQz&U`qGi3qe5ai8VtOSf9;V zn`XR^R)tr;Y`(bag;tn3+qk*g1c9rdA~_$I)tnkA!VU_E*JOh&{uTRmoBMIX4fMs6 z|NG(~I+TrVU41|vLL84op+XA2N+Ea8wB1{clZjplZXg`pkK5AIW;Hg~XgM>j+v}7* zFtSek2UM@b%)F>`F(V@u6!HDmc6R2^-n*yVOqueJ_8S>Ndv8r0b;(Jyh$-B%q277M z#h2OxI@Fnow$%%LljRC4zMRf?1etR4PO;oDAI6<}HS>o{lEzBb_TMPZw9SdK7QaCb zMaCthM7#}6IM3fx0qEHX!U@-tx5O4bDAtbh!A>!{$|P*X1+@3FI=~5kN?FOTKcH$2 zz~w{K?anm@FC4R)k0u;z9gAzF)3DJbD@Muz$js$iTgaDID*J3$R5)}8wxF=|ABEUL zdUE68hPH!wDVH3eD__Y3gn0GyY{sond0J)560m)pe*Ma1;4YLf1E={!b+TvKuQ`5D zodlAvT-aO|wooDLOi@8R;s*c9a=y7j3T;;rjz@oPy@|d)d_nD2lEc)!rmx&$ivFaK z8%0%r3oYL7MuBM5>H7)jEjT1q1wT%A>CmB z4qw0g%z)^;33(%@ZOaKjt3G zBaKl#>%KBy<&9>Slb_5hACCgqD4BVk#%a8o83c{;V+csl_kI$chu7{b>IPC=h1$Kf z7r)^2kI#i%r{_pEj`2c%FW|AkW-G%C`pdl@yZVpVy!mYc^~R>399^({A|$*>`y#z` zZ2G%hq>=^%V9j$U8mE(IeSLXCLjij_JD>_U@#apT*^SYu+N1q7^77mAydL#}VE7X$ z=S!bCUTyeqq0M+y?@e+q`^;xIz#cg4&~qNKAq8*lB!?FHGln{9r|*6)t>kLkyIwH` zz&MtsQEPkNl3^|w7Okf)xc@To zc6-B*PFg@0i^Txu({g;lZ3U5&-%!DYJpcXA31rPVN*Ix+gwSwN1Dg$;avj3lL)Ont zahQ^-h377s*14}3%ie@La zyz%@Vv?}Ne>#69bkppO?>ZGaGV%qRvb`ku zxCeugTUa%cXA7_Nw4n%le@2}J`ruod22UrDUK)R$umV+6oev}b&F3Y6G_aRZ1}RbH z^K_|f=-IwaNBm(lQAFH)Dce1BxNdhk$Az%}trx-;cYcDGad(l>MIBzGiM&|QF_1FS z6Wv{&l*vD{0V%3)G(0|u$jHG|^}P#HoE49%4k4azhdN5Wt_bN>9Ui@Qt<|UUsDd6F zm%=P(KAEp>4Jc2@XH3%o@lSj*+l|JwM8!9x9JAa0D25)aD_5k$vgyNNTx|MiR|Ln_)7nWk>NcioE)&43flAB&;l|}iCA%t%r8hUp^pb?jZ86$Yl9o~beAU~x zRRk&0YFbjdddKzwkcNi0Nf-GM+Wq!kVyV{W{_-2fkI4fYtlkL-p<}@OKOoq+-2hr4?iTp^`pL0E0(xXlv{jtvX73W&Y!BySNXpW7k zU%@ZsQ#MSmeS`WI_A~b3yya`jSEDDz+KX3-v@V6{CdX0}jQ~*_bAU6x8Vs(v=$D}* zVbTp$C&ef)-=6(v4S+G9?j`vrcsLx*nfZe3!t-Y^;(IWZI-Wl2V7MOi0KFmKI z-+1oMelTqTOt7tNFb2)4ldJ@HOf3v5bDA;}B9%XXit`3DrU0I+HN^RJ?@hq1oQXd~ z@D2FF;(b8if_Ha6pnktP_5tt-vS;})BukzM?PpQuCo?bK70|e^W7+3SaNFKC*yxFf zSBjDxVP3Rs$-2+Ph^&O*HEYet-uIk+0w+zd`wfK$0Il=rqKi*s#`aZSB@nU9Z<>F$ z2{J?z2?11jKlj*B2%O(XobQAWScE)~pI(llgx{ZHL*8w$1mc4$PG?79{!j>U6Ud2Q zRuT>HXk6jFs%Z;r8d1jzvgUO%@%zF%dDl|!oU^%cyMs$FMp<84uq}w=-YiJ`7_&lx zT<~W30npHG4HjL8RqXJ-tHA@)LiIDbIqD1w+C+|`G}OgWG{CMe%*G2nQke%kmNrO- zI*%(v((yZQILdLX`P_x3CC3T#tGKXLS=+`Sv~G@LBCq>Bbru@vj2ijliG}vsm^+Rz zUq;*PY2E`cdbzWd)LvtPjSxp~xbUaZ)W*wCIDl`yE9fW(3((#bdn+Ss(;bQO#0dN) zXIsbxoHDI>uS|MhldU5QjIQ{=5ja*-Wd{6o3<_ADdmKDoGuD_ZGVX9Zymuoax1WNk z2rCVro5?2D6xmI1tVV&(d9!}Ii42K62KSA)-}JhV@?8mm7z5a2O&|Gk))V3!tWf}2 zG&ulL&7vhEysM<+?MmS(1ZjeiOy(Ps8S&~5y-dRmfl62~R#49HY=+WgeA%I9-6d58 zl~m_duu+!v=Q`TYmFU=3b@Oqo>rH&!l~-2_KVOv@8@oa0ZLCc0H0W6?LMZf>z zhTwxmXrtcuzzJaMe*JCV7ONa@bZ97RBzSzSPmzX2cxXtEmT1j)97k00|W_6e`X(R#EzTTvcL~wdEK*Rw3Y<564!|}w3 zh*0}Yz=S8t+5JLL>T+LAPu)8HuGPr}esnEFALezdAN8fx$sJ=bEkJG{9E<-p5?Qio zs$EiTv!KHkjNpTR-uJJ!tISs@fCu+;hwH0UjB()l^hG<4N9u5G-VG1viTli9+TG^b z3^`f9t0k+OnwVa%J}W>p+_*YhO_KkyUGjRa(=Fw}vLKXv6fLOxG z0m44g_b5z2`|i2X2s`iaZQggbORK0a`2O(rN@<_rY}K1*7wCOk;UziL0GQ$9hL<;j z#_pAP!2)TJCwHsP3|n?_uNoanbjE0FOUQPM$em;dfatTUVqN;LUgeOrqN<;5F7hFb zeS?8fs?GcGh47L-yLxh$Z!0e^H2C)P)m9-M;PAd?i-a{dr1yHUviT|_3(D-Deyz&|?0|4FXnR(0~FPD|G<@xY-bqY>f z9c&&e$TyNik^^ubgQhnk!rbSyVfbY!b8qbsd*`*pV)qr^`uWiI(=aOkQ!*>b2~f4# z;I8TUuQSPuR8&#j$SnoZPO|=JCl+knyzEx%nsYDE>AI;H2s-^yNx>%z4eiq|SNo|T z0a`o~hS5)z9D}B-d2ICf6u`zQM;I~haxV81ZKK3bv*8v~u7)oq?C-Yj09tZc7^r5YDjof^-;Ks_TP z*y=vwa>5THW=&ns$FVZSs~>Vc+RjEV$@*|3h!%iEO%7c25L}HV#XdNyY{)A`Y80KV0PKcB;srCNN|nHE%_&o> zx&6^FD2RZ#y|J_!N2OkvX2htqXaic|$<2ADud6igMj|NrFJzG71Mj08RWaU561Y(a zVN^EB>JQ|=!B?hwDvnc#MtiS}K2cM!kC14kNNX8}E`P7Fmni~7X8R3FY3+={vyZ&e zB)Ga$Oy&{DjIRrVh=S#OW9}Kmq`*mIHH78`dnn@z=ey#0lRPqa^;P%Qox(`E#Qo#` zbY!`5@z!3xAg|x4K%gvCB&3(|MW~iMGrds0esDaCfgK^uWCm-MY1`5A(>J8JwJI&! z$=B70c+3cojNfko?K>?44XAn%!<4mHZ!~>?D&eM73R72iAB)om{$lxGhG2R>&>rr9 z#0mD_N;JC#w*@Z`@28X*2P}51k!B}UeSLZogeD-FmcA{FPh$&3lPPQ*_Jdd^oq#B3eQkE$}?ITTbL`M2G`b zAXhtJ2C<~bU&@z&+BjN&t&Cui*R}S`yRI)4wOjYOD=UuBO2^w1nRkQ@ojx;1GVHj8 zEJJ5`Fmg%!>h{(E;%6a>w8_ z4>D%&nU2rFp5yOLp5{-DUfEjtCs!vQbg#pfAs*#iZpBFz=OtPkQT`~?D|>cit#3!+ z_BQK*5Xh7G<`n9AlB;P@ZlXfsQXBXn1he7t+Qf-CSYSOuXge&cL;uxTIxo3Rfc<JvsOa>pW0Cc>euui5mysw z{EnCw^5mctB&$4p>yiX?=w+qm@%+ff#rr0qnXPO@AL1~_ONfnrAoHpYWD94j(Jk!C zxWJ?iQWamGd&1Q3F~95WIKI))uw{q)yrco9VM`-Z&kK&xTu&uXw_ zGvfn!{rUcbsr-hs%zwdIAg&D_8IfLol2Lhrbv!}bd<2%3cCREV3SVmob{9yMUXqn@ z2;RzuXQSiWspXDwsEnOaDiz-`KoBaB9k^?C_30yV>VbZIBZIo43 zahjs6cW6}$tIXwcA@D@B^p zwPCQ4aT2J;3|`reo>qXA)ODv4+_Aa*?Ya1GYU0n)qJzs+)ppfna3n;&nPWRs-I>T; z2DKzaBnHTb7GHRB(-&K+bP1v}2#2|gRo8Usopumq*iCea#|no|RbW5Z^jG^#RDs5I zGAgu`6S3mB1<##`k~_&JYc)(TSYntf0nUxpU_UuI38UzdQt$!R-$MFI3NOm<>-$=+ z>>{oo&)GHhH$Lge27Xcct=w@Znm0SJOc`$idNopxuN8 zH)&7o)VDbwII>OP=t?aJf~FQ!_B>f46?Gv^Y3DrW6=d)a()%K}Ds1^<+t>d3#2?XL z`I?*yA=W7d*pCW;94ARneL^7Qgt44hXO%Nt>{uVS}Iyx2>yZVTlm^uW#LNx{2 zt8oUARTp#ZLfFz&obU`q@t=^#@8L{S>BPyf!e$t1^i__E4XWF&3r#<*06LjP%xY;; zRGqGB-ub6~HWFr$uRg8vVm_*C6Y2Cw5j@|>9Lp$ld$WI>lfs!Im~!^;edc-N;rYfm z$p3zH4m7x;kDxT{LFpln7*{l}#4}~9(MZE0j!6jQGc`32?51I%;psI3`%aWNx%sN= z!sbz!VO-aAihUo5m%^!@0AO!iW^Yu}u-Pqo22#3L(KJb6X4c2%qz&d@GBtBOYdjVA zo#Q=1NhnyLBZ%kS&wZ2aP~yMzUb*OLhJf|1p_45U5_2?Y8=i>$^8U`*w8GW_BbCT zhH}mH@$Wk1M={TRc*NKhC~s9cOg%3@-)CF+D)7ZuwYh%uVVcwDi^h*!lEM<5hG`yL z+U&BaALVBY-|O3u0lCJO^d*|Cz7OgcP_cOE72#wZPU<18CH;U7p>s+IS0*WvE|yd8d0W>`}Avq8(-4!AigS#k-*{-slMLe>0*oo*alHX_PJSPLV+&Ft(`bY z;2Le&zP`ex$0T6*iR<=Le>%FHi6I!EiS-&pcz87I8Oh(Ly+)8eGr(TrurJY#pQ7;X zstpT!Rg_fHr?9mRVF1&usX=aa^(L!H(*hR4Q7FS3tHc1oW;3Jj%+zy(ry`h@;!yZp zGclEbJ!YIEPz|*);qi_g>VpP;Vi$I6DpdzTK@`k%akiWdi!Hmd$;;$FgNNQ)HhXQQQ^WXgjbCz_fGuLa8Rv>YG?Vi+*B z4Tucr154)pvYM%0vnEzAKor}%;_09ZX_Q-EpmH@JaVXc19mc5vDjI4O{8hDNThHY);X8>mi{k5^FB+Ot4T_Qw?IM(pfoxbY5PeKS z)8rB0f-sN)pW#Z#L<9cjp`mngUOW%^QV_08@{8~Hv7Tl3GE4*ocD1}MI%&`Kmd#!% zkI|mtkQmY;D(SL}>Wf@VES^YH$qNdcIIO~|qSqNMj7iBZ#p0N(=Ga_$8GB$VUe>+!o=Z%&p$^ zgI5EdMegI(xbMft?k%@EV)xJ7Tpm3?HlC-?`CV9Y&v#9UEH3P1;`ay;iXn8z0+m#42&4yT?nO zbgQ|0-5o**D#PLlNUnA7(PH=UQ&Yc2I=F3)wz4bXAH(VmOgD$du4z407yS5<2JN`B zl`AJoGh@jT#S9+Qd1lNosX=!z6uBW*r%yw?+ZPm ztC%5|I=>ewg9+F*uuBD~?X$bE4T^BvyWpo+aUA+X?J1^8eH{+$4nf5|*Bk)%geN>gy3osX1J;{*u2DIcGQ7CqvNXesWf%8`=C_u9;)11 zk~f#(?bKNLa%yo2x=V0BA;~5UY)4xJWa)7yy0qcveplz4DKG}-ULwoIGNgo$1iYtC zS~gHN*(9IYG0VIFfw|RGm@ZlUgw&gRa2;)Z8;4UUjJ}D8!oInLJSlDn9E=VVOBJK_ z854Gw_|^tQ8K$a0mbb}{5rSA7dX)E39AoW+Nqo^u+CCqZ~gyb_z6~^3U zu)M$p4p#RG0Lq#Btpg(R!AP(vuY1%^IMD{K9dz!yH=WB)xR;j&gNoaAQhG{XJk|Lt zP;;@Cr_~cf6vkV%e1u0zc4*#V-s4iRs^>1GcZc2P;!{esX=N^L)B`CDEa=qSopMKd zCq=HD(;Zn`FCUz04@=L@3n!r}P24N`up2$PjyL)MfY}E_qhW;cIty*Zk9Bp+sU_OZ z)J3$qX`ac;rQ_5_{&ct-q>saXV_7xX^RKFff_Mp%&82pVz+v*uvu;xgy?gVX@C1(0$7na^Z@ z$ps+9Py9avJ?CD)n$urk4d8YL=@-5W_Mr{DY75+*FVykX{`q53PO2~DFRFbXjrBu> zr7zh_o;Z(s?g|?uwLfF#p0#N-NIPrOfZnK`dP zaP$UN!oevaI?WVZSb>5%*~OMpo)2jtGTMO`cW?x(k>ZWP_U3AGFz>iV6_qFFCKzO4 z39BI&h9Nn4UbKK;@GIUa4vFt(7z9BWkfa{o1v(v^9+Dl{2n~zH^Fqiih2tECf{xgz zzf}_sb~6rsKE8GJi5EYN+?6m?edwdIE~Y9*%oX*@&#$V0{?V|s0K{lP`296bTHff~ zX}Jdp&WiY-q4v;;wmuD{5;Jdaj6%9quMf~7&k)V zYFvN|UP(xDC^vVu0g#)REraa=Ylul0fG@+;n6wZ1;LhE@gXE8rB%R{dY!Vo&tzhn> z87Mz^H2AP8G8q^p9$z35;(;w~vpyi<(I{CmpzqiO!Iy~9)<`BYe5~<~q?|QcA~=Eh z(3oF6C!QU*%TZz`+A`&iz#B>4ki5e$b1G!jiuY!FlfyD17Er{~7q^UYWWS8WE8&m!}|izIc3i)A72>;Vl6;5dP&tPrq-vzDY} zQ{Y1ws)VK?_^%1Cn<3a$XM%BD>B4>hO-fMZ87{;IACB=!1MpxD<{}B;K5G~zWf^9r z=tk7Vf*%H=!Pu!o#+`?9h304j<;jrP@RrTW#GH7LVl;;$&|TnK-!;I`A_=Bq4Fa#p z(MSO=V>|AJmAPl2l?w5@xxm41Wy!~Hu?{jle{r;ELkG-eG5CISLTTJI15%Y~$ICTb zsM{7KIY`k6rg)p$cxPsE?P&kVN0U0AO~I`vVUku+*S|OU@#foDyC{uwvjHfPRpi#! zWg~c_oA)xxZ|=y+%V!N7D5V4-62K^2rG)W`eScN{PJ6>vXj#`_$DG5qg+$Z~G#!a0}N9fT~DG*YCZE z_v57bdFxERFY4LvLUP&-3vkU57YyINL=>3nIvZEYp839E*qd;}ZnETnA$rRt@_fB} z-h3yooi)1;pL8bC3w=n

    5|5^T~9ij@^Yp4Z)ENQF@GWgVr)qbN4S{P@)XH_`N_}GE$n9!8}?Eb&Z{E5-ekz?rPm>J|JCqGV% zGMj=-j9+j{XkV1qvf#i@bVxb`H_(Whc!j0RTszRH8IAq5cy z1r*zj_rJ8wRcQ=cbI=37`+L}g!-9>IpV#t4s}IB(WA&D(h0e#p;h8qei<6l##)?PA zdhdP;MC}TH?MWMuCZlRPzWg>)5RTIMvtStx#u- zs!+KP+@HAV^$ET?_}*X)&=06eAO}-PX?ut%SBMC8Q)$(Ewji!ZY8k| z%PR#s&R(X$yfyV%4d6Kmcn3f)B(E7#+z;{eFFmo3E8mgey*_IRov>h&{J=$P%mdP-})9q8iy26%I4xaeb^ zAz7!6|KmZ%&y!xcKdFNG*`JpC&Q5?o!Z}99Dx$1z2H7bfxZ=nJATDS!cjZuUN7xeJ z1`#FoyxN>=_b`c|wEBdvqWxv0nDx`T__HMRhgQIe2Qn9Hc)#DMesl-IHh;+0wk%?U ziY4XuA~;$Rgbhb1tu<;*Qd*39hy|cfjg_F6rkRr7oyLh@Rwpk)!3p}?RT50_8jcq;Lh0%vK z=46&8QXxC(M;;c?d+0!B-Oi*DsX4Nz{#w?x#hL@wV3zQijGu9|eHZ7pmwB;Gkg4^g zUD(n!kVqTpG$HUkVf!qW%em!g0%yp`&(-`?ySrs26uOYyIXK~>mqw+ z?X|vr{r&ez_eqX2FKW)$#yiG%?&oaz`V7m9gCOmSMLzY8CxysvNZi@~_1*@;54ZPK zQ?~96QCwD>Dg2BLU#2^YbV@~)t_pZJ1LTqjGRQMgJ%?VQ64v8Tx`nbr-)r5kn9lZL z^cnOa^gu*MhB5wJxfOn_yqe}bEJzp`XWz6Y=b`?k<`0w;K#4&?mm?{*WdHj1d5+t3 z7BZgeg3W;59pf>u?B_ncz)EWiiT@Sm+rc)zAXgQ+8NA-{3jnRvPbn@RREId4U1J%l z@VQ0@b~#O@pmn6iNpk1c%;t2a%nLsm5$6nJ!|D~nSa54AR~e9rKwf%GZ}ptrwX1Nj zqO#EvEhK<%(~{PH@#nHobrfT`C_4;9)MSn##;VKAfm3Ml2?) z)y;-_V7k51mGJvpQ1DVu2hLo4HURGt(|?XUFmB3>mD_j<3~>UJv`6+nR##J4+iStV z7iSs7*=dzB&)dF#mmQG^Y<_3>dWa_e@aZ@81xoS5;=%_?V&& zs~hrh$7#oD{mE4`heCTK1inN@Tw_bGLZg`RiUJ8M?XnA|=I8BfIbwf|HC1R#R9-$w z`g-Di^Wlor!>I4tX?`q>dHqcfz88QBPwFx34a4qe!H=C83}ntlyE?2GZpT=tWb*EE zu+diNB$u3juD=i(=Nop3!fJBcyLh#tQ8f*P2{5a^^m~EN4ulY?Y`m6yujcoRH zeFz>R4OawJMXqJpg4$JPvx?V3Rz;>YiHK0q=RVE0#@bOOMPXfm)239~)Kq-8_5y=Z zJ<>9+=;(adYTyi!w5?^UujlzCbJqjf2;*ui^u4tKKExpeGIbZ^dnmd3KHfIp^|dbi z;!a!-J-Baj@PKe0*RZc?d%V>GcPPo2F^1AVsp`Lg-t?;*y6eT>JM3?!`^&M%lzm-| z9z`L;rac8P7L@fN;bQu|?Mz|~3CdxJQ)8tTgBsu^jRThSjlNEwKDRG^i(?!T-rvN) z+-c{i^+TznKEzX364%5AhNs7PAo0$oeopGn2G=(Z3~!1^7?tI`*WD71PrkVH5lAXY zWRGukF&xMfdM`28Tp30Nkx@O=>{6bhhywsA)zKs1n{hEH5X57B(IiPU<6}53ma%M# zgrAxm7q?(6_#m(>r#0O{&mO*`#`1)Vr|XcN$pz__uRm6Itlg0DP`7@Y(z=+{j*AkWFafeURkTtj4=DEG_IEt_t7G#byj4>)qG+gmnAcd2c@ zSy_L?)>l8qw`H2OpI5a8Zuov`E>cVMOcOC!w{ z+(7NM_H|iB#2vA@zSq%FOCZhb`x)WTmCUsd_Q1ZpF1=kE>855{;4QOuR&qn+=bIYr zk9CRIp@)CDE#RGqy@7mf3)+)|A^{28lRVR-yuc}!oX~ooE(Os#)~ffG9Z3o0 zL+eEx6Yo8h6l6C{1&Rv3kZA#ate@&lR^llpzZWR`xJy1b`oZkocE-4@Lb|glWPejz zD-}9WZX^Y}@v~%BVjpMeBw8iA?w%)N8OL@nI=bzrzi}piTSEF0Jm38ShdPgcLLGK4 zE>2Fif8aKLTRKvFK;QzQ?86b&D)b?1LIPjnq@nu)Q6KQbxqm&(&1=NP$-4zch=a2w z3byzRr621sb%t^p*s@C#ttxtEq%7b6k}Cg=4`s7Vl0lk#``jsfLf-X>`4GSUR59LQ z0Y?IcTaPC#d64&d2!&Gm@Je%E8Jth?EYgBJujaaXkL;{EC%FZbZPxk~%ywWcxS@B8o=@}^_pR&a`F$t?<@+xpK#=f* z>0v3|z=jS7BerqFm8dhU06GsM>7G^)k_Q@2b!MWL& zF1b}O(kl+qYjFZNLrkuOnskfgjMwH1v0sT*>U!(gkQDpMfD=s zIAp79d-h_N>6G?AiNP1T72Vcx1{L@&2>3US7|gmc;xYyaC!++xZ`rv2_@RPRJCKZ$ z3-w#!27p<3|DrzqV}M}BZeqg8Ze%j0Ci*+AVDZ}kfs7$st~6`aZr=8X*1R3^M>V2v zn+9M~=FvzEW9k80RVqhp!6~f=CW9XAD49fTWqu*j8;_ICm=k!9cPln-HK}=`5*Ru+ zXL@=q*UQ}O_O$172TQ=AxJn~jKxtpFzC$9@RUS$K*r$m|rI3cEP)bdPl(cafBo<|U z@2LKaq4A{q-U+ssf@|=NP}6AkHruRg>ADqM2a`1G<@DK*F7@PiMS9uxAWoyFn%Y5S z;M23TUaSdCf6c4?0{eyW)+68vXtY!`NY9;b)`4nyGJfIdVmc;dAU_Ih-IqH1V*2|w@2yWkxP`8aY>K$&PDe*GVr8mGY)0TI! zS64>&7?EJ>W%0yGjb2T+R2RmFI>tquBZ^c^)uKTpcwPxmqh|a8~<=9E6T!mgFGkw9841znhOSg^V&aQJVsuJ zrc0diBoI!;Yc)_mjDyvX9h^}E#S%eM{0qwT0)YdyxuT&~ z?Lo^yioe8j;5_?3cvfZ{tft(?oJM~aUQdDlpUwz<7&drSt$@>+zmxMEY&_gtCLn_p zI9%ZD()SM$Ty~h<;`{S1GlR0pHZ*P=@l5P8<+aVbQxVHu!W~~Vys+ASF&qQG~<6)Uf_gsG=Nb7v_z_8QE2j!W08zf}$NO`oY-yYSC}R;iNUXhUE~wQHK6Gyb z&a_PmTjP9Yhwyqdb!>evSXJf}Izyp%Kj`?)%CZ&Z{GqoulRImL9b#C#1?f~WVR(4` zRR`pn>I4qNb_Uv$pL_roHZ7jvQpXtWvh0i{+OF9x8FGGNl$P^ z3$IGqy5VqO3<-PxR#9rtG?G!JDa(04RVcpI!5lQM{guoUf=2yAETt8naiKj@)ll%0mljv7)K(xJNR6p&?W|m@dC!AwV zM4;dO?y~${S>eGg_ySLa0fI~hdq3NiL&AZ4u%MBF{z-(Pw*j-SIp0)p6n6a^F9d(U zh+QO=7&nR3Ts@Sgs^JqZ&WR-YT23}Xd86G@nuWgBAM$Sr!k1VhkK7!~3H(*A|N1K2 z##}}`>`Tf3aPuQU^CY;PEsJ@HO_lbgFoVabrh^kMHjM|Ye}ymDpHJzI*>Gu3_k>HU z`v@ET1VQWG%Fb(>`cVwN9i8kLYx!PJFHU?xXg4Dj4b@SAqbW$TAnMa{cg6DT*nX5- z)zo*+OR3V9=Dchdvb%04SPi{YvlvtXtdr%rG0T|O0a@=wm_34YJB9*{)z$N%&>QFpUSBM=x*-^aC4io^j)tFa}53EBP*RGMM zQFx%zhSYQ=L(~J3H%F7nfX>jnKIIyJIpqVmim+s$xC~uFP0*P>)6QwpF>RW>_mLgr zmyZ_&d)av*(p?HrB+ob;hE$PGiuO)269o#ZTgP`Cd6a8DO|4u7-%FU41^rv2!wvQL zE1g)lX#65|Ma{#6|28x)6Snif!e$>lG%A0JH5|O`U}JEuCDma&;DiXqaxh7j)h8I8 zx)qf#oDv^FYef!wP~2}dj5s09kBUtb?zaWL^A#1 z4QNi`BoUzy!=Q70Qs#!Qhq(#0=MG)29(KMlVrQVImzS|kuLa);6h_%<*;gOg{IF7( zFPh?3SMTExYGp240R}~y_n@f}g=>%tS=Z7c1Xsw5#a6uv?*o!6g7{MS0IqP9o7lWr z&y&v&EE`9hVi`JAn{3HKqlvG{uKmvu&lsjpLSyvuiX9ONJtG!{TdNdjAJxW|TKJ`Z zxUc6g@U;p(IaF{<;Z2fd05%AZPa~W3d9^~`ILrp?NF{{l07L0_4!&JK9pVr9lNPxH zfW8m5&!~^zj{^O2InsZAYCyY1YExM(4`MV-U4m$1?pJFQ$2|43@v)O&_7uQe4!-9U zc^&GEH$b;QeJ0iXm^LI;Pq?F2A3Myrb2u$jUSx|eB^q^fn%Aw zcg_?qGa3RU()I0fc78B8E7)W+pw+bZtDn_7jm(s_CEe~NkHYU^;jl3B+=9yg=skD@ z4=fSdrgXs76npwx8DbthDcrJ4h?AfofDqDuvUMD$rluSwV1J=uC2)a?JTIIGLm0g% zB&t0oP}d?m-!@C7qA03VRExKivg)Av+uV|!TP-S)F%jAm>}q?&n8kWOG`PfR9V-2{ z4*Rt2N7$(WkH=5$L*}Jw19^FYn>Y}+y_;X_^>P!p_nTA&(;m7!T? zgBXFxQgtG%Tm;dd;OY#36fV`MQ>M2qWnbZ$&OP7qaxr|@GSrk-jMP4=_=1Jw>UZ)?ZxAl59rQ}TV`>CCfo4lQPfP!L+Km+*qX z;&)*bbENWLM*HulC9ULffDs=^vXSf*c1N%0({YhMLnC`qaPcgke~lS6UtFR^oNN(Qw}sA}JDN&AuU@ZAUgl393BNaK5}+P-pJAJfN#!}kY! z0fKhRQMI{4&Ex?d5p4^Qek9WZv(#A{ukp%6EtwBs> ztBp?L(ndi;x(0<4F~G|o9Bzq*4@E+%oRP&7yK!QXX78w%WKmrZ-J$^)a-(UnoSL}> zyE#6MMcTP@R8) zCG^0AeStMfsVw2AVbYkaUVQ!~!p69mIz%YJel96KT%n}kC#&-2q~U`IWhh@HQPt8f zm+o^jzp}tKNc1`O-ZvY{=9SGusY~>~*5?t#V&aCLVgC~qzEq(Z{Vr85z#H2i>qavU zFyI#Kj9mc@`EN90#cyY9;Qyb7;uoYE8w&nk#pwScceb#BQ+li->+zVsUH3>t5EU_q z2|Pt_Z(qB;U`%GygP4}f$w5R(k`$fl##3?)1eM8aA}OSy&`wzA%0N_|;`EptH(|b1#IN@h zciYRh1~sq^N|;5V$bGfYl|Kk59L@j2)lT#vceT~QOZ)wQ$}50ieFYJgok|zjm|I-w z-?&Oj!G?Fz{+BrTc{HHyS9sahvT|}&A%-Xle{uaNp+D2$ChdzDe*TwxC}O;Mz`iAf zb{0||4pAK(%BnI}Xr%7PSS>k;cZOjj z*Fy?3jD2$Oso%OF!oayZ9+q)A0wEXZqsUhyFnx)c%O#UK$9r5^EZ2|<9JW8ZE4Ohu(BOQ`VL z!1)rqguG3lth-PJEbLj~^D}pL3L@aTX1OY{M#MQ&)OZ@~9s4mj{x?YuZ2rn1Pt1bB z4h?|Eprs)$gxErD=X=QJQ~k?XmeLsXlMR*V4OjT33U-7nTiceDnUhhp-Um^>Sq;)6 zbG10<@QZ(;iP!8P!`O2?3fjp)JqECL?9GG@G#_ZHVLp)JYWojgDRy7hgmf_R+cYcS7mJ29c~ozeZ8u3e_BX7l~%$ zZxs&8)`BMht#+cogJ$DkaY3_zC@8?+XygHtp5X zRGqMfa`U@YIBS{U>9N}em=!>gcB83+5xD!1|3KgZVS^|pu|DU+Ng*{LF&A5g<@3Ha z(B*rF_#1HAwU{?F*@TrOMOIYCsia@du9*jg=7}QsZ;1IXFCixNDo_$%H(G%-{@e4v za~`1rezZQ#@^W#`8U7ENe1|&he~8b(erV)8C`HGVha7;U99Gp>b=Y?R&)*n^Tgn?MZLbIJB!&O@Q#h*>i43;v zBR6KA#}!>m6?s3+E)|uBLtkgA?{)IEr`fitTa8vTYipLpWY2Pm4a}FXsue85#!3vC zUu3uX#$quq@DcaDXma9dh{mv zw%wrl%-28x*J)-lx$0OwLkV%XFw?I1Q};r4FTQqJi|@r!*~IE8jmH9VJ<@|Pnj^f( zkMgqFS*ox#U4K7AfkkEyZN^~i=#Fz%0}1&PATe4Y93W2SmVoa2vglRluHjOlr4#eA zov2W74je*1(IU1^Z{+--rVlUucXp*U<}v8t=IY0wv@GeMvUdxwGZbxF)n93Wl}{CP zJJpI_lJny7L}4qRsG=iW_sYyl*IC20*t9sQ-L}oh0_s#)eVxP+_fU^^>rt$}7GXmB#CBQ{wzk?sHkR z%GRE(OFnm( zruE{No9Nk}n@X-H*_n%nU=(qu&9^~Bx88J zv}9oNJZlrtd`T~G!#s{}q2E>L@P*UvR}CFlg-2k<=Ci`B|8}HtY2PgbrB1rD!VGoE z-^DU$fun26_?tR0Q2H`huYD?9Z($(&)iN1UzF^U5^5=|w?HX#YYxUBMEW6cN-%Nm= z)80j~hZ`wW*psyd^f$zByc)!s?=o)?o_C*aSvE}Iv#$ljQt3QL({kS2tF&#dmZLo` z4cqQxWrxN7I6K$W!#v76-(?Uo9@0os__C(jIp`v4-moe+2Gl&%-M?w(ja0AzyAXSB@=lf#UDVfg=E#(opIoLSBbf&q zyDWsWXkvQg$~mP_%lVXrwsKZ(ZKe~7weJ3Q6MY$3r~IoyIq=Yo|244O9A=y#(RV2S zX8QubC)g-0ZrKJNUsr1{h|X+=e`?;9@LzM*PG4o#@2? z!}yN@2KFBV3<1F`)-O}YxKPmepx{~8V$O;RK`p$x&V_J=la#%ai5%E9(Ki2Wav{eMfF|8Kc3uYrWqe}YzkND6!xT#r># zd|{^XyF5~8@j$@>tMM*_t7PcIP_WLI0sw#uMm~4}tNU#1mj=dKj>A*AhrFZvQ8`Bz@ zMho52r5qv21<@`bbGB@8KMN`$#43xI5eQ=@W7_AzTE_)Vptp zG2=m>dL;y~unCJ1(NQBV&P7IY0bd7weQy|_N~g^5QqCg_;)a5D!;-TNd9zz5M!fjQ zA6rR`%`JPrSoEZD7@Lo3TCiC@%{+iNFw92^a3e3}W&|+pkUs4sbYtaqO(>}0eD%CGw(}EIuHhxcf#n-XMvXH9xtQQhh$(8-$tti>$6Xb$r zNU0lTPcT65lDQ-UIzY!LN`WX!(7eHOT;MzV>C17(_MMZNj0fIqI+olvqajC8>f8$4 z0W_sW3P6iPh$U6%Lf#5;EpO-ZN#`o8^Lf5sJVEsmTsVyI6Rr~SD5~t6izl$EofBcR!wx9DJ_&yMkXx&HYW~l$MI1|oRZw=h4ie< z`3}J8+iy|`PA-zj$f8Xj#R*@priVsKONoU|b_^x;V5$ zcHihaL(xBUrn0=d`SD{5%V!O3qtJu*)G;$D)?UwIfE}-KVpUyWK`QTNUF@bm#E|_0 zW80upO7`-&P@U0hg)zf6w@1Rc;yq03in0Q*o%;RT@z(s4wG3Nmy`1dO%DWotxsnP& zNG>w@M&uHFoZ)W3%8|k3cND8ue9Xi27m+0aNAv(2Uyfkc$YvQj1#8BD!{Ya&;uP_^ zP7?3WRn{`eDXrxWU-;j!WAoaslr#rX?)%tFE-hpX?mzL6tN3{Bkt7^RzI*(I7;FuU zU2xyQI>ad4T0~3Vkb zU?F?w`0}B-W%=2}2xWxhbI~la1vOqm6`xX=WA+e3953rbeM|6z^-EU>J? zNKjh0HKKytFcb+IBz*@HZb^3gy$j9Kr|`C?RvP;)YcNELjs$*?QHJeIw6XwjjT^6a zkUha52qI(dtuje?al_JWP>$E86R+ftr+$;hB!&coE+__}DHk<5B)ngAri6`BVuaGH zY!LaYxVuL#t;I0Z@PAiXPDbD8Gq)$9CzYe%#ryXLv#9H9BGgOH9Ra-^jE47St9bnAB1Ew?~Jx!RNleO@xdaYYZ$#HJe zdPRAsNS)EX2TYx_Fy5!U)7)*&qlbN>?zL7?mRst~*nP>rWR|$NvW|y>(~XGhJ-W9k9`W4Zk__yEHlPLh(RGE;e+U-BmxcWrHNyV zC~j$7oyhxAf}c%*P_#`^ANPLfgXVCN*#yRyG5ou)*LTl_fU$ z;JaabNsn;|eXftD`TXCwKV=EiPke9*qkmGeU&_eq!^=OUO>XFa#q`=gip4%}tAHPB zQ0(o1DTz3p;AKLiYmSS9;0reoqkB|c&&suc)eLdjSHD!U~m#d;Zz_4w8?JIdBcW7^hwE^ z+8i-FDjl$5!KO7NSqv9ZQP*bR4u(hcKG!a>B zCKpiOcPcx@>>GM4P1}%T^CUeY3_%odWZ% zN?5687i<)aPV{aJn8LDMu(V|rbFg8y*k5h=RGEgo+#T#u!yCSPt-xztS^_E68H}q~ zjIys0A(8*%E3B?-$fCT2_Zb=kL&CO(s5)M^b+v~t>i6RQ{+^2{V`8kH`8ecWhaIiy zYORaz(k+`?_{ZetQ^X<0rE7oHa$m`>m}>Kk#sAV+dIB{w6K#!Cu92~q@h4rnbjx13 zi5&42)Yj4{N2PFvW)Qs_$1WqC*zZ28OudiLi1}Pw|LfbEMTfG)sCT2jb6=BZgYqLs zH$JFsFMfQbf-GCI?rPC=g))=6Wl|R1XL3lx@4nLxab%{bG>`|>KE>W>Wl8g7pchG$ zfyGyNF6{-56TcN0%`#DLa(IJA!kc^)@ow5%waE6IyvLc_j36zZt4StRn9;cQlTiB& zoRT@*7hqP2cZukQz^Awj56m>Zn=hax)?5A?surEzM3|`Tl#D7`-i)Pmz7l5zmLX?4 z`f&WoT}cpb7f{l@)=%x7P!?Y%m8x>8CaGg+tR|~;yeK4EUTT8-n^P?`S~`-GKo>g35wP_ z4zH4c%51k^GhO@NXAG4mRh96KGr({|(OHIZ!>tZOI6(WSF_oSXx|xU}>^ugjZ)jWZ zC~GkzE*9Ur%p&RPNmetcAn{^n{BV?ZKGx738j5zmV5*NVC0vrtQLXl_d}?v+Sk8W`x2^h&N?swBK5&c+h0H+IrUP4WZs? zO6C9N>FP++=wr;qy;q@Sr`h#>AmvVtF{!P&H;ET`tztS{`qpgusCHg*io$DIslUhr z8EM%Ksy3ys{|ni#0XW<1+NsxMt6n4|D^{wD(rV;IMo+g2IQNocJeuh`yE4G7EYe?j zeQtP+P|WnS>?6m6%ZrHzeS*Y4dgY8bHZue|6hIfIpD74dj{$h3hT z(KamIk2?~DUi3{GbnK#g(QSMlGab4@zJdH6bhB4>OXvx@wOvzesUJqnsRzFo4`f?m z2)38x(au#GOST0$vCS&{Aj?s<3qNk*OXMtUEKNnSeoDUQYD(b0kS`jZX$Yz`>*}X6 z>&sET$|pHZ$H3ngO~Gd9R>GG)k*Hqy z4mohP)BjK3FBcmZ&zJi@lAM1v{i6S)=@+`AmXri}9a2zXJt{;80~)m^&=5T$+ckt&Yaj~?yQJ@Bq3Bq%tcRAqx&8||67-|mh$&?>)p0K?Jk zR(1lfL~0(v=3O2YAo3kJQnDtFITdT<>TAMDz5lw94Pk;>L!sZ0N>7ZBg9`*W5Uj|a zhIjwLE{TaD2Y@@cm*L2OFTFC2emeqK;BQs?r<%;gVQj``$UUVx8Ua=UDO$I?&Y7yI zo|Ln`?IuskKCJnQw=^p`DR|IeS0gC7_bT~YyF3L8?TSZCq9lr>cE*>i*$2 zk=5j0X?Gk~^b9)VpgH9rXAfS44v~ZPVU4A$_dOzFJ^pK(OeaA7(aN=eqGWBb_P*fF zZYmn0MXlaG=bd*f#YZk}f{~w3Wj}56ob%w{#&kpM!V5?=P#g6A7;F9YyvDL|C!^r) zYU1;Oz8C1S2oVkIDKmW%R&FR9Mpcn*NuAsGR3$id%y8j>SP$g^BZ57YE5gvK?@PPy zO%80a1@bp1-)c3NYYOO3Rb6d+5)p1CkM^dGA`7>yzyL@6t5Nn*i&(^k;8+PTd0s^_ zB){tOWQHKi+YFN^sLP3>)o}d?gKc)tfg@X;pafj+K4%XW6WzGW06BRjNsTI)5Rs|S zqP}H&b9eWN2niO`RA}cZ>!&4KUQx+nKcNJ`(FdS9%Gk=8`>kEFD4Ov*>I_OqYb!a~ z&_Q!bysYJeO z?sVX149buTjM)AW8@BS+q`4na_}9X}G)Kw2nLMyWfun*~dA-YCSIf2iid78=u-PF( zH*8h*LiR1ks0UKbEh+KaDqzK;Doz2rl5NJP-lX_xE%QJeom3=vF2*RWstXa%-*ow^*lA`DRr@*#*wQ`1{U?R|G7n;z@kfHe z^Wd+1Avdcb8wclaA;&-Rh5sjpxoa$t#6TT+6ciGa&o@Ec0O~kWE)h;h2faW+HxNYx z_d#zVoLLR;Pn~xu29WExBBJm#L9%8P!U^whevY70!ngX(`Wfu1`V|r$Cy@-4Rl-3I zo56<9y*Lws?9q|o+5d+xAtHZY_y5M1kis7dCICdQfkelgK`x>%RUtA7^|u4+r4j^h z)nnfU-q#cUC_K3VhTL4B&p5EZ52zOlwOBW>*#@}LoD3w_ib`1fSrA$g3b+k^Rt0#@ zy$xQ|^M87nxj8t&Ce%htUvzD7)Np!P%4=lbgj;eDk@Zv;BODYgeEC*dS4%ymVN2Y> zr9h74>gHaM&Q{epG*qJH+4lYn=DJP1L6td?iruCuh$4Yr6 zUgRTlqCWir-s(|J%=8oR@$7YslKR;m*uVX?9GiAq!lM3&y zaM0j8W+!k5tnt{D2&gMFsYT^8sc8b~K#uHUqMpKH4r!U zcW#1tgbY%4pr<`s0yE*+ecB}aaa$>-jCXwx1AGc+hB;JP0-0AZJv1Y|o<`hluHn2* zo=N!_*T2`XNCQNX#B?n8y+e%-sDet z>2o(zpfZR;C~*6fFv1SQ>{=ndp>CxQKn6s3G12E~SO(+G{=H|@BHpAwn8A`X|4Dw2 zZ?i8!lA{w}4fnO>h`EZe?+=A^`>r92Xndb;Ch2Ll2~}^WxSK?kx8t29BvnT$bbU;P zz|YB_sbv({@EBBkkjBiqu$3i#+|4?V`ivNC)37u&_jeIh=JaFA9oE}_q;4U)qSgF3 zm*0a`iMeLiv7UHb8_v-}GQxP{krZJ0q;jF<9&P$1?To&JrfQsVk#{^~gnaEt!W^zB zW$8=7D{m%o<#nd7uL{KvzHaLj;9TXjIsv^Es5?3YzmK{84RHDrCw5h=2_J#C;E&*= z_;*h=HwQN>H^)*!v(kbHK~FkH7)}68bxD_-SaA@8&j9`#Nm%?K5mK!2lsvh2-qE85 zYgN>lq@sm3>5bLe&)7j-T^%En`5%D+p8~G2$Te;)f@MiP@@awBu`3(b{k&j!G*G|9 zpwlf3_$`If+9(~SNWv#UU#k8=_H;_N!vAb;aa=-dcN&b!w?dPu=&2hKi05n4o1NUB zn*Xk(W9KQfkS`EgCVZ@cS19`9OSc?>#+GA(6-6TTlxRsUy3t$PWRl0$C;Vp(do$dv zeT{3)u(!>Zcu7Dd*62V6G)GIWLONSphpZdFdsUyOC%-2<3~KG>;9l~!Bq(3VYyw`m zpJjvfRW@h4$r_zL(A&ho-Qw5qW_xVF@mlV$KaYt;RLb=NZ{-Lw{W+wd4zQ&16(H6v z#d3=|-^ppoKREjA|drs0x^me9JWAb$! zbL#59S11{kNFJ_V+S|urF&yY~Sx0H2v7BwMco1?uwsa?AYO~R*gj*zN5+zw!BJXMa z8~`(l9*W2m(J9tXhY+nNMUy2xTS>|=F(Sbto)=`jwc(|?(vf)P*2{^Wial=1Gs%ga z+kp@lTTmz2)FGin;K>lUI?Y-~7xS*okntpJOXg~>vm(>&@&wfMH<9qmF*Cd@oblo< zl@G4Y{%cxr8**~}zM1_IX1*LVwL|SlLXf{}f6AzUAE)3an*MbDaDz3Otl%y$u%Yum z&T?{8F1Ijx`cW3R`m4{WZ^R=HbvBp6wz3>mjFAHF=>stQ>FCO>T?=}H& zu$ufX?7jT%DmH*}e1#%0KG;J#+VQtJCd$BQzvIy0&=k8Oy&33~2ayEFrGoW$>lt>i zAw<^;=?9vP2h?hbfcNgVHD|U+3T|ln86yfxEGnyR@mi?Oui&cp_pzw$ro2P&6rJJ( z6fJ>y3ecUI&-;h2GWq9aA%O{!?LZJfKdcx$x|5FsH2W#vQ1 zdEk?1KJVg*bR!eIn_#7$q;Mhs2tlV1I1X@{@22SiPAs)tlnH3TMLFNV4T3m`Vo{eIxU7ULDeIU*ZXrxO5TLuK!W2Xad6|!Z=*jR4o+59 zZnnb@qe@^^X$EYLKgAPLtah#lN5LmuQA|_NfISou@EJzX^D3vS2mk;)LDJk6uBO_; z7cAicFmlA=YbV@VkDKkymbrJAy1TuRuS-*i4QlM>QH87VDp>JY*=5YtJRVke`Rybn5OTyZdMc1U6UxO(A%vGhZW> z-%DBKj)yJZ^Q*~i10gmL5i(B__cs052lb~)N#`Qq6PrILHoLr=YoxFfyW(cO>cVZ{ z*z6aB1e-y56-sJGIeu4ob8KclJak8|NR){JR2Y@Q3jDc$8>`;%6oJtUsQa8tu9zqb zPT!UlWT*4*_%8ckJ1-~zk)TJs)`a`DpP3ba-+1%&XA*zjG+wTJIyb-Dx*H968a1do zKhX)kXJow+RrO)|264X-az>A%sjpZm^(o7bSQsuQ5F;0BRK5HVZm?zj!eR^(@6CWN zFm=|FHN1U;HRHqTm%-3Z4qi(R5`@DE^Xel2@;xUAM$B+Dt0?okAnEs_&(=TNt8{xU z9pbk0XH?I^tr+5Z#g*+nlJdi%H&j(ku)>a=j=0zvXx!zo3fG?(B-$O?#E00-lJl?l znn;y(G-P5XyU7M=Y68mY0*En2E^R*#0a?C&H4SS)x;Dr4YW&PNJpq#_G=_C32q#9S zp(xI^Q$%6?Wy4D%j7;ji^T7CYkg0+|TBz3~)*#QESKQvlJHI#%BrVeBkowlap{Sn)rK@x)x6NkTfCS@hz3OvIW{aCq&)YdL_&wa1 zg}ewP?04^pp!X#;aTjduvsCeOcJODG^l)G6-|irr;C11jiE=ka3IVaF{%2iq0$ACN z*}#B64IF7;t=$LAcG&k~i=jmLs;U^c1&y-Zs1n9hU7QRZ5V%b_LQL9sQd)`&64-?q9++yIOym+gU@v@tt5r7 zIRq7%RAAEnBLh7HXQPU|lu`Ifd67$I`}<;{CqZ9e!yUZ)KIY=%m`O5BAalkEqb1^5%M9I|tTwT1hg5%+Fa3?C5Ir`c4tH-h}N85 z1vY#k-Z@*{SHJBlNt0{;+7rdj8HTaRtyTc&(fbQp0>jR|Y(&He?CwRWo?(#1V5(Ec z#^u|i!Fkcbo7p^ep1po&+hyUi!~V!uv=%bDz=~-P&6pEhGd7Ymo+9WZkD8kA_^sZh z;uFyvV(xW4%qv1vZ&Wf`fuZBj!p<~&e_DJvS_(Y&P2qvDY9qUM=oL1;~p*lk%q z09UtT;U~UoDWTDQM?VR5;RC#z*TzZB&KCFgp%7S0$;h2qArye$Rbqwt-TY@gkfXym>L=W>wNAn76i72hzK zg zC|q57(NsQ4KV_iJ_*9}Kkjw#<{eV}faJ9T2D+JRT;Ctr88F`$#!c3?hpv>5Q4kAySoRsH`(Xzea^l2z0aF}d%An3SM{n@wW@yKgQR`;P~?(??W9t@ zuS#FyLj1gWdWv97mU0{SMk@;xKHV)zrRtSY-xO~~ZRW1_$vM4xFVDqWH!l^m*jkbT zx@1N-C)h$Nh6BY9ur^5!$nA1vKlDIP>Gmz~R0n7eNj8NS*Bugb-A%7IRY*1|nInSn z2fKT6z8p7MI(jyd+_)^7{iGEedSw?R5PUnwN+V2%gE*;O`RU(Vxj{cB6oD(XkG5?g z23nv%c1barz;xcO5gJ*BIiFuQlA50YrU1=QT#{W|JZGI(P)zkvPs9*K8>0KVT@;#b z#bM=TvFwznw)I73&@UDP%aNClvOAu}Q90`-*i2jYYwq*=kET+w zb5>JJqSbP6VO>S-HLt9*2jN!?scq;x7!>-l;b)MBlT!)1yCaHSXtr*UnA z?G7y1fr7d$*Aq+ZL_?QzS#jF@(x%s?2v5je&+TaG7AWdoD4C%I35!YLjEG4NLl;X3 zl-0i)5BUfa{1K)giVz#qSahwjC};6y*esmYd%8IsjBC!(Y@ov`fs16$1G>3_GF9+h z#h1~Iv58W0B8e3DlQwrapq{OZ-CVN)lEehuB0FHP5`HN3o?O*%ta|cXkO@ z-i)wzp3V_Ce1+1HgZ9&qwk2DtHY3a5i-nzBCV6tsMufsT?R4B`mc|q*cqQC$*K4A* zd~mNK!wkoad?n{*G-N`1?BfW}aqh^cKQm2)w?mycxttlysgoL@$May#H=yH+Grh|$ z#jx19Yy_(MVrMlEO#m1sKSyT?Z(k{A>jc(h#rUjt^X7pl7t}OqKD`gYE8h%v$95Ond`Uv) zN}*H2i1YR|qm}9m8fz7;ol~k8z4O3Un(4E*wq*IHLm@w+PfrlC7+wB$Y8bqpe%*w@ znF%Qipaqxl#GJA3i=*^j+`g4Mk-5Z0U&|xPcKHF?DMv-V6M2Sm7?E1 zu*pe*`{*;WEy`ic63b1sS!6SgWtCVq`|I~_tbd*Fu#v4pn@}7`5i%^zbxs}ODoCqA zosF9lj>AbD^sp3stW6`_wYI=X|rAtoqY~uA)M9Q(q-rO*m_Z#2jd>s)Wy9s6IvD{YQIa@Vd8*U!O-n}6z zffI(@qq3n+z#mN87cx_g)-s(5*AMP6RR;Wghx-mwrCXoid@EUFytFmk%#K#ouiNPK z-Qm?Usa)3QTkj_Ap!;op$%SM0yU=|#gn!Ae6JF#ba~GAT@g4U!UX=RuLwM?O#^SKe zp~a30{Fvrai9W?y$0Q$Udav*M3qRSSG(LS=fcK{X)Y`(oxCJ_fdi%-eF9fIZo-Y9O zLy5KdIIm6&M~P&m?KaxGrA8~y4--^Acwg5N&CC@QZdbYKjg8Af+an`_S;?vo~Qc)qmFElAV;KX;B+d~nsa{F@s{ikGGo@yqn(0u5}(r} z1G3JS3gVflzz?dy?S<;NY^^NOE$;yo7@QA6MqPI}=6r6fnO6Hs0vXjVzOhT$EhPKf zl4X-U5$l^NZ8);Yav@$m!_B@9_@_L{1A8s2W{M6`AI|O-0%K6z>kP|!ZL^zJrm_TL zY^Rd?w7OXN@jLw9S(Ay2OT%ix{9`XB*PvQXe8I@&5pH}9B&NY4|xU@}1R-Vy_TR3yx@`YwD6!-K( zjkKKBUo-@Fl$suwYa=5ke=BHB6DIO2YYso-JL-#FprsP{(o;6`i~jJf)AehjW$0uB z$qk$$S2nAFIYD@<`22#=XT`ur2W6p!7vi|EfHxfzFhyF6=v5Uwq1^xN$X_s+zUv-IfWj%*8C$PYS&ivW3rf$AfL|{&^t>V_@qTJ*= zHSoV(@n*l-6?dX=9XKlPkme9M5}=;W1dn(T*M^Z2D)Sdj{MDHJV$b z;j7QV8@1#0T?%70X$8#z_}*hn1s(CdocUi<^-{mDBoCRN8#+JvD&1={t$9dXoJa4w zKv|g}+P6KX=g}*M$sg)B!;kBKI!;MQSY$<)BscN<e3xdP1tfWpqygf14&gBw&` z+S(Y>bBmCZllCW%i!s%Z`MJ6W`)FSak^BpagX1ID3~zM*G)aTNYXs>-Pi^w%cU#KV zd?l)yBdQ^jMWIXIf(nhsBF<#jE6^-}#D3uNLT@NL|Ry z;d!655Svdz7Q>Ps0f$=`+U^Fk%HGQtC)^hVWRdo6$+}TiOO|U#64i#cABQxTur6*rLs;x4~&>YG7}0dFco#Vw0IWeD2(L4A>-OZ#0o)G$tPK-DXad z{^g@H$NzG%y^5W-%qe1q#c;72O!)eLvk`pjomfdz+R4_p=^p3m7+k7uy zzk?_6RhlFy2w?YUIZ($Ycc?A@b^pcH-a3(LStTm7x%m6_WIos}!{Oy}=zW4E8WA38 zsf%oa{txxr&2&r9`Z_DedP3m|t^Q|HaBR}=59dP%!TEw&Jy|R76(Y|!AMwBA%y!gQ zK#^Eo9*MIbL}Tc>rpxt%o=Jx@jCn|&gT^{EvR&0=6F|Gfa7K`?xs_Tua9~eRw@%8V zQTT^I^phcCW`fEFd5dQY!p{7f$`6-fn2w*Oq5BzBYzpLQG>)vI+-X{_vE`(Xru$}c z=H^)#DH>uCre|@wSr!txC3yC1LEwx#8WEN7`tn4xym~+`0KNO;tbZ#F`0e#0Z3qRpVkNU*iq#v;_AB5 zYU|vW;>$a!6c{a8hpaf>^3~4b#9HFG=2T5)YW6VcY`i6-*dd1DBGOmsXg!pB^y`YNPa~%R8uW+ z*!=>uWztm0u2RpJhhaZo3-b<_lW_^@)}u2H&s-+uNYbHot=~BqiO{&oIb-=4Jg-rw zS||j4PgmB?cdk(}=vLE~U+FR~KVoepZ8 z;}%^qlN94lR8wd6I(44mcD6@<*vv|AwsHh~*C!Hdb2%6E`9`T$$=K|Q%AiH{Wj{=~ zHDpFOCi}=W@i=WTcz1={r8t&1lrDdfC;rE|qpU-J9WNUrYT8x#V03w>xNCbt{tecu1Y{Xk=d8vx0t24G9GY*Dzu(6KmYOIO@-gZjWq!Qy*<&g| z@b|dAcm;6#Q+~Fn7J~_Hyy#c9&$?|gTI25IOTLXKcq5_=iXPs_;L*S^r$&M{ae(G8 z>4AF2cQUrm+$0jVt-Z2;M!_HEmt5+nh-4qCyXFqY*bfHboX-Yd@^8+I?!cw%S9r!Z zgrU^N+%MOR`YtJwXyNi93D;gKpe+KURnW~9uo=NEzo z?~2O?ZZ+PTyD^`=J%a#R#rmb41(h$^F^Ut~psTMH$1YG zpy{5M(X%JHx_oXL#>e2DXd8dM~ zp2n9JhezA2J8qQ9U#T{=*H&xSnl>sH3kG#A{m}&@ya5o3Om$UNieIb71&jfyGqFR1 zqhXPDpV?q&T{ac%T&7q&!~lB>c%v=%BG=I=Vi9KfXE9DgCcl^gp6D)iw5~8{0#Pjv z6O_UeO0O+9TuoCywi36Bca0}~P2gWRxlrun+se->oFL8^=_^uX8MaxAWqQ^IaBY(n z3izs}6K5^Yv$jry4Pol{C%N}8;_@AJkTP)24cnuX3WS=l<)obW>kda2uvJBCewr=( zWWEwIe(|FSi4$0;XOH?%Ql+H*qEywY4MiJA%zh)!brw$iJvq} zXm|XMODi6U(`K%y#)vh7*DZQcawWOVKaUpkL-mL{>Nl5n7))p_DU4y!bl)xAnhe_P zcTkHq?faSKo{|wS_Y_T`+Z6d8H!h`$3@&d*R0_tn%0=N1&}^LqBA}F*zWe#m%EkJR zy0@N=2+ECydA&b<^?J}j{Ar#?~@jlvqbS{ER3L$31nmJA$=H%xHp z`WF#m=v~3U@$3qWg6Y@k?E+&}X{QKpxY(a0K5IQ$fZr&R)P+wp7$61vA96)+Mk0p( zifh|N^_XU^5+bTU8i2gVZv!2e1(7jhQiM?dprlqqRurbnMe)>SvZ z&)GrxoQ!;&&fj@FAkIGTdl%GPj#?Eyk08;Lji~HC>40EeSUxR??;+-e&gY5^#BMSx z>-j2F3ScQ$9%aej#g=g%9vCbuBU?B|(m49sZqsPG4!(VI%VJ}bH~*c)QDtF1=z*&` zbS3}XT!x%*cqv79VZmSu*u$UkLkUV@1F~#Yc~rB9&~T{oBdG?$3^g z$PUbXf8iKngLOFo&^^e-?Z)s{)Y0}{jNQxt2C%T{L!`XIhO8_Z-?-7Y)j{mD?4w-a74=3Rt?ptY`l)SbDv zB_NLE=Y)2T&Hjf_cH=P(X|IrG3K4h&fg%Y%Mf-VTqDCQ*gj9tg|LF&s4z}>MRn&4m zEbu$KN}Z2tG029am7Kg~^w>dJx4jQdSP;H(mJpTrSsZO$5S1l{jCwq_0h~0hA~BhB zxRqif$OLU1n#iqup9#sh)t++=KC#)?PXXx4KsSd7-Aj!*|7n2y(f-kWf`P$Zc6n8= z=<iO70vpGX@HZ%GbvBC^VzX=sIyMS3BRV}%)w$PGUs4JTb$sqLZ z@hNL+p2)6xJSuil4)AS`=p*H=mjlEr_jFBvA<(y3qU_wWS1GA-{IGG37gNwvCKnqH z>MasdUd)E_8uS_aROw)Z-sGrWX{6rZhA6J6Z}uT9R<;udCCjGJ9*xp%L_$GF`6U;J zGK}cUL7vVy!IJ){cCpQr%vb#tKaCC{8^va}XYhAOG&h(9OZy0Q@TU_==O2IsUie|# zVOgUeIM%&Lt6$<@nm<=qw)Pn=)~F>;B?!yonTMp`Svht{l&QxXiQm`mQsL29kWwOU zJ5$q~y0yynGREcs>@K=>@pNFzw=N1QI@Ii>%|aL!f1f;BYD??bDSyLhyRS{D3GIk$ z1XFLI6vs}|s!r$*4cRN0-TVr0op{`^obcH&F5lwNv507o2CAfB9()TTbdm;Qx?5kG zvcEp?J)I0PZ@OA=R)=+L&lYPUK^Zo{)_{>oPhvTs<*~jW7@_% zrRzh)M;R4n#w1lojLa8SH&&oeGS8tiS`4_`&n{Ah7LAUSl9g;V5qd6@;{N`1{E*!; zx|v?MI5We$T;K3?XVs|^KZejHb+PA#7$B%(@v2^UL~ z=afGC^>JXs3P&>3X~CYr0^s)GV|n7Br=tY>tuUr0uuKvvkO3ra5anfb z!}a()wx7mp6N7QATPNN_iRp)H=e9UxE%RF|ore>grE8SujF1d|Ao--@tR-05JUr9# zP4)*v#PHvJ1~^v7q5}>Xa4ebyTl=ObG&O7S-W+!$yxfmU^k{Q;Qm(?q( zVVha~mVG|M6+eh?A65KRwf#UR<}8zdu02z$WmV4O2w?d%BgO}=)nj9>@ESwQBQMQU zX$4ow&gp1WY!u)?mTIz@lbCO?Vr2uF+hzsr=$U^Y3%|hI-OWYL!sTF7DNwGL0?Z6%BfeEIS4$N;Udf(&r*0#)k0A9J}$8 zcr~S7_{dmM^?Qt~5&u53y7l0Z4DGmda!a$T9($SIaNiGHLtsu9<6 z!uy3urA|wssIA3fA60Af$;7HHSsoagw2%Ru%`h?7$YGzqOh1&8`CW1J$*p0Lp71%R zz43PA-=)5PYRY$P!;mUL-Q>Ur{RIs0 zrvf9QR={}@bQbhKAN`6_E0dnM6alL zw0XOOITv4szyJ?7KWABz z$rQ~`h6ygB@@P@|=;>mBQSxxv$zFqeLA`AS5=!piITL&V+h(xGOu45#kXdWVfi+Z5 zH{L%O*0~h2@8w5dHF`mV`#6zwpd#v^uFg z9Nj}`na`Iar|t=FYq%nMI!y@LnZYEG4+`AE>fa`&Unq)C8~{Ro(Cr^QzfytNs^)?e zZY17@_oQsuqS7-wAt3eL34$u>?|hRt(BTEBD_;*NFGWAB^bGGVKL5f1BO`IhHmZ^d zsTJw-&CEo=tPRu~uHvtt?H%mfdmj9;mNZLgpAc<)4gSC)Z?7VJoNpm4eaHF`AE0N_ z9Rj7?oxHD*TMo!OTBga8J-JPxz~g;Jh##NUfpeXv=6Hw+FT6aua?<#yBE?Tj**1Qh zs(oagiSkv(kkOC6y=4RoQ!nNVf-Jkk11TZYD1T9cu65rpwKHO&9>?S<_tpW|iU;CJH z0}BQ0z(Tb_AtUhXLJ2+t~{J3Aeqd65Ci|zSx=xN;x^HJfo1_C z_#?;!h)b?e0R3#DzYUg$i`$3|q@Cdb{y((N{_n&sj>-Q)-1=W4XJT5oxZJp;S3}{Z zoY4*ts)@*^mqCk@u*ky`Of@Ekmem8U=vT(0U$6&*P)U(oVS-((lxd6hy9rU)_&!)S zDjM4dE@jXF6%(QHfg4nCguvb^h|j3MAdZdUNcV-6`^E}= zDvohhs5*N)Xm)oxvzHvkRUY;`X8;FqlO9eOCsI6wi#~>QcDtKOh%EpuB8iuU9LabZ zh-3zmK>0(HQ0K|=ZUT+j-9KZ-ZE9)+RFeOf7}lR5Q&K}B0A5;v;{Y9EVetNCGUaVx z9ANl=2A$5XIJgaT0o8vlU;?W60+J>DtNH6c#~cb+#SM=OjJ|-yZz@OvlLR9?0$m_< zUCcoUbb;u<8)tY-L3YFQFZttt)lJp|(KKNxfT-edaKJCWpy7c5yYQ%qL=J0Ge~J5LK(c_noYpLiNOQSVq;$>%n;7YkUNN=H_C10)tL{peR6(`e`g zd+(H;1!%wTkS$D0i$Ag#e3DE)6`-T!s082VcrYOkwKx|;Gf+yZ(PAu3CAm=O85G&R zY~73tXz(LMZ&UJjO?iGgeQmu~?l{=JigJA6e85kAu$TjPh8AM_%yfD*r{ZIba>d(w z0%(cVVyFNbW&6Kh0(S6ceZX_Q7ORAOg@>NZp;HS`VZ^2(KRjh~z9~eLz{}#{kg@#H zI>y}UyptNFv|{X7iaM~6v%(-8a9K-@59ZcpB;Tt>!|N9;1|-~dps6fFMnDpq=(8%7 zHba&&&P5Q5edPcB5c{J4+=uraYFyM+*VqnM60tuNXC1_<`AiK3$G_5#Y#2@n`~@%v{H7lQEApyZ$S!c3i|+z1B7-L}8DV1srcPJ~i6OEHahV zkrin*fdO-qdkeEQzBik(e$DNEBS;5IyezKc*YYdeza8u!1V$rkaFq|pbXfmV2m^r7 zl}0Sa<{$ytKU|+bC_6(j9qn(68Q5Lov?a~0Lyg)<*4n75Qq>7jv|`<+9-L{lfKja~}xucUt%7>R$lK1*x|x%vPlK6Y*PPTLYbz0a)2 znwA`+>?eWhwZpAGd&bgrk$@tfGM=RJ35T1L48uK#9?OS3QU3K3;3{TEGQ?ofzx@W6`aX?Ch&Z)i#;Y7`aG+%rIWo%ub!sKERjVC3H3oJrP{e zkO>SsjCd?$+^{?6Wu+VcBv21I8 zomeTCI{Pv5Q>zB&6kBImtrsea-3+qm{v{a~)K<4#e>L1k&2H8@lf~!(M?HC?9d7H1 z@7M;~oDHY9`jXNJ1Eb8^>Rr20MILl)seAjAaw^|-wS+vhHpO?>Nrt3djA3dorx3M@ zSgc@{(vaQO7y&spqg4jk8kql+K6O=A=Ksg9AN}nhjsD0Sn{%us|24x6P@g{)%mp2a z3p3Bc!&99W%QRR9Zwlu{eHHk~_A`Zwbv;j>y|R z9#1lG$ePOX(z?Ii4b!%LU_P+prv zkA~nAv2@gpF9_zN0>AN*>}4kE`$s?NBiTsyZhEE2b6^lGXT0g_{Du zygy9G1$xb5q^-%L~*ay1GINZw=WX{)Nz@LZjM5g;NG1X^D=T=+1B4IfbG zCA#Mv=477$j=Mruwa z=>TKun$w4g#xG}4Vi?aJ^qVVwD%Poy(P zGwCBoBWqcbOGq-(6IDO*7nx&u7Vozf%NDm4_UPYVBmv+99bfBO1LaG))A*5S!m7d( z9{ZR}0cKqt64l%Kzx-S@aPIy?8vajIfo>v|><@C$tsocsmzOo-U}rZnF_4A-jAy!B=#jwNRaWeL zR3)>nlVskdAR*_~kX5bp#X6v?x~?kuq1%@Xe58%K{w8pK&X~#y!|${ISe=O~CXE1t zkst<%jvam2F7Q((V%ktj496=l{IG*48}?v|JFeF&pG7pG8Bp>50ALz8PJ?ZTlPp19 zx*c_?IOErVD8{3jG1OP&2$sq#DG6W6Jr|#lDU%FkpZ9<*a`ZRvr#S8srLa7?L&DNd z@EhxUNc2!(wY^1sfHPDgkD|TOZz3~CEh`-f9AG?Ay@8zpexc4y`b z^vVYtz%Dm=eX!PUTF-bmPxvg zH$$x)W`V-*eckLMAvv;r;lL=+^5&H7acI63qvB_WV!tR&5uLiS``&PKjBdlRW3#cdWB|MEP55&X;diX0 zS>R!Q@M3ovi76GQOAxqxGRJsLyRgcyL>HGucZ=3iCw&HlOSx<*%Gk0+%e!mh)pM(r zkXxq*(+o0C)Hgukf|MZcb?{$h!;i;4!ZACl%NE)ohS*jUA;g{T>y|`4KjJ2fQCm_C zr6;N-+}GMLYL1*BnR+g;q{tB(1NA@%(eB*GR+F18OXZrnicV=zv!HVc*m(lAs7?7iTuOkq1Elc}? z9<-5RW59Tm-QZPIm#ElAHNJDfr#1Io-9nI0<#n96;g$RIq<7A0w?R(n%c75k6eLn$ zNqYj_fwT=LroxiD{JNyO!S%_njbsD$t%Yf>j@yc#I`0W+{z)sGY;gIPWo7NV(%}=PxE`WP6`}60CnpdRli-=xu=)A*wGd74Q+;rS0sbYD!>w!`|apZE(EqFwwrLX#ISDBujs#A0sjVIh# z)5AnK-Q2Mz(k4960vX?U3PU2XP*Mt{?fN5}j3oSWSEF^a#5oaGQ z+<2de1QEk+KJqO)$bYz38qQ&Nu_fK}FJu>AQ6}>?<*f{(0G&VpVf^mSuX#D@h!oWI z0TFt$11|stM)H<5&Uy(HW>@gPsrnHFEL0VvSbw;qI64%X?xCW2u6ZH&cU-andMPlV z!>jZ_FNE!1amk;s#DvYn*z_MX8mPYx2ukD-P{jUkNpLs@1Oy;3>c> zT^JGoJl(%l!KpC*pQ_+SAij8bRM%0Ma^h50du-saf+QzDs#I_g6HL-(JcsE-vqgk$ z_}y-RK(DqrGCMbzB?3%%0T^N_V+gH8uIJ;5q7MQ=`n`R`buFV$Zo8z~(qJRwSvCXq zCpiwmyJhFv$|kVVn4jqufU-7tTYF$BEUW}zEfbLMp|0w!M(W~(?x2^^<2=;*q@73^ zt04Gm{&iptqhH~Tg#W#KWW4RVRqExWHZwdru5Us>Q-4DKQs(@NIgXw%d)}4cvc8>m$cVM9t8+Tl$Q)mY~H11E9 zN1o=cC4$o1E25>eTIc}E*c@6agaYUPDt~U(17uD{!NmHYN%aISJ7)Yk+nb+&=vb2m zM^AeT3}l4Cg6#evy$(!cgdvB9ptlJ?CjfRb!ngp+$3xH~OUNQ4K^=JiHmg6$o`UAA zod%Fuar~`=U}Op+bepiOsmoeo2;*iiKlvLL!HP`v^-Ip#o{d=Ru(8uv*Hjc;DUqRb zWyt?*UP5ZkXjFIfK|hu56)g*|3MLgOx!n}jvqOnQ!Bp}MB&E%l0tkFs6fJwJJ7Ujh zWP$1n{*3pQHgx~K@%d&9QD^UVewL#eOlg1ib=;61-K;HheAbCpr9PX6o|cJ*j)~qZ zavnQnd|1e-wVm4Locz*sw6;AQ9g|{=hR#_C;fb>)!#9BOuGQwa4Bz89h{d0T0KPu& zeI^sEzm!EG!s$9M6+prAp8noNvK$Ik9f}9rH8IWBladij2evaDX@ZX>UIo*IcHFsB zmiD5%FBP}D4(E?wzicWil8tcJ~JPBX#gk7k1h4r9jm3HQ>P@m>>mcY(I zU2s5rxr9;k&R{kYuuJRdDK*)k1$%UZQF8QUXr^+!eSIOS%o*R`}q8;m0u=MAqZ`I0NW>%t6w<>gfzq=({S^doVV< zxD=KeN_o)VUQ{s^Ld{bM>%#9SQR)qf_9&Hc&72UP%kA zwpm_jG?`!x&LUX14SCWb8zSs%&Fw&ck+bCPJ}O6S3ScznWWW9uPt8CYQLAgawUFys z9t>3F`~(OUVX8)SVT$jAdiV1l;_)Kv=2Wx0>m=}NlmqO=XwEGq zl-Fw*j3~c_$WaKa&Nlw0e40BKD}~J(8w>mBMRK@OhW0Z8@E=~)UEw9;oYT64~5`X9u#k!PBso@pn zue)yQ%h7X%pGy>;WU$D-nM1pL2YeQHqf5(ceoKoi$d=(+1|BQIwx`B<9LzK2FxqoJ zDja6j%hDUP+qeuwj-GxQ=<7n$0SF}6{!m=^@7C$y%9c8v*H=vGVC7rd&x&UEOa(7~>?1WZyU z`Ai}J-!HaX=m`(Wh>3+y0{9}X>%dI)~XBy%h7E$k#-j0!l)gZVni z6YXh|r&O7O1Pkauau?n=kdPX|@*=*x>RH)3YO)cXX#K3K(^?D13FdQiZrbAPOU{t% z-{7nZygRtR|4b}8YOwhW@=ehYKyXT!OKfNq!c8h;NQM#LAn=jc{+ZmVIZf{{(iL?r zTm{%XT$%}HHZ?F9?TN@2v_DjI>P_*8eac984F<|#tphfN$G1UAtR1%CfnKZU)V)7R zEV#e1)yB#c6^3$uXs^p;iR2a_+N}=Hiu;5d_-YHCYTnqc=)>WU-|(c_>Zq?pIn(mt$zD_qBdJX^Wl4R!CLi zFAJK&894{hUU#!azZQ=-*9P2`cg_rEeNLF!?`1Sa%LQ)g(*vE)@yd8=9 z+3oOe*Ygjq5R_p3>+`Stff=U>s~N|C!chL~c@|IZ(3pbafrNj87jt$aR#UFE1Yy}8 zX53IVq7oBPRFw0So?lC~F+;A0KS&`^Fq{^K2A5}{(%sohtAnfS07AcaFHn08s^52k z?oMt3+?S*eT|GcR@kIugyvzEDo_p08*^M+eOJ;c77;${FtcdRC?gsC&DO)vyX8j5x zZ0Ap<_ba}ohnIpd)797 zrJ%w1{r6xPvzV}(n;5PA7iCxNQtQ)p@uo2<6comCu4)v%I2x3A9s*Z9t9-GW;kBXp z57z^S!;Wx9tlx^iAyxri)MJ)5sF+<}aTLzwoX-XB5v3cg8(w=%%7jHn`HDA?jmttQ zd3y<$=t^ugfV6W7F{jF2Ui22OJNvGm3_{B9Qud(Z6;mBi6k;)LH8PEIE`L&p{9FmC z(XMS;6gPe8U?v#E95fw_-s54_Ar~vA-iqB20_45_9?{HVk3Ikd+E?jDPSijX;#`Ml z_t2rc9`i@;h8pSeYTZqoTeZPk5(*K6B`Gry1rIei0w4T*+uPc`-Li?lb5&JEW=tM5 z!o*5&-`2Jw3m|OT5gv0Iwteuz+=SHBCPNO#PL&c51>-A>SdpWGa;ctxFjouw6%KhD zQ56-cjB9l-$Vv^6j}?&i8ETnrB%h!YOm=7XF$WK8e_g7GDzfL zCEtz?W!WNzGgB`-$yE%2RE70cs3j-Ki!`6Hhyao7}t z)|2i?Mu;)W!3@Dea*D&^j89BK_CL!G1zOpD@-o=c#7_oVjPtQgc&*=O-T*F%VfQ4i|)79f* zGpsvu1ji)&V`xE=zX=r#BjvH`^6ISeV}C1C(nSVKk3I@S@{%8EAyk}@^+UzO(2ggu68B_L;gBaxy7Q{iyNafQfn5{|54w4 zZ(~(g_Z@tc-~+VzkmibY^5cwKnWR9o`f;jD7U7ZPqU>%wtwHg`c(6s956(qWBw~X*3cSd{9EX zv$S6+Z=J`!Mg@QMZrNY0xHmhw1(oWpLZ$l%8zPhg$&hVSmJ**G&$9*e%qNDCQQ%nxiT*&2e$a^!<=; z$H;>`mQ)(4FuDa)nuH|-m`PU)<9@_Dm9J%g$fr6mAd5&=RyB@GS?LoD|AFICVNzGy zV=65kT*soG@QU0r#}K$s5idqQ#&5Qflb!(Z9T{>sI54wM!g$;M+}=)<%mU8^%OxXl zjlbu~`xfU_czwcnok6y&JxonyK02~Ke=~rr>k#`xB$?0po+hUp;OFp-M6O}jX4?B{ z^u5BO4R_B&d!h{I^?Ge+h;iND|345be-cU>9Krd?pgHRwoUSpu2`39H2y6c@GB}A8 z7Txyvnot=gSzg7TosyrMZF* zb&VhdCc^V9w)@oqROiVf!Y0L}>?6YqZBB5X64&auPFVbWbdlz*&^0CQm5(7$dIE>>mFLT%abIK*_hg7hx*vF7?K@%PEh5t0-7w!RH-+jXHTI}ek-7y%MU8eM%;4YaguiN7h;5fUK;8z3@?Xh4 zV*sa#5gQllnueXNiW;uq3DqEB?NEvlSWDOVry8@fMahHZx^=^(=A&A?{K|sWyLES> zv$nOiCR>xr?{JJStn?J9{tqkw`Iue?ihQRV*EvYMSk#!@O%%WfiOvuM{1D~|D@BXC z%B$e7Az8a^_nAH$_g*WK?Zcf{XIRG*sxNJrfg;{4YJsc$IDg<|yNQq8-Ir+p37T%+K0eGiRjM~1S zxX0@4PMAL{ZPzjN9xISl zVwIC2`rvY%{jdec?`xcJ%P=s`f!odo7LH|^RM0*oia+;guoMsAiMLyF{`YnmK9mSwS>N8@`jzj1H;b|EP~iQF%@J`V$~<7_c+ zrM)nOG7(2?$romSG=0gUf#zzD+H5I_q*OM@r?hWF4Kl-ked~T85_k?Os4xu+-ml1b zUE^^#Hi_Key;qD3z7z$749Kv$C-`Hv%)~5WV!KAoGlUECph9aEMrmG^-pr7;5oP$2 z&5?(+2}{qjwNu)nP594j4{9nzbq|taq&sdr!f2S>hpyQL2`e!eU=l|GM{S&Y6z(NFNgJPmk z(2DG@sK}VpjK`dl#RU=h?l;n;?C_{8uq_b<>tD1aC0i(BtSdzL$e~d>M(I)6@ln}@ z5qerl&6FDl7VEpiN4tZfyBL*2(x7aW zB_cKUx%;uR#vj&?%D<*67kO(;NT|bAslrg1=j9!hw+wpL)z?qIeYZ#Qw`}U=li5{w zb#FU6#ij0!iaL07&xqTVt;vO>^{!4IKR)ZT;f(_Nn#OH6y7{y<>F$DZ9qk;A?`tom zEgO+{e#E*nT5D6eMh7x`ilFS>p5xf=>=N93#^zHR*S>8RUk)d{taUYt1?KknG4 zIpskFv$dmAeinU-cqI4u8zXa*pw_uL!>;d{{8){m${#mlZb)yJykwiPgHd+IV^bt+ zvHfk^bT?%^=CotF(VeCtAH_|Ylr?mxoV{{nqxP}Xx$A%Osw4|6yu1|maIIt4)=|?Z z<#nI#>|7G`s&mvB!ROy8eI1X+UEDW)=ckDcJr`eX+pzl1M8@J--s0tKp;VnMU*PfL zQN-5mHbtjb9*WA3QYgCrv>_o@vP`0N`AzDqJgw5k)d8J`VCI_%r&n_x<3ltXX^Fh1Oi3 z@4bo7#=opL+kb(j`0?%xy(5ufYofF_H)`i}CCNBb)uhrKyhq;Wh8985j_{`X zaFbxR*~f|ZG$)PwA#J{$wc+@i2FF9k9?txDm#@6`$NMiUGd~5casDcweMg&7F|F#u zsIZssT;F$8RbRHAs$Vv__Q8qVdbl49B*%3mOS@A)oUdE*nsjX6-4?QIb+G1{pBA>oB}&xBSGLVN3|6X^7{}c^ zyfS1fd1rK8Nc)GKD}8Qpnxxo0&u?oK7TkWm(0x|SEM;NFSj7<(zzZQfKvA)rGUi zDUOj?94TatQyd|n-H86~h2A}TWNIL(b3rs||M$xZHLfKixa(K5XS1#N#PYQZg>Xyu zTINF4QjNpr?#<*mk5!%=2=!YZAHTqbx+ncWh~1PSWf+tTvzkVXo(3$xJ5b%@upz}o zfL59ZtKl^RM~%eqpKytHhcwo_v$rQK)>xph`|fe;$R$z}BoIPl0DX=6;G_MoV-N)oUcwx%O3l)7C}A|R&TzC-Kv$3Y_F#zuion-u%UIN zyzvQ5roE}X^Z0>Lu~u*Qi8@kr&1CbtmR}oxm#pj4owKHEUe4Fa&mL8;Q)i3`u9Mwz zleuZi?AEMy)`}5}XX@_YEDW?kMoIcgK{WSFP|IobUeFHhuB0uY$Qj^-R zZ7EZad3$+F-RPcWuJn*vI)C>u?VdBb$D?`5<1-T;m>I=hyuQrE zb{sTh^~@-Xygt2ztF_)4=fw8+sCyj8Z%jP!fpve~=6SbP{GOrpOCqq1 zwU79~q(iSX&d>Dx$+-=Eak+X8W~k=nP5G_)Z})_J)m-X`^$)?*xeT;Ib2wyp-v{h{D^@hX(T}I$l-0`P zPs^-VE8eX&ffb`QDec07$#=w)rGiWEj6Z*B(dA1CcJ_C_$e*R(UZ<|vc!~1t@Tjg7*F4ot zqhzTKmjb?bzm*u-(4D=2Ct0vH_xx(LExV#tzyIc5{4v_$gZd7$sCX~981A5^x&}Xs zwX1JBd0Y4trTu#8@9)Lx!P{?N2@-Q}#JOZgRyj~+KD;HdNA>14X>ai(RkIB$w8s?7 zKUK3o61(5A)!(G-&i+K*8lq{slymV#F>RqU-~Qd_(q!X3>$54T!HU81F46^M`(oNQ zcGz5h(9;<7bcx_dL{CM@`;0wv&jbp?PJFqrBd}9_MP}iw))CFyLwkanmWVs=6r39I zdZ%B=)5OT64#h9)%DG9OX&!!y3`x;+M2{mq00|EGjqLaC6#GeJoS6U)^SWx#pz1hb}hRHN6tJ z{%KCgU8kC+DtMf=*f4?^xI^JckXm`0?#z9DRoZsPbJfk)-XHDtyFSOF=GVpIMzMJd zH#OuuFi!rs=elB_(avn=C0=_9_U(}FGru{h`my}Qu+L^cJa$@9Ud9p&b4se;aYje5 zpU@+Hdhg@~&_-&t66K1|L z`FP}BUhLI}yG`BNyBX?tx|Hiv7tY(X^vHr&kK7NVFJZGYj;rmDH_eHgxeEa)_ z|2_l5nQmd7>F%L^T`N~O3*N+-x^1!(%a7_aShD^r=TYd#={~Hw{ikwoY~TJ$_x$X* zzRwEXoR*d8WeR`dqArA%Ya2h`{b}i@T0h%&4xmlxQj_}by+{vC;KkFQSHBx_ybNtV zP%Q>zM)Zg_A6x=7190erC7IE%CqV&p<>?%JpLXl8Y!&w zlF-VVy;b6v_(&99FqBl?;=v+iKP?9Qhv%Sl;6i4O{7;qn4;O_lbjrDVenmhMR#osn!GA-r$MUZ5tE z?jke9H>1-i9S?s|{ME$7ist^^knu=F3XRNv3kSJ0ACF8)pZa2QWaN1(h0BMZ9We7R zTei1!@hn%@U32Ugj2u;yq&0HcvxTX0kvnG=FHmz))0rhbVwFE>N`b_$rdKl23iH*f zPe+`ZwL8ML@pqyi@!QKXlk|du&dM!JUuPqMZ_%gZKYc-E9Xh=y?M?(vGJ2PML8igt z+PcaQ3C(ulHMc#(Oo@vU&)8NtKPX>3S<}r;tF3yxRPTBx#hCp4TO%HpmAU!qjB?V> zf4*#GMc$~>Gii_A`Ikl*Opp8%Bebw|T|NJRhsIm7VvD;;)Sp#?zLLBj_uK8&^1n-| zTd~RxPux|Kc05xrewG@mc1uz5>Iso6Ogm4vM{lDVw`j2+PZF%B+?u|#p>E?t3?nRUdNY zwvXeYC6!O_w#!^CxoDXG^4iv_&ciDs(|=y^dS9P2i{tT&VUY9d`7NuDffFBW&QB9F zTfE-uU18?j@0CBwQs;iRe>LV%wO($WVvMP^KvJP_{oPAOT3dhHOtLi@VX0@~>38MJ zN)rDR>vFTsiJNsw#Z1M5h=ds0mldJul?6JQW zalEo#wNG|la=th<(2aN9@?z4X5doJ@ZAi6JZVX79b>A^Ofj#x~x6gO}+}oH?dZzV) z)Qk~H=j-khZ%{Qg3rHDGVYkL?KkX2wYcjn=J1J}Z4*F&K;>vj)qz@VP&b#e4gl~^c z^}Th3{l-E|=bH3(wxHVNru_82uy2kEe~iKeA?7=bp5>nxyf#{PL_u1e^`*IInZ0IsNHT?vdb`iHF|T zE_nBB%cGQ<@T>RB0xJSb?=POT^^RwfA8}~Li8l{d=X6Jl%6UEY;OLvDD+M`E*VKG@w6LI$XFf9}`i7vQt>Tu#wrK}H_KkR1 zk(lDN=$Va2MuGW!n{?HH|c)stSuN$5hA_%J08jR+^BxV&#>{ZG~1}9lC?k zzJ1@K{%!gtN5f}y?&>#d4Nk49Nz<3D)IZoq!`9=H$$?CRhu>$0?6VL| z=bbVrQ;;dp-=aqI`eyB99`QEF#^A|}w{c4>CO=4u)-yMIFjvVz&-=Q4jMH3(eo5Rs zmi{ZvH-tC`xA{LS4(`{BQy8OCcT?~7tE+;#<*N79)jRiab1fXReRt&qUUGWTE4abQ;9K~7^$4rn@yhRGh}+FO4&GmKBDSbc_2e&mA&S>AF)`ZG@X8L z&TXb3&S|rILdjiE?`fL0b)RDyl_!E-o<9hyu~=rIa3bns{+*Ij%u3Hcd1~X6&hOAq zTKPyO*2r*9RCV*D->+-}4_%w-9BE`~7(O?9`ych#mdE0A2}!CiqgK7HnMe3ML&{$( zO+Tr-MsUaPkV)&FYRbp9w>E*(B?S>aHKc3vC&u^+^1S_$Rvoh#S5K4G{oxi$v0vSw zwB^g9*mO6KaBf3z@y$GWBh!ODl@6 zBTWAzxVeCLv}MIv{D&nQ{5x-YAa%jO38ILPL%tFexKq3AK=QlX@W zdCoD*kN5V$$hJl|y>+=H@cpD$^($R=d)zrMRr@YM*H*(@#pyBiEw8%%+zC>?W7NFQ zW07t}$+t`m>%g6QdxhiYCa&p~XpFnIpSO3Z15x9|4ubWqJPLH7JAb+0UC?-7BEzKe zN|^2g-;1{$F7G0ll+AIAosg{=!LPkFmYCFdG0!eDn7yQ*nCNaqP|G;P&$dP70D2-=wi}_n8O!J+c0F?~vnL?=yzeE2fp#ebsJM*njcS z?Oc<)wnY`fj}(Dq;>M+NUrmZeq~|@Fx8B`4<&Q3>J}q)Tx2@z-tn&AVy4jDl9;CIM z?~_0AldU-3?$O?mX=*3SnsWa{yr1SnA-ALm&$n2}6uHD3?Qif`nPwhQtz_J5pU^T! zrfZv-+v*z-l%K!I8|QX;eg51`f?eE=A|+f9s!Ef!|$JiJnu;FMjlDSu1mUdd=xZ58g^u<#j8=~^voUM9!3goZLVHO`PP zpAn(D=h0Hfzk9V|Buy=}U zmdL(yyN`INOvm6!6T#4ODJfscuT%|0kw3A`7UELPRRY7uo zQUO}*2#wgRW#(ryX}J-1+u?{$srO9152O2PEBnsPq7*rfn;sNzOG|vNQ+Hl1;Gj^K zO`PG;JI|~jIB!X7W6AOEOM<6Ghtj+6o}cRNrl;g89>q;ge)&_=P5zMSCI6qnbG68~ zjl0ezubrlT)PCukwD4(y;H;FwP50y{)!)%gzk96p;n{E0Apb1Cd*VGh?nN%iI^HIS z4gL2|w!4%tzKd9_>(@5l@5KY_siQWTo()Ky%h@>TSmx&y1t;1!@KZ}e4makvFw)oX-~JVq^KUI;tQV^=bxrUQO2+7~h23MfuF8fX}z+Q_E}?PWAL!z9}QWeQ#Xr)p8|bqL2LfPuEoT%M&lj?C9kQ z#!7RQNr}0F-5D&F<*{-@`$_e_s|qr{P1}3+frrOs$$e2d*XEqBC|(}vt{}~+YMCL3 zGq~R5r@H5H#q{T2XujK2SFSBtynUMZp3ieWL`mhJdseVLYjyYC?=yctqdI@Ba@l|V z+(VnpC*dP?wsnNH|7=c+qSs!YYL`^_oqKOo@aAxL|3@399+_}%|qsl zme>5V(@n^xR*pt>#NyDXXJ$Xy;{tEf6?B#ut-De))vfVi=KThpbF(v5UDD^Q$5a{^9Z=*xUnK=5dwWkg{ zUOEz5A<()ow@9}%_&xjhvGUd4OA_9vcppz8v|K;uU8$Pql6;oEN2P1grSr#Wi;CQ< zM$K4t6>zsgdq?CHe7zGoK5+D_?CNMcDGyV3f7c!pAg@v1CfgS=aq$74YTl}A?5q>g z2b*V1xitzyOfwtyPu!eI@S8_K4&AyRt$dRJ6YVw?N?LGI!d(j8=r0~ zlcG=}#rxrHVGreF#mz*3Kv$tSd@H^=mjTx^wVsxU^me5M+~_i?Z4`DC{GWIF z0!JhF3+mf)d{%}Q+@3UPI_I>9@tCXSCNR1N>+{b-vr>J@R4YfmSEcO9<6oCPBu-c| zNn5eVu{vi|U732`1s{{cq*XOxM(&S_?-Alr-#SM8l&KgaVO&hwTh|Q2e)-X|%&W~)>@w?kU#%Cv zO&Y%lUPdTbG%?b{Z(WNZRU<5YHTkqd=bg|-0m(qd$&}rw6Z>NO_VD?Yg>NqUoqQeg zK*BN z`3?p^058rNT(X_Vn= zvhOol;YXX)uR!@CcY;Qly$K~IlUQh3cE;<;uD)-f)4Glw`Z1)h_8H_W=CL|uQTb-h zKx&3ZC-Hdn!8eFylc=H+uh}}$-6`^R7bZ_JwRe&)h4S&9?s6x``O2n>wvLs~PEmAH z78IQADjZn4Glk-(WJWG_A9z8R_Pto!I+-&@lBG@3Sx0B7A6}+);Fvf2-pwkXy=?}s z?;K7uiI*0=ud7&Ic4^qtQQETHxe8C5*3F`E_q4`I)|rI;l;Um{i zOKEP%`SYhC`DR^d*Z4&7Lk;&jQ=e!jjj0O>o<7b))izKfYx`<;)bcTe$v)4dLUgt6 z2|bLZ$Eiz2g}wgtL2v9fU75CO-p-SAgfYg_2EwU+3PysDgb{vM&mK6rxb+mT<>ak$ zenj}F$rG+9>6Y&r$2WPm+g7Lf6#1~kot3(3XGg00Ub<>iw_7n;tU|1Xby6!<{fpZE zu8GOP$&H%2V|`cZ>7MhP6+9%Rgvvb{o%?MzK?Pn4Dr}-O8;?z=QJK8{5?g7e_$YMC z2`rT8NY});b(Igx>>TZ4*L8J&S+`+b?6fKO9m^f2K^@%gv4fo>PdBCiZEu!GL~nZw zSS0aGAaUoCf#O$P^5KmVBhQYBP*-n#6|2Wk>zbJ&n=_6)Dz(KWP)p)34=NEodnrceUhBCF&nf zp{BT6KlmzrV?+7;^MzZwlPhj@w#8-Ib^Fdxb`Y%3SZLO;QgOq*1*s96LpD7VuQ#7H z^6+%M4}qEv-@fk5k_yzatYxL@Dv3nT#H`Fw=DjO#XX_I2wkZSE{I)RZk>pwltviNq zf8I%)a&}5Yn87_#gryXt%8bixJ5tq!(!@Yp;)5#BUA zczG9U=g=3mbC_04DKjax+X(N+b22HLX8c6d)ln%7`6Op3ynR|lP1tZo-e4qpA8qDR zy{^xw3TQLAPoA-dhkZ%#(&Hps=& z25kkO$?s3&_V<^d+no&JqSkgtO%c6ka1VOTVB|w5lc@O*%chyd(J7N{pJdoSWC@E~ z<@E(V`j`7(;J05d2E8_TY6xYjT11cR&#MFirH*4fak z5O*%PAf^co=d-QDKbI&eIYs>WqYCfrgO?31WJ=c0y3VrH$ccTzV=~m>k&>-K`5qk812=+~nJ;rK7*x`lh9G z(n#21pq&;#qCtGhiZ`OB>W;P5Bus1{;R`o)x17?}DcO)UF7$!?$z{?lCh_gRLvJ^i zC)hjYD0ekWiQ9TRNQU(mNvd?+mJz=`=6I+Wv(i>RRK{kRY%#$>TC~&xEm&PSF;sUu zms9ig6>xUPK;4ZGS#BoBkqwik5}k%paTAGzNd#X6X}@ zTp`>uxb%j?Uz-HKfhG9a}E! zve{L(c>AB6@WvINBP~DiJkNxgske{Nk>}TNZ1j5tExDtYn41Omx&FB*@Sp!_LhaGf z0SA?gRw*)$-JB-gIcrd&jm!tP2j1n>IHxKuvP-icx##%iP#@I_%A- zUh&(-F=IbTM22}czWnoCrs8N~R*TAQ)#8Vep;A+)-I32y)^^e?Y#?jAQE@vF+S8Ic z!YeiI>Phvem9F(-dfx>O+}Z4qxmGdF3Cz7lmOESH4D(*?Jv5$A*}iRJk;O@W>v^^d zHjWlZA8)Xl=@fOqtu8;Q<5~4wBa6g+mr5>89&^v$!*j|6`GX0Y${rtAd}KAEla>_Y z%Q$&X@Is|~+%m=u^@(j2&eK%aNeLZ|%Cf_Mm&T>Oi}TYDYCe$F*<@m3Q!Hee{uuHS zP-N|^tB+294Eh;9pr3pOi%05zHRez|uN}9pD<~TD%+by?njS-c{E+YWGGhSYaH=4g0E_mQEti3NBH& z-7>4eF?IboqTZQh{4;fJ4;*D*_6EHW1l@1jUa0OUTX}zXUCbi8I;UP;rhK{%H(gG< zaHZ#wwT1WhR(_Cen=$eZw=vlJgQ@Krfmm(js9ATE%jF8kd8)nLAvSsIP4}*^JBWKv z%o0!-XM`6o>pb(iVfostqwj^o`tFE#wGB2!899yJIi-C^yVC>T{gOU7tL4|MildUp z(~1>3yFUfQ!o5-5FOD7g9^}0~DQiajD$DMM4L!%BU-t?(w|CK(KKV%3xtJ|`xg+Lb zt)RjC>XYk=^^T@8k@>7w@}x(XcBFV+d{WTMt~uTl@^RDE_Lsh@8}bT&G`{ZD^j`8w zXO&6anr90G1aG$QEXNyi*X_}L zF)QZRC|~cbA3qj_85#CGwTx^$_G3JNC)ewultCSH$?|B$UJR3jYywD zre2idTdLL`^?i6GD~zQyc)i6PO9C>PW|js zW-sc|D+OofU}_fL#-1&8Len-!p?vAM$3LZ`$`TC^9$qo(!;q7Us8E>swrC-`2V&Ac zZgI(c;cQQp3H{DVbk!x{shXxxZJfBWP~nt}dS2%`IsN`iAwJhxjeH4k>YxQ?6XFAFZ>4OMU~2dCpQHB7ZKiJ zN@vnt9I&A0l6_*Y0aWpq>_5;H_*Ve2DHIxEC<@(Jr*)~aKtlpf!wtMZ`X7u4fg+JW zA@hm6;V72l79zR{)c5b3RsVtffI5-DU~+g2#&A@7P9l{AQyQq<{zD1=fQcd!_|!L^_wvp>u{3Lr(YNERTy8z~y6qyIcREQh`H6 zBA>}5vT4In?w{YwmI2B|8t9{NeBj9qk$?+Dh$I5E;Br_)VQ9&YTX~&u0oabe;`tBt z1w@EQBGWl^Hh(Az4e^(>oGI$ZS%~9@ueO*Dg0a~&CJ74@7JX9F7kKKTpQUqoaM#z+ z&(S%4EzPG1pJ3MS{+{9bH<(=_6obj+Gr2=isERMnO;bSjNCh{AM14eyNh44Q1N=f7 zASc$gs(&zqG3X0y5|hostT|HLZ>4o6tq@WA7!2p9y9mYSb4c8QH5dIV;^))a<4?wb zq$vN5MgL8KZwR!=L_UX09Z-RONkIa(<4kFg6TldMz3V^Nxk(5{XTq`%z(mB5eEnMD zYIq)I{s}kp(Z&eHgtu4I24+5pLca~9;1S;cq^9QbX)5|IEC`W>S!gt_b^9yWJwU+~ zx6nE!2*sz#2MldR$#3T-t zDMV|LqR)OZfNF3$SVBP{8i!A&V5}xGE{+PGU$z2DN?J@XOb7L82u6p??Rey&#E<|_ zcMLG}23RGISOFcOn4t3v95D@zwF&D1HL&aX$Hdu8F);y=!XnT}Y>a@SF@8UtmkVzdRIs6-l&87@Ni5v2n8aXX(PJd_au)dzH#RCO&sXC@zfv`~BhK@iTd4*bSJN z)!;h+<$rF7-(m#glZh-I#@?en|G}7d9RUEl4UEUSEGIbZK%^0fL>37n_=q3%!oZI# zKsDk}FFg>7N+5G-0?a}q`7kcqHC-2?FZvFj#iL`5Akuop>#5qMFpUE^PA^3$NOuzXL=4NC z{+d>s73gy^i_V}7RXH(a?K&fA`h74<6oFw`x<-VeviJlR289H(WNqM?DIj9X5Cg$v z2cO)K{VNeII+;owR05G_`#YAAuhxh@2Wh8ZcsDRs`L*bCHkZidVLnH^-LfXARTenl ziyJFZgyNBCZ0xTh19qVJVBA8OApy6J%hv-f1`!N1d4O;IZa@?z1p3{b15>oevAZr1 z!Dti;B$$T^b^{Pg4qWAJ1cXN5P_u#%ibtYx^rL5eBR+9n6|v8xcf4Z$F$ z;!!cC8L30*BnjOOK)R@~uxbdMxb2OJl-gn=6(GI(?rgzH0R zhD3CdTnB$Sz@Fd&mE*e+F+Kx46~;6pC0d}8BK8)dmPc?QDL7lFqVE1N0Pvi ziix#?DU8Qy#)?xS7#%o`F{eoPuk2m6BOg!$z4Zee%ME#)j!=9CahTg|22_-c}6eBC{YXGDN}pOA&8&^PUVGSH;MoAY{jP1cTeasF(#q(tB|1 znTa1j*iX+NF1<^BAP|edpkV9P6|BbL@*wmNWu&enTVIAV=70$%(HN)RSF12VH0>rD-0i6J8c84 z*ouqDma2<`FW{4@bl5cvWh0XBAoU)X|8}Xrv=A{ehrz?{DG?WMWXtxM!VtA_`#fJA z5sJ%#i028qL0QP+AzDJMf+?E=D4d;L02V#v~!t z^c%7H=qNx995WkWVs1#Du?R({!k%*I5C`@*KTOc)6e5p<-QJ>!OLtzYWy7yl;|$$6 zQ-q?jNW`I$M1RtF=CY6TX9KDZWDaBKLe5M>C>o3RFAjwT?-#i_)K`8GQHmV`B-XjB zkPwPNBapBWHtMpGcRsmv1t5ZPBfKX~1xqjg>E-~cNEMgnT0%v{*d!VY z8%ZF2Kf?Kz5CkwJIoKgK(GiM6q0;`%Y+z#Ai)u<#OClY8a2g0PGD~goq&|UM^UO?ekN z2T`^NMHUd~OlLS$O8N}wGW?wz zayb&AxO_;|4TxtyKat6?xMv?248)*dGmO}eSOnt{$Yc^m%aM8Oo8U`020xB3>n6nk zibjA-cz778MX0fAB;$)B6wt>ycJI9iM&uF)mmIz)Cx)bUwBdcvi6FHTK-RG!G8{i9 z(MSv;XFyIwAVdoOV{k)^1#L?Jkbp*JlIWNPN2u|s8g&#P)rV87;|N8gGstW*CgMV3 z;+FZDluZ>AbB8s>uGjAaA{37YrTC%3)g=B`tsdV;UtmLQh23eRc`xruUXJ!J_)V=Diw$pY?z6IP7anqP7J-3z>3zJxEds2EzX0O zSBg+vD6(K^p^1Mv_hvr|)nDTR)XGN)1uvK+@^MlyWNCyCKB=h+3ZBB3=>!G=By=d3 zkYk9}{9;lHgBoKvTs)imQ5*^xo7zD8>oKhg4(DKCUvLAfX+pH16hj@%4)yB-N_9WI zd1TTzD7?p!hZ8&AEP`?91gz6W>*PV7e8C!o#uz6w1)mWLIzAxM8agp#krE?IKU4y0 zi=5AJVv{=&jLM-A26wfh|IP0oX5G@`ntnO@bC65(gVepy1G4 z(uj_7KPPZQw1g4?bX{--WCk7M-I3Z5_o!4)1eh~O4OWK@qyfetP}l^l4@0ZrSP-Ft zcH-Z0o8wimvm`OVazYYq=+Xl%fpue1ThTQj23HgeBc`H&V6ZvnVuy$}$K{IjOxRlt zzD@HV7dzm75E6sIr-GIaBWBH3+R+YnX|VYU%+vt$ZIuy>2?0G5Ge#tyiig*ay$drd zL?wg)O7M4X$Tt-cibrSDFhV^bXH6Osumw}sVju=76)As>hBYk4DWV)yfk_N5fy^Rc zLW6;T<0=H*BnFSgVQ?^mLtXpPF0SLeG*)|%1AfLtN3<{~pO#gqcwqcwI#)WkL&;g<~XnJ~Qsy@&v!Oc4v zf#7;7G8c%avS7Hb#lpTSb&c7!&Oz zm>Fh45j)uC6^6I|lN}3}0ZPDv$ePc=L?H-9|729W5oFsD7bsbHAz~0Haj+&7Nsnh; z4Qm#N_Dh%*c4AMV8VD$el(3mziGhxu8Ia2$fo?M3U7|zTjO3tDcCiNv^uOW;!xN!+ zYyywuOoj7x~-4CHy1S*?{86rY)i#DCN0m;7MDU!pXlJE&KCjeuypw(^Y%+MAk zddg3NKd_kq4i(F0&-Dn!q0s4Ai;9Rb71P*zV2JX##d*IG^6VrwmkrB<*+2e&#YowV zi18r8!k8Ik^SO5CMoIt^(I~N+dk29y1R`{94V{(%t+RD*-TTWhLRpv>7WH8ZLXjZ% zIBAAPR{Om6M^gkPb#}&QNg$)Rey>HRw5WLniG&Fa~%) zZ08o*S;bWD?tty@e-KN7^JIX6`=jtWXl;5^9o+ zOi4wGU=R{x^F?UIx~^ zg`t_vO_49=13&OKC+VOF#)G65MuZXb{YlP`I$?6yeHyTOzs4r zcmxvnuiJ-XLH$kTC>$F-v6co&%Kr$*{L>K(_Of8$h7vMB!uH>OdSd;e7w+R0`IzqrvP^)ai17!NlOy z$zFtlc%Fc@N=OnEO&?!91zgU^W}c;a~|M zYXfKKu+y-jEQjnXW{jxt z(9-;J`)VMDU()b8M2rEgq1f^h;$mKk<_~q?Aa_Xl9eHF>j0S|_K$d-|1%%KI`Nx!J z8v;;mBpe80HN&+@LX1oxFd@po@#9T}^6FMtGW-z;g;ydJ3Wad7Z9wSQq(P|~bXlS? z>b?=d*icEwm_Rf{$uE&t;l z05xU6P7LrrH{|d)1mmFGHfD^7_m58rvwH#7gWIN!=td|Ax`s9SBM*6bT~!v`DEJ?# zSjI1e;=!2%0ak=ju4#<;vKDk_U;xhdAA~UgjLT+Y4FS?Jo31=Q74ZY-A^8%LfCAgj zz)lRQOSoW3(uFfHMtmlySV{zg1SfW5fo8UIMM&cn5D$BtcE z7kNniA%;=J|J)FN1q7oq(A0*mG%{8T6SO}#1F_{eD||)?p=cBmGzShvps`OP53L-o@6xfHh#vrk(G@IP93dSgdV?Jplg7G=$Ld?H4eu;Jn46zMo zyYJ`&3JP^3cxCv|A)<*PyCl5*Nlja@at!(wnMsG{wxQob0n_hImHN`~+xakktWq5i zp(s$g#|SK9HN3&0+a9K|3pb#mv4|9f4V^H9`YUn*XhbQki^-7H{*RKV*#rcmQuxC< z)DX|cwCu`2HinMlS<^&>qLXPntn)?llGd51j+)QAq;Mr-Un2w)HO^u*7{Rt(iHjuz zA96+yw-(ZqMJPIiBN$dAew@_V=dTD1Ou{wDFP|nU<_IZ#0&Mg#+a|=1bL$rB6u=nq z+sM7p-U=wFnq&Lw2f~VV6w&8YlrtH+qUcw*ouWow1%3@&tB>RWJ&^7bp~yrog)kj8vpluw!YVc(NV(eL*Gp}@j%7}z71NU1wdZ|Jp! z|sPZy4SLfIbr z)5#bkhoo)K?@13A0t(-+e=rSc1dRm!kJx-43ba*Znhap`B$kLfhVOBgmH!y>ii z+iwpbhK`_uQVc%1Aq$|41*LrAznUEy4)RKb5UncI^_JE@K(zk-Pi{zc1_JS*g%o?( z3$gyf2g8?BV1W2-hwBAELBi`#_dtwIW#ZeI z>IV9M&OJw8fciOoc;`y6^_h`14H@8zg}7pPO+N~zh&|wk2J`2&UIYrZ^KsGriBVEO z3;MMggZ{YR)FB;6oE7&FG8JMQa4=11g&;H8bS`l)6#>ldk2E5xC09bPh#0VZ7{A_5 zKqydA1~zkpXl-FHo(g?YVw=I#3=32P4G@eEXN)i@Tv6n_?fJIxFhUC)ms<@1#3FK_ z5f2mGqZK{8yn7tf^!}qYb=qVIC&?@l8=cc1E|ty24?55gYjG3vF-FA5JURtye2@k# zj1K!{1H3mKH=G?$rXmy^c%%-NAP^G;qI}MN=I3ne zxuvK|f{*f6F%XIexg%`DJd(v7o=5zhfY?i%zgTJxC`iN7AUA;V@n~k}g5H}y2V(eS zNx21rQK9)1OAJX>@&fZb)YzhjYdNT#iBNC`5*+=|g?@)}3hQs^EZGTT#2-7*wn8x2 z3Pbg4C=Bsqj@0LBl#K1h`S=1505a5nC=g^1MWMi}yH{(g5SC)lt`6`&H)N?Dg7L^~ z8n)buJYnDzHzCr^Dx4M922Ce(2s9o6yV8jH5t7Dfk1&Q6D8rK*(h5~RG6x!xNCIqV zfW{cNVC<9Q@U_7)ia-eV${WEbeD1J(4pOr;2U{sC7$W`xjk7)oMWa)o4Q(htP#7X9 z&}-U91U90xM_7BS#X&FzgU(=M)(p*T<$-sbQ5fl|J;y!a7dZVVUvgi4o(#mW$EK?Sj+XV|PhDEu7SV?a~FgOH5!1qJ?jh9O$Zr6R=#k7zD#lRC$ssk@klk z6R}e`W5?cyP;~GZ*bYE6G1-XSSMq??X#9pI8G75vd?<49`IxN9$$6;JWC|Dl23Sy`r48*2k&(W{aq3Zy9 zG7$wAIh^Zs2Jo{TXDc)MQDBF775aJg{EH`HHh90iNkSS>kWiyw zg$_;Zm&eOpwZM-4lM9{$+(7PrmL!5PX$;5(43$*`Bd3Tnj{^*R+3+DsBNU6oqmnT0 zeqh5RAuIZvLnl%&5k6WQy?3#iC^wF8pf(nvcwEY`gHuStmq|pM<^QMZSHr1Q3Rq7T zTwa7Rg(w_we;#Ch5{S9urf}H?!JxrvSWtyfiC?FvXab@ZS4#@ELnufk4vQgB&~4kb zItzMA#gg%+FvkhOm@MWnexaGsk1s_Ut0LCFhYyYstfpeGZbGnX$h~ql}72yOmTxS9IT44{A4j8RRi$tH3IUIb% zYcz|z6*&PA++l*!gHVt?BapG3r%1dEo<`(CG5$Zg59*fmqu>nafamBpT1emYqX$w)*@aJ;WSj)?JSBoeke4@r2p-0#LVG$tIebteHup->sv z6JY{T{`$VfvKUmUz{j9FPl;e~rv-gr$>7)fi|M!Xzl>Z9D16V}@-qm-b7-)CANn~`!jc<7+(P(Od_}8Wgrd{n z5EI7dA;n96^{@tI-ErsJPOyZx`@r;MLzRTF7*p8FeO6)0d9wc#y$pS zh-gV`J--K{iw(7KeeI$32t{PDpjbC_Vkn%QIsa5>9EAU_inw^g2HK=3G!mE2$0m1> zooGC}(zyuufxq&prv;%u_u%#g zAhsAM2^3iwKrx{Gjet=n#QZr{A4?;Ei*2~trK~(cu^@0D4p9uqv?Cam6Tz+rVyQS{ zR}>M9O@s?9aKgI6>lqVOW$_(z*>GPWplEQY8Z$%`wXHY)*);-&h%WCLcH4-nDuQu| zP%Is~WXOSr`@l@hbWb5PS`s;Qtt*qd(b9K_?D{4mbSK$e0}}TIsLa*VN_$Dhan~JZXYZd@=)j zqoAl@abK|FzRUrDZNlxMm8Ss=?nr>mEru8}1P?F0scr|sfF+}+*XW@krn2<{#nMsbIWhGDTlaCdhI5&|1s z0|W>fSb|FkZo!@JoOgC+-KVQ*3kPb~IJmNHc!!>PbVX?LBfL>SWk z%{pBbd>&31@m=DuIgaA#GWuxcOnkh(ZZ}X@)leJ!oe6<5s8J)X@Er5Gl6mgT11h)` z{2Ku~;Yl?O1u=7oHRNKf4E;voJ>W3>a5WgQ37u@TnWK z_8Vf$ueWN`87S2d`>r8S4pf;l%bfr*^VK*QZtt2EF!c_8t}$UoBSc!<9=T*0PAwb0 z3Nv#nhkcr6MA?wcByZD~f!g?df72?E6UoA zw$9bcEyB$H1S{pSzOW~Wxh)7`5juce+_`p4eLi9JRJ2rw-Wtk-9AN$V?7yLWp4QJB zcZAKUzJQ@*paJ!)^xKKVS{)y|i1lXN%93p#;73J-oGj!=mZ)_%DOCPqEwOq6iekn< z!Vt4&Qm;cz2IlQt39xYrvD`z5ve*$#D~@$4`)+vuKEEss$s#R8NM2}1H^l*)c= z-)8^&fSIY~CH4#_46!W+85=-;nEI8s`hZe>G*?FuWk+o$8A|nluWV%^51ytU;Hjd_ zMvNp3dD~uxi07o)*CJc>!ILnvnhHPKjV8)%K%GP(!j!7?)8E&A4_Y?^v{3$4`$R>i z{V@iHTtfXy^U3C+G50yd1ILjMTpADiCO2HYNS)K80_vsuM1F5a2_aeZgj#$}y4G9L zU?7u&S}QP?9vTW(Au84Af0bLlO2Rass=@vDd*RTHv3x3Nxx5}rFr9$n#VX`D3oT3c z^CbR5*-t4~5QcOar<5NG!ma5oyNt)g^C~9S#+4chBb06?qL9Awgj}9PpO#ddZP#cp zkkao$%}r1%|F^8mfKt!h!Rs`T89Zy8h>1N> zSf6$qVG%eG^j9zcv74xHOMBck{bz3{%83!0gn)Bfcm_H8HO3Iv`OnW-^%51?B8o8F z=fyqGA7Z%h*Zd#&6rj3jPVFGd3tLHMrIA>n4VGM0fl_0>qIPR2mk+f}#2C2=N7Zh8 zc?+B7iY>N~BEHzUz8dGN_uWA! zX-jM}DIa^!5@vE(WGpH7SW$1EUwCK8p(vMJ7YVY%^CTUf)Dk@-zD-yKRLj^`KtKPZ zBFA1L%oQFUl7m1Au3h?b<$u5q_2I4Y6%FNfg#=;|wIio@789b^Vu*5Ht*;T~L0vV2 zu;S@*=oPQi;)S5KR57nk-yq71(nrz))R223s=uhTI>+*k1Wj|lTx%($KD zrx19|DEt)Pqt2qiY*3t(mmSNjP7H?Oi*oH6Xeg^If z!!Ik3VT7HO1ugXzsJhHcM_{aeX=tO=?$owQF2L|CAHt68n5Y>KtZqC{Nt7m&+1thA z_b}c=>g~rYc=j>c_lS;#i%^dbSOOch@6n0HBJ(#XoyEW04X=!~eW^_5q95f&OB*3Z zoJ-q@TeC4Q6|q?%b19dQV|5v9-rx&0S21``&VDSB_6G>BmCoObF{K!u`@i?%bu1`S z#FMPCM&bM~Kz56=t+OQNuX<3kOq!IuAOBe8$dztb<&3e)Q4^4;$WlpxG8Gkda#yU(eYqg;0klj?&8WQWJ$chf(Inafq3kY>MV_ zc8KLIrPNPM3z&r-A7LAk9sm31)UN-57GI5}(7#Gg5FD#shfoo;32HY#Guen>*hG~= zQByMF-2yP=e8>na!rYbL5B(m*{6+cnJM4ab5`ziimi{FkxQpUn3p);*r4Xu=%OSc8 z5{1kN#53rGHbJl=S<^E31GHX2ha({fl-iYvKiZjFsb)D1)lf)*Kr*N9XSLYvT-(|; zJcd!^E)+VLH1IGWZXQ7g!N)?sATYM*!}{olR?J*YO8;DzFo)UZk}gB)7Eh&nrFs7e zNpZ$u(W<~j2~}6ScKh!Dp~rO@jS?x zcx6-tY>8q{%yw@EJgUib*cf%*Xg3_g zW|U{abzS@{&!(aE(rw-dLFl7s$bU2xOnyAr>Dd)HB%%iMS9yz&Eh0GBEWg#raR@W) zr!2w^4TZ$5*o<&6&EFBhcWJ`~y5aDE62h0GLrKepXwTp&shPWhFu4T7`8^^!l>-es z#9Uz0H~i{5MVpr(3ejxr!KR-f_f@tUYin77QmY&{iX;lRP(Mdm#XZ_! z;=`4RZyZIK86hvy2-EDuX?Z3+#yvS>vCy?GJw`*h&^kaFB83ej#7FB{<*PK8e`~=< zmX4z`c5cj_sy4=@K7Mr4P&W9sEMiwsYmV#YId&N&)Li@Md8CD`c>o0yxcU#yH!l7O z#3B_nadDvrL*SJxe8XK4xo_0b9MYPAGs{w-+<&YPqb}J$>wrS+Em|Syt|ZWZOr~yp zGsUc-U`Pw)K3H=DVF(__ORZkqX@zw7>B9j=bf}SG4{#*{3S~g$LoKDf`MjIeYG8<3 za}BBgazfdg-6o`3%A#?Eje55!;a9-aJKDHkG!!m-B z5?fT`d&P;1k&Nh2Z+3N2ufmM7YM~v$Vk&ZGFSd){+i`&o`lvMd2`IqE+V|)nXp}wT zxO48EINEa={#x}v57tm_R5z6IXk^U1LNC*?Fqg`h%DXWZ+>?=0B9#tr${tfL?==7s)*GZ$cE5dQ=^_wouINSkexlI(DI~Rss;d8mKGRnNHBsGfpAQm- z9CL?V95Xy$k5|r;n!$kmKujKafBdeYoF4U&efoyO%XxjqTSUmb5*$wwRu4Pd=tY$z zy)5%cn>^>)NtB@qE211}HBe0$PZKViJv17}f0vIw#qV7nt3{TQp;0&WTm2lF!Q>MP zlfM$>HMr2LAfO91IU$oPE$%+(3;yktf+~APLwVfhU>{HaF+whHDV#QfsS>HMoN`6m zoh6LzXJkM)^=^3BkCj=&LUmS^`Ab9L5m6SVCasle9}X-HT1gTs8Z_)8VGfiIkZ&c_ z7=?F4Op5!dt=Xj{VQ4RjbbGlkNG$!A%Ux!G*i>b0?p%gMSx|4x1orEfl*AsH-i z|5Cn}PXXJf4DsAO4TY<_EZRUHs5M`b%c!vwHb~h|cOMYtV});N^)uD8WS+&_PlM1l zMe(kFOjv}$jK^R7l5rQ#%X~gF@0$0OAIrP8>*u{KpUmU<@(G}Uk_Mywn z@=}9&;4ciQK>YvyJc2V-Dwhh!%$_P1N6xoI*$|;DOA~U*YW=fjr(UXBYm_u%{oWI1 zhd9cM31{}MZ^X#ZO`{_-9 zvCg10L_VRKi^UuPb5GoZsBS++-5!T3`f)U)J&lxfg3#+x+|S6w`t|1z?FCs38ms{e zIV!SgdBRY}2X`91;1kyJRoyx$0U4G}k*Wukh{8?C7|e;%G$6etR9ygRA33j|s%j{= z(diRPi4!Y-@l)NpfZ?VTBEi3CC>TO$MWY`f1$bAfQTb@UBi=X!l^@McEpQ5WoHEyo zv|3j2{kv!+h{aQ$Bx}?p%x$%Y)V|kX-=7WZ2o&BrLx?@A4HVR^)h(@l4zYh&qMOQT zO#Vkj_OC~n757P5h$I@Y<)d5e?*yG#OR|pg(z+rE2tptYnSmDRxmP9#G zzl5e?NE7<-7TYWHI6j~-zkD0Q+*X%IR#c{V^sF`~1Dz!K6@Glh8x2aE;Sjfo1Cn}R z?t&?ITY0c%s$-&jN5EjZT2O#hztU7XlbtK3(p*!sDRw)E!qIPxJD8xqo8QAH6H@4o z2k0Zig5=DLP<>7dH5Ay4wqN?O@XR`$8nfqmKNV_5S>E zM(V1n>_cb595AnBJ0I$#msvW@q06$6vZN+dDFX^`FS5cD56II`&ZlMIf=g`xSqUt( zpldv;c8VQOend`voRq~05n~jF{{%l#k+*sRg~uW3n&!5Mnr{4yk@;#eV}?G!_-tll zI7X>wBCU)sJ?<6CXTVAO#BMSc_-TgYfVP5W%KHs&n{*>NEXVZb=j zLfiV-dPaUZAj9e%zA~NfzPgfu*qGuE4cDbzblFYT~ zG->UKfk3J8m!;+r)VCdb1ry`-#$mN{_|LO7& z{7_3&Rb5Jy*~+p(dZ8n+ot@)95ohVQ872r{+mXMG~AZ9CUL@If;5cEarN{mJGs zT)aITYSRV|@ zR3S5)um>>YnxVIma2jxCM_V@>F$K&|sT}5i?<2|xH6aTLUZjQi^0|BIJ&aL}L!5+w zX^S($Wp&9%Qm*u}PvbLI!w^#`hxxqUiNY>Jd9K)%=KHp^+PGwM&OT3@+?N1vjuyC+ z44&BFTTYyJjt@=WE?faRf2k6sq1b@PBh)^(N}C+nt1-G<&B%IvoV3gqROk(C6`GG6 zp8w7|<|O|Bb_Hr?gbsh?;gd&DG&7E;m5mz8j!Tn#RiLTroKp6A1q^1QqQ@?sCM_ou zmjbl>8i}`yZd2zy%Lkb1fGc~JFt5c6Z;5`0l(=70crV_Fb2TH+X(%s3!UHppnYeyk zK%e{we4--9fb%GBf`}g>a6Dqt{5h}4CeZ4noJ>D!AT+&0tg?QD)U@-mugX*sE1F5! zwj(Yk4f9#tMwDn34feEZJCkmmyNv>!+J=z3{rn}4Fv5bSA!3MR$JBoxJxdQ_s-Hjo zRiaF29xf`k_%u0fKlJDOyeFuMDRr)EFgU4#r5Lp_kr~P;D%IxwXhF_fT)U-Wvlq;JNu&K~Ta$>XY5e7Gd3>Kpj%b5PsP2{478I=&) z(+>!;p){g=-=}o=8l9+}mzL;mMfbgXN|+PH;DTFMV+So!%kcaqcLJqmUBrJulna?e z(#^^(Ho02Th+07DO5FMRkE%KU5ylp%ZgDnJi?u4)q!N>zRC~VRE1=M{*6fg0ujbIm zxguFt2yjA0J(qk-lnG&OArXEwV17R@7kT<5^WYjsgudi6Z_rB)J z*4+7pC=|#r$u|LtNBmF6e93th>{0fn?Hgfu7enDKJu%LV0uOd*A1NNy;w1wLB^{&- zlb*cSMW=0Si+Mehik%hiy8&f2AcGrKi}bXpbM`d-eLqLIRhih+ghassg<|7+6el)5 zY3>BwF+|l)`;eF@*xlv`&E*oTaL;38MTUMQ9)s9Mh1i5-gxSMw2<6Zd| zGYY%QoM@M19f(y`_!ciCQQ=M$EEC&`TYu(&V|g<{B20ALNfm!KlLm9cbQfnAmDB#{ zw?!X;7?qPmrN~B<71v3b!AbGU-+0pwZhiH&IY*9U^$Fu5iNlNHw{Z5vC3f&*4&+=C z8=sTJY)+&^2+KX-3xANC-@ENdh!*_f6fW3K|#%#iBxh!C#C%bm9euLo7Jy#qneqqMFTA zy9iNe5a9_1G-|TS4OAgnhpS$$jp`s6RE#h@H5+8*1nz~c-!7$W3Svy|l3Y$$f+#Gg zO{xZ>JUQ1sXU@+jMe2Sig_{=2JUMXP7aNZ|qlSI#50^kpeaLE4hQts~W{^@xomcy> zJ7`YS(^Zb#;b6Ch%@kX($icXbOG=`%QlBk3YcChyGRK9HS%{9W`?u#LU%z z*1`jb!Yc)8n(7xv+q^aMxLX31OA*#ogNR}ys-QmhZ$nD!4~fn^L)(uyjED(C2(zIh zpj&7X@@r_p(usKO>ZuTO;BCu_PP!=SEaZn$x31$vti?$bJtlDCwmcX}p8p>=%q_SREiE8}jc{BR=605-vUl$UF zj*Vs+Aa{1)boO)!m3{xBt6FoLDmDu(T|rBv{ZG3l@%kjNDL* zj;FcGlG3CF=Ht5Aw0Kvd<%iW}9p*MRoe@a%6 zQkz~LS*xME=xi>IYtHNEOSykUDfzG;@`Or9g7rkf#}yJFKtulg1beDqK`W*ZNvuMS zid?plFeDV>)m6_8Zo)rX7 zGWonN`7}vbb9b@B>jA5&?A^(~66V24V-z+y`LW_^stwUVy-`r@w`(XbW0&<4gK6oj zkzvPVpAj=Vf&t1gw*Cz;NFuai2{%GRA43MI9rZ;TTwaz9T> zrlcVFJw`lY_#YLS5ha(cHoWA^S~}FxyIUW0&k1wFzk22>?J>+6pP{|2#T3X|X6A-Pl(eA~SY2i<_7(tF6ZSpNVh!~o)bATYC- zwehFRa4h!w-&$_PuZ~xuPj>oI@W09!Q{F%Z8T(gj z1eAIMnU;XGoZ(0p4XAj(AW(j8WKA-yAYj{-jgurXU?2rAhtLRIo6aAycN_u~(xyTt z-Z&{yW~W283**uZdtM<|T7VGw6IwXqMRKBSDBflgI*m-W&-%N|NU(M`pz;tZj0!ha zH|pQng2|`&JO4Yzy&EYyjDo0sQ$-ahA2JE8s9Y;1Ms^f!(`d$hz{)CeFfa{?;n@N1 zXx)-(Sy}yaOgh5XRTN?i8RF=4KzR@aj&yS!%BST5cD}Ox@<_neC}SL(L4(043hrHP zW^{>WtFW}c11PmMKFcEhFkpe@#IIz&wwq#(RtjuXykQV*2L*@$vGpp%4xBo~`c_-8g1UD_Z?@W)*gX!DD;)EQiriu%3Q4#Ql(y7K zqZR|Wtp70Eeh7%_WXWS8%w)vVq=*w6u>@ zoM*~vFqcVSnCP`^}qkI0WHuBfZLkEd01Rq>icMHq0himL#5zirg8d1*?6jfl_) z(cL3zYcO_2)JsR;-E~_%er@p@knyVjo@bWh9%K zk|?8=AfV?5QDgSD|A&t9CdxUozIAdRVaRO^hQ?_8pw!*{>&veUMp&f4cD2=rInkqC z*rOD>ttIj#rlabBf=beXs0a%ZA9R8M|0q|w=FH;-CIdE35%E3_4TeI3vT{3T#>oSu zedLBO40z;MD4mM1e+ zcphvpM;GE9M{R#rIg%i!hp8ZX=>R)?HAau#d@Sy)y^5nW7z$s=L?=o|tGrL1lJ~qC zN!I^6nkW?HlRbgBSrVn45|#)cUFx@=|51_2e%#pYrZ$7`JlT)3dxQB;7`ne~!}|~YeQ6jfTu2f7`p8AKp=qJn77P*5V4Rs_ zg#8PpXJ@#E02IA;eS_7if;d~7RFQt~K;)@?>El%6Smo&N< zYn-SLuWJ?%2JPY1XBzk$!u_@;!PLIkmU*#T~qI!OT1CEJ1r8`8oFlTsYQn4r zRQDFO zsb*hgDycff=Ib#QWI~~(K|n!Pz^weCDM|iUIm2))o|=Xhv5_!@Vt8DEb5}zJrf_K! zzek7Q2zkI#*zdl2{ge?6YMp~`8Vd1av91X1SIO@Q#_X>Cn1brT8@`3KToLF$78nb4 zkpCE3+P-g{9DqfOJ;E)L^;Zpsj9po{n39yG={@&f7@}&XwAxOT8=g2B2th6ZjsH0s#myy9QwpK{UoaJZlb&{gp&kjrcI33-5f19 zPmGTtc2Q2R;-_f?SlKd8RAJPP<^R>sxL^+Wp{6l5IRj$o5`}J7y3^d>wr1M5$q7G0 zqfIIjI>a>RH5B}edh;DN05$KU@5e2E4Pw=l(5CPkgyA&=@4tF}kd0?+R&L8!bTr8d z;YZ!uL^+UrBJ%_&RbWiea){}v`s5D(92a<#bWxGWl&xWz8<+)!Cz%e6|M@`G3(MRe_t zh{Caew&Z&5QFJ#osymn|)pON{`p74QIm|BDuzDE9>0YDD-xzj{HP@S(}$ zj?a;qixhqFJ%*TCdCt!AfBsGhc$39g#^mmi0sA3cu*^ zwx|Ut#L9;ZvG*IIP~97)lwwg3LR#j_nnW(|jZLC<#r*RfVaQZPAX+TUFYyOHTswLl z{1~k8!-@XKK)IbEMgtf6&hYe3^hWi!Xy^I|K2edLFN9f<)F?X%Qn%G>`TXy`n3<~E zjPX(cWk-z*Ro%qfJ3kqHk>_EpNxg9*0Z~3D()fb!)fkE2Hni%~bMbF0V7>o4b7MV-sXod?$qDnI!IMn)4csCx zrsVf10*DwR@w52V6Qx@=k2}id3sDZ#cD2c*YHs=ZjoO~%&QQZ;>ZKtHTn-O*@$+w9 znoA>|uUf{IU1~aKf^>vA0aIU0Z}-gJC2svvAcKZ-!kZv0I&O>){W~{h;@zLAloKRg zX2M(!JPU|;2*Qq@EY+4?`gDpU%+5xX*MQQxf|%wudY5isRiIiaf?&>x@B;MxLpx7t ztCAnllZ;)qCBnBKl~4<5m08J7yLv;e$7J^DwGRV=A(K^ zlk~4#^oLbY&W{ZF3Gyf>0ZDx{{JP|Q%!0{_%p6$dK%wP;kW}iwXAhlY*xWRrY=fIO zDso#9qEKWjq=qG7v-g~QG6=BDN}#}}VnD&m$8c4>{8E!;oqYD_B8*UdAe>iHLpe-n zj4H;+WgfF+NxA(n6uK7;-SBNo6J~Q`lmbO28fN`_crJ*|S2S6bDny|p51Jg9?Qnjc6(;0r2cC_5j?RZF!iQ67WK7UEAMXVSJEmj5iql2bVQO9jWg+9{N}7vr)&NDX4D)LmRa6vPhBlvrZ^Yk7`4b5<1s zKgwfrA<5*)7N-b9RK6P%6EhjBslW$QFsLKG8!rDL62CsW(E%iCdys*!kq zDN#Oz8YAmKKSnaYcCJg$>j8EFwv<#`T~`ohvsz@E8rDo&T;at8s;n}~id|hrkR3*f zL(JR(u=xHxlKBNh&WYv>fsd z*^r#M^}%lzB4$3SW*5+gVw5<7Z$`Legz&1z|m^f&!59Jqq{6f4Ku0!>IPud-iCKPJlV zay#Yg1NY0$!q>hZkJQ!EzG@*1iOlenFqa91;e`3ZA)2z)+*$(sK=!d@W8|SPM6q9= zOlYIG^2*puuj%GUqNu72VZM}rd63dB1B*Gcu$>Ej9DWvC!mw{Y^!Cl>$2& zhKg|H;j}<$@9e=gkU^nJZGV@rGZ1QeROa+V`H&=TlLeHxWI5Vht2Q3QPAa@#nTaqa zD$A=64_opY+|WLf9Zj9JPP*{Oj<|oG1%m7XXo{AsPy`&4a!~{IuVQ$Yve% zJ{<ZJ(X}N@vFkVm@uKXmpevDAaYgAwgBYV1Yc7LV2|B z;V@8hi?fvf9E4DScS1hA=ISbQ0w@=crDL>R*l#x z#LVEEhC(#AMb_!1oMsyRqITR?;p>8=g&sW-(zd3cp52q}KU!QccSB=;t`s56j8{Wx znNZiR?efU|8Zg!V?@^2>1Z+cb>e)fmrOj(fv#hsCnb?mdQil2LsPF4`%LE28GS*xk7!H&gBWp7O zg|on8P%E8R-Eg(eOQ6(R8B@$eq4slZp0Xz2-0goAo{*Bo!(;Ysz)YjHu*Ryv+|H0P z;Izo|9`2Ga?$VF8azr7e6rD%)yytFzaX))?UV)b?XULEW8p`HFi6`N+ptZ1Pc+0nK z0ehrqqzaV?gEuK$K9q6AT;WrMlpXnWvMvXiT(#n%sZ961rLgO6 zP116k?2cgC2UpI&b@yjVSA~ve)zOft4q!GTV&WabOrn|?pZndX+#q&ZxgFf8OO)Aw z+8g4aCX=ZX0K&&#)VFX0?Qb2BG;smp-%fA0pcexe)NULNG!zn{;H8$VMfK_LF1@S= zl$ws&z7c7;%qCON^W{W=UXdW07D;=GmeZ3Z#5{^cvw z9R4W(_EGLu5wAUV%dRQ|rVt&5*tGhIm3*HSm1nB~g%osCFs#e}I!jpLIVrS^yZFjBT{wv_rwvXGv5o-;+=MCo-fc7@B40mWieluc zOm&+ z;b@2>V`jL_1Fm(S)ChuFOxc2$H58(wY%XEsa436k?l{^SYoH#_4d;>;`jz16J!UX| zEy1O8{B)%Rz2R!1h%@sE12e;=MMZ7i_WjA^>=9XAIn}L;h;rhsO^lF6P6PMW!gm2m zlPIiMh$Nm}OcdIm!1f683x5+>xhqTgz1JRrhFkjYse6ojo^`y3pH-i%;x7XVW#hup zr%;cgcHEY+Pl_n4Tyy1qm3jqH;SmlL;1}$om^9dtwew04Q#ID3)f&u>j6Gr2atnS= zI^h^oespCTVzlG7wL~ET*Ju(7i*k@7sdEpjjO}KpGr4m!uO|$-DCohipBY#5{?o(!wFRT>>9C$#)Uv^}>u0wl$fb zY2m_6Edf(s8N2QQ3hsDkh-ZQP=<9O-j}9w+k6zM?ihQt-C?D&|sBzOLfA4>NJ7T7P z9T3V7_d&uC;DTpw{mgiL{&g>11Ku@WD(a=uIim24Ws<#Q?{o(&<HKKaZcS1jdfJXRB z`yO%mA-&SL;&;<+d$s{XRcony(opav;blkvt6YRMrj;E(0X0Ms%0C}+EH+fD58gRq z6==JkerVDZYp1%spFY-LZX??5=!sE}^clLT2@90+*+Fh??=zz8UK7fx=uvcgSE-x& zWE0Seqw@FT=Y%1x#36HExZ;slvP>F;Wm8klTrY`2@`Xn}pm7H@7`MDm0uURe@FU(k zY6QS=JP0=O9LnN;^YR#A>PuGf4;nE<<;&^}EYndo>8+}Zfnvuw$&W0biGn>8p{Iq% z6cS6CGErwffaO=lc=an`9y|mDD@bVa#e-;7;eN&WH26?4SI&i{0?O;PTIFL3x%jgG zLUU3Kk=7S$=?6bikyGLWh8$6o?4wPo8ntu4KYU>QMH%6qgan~{E$W@<7n+)GVw)ZZ z8LYrZ5y_4ONr*CKK=TjjdyVO=l6`nG{sB_d46>|AAVh7o|9dx1Qn6dP2=-)V8g)+%gc4g&+ii$SRot7~8 zAw05viN?=M)-l5|#L5b1Ql%%#>p=@j!B5J`>wB&1JOHiX>QVYj##CVl{6Ntt8Cgl~ z^*;KMV-0t#B(bhNwo;|CAj84i1COz@C@-HRsXM zBJsf&aT{<^IY|tbScH7QC-X1O&Qc5}9kpgQn0ArK7I^wK7J8gZxLW+6o#B zJxYVOEKNmnW_K?XJy{7eQ=jW@RraGCE_nyxN}p)QyzA3#o15IH%TG zTk6)gFQBDro#NGrGJ6at@S)!>q;)&bj_&*86#V)%i9!{lkkVG1SJ<3`&(mh}8SC;- zpnZ{Is{djBNzIHKrpKlN2DLnlvDO;OX+l3cF&s|fNZp9Pm}KHq)-<94XyJ(sZv23` z=vRW=QHP73z0dOZ|0&`+qLBu}olSi+Km200XA3x{*6umelqjPM)!2k1fD=2}qip{2 z7-HRI9YZB(Rdd23(1%Y3XHiwu{rp?j27t{{W|jnfZ`q{`rFey^h_TTc4QIvVtfK#2s=a3Rr%gHvAqpXB@ZswWCnn+)(~Enh|Pc`bioJ z)rk>|tVeMyTlaqZ?k!O7lvmZp?MW-b>OzcV49dTD+*(sMm+HWD??17A@{sP~Ak2(L z39{rgSD{hz^%vq!BrNUHP#)x`iUW*lt>@cJ`x*akQj^3pcnL!+J3^-QGo#HiZ&X%m zZwyhj^`CXtPzb$|Z;!kSe(idFHLqujm5_|lU3q|^NmRHzi8#bx%12+_3>5mzhp;1e z57Khl9Ozb}A0bz)U!4JO>SBZ=z(nb6e$|U8ugU5Zc8ZO=Epw5SzsKZChtP8M0m^K4 zyWmUJ(+Wt>yng)N>NVO-;$}qi+R<>ai5Zk>6ua;sQ5L-AqqvyK$-uggfMc#5oLle7Zli&`*jf=G0KM z^YwL-{BO-|Ej2c*i&M))PbDoEQo)1O(_^)A^ug0Vlm;=im*A>tgn2ARyawp`MK8}8 z&kqYrg3W5Z+Yd8{^4gGqt3+9>8o$_)9kiw%apomJAV4}JcxZz zuHzHtXehYg*4Vaw$%vbhTPb({!Vf}Sa$$b@i)Gwd zcDOSOday;UG)9WQA}y30v&cG?tRBGP=vzamFva0hyhtMeYYNn zJlSGbS>u0HWR4^n42{m^6CkgS)xF`@j$m{Sr4Hiblth8?xX$UhLG3qkQ@=mXU|wp) z-RN{gp%Dv0*&F%l#tWvta%Oe^-1F6knW-L{lNmIa9rYvy7r9q#SHj+Z05LVsws&Tt z;G(z5oH;J@`(_JU_~O1sOvy@^3;p6F#DPUv_jtCViy^b><)d*n4TZfaFG5`CuLVwx zW^K7s;G}MgvEXy2?1Xu6Wsz;d$^7$+#x70*SU&7C9So>{a{%Q*?Pffx>X}bn`g%*N z-i(`9E9$1tMU=^efE#Vef(4(+#{C`t9l#`0wcyCSJcOaX3BtAX#CSZ06{u3@T%6@d zv*shpfgU(AeTx%ovSdM_dGW$rVG)ucm{}S-VBT;jIQbYxSkD`WzVC%0s@3IAmn8~r z40wd}Lkt{ruJZgIS6lRf)PK)IcSEwb$xL8xo^q5eP+@)QY{hn>wrnQ=A+E-l);DU{28sFCs&)Q>BfVn#h^s-aNbC-_F9!AR>|s_yfmAj@ht zT)fsqv0<-Q7{*k_1A4aW#YeGK;JY-VuD4Ac=EFN0nocS6`mcNYEA$UL6f>%22hc*T z7(C<)#ZQG`u3NZsd!Ufb8p8U|4h`jn&qt^cANg@Td{~P~fYnlnjd1&6=pibEj(c=z zqD&25f%U3Q7SV|)V>o>K0>#twQKw{YnY$2kV8oufsP@rCgW(ZJ)=TBq4ljCdGVOxw z${sz~jVKgQ_QNYq9V(KGK*B(UKtv(bb5u1?56IT5HVequ;t-;{g5SotC z@q3;IvlzsvJ|U0RKrVB*A?SV4WQy}Lb*;E~*pxUYwzw~8A;3RGJObCurv0_=(PUhf zzhH35q;^B?d;zg2D>_s|;n53GNqRLx@kvrXL+7?Ysn*7-|A7|bHIU67;Ff>qQo=V6 z?X-*0+D=94iVP+U9!#TjI#bhmx^=%Fx2C&0R70U%sVJ+br2}_+ZX3T2w5qFlSQSTW zFf@>sDKnJSnw@%Yd=l@qwm2N(&54zE@dl)(=oT8E+6NeVMHr>G ziffv=PU~N5;*>mzya;(xCY}gl5$Fo*l93BMPljAbRq}rrqFN@d-xQ+2LPS`^E*UB) z2cmG&OyeK0Vy1LValg&~ePLTV=_e}&npH#L?uVSW*q==rMjN5b;p=yp<}zP7?1#-D zEh~$X1^DHc1j1%z?vkV&h#gRfh0W4nXoVszPtH8)$SE6Mfayksm}3r5s2m+(lE*eD zR_Xgaj~QNcK`q%da4umHE+<-m=x0Wiu=338(S@Nz;?)UVoTu}M!u8Z9ea_q&shhUj znjFLXq2y#i8X1+IGEm(E6ASP^DzeWGz|c|)P1<#u!vCBbufiWcF$P&xftPj> z74F4ZBWwfmBiGsGjaWo}xpM9%-Aj}S@e@8NRXh^oS*vlrZe@cm2T~M~m z@}n9GPw=wc1P_uumAZErjv>wo)Of_AYy6Ljyl{dr8{#`;h67i6&-iugmV=G26*dk! zO%#d=8-ne!@sobHZ`LMDzcYf1v{j`dsC-sKxs8x3adRcHTIYtfz6oM#lI`5{ggK$* zq%cyfO6)j1i~97cqN^5N@T1&DX<_k*3_FtiCm&@PZAL@Jm?4@l#PXuIh@Sb>I{V9~ z@-k zKZMJB!_oi+Zbit*ILd0CDKA@|1iQYf<$p>hAk2-<5VF}Ii50YF7{WMamm&zc5)tLG znN6}08i}19u)bN`H}2mOr-4y}ENwRek@Uh!Hl7TBzGXCKmNIbufK&WLMb1hFVkltd zf<6mHZA~#?O56ctl~NLgtOYnsVo@+^C_hCT4V=d|ifXUbv8f3&!OPP0U7^3*|%PD--w0=qI@c zt-;)BmPj?bBL`8q2FfCyY-i=Xa-hQ*FfTm{XoraI=$u4(O)hjoiCrrHO5N)FPuqi_ zqxQ!boEInu0=U9u84^A=7VDGNQ3va*R`KjuAPu}DC=`gGC85J87OsJrQ>_3@&2c|l zki-zg8zIkAqDFtNo--x*uwC&V&nrxn9c~rj()DSXzEjc_97mh*cR=Mae6kc_cu2BI z&nHi-Yu0>|D}#-z6m8=%5QW+wNL$l$k*L4cjGN2$aF=l8CkZPQBe&Y_IvD{N^ra&< z$&=#==*#Vk zC!bHa4ii(2xV+Vtq{$_V-(_DkhnQ0l zx_-5Yvb#M_{iPWCGE|4j9lxy(VNP#I8CY_0(fwvKJ7HqaAg)rtuWBIlMuvSF%KL`1 zZWT=tjF8ZbU`hw&qjNpda-j{0v~_4P)=E$>TUHQjt`M8ok|?h^JPz;3_!914=^dG> zoN$*~0p$*_?Q){CnSPAaw%5HAdi)43s`V24wIR%AG9t!CkBafBWY624-y^xuBopiX z-{NzpVz~H0Vqi8ncC4g-)Z|y*7K*l`$YzL?JezD^WJ1CtL;xa_RmUdAVaT z5K~`{EZuoBcpN4d3L)v&jtcZ)ib3BjfQ4QX&}*+JiMjcLEKnR`g76Zn`(t=zmDlRq zy@5iF+Xxip*3n9U0v!HkFGC0L4;(O-WON`0^QKVmL$uJ+;#%;@HzwR66e=+S?bz_0d- zHCJm0QErzhq?Zu2Q@8pL|2_az8r2QEaTsAJnPHNhc(|tbGPjt{sz8+#Vl#Yc!jR&I zGL?ECr(akfX4`hE878LM2*)C!cTw>a#*bIHF39|KyWf?j%1Ee)U6oNJhN~i8qV)Wr zjCZKxTf|CH4rw}VUmN17M7knMepZ77e{amqMjo+k?)9ZyUP@~Fl{p?AAZAPN;{&GODft@OTSi9K}zQ|p!dGYP10 zB+;WKZtTSTyl*xsN8Peuhgw6V*;EbXL+XdDe83RI^f?l4V5L>Jve4V65f*`#y|Nkz zrK)UHw=2v_?5!}d^h^z9^F~C7?V^>#YWHB~xws$C-_IfpZSl~RTt73OL$2FP79YTA zmm5ZwJoI+WCJLRIt+D!+e?#WayodUrsK}*D07FD6^8bY_lGynt1-~(@ zx}0*F85@qvvEIx~12yZ{53hn-Z0gt;CV)s`O zX1AiklDMFe`PF9L+Re6js&&(MEm4T8Mp>0mE)MrKzSf%0ULTZWtL}QjJVuW}@2vJ; z7LJB>`cwczRBP^dekRHr0XtC$BlqU>?I{k@(WiG|w(wgVn>GO!fjy0v9Q_zMv-ufj zHu?@j?4_{r))u00FLBBD{eVqfdn>=kVTd4B{jYLy9@hJ}*?0`5yW+FyqoEMOhyJ*F z6rWmCmS5I)A5iM`FYk8JLKy_qnT|ol>h`-$e;Y^jqMx~c;t6+XFqGW4DyLfeCTD*u ziAN|;lTZh!$s97lEqImqI>>4jiJPc8F`Tlr;D0Y6=zXn6MbEVf!xmBtkn6KXdHvLT)>Nq1G zHgsk;-{i0z21WS1G>e((uNy=nNbQ8#S8Sr zsFr?wS*tIz71bo8&NqpQKzmQw6o3;;F<|9PUN(PL_HOe#MEUS&;gM$ox8czt=bDYf zn(2Mu{vr0gOBfPFP?1VML^A)ULeoYvrFf-sB;c$RBLCneod6iXtt?&sVCocJ97*uHQIRiTMcFL_)xo5 z&qm&^|J*dCg%hyniZbi=UW1|5t1Q0FnO*bNyZjV0W5q1V#aADQawEG@zT$9VzFk{; zO&JAZ2^9fJ`~@%zG`m68Eu^Ki3Q1u|h6aXIBdLY3ch@`rAH!25m*J8~r<3h{5KlBj0~ zhsY7l`Tcp?%-Odk<6ogugGG9o1BcW#eh-}h$B$qS?T+!$b+t|$F-4&Q^TZWBVR8+H z>#M4iE4*4@ZjBME9*c#kh{BVOIT&5+Kcq;kSi#@B#QhYMGpz=5ATU-;lq=YwhV?#Q zbxJ6rc{RO;LYZh;uZHX?{9tnACM-o&^^mHbi7*@9kmOaA`(R>^A=P=QRNbiAvJmBV zMR=u0l&G=)BsVeANqtc3oGoqrFc-pN&=Omm0JOty&s~~qDPU@mjmR7zhE@pZ`6W<+ zC9Ro@-?N&iEa1)Eb+6By4T&%XwGKot4dsNhS{7d-zfP7K{rxhGMGb|YpNF(u7St#R z=xqOz@?4ocH{okaf?5^8k&iGp3;}78QxNW@{$n+7qUxpLb^#5Aa)t7m#{N=n;PQIYFPkQm;pjEb=`uwCjzTfs#2p`ckQ zg7C_MEIZx2d|Iee`gZwm@IjXG*ize+GysNtW5k$>^MMm9vTe?exXq5`;Y1mo&XAIG zM18ewoX%Ql`89R~&prC`CYT6=?t$Y$H%6^$RJFyOS_D#GDyPOX_DM%7(t3s5+-7M#10nr{@*B9cE?~%%CRY5YNDEgM2X$#whqf@u+s={+l^* zipSN8L_rcGLAK;E1Y3xzRvM z`jsj8Sq@|#6%VvxLLy@V3NU6=WT>veJTR%03v8R~i7WDjnmx%RKcZ?9yVRD```6vy`WzEgBfsivD1;A$v;+^*A zVs8o5r41RPVK#}G?WlP#X2vD!lJ>pr8Tp|s+5LG$Iq{04-vPLpk&S2nt#hg`U}}e} zPYVdcfo?!*hc2^&D#5jOOTra#s)QMfi1MJ)o%BbOR+dLiSN;cDd&m!+hQuyyyBIL^ z%0VeuVSy3$_k}Eb7&nnbF>m@UCCZK_7}7b#A@=QQEyNd@F^YWrx|}GV!;B|KVM}q% z+Sx12Hi6h}Wu+^xBn%}jLws5s;uLmYN8;G*lKz%-sjEiak@196JS<@ z8-%X(thI!>?GB^N#-V)VJ(j6fZwwJl6GG%;-)5q;JQAV%>67T1ZOZ>T0L4y4Ja-G= zzuG4%ve{M*W(t@7kAQpr?`_)GNaoUaxbjDKG`RSDbU931?S&Gy9Vm|h-T?Wq%Nb0| z^xeHO7|S7r$&M(Z;JPvdBf$KMf+BuueVst-T;dL)c1qzrgn=Eht}-q0`IqLkW=EpH^*4sa5b&-0 z2y#V4AO~DO!hnv?bdcY>@lqiBSyH-|7tGmq0+_5u097E$Yd}D&S15#lj(>KD-#bw? zL!K;DyEmqp4zlE?8UT>_u!cetN?8bpOPBCm>U{J9W>l2Z%PLp56a_l)BvEjrp@+8~MKS3y;7C1|$X%A8 zW9SBXeoBMkE+`v~aERrm_)0LKPIZX&IYSisR^p*ePb^SqsoA--VJHiO7dZKR8uJj^ zXqf+d#45-Rr(A_5@1A6f2deeKQ+Xb()KKgnDgr8k(F!Neld9Q+Vq`*#kp*?@>@^$k zizqA=@~f{jloeZ9zMql z*_gRNd<;?b{U*Aqq0m&yDK-$7CfSyMcCutf3grYTbv-W8_p(zj==+lilu?4F(w)F)I3gt4$T*Q^EBuDc3*niHbb?fG~@} zW0rN8xMn}?o_wt`h_SMEh=dnO2b2{-WR7Qzoeo%@a53(0!b!-Tgxkk%3U84Dx zqK3d+HUMUXGaRXNdW8{C%PAtX@7*jrq5qyM+OXxUZEO^OOp&?>4Q2L*TEjeeHW#ep zZ3&d>j{9mNEff-tEm-1L%jEKqwq52gz!cQb<6#!UQ2pH?J<8nvl9RRVU%8svK zCkkzn46>Llx6{8J+9VhW)LYfxRG=JS=%yZy9)@~;P*(3f%2{9_xvZQ4C(9FscY_F{ z*zuHu(fei>+67b`-uz1Ge1PG&fpMZIrk#oB{)}>AjB4l2T2)ERf*>y$LPhsv*86pb zj|4F_`S09!8p?wwJRL2V-Xxawk0a4tL2R_L(t~RdhIYbkNsMRW^-Rr6)<=wmTIw@d zEe(Z&{pxn&R>cUlk3TRo`>>Y$b5wl@`SZZ3wo>~Z+2A1^Y-5Bt`=8qPE+@L2iD$-u z+4!2@n+#TuQPz0jqDBuWv2!D)uD+D!Y(5yp-{pl z*fcKI_SlkXR*$V9rk3T|*^V%DQ${4AUKFUdP9A%^w>eO1$i%b`8Vdc3^)Fri7`*il zZ;Z_WMfV??jD={sln%mNDBY(%#$Bp4sL)x=Of`?{yMaOy3&I4&0mZw@4=aC2PP;*^ zQuJLX3OQa+y=HkDQtqNEoEXprGgAY>qPmip$qdaZ{B}G;M?8KyU=xV_sKobF?@kl~ zYH(YLNHs(X4{t${M9NWV8ch^Z$z*UXH|`(hyrcK} zNrf6<9u{m7cjje-DI^AmC5lSxrH3cRo7<@$u8LC*&QB!@%}G#*Lx=Kd z(JcRSFIvjT=3q2S%$h|-E}BM|8{Ow*Spd2a9m&3q=nJ*qH+LvMtTTbaQxvMq3jyaL z-|zC{v#gikui;iWARU_jcCH44Ye?3(h*9Q^-1GT8!Zh46-jDhq*^Y)yuH$Fb1c8Yf z%4~GtVyc^Y;0ls`%0m9C1vTenBb%5V(&#tsdxrz5(&D|HlC*rzr*gd8shL?fH54{D zI+(>l)%X1pQgu6=R_Su%zRPFzjpO^X+D^fzp*&WDtWZb>oO#l6FgsnSFQ8kOft1Z) zvYTUDWtHcWakqMIFN@q5XVLA(D+mim1tIxx8qgdCf93a#nvsbYRG2B3`;xga1BY_R z)$^lVUaLcJlhRwb%uBlnstSr>^mfuh|72${TFkFGD2GkLlaJ+Ad52vl_oa6SVK(HC z$6opPH`E*puC@6u7lz16#!{z0+UZAmWi=y?kOKmSAAcK(l6$njMW&iT95!U_0&m~l zzvHiGDi(P&4TS_Sv&^*QY*v4~Sjd3csE=k9_mdXeiw4)x&je1V*NTic3WL~FMLEqp zK$r&&j%6DON?O57y(=1kQpUD!FKyNFh2AOg2zwX zKe#X7_TIenXN*ua%{HGPDU|v~_OyOqa>1T_Xzy49l={*Z`6p4(AQ3W&z(;nt;=d|U z6R?en3Ebc`VQzG>mOd5g!D~}HWnjU?iSTYn`P+SlDAawH@yR?)BCr3^xF|RtC=0{& z*FI5^-Og($_zv_|y5C4Y`C^=>6?R99{Gsc$^9oUjYZg7%{RT|?*BhSF#G0wh%XR}O z)QfibJTiJlJ6$V`NzFJ1^)NYhlQ1))G2}xmdH?#N`}fn>D23XE4zc|mqAXq%!V@+Y z_oJ!hZ|0J56KnF6Fss=RQb9gOeIV4o(N; z9qR>#=Jk{#A6w@DYJsA8KL1A)0&qiu%*mkW6IGh&ES=yQ!o;iaiZHZOx5}t{a_E;u z9sV5#Vp)~tDD)O6lmK%fr$9eM?(iiu9<@t{)ljQjo++{x32u^J@AbeQb3)IvWITz5UH(gnrdufQWdr{_2h%Xl>TibfYn*cRj^(OR9 zM;M+0Eb4RVjAhl6@u&||bp50BM0vbuO{};bcdQtBcr{QXF+{0w#%D~Aih1w=6takZ7{@S;DsDw_W~Nq z<%=*%YlCBK@$~mARKPnGVowVJ<}tuxH3uXZ;^4RF3f%lKx+;jxQHTvILR7dFmFI+> zfF||TIFqW?O9qUn&ZfJ?2s2t8R+&*q1^ldKt!cl;8AfobBvBD4O)UN9l>3T9@?T>y znu-t)KR;sl9~HT}g$DCFLK*-P)*@cR0gRqkqqZKmB+7*NN_jJ&e60QU{S(Ht%u=?d ztqoCJ=LnzTeEV3j_v*NP`)S${X0ao(Osq6DV4*EbR(+2lsv7WwhC(lT@qq0=p9^I3 z6-v(vrD_Y0njJ|D#hP)|)(ay|#gvBQskZ>NM9~8u97N&994<3`sM_b1$<@#Ulz0&! z{}Djr0?dofT4=whC&n#(HA96fX3Q*F5v$f7qAX}6D|@w&`QOZUcXfgI4pD62?VX51 zb_D{U8`bs6qKjnv=VD-ykd&G!{B0kMGNPhMHJo-1BxJ~n>6KP)tQxh80?!`nOM>}K%sh>Dd1IWLSFtql<4%IIixj5t!%8nXGG8LP=|MhgP zVjobM*YGV=s8+8g$`Kyn()lCkhoXw>Gc|q`yE>{aw8D{r>a8-*O`;IK?J$e&#Iyg>+BYqk2VY##fYBNX zrUpX4W5z;->c2+)wPr)sx0rb?g_sG^99ymOZ*j|Uzt zpezzm3{~mx^Q{jG8T|aTIFuf z>nDIx4eTqA($@pbh$wjZHb_|g;p2uxV`gfy|G z0J^TRvZ7J12@AKN&Xn-_Y3!T9>auHKNAR`MwZ@y190h9hN_CXQo-EW`|7wmOiYW$7DC5 z3ZK{)oY?x;sq(W#f!g`%QoIZxhE}t7DF*jra;CE;OTGV>3NZ8?v?2#e4`V9r zqIkWdnc6i&k=24}iL#=9yUabH!|1rdQm-L~xD1?>Dn4C?3|Rm}vXxzCodmYq*o^#H zC*n`#U6TANxggKOa~O=;ylIn$a(j?SBxX*R*WdlO)c+2stIA2bDhp^?!jWMad=aal z?R_%rNy+U0qcFEu)--i?4Tdu2^64`$g?u^ry^%$j1wZ+#73+2yPkySem9_mSH%fnq z8$0=VpihxbUon>BV5a1!B@b!Ac=HB*ecZ0W!Yqwi=hObc8WCcHQfzlbe$2_+sMgz+Nqirzz`s}%A^%)#K=*Ni+;7kUC^h*1 zQfH#TLFE?o62Wc>MK`O}VRG>(#Wt+y0+`*1B`be&4Jjp(X{%T|1n@W23p&+}D67Y1 zlGi0VCIfFw>z-4N;`)bv0{*X(2t!#I8o29cMq9ae-{@#YFKx<7&+bl?!-1zH<$zvv z{easKr5dWZTu=2R%I(A3wsbc6jcwMroo_&<<$w=%(%@iJaXvjGRUKuq8|qb z5rqQeh-7?vM{oBnSynk~?T15%0_(foC#&cZgw1eS=4MPD#y%LmP z*edFWsndYXJb~5dw&@L`P(_ct7`^a`y6-dX$#@JiQ*Yr%ogtV<-VbPQH@`k__%@(k zQ{>UeLzIbc6yn4n>WHN@p3(ju(2=n1*W@4Y-}P!R(v69k@tU3vk7Yy!5T7eVFmR>N4D7yiVY?}Qj?^Z$05A6GNV{^b%!k(#9 z2tyXDS(5W{X0!j1pTT}BzbS+5_Gu_L8nub@g`3mean4p0H+6{mQ#s9E^Am=rafJfNkA>tBf`wcQ@$Zs7jAKdjMY$FfHW{!3a#gRVNz;k4 zq1leU!Ex{^+^)(YHycTW4#lwX;$DbiLz^_urdI6jIWYB|jy% zLJM!f{*_Sb-ikTDJX=F~!D}G9kaK239%*_lA3H-m6}Qg=4Bi52g%A^8XV#}*TYR&}`M=nWCYxTtx(GiiXSbmA#XG!%-HNarNO@d$#UJpEF$8_kY-bwfPpu3Wm+tPcL$UdqQz)KDgq(dH2e=sbIV9Q5$_ zCdg}yqF?#zI2L>b-1HCzod!X;P+s4O%{P_d7t{ zQ&0mp5#>ONyh->bT+(Ze13TV;MmBs1<4ZB$2oMIQVXI^(rv4;8k~yjfgQ-!q3EMOj zEP_m*AS(6o=G#_Rs&(EkV_(EzUI%V&;uPT{#?h@&C-y>&#fpuz7h*8v;h_RR%q+YG z+U?};(WDajsQM+RlpPI+O=J`A#!8lLKMiF!WA_X9n^ImoJatDrzNM40q)+eSSm-=f zQ6LsvQf}kMx7UuF40)-{^l9G_2Jgx)Kaqy!cGjUiZvmyg*SGjyL*e+6^g0}?|J~=; zHbh(a`fZgZ-MU+Yd0kF<@#NyH%v)#aikU4@W_J6(M1j@YCQ~qIcngbKpJ$xipjdg= ziC7dN;5Ow{+%#ths+LOC~II*>%Wp9kD8E&3>D1229yysXnIQ1;2UZ2v`5eT z@rBWvIJo|ypMd|?4Go13*m65j9Ay)lE|0@lO!JeQaOodJ8F9^(sq8dLW0vJ+m0>Wx zoJrKrw~2E2;Hx;o_81=$yg_cNzxh^gz{(UuarrJ`cvy8yuZZe#tXoWq3!kWVYjXXM zD3o(M*ngM_QK4Bg^I3>k(m4o??-k8VRi26o41@!gk=8}Nq5iv39 zV%phVXN!UA7WUc0@&|!THNuc<4`v#@A)pwabX`7p7_b?N_g%FHQK0NLOI`?mV!QFb z_Tp=n`iXzmBFbt2-CcR+jwXD5=6KH(b8bpn>-LWW0t7P2f}G;Qei9GM%0E zgmM=qYA7_vl`JcqLF|Q75AqproFcAqjW`sleRTa^G%HCduXtiu3=8zt7)jqIgrOrj z2=w*p!@<6}m@o92Zc*nzwsq9$Ty^}@T5N`Rk$e^?u$Ob(Ec>-{!g6y3f3*Jm7w$IK2Y zR;gCJ2J<3rA^bLKonw1RE|*Nr036t!D2ow<)#8%DvBrG%$DS8}`cWGzY$ddByxM^< zRJ|aitCt5?`i0_>NlZ6X{eIWe8VY@*WgapIThi@RRVPrYANyAVQBEIv$jQ8TRX&b=Q86S7pg&!zJze>-9#*@xMN< zY~CIk%4={~RSP-)sRsM`60IsiubvnS%(O;xITbF|E4VXi4lf#2d8+;G=Ltg#c05Ar zwT>Qof8TW*qm;iWM!e)jqRbZDQx&`U?YfhRvM^!C37x#4)2oXi15&L5LV8T#{ zmmn{b42q_GQs?f$N^`DOzfKgIBu1p-P*Y1sq}MHg5JPMa73Kv3nM@cm8W#^9c6P0ZDfi+dE8SSQd{V$go z!r*Bw7y9Bfz#JB@U9!V)tkLIA$FjYa`a1IAbb_o%c#}6wo+3Wq+=cnQ@rjQs6H7`b z%w|U@TU^iRD81syny?vzv2nGuWLswvWk;s10$I7 z1IB4Hs^5uf;67E!Q@2oUL|$m>~bjrZ3K!9XJvH^ccUQ6MaFX-tg1 z@!cU`nM+w&QaRWw$2l8J~g`%3Ri}QHzVp z>ectTSMlE^Tfs3cPDC1voF7WtdLTFTnxCPeyk@6S=3de4o*w?@JKy@`V^o@7;4mL}k|! zWkweaxkj3CYC7VV9oUJBL5>`;w2RggW_3GF((H1Bl-8;?bt(RHHMl)-vxY*5Mdl!J zH~RjSUh2Rns$BSqU(`n=0`0jBXwakABYxwS!j^L~0UKXoF*q^IZ0Qyb1{x}4PU=w< z{^Xx?y7Ij}TG>{wYy%1$=}y5w7~&zwyf-O>PrjLW!jfh;p^z{KIur^wi}%xRPa9^D z!l_8n^q;;W2x)*u*>s3s*u@ez<^bjujFk-5<`kM(+iwVSo8Z=oZADnY6MHt)#$YO? zO4D6Lc|D+U7aAOPv-*68-;=op@p-+tDCGSUMi!C3V~1kA#%U;23D{&EJokmYPIQ09 za`Uh>Qd+s+V=N?im@7J1YZ^vde(Atn^FI;OE9?@fb3^wKg}@E_5b9{wcpvNPyk3(l z(^>h#OUH<^A(v5dQgdlyt}p2RF02WtWFm7sGLI96*Ky?i=m(>M58L>8X63IpPnBpW zgze=^CLO_ofsNieD`U>=iKK7vsfuM~G{OqXA!vR+e06ezr0 X%wA!!KEpdlYJ57nO4Np{e98GgWBZ^` delta 894356 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

    ry$OvuT5 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

  2. .. and pass it as parameter to #aiImportFileEx -@section logging Logging +@section logging Logging -The assimp library provides an easy mechanism to log messages. For instance if you want to check the state of your -import and you just want to see, after which preprocessing step the import-process was aborted you can take a look -into the log. +The assimp library provides an easy mechanism to log messages. For instance if you want to check the state of your +import and you just want to see, after which preprocessing step the import-process was aborted you can take a look +into the log. Per default the assimp-library provides a default log implementation, where you can log your user specific message by calling it as a singleton with the requested logging-type. To see how this works take a look to this: @code using namespace Assimp; -// Create a logger instance +// Create a logger instance DefaultLogger::create("",Logger::VERBOSE); // Now I am ready for logging my stuff @@ -462,12 +462,12 @@ DefaultLogger::get()->info("this is my info-call"); DefaultLogger::kill(); @endcode -At first you have to create the default-logger-instance (create). Now you are ready to rock and can log a +At first you have to create the default-logger-instance (create). Now you are ready to rock and can log a little bit around. After that you should kill it to release the singleton instance. If you want to integrate the assimp-log into your own GUI it my be helpful to have a mechanism writing the logs into your own log windows. The logger interface provides this by implementing an interface called LogStream. -You can attach and detach this log stream to the default-logger instance or any implementation derived from Logger. +You can attach and detach this log stream to the default-logger instance or any implementation derived from Logger. Just derivate your own logger from the abstract base class LogStream and overwrite the write-method: @code @@ -481,7 +481,7 @@ public: { // empty } - + // Destructor ~myStream() { @@ -504,9 +504,9 @@ Assimp::DefaultLogger::get()->attachStream( new myStream(), severity ); @endcode The severity level controls the kind of message which will be written into -the attached stream. If you just want to log errors and warnings set the warn -and error severity flag for those severities. It is also possible to remove -a self defined logstream from an error severity by detaching it with the severity +the attached stream. If you just want to log errors and warnings set the warn +and error severity flag for those severities. It is also possible to remove +a self defined logstream from an error severity by detaching it with the severity flag set: @code @@ -519,10 +519,10 @@ Assimp::DefaultLogger::get()->attachStream( new myStream(), severity ); @endcode -If you want to implement your own logger just derive from the abstract base class -#Logger and overwrite the methods debug, info, warn and error. +If you want to implement your own logger just derive from the abstract base class +#Logger and overwrite the methods debug, info, warn and error. -If you want to see the debug-messages in a debug-configured build, the Logger-interface +If you want to see the debug-messages in a debug-configured build, the Logger-interface provides a logging-severity. You can set it calling the following method: @code @@ -531,17 +531,17 @@ Assimp::DefaultLogger::get()->setLogSeverity( LogSeverity log_severity ); @endcode -The normal logging severity supports just the basic stuff like, info, warnings and errors. +The normal logging severity supports just the basic stuff like, info, warnings and errors. In the verbose level very fine-grained debug messages will be logged, too. Note that this kind kind of logging might decrease import performance. */ -/** +/** @page data Data Structures The assimp library returns the imported data in a collection of structures. aiScene forms the root of the data, from here you gain access to all the nodes, meshes, materials, animations or textures -that were read from the imported file. The aiScene is returned from a successful call to +that were read from the imported file. The aiScene is returned from a successful call to assimp::Importer::ReadFile(), aiImportFile() or aiImportFileEx() - see the @link usage Usage page @endlink for further information on how to use the library. @@ -555,17 +555,17 @@ DirectX. If you need the imported data to be in a left-handed coordinate system, The output face winding is counter clockwise. Use #aiProcess_FlipWindingOrder to get CW data. @code x2 - + x1 x0 @endcode Outputted polygons can be literally everything: they're probably concave, self-intersecting or non-planar, -although our built-in triangulation (#aiProcess_Triangulate postprocessing step) doesn't handle the two latter. +although our built-in triangulation (#aiProcess_Triangulate postprocessing step) doesn't handle the two latter. The output UV coordinate system has its origin in the lower-left corner: @code -0y|1y ---------- 1x|1y +0y|1y ---------- 1x|1y | | | | | | @@ -582,31 +582,31 @@ X3 Y3 Z3 T3 0 0 0 1 @endcode -... with (X1, X2, X3) being the X base vector, (Y1, Y2, Y3) being the Y base vector, (Z1, Z2, Z3) +... with (X1, X2, X3) being the X base vector, (Y1, Y2, Y3) being the Y base vector, (Z1, Z2, Z3) being the Z base vector and (T1, T2, T3) being the translation part. If you want to use these matrices in DirectX functions, you have to transpose them.
    -11.24.09: We changed the orientation of our quaternions to the most common convention to avoid confusion. -However, if you're a previous user of Assimp and you update the library to revisions beyond SVNREV 502, -you have to adapt your animation loading code to match the new quaternion orientation. +11.24.09: We changed the orientation of our quaternions to the most common convention to avoid confusion. +However, if you're a previous user of Assimp and you update the library to revisions beyond SVNREV 502, +you have to adapt your animation loading code to match the new quaternion orientation.
    @section hierarchy The Node Hierarchy Nodes are little named entities in the scene that have a place and orientation relative to their parents. -Starting from the scene's root node all nodes can have 0 to x child nodes, thus forming a hierarchy. +Starting from the scene's root node all nodes can have 0 to x child nodes, thus forming a hierarchy. They form the base on which the scene is built on: a node can refer to 0..x meshes, can be referred to by a bone of a mesh or can be animated by a key sequence of an animation. DirectX calls them "frames", -others call them "objects", we call them aiNode. +others call them "objects", we call them aiNode. A node can potentially refer to single or multiple meshes. The meshes are not stored inside the node, but instead in an array of aiMesh inside the aiScene. A node only refers to them by their array index. This also means that multiple nodes can refer to the same mesh, which provides a simple form of instancing. A mesh referred to by this way lives in the node's local coordinate system. If you want the mesh's orientation in global -space, you'd have to concatenate the transformations from the referring node and all of its parents. +space, you'd have to concatenate the transformations from the referring node and all of its parents. Most of the file formats don't really support complex scenes, though, but a single model only. But there are more complex formats such as .3ds, .x or .collada scenes which may contain an arbitrary complex @@ -646,7 +646,7 @@ void CopyNodesWithMeshes( aiNode node, SceneObject targetParent, Matrix4x4 accTr This function copies a node into the scene graph if it has children. If yes, a new scene object is created for the import node and the node's meshes are copied over. If not, no object is created. Potential child objects will be added to the old targetParent, but there transformation will be correct -in respect to the global space. This function also works great in filtering the bone nodes - nodes +in respect to the global space. This function also works great in filtering the bone nodes - nodes that form the bone hierarchy for another mesh/node, but don't have any mesh themselves. @section meshes Meshes @@ -662,7 +662,7 @@ An aiMesh is defined by a series of data channels. The presence of these data ch by the contents of the imported file: by default there are only those data channels present in the mesh that were also found in the file. The only channels guarenteed to be always present are aiMesh::mVertices and aiMesh::mFaces. You can test for the presence of other data by testing the pointers against NULL -or use the helper functions provided by aiMesh. You may also specify several post processing flags +or use the helper functions provided by aiMesh. You may also specify several post processing flags at Importer::ReadFile() to let assimp calculate or recalculate additional data channels for you. At the moment, a single aiMesh may contain a set of triangles and polygons. A single vertex does always @@ -677,9 +677,9 @@ See the @link materials Material System Page. @endlink @section bones Bones -A mesh may have a set of bones in the form of aiBone structures.. Bones are a means to deform a mesh -according to the movement of a skeleton. Each bone has a name and a set of vertices on which it has influence. -Its offset matrix declares the transformation needed to transform from mesh space to the local space of this bone. +A mesh may have a set of bones in the form of aiBone structures.. Bones are a means to deform a mesh +according to the movement of a skeleton. Each bone has a name and a set of vertices on which it has influence. +Its offset matrix declares the transformation needed to transform from mesh space to the local space of this bone. Using the bones name you can find the corresponding node in the node hierarchy. This node in relation to the other bones' nodes defines the skeleton of the mesh. Unfortunately there might also be @@ -687,7 +687,7 @@ nodes which are not used by a bone in the mesh, but still affect the pose of the they have child nodes which are bones. So when creating the skeleton hierarchy for a mesh I suggest the following method: -a) Create a map or a similar container to store which nodes are necessary for the skeleton. +a) Create a map or a similar container to store which nodes are necessary for the skeleton. Pre-initialise it for all nodes with a "no".
    b) For each bone in the mesh:
    b1) Find the corresponding node in the scene's hierarchy by comparing their names.
    @@ -697,11 +697,11 @@ c) Recursively iterate over the node hierarchy
    c1) If the node is marked as necessary, copy it into the skeleton and check its children
    c2) If the node is marked as not necessary, skip it and do not iterate over its children.
    -Reasons: you need all the parent nodes to keep the transformation chain intact. For most +Reasons: you need all the parent nodes to keep the transformation chain intact. For most file formats and modelling packages the node hierarchy of the skeleton is either a child -of the mesh node or a sibling of the mesh node but this is by no means a requirement so you shouldn't rely on it. +of the mesh node or a sibling of the mesh node but this is by no means a requirement so you shouldn't rely on it. The node closest to the root node is your skeleton root, from there you -start copying the hierarchy. You can skip every branch without a node being a bone in the mesh - +start copying the hierarchy. You can skip every branch without a node being a bone in the mesh - that's why the algorithm skips the whole branch if the node is marked as "not necessary". You should now have a mesh in your engine with a skeleton that is a subset of the imported hierarchy. @@ -719,12 +719,12 @@ though, that certain combinations of file format and exporter don't always store in the exported file. In this case, mTicksPerSecond is set to 0 to indicate the lack of knowledge. The aiAnimation consists of a series of aiNodeAnim's. Each bone animation affects a single node in -the node hierarchy only, the name specifying which node is affected. For this node the structure +the node hierarchy only, the name specifying which node is affected. For this node the structure stores three separate key sequences: a vector key sequence for the position, a quaternion key sequence for the rotation and another vector key sequence for the scaling. All 3d data is local to the coordinate space of the node's parent, that means in the same space as the node's transformation matrix. There might be cases where animation tracks refer to a non-existent node by their name, but this -should not be the case in your every-day data. +should not be the case in your every-day data. To apply such an animation you need to identify the animation tracks that refer to actual bones in your mesh. Then for every track:
    @@ -733,7 +733,7 @@ b) Optional: interpolate between these and the following keys.
    c) Combine the calculated position, rotation and scaling to a tranformation matrix
    d) Set the affected node's transformation to the calculated matrix.
    -If you need hints on how to convert to or from quaternions, have a look at the +If you need hints on how to convert to or from quaternions, have a look at the Matrix&Quaternion FAQ. I suggest using logarithmic interpolation for the scaling keys if you happen to need them - usually you don't need them at all. @@ -742,7 +742,7 @@ need them at all. Normally textures used by assets are stored in separate files, however, there are file formats embedding their textures directly into the model file. -Such textures are loaded into an aiTexture structure. +Such textures are loaded into an aiTexture structure.
    There are two cases:
    @@ -769,12 +769,12 @@ set if assimp is able to determine the file format. @page materials Material System @section General Overview -All materials are stored in an array of aiMaterial inside the aiScene. +All materials are stored in an array of aiMaterial inside the aiScene. -Each aiMesh refers to one +Each aiMesh refers to one material by its index in the array. Due to the vastly diverging definitions and usages of material parameters there is no hard definition of a material structure. Instead a material is defined by -a set of properties accessible by their names. Have a look at assimp/material.h to see what types of +a set of properties accessible by their names. Have a look at assimp/material.h to see what types of properties are defined. In this file there are also various functions defined to test for the presence of certain properties in a material and retrieve their values. @@ -788,13 +788,13 @@ Textures are organized in stacks, each stack being evaluated independently. The ------------------------ | Constant base color | color ------------------------- +------------------------ | Blend operation 0 | + ------------------------ | Strength factor 0 | 0.25* ------------------------ | Texture 0 | texture_0 ------------------------- +------------------------ | Blend operation 1 | * ------------------------ | Strength factor 1 | 1.0* @@ -807,7 +807,7 @@ Textures are organized in stacks, each stack being evaluated independently. The @section keys Constants -All material key constants start with 'AI_MATKEY' (it's an ugly macro for historical reasons, don't ask). +All material key constants start with 'AI_MATKEY' (it's an ugly macro for historical reasons, don't ask). @@ -857,7 +857,7 @@ All material key constants start with 'AI_MATKEY' (it's an ugly macro for histor - @@ -1034,7 +1034,7 @@ mat->Get(AI_MATKEY_COLOR_DIFFUSE,color); @endcode Note: Get() is actually a template with explicit specializations for aiColor3D, aiColor4D, aiString, float, int and some others. -Make sure that the type of the second parameter matches the expected data type of the material property (no compile-time check yet!). +Make sure that the type of the second parameter matches the expected data type of the material property (no compile-time check yet!). Don't follow this advice if you wish to encounter very strange results. @section C C-API @@ -1085,15 +1085,15 @@ for all textures have uvwsrc for this texture? assign channel specified in uvwsrc else - assign channels in ascending order for all texture stacks, + assign channels in ascending order for all texture stacks, i.e. diffuse1 gets channel 1, opacity0 gets channel 0. @endverbatim @section pseudo Pseudo Code Listing -For completeness, the following is a very rough pseudo-code sample showing how to evaluate Assimp materials in your -shading pipeline. You'll probably want to limit your handling of all those material keys to a reasonable subset suitable for your purposes +For completeness, the following is a very rough pseudo-code sample showing how to evaluate Assimp materials in your +shading pipeline. You'll probably want to limit your handling of all those material keys to a reasonable subset suitable for your purposes (for example most 3d engines won't support highly complex multi-layer materials, but many 3d modellers do). Also note that this sample is targeted at a (shader-based) rendering pipeline for real time graphics. @@ -1111,7 +1111,7 @@ float3 EvaluateStack(stack) for (every texture in stack) { // assuming we have explicit & pretransformed UVs for this texture - float3 color = SampleTexture(texture,uv); + float3 color = SampleTexture(texture,uv); // scale by texture blend factor color *= texture.blend; @@ -1207,7 +1207,7 @@ float4 PimpMyPixel (float4 prev) // Get all single light contribution terms float3 diff = ComputeDiffuseContribution(); - float3 spec = ComputeSpecularContribution(); + float3 spec = ComputeSpecularContribution(); float3 ambi = ComputeAmbientContribution(); // .. and compute the final color value for this pixel @@ -1231,7 +1231,7 @@ float4 PimpMyPixel (float4 prev) -/** +/** @page perf Performance @section perf_overview Overview @@ -1243,9 +1243,9 @@ This page discusses general performance issues related to assimp. assimp has built-in support for very basic profiling and time measurement. To turn it on, set the GLOB_MEASURE_TIME configuration switch to true (nonzero). Results are dumped to the log file, so you need to setup an appropriate logger implementation with at least one output stream first (see the @link logging Logging Page @endlink -for the details.). +for the details.). -Note that these measurements are based on a single run of the importer and each of the post processing steps, so +Note that these measurements are based on a single run of the importer and each of the post processing steps, so a single result set is far away from being significant in a statistic sense. While precision can be improved by running the test multiple times, the low accuracy of the timings may render the results useless for smaller files. @@ -1269,7 +1269,7 @@ Info, T5488: Entering post processing pipeline Debug, T5488: START `postprocess` Debug, T5488: RemoveRedundantMatsProcess begin -Debug, T5488: RemoveRedundantMatsProcess finished +Debug, T5488: RemoveRedundantMatsProcess finished Debug, T5488: END `postprocess`, dt= 0.001 s @@ -1306,7 +1306,7 @@ Debug, T5488: START `postprocess` Debug, T5488: ImproveCacheLocalityProcess begin Debug, T5488: Mesh 0 | ACMR in: 0.851622 out: 0.718139 | ~15.7 Info, T5488: Cache relevant are 1 meshes (251904 faces). Average output ACMR is 0.718139 -Debug, T5488: ImproveCacheLocalityProcess finished. +Debug, T5488: ImproveCacheLocalityProcess finished. Debug, T5488: END `postprocess`, dt= 1.903 s @@ -1315,13 +1315,13 @@ Debug, T5488: END `total`, dt= 11.269 s @endverbatim In this particular example only one fourth of the total import time was spent on the actual importing, while the rest of the -time got consumed by the #aiProcess_Triangulate, #aiProcess_JoinIdenticalVertices and #aiProcess_ImproveCacheLocality -postprocessing steps. A wise selection of postprocessing steps is therefore essential to getting good performance. -Of course this depends on the individual requirements of your application, in many of the typical use cases of assimp performance won't +time got consumed by the #aiProcess_Triangulate, #aiProcess_JoinIdenticalVertices and #aiProcess_ImproveCacheLocality +postprocessing steps. A wise selection of postprocessing steps is therefore essential to getting good performance. +Of course this depends on the individual requirements of your application, in many of the typical use cases of assimp performance won't matter (i.e. in an offline content pipeline). */ -/** +/** @page threading Threading @section overview Overview @@ -1332,7 +1332,7 @@ use it from multiple threads concurrently. @section threadsafety Thread-safety / using Assimp concurrently from several threads The library can be accessed by multiple threads simultaneously, as long as the -following prerequisites are fulfilled: +following prerequisites are fulfilled: - Users of the C++-API should ensure that they use a dedicated #Assimp::Importer instance for each thread. Constructing instances of #Assimp::Importer is expensive, so it might be a good idea to let every thread maintain its own thread-local instance (which can be used to @@ -1344,9 +1344,9 @@ following prerequisites are fulfilled: -Multiple concurrent imports may or may not be beneficial, however. For certain file formats in conjunction with -little or no post processing IO times tend to be the performance bottleneck. Intense post processing together -with 'slow' file formats like X or Collada might scale well with multiple concurrent imports. +Multiple concurrent imports may or may not be beneficial, however. For certain file formats in conjunction with +little or no post processing IO times tend to be the performance bottleneck. Intense post processing together +with 'slow' file formats like X or Collada might scale well with multiple concurrent imports. @section automt Internal threading @@ -1357,8 +1357,8 @@ Internal multi-threading is not currently implemented. /** @page res Resources -This page lists some useful resources for assimp. Note that, even though the core team has an eye on them, -we cannot guarantee the accuracy of third-party information. If in doubt, it's best to ask either on the +This page lists some useful resources for assimp. Note that, even though the core team has an eye on them, +we cannot guarantee the accuracy of third-party information. If in doubt, it's best to ask either on the mailing list or on our forums on SF.net. - assimp comes with some sample applications, these can be found in the ./samples folder. Don't forget to read the README file. @@ -1376,14 +1376,14 @@ mailing list or on our forums on SF.net.
    @section blender Blender -This section contains implementation notes for the Blender3D importer. +This section contains implementation notes for the Blender3D importer. @subsection bl_overview Overview -assimp provides a self-contained reimplementation of Blender's so called SDNA system (http://www.blender.org/development/architecture/notes-on-sdna/). +assimp provides a self-contained reimplementation of Blender's so called SDNA system (http://www.blender.org/development/architecture/notes-on-sdna/). SDNA allows Blender to be fully backward and forward compatible and to exchange -files across all platforms. The BLEND format is thus a non-trivial binary monster and the loader tries to read the most of it, +files across all platforms. The BLEND format is thus a non-trivial binary monster and the loader tries to read the most of it, naturally limited by the scope of the #aiScene output data structure. -Consequently, if Blender is the only modeling tool in your asset work flow, consider writing a +Consequently, if Blender is the only modeling tool in your asset work flow, consider writing a custom exporter from Blender if assimps format coverage does not meet the requirements. @subsection bl_status Current status @@ -1397,12 +1397,12 @@ When filing bugs on the Blender loader, always give the Blender version (or, eve
    @section ifc IFC -This section contains implementation notes on the IFC-STEP importer. +This section contains implementation notes on the IFC-STEP importer. @subsection ifc_overview Overview -The library provides a partial implementation of the IFC2x3 industry standard for automatized exchange of CAE/architectural -data sets. See http://en.wikipedia.org/wiki/Industry_Foundation_Classes for more information on the format. We aim -at getting as much 3D data out of the files as possible. +The library provides a partial implementation of the IFC2x3 industry standard for automatized exchange of CAE/architectural +data sets. See http://en.wikipedia.org/wiki/Industry_Foundation_Classes for more information on the format. We aim +at getting as much 3D data out of the files as possible. @subsection ifc_status Current status @@ -1413,23 +1413,23 @@ IFC support is new and considered experimental. Please report any bugs you may e - Only the STEP-based encoding is supported. IFCZIP and IFCXML are not (but IFCZIP can simply be unzipped to get a STEP file). - The importer leaves vertex coordinates untouched, but applies a global scaling to the root transform to convert from whichever unit the IFC file uses to metres. -- If multiple geometric representations are provided, the choice which one to load is based on how expensive a representation seems +- If multiple geometric representations are provided, the choice which one to load is based on how expensive a representation seems to be in terms of import time. The loader also avoids representation types for which it has known deficits. -- Not supported are arbitrary binary operations (binary clipping is implemented, though). +- Not supported are arbitrary binary operations (binary clipping is implemented, though). - Of the various relationship types that IFC knows, only aggregation, containment and material assignment are resolved and mapped to the output graph. -- The implementation knows only about IFC2X3 and applies this rule set to all models it encounters, +- The implementation knows only about IFC2X3 and applies this rule set to all models it encounters, regardless of their actual version. Loading of older or newer files may fail with parsing errors. @subsection ifc_metadata Metadata -IFC file properties (IfcPropertySet) are kept as per-node metadata, see aiNode::mMetaData. +IFC file properties (IfcPropertySet) are kept as per-node metadata, see aiNode::mMetaData.
    @section ogre Ogre *ATTENTION*: The Ogre-Loader is currently under development, many things have changed after this documentation was written, but they are not final enough to rewrite the documentation. So things may have changed by now! -This section contains implementations notes for the OgreXML importer. +This section contains implementations notes for the OgreXML importer. @subsection overview Overview Ogre importer is currently optimized for the Blender Ogre exporter, because thats the only one that I use. You can find the Blender Ogre exporter at: http://www.ogre3d.org/forums/viewtopic.php?f=8&t=45922 @@ -1481,12 +1481,12 @@ Just look in OgreImporterMaterial.cpp - IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME: Normally, a texture is loaded as a colormap, if no target is specified in the materialfile. Is this switch is enabled, texture names ending with _n, _l, _s - are used as normalmaps, lightmaps or specularmaps. + are used as normalmaps, lightmaps or specularmaps.
    Property type: Bool. Default value: false. - IMPORT_OGRE_MATERIAL_FILE: Ogre Meshes contain only the MaterialName, not the MaterialFile. - If there - is no material file with the same name as the material, Ogre Importer will + If there + is no material file with the same name as the material, Ogre Importer will try to load this file and search the material in it.
    Property type: String. Default value: guessed. @@ -1515,8 +1515,8 @@ OK, that sounds too easy :-). The whole procedure for a new loader merely looks
  3. Add them to the following workspaces: vc8 and vc9 (the files are in the workspaces directory), CMAKE (code/CMakeLists.txt, create a new source group for your importer and put them also to ADD_LIBRARY( assimp SHARED))
  4. Include AssimpPCH.h - this is the PCH file, and it includes already most Assimp-internal stuff.
  5. -
  6. Open Importer.cpp and include your header just below the (include_new_importers_here) line, -guarded by a #define +
  7. Open Importer.cpp and include your header just below the (include_new_importers_here) line, +guarded by a #define @code #if (!defined assimp_BUILD_NO_FormatName_IMPORTER) ... @@ -1525,14 +1525,14 @@ guarded by a #define Wrap the same guard around your .cpp!
  8. Now advance to the (register_new_importers_here) line in the Importer.cpp and register your importer there - just like all the others do.
  9. -
  10. Setup a suitable test environment (i.e. use AssimpView or your own application), make sure to enable +
  11. Setup a suitable test environment (i.e. use AssimpView or your own application), make sure to enable the #aiProcess_ValidateDataStructure flag and enable verbose logging. That is, simply call before you import anything: @code DefaultLogger::create("AssimpLog.txt",Logger::VERBOSE) @endcode
  12. -Implement the Assimp::BaseImporter::CanRead(), Assimp::BaseImporter::InternReadFile() and Assimp::BaseImporter::GetExtensionList(). +Implement the Assimp::BaseImporter::CanRead(), Assimp::BaseImporter::InternReadFile() and Assimp::BaseImporter::GetExtensionList(). Just copy'n'paste the template from Appendix A and adapt it for your needs.
  13. For error handling, throw a dynamic allocated ImportErrorException (see Appendix A) for critical errors, and log errors, warnings, infos and debuginfos @@ -1566,7 +1566,7 @@ store the properties as a member variable of your importer, they are thread safe
  14. Try to make your parser as flexible as possible. Don't rely on particular layout, whitespace/tab style, except if the file format has a strict definition, in which case you should always warn about spec violations. But the general rule of thumb is be strict in what you write and tolerant in what you accept.
  15. -
  16. Call Assimp::BaseImporter::ConvertToUTF8() before you parse anything to convert foreign encodings to UTF-8. +
  17. Call Assimp::BaseImporter::ConvertToUTF8() before you parse anything to convert foreign encodings to UTF-8. That's not necessary for XML importers, which must use the provided IrrXML for reading.
  18. @@ -1586,11 +1586,11 @@ Don't trust the input data! Check all offsets! Mixed stuff for internal use by loaders, mostly documented (most of them are already included by AssimpPCH.h):
      -
    • ByteSwap (ByteSwap.h) - manual byte swapping stuff for binary loaders.
    • +
    • ByteSwapper (ByteSwapper.h) - manual byte swapping stuff for binary loaders.
    • StreamReader (StreamReader.h) - safe, endianess-correct, binary reading.
    • IrrXML (irrXMLWrapper.h) - for XML-parsing (SAX.
    • CommentRemover (RemoveComments.h) - remove single-line and multi-line comments from a text file.
    • -
    • fast_atof, strtoul10, strtoul16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level +
    • fast_atof, strtoul10, strtoul16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level parsing functions, mostly declared in fast_atof.h, StringComparison.h and ParsingUtils.h (a collection that grew historically, so don't expect perfect organization).
    • ComputeNormalsWithSmoothingsGroups() (SmoothingGroups.h) - Computes normal vectors from plain old smoothing groups.
    • @@ -1640,8 +1640,8 @@ The boost whitelist: @code // ------------------------------------------------------------------------------- -// Returns whether the class can handle the format of the given file. -bool xxxxImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, +// Returns whether the class can handle the format of the given file. +bool xxxxImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { const std::string extension = GetExtension(pFile); @@ -1649,8 +1649,8 @@ bool xxxxImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, return true; } if (!extension.length() || checkSig) { - // no extension given, or we're called a second time because no - // suitable loader was found yet. This means, we're trying to open + // no extension given, or we're called a second time because no + // suitable loader was found yet. This means, we're trying to open // the file and look for and hints to identify the file format. // #Assimp::BaseImporter provides some utilities: // @@ -1659,11 +1659,11 @@ bool xxxxImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, // against a given list of 'magic' strings. // // #Assimp::BaseImporter::CheckMagicToken - for binary files. It goes - // to a particular offset in the file and and compares the next words + // to a particular offset in the file and and compares the next words // against a given list of 'magic' tokens. - // These checks MUST be done (even if !checkSig) if the file extension - // is not exclusive to your format. For example, .xml is very common + // These checks MUST be done (even if !checkSig) if the file extension + // is not exclusive to your format. For example, .xml is very common // and (co)used by many formats. } return false; @@ -1677,7 +1677,7 @@ void xxxxImporter::GetExtensionList(std::set& extensions) } // ------------------------------------------------------------------------------- -void xxxxImporter::InternReadFile( const std::string& pFile, +void xxxxImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { boost::scoped_ptr file( pIOHandler->Open( pFile, "rb")); @@ -1686,20 +1686,20 @@ void xxxxImporter::InternReadFile( const std::string& pFile, if( file.get() == NULL) { throw DeadlyImportError( "Failed to open xxxx file " + pFile + "."); } - + // Your task: fill pScene - // Throw a ImportErrorException with a meaningful (!) error message if + // Throw a ImportErrorException with a meaningful (!) error message if // something goes wrong. } @endcode */ - + /** @page AnimationOverview Animation Overview \section Transformations This diagram shows how you can calculate your transformationmatrices for an animated character: - - **/ \ No newline at end of file + + **/ diff --git a/workspaces/xcode3/assimp.xcodeproj/project.pbxproj b/workspaces/xcode3/assimp.xcodeproj/project.pbxproj index e6c5b6b11..1ae088b13 100644 --- a/workspaces/xcode3/assimp.xcodeproj/project.pbxproj +++ b/workspaces/xcode3/assimp.xcodeproj/project.pbxproj @@ -117,11 +117,11 @@ 2B7F478E1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; 2B7F478F1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; 2B7F47901708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F479B1708365200A106A9 /* ByteSwap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwap.h */; }; - 2B7F479C1708365200A106A9 /* ByteSwap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwap.h */; }; - 2B7F479D1708365200A106A9 /* ByteSwap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwap.h */; }; - 2B7F479E1708365200A106A9 /* ByteSwap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwap.h */; }; - 2B7F479F1708365200A106A9 /* ByteSwap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwap.h */; }; + 2B7F479B1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; + 2B7F479C1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; + 2B7F479D1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; + 2B7F479E1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; + 2B7F479F1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; 2B7F47A01708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; 2B7F47A11708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; 2B7F47A21708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; @@ -2018,7 +2018,7 @@ 2B7F45931708365100A106A9 /* static_assert.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = static_assert.hpp; sourceTree = ""; }; 2B7F45941708365100A106A9 /* timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = timer.hpp; sourceTree = ""; }; 2B7F45961708365100A106A9 /* tuple.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = tuple.hpp; sourceTree = ""; }; - 2B7F45991708365100A106A9 /* ByteSwap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteSwap.h; sourceTree = ""; }; + 2B7F45991708365100A106A9 /* ByteSwapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteSwapper.h; sourceTree = ""; }; 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CalcTangentsProcess.cpp; sourceTree = ""; }; 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CalcTangentsProcess.h; sourceTree = ""; }; 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CInterfaceIOWrapper.h; sourceTree = ""; }; @@ -2509,7 +2509,7 @@ 2B7F45761708365100A106A9 /* BaseProcess.cpp */, 2B7F45771708365100A106A9 /* BaseProcess.h */, 2B7F45831708365100A106A9 /* BlobIOSystem.h */, - 2B7F45991708365100A106A9 /* ByteSwap.h */, + 2B7F45991708365100A106A9 /* ByteSwapper.h */, 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */, 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */, 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */, @@ -3517,7 +3517,7 @@ 2B7F47841708365200A106A9 /* static_assert.hpp in Headers */, 2B7F47891708365200A106A9 /* timer.hpp in Headers */, 2B7F478E1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479D1708365200A106A9 /* ByteSwap.h in Headers */, + 2B7F479D1708365200A106A9 /* ByteSwapper.h in Headers */, 2B7F47A71708365200A106A9 /* CalcTangentsProcess.h in Headers */, 2B7F47AC1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, 2B7F47C51708365200A106A9 /* ColladaExporter.h in Headers */, @@ -3765,7 +3765,7 @@ 2B7F47851708365200A106A9 /* static_assert.hpp in Headers */, 2B7F478A1708365200A106A9 /* timer.hpp in Headers */, 2B7F478F1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479E1708365200A106A9 /* ByteSwap.h in Headers */, + 2B7F479E1708365200A106A9 /* ByteSwapper.h in Headers */, 2B7F47A81708365200A106A9 /* CalcTangentsProcess.h in Headers */, 2B7F47AD1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, 2B7F47C61708365200A106A9 /* ColladaExporter.h in Headers */, @@ -4013,7 +4013,7 @@ 2B7F47861708365200A106A9 /* static_assert.hpp in Headers */, 2B7F478B1708365200A106A9 /* timer.hpp in Headers */, 2B7F47901708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479F1708365200A106A9 /* ByteSwap.h in Headers */, + 2B7F479F1708365200A106A9 /* ByteSwapper.h in Headers */, 2B7F47A91708365200A106A9 /* CalcTangentsProcess.h in Headers */, 2B7F47AE1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, 2B7F47C71708365200A106A9 /* ColladaExporter.h in Headers */, @@ -4261,7 +4261,7 @@ 2B7F47821708365200A106A9 /* static_assert.hpp in Headers */, 2B7F47871708365200A106A9 /* timer.hpp in Headers */, 2B7F478C1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479B1708365200A106A9 /* ByteSwap.h in Headers */, + 2B7F479B1708365200A106A9 /* ByteSwapper.h in Headers */, 2B7F47A51708365200A106A9 /* CalcTangentsProcess.h in Headers */, 2B7F47AA1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, 2B7F47C31708365200A106A9 /* ColladaExporter.h in Headers */, @@ -4509,7 +4509,7 @@ 2B7F47831708365200A106A9 /* static_assert.hpp in Headers */, 2B7F47881708365200A106A9 /* timer.hpp in Headers */, 2B7F478D1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479C1708365200A106A9 /* ByteSwap.h in Headers */, + 2B7F479C1708365200A106A9 /* ByteSwapper.h in Headers */, 2B7F47A61708365200A106A9 /* CalcTangentsProcess.h in Headers */, 2B7F47AB1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, 2B7F47C41708365200A106A9 /* ColladaExporter.h in Headers */, From 956fde6e669c03ee2be11e0f75cd7610a9b4a7fc Mon Sep 17 00:00:00 2001 From: "U-ORADEV\\albihern" Date: Mon, 20 Apr 2015 17:49:02 -0500 Subject: [PATCH 85/85] Renaming ByteSwap.h to ByteSwapper.h to let assimp compile under cygwin. --- code/LWOMaterial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index b6cb4e460..c6f629966 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // internal headers #include "LWOLoader.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include
    COLOR_TRANSPARENT aiColor3D black (0,0,0)Defines the transparent color of the material, this is the color to be multiplied with the color of + Defines the transparent color of the material, this is the color to be multiplied with the color of translucent light to construct the final 'destination color' for a particular position in the screen buffer. T ---
  19. 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%0D^KMnoK^3;iC7jP2TI~wCx*pG_a!8 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ΜOkd~t~QEMY@$jJ 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

    )&m+$O8kRdcy#oa}zOXuqq1Js@Ij4o51j!0x?_a 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 Yn>dy-C1pY81(`R&tvK-$?o28F2P9~pwg3PC From 79768ddc14609be1a6552eff55d8f60b6f85ad55 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:21:47 +0100 Subject: [PATCH 20/85] prepare for removal of hardcoded struct and primitive sizes. added getter to determine struct and primitive sizes. (cleanup in the java code can be done later.) --- port/jassimp/jassimp-native/src/jassimp.cpp | 48 ++++++++++++++++ port/jassimp/jassimp-native/src/jassimp.h | 14 +++++ port/jassimp/jassimp/src/jassimp/AiMesh.java | 12 ++-- .../jassimp/src/jassimp/AiNodeAnim.java | 6 +- port/jassimp/jassimp/src/jassimp/Jassimp.java | 55 ++++++++++++++++++- 5 files changed, 126 insertions(+), 9 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index 710168e98..e093bb178 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1344,7 +1344,55 @@ JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize (JNIEnv *env, jclass jClazz) { const int res = sizeof(aiVectorKey); + return res; +} +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getQKeysize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(aiQuatKey); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getV3Dsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(aiVector3D); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getfloatsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(float); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getintsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(int); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(unsigned int); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoubletsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(double); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getlongsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(long); return res; } diff --git a/port/jassimp/jassimp-native/src/jassimp.h b/port/jassimp/jassimp-native/src/jassimp.h index fadea4fe6..188a4e904 100644 --- a/port/jassimp/jassimp-native/src/jassimp.h +++ b/port/jassimp/jassimp-native/src/jassimp.h @@ -9,6 +9,20 @@ extern "C" { #endif JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getQKeysize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getV3Dsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getfloatsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getintsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoublesize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getlongsize + (JNIEnv *, jclass); /* * Class: jassimp_Jassimp diff --git a/port/jassimp/jassimp/src/jassimp/AiMesh.java b/port/jassimp/jassimp/src/jassimp/AiMesh.java index c9cb3669a..c2ebcd307 100644 --- a/port/jassimp/jassimp/src/jassimp/AiMesh.java +++ b/port/jassimp/jassimp/src/jassimp/AiMesh.java @@ -140,13 +140,17 @@ public final class AiMesh { /** * Number of bytes per float value. */ - private static final int SIZEOF_FLOAT = 4; - - + private static final int SIZEOF_FLOAT = Jassimp.NATIVE_FLOAT_SIZE; + /** * Number of bytes per int value. */ - private static final int SIZEOF_INT = 4; + private static final int SIZEOF_INT = Jassimp.NATIVE_INT_SIZE; + + /** + * Size of an AiVector3D in the native world. + */ + private static final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE; /** diff --git a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java index c084accd6..cb1c6987c 100644 --- a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java +++ b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java @@ -70,17 +70,17 @@ public final class AiNodeAnim { /** * Size of one position key entry. */ - private static final int POS_KEY_SIZE = Jassimp.getVKeysize(); + private static final int POS_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE; /** * Size of one rotation key entry. */ - private static final int ROT_KEY_SIZE = 24; + private static final int ROT_KEY_SIZE = Jassimp.NATIVE_AIQUATKEY_SIZE; /** * Size of one scaling key entry. */ - private static final int SCALE_KEY_SIZE = Jassimp.getVKeysize(); + private static final int SCALE_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE; /** diff --git a/port/jassimp/jassimp/src/jassimp/Jassimp.java b/port/jassimp/jassimp/src/jassimp/Jassimp.java index 25b8f6371..8850e68ff 100644 --- a/port/jassimp/jassimp/src/jassimp/Jassimp.java +++ b/port/jassimp/jassimp/src/jassimp/Jassimp.java @@ -97,12 +97,47 @@ public final class Jassimp { /** - * Returns the size of a struct.

    + * Returns the size of a struct or ptimitive.

    * * @return the result of sizeof call */ public static native int getVKeysize(); + /** + * @see #getVKeysize + */ + public static native int getQKeysize(); + + /** + * @see #getVKeysize + */ + public static native int getV3Dsize(); + + /** + * @see #getVKeysize + */ + public static native int getfloatsize(); + + /** + * @see #getVKeysize + */ + public static native int getintsize(); + + /** + * @see #getVKeysize + */ + public static native int getuintsize(); + + /** + * @see #getVKeysize + */ + public static native int getboublesize(); + + /** + * @see #getVKeysize + */ + public static native int getlongsize(); + /** * Returns a human readable error description.

    * @@ -256,8 +291,24 @@ public final class Jassimp { /* nothing to do */ } - + public static final int NATIVE_AIVEKTORKEY_SIZE; + public static final int NATIVE_AIQUATKEY_SIZE; + public static final int NATIVE_AIVEKTOR3D_SIZE; + public static final int NATIVE_FLOAT_SIZE; + public static final int NATIVE_INT_SIZE; + public static final int NATIVE_UINT_SIZE; + public static final int NATIVE_DOUBLE_SIZE; + public static final int NATIVE_LONG_SIZE; + static { System.loadLibrary("jassimp"); + NATIVE_AIVEKTORKEY_SIZE = getVKeysize(); + NATIVE_AIQUATKEY_SIZE = getQKeysize(); + NATIVE_AIVEKTOR3D_SIZE = getV3Dsize(); + NATIVE_FLOAT_SIZE = getfloatsize(); + NATIVE_INT_SIZE = getintsize(); + NATIVE_UINT_SIZE = getuintsize(); + NATIVE_DOUBLE_SIZE = getdoublesize(); + NATIVE_LONG_SIZE = getlongsize(); } } From 311c1ecadbb659a1e4c5c845e684f9cd69095f0a Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:32:06 +0100 Subject: [PATCH 21/85] typo in method name fixed --- port/jassimp/jassimp/src/jassimp/Jassimp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/jassimp/jassimp/src/jassimp/Jassimp.java b/port/jassimp/jassimp/src/jassimp/Jassimp.java index 8850e68ff..eb4665f17 100644 --- a/port/jassimp/jassimp/src/jassimp/Jassimp.java +++ b/port/jassimp/jassimp/src/jassimp/Jassimp.java @@ -131,7 +131,7 @@ public final class Jassimp { /** * @see #getVKeysize */ - public static native int getboublesize(); + public static native int getdoublesize(); /** * @see #getVKeysize From 19d9b31d56553a0de864e7f595ce81296cbf7f90 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:45:21 +0100 Subject: [PATCH 22/85] =?UTF-8?q?makro=20=C2=BBlprintf=C2=AB=20substitutio?= =?UTF-8?q?n=20gcc=20warnings=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- port/jassimp/jassimp-native/src/jassimp.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index e093bb178..d42126c9d 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -284,7 +284,7 @@ static bool copyBuffer(JNIEnv *env, jobject jMesh, const char* jBufferName, void if (env->GetDirectBufferCapacity(jBuffer) != size) { - lprintf("invalid direct buffer, expected %u, got %u\n", size, env->GetDirectBufferCapacity(jBuffer)); + lprintf("invalid direct buffer, expected %u, got %llu\n", size, env->GetDirectBufferCapacity(jBuffer)); return false; } @@ -315,7 +315,7 @@ static bool copyBufferArray(JNIEnv *env, jobject jMesh, const char* jBufferName, if (env->GetDirectBufferCapacity(jBuffer) != size) { - lprintf("invalid direct buffer, expected %u, got %u\n", size, env->GetDirectBufferCapacity(jBuffer)); + lprintf("invalid direct buffer, expected %u, got %llu\n", size, env->GetDirectBufferCapacity(jBuffer)); return false; } @@ -839,7 +839,7 @@ static bool loadMaterials(JNIEnv *env, const aiScene* cScene, jobject& jScene) { const aiMaterial* cMaterial = cScene->mMaterials[m]; - lprintf("converting material ...\n", m); + lprintf("converting material %d ...\n", m); jobject jMaterial = NULL; From 38a1abc908e4102e2fd9ea32052d6ea40ed4eb83 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 15:01:01 +0100 Subject: [PATCH 23/85] ... method name ... --- port/jassimp/jassimp-native/src/jassimp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index d42126c9d..8093db7ba 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1382,7 +1382,7 @@ JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize return res; } -JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoubletsize +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoublesize (JNIEnv *env, jclass jClazz) { const int res = sizeof(double); From ef7009f2c3adcd0578a5dfe7098a37364cdad740 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 29 Mar 2015 11:51:17 +0200 Subject: [PATCH 24/85] maybe Fixes assimp/assimp#516 --- .travis.yml | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3310b881b..2090fce7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,16 +31,20 @@ install: - if [ $ANDROID ]; then wget -c http://dl.google.com/android/ndk/android-ndk-${PV}-${PLATF}.tar.bz2 && tar xf android-ndk-${PV}-${PLATF}.tar.bz2 ; fi script: - - if [ $ANDROID ]; then ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; fi - - cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD - - make - - sudo make install - - sudo ldconfig - - cd test/unit - - ../../bin/unit - - cd ../regression - - chmod 755 run.py - - ./run.py - - echo "==========================================================" - - echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)" - - cat ../results/run_regression_suite_failures.csv + - if [ $ANDROID ]; then + ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; + elif [ $RESERVED ]; then + echo "Reserved condition" ; + else + cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD ; + make ; + sudo make install ; + sudo ldconfig ; + cd test/unit ; + ../../bin/unit ; + cd ../regression ; + chmod 755 run.py ; + ./run.py ; + echo "==========================================================" ; + echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)" ; + cat ../results/run_regression_suite_failures.csv; From c2e6e3439e07f7a43297ee00119ac738c1f9032f Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 29 Mar 2015 11:59:57 +0200 Subject: [PATCH 25/85] sry, one fi too less... --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 2090fce7a..cfa7342f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,3 +48,4 @@ script: echo "==========================================================" ; echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)" ; cat ../results/run_regression_suite_failures.csv; + fi From 0e11cfbe6ff115ed709fad07cb0e63309d992da3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 29 Mar 2015 18:53:23 +0200 Subject: [PATCH 26/85] add copy op for positions, normals and texture coordinates. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 60 +++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 7188ce018..cf637f22d 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -562,6 +562,51 @@ static MeshAttribute getAttributeByName( const char *attribName ) { return None; } +//------------------------------------------------------------------------------------------------ +static void fillVector3( aiVector3D *vec3, Value *vals ) { + ai_assert( NULL != vec3 ); + ai_assert( NULL != vals ); + + float x( 0.0f ), y( 0.0f ), z( 0.0f ); + Value *next( vals ); + x = next->getFloat(); + next = next->m_next; + y = next->getFloat(); + next = next->m_next; + if( NULL != next ) { + z = next->getFloat(); + } + + vec3->Set( x, y, z ); +} + +//------------------------------------------------------------------------------------------------ +static size_t countDataArrayListItems( DataArrayList *vaList ) { + size_t numItems( 0 ); + if( NULL == vaList ) { + return numItems; + } + + DataArrayList *next( vaList ); + while( NULL != next ) { + if( NULL != vaList->m_dataList ) { + numItems++; + } + next = next->m_next; + } + + return numItems; +} + +//------------------------------------------------------------------------------------------------ +static void copyVectorArray( size_t numItems, DataArrayList *vaList, aiVector3D *vectorArray ) { + for( size_t i = 0; i < numItems; i++ ) { + Value *next( vaList->m_dataList ); + fillVector3( &vectorArray[ i ], next ); + vaList = vaList->m_next; + } +} + //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene *pScene ) { if( NULL == node ) { @@ -583,16 +628,17 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene return; } + const size_t numItems( countDataArrayListItems( vaList ) ); + Value *next( vaList->m_dataList ); if( Position == attribType ) { - aiVector3D *pos = new aiVector3D[ vaList->m_numItems ]; - Value *next( vaList->m_dataList ); - for( size_t i = 0; i < vaList->m_numItems; i++ ) { - - } + m_currentMesh->mVertices = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentMesh->mVertices ); } else if( Normal == attribType ) { - aiVector3D *normal = new aiVector3D[ vaList->m_numItems ]; + m_currentMesh->mNormals = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentMesh->mNormals ); } else if( TexCoord == attribType ) { - aiVector3D *tex = new aiVector3D[ vaList->m_numItems ]; + m_currentMesh->mTextureCoords[0] = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentMesh->mTextureCoords[0] ); } } } From 7f3b044b834f7e5f74b20861728f6ccab3c3cafa Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 30 Mar 2015 11:55:57 +0200 Subject: [PATCH 27/85] add import of index array data. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index cf637f22d..21c55b3b7 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -645,7 +645,30 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + if( NULL == node ) { + throw DeadlyImportError( "No parent node for name." ); + return; + } + DataArrayList *vaList = node->getDataArrayList(); + if( NULL == vaList ) { + return; + } + + const size_t numItems( countDataArrayListItems( vaList ) ); + m_currentMesh->mNumFaces = numItems; + m_currentMesh->mFaces = new aiFace[ numItems ]; + for( size_t i = 0; i < numItems; i++ ) { + aiFace *current( & ( m_currentMesh->mFaces[ i ] ) ); + current->mNumIndices = 3; + current->mIndices = new unsigned int[ 3 ]; + Value *next( vaList->m_dataList ); + for( size_t i = 0; i < 3; i++ ) { + current->mIndices[ i ] = next->getInt32(); + next = next->m_next; + } + vaList = vaList->m_next; + } } //------------------------------------------------------------------------------------------------ From 8857f26efb073a80cace809824df69c56ed67b85 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 30 Mar 2015 12:04:28 +0200 Subject: [PATCH 28/85] fix: add setup for number of copied vertex attributes. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 21c55b3b7..782392bde 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -631,13 +631,15 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene const size_t numItems( countDataArrayListItems( vaList ) ); Value *next( vaList->m_dataList ); if( Position == attribType ) { + m_currentMesh->mNumVertices = numItems; m_currentMesh->mVertices = new aiVector3D[ numItems ]; copyVectorArray( numItems, vaList, m_currentMesh->mVertices ); } else if( Normal == attribType ) { m_currentMesh->mNormals = new aiVector3D[ numItems ]; copyVectorArray( numItems, vaList, m_currentMesh->mNormals ); } else if( TexCoord == attribType ) { - m_currentMesh->mTextureCoords[0] = new aiVector3D[ numItems ]; + m_currentMesh->mNumUVComponents[0] = numItems; + m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ numItems ]; copyVectorArray( numItems, vaList, m_currentMesh->mTextureCoords[0] ); } } From 754897d1aa69663497d75c946b0dc6cb1c250625 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 30 Mar 2015 23:54:32 +0200 Subject: [PATCH 29/85] add imported meshes from OpenGEX-importer to scene. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 15 +++++++++++++++ code/OpenGEXImporter.h | 1 + 2 files changed, 16 insertions(+) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 782392bde..a9e415f52 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -238,6 +238,7 @@ void OpenGEXImporter::InternReadFile( const std::string &filename, aiScene *pSce handleNodes( m_ctx->m_root, pScene ); } + copyMeshes( pScene ); resolveReferences(); } @@ -678,6 +679,20 @@ void OpenGEXImporter::handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pS } +//------------------------------------------------------------------------------------------------ +void OpenGEXImporter::copyMeshes( aiScene *pScene ) { + if( m_meshCache.empty() ) { + return; + } + pScene->mNumMeshes = m_meshCache.size(); + pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes ]; + size_t i( 0 ); + for( std::vector::iterator it = m_meshCache.begin(); it != m_meshCache.end(); it++ ) { + pScene->mMeshes[ i ] = *it; + i++; + } +} + //------------------------------------------------------------------------------------------------ void OpenGEXImporter::resolveReferences() { if( m_unresolvedRefStack.empty() ) { diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index d890bde76..2e26a8e18 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -114,6 +114,7 @@ protected: void handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pScene ); void handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene ); void handleTextureNode( ODDLParser::DDLNode *node, aiScene *pScene ); + void copyMeshes( aiScene *pScene ); void resolveReferences(); void pushNode( aiNode *node, aiScene *pScene ); aiNode *popNode(); From 45cc0b582a54b7c028d2d426d856ff95ed905946 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 31 Mar 2015 12:18:57 +0200 Subject: [PATCH 30/85] fix creation of unused mesh instance. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index a9e415f52..40d90cfb1 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -440,15 +440,6 @@ void OpenGEXImporter::handleGeometryNode( DDLNode *node, aiScene *pScene ) { //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleGeometryObject( DDLNode *node, aiScene *pScene ) { - aiMesh *currentMesh( new aiMesh ); - const size_t idx( m_meshCache.size() ); - m_meshCache.push_back( currentMesh ); - - // store name to reference relation - m_mesh2refMap[ node->getName() ] = idx; - - // todo: child nodes? - handleNodes( node, pScene ); } From 6fd3863198a5057e99ede935e88d4f004758650a Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Tue, 31 Mar 2015 21:35:58 +0200 Subject: [PATCH 31/85] catch apt-get problem for wine install and install packages for MinGW + sample apps --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cfa7342f5..158994c58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,8 +26,12 @@ compiler: - gcc - clang +before_install: + - sudo apt-get update -qq + - if [ $WINDOWS ]; then sudo apt-get install -qq gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 wine ; fi + - if [ $LINUX ]; then sudo apt-get install -qq freeglut3-dev libxmu-dev libxi-dev ; fi + install: - - if [ $WINDOWS ]; then travis_retry sudo apt-get install -q -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64; fi - if [ $ANDROID ]; then wget -c http://dl.google.com/android/ndk/android-ndk-${PV}-${PLATF}.tar.bz2 && tar xf android-ndk-${PV}-${PLATF}.tar.bz2 ; fi script: From 0c4fb363e1649996d7e920fed1af0feb53302122 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Tue, 31 Mar 2015 22:55:07 +0200 Subject: [PATCH 32/85] never work on a 13'' screen... --- .travis.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 158994c58..ae3a0b983 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ before_install: + - sudo apt-get update -qq - sudo apt-get install cmake python3 + - if [ $WINDOWS ]; then sudo apt-get install -qq gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 wine ; fi + - if [ $LINUX ]; then sudo apt-get install -qq freeglut3-dev libxmu-dev libxi-dev ; fi - echo -e "#ifndef A_R_H_INC\n#define A_R_H_INC\n#define GitVersion ${TRAVIS_JOB_ID}\n#define GitBranch \"${TRAVIS_BRANCH}\"\n#endif // A_R_H_INC" > revision.h branches: @@ -26,11 +29,6 @@ compiler: - gcc - clang -before_install: - - sudo apt-get update -qq - - if [ $WINDOWS ]; then sudo apt-get install -qq gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 wine ; fi - - if [ $LINUX ]; then sudo apt-get install -qq freeglut3-dev libxmu-dev libxi-dev ; fi - install: - if [ $ANDROID ]; then wget -c http://dl.google.com/android/ndk/android-ndk-${PV}-${PLATF}.tar.bz2 && tar xf android-ndk-${PV}-${PLATF}.tar.bz2 ; fi From 65cb05f38163ac36f5f5b263a4e29f0c25fcd148 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 2 Apr 2015 01:10:53 +0200 Subject: [PATCH 33/85] fix invalid index counter. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 40d90cfb1..322604415 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -655,10 +655,11 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * for( size_t i = 0; i < numItems; i++ ) { aiFace *current( & ( m_currentMesh->mFaces[ i ] ) ); current->mNumIndices = 3; - current->mIndices = new unsigned int[ 3 ]; + current->mIndices = new unsigned int[ current->mNumIndices ]; Value *next( vaList->m_dataList ); - for( size_t i = 0; i < 3; i++ ) { - current->mIndices[ i ] = next->getInt32(); + for( size_t indices = 0; indices < current->mNumIndices; indices++ ) { + const int idx = next->getInt32(); + current->mIndices[ indices ] = next->getInt32(); next = next->m_next; } vaList = vaList->m_next; From a50fa5f1deeeb8000c832c547bbe765dea1c9a3c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 4 Apr 2015 18:52:24 +0200 Subject: [PATCH 34/85] add missing doc in obj importer. Signed-off-by: Kim Kulling --- code/ObjFileImporter.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/ObjFileImporter.h b/code/ObjFileImporter.h index 0168c2673..5a40984b9 100644 --- a/code/ObjFileImporter.h +++ b/code/ObjFileImporter.h @@ -96,13 +96,15 @@ private: //! \brief Creates vertices from model. void createVertexArray(const ObjFile::Model* pModel, const ObjFile::Object* pCurrentObject, - unsigned int uiMeshIndex, aiMesh* pMesh,unsigned int uiIdxCount); + unsigned int uiMeshIndex, aiMesh* pMesh, unsigned int numIndices ); //! \brief Object counter helper method. void countObjects(const std::vector &rObjects, int &iNumMeshes); //! \brief Material creation. void createMaterials(const ObjFile::Model* pModel, aiScene* pScene); + + /// @brief Adds special property for the used texture mapping mode of the model. void addTextureMappingModeProperty(aiMaterial* mat, aiTextureType type, int clampMode = 1); //! \brief Appends a child node to a parent node and updates the data structures. From 3fa68823849bf19eeb587ed2c36a5c8dbf62e990 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 4 Apr 2015 18:52:59 +0200 Subject: [PATCH 35/85] generate unique indices for importes vertices in opengex importer. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 76 +++++++++++++++++++++++++++++++--------- code/OpenGEXImporter.h | 17 +++++++++ 2 files changed, 77 insertions(+), 16 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 322604415..932ae9460 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -42,6 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "AssimpPCH.h" #include "OpenGEXImporter.h" #include "DefaultIOSystem.h" +#include "MakeVerboseFormat.h" #include @@ -174,6 +175,22 @@ namespace OpenGEX { USE_ODDLPARSER_NS +OpenGEXImporter::VertexContainer::VertexContainer() +: m_numVerts( 0 ) +, m_vertices( NULL ) +, m_numNormals( 0 ) +, m_normals( NULL ) { + ::memset( &m_numUVComps[ 0 ], 0, sizeof( size_t )*AI_MAX_NUMBER_OF_TEXTURECOORDS ); +} + +OpenGEXImporter::VertexContainer::~VertexContainer() { + delete[] m_vertices; + delete[] m_normals; + for( size_t i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; i++ ) { + delete[] m_textureCoords[ i ]; + } +} + //------------------------------------------------------------------------------------------------ OpenGEXImporter::RefInfo::RefInfo( aiNode *node, Type type, std::vector &names ) : m_node( node ) @@ -514,10 +531,12 @@ static void propId2StdString( Property *prop, std::string &name, std::string &ke //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleMeshNode( ODDLParser::DDLNode *node, aiScene *pScene ) { - Property *prop = node->getProperties(); m_currentMesh = new aiMesh; + const size_t meshidx( m_meshCache.size() ); m_meshCache.push_back( m_currentMesh ); + m_mesh2refMap[ node->getName() ] = meshidx; + Property *prop = node->getProperties(); if( NULL != prop ) { std::string propName, propKey; propId2StdString( prop, propName, propKey ); @@ -623,16 +642,17 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene const size_t numItems( countDataArrayListItems( vaList ) ); Value *next( vaList->m_dataList ); if( Position == attribType ) { - m_currentMesh->mNumVertices = numItems; - m_currentMesh->mVertices = new aiVector3D[ numItems ]; - copyVectorArray( numItems, vaList, m_currentMesh->mVertices ); + m_currentVertices.m_numVerts = numItems; + m_currentVertices.m_vertices = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentVertices.m_vertices ); } else if( Normal == attribType ) { - m_currentMesh->mNormals = new aiVector3D[ numItems ]; - copyVectorArray( numItems, vaList, m_currentMesh->mNormals ); + m_currentVertices.m_numNormals = numItems; + m_currentVertices.m_normals = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentVertices.m_normals ); } else if( TexCoord == attribType ) { - m_currentMesh->mNumUVComponents[0] = numItems; - m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ numItems ]; - copyVectorArray( numItems, vaList, m_currentMesh->mTextureCoords[0] ); + m_currentVertices.m_numUVComps[ 0 ] = numItems; + m_currentVertices.m_textureCoords[ 0 ] = new aiVector3D[ numItems ]; + copyVectorArray( numItems, vaList, m_currentVertices.m_textureCoords[ 0 ] ); } } } @@ -644,6 +664,11 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * return; } + if( NULL == m_currentMesh ) { + throw DeadlyImportError( "No current mesh for index data found." ); + return; + } + DataArrayList *vaList = node->getDataArrayList(); if( NULL == vaList ) { return; @@ -652,14 +677,33 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * const size_t numItems( countDataArrayListItems( vaList ) ); m_currentMesh->mNumFaces = numItems; m_currentMesh->mFaces = new aiFace[ numItems ]; - for( size_t i = 0; i < numItems; i++ ) { - aiFace *current( & ( m_currentMesh->mFaces[ i ] ) ); - current->mNumIndices = 3; - current->mIndices = new unsigned int[ current->mNumIndices ]; + m_currentMesh->mNumVertices = numItems * 3; + m_currentMesh->mVertices = new aiVector3D[ m_currentVertices.m_numVerts ]; + m_currentMesh->mNormals = new aiVector3D[ m_currentVertices.m_numVerts ]; + m_currentMesh->mNumUVComponents[ 0 ] = numItems * 3; + m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ m_currentVertices.m_numUVComps[ 0 ] ]; + + unsigned int index( 0 ); + for( size_t i = 0; i < m_currentMesh->mNumFaces; i++ ) { + aiFace ¤t( m_currentMesh->mFaces[ i ] ); + current.mNumIndices = 3; + current.mIndices = new unsigned int[ current.mNumIndices ]; Value *next( vaList->m_dataList ); - for( size_t indices = 0; indices < current->mNumIndices; indices++ ) { + for( size_t indices = 0; indices < current.mNumIndices; indices++ ) { const int idx = next->getInt32(); - current->mIndices[ indices ] = next->getInt32(); + ai_assert( idx <= m_currentVertices.m_numVerts ); + + aiVector3D pos = ( m_currentVertices.m_vertices[ idx ] ); + aiVector3D normal = ( m_currentVertices.m_normals[ idx ] ); + aiVector3D tex = ( m_currentVertices.m_textureCoords[ 0 ][ idx ] ); + + ai_assert( index < m_currentMesh->mNumVertices ); + m_currentMesh->mVertices[ index ] = pos; + m_currentMesh->mNormals[ index ] = normal; + m_currentMesh->mTextureCoords[0][ index ] = tex; + current.mIndices[ indices ] = index; + index++; + next = next->m_next; } vaList = vaList->m_next; @@ -703,7 +747,7 @@ void OpenGEXImporter::resolveReferences() { node->mMeshes[ i ] = meshIdx; } } else if( RefInfo::MaterialRef == currentRefInfo->m_type ) { - // ToDo + // ToDo! } else { throw DeadlyImportError( "Unknown reference info to resolve." ); } diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index 2e26a8e18..a9cdde1db 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -122,6 +122,22 @@ protected: void clearNodeStack(); private: + struct VertexContainer { + size_t m_numVerts; + aiVector3D *m_vertices; + size_t m_numNormals; + aiVector3D *m_normals; + size_t m_numUVComps[ AI_MAX_NUMBER_OF_TEXTURECOORDS ]; + aiVector3D *m_textureCoords[ AI_MAX_NUMBER_OF_TEXTURECOORDS ]; + + VertexContainer(); + ~VertexContainer(); + + private: + VertexContainer( const VertexContainer & ); + VertexContainer &operator = ( const VertexContainer & ); + }; + struct RefInfo { enum Type { MeshRef, @@ -146,6 +162,7 @@ private: ODDLParser::Context *m_ctx; MetricInfo m_metrics[ MetricInfo::Max ]; aiNode *m_currentNode; + VertexContainer m_currentVertices; aiMesh *m_currentMesh; std::vector m_nodeStack; std::vector m_unresolvedRefStack; From da3c347a5704d91b130201527870e87000b41d9d Mon Sep 17 00:00:00 2001 From: George Papadopoulos Date: Sun, 5 Apr 2015 14:55:42 +0300 Subject: [PATCH 36/85] add strtol10_64 and fix FBX text parsing for int_64 (for animation KTime) --- code/FBXParser.cpp | 2 +- code/fast_atof.h | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index a9fe97a5e..f4d140fb3 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -459,7 +459,7 @@ int64_t ParseTokenAsInt64(const Token& t, const char*& err_out) ai_assert(length > 0); const char* out; - const int64_t id = strtoul10_64(t.begin(), &out, &length); + const int64_t id = strtol10_64(t.begin(), &out, &length); if (out > t.end()) { err_out = "failed to parse Int64 (text)"; return 0L; diff --git a/code/fast_atof.h b/code/fast_atof.h index bc6c96d1a..b6bc5d3d6 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -220,6 +220,23 @@ inline uint64_t strtoul10_64( const char* in, const char** out=0, unsigned int* return value; } +// ------------------------------------------------------------------------------------ +// signed variant of strtoul10_64 +// ------------------------------------------------------------------------------------ +inline int64_t strtol10_64(const char* in, const char** out = 0, unsigned int* max_inout = 0) +{ + bool inv = (*in == '-'); + if (inv || *in == '+') + ++in; + + int value = strtoul10_64(in, out, max_inout); + if (inv) { + value = -value; + } + return value; +} + + // Number of relevant decimals for floating-point parsing. #define AI_FAST_ATOF_RELAVANT_DECIMALS 15 From 6a1522ded8678aac9c1d2edaff6928b8e2bf1729 Mon Sep 17 00:00:00 2001 From: George Papadopoulos Date: Sun, 5 Apr 2015 16:08:06 +0300 Subject: [PATCH 37/85] [OpenGEXImporter] Correctly initialize m_textureCoords array --- code/OpenGEXImporter.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 932ae9460..76cee77a8 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -176,10 +176,12 @@ namespace OpenGEX { USE_ODDLPARSER_NS OpenGEXImporter::VertexContainer::VertexContainer() -: m_numVerts( 0 ) -, m_vertices( NULL ) -, m_numNormals( 0 ) -, m_normals( NULL ) { +: m_numVerts() +, m_vertices() +, m_numNormals() +, m_normals() +, m_textureCoords() +, m_numUVComps() { ::memset( &m_numUVComps[ 0 ], 0, sizeof( size_t )*AI_MAX_NUMBER_OF_TEXTURECOORDS ); } From 54ce3d843f11660448d0ad81aed40fc687c192d4 Mon Sep 17 00:00:00 2001 From: George Papadopoulos Date: Sun, 5 Apr 2015 16:40:40 +0300 Subject: [PATCH 38/85] fix for strtol10_64 --- code/fast_atof.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/fast_atof.h b/code/fast_atof.h index b6bc5d3d6..35b1e6b94 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -229,7 +229,7 @@ inline int64_t strtol10_64(const char* in, const char** out = 0, unsigned int* m if (inv || *in == '+') ++in; - int value = strtoul10_64(in, out, max_inout); + int64_t value = strtoul10_64(in, out, max_inout); if (inv) { value = -value; } From c0e3540ec1597a1964c6733f1c3204e7627d0b7d Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 Apr 2015 21:19:07 +0200 Subject: [PATCH 39/85] use size_t instead of unsigned int ( static code analysis finding ). Signed-off-by: Kim Kulling --- code/ObjFileImporter.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 8f201aa5a..ef294536d 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -197,7 +197,7 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene pScene->mMeshes = new aiMesh*[ MeshArray.size() ]; for (size_t index =0; index < MeshArray.size(); index++) { - pScene->mMeshes [ index ] = MeshArray[ index ]; + pScene->mMeshes[ index ] = MeshArray[ index ]; } } @@ -227,7 +227,7 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile appendChildToParentNode( pParent, pNode ); } - for ( unsigned int i=0; i< pObject->m_Meshes.size(); i++ ) + for ( size_t i=0; i< pObject->m_Meshes.size(); i++ ) { unsigned int meshId = pObject->m_Meshes[ i ]; aiMesh *pMesh = createTopology( pModel, pObject, meshId ); @@ -267,16 +267,17 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile // ------------------------------------------------------------------------------------------------ // Create topology data aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const ObjFile::Object* pData, - unsigned int uiMeshIndex ) + unsigned int meshIndex ) { // Checking preconditions ai_assert( NULL != pModel ); + if( NULL == pData ) { return NULL; } // Create faces - ObjFile::Mesh *pObjMesh = pModel->m_Meshes[ uiMeshIndex ]; + ObjFile::Mesh *pObjMesh = pModel->m_Meshes[ meshIndex ]; if( !pObjMesh ) { return NULL; } @@ -345,7 +346,7 @@ aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const Obj } // Create mesh vertices - createVertexArray(pModel, pData, uiMeshIndex, pMesh, uiIdxCount); + createVertexArray(pModel, pData, meshIndex, pMesh, uiIdxCount); return pMesh; } @@ -356,7 +357,7 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, const ObjFile::Object* pCurrentObject, unsigned int uiMeshIndex, aiMesh* pMesh, - unsigned int uiIdxCount) + unsigned int numIndices) { // Checking preconditions ai_assert( NULL != pCurrentObject ); @@ -371,7 +372,7 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, return; // Copy vertices of this mesh instance - pMesh->mNumVertices = uiIdxCount; + pMesh->mNumVertices = numIndices; pMesh->mVertices = new aiVector3D[ pMesh->mNumVertices ]; // Allocate buffer for normal vectors From df1134b1a3e3a2b3ba69976a76c715a5e401cd25 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 Apr 2015 21:19:47 +0200 Subject: [PATCH 40/85] - initiate texture coordinate array. - use correct number of vertices for vertex array, Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 76cee77a8..814d27a39 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -176,20 +176,23 @@ namespace OpenGEX { USE_ODDLPARSER_NS OpenGEXImporter::VertexContainer::VertexContainer() -: m_numVerts() +: m_numVerts( 0 ) , m_vertices() -, m_numNormals() +, m_numNormals( 0 ) , m_normals() , m_textureCoords() , m_numUVComps() { - ::memset( &m_numUVComps[ 0 ], 0, sizeof( size_t )*AI_MAX_NUMBER_OF_TEXTURECOORDS ); + ::memset( &m_numUVComps[ 0 ], 0, sizeof( size_t )*AI_MAX_NUMBER_OF_TEXTURECOORDS ); + for( size_t i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; i++ ) { + m_textureCoords[ i ] = NULL; + } } OpenGEXImporter::VertexContainer::~VertexContainer() { delete[] m_vertices; delete[] m_normals; for( size_t i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; i++ ) { - delete[] m_textureCoords[ i ]; + delete [] m_textureCoords[ i ]; } } @@ -680,8 +683,8 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * m_currentMesh->mNumFaces = numItems; m_currentMesh->mFaces = new aiFace[ numItems ]; m_currentMesh->mNumVertices = numItems * 3; - m_currentMesh->mVertices = new aiVector3D[ m_currentVertices.m_numVerts ]; - m_currentMesh->mNormals = new aiVector3D[ m_currentVertices.m_numVerts ]; + m_currentMesh->mVertices = new aiVector3D[ m_currentMesh->mNumVertices ]; + m_currentMesh->mNormals = new aiVector3D[ m_currentMesh->mNumVertices ]; m_currentMesh->mNumUVComponents[ 0 ] = numItems * 3; m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ m_currentVertices.m_numUVComps[ 0 ] ]; @@ -695,14 +698,14 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * const int idx = next->getInt32(); ai_assert( idx <= m_currentVertices.m_numVerts ); - aiVector3D pos = ( m_currentVertices.m_vertices[ idx ] ); - aiVector3D normal = ( m_currentVertices.m_normals[ idx ] ); - aiVector3D tex = ( m_currentVertices.m_textureCoords[ 0 ][ idx ] ); + aiVector3D &pos = ( m_currentVertices.m_vertices[ idx ] ); + aiVector3D &normal = ( m_currentVertices.m_normals[ idx ] ); + aiVector3D &tex = ( m_currentVertices.m_textureCoords[ 0 ][ idx ] ); ai_assert( index < m_currentMesh->mNumVertices ); - m_currentMesh->mVertices[ index ] = pos; - m_currentMesh->mNormals[ index ] = normal; - m_currentMesh->mTextureCoords[0][ index ] = tex; + m_currentMesh->mVertices[ index ].Set( pos.x, pos.y, pos.z ); + m_currentMesh->mNormals[ index ].Set( normal.x, normal.y, normal.z ); + m_currentMesh->mTextureCoords[0][ index ].Set( tex.x, tex.y, tex.z ); current.mIndices[ indices ] = index; index++; From 22fc756d4a2dac411a32364af130ac0977d8d046 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 5 Apr 2015 23:17:16 +0200 Subject: [PATCH 41/85] - fix double initialization. - use correct number of vectors for dynamic array. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 814d27a39..a9e8c3e39 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -182,10 +182,7 @@ OpenGEXImporter::VertexContainer::VertexContainer() , m_normals() , m_textureCoords() , m_numUVComps() { - ::memset( &m_numUVComps[ 0 ], 0, sizeof( size_t )*AI_MAX_NUMBER_OF_TEXTURECOORDS ); - for( size_t i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; i++ ) { - m_textureCoords[ i ] = NULL; - } + // empty } OpenGEXImporter::VertexContainer::~VertexContainer() { @@ -686,7 +683,7 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * m_currentMesh->mVertices = new aiVector3D[ m_currentMesh->mNumVertices ]; m_currentMesh->mNormals = new aiVector3D[ m_currentMesh->mNumVertices ]; m_currentMesh->mNumUVComponents[ 0 ] = numItems * 3; - m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ m_currentVertices.m_numUVComps[ 0 ] ]; + m_currentMesh->mTextureCoords[ 0 ] = new aiVector3D[ m_currentMesh->mNumUVComponents[ 0 ] ]; unsigned int index( 0 ); for( size_t i = 0; i < m_currentMesh->mNumFaces; i++ ) { From b5e3e18bf0e747028be38711f8c0ed7129fe30da Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 6 Apr 2015 13:24:03 +0200 Subject: [PATCH 42/85] Cleanup Readme --- Readme.md | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/Readme.md b/Readme.md index 1945b9dbb..481298cdc 100644 --- a/Readme.md +++ b/Readme.md @@ -1,18 +1,25 @@ Open Asset Import Library (assimp) ======== -Open Asset Import Library is a Open Source library designed to load various __3d file formats and convert them into a shared, in-memory format__. It supports more than __40 file formats__ for import and a growing selection of file formats for export. Additionally, assimp features various __post processing tools__ to refine the imported data: _normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials_ and many more. +Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory format. It supports more than __40 file formats__ for import and a growing selection of file formats for export. -This is the development trunk of assimp containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. According to [Travis-CI] (https://travis-ci.org/), the current build status of the trunk is [![Build Status](https://travis-ci.org/assimp/assimp.png)](https://travis-ci.org/assimp/assimp) +APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. -[open3mod](https://github.com/acgessler/open3mod) is an Open Source 3D model viewer based off Assimp's import and export abilities. +Additionally, assimp features various __mesh post processing tools__: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more. + +This is the development trunk containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. According to [Travis-CI] (https://travis-ci.org/), the current build status is: + +[![Build Status](https://travis-ci.org/assimp/assimp.png)](https://travis-ci.org/assimp/assimp) + +__[open3mod](https://github.com/acgessler/open3mod) is a powerful 3D model viewer based on Assimp's import and export abilities.__ #### Supported file formats #### -The library provides importers for a lot of file formats, including: +A full list [is here](http://assimp.sourceforge.net/main_features_formats.html). +__Importers__: - 3DS -- BLEND (Blender 3D) +- BLEND (Blender) - DAE/Collada - FBX - IFC-STEP @@ -46,13 +53,13 @@ The library provides importers for a lot of file formats, including: - Ogre Binary - Ogre XML - Q3D -- ASSBIN (Assimp scene serialization) +- ASSBIN (Assimp custom format) -Additionally, the following formats are also supported, but not part of the core library as they depend on proprietary libraries. +Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default): - C4D (https://github.com/acgessler/assimp-cinema4d) -Exporters include: +__Exporters__: - DAE (Collada) - STL @@ -63,23 +70,21 @@ Exporters include: - JSON (for WebGl, via https://github.com/acgessler/assimp2json) - ASSBIN -See [the full list here](http://assimp.sourceforge.net/main_features_formats.html). +### Building ### +Take a look into the `INSTALL` file. Our build system is CMake, if you used CMake before there is a good chance you know what to do. + #### Repository structure #### -Open Asset Import Library is implemented in C++ (but provides both a C and a -C++ish interface). The directory structure is: +Open Asset Import Library is implemented in C++. The directory structure is: - /bin Folder for binaries, only used on Windows /code Source code /contrib Third-party libraries /doc Documentation (doxysource and pre-compiled docs) /include Public header C and C++ header files - /lib Static library location for Windows - /obj Object file location for Windows /scripts Scripts used to generate the loading code for some formats /port Ports to other languages and scripts to maintain those. /test Unit- and regression tests, test suite of models @@ -90,24 +95,15 @@ C++ish interface). The directory structure is: CMake has superseeded all legacy build options!) - -### Building ### - - -Take a look into the `INSTALL` file. Our build system is CMake, if you already used CMake before there is a good chance you know what to do. - - ### Where to get help ### For more information, visit [our website](http://assimp.sourceforge.net/). Or check out the `./doc`- folder, which contains the official documentation in HTML format. (CHMs for Windows are included in some release packages and should be located right here in the root folder). -If the documentation doesn't solve your problems, -[try our forums at SF.net](http://sourceforge.net/p/assimp/discussion/817654) or ask on -[StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). +If the docs don't solve your problem, ask on [StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github. -For development discussions, there is also a mailing list, _assimp-discussions_ +For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_ [(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions) ### Contributing ### @@ -115,10 +111,9 @@ For development discussions, there is also a mailing list, _assimp-discussions_ Contributions to assimp are highly appreciated. The easiest way to get involved is to submit a pull request with your changes against the main repository's `master` branch. - ### License ### -Our license is based on the modified, __3-clause BSD__-License, which is very liberal. +Our license is based on the modified, __3-clause BSD__-License. An _informal_ summary is: do whatever you want, but include Assimp's license text with your product - and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp. From ecf390d51f2cdadd1c8ff2b03bf9481866a733e6 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 6 Apr 2015 14:56:12 +0200 Subject: [PATCH 43/85] set the correct reference to meshes. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 17 ++++++++++++++--- code/OpenGEXImporter.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index a9e8c3e39..2b8fd207f 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -175,6 +175,7 @@ namespace OpenGEX { USE_ODDLPARSER_NS +//------------------------------------------------------------------------------------------------ OpenGEXImporter::VertexContainer::VertexContainer() : m_numVerts( 0 ) , m_vertices() @@ -185,6 +186,7 @@ OpenGEXImporter::VertexContainer::VertexContainer() // empty } +//------------------------------------------------------------------------------------------------ OpenGEXImporter::VertexContainer::~VertexContainer() { delete[] m_vertices; delete[] m_normals; @@ -536,7 +538,6 @@ void OpenGEXImporter::handleMeshNode( ODDLParser::DDLNode *node, aiScene *pScene m_currentMesh = new aiMesh; const size_t meshidx( m_meshCache.size() ); m_meshCache.push_back( m_currentMesh ); - m_mesh2refMap[ node->getName() ] = meshidx; Property *prop = node->getProperties(); if( NULL != prop ) { @@ -550,6 +551,12 @@ void OpenGEXImporter::handleMeshNode( ODDLParser::DDLNode *node, aiScene *pScene } handleNodes( node, pScene ); + + DDLNode *parent( node->getParent() ); + if( NULL != parent ) { + const std::string &name = parent->getName(); + m_mesh2refMap[ name ] = meshidx; + } } //------------------------------------------------------------------------------------------------ @@ -745,8 +752,12 @@ void OpenGEXImporter::resolveReferences() { if( RefInfo::MeshRef == currentRefInfo->m_type ) { for( size_t i = 0; i < currentRefInfo->m_Names.size(); i++ ) { const std::string &name(currentRefInfo->m_Names[ i ] ); - unsigned int meshIdx = m_mesh2refMap[ name ]; - node->mMeshes[ i ] = meshIdx; + ReferenceMap::const_iterator it( m_mesh2refMap.find( name ) ); + if( m_mesh2refMap.end() != it ) { + unsigned int meshIdx = m_mesh2refMap[ name ]; + node->mMeshes[ i ] = meshIdx; + node->mNumMeshes++; + } } } else if( RefInfo::MaterialRef == currentRefInfo->m_type ) { // ToDo! diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index a9cdde1db..f1b608a4b 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -157,6 +157,7 @@ private: }; std::vector m_meshCache; + typedef std::map ReferenceMap; std::map m_mesh2refMap; ODDLParser::Context *m_ctx; From fb7661c43033fa2c7eb19c5461ee2dcc2878ed3f Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Tue, 7 Apr 2015 08:20:27 +0200 Subject: [PATCH 44/85] add static flag for exe build if no shared build is requested --- .travis.yml | 10 +++++----- CMakeLists.txt | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index ae3a0b983..0630cc268 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,12 +15,12 @@ env: matrix: - LINUX=1 TRAVIS_NO_EXPORT=YES - LINUX=1 TRAVIS_NO_EXPORT=NO - - LINUX=1 TRAVIS_STATIC_BUILD=ON - - LINUX=1 TRAVIS_STATIC_BUILD=OFF + - LINUX=1 SHARED_BUILD=ON + - LINUX=1 SHARED_BUILD=OFF - WINDOWS=1 TRAVIS_NO_EXPORT=YES - WINDOWS=1 TRAVIS_NO_EXPORT=NO - - WINDOWS=1 TRAVIS_STATIC_BUILD=ON - - WINDOWS=1 TRAVIS_STATIC_BUILD=OFF + - WINDOWS=1 SHARED_BUILD=ON + - WINDOWS=1 SHARED_BUILD=OFF - ANDROID=1 language: cpp @@ -38,7 +38,7 @@ script: elif [ $RESERVED ]; then echo "Reserved condition" ; else - cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD ; + cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD ; make ; sudo make install ; sudo ldconfig ; diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a3a325be..226ab911f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,10 @@ cmake_minimum_required( VERSION 2.8 ) PROJECT( Assimp ) +if(NOT BUILD_SHARED_LIBS) + set(CMAKE_EXE_LINKER_FLAGS "-static") +endif(NOT BUILD_SHARED_LIBS) + # Define here the needed parameters set (ASSIMP_VERSION_MAJOR 3) set (ASSIMP_VERSION_MINOR 1) From 297e1d21171d0e7c3a87c0d036a4a40589c8f3fa Mon Sep 17 00:00:00 2001 From: arris69 Date: Tue, 7 Apr 2015 16:07:29 +0200 Subject: [PATCH 45/85] it's a difference if it's set to OFF or it's undefined... --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 226ab911f..011f66864 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required( VERSION 2.8 ) PROJECT( Assimp ) +option(BUILD_SHARED_LIBS "Build package with shared libraries." OFF) if(NOT BUILD_SHARED_LIBS) set(CMAKE_EXE_LINKER_FLAGS "-static") endif(NOT BUILD_SHARED_LIBS) From 7a6c00ca11e2766331e210a09b54b71b2fbc5e31 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Wed, 8 Apr 2015 12:34:54 +0200 Subject: [PATCH 46/85] looks like cmake is per design not for building static executables, clang too. =%-| --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 011f66864..aa4d35124 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,8 @@ PROJECT( Assimp ) option(BUILD_SHARED_LIBS "Build package with shared libraries." OFF) if(NOT BUILD_SHARED_LIBS) - set(CMAKE_EXE_LINKER_FLAGS "-static") + #set(CMAKE_EXE_LINKER_FLAGS "-static") + set(LINK_SEARCH_START_STATIC 1) endif(NOT BUILD_SHARED_LIBS) # Define here the needed parameters From ed57fac879a980fb6c71ceffd57b59d7b61d88ff Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 8 Apr 2015 20:43:55 +0200 Subject: [PATCH 47/85] create node tree Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 53 ++++++++++++++++++++++++++++++++++------ code/OpenGEXImporter.h | 9 +++++++ 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 2b8fd207f..8454ae1f2 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -211,6 +211,8 @@ OpenGEXImporter::RefInfo::~RefInfo() { //------------------------------------------------------------------------------------------------ OpenGEXImporter::OpenGEXImporter() : m_meshCache() +, m_root( NULL ) +, m_nodeChildMap() , m_mesh2refMap() , m_ctx( NULL ) , m_currentNode( NULL ) @@ -261,6 +263,7 @@ void OpenGEXImporter::InternReadFile( const std::string &filename, aiScene *pSce copyMeshes( pScene ); resolveReferences(); + createNodeTree( pScene ); } //------------------------------------------------------------------------------------------------ @@ -724,6 +727,16 @@ void OpenGEXImporter::handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pS } +//------------------------------------------------------------------------------------------------ +void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + +} + +//------------------------------------------------------------------------------------------------ +void OpenGEXImporter::handleTextureNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + +} + //------------------------------------------------------------------------------------------------ void OpenGEXImporter::copyMeshes( aiScene *pScene ) { if( m_meshCache.empty() ) { @@ -756,7 +769,7 @@ void OpenGEXImporter::resolveReferences() { if( m_mesh2refMap.end() != it ) { unsigned int meshIdx = m_mesh2refMap[ name ]; node->mMeshes[ i ] = meshIdx; - node->mNumMeshes++; + //node->mNumMeshes++; } } } else if( RefInfo::MaterialRef == currentRefInfo->m_type ) { @@ -769,13 +782,21 @@ void OpenGEXImporter::resolveReferences() { } //------------------------------------------------------------------------------------------------ -void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene ) { - -} - -//------------------------------------------------------------------------------------------------ -void OpenGEXImporter::handleTextureNode( ODDLParser::DDLNode *node, aiScene *pScene ) { +void OpenGEXImporter::createNodeTree( aiScene *pScene ) { + if( NULL == m_root ) { + return; + } + if( m_root->m_children.empty() ) { + return; + } + size_t i( 0 ); + pScene->mRootNode->mNumChildren = m_root->m_children.size(); + pScene->mRootNode->mChildren = new C_STRUCT aiNode*[ pScene->mRootNode->mNumChildren ]; + for( ChildInfo::NodeList::iterator it = m_root->m_children.begin(); it != m_root->m_children.end(); it++ ) { + pScene->mRootNode->mChildren[ i ] = *it; + i++; + } } //------------------------------------------------------------------------------------------------ @@ -783,12 +804,30 @@ void OpenGEXImporter::pushNode( aiNode *node, aiScene *pScene ) { ai_assert( NULL != pScene ); if( NULL != node ) { + ChildInfo *info( NULL ); if( m_nodeStack.empty() ) { node->mParent = pScene->mRootNode; + NodeChildMap::iterator it( m_nodeChildMap.find( node->mParent ) ); + if( m_nodeChildMap.end() == it ) { + info = new ChildInfo; + m_root = info; + m_nodeChildMap[ node->mParent ] = info; + } else { + info = it->second; + } + info->m_children.push_back( node ); } else { aiNode *parent( m_nodeStack.back() ); ai_assert( NULL != parent ); node->mParent = parent; + NodeChildMap::iterator it( m_nodeChildMap.find( node->mParent ) ); + if( m_nodeChildMap.end() == it ) { + info = new ChildInfo; + m_nodeChildMap[ node->mParent ] = info; + } else { + info = it->second; + } + info->m_children.push_back( node ); } m_nodeStack.push_back( node ); } diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index f1b608a4b..f5c328ff7 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -120,6 +120,7 @@ protected: aiNode *popNode(); aiNode *top() const; void clearNodeStack(); + void createNodeTree( aiScene *pScene ); private: struct VertexContainer { @@ -156,6 +157,14 @@ private: RefInfo &operator = ( const RefInfo & ); }; + struct ChildInfo { + typedef std::list NodeList; + std::list m_children; + }; + ChildInfo *m_root; + typedef std::map NodeChildMap; + NodeChildMap m_nodeChildMap; + std::vector m_meshCache; typedef std::map ReferenceMap; std::map m_mesh2refMap; From cdeb95611d03495b5b2f59958009904543df01cd Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 12 Apr 2015 18:16:49 +0200 Subject: [PATCH 48/85] double definition, should better open my eyes... --- CMakeLists.txt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa4d35124..b31f2c7f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required( VERSION 2.8 ) PROJECT( Assimp ) -option(BUILD_SHARED_LIBS "Build package with shared libraries." OFF) +option(BUILD_SHARED_LIBS "Build package with shared libraries." ON) if(NOT BUILD_SHARED_LIBS) #set(CMAKE_EXE_LINKER_FLAGS "-static") - set(LINK_SEARCH_START_STATIC 1) + set(LINK_SEARCH_START_STATIC TRUE) endif(NOT BUILD_SHARED_LIBS) # Define here the needed parameters @@ -94,9 +94,6 @@ SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE PATH SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools") -# Allow the user to build a shared or static library -option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) - # Only generate this target if no higher-level project already has IF (NOT TARGET uninstall) # add make uninstall capability From 2f372c0ac5ad93e128087b565ce3d7d6b3832e9c Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 12 Apr 2015 19:05:27 +0200 Subject: [PATCH 49/85] add the mingw compile step --- .travis.yml | 4 ++++ cmake-modules/MinGW_x86_64.cmake | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 cmake-modules/MinGW_x86_64.cmake diff --git a/.travis.yml b/.travis.yml index 0630cc268..eb89ddf92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,10 @@ install: script: - if [ $ANDROID ]; then ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; + elif [ $WINDOWS ]; then + cmake -G "Unix Makefiles" -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD -DCMAKE_TOOLCHAIN_FILE=cmake-modules/MinGW_x86_64.cmake ; + cmake --build . ; + make install ; elif [ $RESERVED ]; then echo "Reserved condition" ; else diff --git a/cmake-modules/MinGW_x86_64.cmake b/cmake-modules/MinGW_x86_64.cmake new file mode 100644 index 000000000..d5c1f1501 --- /dev/null +++ b/cmake-modules/MinGW_x86_64.cmake @@ -0,0 +1,16 @@ +# this one sets internal to crosscompile (in theory) +SET(CMAKE_SYSTEM_NAME Windows) + +# the minimalistic settings +SET(CMAKE_C_COMPILER "/usr/bin/x86_64-w64-mingw32-gcc") +SET(CMAKE_CXX_COMPILER "/usr/bin/x86_64-w64-mingw32-g++") +SET(CMAKE_RC_COMPILER "/usr/bin/x86_64-w64-mingw32-windres") + +# where is the target (so called staging) environment +SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) + +# search for programs in the build host directories (default BOTH) +#SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) From 20e23fbd0a8f62383e904ee2ac037e56fd31f025 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 12 Apr 2015 19:10:10 +0200 Subject: [PATCH 50/85] i see no reason to check it with clang too. --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eb89ddf92..2480c4633 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,10 +35,12 @@ install: script: - if [ $ANDROID ]; then ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; - elif [ $WINDOWS ]; then + elif [ $WINDOWS -a $CC = "gcc" ]; then cmake -G "Unix Makefiles" -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD -DCMAKE_TOOLCHAIN_FILE=cmake-modules/MinGW_x86_64.cmake ; cmake --build . ; make install ; + elif [ $WINDOWS ]; then + echo "Skip compile with non-gcc setting." ; elif [ $RESERVED ]; then echo "Reserved condition" ; else From 5f58188de51bb8d17a25fd3f2e275866d36b13c8 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sun, 12 Apr 2015 19:12:48 +0200 Subject: [PATCH 51/85] mingwin headers are a bit 'outdated' --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2480c4633..20b7a058a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,8 @@ script: - if [ $ANDROID ]; then ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; elif [ $WINDOWS -a $CC = "gcc" ]; then + sudo sh -c "wget http://source.winehq.org/git/wine.git/commitdiff_plain/86781a6a524fa336f893ffd0a87373ffd306913c?hp=076edfe9d4b6cd39b6cf41b9f1d3e18688cc8673 -O - | patch -p 1 -d /usr/x86_64-w64-mingw32" ; + sudo sh -c "wget https://www.winehq.org/pipermail/wine-patches/2012-February/111438.html -O - | patch -p 1 -d /usr/x86_64-w64-mingw32" ; cmake -G "Unix Makefiles" -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD -DCMAKE_TOOLCHAIN_FILE=cmake-modules/MinGW_x86_64.cmake ; cmake --build . ; make install ; From e2f234707a18cb72530970288ef570a7dafcccac Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sun, 12 Apr 2015 19:53:24 +0200 Subject: [PATCH 52/85] Fix possible crash in SceneCombiner when the destinations scene has mPrivate==null. Fixes #401. --- code/SceneCombiner.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/SceneCombiner.cpp b/code/SceneCombiner.cpp index f9face9b1..26ed94712 100644 --- a/code/SceneCombiner.cpp +++ b/code/SceneCombiner.cpp @@ -1023,7 +1023,9 @@ void SceneCombiner::CopyScene(aiScene** _dest,const aiScene* src,bool allocate) dest->mFlags = src->mFlags; // source private data might be NULL if the scene is user-allocated (i.e. for use with the export API) - ScenePriv(dest)->mPPStepsApplied = ScenePriv(src) ? ScenePriv(src)->mPPStepsApplied : 0; + if (dest->mPrivate != NULL) { + ScenePriv(dest)->mPPStepsApplied = ScenePriv(src) ? ScenePriv(src)->mPPStepsApplied : 0; + } } // ------------------------------------------------------------------------------------------------ From 806d3ac8e15bf4112dbb7ece7dba8cfc4e688bd0 Mon Sep 17 00:00:00 2001 From: ulf Date: Mon, 13 Apr 2015 16:01:33 +0200 Subject: [PATCH 53/85] - IFC reader regenerated from schema to include IfcArbitraryProfileDefWithVoids - implemented IfcArbitraryProfileDefWithVoids to fix solar panel covers in test\models-nonbsd\IFC\rac_basic_sample_project.ifc - warning: another dirty hack on top of dirty hacks - one day all these CSG implementations will blow up in our faces. Mark my words. --- code/IFCGeometry.cpp | 173 +- code/IFCReaderGen.cpp | 8572 ++++++++++++------------- code/IFCReaderGen.h | 7292 ++++++++++----------- code/IFCUtil.h | 1 + scripts/IFCImporter/entitylist.txt | 9 +- scripts/IFCImporter/schema.exp | 9571 ++++++++++++++++++++++++++++ 6 files changed, 17607 insertions(+), 8011 deletions(-) create mode 100644 scripts/IFCImporter/schema.exp diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp index d0a55ad5b..1e62147e3 100644 --- a/code/IFCGeometry.cpp +++ b/code/IFCGeometry.cpp @@ -522,43 +522,23 @@ IfcMatrix3 DerivePlaneCoordinateSpace(const TempMesh& curmesh, bool& ok, IfcVect return m; } - -// ------------------------------------------------------------------------------------------------ -void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& result, - ConversionData& conv, bool collect_openings) +// Extrudes the given polygon along the direction, converts it into an opening or applies all openings as necessary. +void ProcessExtrudedArea(const IfcExtrudedAreaSolid& solid, const TempMesh& curve, + const IfcVector3& extrusionDir, TempMesh& result, ConversionData &conv, bool collect_openings) { - TempMesh meshout; - - // First read the profile description - if(!ProcessProfile(*solid.SweptArea,meshout,conv) || meshout.verts.size()<=1) { - return; - } - - IfcVector3 dir; - ConvertDirection(dir,solid.ExtrudedDirection); - - dir *= solid.Depth; /* - if(conv.collect_openings && !conv.apply_openings) { - dir *= 1000.0; - } */ - - // Outline: assuming that `meshout.verts` is now a list of vertex points forming - // the underlying profile, extrude along the given axis, forming new - // triangles. - - std::vector& in = meshout.verts; - const size_t size=in.size(); - - const bool has_area = solid.SweptArea->ProfileType == "AREA" && size>2; - if(solid.Depth < 1e-6) { - if(has_area) { - result = meshout; + // Outline: 'curve' is now a list of vertex points forming the underlying profile, extrude along the given axis, + // forming new triangles. + const bool has_area = solid.SweptArea->ProfileType == "AREA" && curve.verts.size() > 2; + if( solid.Depth < 1e-6 ) { + if( has_area ) { + result.Append(curve); } return; } - result.verts.reserve(size*(has_area?4:2)); - result.vertcnt.reserve(meshout.vertcnt.size()+2); + result.verts.reserve(curve.verts.size()*(has_area ? 4 : 2)); + result.vertcnt.reserve(curve.verts.size() + 2); + std::vector in = curve.verts; // First step: transform all vertices into the target coordinate space IfcMatrix4 trafo; @@ -566,7 +546,7 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul IfcVector3 vmin, vmax; MinMaxChooser()(vmin, vmax); - BOOST_FOREACH(IfcVector3& v,in) { + BOOST_FOREACH(IfcVector3& v, in) { v *= trafo; vmin = std::min(vmin, v); @@ -575,93 +555,91 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul vmax -= vmin; const IfcFloat diag = vmax.Length(); - - IfcVector3 min = in[0]; - dir *= IfcMatrix3(trafo); + IfcVector3 dir = IfcMatrix3(trafo) * extrusionDir; // reverse profile polygon if it's winded in the wrong direction in relation to the extrusion direction - IfcVector3 profileNormal = TempMesh::ComputePolygonNormal( in.data(), in.size()); + IfcVector3 profileNormal = TempMesh::ComputePolygonNormal(in.data(), in.size()); if( profileNormal * dir < 0.0 ) - std::reverse( in.begin(), in.end()); + std::reverse(in.begin(), in.end()); std::vector nors; const bool openings = !!conv.apply_openings && conv.apply_openings->size(); - + // Compute the normal vectors for all opening polygons as a prerequisite // to TryAddOpenings_Poly2Tri() // XXX this belongs into the aforementioned function - if (openings) { + if( openings ) { - if (!conv.settings.useCustomTriangulation) { + if( !conv.settings.useCustomTriangulation ) { // it is essential to apply the openings in the correct spatial order. The direction // doesn't matter, but we would screw up if we started with e.g. a door in between // two windows. - std::sort(conv.apply_openings->begin(),conv.apply_openings->end(), - TempOpening::DistanceSorter(min)); + std::sort(conv.apply_openings->begin(), conv.apply_openings->end(), TempOpening::DistanceSorter(in[0])); } - + nors.reserve(conv.apply_openings->size()); - BOOST_FOREACH(TempOpening& t,*conv.apply_openings) { + BOOST_FOREACH(TempOpening& t, *conv.apply_openings) { TempMesh& bounds = *t.profileMesh.get(); - - if (bounds.verts.size() <= 2) { + + if( bounds.verts.size() <= 2 ) { nors.push_back(IfcVector3()); continue; } - nors.push_back(((bounds.verts[2]-bounds.verts[0])^(bounds.verts[1]-bounds.verts[0]) ).Normalize()); + nors.push_back(((bounds.verts[2] - bounds.verts[0]) ^ (bounds.verts[1] - bounds.verts[0])).Normalize()); } } - + TempMesh temp; TempMesh& curmesh = openings ? temp : result; std::vector& out = curmesh.verts; - + size_t sides_with_openings = 0; - for(size_t i = 0; i < size; ++i) { - const size_t next = (i+1)%size; + for( size_t i = 0; i < in.size(); ++i ) { + const size_t next = (i + 1) % in.size(); curmesh.vertcnt.push_back(4); - + out.push_back(in[i]); out.push_back(in[next]); - out.push_back(in[next]+dir); - out.push_back(in[i]+dir); + out.push_back(in[next] + dir); + out.push_back(in[i] + dir); - if(openings) { - if((in[i]-in[next]).Length() > diag * 0.1 && GenerateOpenings(*conv.apply_openings,nors,temp,true, true, dir)) { + if( openings ) { + if( (in[i] - in[next]).Length() > diag * 0.1 && GenerateOpenings(*conv.apply_openings, nors, temp, true, true, dir) ) { ++sides_with_openings; } - + result.Append(temp); temp.Clear(); } } - if(openings) { + if( openings ) { BOOST_FOREACH(TempOpening& opening, *conv.apply_openings) { - if (!opening.wallPoints.empty()) { + if( !opening.wallPoints.empty() ) { IFCImporter::LogError("failed to generate all window caps"); } opening.wallPoints.clear(); } } - - size_t sides_with_v_openings = 0; - if(has_area) { - for(size_t n = 0; n < 2; ++n) { + size_t sides_with_v_openings = 0; + if( has_area ) { + + for( size_t n = 0; n < 2; ++n ) { if( n > 0 ) { - for(size_t i = 0; i < size; ++i ) - out.push_back(in[i]+dir); - } else { - for(size_t i = size; i--; ) + for( size_t i = 0; i < in.size(); ++i ) + out.push_back(in[i] + dir); + } + else { + for( size_t i = in.size(); i--; ) out.push_back(in[i]); } - curmesh.vertcnt.push_back(size); - if(openings && size > 2) { - if(GenerateOpenings(*conv.apply_openings,nors,temp,true, true, dir)) { + curmesh.vertcnt.push_back(in.size()); + if( openings && in.size() > 2 ) { + if( GenerateOpenings(*conv.apply_openings, nors, temp, true, true, dir) ) { ++sides_with_v_openings; } @@ -671,7 +649,7 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul } } - if(openings && ((sides_with_openings == 1 && sides_with_openings) || (sides_with_v_openings == 2 && sides_with_v_openings))) { + if( openings && ((sides_with_openings == 1 && sides_with_openings) || (sides_with_v_openings == 2 && sides_with_v_openings)) ) { IFCImporter::LogWarn("failed to resolve all openings, presumably their topology is not supported by Assimp"); } @@ -679,17 +657,58 @@ void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& resul // If this is an opening element, store both the extruded mesh and the 2D profile mesh // it was created from. Return an empty mesh to the caller. - if(collect_openings && !result.IsEmpty()) { + if( collect_openings && !result.IsEmpty() ) { ai_assert(conv.collect_openings); boost::shared_ptr profile = boost::shared_ptr(new TempMesh()); profile->Swap(result); boost::shared_ptr profile2D = boost::shared_ptr(new TempMesh()); - profile2D->Swap(meshout); - conv.collect_openings->push_back(TempOpening(&solid,dir,profile, profile2D)); + profile2D->verts.insert(profile2D->verts.end(), in.begin(), in.end()); + profile2D->vertcnt.push_back(in.size()); + conv.collect_openings->push_back(TempOpening(&solid, dir, profile, profile2D)); ai_assert(result.IsEmpty()); - } + } +} + +// ------------------------------------------------------------------------------------------------ +void ProcessExtrudedAreaSolid(const IfcExtrudedAreaSolid& solid, TempMesh& result, + ConversionData& conv, bool collect_openings) +{ + TempMesh meshout; + + // First read the profile description. + if(!ProcessProfile(*solid.SweptArea,meshout,conv) || meshout.verts.size()<=1) { + return; + } + + IfcVector3 dir; + ConvertDirection(dir,solid.ExtrudedDirection); + dir *= solid.Depth; + + // Some profiles bring their own holes, for which we need to provide a container. This all is somewhat backwards, + // and there's still so many corner cases uncovered - we really need a generic solution to all of this hole carving. + std::vector fisherPriceMyFirstOpenings; + std::vector* oldApplyOpenings = conv.apply_openings; + if( const IfcArbitraryProfileDefWithVoids* const cprofile = solid.SweptArea->ToPtr() ) { + if( !cprofile->InnerCurves.empty() ) { + // read all inner curves and extrude them to form proper openings. + std::vector* oldCollectOpenings = conv.collect_openings; + conv.collect_openings = &fisherPriceMyFirstOpenings; + + BOOST_FOREACH(const IfcCurve* curve, cprofile->InnerCurves) { + TempMesh curveMesh, tempMesh; + ProcessCurve(*curve, curveMesh, conv); + ProcessExtrudedArea(solid, curveMesh, dir, tempMesh, conv, true); + } + // and then apply those to the geometry we're about to generate + conv.apply_openings = conv.collect_openings; + conv.collect_openings = oldCollectOpenings; + } + } + + ProcessExtrudedArea(solid, meshout, dir, result, conv, collect_openings); + conv.apply_openings = oldApplyOpenings; } // ------------------------------------------------------------------------------------------------ @@ -784,7 +803,7 @@ bool ProcessGeometricItem(const IfcRepresentationItem& geo, unsigned int matid, meshtmp->RemoveDegenerates(); if(fix_orientation) { - meshtmp->FixupFaceOrientation(); +// meshtmp->FixupFaceOrientation(); } aiMesh* const mesh = meshtmp->ToMesh(); diff --git a/code/IFCReaderGen.cpp b/code/IFCReaderGen.cpp index 00ff4aa35..5e551eec2 100644 --- a/code/IFCReaderGen.cpp +++ b/code/IFCReaderGen.cpp @@ -52,986 +52,986 @@ namespace { typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; const SchemaEntry schema_raw[] = { - SchemaEntry("ifcstairtypeenum",NULL ) -, SchemaEntry("ifcspacetypeenum",NULL ) -, SchemaEntry("ifcwalltypeenum",NULL ) -, SchemaEntry("ifcmonthinyearnumber",NULL ) -, SchemaEntry("ifcheatfluxdensitymeasure",NULL ) -, SchemaEntry("ifckinematicviscositymeasure",NULL ) -, SchemaEntry("ifcsequenceenum",NULL ) -, SchemaEntry("ifcairtoairheatrecoverytypeenum",NULL ) -, SchemaEntry("ifcactorselect",NULL ) -, SchemaEntry("ifctransformertypeenum",NULL ) -, SchemaEntry("ifcunitaryequipmenttypeenum",NULL ) -, SchemaEntry("ifcelectricflowstoragedevicetypeenum",NULL ) -, SchemaEntry("ifcenergysequenceenum",NULL ) -, SchemaEntry("ifcworkcontroltypeenum",NULL ) -, SchemaEntry("ifccurvaturemeasure",NULL ) -, SchemaEntry("ifcparametervalue",NULL ) -, SchemaEntry("ifcappliedvalueselect",NULL ) -, SchemaEntry("ifcwarpingconstantmeasure",NULL ) + SchemaEntry("ifcsiprefix",NULL ) +, SchemaEntry("ifccolour",NULL ) +, SchemaEntry("ifcevaporativecoolertypeenum",NULL ) +, SchemaEntry("ifcmetricvalueselect",NULL ) +, SchemaEntry("ifccurtainwalltypeenum",NULL ) +, SchemaEntry("ifcvolumetricflowratemeasure",NULL ) +, SchemaEntry("ifcphmeasure",NULL ) +, SchemaEntry("ifctimestamp",NULL ) +, SchemaEntry("ifcsoundpressuremeasure",NULL ) , SchemaEntry("ifcarithmeticoperatorenum",NULL ) -, SchemaEntry("ifclinearforcemeasure",NULL ) +, SchemaEntry("ifcoutlettypeenum",NULL ) +, SchemaEntry("ifclamptypeenum",NULL ) +, SchemaEntry("ifcobjectreferenceselect",NULL ) +, SchemaEntry("ifcdatetimeselect",NULL ) +, SchemaEntry("ifcelectricgeneratortypeenum",NULL ) +, SchemaEntry("ifcmoisturediffusivitymeasure",NULL ) +, SchemaEntry("ifccompoundplaneanglemeasure",NULL ) +, SchemaEntry("ifcderivedunitenum",NULL ) +, SchemaEntry("ifcrotationalstiffnessmeasure",NULL ) +, SchemaEntry("ifcpipefittingtypeenum",NULL ) +, SchemaEntry("ifcshearmodulusmeasure",NULL ) +, SchemaEntry("ifccontextdependentmeasure",NULL ) +, SchemaEntry("ifclightfixturetypeenum",NULL ) +, SchemaEntry("ifcresourceconsumptionenum",NULL ) +, SchemaEntry("ifcdistributionchamberelementtypeenum",NULL ) +, SchemaEntry("ifcplaneanglemeasure",NULL ) +, SchemaEntry("ifcslabtypeenum",NULL ) +, SchemaEntry("ifccharacterstyleselect",NULL ) +, SchemaEntry("ifcdimensionextentusage",NULL ) +, SchemaEntry("ifcdynamicviscositymeasure",NULL ) +, SchemaEntry("ifcpropertysourceenum",NULL ) +, SchemaEntry("ifcconstraintenum",NULL ) +, SchemaEntry("ifclayersetdirectionenum",NULL ) +, SchemaEntry("ifcfontvariant",NULL ) +, SchemaEntry("ifcmodulusofelasticitymeasure",NULL ) +, SchemaEntry("ifcdoorpanelpositionenum",NULL ) +, SchemaEntry("ifcwindowstyleconstructionenum",NULL ) +, SchemaEntry("ifcamountofsubstancemeasure",NULL ) +, SchemaEntry("ifccurvaturemeasure",NULL ) +, SchemaEntry("ifccablecarrierfittingtypeenum",NULL ) +, SchemaEntry("ifcminuteinhour",NULL ) +, SchemaEntry("ifcpressuremeasure",NULL ) +, SchemaEntry("ifcelectricconductancemeasure",NULL ) +, SchemaEntry("ifcisothermalmoisturecapacitymeasure",NULL ) +, SchemaEntry("ifcfantypeenum",NULL ) +, SchemaEntry("ifccurveoredgecurve",NULL ) +, SchemaEntry("ifcpipesegmenttypeenum",NULL ) +, SchemaEntry("ifcevaporatortypeenum",NULL ) +, SchemaEntry("ifcelectriccapacitancemeasure",NULL ) +, SchemaEntry("ifcelementassemblytypeenum",NULL ) +, SchemaEntry("ifcelectriccurrentmeasure",NULL ) +, SchemaEntry("ifcthermaladmittancemeasure",NULL ) +, SchemaEntry("ifclibraryselect",NULL ) +, SchemaEntry("ifcsanitaryterminaltypeenum",NULL ) +, SchemaEntry("ifcvalue",NULL ) +, SchemaEntry("ifcroleenum",NULL ) +, SchemaEntry("ifcmodulusofrotationalsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcwindowstyleoperationenum",NULL ) +, SchemaEntry("ifcdayinmonthnumber",NULL ) +, SchemaEntry("ifcdirectionsenseenum",NULL ) +, SchemaEntry("ifcmotorconnectiontypeenum",NULL ) +, SchemaEntry("ifcmassdensitymeasure",NULL ) +, SchemaEntry("ifcspacetypeenum",NULL ) +, SchemaEntry("ifctextalignment",NULL ) +, SchemaEntry("ifcabsorbeddosemeasure",NULL ) +, SchemaEntry("ifcobjectiveenum",NULL ) +, SchemaEntry("ifcsoundscaleenum",NULL ) +, SchemaEntry("ifcilluminancemeasure",NULL ) +, SchemaEntry("ifcdoseequivalentmeasure",NULL ) +, SchemaEntry("ifcpowermeasure",NULL ) +, SchemaEntry("ifcelectricvoltagemeasure",NULL ) +, SchemaEntry("ifcfootingtypeenum",NULL ) +, SchemaEntry("ifcfontstyle",NULL ) +, SchemaEntry("ifcshell",NULL ) +, SchemaEntry("ifcpermeablecoveringoperationenum",NULL ) +, SchemaEntry("ifcwarpingmomentmeasure",NULL ) +, SchemaEntry("ifcsectionalareaintegralmeasure",NULL ) +, SchemaEntry("ifcmodulusofsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcrotationalfrequencymeasure",NULL ) +, SchemaEntry("ifcfillareastyletileshapeselect",NULL ) +, SchemaEntry("ifcloadgrouptypeenum",NULL ) +, SchemaEntry("ifcsolidanglemeasure",NULL ) +, SchemaEntry("ifccolourorfactor",NULL ) +, SchemaEntry("ifchourinday",NULL ) +, SchemaEntry("ifclinearstiffnessmeasure",NULL ) +, SchemaEntry("ifctimemeasure",NULL ) +, SchemaEntry("ifcboxalignment",NULL ) +, SchemaEntry("ifcelectricflowstoragedevicetypeenum",NULL ) +, SchemaEntry("ifcorientationselect",NULL ) +, SchemaEntry("ifcsecondinminute",NULL ) +, SchemaEntry("ifcworkcontroltypeenum",NULL ) +, SchemaEntry("ifcheatfluxdensitymeasure",NULL ) +, SchemaEntry("ifcsizeselect",NULL ) +, SchemaEntry("ifcdimensioncount",NULL ) +, SchemaEntry("ifcvalvetypeenum",NULL ) +, SchemaEntry("ifctransportelementtypeenum",NULL ) +, SchemaEntry("ifcinductancemeasure",NULL ) +, SchemaEntry("ifcyearnumber",NULL ) +, SchemaEntry("ifcdoorstyleconstructionenum",NULL ) +, SchemaEntry("ifcthermalexpansioncoefficientmeasure",NULL ) +, SchemaEntry("ifccompressortypeenum",NULL ) +, SchemaEntry("ifcaxis2placement",NULL ) +, SchemaEntry("ifcswitchingdevicetypeenum",NULL ) +, SchemaEntry("ifcdocumentconfidentialityenum",NULL ) +, SchemaEntry("ifcgasterminaltypeenum",NULL ) +, SchemaEntry("ifcservicelifetypeenum",NULL ) +, SchemaEntry("ifcintegercountratemeasure",NULL ) +, SchemaEntry("ifcdocumentstatusenum",NULL ) +, SchemaEntry("ifcspaceheatertypeenum",NULL ) +, SchemaEntry("ifcwasteterminaltypeenum",NULL ) +, SchemaEntry("ifcairterminaltypeenum",NULL ) +, SchemaEntry("ifcprojectedortruelengthenum",NULL ) +, SchemaEntry("ifcductfittingtypeenum",NULL ) +, SchemaEntry("ifclabel",NULL ) +, SchemaEntry("ifctextfontselect",NULL ) +, SchemaEntry("ifcanalysistheorytypeenum",NULL ) +, SchemaEntry("ifcprojectorderrecordtypeenum",NULL ) +, SchemaEntry("ifcunit",NULL ) , SchemaEntry("ifcwindowpanelpositionenum",NULL ) -, SchemaEntry("ifcflowmetertypeenum",NULL ) +, SchemaEntry("ifcsymbolstyleselect",NULL ) +, SchemaEntry("ifcwalltypeenum",NULL ) +, SchemaEntry("ifclightemissionsourceenum",NULL ) +, SchemaEntry("ifcmodulusoflinearsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcspecularroughness",NULL ) +, SchemaEntry("ifctendontypeenum",NULL ) +, SchemaEntry("ifcelectricmotortypeenum",NULL ) +, SchemaEntry("ifccurvestylefontselect",NULL ) +, SchemaEntry("ifcplanarforcemeasure",NULL ) +, SchemaEntry("ifccoiltypeenum",NULL ) +, SchemaEntry("ifcsimplevalue",NULL ) +, SchemaEntry("ifclogicaloperatorenum",NULL ) +, SchemaEntry("ifctransformertypeenum",NULL ) +, SchemaEntry("ifcvaporpermeabilitymeasure",NULL ) +, SchemaEntry("ifcmassflowratemeasure",NULL ) +, SchemaEntry("ifcbooleanoperator",NULL ) +, SchemaEntry("ifcradioactivitymeasure",NULL ) +, SchemaEntry("ifcsurfaceside",NULL ) +, SchemaEntry("ifcribplatedirectionenum",NULL ) +, SchemaEntry("ifcgeometricsetselect",NULL ) +, SchemaEntry("ifcvolumemeasure",NULL ) +, SchemaEntry("ifcdoorpaneloperationenum",NULL ) +, SchemaEntry("ifcelectricheatertypeenum",NULL ) +, SchemaEntry("ifcmagneticfluxmeasure",NULL ) +, SchemaEntry("ifcthermaltransmittancemeasure",NULL ) +, SchemaEntry("ifcstructuralcurvetypeenum",NULL ) +, SchemaEntry("ifcmonetarymeasure",NULL ) +, SchemaEntry("ifcassemblyplaceenum",NULL ) +, SchemaEntry("ifcreinforcingbarsurfaceenum",NULL ) +, SchemaEntry("ifcpointorvertexpoint",NULL ) +, SchemaEntry("ifcspecificheatcapacitymeasure",NULL ) +, SchemaEntry("ifcchangeactionenum",NULL ) +, SchemaEntry("ifcelectricdistributionpointfunctionenum",NULL ) +, SchemaEntry("ifcbuildingelementproxytypeenum",NULL ) +, SchemaEntry("ifcsequenceenum",NULL ) +, SchemaEntry("ifcaheadorbehind",NULL ) +, SchemaEntry("ifcprojectordertypeenum",NULL ) +, SchemaEntry("ifctextstyleselect",NULL ) +, SchemaEntry("ifccooledbeamtypeenum",NULL ) +, SchemaEntry("ifcconnectiontypeenum",NULL ) +, SchemaEntry("ifcsensortypeenum",NULL ) +, SchemaEntry("ifctrimmingpreference",NULL ) +, SchemaEntry("ifcstructuralsurfacetypeenum",NULL ) +, SchemaEntry("ifccostscheduletypeenum",NULL ) +, SchemaEntry("ifcsoundpowermeasure",NULL ) +, SchemaEntry("ifcstairflighttypeenum",NULL ) +, SchemaEntry("ifcductsegmenttypeenum",NULL ) +, SchemaEntry("ifcservicelifefactortypeenum",NULL ) +, SchemaEntry("ifcbsplinecurveform",NULL ) +, SchemaEntry("ifcluminousintensitymeasure",NULL ) +, SchemaEntry("ifccoolingtowertypeenum",NULL ) +, SchemaEntry("ifcunitenum",NULL ) +, SchemaEntry("ifcpositiveplaneanglemeasure",NULL ) +, SchemaEntry("ifclightdistributiondatasourceselect",NULL ) +, SchemaEntry("ifckinematicviscositymeasure",NULL ) +, SchemaEntry("ifcdampertypeenum",NULL ) +, SchemaEntry("ifcvectorordirection",NULL ) +, SchemaEntry("ifcjunctionboxtypeenum",NULL ) +, SchemaEntry("ifcactorselect",NULL ) +, SchemaEntry("ifcelectricappliancetypeenum",NULL ) +, SchemaEntry("ifcthermodynamictemperaturemeasure",NULL ) +, SchemaEntry("ifcmomentofinertiameasure",NULL ) +, SchemaEntry("ifcmonthinyearnumber",NULL ) +, SchemaEntry("ifcstairtypeenum",NULL ) +, SchemaEntry("ifcprotectivedevicetypeenum",NULL ) +, SchemaEntry("ifctextdecoration",NULL ) +, SchemaEntry("ifcunitaryequipmenttypeenum",NULL ) +, SchemaEntry("ifcelementcompositionenum",NULL ) +, SchemaEntry("ifccurvefontorscaledcurvefontselect",NULL ) +, SchemaEntry("ifcdescriptivemeasure",NULL ) +, SchemaEntry("ifcprofiletypeenum",NULL ) +, SchemaEntry("ifcdoorstyleoperationenum",NULL ) +, SchemaEntry("ifctorquemeasure",NULL ) +, SchemaEntry("ifcdaylightsavinghour",NULL ) +, SchemaEntry("ifcrotationalmassmeasure",NULL ) +, SchemaEntry("ifcnullstyle",NULL ) +, SchemaEntry("ifcfiresuppressionterminaltypeenum",NULL ) +, SchemaEntry("ifcheatingvaluemeasure",NULL ) , SchemaEntry("ifcrampflighttypeenum",NULL ) , SchemaEntry("ifcspecularhighlightselect",NULL ) -, SchemaEntry("ifcactiontypeenum",NULL ) -, SchemaEntry("ifcgeometricprojectionenum",NULL ) -, SchemaEntry("ifctimeseriesdatatypeenum",NULL ) -, SchemaEntry("ifcmagneticfluxmeasure",NULL ) -, SchemaEntry("ifcobjecttypeenum",NULL ) -, SchemaEntry("ifcdataoriginenum",NULL ) -, SchemaEntry("ifcmassdensitymeasure",NULL ) -, SchemaEntry("ifclightfixturetypeenum",NULL ) -, SchemaEntry("ifcservicelifetypeenum",NULL ) -, SchemaEntry("ifcelectricvoltagemeasure",NULL ) -, SchemaEntry("ifcheatingvaluemeasure",NULL ) -, SchemaEntry("ifcpresentabletext",NULL ) -, SchemaEntry("ifcaheadorbehind",NULL ) -, SchemaEntry("ifcsimplevalue",NULL ) -, SchemaEntry("ifcsensortypeenum",NULL ) -, SchemaEntry("ifcderivedunitenum",NULL ) -, SchemaEntry("ifcsizeselect",NULL ) -, SchemaEntry("ifctransportelementtypeenum",NULL ) -, SchemaEntry("ifcinventorytypeenum",NULL ) -, SchemaEntry("ifctextdecoration",NULL ) -, SchemaEntry("ifcdirectionsenseenum",NULL ) -, SchemaEntry("ifcductfittingtypeenum",NULL ) -, SchemaEntry("ifcdocumentstatusenum",NULL ) -, SchemaEntry("ifcslabtypeenum",NULL ) -, SchemaEntry("ifcdoorstyleconstructionenum",NULL ) -, SchemaEntry("ifcvolumemeasure",NULL ) -, SchemaEntry("ifcinductancemeasure",NULL ) -, SchemaEntry("ifccurtainwalltypeenum",NULL ) -, SchemaEntry("ifcsiunitname",NULL ) -, SchemaEntry("ifcspecularexponent",NULL ) -, SchemaEntry("ifcsoundpressuremeasure",NULL ) -, SchemaEntry("ifcanalysistheorytypeenum",NULL ) -, SchemaEntry("ifcgasterminaltypeenum",NULL ) -, SchemaEntry("ifcyearnumber",NULL ) -, SchemaEntry("ifcmodulusofelasticitymeasure",NULL ) -, SchemaEntry("ifcchangeactionenum",NULL ) -, SchemaEntry("ifcdampertypeenum",NULL ) -, SchemaEntry("ifcevaporatortypeenum",NULL ) -, SchemaEntry("ifcionconcentrationmeasure",NULL ) -, SchemaEntry("ifcductsegmenttypeenum",NULL ) -, SchemaEntry("ifcprotectivedevicetypeenum",NULL ) -, SchemaEntry("ifcabsorbeddosemeasure",NULL ) -, SchemaEntry("ifcmassperlengthmeasure",NULL ) -, SchemaEntry("ifctextfontname",NULL ) -, SchemaEntry("ifcorientationselect",NULL ) -, SchemaEntry("ifcilluminancemeasure",NULL ) -, SchemaEntry("ifcfiresuppressionterminaltypeenum",NULL ) -, SchemaEntry("ifcfontstyle",NULL ) -, SchemaEntry("ifcmomentofinertiameasure",NULL ) -, SchemaEntry("ifcmodulusofsubgradereactionmeasure",NULL ) -, SchemaEntry("ifccomplexnumber",NULL ) -, SchemaEntry("ifchumidifiertypeenum",NULL ) -, SchemaEntry("ifcpresentationstyleselect",NULL ) -, SchemaEntry("ifcthermaltransmittancemeasure",NULL ) -, SchemaEntry("ifcribplatedirectionenum",NULL ) -, SchemaEntry("ifcclassificationnotationselect",NULL ) -, SchemaEntry("ifcminuteinhour",NULL ) -, SchemaEntry("ifcinternalorexternalenum",NULL ) -, SchemaEntry("ifcrotationalfrequencymeasure",NULL ) -, SchemaEntry("ifcsanitaryterminaltypeenum",NULL ) -, SchemaEntry("ifcsymbolstyleselect",NULL ) -, SchemaEntry("ifcelementcompositionenum",NULL ) -, SchemaEntry("ifctextpath",NULL ) -, SchemaEntry("ifcpowermeasure",NULL ) -, SchemaEntry("ifcsurfacestyleelementselect",NULL ) -, SchemaEntry("ifcresourceconsumptionenum",NULL ) -, SchemaEntry("ifcelectriccapacitancemeasure",NULL ) -, SchemaEntry("ifclayersetdirectionenum",NULL ) -, SchemaEntry("ifcrailingtypeenum",NULL ) -, SchemaEntry("ifcobjectiveenum",NULL ) -, SchemaEntry("ifcdocumentselect",NULL ) -, SchemaEntry("ifcmodulusoflinearsubgradereactionmeasure",NULL ) -, SchemaEntry("ifcthermaladmittancemeasure",NULL ) -, SchemaEntry("ifctransitioncode",NULL ) -, SchemaEntry("ifcconnectiontypeenum",NULL ) -, SchemaEntry("ifcmonetarymeasure",NULL ) -, SchemaEntry("ifcstackterminaltypeenum",NULL ) -, SchemaEntry("ifccolour",NULL ) -, SchemaEntry("ifctext",NULL ) -, SchemaEntry("ifccontextdependentmeasure",NULL ) -, SchemaEntry("ifcthermalconductivitymeasure",NULL ) -, SchemaEntry("ifcprojectedortruelengthenum",NULL ) -, SchemaEntry("ifcpressuremeasure",NULL ) -, SchemaEntry("ifcmoisturediffusivitymeasure",NULL ) -, SchemaEntry("ifcbooleanoperator",NULL ) -, SchemaEntry("ifcpropertysourceenum",NULL ) -, SchemaEntry("ifctimestamp",NULL ) -, SchemaEntry("ifcmaterialselect",NULL ) -, SchemaEntry("ifcgloballyuniqueid",NULL ) -, SchemaEntry("ifcreflectancemethodenum",NULL ) -, SchemaEntry("ifcvaporpermeabilitymeasure",NULL ) -, SchemaEntry("ifctimeseriesscheduletypeenum",NULL ) -, SchemaEntry("ifclinearmomentmeasure",NULL ) -, SchemaEntry("ifcgeometricsetselect",NULL ) -, SchemaEntry("ifcsectionmodulusmeasure",NULL ) -, SchemaEntry("ifcbsplinecurveform",NULL ) -, SchemaEntry("ifcdimensionextentusage",NULL ) -, SchemaEntry("ifcthermalexpansioncoefficientmeasure",NULL ) -, SchemaEntry("ifchourinday",NULL ) -, SchemaEntry("ifclinearvelocitymeasure",NULL ) -, SchemaEntry("ifctorquemeasure",NULL ) -, SchemaEntry("ifctemperaturegradientmeasure",NULL ) -, SchemaEntry("ifcfillstyleselect",NULL ) -, SchemaEntry("ifcelectricchargemeasure",NULL ) -, SchemaEntry("ifcheatexchangertypeenum",NULL ) -, SchemaEntry("ifcelectriccurrentenum",NULL ) -, SchemaEntry("ifcdaylightsavinghour",NULL ) -, SchemaEntry("ifcshell",NULL ) -, SchemaEntry("ifcdoseequivalentmeasure",NULL ) -, SchemaEntry("ifcprojectordertypeenum",NULL ) -, SchemaEntry("ifcderivedmeasurevalue",NULL ) -, SchemaEntry("ifclightdistributioncurveenum",NULL ) -, SchemaEntry("ifcwarpingmomentmeasure",NULL ) -, SchemaEntry("ifcmembertypeenum",NULL ) -, SchemaEntry("ifcsoundpowermeasure",NULL ) -, SchemaEntry("ifctextalignment",NULL ) -, SchemaEntry("ifccurveoredgecurve",NULL ) -, SchemaEntry("ifcmassflowratemeasure",NULL ) -, SchemaEntry("ifcisothermalmoisturecapacitymeasure",NULL ) -, SchemaEntry("ifccsgselect",NULL ) -, SchemaEntry("ifccoolingtowertypeenum",NULL ) -, SchemaEntry("ifcmassmeasure",NULL ) -, SchemaEntry("ifcpileconstructionenum",NULL ) -, SchemaEntry("ifcdoorstyleoperationenum",NULL ) -, SchemaEntry("ifcflowdirectionenum",NULL ) -, SchemaEntry("ifcthermalloadsourceenum",NULL ) -, SchemaEntry("ifclengthmeasure",NULL ) -, SchemaEntry("ifcconstraintenum",NULL ) -, SchemaEntry("ifcaxis2placement",NULL ) -, SchemaEntry("ifcloadgrouptypeenum",NULL ) -, SchemaEntry("ifcvalue",NULL ) -, SchemaEntry("ifcreinforcingbarsurfaceenum",NULL ) -, SchemaEntry("ifcprojectorderrecordtypeenum",NULL ) -, SchemaEntry("ifcdatetimeselect",NULL ) -, SchemaEntry("ifcstructuralsurfacetypeenum",NULL ) -, SchemaEntry("ifcpermeablecoveringoperationenum",NULL ) -, SchemaEntry("ifcfontweight",NULL ) -, SchemaEntry("ifcphmeasure",NULL ) -, SchemaEntry("ifcdescriptivemeasure",NULL ) -, SchemaEntry("ifccurvestylefontselect",NULL ) -, SchemaEntry("ifcunit",NULL ) -, SchemaEntry("ifchatchlinedistanceselect",NULL ) -, SchemaEntry("ifctextstyleselect",NULL ) -, SchemaEntry("ifcmetricvalueselect",NULL ) -, SchemaEntry("ifcvectorordirection",NULL ) -, SchemaEntry("ifcassemblyplaceenum",NULL ) -, SchemaEntry("ifcairterminaltypeenum",NULL ) -, SchemaEntry("ifccoveringtypeenum",NULL ) -, SchemaEntry("ifcplanarforcemeasure",NULL ) -, SchemaEntry("ifcvalvetypeenum",NULL ) -, SchemaEntry("ifcalarmtypeenum",NULL ) -, SchemaEntry("ifcdynamicviscositymeasure",NULL ) -, SchemaEntry("ifccurrencyenum",NULL ) -, SchemaEntry("ifcmodulusofrotationalsubgradereactionmeasure",NULL ) -, SchemaEntry("ifccablecarrierfittingtypeenum",NULL ) -, SchemaEntry("ifcboolean",NULL ) -, SchemaEntry("ifcactionsourcetypeenum",NULL ) -, SchemaEntry("ifcstructuralactivityassignmentselect",NULL ) -, SchemaEntry("ifcdistributionchamberelementtypeenum",NULL ) -, SchemaEntry("ifcevaporativecoolertypeenum",NULL ) -, SchemaEntry("ifcmagneticfluxdensitymeasure",NULL ) -, SchemaEntry("ifclightdistributiondatasourceselect",NULL ) -, SchemaEntry("ifctubebundletypeenum",NULL ) -, SchemaEntry("ifcaccelerationmeasure",NULL ) -, SchemaEntry("ifcboilertypeenum",NULL ) -, SchemaEntry("ifcramptypeenum",NULL ) -, SchemaEntry("ifcluminousintensitydistributionmeasure",NULL ) -, SchemaEntry("ifctrimmingpreference",NULL ) -, SchemaEntry("ifcspecificheatcapacitymeasure",NULL ) -, SchemaEntry("ifcamountofsubstancemeasure",NULL ) -, SchemaEntry("ifcroleenum",NULL ) -, SchemaEntry("ifcdocumentconfidentialityenum",NULL ) -, SchemaEntry("ifcfrequencymeasure",NULL ) -, SchemaEntry("ifcsectiontypeenum",NULL ) -, SchemaEntry("ifcelementassemblytypeenum",NULL ) -, SchemaEntry("ifcfootingtypeenum",NULL ) -, SchemaEntry("ifclayereditem",NULL ) -, SchemaEntry("ifccablesegmenttypeenum",NULL ) -, SchemaEntry("ifcdefinedsymbolselect",NULL ) -, SchemaEntry("ifcbuildingelementproxytypeenum",NULL ) -, SchemaEntry("ifcelectricgeneratortypeenum",NULL ) -, SchemaEntry("ifcrotationalstiffnessmeasure",NULL ) -, SchemaEntry("ifcspaceheatertypeenum",NULL ) -, SchemaEntry("ifcareameasure",NULL ) -, SchemaEntry("ifclabel",NULL ) -, SchemaEntry("ifccostscheduletypeenum",NULL ) -, SchemaEntry("ifcswitchingdevicetypeenum",NULL ) -, SchemaEntry("ifcelectrictimecontroltypeenum",NULL ) -, SchemaEntry("ifcfiltertypeenum",NULL ) -, SchemaEntry("ifcpositivelengthmeasure",NULL ) -, SchemaEntry("ifcnullstyle",NULL ) -, SchemaEntry("ifcconditioncriterionselect",NULL ) -, SchemaEntry("ifcshearmodulusmeasure",NULL ) -, SchemaEntry("ifcnormalisedratiomeasure",NULL ) -, SchemaEntry("ifcdoorpaneloperationenum",NULL ) -, SchemaEntry("ifcpointorvertexpoint",NULL ) -, SchemaEntry("ifcrooftypeenum",NULL ) -, SchemaEntry("ifccountmeasure",NULL ) -, SchemaEntry("ifcelectricconductancemeasure",NULL ) -, SchemaEntry("ifcproceduretypeenum",NULL ) -, SchemaEntry("ifcflowinstrumenttypeenum",NULL ) -, SchemaEntry("ifcelectricmotortypeenum",NULL ) -, SchemaEntry("ifcsurfaceside",NULL ) -, SchemaEntry("ifcstructuralcurvetypeenum",NULL ) -, SchemaEntry("ifccondensertypeenum",NULL ) -, SchemaEntry("ifclinearstiffnessmeasure",NULL ) -, SchemaEntry("ifcunitenum",NULL ) -, SchemaEntry("ifcoccupanttypeenum",NULL ) , SchemaEntry("ifcthermalloadtypeenum",NULL ) -, SchemaEntry("ifcreinforcingbarroleenum",NULL ) -, SchemaEntry("ifcbenchmarkenum",NULL ) -, SchemaEntry("ifcpositiveplaneanglemeasure",NULL ) -, SchemaEntry("ifctexttransformation",NULL ) -, SchemaEntry("ifcdraughtingcalloutelement",NULL ) -, SchemaEntry("ifcratiomeasure",NULL ) -, SchemaEntry("ifcsolidanglemeasure",NULL ) -, SchemaEntry("ifcpipesegmenttypeenum",NULL ) -, SchemaEntry("ifccablecarriersegmenttypeenum",NULL ) -, SchemaEntry("ifccolourorfactor",NULL ) -, SchemaEntry("ifcidentifier",NULL ) -, SchemaEntry("ifctendontypeenum",NULL ) -, SchemaEntry("ifccontrollertypeenum",NULL ) -, SchemaEntry("ifcradioactivitymeasure",NULL ) -, SchemaEntry("ifctimemeasure",NULL ) -, SchemaEntry("ifcpumptypeenum",NULL ) -, SchemaEntry("ifcelectricheatertypeenum",NULL ) -, SchemaEntry("ifcbeamtypeenum",NULL ) -, SchemaEntry("ifcstateenum",NULL ) -, SchemaEntry("ifcsiprefix",NULL ) -, SchemaEntry("ifcnumericmeasure",NULL ) -, SchemaEntry("ifcoutlettypeenum",NULL ) -, SchemaEntry("ifccompoundplaneanglemeasure",NULL ) -, SchemaEntry("ifcservicelifefactortypeenum",NULL ) -, SchemaEntry("ifclogicaloperatorenum",NULL ) -, SchemaEntry("ifcbooleanoperand",NULL ) -, SchemaEntry("ifcobjectreferenceselect",NULL ) -, SchemaEntry("ifccooledbeamtypeenum",NULL ) -, SchemaEntry("ifcductsilencertypeenum",NULL ) -, SchemaEntry("ifcsectionalareaintegralmeasure",NULL ) -, SchemaEntry("ifcfontvariant",NULL ) -, SchemaEntry("ifcvolumetricflowratemeasure",NULL ) -, SchemaEntry("ifcplatetypeenum",NULL ) -, SchemaEntry("ifcenvironmentalimpactcategoryenum",NULL ) , SchemaEntry("ifcvibrationisolatortypeenum",NULL ) -, SchemaEntry("ifcthermodynamictemperaturemeasure",NULL ) -, SchemaEntry("ifcrotationalmassmeasure",NULL ) -, SchemaEntry("ifcsecondinminute",NULL ) -, SchemaEntry("ifcdayinmonthnumber",NULL ) -, SchemaEntry("ifcdimensioncount",NULL ) -, SchemaEntry("ifcwindowstyleoperationenum",NULL ) -, SchemaEntry("ifcthermalresistancemeasure",NULL ) -, SchemaEntry("ifcmeasurevalue",NULL ) -, SchemaEntry("ifcwindowpaneloperationenum",NULL ) -, SchemaEntry("ifcchillertypeenum",NULL ) -, SchemaEntry("ifcpositiveratiomeasure",NULL ) -, SchemaEntry("ifcinteger",NULL ) -, SchemaEntry("ifclogical",NULL ) -, SchemaEntry("ifcjunctionboxtypeenum",NULL ) -, SchemaEntry("ifcaddresstypeenum",NULL ) -, SchemaEntry("ifcwasteterminaltypeenum",NULL ) -, SchemaEntry("ifctrimmingselect",NULL ) -, SchemaEntry("ifclightemissionsourceenum",NULL ) -, SchemaEntry("ifcsoundscaleenum",NULL ) -, SchemaEntry("ifcluminousfluxmeasure",NULL ) -, SchemaEntry("ifcelectricresistancemeasure",NULL ) -, SchemaEntry("ifcintegercountratemeasure",NULL ) -, SchemaEntry("ifcphysicalorvirtualenum",NULL ) -, SchemaEntry("ifcmolecularweightmeasure",NULL ) -, SchemaEntry("ifcprofiletypeenum",NULL ) -, SchemaEntry("ifcboxalignment",NULL ) -, SchemaEntry("ifcglobalorlocalenum",NULL ) -, SchemaEntry("ifcspecularroughness",NULL ) -, SchemaEntry("ifclamptypeenum",NULL ) -, SchemaEntry("ifcpiletypeenum",NULL ) -, SchemaEntry("ifcelectriccurrentmeasure",NULL ) -, SchemaEntry("ifcfantypeenum",NULL ) -, SchemaEntry("ifcsurfaceorfacesurface",NULL ) -, SchemaEntry("ifcpipefittingtypeenum",NULL ) -, SchemaEntry("ifctanktypeenum",NULL ) -, SchemaEntry("ifccurvefontorscaledcurvefontselect",NULL ) -, SchemaEntry("ifcwindowstyleconstructionenum",NULL ) -, SchemaEntry("ifcairterminalboxtypeenum",NULL ) -, SchemaEntry("ifcstairflighttypeenum",NULL ) -, SchemaEntry("ifcluminousintensitymeasure",NULL ) -, SchemaEntry("ifcmotorconnectiontypeenum",NULL ) -, SchemaEntry("ifcplaneanglemeasure",NULL ) -, SchemaEntry("ifcactuatortypeenum",NULL ) -, SchemaEntry("ifccolumntypeenum",NULL ) -, SchemaEntry("ifctextfontselect",NULL ) -, SchemaEntry("ifcdoorpanelpositionenum",NULL ) -, SchemaEntry("ifccoiltypeenum",NULL ) -, SchemaEntry("ifcangularvelocitymeasure",NULL ) +, SchemaEntry("ifcfillstyleselect",NULL ) +, SchemaEntry("ifcobjecttypeenum",NULL ) +, SchemaEntry("ifchatchlinedistanceselect",NULL ) +, SchemaEntry("ifcpresentabletext",NULL ) , SchemaEntry("ifcanalysismodeltypeenum",NULL ) -, SchemaEntry("ifclibraryselect",NULL ) -, SchemaEntry("ifcforcemeasure",NULL ) -, SchemaEntry("ifcfillareastyletileshapeselect",NULL ) -, SchemaEntry("ifcelectricappliancetypeenum",NULL ) +, SchemaEntry("ifcangularvelocitymeasure",NULL ) +, SchemaEntry("ifcaccelerationmeasure",NULL ) +, SchemaEntry("ifcthermalloadsourceenum",NULL ) +, SchemaEntry("ifcflowdirectionenum",NULL ) +, SchemaEntry("ifctanktypeenum",NULL ) , SchemaEntry("ifcsurfacetextureenum",NULL ) -, SchemaEntry("ifccharacterstyleselect",NULL ) -, SchemaEntry("ifcenergymeasure",NULL ) +, SchemaEntry("ifctimeseriesdatatypeenum",NULL ) +, SchemaEntry("ifcphysicalorvirtualenum",NULL ) +, SchemaEntry("ifcdraughtingcalloutelement",NULL ) +, SchemaEntry("ifcdocumentselect",NULL ) +, SchemaEntry("ifcthermalresistancemeasure",NULL ) +, SchemaEntry("ifctemperaturegradientmeasure",NULL ) +, SchemaEntry("ifccomplexnumber",NULL ) +, SchemaEntry("ifcgeometricprojectionenum",NULL ) +, SchemaEntry("ifcglobalorlocalenum",NULL ) +, SchemaEntry("ifcareameasure",NULL ) +, SchemaEntry("ifccsgselect",NULL ) +, SchemaEntry("ifcoccupanttypeenum",NULL ) +, SchemaEntry("ifcenergysequenceenum",NULL ) +, SchemaEntry("ifcflowmetertypeenum",NULL ) +, SchemaEntry("ifcsectionmodulusmeasure",NULL ) +, SchemaEntry("ifcairterminalboxtypeenum",NULL ) +, SchemaEntry("ifcidentifier",NULL ) +, SchemaEntry("ifcinteger",NULL ) +, SchemaEntry("ifcproceduretypeenum",NULL ) +, SchemaEntry("ifcbenchmarkenum",NULL ) +, SchemaEntry("ifcwindowpaneloperationenum",NULL ) +, SchemaEntry("ifctrimmingselect",NULL ) , SchemaEntry("ifcreal",NULL ) -, SchemaEntry("ifccompressortypeenum",NULL ) -, SchemaEntry("ifcelectricdistributionpointfunctionenum",NULL ) +, SchemaEntry("ifcsurfacestyleelementselect",NULL ) +, SchemaEntry("ifcairtoairheatrecoverytypeenum",NULL ) +, SchemaEntry("ifcnormalisedratiomeasure",NULL ) +, SchemaEntry("ifccablesegmenttypeenum",NULL ) +, SchemaEntry("ifcbeamtypeenum",NULL ) +, SchemaEntry("ifcbooleanoperand",NULL ) +, SchemaEntry("ifcfrequencymeasure",NULL ) +, SchemaEntry("ifcdataoriginenum",NULL ) +, SchemaEntry("ifcalarmtypeenum",NULL ) +, SchemaEntry("ifcmassmeasure",NULL ) +, SchemaEntry("ifcstateenum",NULL ) +, SchemaEntry("ifcstackterminaltypeenum",NULL ) +, SchemaEntry("ifcreinforcingbarroleenum",NULL ) +, SchemaEntry("ifcelectrictimecontroltypeenum",NULL ) +, SchemaEntry("ifcinternalorexternalenum",NULL ) +, SchemaEntry("ifcductsilencertypeenum",NULL ) +, SchemaEntry("ifcconditioncriterionselect",NULL ) +, SchemaEntry("ifchumidifiertypeenum",NULL ) +, SchemaEntry("ifcforcemeasure",NULL ) +, SchemaEntry("ifcmembertypeenum",NULL ) +, SchemaEntry("ifcionconcentrationmeasure",NULL ) +, SchemaEntry("ifcchillertypeenum",NULL ) +, SchemaEntry("ifcmassperlengthmeasure",NULL ) +, SchemaEntry("ifctimeseriesscheduletypeenum",NULL ) +, SchemaEntry("ifcfiltertypeenum",NULL ) +, SchemaEntry("ifclogical",NULL ) +, SchemaEntry("ifcinventorytypeenum",NULL ) +, SchemaEntry("ifcclassificationnotationselect",NULL ) +, SchemaEntry("ifcaddresstypeenum",NULL ) +, SchemaEntry("ifcpositivelengthmeasure",NULL ) +, SchemaEntry("ifcratiomeasure",NULL ) +, SchemaEntry("ifcramptypeenum",NULL ) +, SchemaEntry("ifcmaterialselect",NULL ) +, SchemaEntry("ifccoveringtypeenum",NULL ) +, SchemaEntry("ifcpiletypeenum",NULL ) +, SchemaEntry("ifctransitioncode",NULL ) +, SchemaEntry("ifcparametervalue",NULL ) +, SchemaEntry("ifccondensertypeenum",NULL ) +, SchemaEntry("ifctextpath",NULL ) +, SchemaEntry("ifcelectriccurrentenum",NULL ) +, SchemaEntry("ifccolumntypeenum",NULL ) +, SchemaEntry("ifcluminousfluxmeasure",NULL ) +, SchemaEntry("ifcplatetypeenum",NULL ) +, SchemaEntry("ifcpileconstructionenum",NULL ) +, SchemaEntry("ifcactionsourcetypeenum",NULL ) +, SchemaEntry("ifcmagneticfluxdensitymeasure",NULL ) +, SchemaEntry("ifcsurfaceorfacesurface",NULL ) +, SchemaEntry("ifcpresentationstyleselect",NULL ) +, SchemaEntry("ifcgloballyuniqueid",NULL ) +, SchemaEntry("ifclinearmomentmeasure",NULL ) +, SchemaEntry("ifcheatexchangertypeenum",NULL ) +, SchemaEntry("ifcpumptypeenum",NULL ) +, SchemaEntry("ifcspecularexponent",NULL ) +, SchemaEntry("ifcelectricresistancemeasure",NULL ) +, SchemaEntry("ifcthermalconductivitymeasure",NULL ) +, SchemaEntry("ifcreflectancemethodenum",NULL ) +, SchemaEntry("ifctubebundletypeenum",NULL ) +, SchemaEntry("ifcactuatortypeenum",NULL ) +, SchemaEntry("ifccontrollertypeenum",NULL ) +, SchemaEntry("ifclightdistributioncurveenum",NULL ) +, SchemaEntry("ifcpositiveratiomeasure",NULL ) +, SchemaEntry("ifcelectricchargemeasure",NULL ) +, SchemaEntry("ifcnumericmeasure",NULL ) +, SchemaEntry("ifcstructuralactivityassignmentselect",NULL ) +, SchemaEntry("ifcluminousintensitydistributionmeasure",NULL ) +, SchemaEntry("ifcmolecularweightmeasure",NULL ) +, SchemaEntry("ifclayereditem",NULL ) +, SchemaEntry("ifclengthmeasure",NULL ) +, SchemaEntry("ifcwarpingconstantmeasure",NULL ) +, SchemaEntry("ifcboilertypeenum",NULL ) +, SchemaEntry("ifccablecarriersegmenttypeenum",NULL ) +, SchemaEntry("ifcfontweight",NULL ) +, SchemaEntry("ifctextfontname",NULL ) +, SchemaEntry("ifcenvironmentalimpactcategoryenum",NULL ) +, SchemaEntry("ifcactiontypeenum",NULL ) +, SchemaEntry("ifcdefinedsymbolselect",NULL ) +, SchemaEntry("ifctexttransformation",NULL ) +, SchemaEntry("ifcappliedvalueselect",NULL ) +, SchemaEntry("ifcenergymeasure",NULL ) +, SchemaEntry("ifcflowinstrumenttypeenum",NULL ) +, SchemaEntry("ifccountmeasure",NULL ) +, SchemaEntry("ifccurrencyenum",NULL ) +, SchemaEntry("ifcsectiontypeenum",NULL ) +, SchemaEntry("ifclinearforcemeasure",NULL ) +, SchemaEntry("ifcderivedmeasurevalue",NULL ) +, SchemaEntry("ifcrailingtypeenum",NULL ) +, SchemaEntry("ifcsiunitname",NULL ) +, SchemaEntry("ifcmeasurevalue",NULL ) +, SchemaEntry("ifcrooftypeenum",NULL ) +, SchemaEntry("ifctext",NULL ) +, SchemaEntry("ifclinearvelocitymeasure",NULL ) +, SchemaEntry("ifcboolean",NULL ) +, SchemaEntry("ifcrepresentationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctopologicalrepresentationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternalreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricrepresentationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositecurvesegment",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcroot",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcobjectdefinition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcobject",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproduct",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsurfaceconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalactorrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexbasedtexturemap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationstyleassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurtainwall",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturecoordinate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturecoordinategenerator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproxy",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefineditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylefontmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstyleditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsymboloccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcterminatorsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncurveterminator",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifctypeobject",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifctypeproduct",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcelementtype",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcdistributionelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionflowelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowcontrollertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectrictimecontroltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshapemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctopologyrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnects",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcoversspaces",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablecarrierfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslippageconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyconversiondevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoiltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcobject",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcperformancehistory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextliteral",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextliteralwithextent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproduct",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionflowelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundedcurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifc2dcompositecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarycondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundaryfacecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsimpleproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyenumeratedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationlayerassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationlayerwithstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstairflighttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementarysurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplane",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbooleanresult",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbooleanclippingresult",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsolidmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmanifoldsolidbrep",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeneralprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstackterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurveconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcjunctionboxtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociates",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesconstraint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertydefinition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertysetdefinition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorpanelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspacethermalloadproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclibraryinformation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprocess",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctask",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcappliedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenvironmentalimpactvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelfillselement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprocedure",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralload",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadstatic",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingledisplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproxy",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsubcontractresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccalendardate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentelectronicformat",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcontainedinspatialstructure",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductsofcombustionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctopologicalrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplatetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcobjectplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgridplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfiresuppressionterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowstoragedevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcperson",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfaceofrevolution",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorientededge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcownerhistory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassigns",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdirection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcementbarproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcparameterizedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccshapeprofiledef",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcfeatureelement",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcfeatureelementsubtraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcchamferedgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolumn",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyreferencevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialclassificationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricmotortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspatialstructureelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspacetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternalreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedhatchstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolumntype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccranerailashapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccondensertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectselements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectswithrealizingelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccircleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccirclehollowprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorganizationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaxis2placement3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopeningelement",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcpresentationstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcequipmentelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositecurvesegment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalcomplexquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociateslibrary",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelsequence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementproxy",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributioncontrolelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowinstrumenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingcallout",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncurvedirectedcallout",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclineardimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementassembly",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingcalloutrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccsgprimitive3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrightcircularcone",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedsurfacestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectorder",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyconstraintrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcangulardimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylefordefinedfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclocalplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrevolvedareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsurfaceconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcradiusdimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptdisksolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchalfspacesolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolygonalboundedhalfspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncalloutrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccooledbeamtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproject",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcevaporatortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclaborresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingledisplacementdistortion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyboundedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrampflighttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadplanarforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctubebundletype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvalvetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctrimmedcurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefines",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefinesbyproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstocontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoccupant",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchumidifiertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcarbitraryopenprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoprojectorder",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpermit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoffsetcurve3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcepositional",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacetexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcblobtexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentinformation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylelighting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalsimplequantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityarea",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationnotation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcramp",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefineditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedcurvefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedcolour",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurrencyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmovingdevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspaceheatertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclamptype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementcomponent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingbar",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricheatertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcobjective",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralactivity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturecoordinate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturemap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmonetaryunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitytime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctablerow",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightdistributiondata",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator2dnonuniform",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationnotationfacet",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesapproval",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedcurvefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingleforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingleforcewarping",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefontandscaling",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvirtualelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrightcircularcylinder",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoutlettype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldecomposes",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelnests",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccovering",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcirregulartimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolyline",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpath",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementcomponent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfastener",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmappeditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmetric",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangularpyramid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelreferencedinspatialstructure",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccrewresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcnamedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontextdependentunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcunitaryequipmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroof",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstasks",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsports",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstylemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstyledrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspatialstructureelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuilding",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectedfaceset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopenshell",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacetedbrep",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclocaltime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalconcretematerialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconic",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoveringtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroundedrectangleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmovingdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompressortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowpanelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedterminatorsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcishapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcasymmetricishapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontrollertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrailing",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcasset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialdefinitionrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefontpattern",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalpropertyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrailingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwall",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralpointconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectiongeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionpointgeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertylistvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurniturestandard",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelschedulescostitems",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricgeneratortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstyleditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsymboloccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcarbitraryclosedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcarbitraryprofiledefwithvoids",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcline",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayerset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowsegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairterminalboxtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertysinglevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcalarmtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcellipseprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstair",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylefontmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestyleshading",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpumptype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationitemrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeneralmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementcomponenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfastenertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalfastenertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpermeablecoveringproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowfitting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapproval",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshapeaspect",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintclassificationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcedirectional",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcsurfacestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralactivity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfuelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowcontroller",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfailureconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingstorey",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkcontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctable",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductsegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsteelprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyletilesymbolwithstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapplication",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnects",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralmember",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcstructuralsurfacemember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsurfacemembervarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacesurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassification",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcmateriallist",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccostschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoordinateduniversaltimeoffset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplanarextent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplanarbox",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionreinforcementproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolourspecification",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvector",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbeam",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolourrgb",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralplanaraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralplanaractionvarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsite",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiscreteaccessorytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvibrationisolatortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcevaporativecoolertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionchamberelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfeatureelementaddition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructureddimensioncallout",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoolingtowertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccenterlineprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturevertex",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorganization",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcegoniometric",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcribplateprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctransformertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmembertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfaceoflinearextrusion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmotorconnectiontype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowtreatmentdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductsilencertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowliningproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnishingelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsystemfurnitureelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionpointeccentricity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwasteterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbsplinecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbeziercurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentinformationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactuatortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributioncontrolelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesdocument",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorliningproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshellbasedsurfacemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactionrequest",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcextrudedareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsystem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastylehatching",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelvoidselement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectspathelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelspaceboundary",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacecurvesweptareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator3dnonuniform",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelinteractionrequirements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurtainwalltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitylength",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionflowelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsanitaryterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyconversiondevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricgeneratortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontrol",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcequipmentstandard",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowstoragedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvirtualgridintersection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiameterdimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcswitchingdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaddress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctelecomaddress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindow",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalmaterialproperties",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcmechanicalsteelmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowtreatmentdevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelservicesbuildings",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcchillertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoproduct",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectanglehollowprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboxedhalfspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaxis2placement2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspaceprogram",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricappliancetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchygroscopicmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurniturestandard",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcirregulartimeseriesvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolourspecification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelaxation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccomplexproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccovering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundedcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbsplinecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcnamedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsubcontractresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcobjectplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgridplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfailureconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalsimplequantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertydefinition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertysetdefinition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowliningproperties",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcpoint",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifccartesianpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundedsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolyloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedpointmarkersymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcterminatorsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncurveterminator",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelprojectselement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctrapeziumprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentationcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricrepresentationcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylewithboxcharacteristics",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurveboundedplane",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitycount",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesreferencerelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadtemperature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsiunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacebound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarycondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundaryfacecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclibraryinformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifconedirectionrepeatfactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctwodirectionrepeatfactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectselements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectspathelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassigns",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyconstraintrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourceambient",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaxis1placement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsurfaceoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowcontrollertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmetertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationcurveoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclocaltime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociates",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesapproval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsubedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowstoragedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctanktype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementcomponent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementpart",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshapemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshaperepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrailing",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralload",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadstatic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingleforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingleforcewarping",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstylemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstyledrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolourrgb",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementcomponenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiscreteaccessorytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvibrationisolatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprocess",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprocedure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfeatureelementaddition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctrimmedcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcoversbldgelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextliteral",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcparameterizedprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccranerailashapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementcomponent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccsgprimitive3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcblock",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrailingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralpointconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmovingdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpumptype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurvemember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurvemembervarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingmesh",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplanarextent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplanarbox",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccooledbeamtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityarea",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingcalloutrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncalloutrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectorderrecord",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpointonsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpointoncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcontainedinspatialstructure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsimpleproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertylistvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspatialstructureelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingstorey",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcunitaryequipmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoutlettype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfastenertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsystem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralanalysismodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslabtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoproduct",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionflowelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolyline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityvolume",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingcallout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaddress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsurfacemembervarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmotorconnectiontype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairtoairheatrecoverytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplatetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsolidmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccsgsolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalfastenertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldecomposes",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolumntype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangularpyramid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactionrequest",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralactivity",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcstructuralreaction",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcstructuralpointreaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaxis1placement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcementdefinitionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricappliancetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsensortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnishingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprotectivedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifczshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcscheduletimecontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentationmap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclosedshell",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementpart",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedcolour",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpostaladdress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcblock",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightfixturetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopeningelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcespot",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctendonanchor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylerefraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricflowstoragedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfluidflowproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsphere",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesappliedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdampertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectorderrecord",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensionalexponents",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefinesbytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionchamberelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalfastener",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityvolume",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangulartrimmedsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdateandtime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifczone",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfantype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyletiles",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpixeltexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablesegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreloverridesproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmeasurewithunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslabtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcservicelife",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnituretype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccostitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingmesh",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcextendedmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactorrole",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacetedbrepwithvoids",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintaggregationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgasterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectswitheccentricity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpile",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyletilesymbolwithstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalbaseproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionmaterialresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationcurveoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometriccurveset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelaggregates",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacebasedsurfacemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyconversiondevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrampflight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyenumeration",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcushapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchygroscopicmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacebound",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfaceouterbound",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifconedirectionrepeatfactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboilertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionequipmentresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccomplexproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfooting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopticalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionproductresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundaryedgecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertytablevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstogroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmetertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsporttoelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesclassification",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcunitassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowterminal",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccranerailfshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowsegment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarynodecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarynodeconditionwarping",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurtainwall",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiscreteaccessory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgrid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsanitaryterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsoundproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsubedge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstyletextmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfiltertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsymbolstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctendon",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensionpair",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationstyleassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcregulartimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurvemember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourceambient",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcport",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcheatexchangertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctanktype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcinventory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcappliedvaluerelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsoundvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctransportelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairtoairheatrecoverytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstairflight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightintensitydistribution",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylewithtextures",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundingbox",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapplication",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwalltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmove",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccircle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoffsetcurve2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayersetusage",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpointoncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralresultgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionedspine",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslab",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionportgeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityweight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesmaterial",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertex",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreferencesvaluedocument",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpersonandorganization",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelflowcontrolelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoprocess",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertydependencyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedterminatorsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralaction",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcstructurallinearaction",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcstructurallinearactionvarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementproxytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectionelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalactorrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconversionbasedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterial",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricrepresentationsubcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsurfaceoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefineddimensionsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroundededgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcoversbldgelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricdistributionpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablecarriersegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadlinearforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgridaxis",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcirregulartimeseriesvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwallstandardcase",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreloccupiesspaces",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedunitelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccsgsolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccrewresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcchamferedgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedcolour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedcolour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifc2dcompositecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgrid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctendon",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangleprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroundedrectangleprofiledef",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcbeamtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationfillarea",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelaxation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurvemembervarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpointonsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertydependencyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexbasedtexturemap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorderaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclibraryreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgeloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationfillareaoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkplan",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcellipse",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductdefinitionshape",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectioncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalcircuit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrationalbeziercurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralpointaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcservicelifefactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcthermalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturecoordinategenerator",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpipesegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctwodirectionrepeatfactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshaperepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylerendering",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionport",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclamptype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesreferencerelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacetexture",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcimagetexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpipefittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcegoniometric",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialdefinitionrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpermit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeneralmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontextdependentunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmovingdevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolumn",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstocontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoprojectorder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributioncontrolelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprotectivedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturemap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowsegment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompressortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeneralprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcappliedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctrapeziumprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefines",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefinesbytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctask",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmove",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundaryedgecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcedirectional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccondensertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctablerow",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesappliedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcellipse",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesclassification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductsofcombustionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributioncontrolelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsensortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationfillareaoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwall",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelprojectselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityweight",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnishingelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnituretype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontrollertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowfitting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralactivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelnests",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccalendardate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightdistributiondata",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalcomplexquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentelectronicformat",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentationcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedunitelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowpanelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentationmap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralmember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialclassificationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdirection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncurvedirectedcallout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcangulardimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkcontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkplan",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspatialstructureelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspacetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslippageconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcport",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionport",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorderaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorpanelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbeam",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionreinforcementproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmanifoldsolidbrep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacetedbrep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopticalmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylewithtextures",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectswitheccentricity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcarbitraryclosedprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchumidifiertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolyloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyletiles",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturevertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationfillarea",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrightcircularcone",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundedsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclibraryreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintclassificationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricrepresentationcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctubebundletype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralplanaraction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarynodecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcheatexchangertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelschedulescostitems",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfaceouterbound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsphere",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcepositional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralpointaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowsegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfiresuppressionterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertysinglevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspacethermalloadproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcperson",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylefordefinedfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacebasedsurfacemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaxis2placement3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralresultgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchalfspacesolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgasterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsoundvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentinformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayersetusage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyenumeratedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpermeablecoveringproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightintensitydistribution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionchamberelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextliteralwithextent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowcontroller",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricdistributionpoint",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifctransportelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationtextoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionsurfacegeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralanalysismodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectioncurvegeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcasset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpersonandorganization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrevolvedareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowinstrumenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyconversiondevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsoundproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestyleshading",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylerendering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboilertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementproxy",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclocalplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifczone",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstair",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwallstandardcase",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiameterdimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductsegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcirregulartimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcjunctionboxtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator3dnonuniform",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapproval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefontandscaling",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcinventory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitylength",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcconditioncriterion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwaterproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectedfaceset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopenshell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsteelprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbeziercurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrationalbeziercurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcarbitraryprofiledefwithvoids",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterial",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbooleanresult",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstackterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefineddimensionsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcishapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcasymmetricishapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcequipmentelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedcurvefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshapeaspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationnotationfacet",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorliningproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingledisplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesmaterial",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarynodeconditionwarping",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoordinateduniversaltimeoffset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclosedshell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalconcretematerialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayerset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcellipseprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyboundedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoveringtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcoversspaces",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationitemrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactuatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoffsetcurve2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectiongeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionsurfacegeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionchamberelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefontpattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoffsetcurve3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfooting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmappeditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpostaladdress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelspaceboundary",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctransformertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrightcircularcylinder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspaceprogram",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcthermalmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifczshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectanglehollowprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometriccurveset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcarbitraryopenprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentinformationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacetedbrepwithvoids",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvector",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedsurfacestyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcservicelife",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurveboundedplane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccircle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfuelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcservicelifefactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyenumeration",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacecurvesweptareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionequipmentresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionedspine",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreferencesvaluedocument",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyreferencevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelservicesbuildings",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsite",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcperformancehistory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertytablevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenvironmentalimpactvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctransportelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolygonalboundedhalfspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionportgeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelflowcontrolelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalpropertyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelreferencedinspatialstructure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaxis2placement2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastylehatching",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfastener",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcscheduletimecontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricmotortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpipesegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowterminal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcementdefinitionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwalltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoiltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingledisplacementdistortion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnishingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylewithboxcharacteristics",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwasteterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindow",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactorrole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricflowstoragedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelaggregates",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcramp",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedcurvefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclineardimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementarysurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionproductresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablesegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpath",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstyletextmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorganizationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmonetaryunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoccupant",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcswitchingdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfaceoflinearextrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshellbasedsurfacemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsymbolstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuilding",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsiunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiscreteaccessory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedpointmarkersymbol",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifccostvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcownerhistory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsystemfurnitureelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementassembly",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoolingtowertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadlinearforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationlayerassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationlayerwithstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcespot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcextendedmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpixeltexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensionalexponents",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcevaporatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationnotation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadplanarforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspaceheatertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurrencyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrampflight",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconversionbasedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcextrudedareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectorder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionpointgeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionpointeccentricity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintaggregationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensionpair",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbooleanclippingresult",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadtemperature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesconstraint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingbar",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccenterlineprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcushapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundingbox",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcblobtexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmembertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightfixturetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowstoragedevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctopologyrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefinesbyproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreloverridesproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstairflighttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccircleprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptdisksolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcregulartimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralplanaractionvarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvalvetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcunitassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectioncurvegeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorganization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvirtualelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitycount",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurveconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowtreatmentdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroof",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstogroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectrictimecontroltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpile",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccostschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrampflighttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccostitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcevaporativecoolertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcchillertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboxedhalfspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurtainwalltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricrepresentationsubcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectioncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdampertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylerefraction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcribplateprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwaterproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalfastener",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductsilencertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesdocument",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcementbarproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclaborresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfantype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectionelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelinteractionrequirements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccranerailfshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproject",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelvoidselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmetric",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalcircuit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelsequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowtreatmentdevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexpoint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationtextoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfiltertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitytime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgeloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccirclehollowprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairterminalboxtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructureddimensioncallout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalbaseproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablecarriersegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcappliedvaluerelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedhatchstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociateslibrary",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangulartrimmedsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductdefinitionshape",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstairflight",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslab",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpipefittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdateandtime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcobjective",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvirtualgridintersection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementproxytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoprocess",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcalarmtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablecarrierfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroundededgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctelecomaddress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsporttoelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstasks",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacesurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreloccupiesspaces",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgridaxis",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctendonanchor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfluidflowproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfaceofrevolution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylelighting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricheatertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmeasurewithunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorientededge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator2dnonuniform",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectswithrealizingelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsports",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelfillselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionmaterialresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcradiusdimension",&STEP::ObjectHelper::Construct ) }; } @@ -1045,13 +1045,59 @@ void IFC::GetSchema(EXPRESS::ConversionSchema& out) namespace STEP { // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const STEP::DB& /*db*/, const LIST& /*params*/, NotImplemented* /*in*/) +template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) { return 0; } +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationItem* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologicalRepresentationItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurveSegment* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcCompositeCurveSegment"); } do { // convert the 'Transition' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Transition, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurveSegment to be a `IfcTransitionCode`")); } + } while(0); + do { // convert the 'SameSense' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SameSense, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurveSegment to be a `BOOLEAN`")); } + } while(0); + do { // convert the 'ParentCurve' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ParentCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCompositeCurveSegment to be a `IfcCurve`")); } + } while(0); + return base; +} // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoot* in) { @@ -1091,6 +1137,158 @@ template <> size_t GenericFill(const DB& db, const LIST& pa if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcObjectDefinition"); } return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcObject* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcObject"); } do { // convert the 'ObjectType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ObjectType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcObject to be a `IfcLabel`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProduct* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcProduct"); } do { // convert the 'ObjectPlacement' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ObjectPlacement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProduct to be a `IfcObjectPlacement`")); } + } while(0); + do { // convert the 'Representation' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Representation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProduct to be a `IfcProductRepresentation`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyleAssignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyleAssignment"); } do { // convert the 'Styles' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyleAssignment to be a `SET [1:?] OF IfcPresentationStyleSelect`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcElement"); } do { // convert the 'Tag' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Tag, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcElement to be a `IfcIdentifier`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcBuildingElement"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWall* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProxy* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcStyledItem"); } do { // convert the 'Item' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Item, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcStyledItem to be a `IfcRepresentationItem`")); } + } while(0); + do { // convert the 'Styles' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->Styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcStyledItem to be a `SET [1:?] OF IfcPresentationStyleAssignment`")); } + } while(0); + do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcStyledItem to be a `IfcLabel`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSymbolOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTerminatorSymbol* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveTerminator* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcTypeObject* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1119,69 +1317,56 @@ template <> size_t GenericFill(const DB& db, const L return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElementType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElement"); } return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowControllerType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementSubtraction* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElementSubtraction"); } return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricTimeControlType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpeningElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcOpeningElement"); } return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentation* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyle* in) { size_t base = 0; - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRepresentation"); } do { // convert the 'ContextOfItems' argument + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyle"); } do { // convert the 'Name' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->ContextOfItems, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentation to be a `IfcRepresentationContext`")); } - } while(0); - do { // convert the 'RepresentationIdentifier' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RepresentationIdentifier, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentation to be a `IfcLabel`")); } - } while(0); - do { // convert the 'RepresentationType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RepresentationType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRepresentation to be a `IfcLabel`")); } - } while(0); - do { // convert the 'Items' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } - try { GenericConvert( in->Items, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRepresentation to be a `SET [1:?] OF IfcRepresentationItem`")); } + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyle to be a `IfcLabel`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeModel* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyle* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcSurfaceStyle"); } do { // convert the 'Side' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Side, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSurfaceStyle to be a `IfcSurfaceSide`")); } + } while(0); + do { // convert the 'Styles' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSurfaceStyle to be a `SET [1:5] OF IfcSurfaceStyleElementSelect`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologyRepresentation* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTileSymbolWithStyle* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -1198,193 +1383,16 @@ template <> size_t GenericFill(const DB& db, const LIST& params, if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRelConnects"); } return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFittingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralMember* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierFittingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMember* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoilType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcObject* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcObject"); } do { // convert the 'ObjectType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ObjectType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcObject to be a `IfcLabel`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcControl* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPerformanceHistory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& /*db*/, const LIST& /*params*/, IfcRepresentationItem* /*in*/) -{ - size_t base = 0; - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteral* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteralWithExtent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductRepresentation* in) -{ - size_t base = 0; - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcProductRepresentation"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProductRepresentation to be a `IfcLabel`")); } - } while(0); - do { // convert the 'Description' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Description, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProductRepresentation to be a `IfcText`")); } - } while(0); - do { // convert the 'Representations' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->Representations, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcProductRepresentation to be a `LIST [1:?] OF IfcRepresentation`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProduct* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcProduct"); } do { // convert the 'ObjectPlacement' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ObjectPlacement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProduct to be a `IfcObjectPlacement`")); } - } while(0); - do { // convert the 'Representation' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Representation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProduct to be a `IfcProductRepresentation`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcElement"); } do { // convert the 'Tag' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Tag, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcElement to be a `IfcIdentifier`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCompositeCurve"); } do { // convert the 'Segments' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Segments, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurve to be a `LIST [1:?] OF IfcCompositeCurveSegment`")); } - } while(0); - do { // convert the 'SelfIntersect' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->SelfIntersect, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurve to be a `LOGICAL`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, Ifc2DCompositeCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -1435,124 +1443,13 @@ template <> size_t GenericFill(const DB& d return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProperty* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElementType* in) { - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProperty"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProperty to be a `IfcIdentifier`")); } - } while(0); - do { // convert the 'Description' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Description, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProperty to be a `IfcText`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSimpleProperty* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSimpleProperty"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyEnumeratedValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlightType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementarySurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcElementarySurface"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcElementarySurface to be a `IfcAxis2Placement3D`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlane* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlane"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanResult* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanResult"); } do { // convert the 'Operator' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Operator, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBooleanResult to be a `IfcBooleanOperator`")); } - } while(0); - do { // convert the 'FirstOperand' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->FirstOperand, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBooleanResult to be a `IfcBooleanOperand`")); } - } while(0); - do { // convert the 'SecondOperand' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->SecondOperand, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBooleanResult to be a `IfcBooleanOperand`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanClippingResult* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanClippingResult"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSolidModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcManifoldSolidBrep* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcManifoldSolidBrep"); } do { // convert the 'Outer' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Outer, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcManifoldSolidBrep to be a `IfcClosedShell`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminalType* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1560,93 +1457,23 @@ template <> size_t GenericFill(const DB& db, const LIST& pa return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStackTerminalType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSanitaryTerminalType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralItem* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDeviceType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralConnection* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricGeneratorType* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcJunctionBoxType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyDefinition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyDefinition"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySetDefinition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySetDefinition"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcess* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTask* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelFillsElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelFillsElement"); } do { // convert the 'RelatingOpeningElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingOpeningElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelFillsElement to be a `IfcOpeningElement`")); } - } while(0); - do { // convert the 'RelatedBuildingElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedBuildingElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelFillsElement to be a `IfcElement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcedure* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProxy* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -1665,1281 +1492,27 @@ template <> size_t GenericFill(const DB& db, const LIST return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubContractResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelContainedInSpatialStructure* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelContainedInSpatialStructure"); } do { // convert the 'RelatedElements' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedElements, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelContainedInSpatialStructure to be a `SET [1:?] OF IfcProduct`")); } - } while(0); - do { // convert the 'RelatingStructure' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingStructure, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelContainedInSpatialStructure to be a `IfcSpatialStructureElement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologicalRepresentationItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlateType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& /*db*/, const LIST& /*params*/, IfcObjectPlacement* /*in*/) -{ - size_t base = 0; - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGridPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFireSuppressionTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfRevolution* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrientedEdge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDirection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcDirection"); } do { // convert the 'DirectionRatios' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->DirectionRatios, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcDirection to be a `LIST [2:3] OF REAL`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProfileDef* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProfileDef"); } do { // convert the 'ProfileType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->ProfileType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProfileDef to be a `IfcProfileTypeEnum`")); } - } while(0); - do { // convert the 'ProfileName' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ProfileName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProfileDef to be a `IfcLabel`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcParameterizedProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcParameterizedProfileDef"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcParameterizedProfileDef to be a `IfcAxis2Placement2D`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementSubtraction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElementSubtraction"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeFeature* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcChamferEdgeFeature* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcBuildingElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumn* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyReferenceValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricMotorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumnType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailAShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondenserType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCircleProfileDef"); } do { // convert the 'Radius' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Radius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCircleProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleHollowProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCircleHollowProfileDef"); } do { // convert the 'WallThickness' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->WallThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCircleHollowProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlacement"); } do { // convert the 'Location' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Location, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPlacement to be a `IfcCartesianPoint`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcAxis2Placement3D"); } do { // convert the 'Axis' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement3D to be a `IfcDirection`")); } - } while(0); - do { // convert the 'RefDirection' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcAxis2Placement3D to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyle* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyle"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyle to be a `IfcLabel`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurveSegment* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcCompositeCurveSegment"); } do { // convert the 'Transition' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Transition, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurveSegment to be a `IfcTransitionCode`")); } - } while(0); - do { // convert the 'SameSense' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SameSense, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurveSegment to be a `BOOLEAN`")); } - } while(0); - do { // convert the 'ParentCurve' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ParentCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCompositeCurveSegment to be a `IfcCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRectangleProfileDef"); } do { // convert the 'XDim' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->XDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'YDim' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->YDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxy* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowInstrumentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDraughtingCallout* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveDirectedCallout* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLinearDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementAssembly* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgPrimitive3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCone* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrder* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAngularDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLocalPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLocalPlacement"); } do { // convert the 'PlacementRelTo' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->PlacementRelTo, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLocalPlacement to be a `IfcObjectPlacement`")); } - } while(0); - do { // convert the 'RelativePlacement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelativePlacement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLocalPlacement to be a `IfcAxis2Placement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptAreaSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSweptAreaSolid"); } do { // convert the 'SweptArea' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->SweptArea, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptAreaSolid to be a `IfcProfileDef`")); } - } while(0); - do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptAreaSolid to be a `IfcAxis2Placement3D`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRevolvedAreaSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRevolvedAreaSolid"); } do { // convert the 'Axis' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Axis, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRevolvedAreaSolid to be a `IfcAxis1Placement`")); } - } while(0); - do { // convert the 'Angle' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Angle, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRevolvedAreaSolid to be a `IfcPlaneAngleMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRadiusDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptDiskSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcSweptDiskSolid"); } do { // convert the 'Directrix' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Directrix, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptDiskSolid to be a `IfcCurve`")); } - } while(0); - do { // convert the 'Radius' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Radius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptDiskSolid to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'InnerRadius' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->InnerRadius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSweptDiskSolid to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'StartParam' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->StartParam, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSweptDiskSolid to be a `IfcParameterValue`")); } - } while(0); - do { // convert the 'EndParam' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->EndParam, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcSweptDiskSolid to be a `IfcParameterValue`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHalfSpaceSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcHalfSpaceSolid"); } do { // convert the 'BaseSurface' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->BaseSurface, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcHalfSpaceSolid to be a `IfcSurface`")); } - } while(0); - do { // convert the 'AgreementFlag' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->AgreementFlag, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcHalfSpaceSolid to be a `BOOLEAN`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolygonalBoundedHalfSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPolygonalBoundedHalfSpace"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPolygonalBoundedHalfSpace to be a `IfcAxis2Placement3D`")); } - } while(0); - do { // convert the 'PolygonalBoundary' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->PolygonalBoundary, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPolygonalBoundedHalfSpace to be a `IfcBoundedCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTimeSeriesSchedule* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCooledBeamType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProject* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcProject"); } do { // convert the 'LongName' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LongName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProject to be a `IfcLabel`")); } - } while(0); - do { // convert the 'Phase' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Phase, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProject to be a `IfcLabel`")); } - } while(0); - do { // convert the 'RepresentationContexts' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RepresentationContexts, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcProject to be a `SET [1:?] OF IfcRepresentationContext`")); } - } while(0); - do { // convert the 'UnitsInContext' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UnitsInContext, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcProject to be a `IfcUnitAssignment`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLaborResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyBoundedValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlightType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTubeBundleType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcValveType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrimmedCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcTrimmedCurve"); } do { // convert the 'BasisCurve' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->BasisCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcTrimmedCurve to be a `IfcCurve`")); } - } while(0); - do { // convert the 'Trim1' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Trim1, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } - } while(0); - do { // convert the 'Trim2' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Trim2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } - } while(0); - do { // convert the 'SenseAgreement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SenseAgreement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcTrimmedCurve to be a `BOOLEAN`")); } - } while(0); - do { // convert the 'MasterRepresentation' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MasterRepresentation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcTrimmedCurve to be a `IfcTrimmingPreference`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefines* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRelDefines"); } do { // convert the 'RelatedObjects' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatedObjects, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDefines to be a `SET [1:?] OF IfcObject`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefinesByProperties* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDefinesByProperties"); } do { // convert the 'RelatingPropertyDefinition' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatingPropertyDefinition, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDefinesByProperties to be a `IfcPropertySetDefinition`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActor* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcControl* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOccupant* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHumidifierType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryOpenProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryOpenProfileDef"); } do { // convert the 'Curve' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Curve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryOpenProfileDef to be a `IfcBoundedCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPermit* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentStandard* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourcePositional* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRamp* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceHeaterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLampType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricApplianceType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementComponent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingBar* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricHeaterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralActivity* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctFittingType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2DnonUniform* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVirtualElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCylinder* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOutletType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDecomposes* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDecomposes"); } do { // convert the 'RelatingObject' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatingObject, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDecomposes to be a `IfcObjectDefinition`")); } - } while(0); - do { // convert the 'RelatedObjects' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->RelatedObjects, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDecomposes to be a `SET [1:?] OF IfcObjectDefinition`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCovering* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyline* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyline"); } do { // convert the 'Points' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Points, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyline to be a `LIST [2:?] OF IfcCartesianPoint`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPath* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastener* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMappedItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMappedItem"); } do { // convert the 'MappingSource' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingSource, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMappedItem to be a `IfcRepresentationMap`")); } - } while(0); - do { // convert the 'MappingTarget' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingTarget, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMappedItem to be a `IfcCartesianTransformationOperator`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularPyramid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCrewResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcNamedUnit* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcNamedUnit"); } do { // convert the 'Dimensions' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Dimensions, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcNamedUnit to be a `IfcDimensionalExponents`")); } - } while(0); - do { // convert the 'UnitType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->UnitType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcNamedUnit to be a `IfcUnitEnum`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcContextDependentUnit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitaryEquipmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoof* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyleModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcSpatialStructureElement"); } do { // convert the 'LongName' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LongName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcSpatialStructureElement to be a `IfcLabel`")); } - } while(0); - do { // convert the 'CompositionType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->CompositionType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcSpatialStructureElement to be a `IfcElementCompositionEnum`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuilding* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to IfcBuilding"); } do { // convert the 'ElevationOfRefHeight' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationOfRefHeight, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcBuilding to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'ElevationOfTerrain' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationOfTerrain, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcBuilding to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'BuildingAddress' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->BuildingAddress, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcBuilding to be a `IfcPostalAddress`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConnectedFaceSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConnectedFaceSet"); } do { // convert the 'CfsFaces' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->CfsFaces, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConnectedFaceSet to be a `SET [1:?] OF IfcFace`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpenShell* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrep* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConic* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConic"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConic to be a `IfcAxis2Placement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoveringType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedRectangleProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompressorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcIShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcIShapeProfileDef"); } do { // convert the 'OverallWidth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->OverallWidth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'OverallDepth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->OverallDepth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'WebThickness' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->WebThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'FlangeThickness' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } - try { GenericConvert( in->FlangeThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'FilletRadius' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->FilletRadius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsymmetricIShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcControllerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailing* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGroup* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsset* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMaterialDefinitionRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailingType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWall* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyListValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyListValue"); } do { // convert the 'ListValues' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ListValues, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertyListValue to be a `LIST [1:?] OF IfcValue`")); } - } while(0); - do { // convert the 'Unit' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Unit, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertyListValue to be a `IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureStandard* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -2947,87 +1520,29 @@ template <> size_t GenericFill(const DB& db, const LIST& p return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricGeneratorType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDefinedSymbol* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoor* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourSpecification* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to IfcDoor"); } do { // convert the 'OverallHeight' argument + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcColourSpecification"); } do { // convert the 'Name' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->OverallHeight, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'OverallWidth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->OverallWidth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcStyledItem"); } do { // convert the 'Item' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Item, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcStyledItem to be a `IfcRepresentationItem`")); } - } while(0); - do { // convert the 'Styles' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->Styles, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcStyledItem to be a `SET [1:?] OF IfcPresentationStyleAssignment`")); } - } while(0); - do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } if (dynamic_cast(&*arg)) break; try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcStyledItem to be a `IfcLabel`")); } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcColourSpecification to be a `IfcLabel`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationOccurrence* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurve* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSymbolOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryClosedProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryClosedProfileDef"); } do { // convert the 'OuterCurve' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->OuterCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryClosedProfileDef to be a `IfcCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryProfileDefWithVoids* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); return base; } // ----------------------------------------------------------------------------------------------------------- @@ -3047,469 +1562,57 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcLin return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalBoxType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySingleValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySingleValue"); } do { // convert the 'NominalValue' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->NominalValue, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertySingleValue to be a `IfcValue`")); } - } while(0); - do { // convert the 'Unit' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Unit, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertySingleValue to be a `IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAlarmType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipseProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStair* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleShading* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleShading"); } do { // convert the 'SurfaceColour' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->SurfaceColour, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleShading to be a `IfcColourRgb`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPumpType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDefinedSymbol* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastenerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastenerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFitting* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceDirectional* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcSurfaceStyle"); } do { // convert the 'Side' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Side, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSurfaceStyle to be a `IfcSurfaceSide`")); } - } while(0); - do { // convert the 'Styles' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Styles, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSurfaceStyle to be a `SET [1:5] OF IfcSurfaceStyleElementSelect`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowController* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingStorey* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkControl* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkSchedule* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFace* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLoop* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcFace"); } do { // convert the 'Bounds' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Bounds, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFace to be a `SET [1:?] OF IfcFaceBound`")); } - } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMemberVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostSchedule* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarExtent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarBox* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourSpecification* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProperty* in) { size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcColourSpecification"); } do { // convert the 'Name' argument + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProperty"); } do { // convert the 'Name' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcColourSpecification to be a `IfcLabel`")); } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProperty to be a `IfcIdentifier`")); } + } while(0); + do { // convert the 'Description' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProperty to be a `IfcText`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVector* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcComplexProperty* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcVector"); } do { // convert the 'Orientation' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcComplexProperty"); } do { // convert the 'UsageName' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Orientation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcVector to be a `IfcDirection`")); } + try { GenericConvert( in->UsageName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcComplexProperty to be a `IfcIdentifier`")); } } while(0); - do { // convert the 'Magnitude' argument + do { // convert the 'HasProperties' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Magnitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcVector to be a `IfcLengthMeasure`")); } + try { GenericConvert( in->HasProperties, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcComplexProperty to be a `SET [1:?] OF IfcProperty`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeam* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCovering* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourRgb* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedCurve* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcColourRgb"); } do { // convert the 'Red' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Red, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } - } while(0); - do { // convert the 'Green' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Green, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } - } while(0); - do { // convert the 'Blue' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Blue, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarAction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarActionVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSite* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to IfcSite"); } do { // convert the 'RefLatitude' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefLatitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } - } while(0); - do { // convert the 'RefLongitude' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefLongitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } - } while(0); - do { // convert the 'RefElevation' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefElevation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcSite to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'LandTitleNumber' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LandTitleNumber, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to IfcSite to be a `IfcLabel`")); } - } while(0); - do { // convert the 'SiteAddress' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->SiteAddress, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to IfcSite to be a `IfcPostalAddress`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessoryType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVibrationIsolatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporativeCoolerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementAddition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuredDimensionCallout* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoolingTowerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCenterLineProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindowStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceGoniometric* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransformerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMemberType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfLinearExtrusion* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMotorConnectionType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSilencerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystemFurnitureElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWasteTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); return base; } // ----------------------------------------------------------------------------------------------------------- @@ -3549,209 +1652,54 @@ template <> size_t GenericFill(const DB& db, const LIST& params return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBezierCurve* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcNamedUnit* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActuatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcAnnotation"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShellBasedSurfaceModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcShellBasedSurfaceModel"); } do { // convert the 'SbsmBoundary' argument + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcNamedUnit"); } do { // convert the 'Dimensions' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SbsmBoundary, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcShellBasedSurfaceModel to be a `SET [1:?] OF IfcShell`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Dimensions, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcNamedUnit to be a `IfcDimensionalExponents`")); } + } while(0); + do { // convert the 'UnitType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->UnitType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcNamedUnit to be a `IfcUnitEnum`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActionRequest* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubContractResource* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcExtrudedAreaSolid* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcObjectPlacement* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcExtrudedAreaSolid"); } do { // convert the 'ExtrudedDirection' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ExtrudedDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcExtrudedAreaSolid to be a `IfcDirection`")); } - } while(0); - do { // convert the 'Depth' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Depth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcExtrudedAreaSolid to be a `IfcPositiveLengthMeasure`")); } - } while(0); + size_t base = 0; return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystem* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGridPlacement* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleHatching* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyDefinition* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyDefinition"); } return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelVoidsElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySetDefinition* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelVoidsElement"); } do { // convert the 'RelatingBuildingElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingBuildingElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelVoidsElement to be a `IfcElement`")); } - } while(0); - do { // convert the 'RelatedOpeningElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedOpeningElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelVoidsElement to be a `IfcFeatureElementSubtraction`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceCurveSweptAreaSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3DnonUniform* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcCartesianTransformationOperator3DnonUniform"); } do { // convert the 'Scale2' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Scale2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } - } while(0); - do { // convert the 'Scale3' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Scale3, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWallType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentStandard* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiameterDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSwitchingDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindow* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcChillerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleHollowProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoxedHalfSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement2D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis2Placement2D"); } do { // convert the 'RefDirection' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement2D to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceProgram* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySetDefinition"); } return base; } // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcPoint* in) @@ -3771,40 +1719,984 @@ template <> size_t GenericFill(const DB& db, const LIST& para return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLoop* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBound* in) { size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyLoop"); } do { // convert the 'Polygon' argument + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceBound"); } do { // convert the 'Bound' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Polygon, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyLoop to be a `LIST [3:?] OF IfcCartesianPoint`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Bound, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBound to be a `IfcLoop`")); } + } while(0); + do { // convert the 'Orientation' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->Orientation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcFaceBound to be a `BOOLEAN`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTerminatorSymbol* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeCurve* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveTerminator* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOneDirectionRepeatFactor* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTwoDirectionRepeatFactor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceAmbient* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlacement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlacement"); } do { // convert the 'Location' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Location, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPlacement to be a `IfcCartesianPoint`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis1Placement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis1Placement"); } do { // convert the 'Axis' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Axis, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis1Placement to be a `IfcDirection`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurfaceOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowControllerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMeterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationCurveOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProfileDef* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProfileDef"); } do { // convert the 'ProfileType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->ProfileType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProfileDef to be a `IfcProfileTypeEnum`")); } + } while(0); + do { // convert the 'ProfileName' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ProfileName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProfileDef to be a `IfcLabel`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubedge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTankType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementComponent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementPart* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentation* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRepresentation"); } do { // convert the 'ContextOfItems' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->ContextOfItems, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentation to be a `IfcRepresentationContext`")); } + } while(0); + do { // convert the 'RepresentationIdentifier' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RepresentationIdentifier, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentation to be a `IfcLabel`")); } + } while(0); + do { // convert the 'RepresentationType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RepresentationType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRepresentation to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Items' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->Items, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRepresentation to be a `SET [1:?] OF IfcRepresentationItem`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailing* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyleModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourRgb* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcColourRgb"); } do { // convert the 'Red' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Red, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } + } while(0); + do { // convert the 'Green' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Green, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } + } while(0); + do { // convert the 'Blue' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Blue, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcColourRgb to be a `IfcNormalisedRatioMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessoryType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVibrationIsolatorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcess* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcedure* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementAddition* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrimmedCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcTrimmedCurve"); } do { // convert the 'BasisCurve' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->BasisCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcTrimmedCurve to be a `IfcCurve`")); } + } while(0); + do { // convert the 'Trim1' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Trim1, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } + } while(0); + do { // convert the 'Trim2' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Trim2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } + } while(0); + do { // convert the 'SenseAgreement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SenseAgreement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcTrimmedCurve to be a `BOOLEAN`")); } + } while(0); + do { // convert the 'MasterRepresentation' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MasterRepresentation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcTrimmedCurve to be a `IfcTrimmingPreference`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteral* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcParameterizedProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcParameterizedProfileDef"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcParameterizedProfileDef to be a `IfcAxis2Placement2D`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailAShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgPrimitive3D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBlock* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPumpType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMember* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMemberVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingMesh* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarExtent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarBox* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCooledBeamType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrderRecord* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelContainedInSpatialStructure* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelContainedInSpatialStructure"); } do { // convert the 'RelatedElements' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedElements, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelContainedInSpatialStructure to be a `SET [1:?] OF IfcProduct`")); } + } while(0); + do { // convert the 'RelatingStructure' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingStructure, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelContainedInSpatialStructure to be a `IfcSpatialStructureElement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSimpleProperty* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSimpleProperty"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyListValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyListValue"); } do { // convert the 'ListValues' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ListValues, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertyListValue to be a `LIST [1:?] OF IfcValue`")); } + } while(0); + do { // convert the 'Unit' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Unit, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertyListValue to be a `IfcUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcSpatialStructureElement"); } do { // convert the 'LongName' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->LongName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcSpatialStructureElement to be a `IfcLabel`")); } + } while(0); + do { // convert the 'CompositionType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->CompositionType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcSpatialStructureElement to be a `IfcElementCompositionEnum`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingStorey* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitaryEquipmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOutletType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastenerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGroup* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAnalysisModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlabType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyline* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyline"); } do { // convert the 'Points' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Points, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyline to be a `LIST [2:?] OF IfcCartesianPoint`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDraughtingCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcFace"); } do { // convert the 'Bounds' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Bounds, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFace to be a `SET [1:?] OF IfcFaceBound`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMemberVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMotorConnectionType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirToAirHeatRecoveryType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlateType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSolidModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastenerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDecomposes* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDecomposes"); } do { // convert the 'RelatingObject' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatingObject, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDecomposes to be a `IfcObjectDefinition`")); } + } while(0); + do { // convert the 'RelatedObjects' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->RelatedObjects, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDecomposes to be a `SET [1:?] OF IfcObjectDefinition`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumnType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularPyramid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActionRequest* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralActivity* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralReaction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointReaction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearActionVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCrewResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcChamferEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCompositeCurve"); } do { // convert the 'Segments' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Segments, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurve to be a `LIST [1:?] OF IfcCompositeCurveSegment`")); } + } while(0); + do { // convert the 'SelfIntersect' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->SelfIntersect, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurve to be a `LOGICAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, Ifc2DCompositeCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGrid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendon* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRectangleProfileDef"); } do { // convert the 'XDim' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->XDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'YDim' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->YDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedRectangleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeamType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLampType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceGoniometric* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductRepresentation* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcProductRepresentation"); } do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProductRepresentation to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Description' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProductRepresentation to be a `IfcText`")); } + } while(0); + do { // convert the 'Representations' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->Representations, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcProductRepresentation to be a `LIST [1:?] OF IfcRepresentation`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMaterialDefinitionRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPermit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcContextDependentUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumn* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProtectiveDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegment* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompressorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -3816,6 +2708,137 @@ template <> size_t GenericFill(const DB& db, const LIST& return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefines* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRelDefines"); } do { // convert the 'RelatedObjects' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatedObjects, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDefines to be a `SET [1:?] OF IfcObject`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTask* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMove* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceDirectional* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondenserType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConic* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConic"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConic to be a `IfcAxis2Placement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipse* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcEllipse"); } do { // convert the 'SemiAxis1' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SemiAxis1, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'SemiAxis2' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SemiAxis2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoorStyle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSensorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillAreaOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWall* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcControllerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFitting* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationContext* in) { size_t base = 0; @@ -3836,6 +2859,225 @@ template <> size_t GenericFill(const DB& db, const LIS return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationMap* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationMap"); } do { // convert the 'MappingOrigin' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingOrigin, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationMap to be a `IfcAxis2Placement`")); } + } while(0); + do { // convert the 'MappedRepresentation' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappedRepresentation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationMap to be a `IfcRepresentation`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDirection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcDirection"); } do { // convert the 'DirectionRatios' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->DirectionRatios, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcDirection to be a `LIST [2:3] OF REAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveDirectedCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAngularDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkControl* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkPlan* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPort* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionPort* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrderAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeam* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcManifoldSolidBrep* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcManifoldSolidBrep"); } do { // convert the 'Outer' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Outer, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcManifoldSolidBrep to be a `IfcClosedShell`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrep* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleWithTextures* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleWithTextures"); } do { // convert the 'Textures' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Textures, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleWithTextures to be a `LIST [1:?] OF IfcSurfaceTexture`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryClosedProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryClosedProfileDef"); } do { // convert the 'OuterCurve' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->OuterCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryClosedProfileDef to be a `IfcCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHumidifierType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyLoop* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyLoop"); } do { // convert the 'Polygon' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Polygon, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyLoop to be a `LIST [3:?] OF IfcCartesianPoint`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTiles* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertex* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillArea* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlate* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCone* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLoadGroup* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationContext* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -3868,166 +3110,31 @@ template <> size_t GenericFill(const DB& db, return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurveBoundedPlane* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTubeBundleType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSIUnit* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarAction* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcSIUnit"); } do { // convert the 'Prefix' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Prefix, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSIUnit to be a `IfcSIPrefix`")); } - } while(0); - do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSIUnit to be a `IfcSIUnitName`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralReaction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointReaction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHeatExchangerType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis1Placement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceOuterBound* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis1Placement"); } do { // convert the 'Axis' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis1Placement to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricApplianceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSensorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProtectiveDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcZShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcScheduleTimeControl* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationMap* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationMap"); } do { // convert the 'MappingOrigin' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingOrigin, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationMap to be a `IfcAxis2Placement`")); } - } while(0); - do { // convert the 'MappedRepresentation' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappedRepresentation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationMap to be a `IfcRepresentation`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcClosedShell* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcClosedShell"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementPart* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBlock* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightFixtureType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpeningElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcOpeningElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceSpot* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendonAnchor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricFlowStorageDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceOuterBound"); } return base; } // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcSphere* in) @@ -4037,196 +3144,52 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcS return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDamperType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourcePositional* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrderRecord* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointAction* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegmentType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastener* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularTrimmedSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcZone* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFanType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTiles* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelOverridesProperties* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMeasureWithUnit* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMeasureWithUnit"); } do { // convert the 'ValueComponent' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ValueComponent, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMeasureWithUnit to be a `IfcValue`")); } - } while(0); - do { // convert the 'UnitComponent' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UnitComponent, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMeasureWithUnit to be a `IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlabType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcServiceLife* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingMesh* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrepWithVoids* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGasTerminalType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFireSuppressionTerminalType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPile* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySingleValue* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySingleValue"); } do { // convert the 'NominalValue' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->NominalValue, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertySingleValue to be a `IfcValue`")); } + } while(0); + do { // convert the 'Unit' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Unit, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertySingleValue to be a `IfcUnit`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTileSymbolWithStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionMaterialResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationCurveOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricCurveSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelAggregates* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelAggregates"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBasedSurfaceModel* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -4238,430 +3201,24 @@ template <> size_t GenericFill(const DB& db, const LIS return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDevice* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement3D* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlight* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlate* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcUShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBound* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceBound"); } do { // convert the 'Bound' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Bound, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBound to be a `IfcLoop`")); } - } while(0); - do { // convert the 'Orientation' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->Orientation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcFaceBound to be a `BOOLEAN`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceOuterBound* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceOuterBound"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOneDirectionRepeatFactor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoilerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionEquipmentResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcComplexProperty* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcComplexProperty"); } do { // convert the 'UsageName' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UsageName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcComplexProperty to be a `IfcIdentifier`")); } - } while(0); - do { // convert the 'HasProperties' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->HasProperties, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcComplexProperty to be a `SET [1:?] OF IfcProperty`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFooting* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionProductResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDerivedProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyTableValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMeterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoorStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitAssignment* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcUnitAssignment"); } do { // convert the 'Units' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Units, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcUnitAssignment to be a `SET [1:?] OF IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminal* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailFShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegment* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementQuantity* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcElementQuantity"); } do { // convert the 'MethodOfMeasurement' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcAxis2Placement3D"); } do { // convert the 'Axis' argument boost::shared_ptr arg = params[base++]; if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->MethodOfMeasurement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcElementQuantity to be a `IfcLabel`")); } + try { GenericConvert( in->Axis, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement3D to be a `IfcDirection`")); } } while(0); - do { // convert the 'Quantities' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Quantities, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcElementQuantity to be a `SET [1:?] OF IfcPhysicalQuantity`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWall* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGrid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSanitaryTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubedge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFilterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendon* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLoadGroup* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyleAssignment* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyleAssignment"); } do { // convert the 'Styles' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Styles, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyleAssignment to be a `SET [1:?] OF IfcPresentationStyleSelect`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceAmbient* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPort* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to IfcSpace"); } do { // convert the 'InteriorOrExteriorSpace' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->InteriorOrExteriorSpace, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSpace to be a `IfcInternalOrExternalEnum`")); } - } while(0); - do { // convert the 'ElevationWithFlooring' argument + do { // convert the 'RefDirection' argument boost::shared_ptr arg = params[base++]; if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationWithFlooring, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSpace to be a `IfcLengthMeasure`")); } + try { GenericConvert( in->RefDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcAxis2Placement3D to be a `IfcDirection`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHeatExchangerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTankType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcInventory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirToAirHeatRecoveryType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlight* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleWithTextures* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleWithTextures"); } do { // convert the 'Textures' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Textures, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleWithTextures to be a `LIST [1:?] OF IfcSurfaceTexture`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundingBox* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcBoundingBox"); } do { // convert the 'Corner' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Corner, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBoundingBox to be a `IfcCartesianPoint`")); } - } while(0); - do { // convert the 'XDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->XDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'YDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->YDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'ZDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ZDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMove* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCircle"); } do { // convert the 'Radius' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Radius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCircle to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve2D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralResultGroup* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -4669,255 +3226,38 @@ template <> size_t GenericFill(const DB& db, const LIS return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSectionedSpine* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHalfSpaceSolid* in) { size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcHalfSpaceSolid"); } do { // convert the 'BaseSurface' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->BaseSurface, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcHalfSpaceSolid to be a `IfcSurface`")); } + } while(0); + do { // convert the 'AgreementFlag' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->AgreementFlag, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcHalfSpaceSolid to be a `BOOLEAN`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGasTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlab* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMember* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertex* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexPoint* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearAction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearActionVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxyType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConversionBasedUnit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcConversionBasedUnit"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcConversionBasedUnit to be a `IfcLabel`")); } - } while(0); - do { // convert the 'ConversionFactor' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ConversionFactor, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcConversionBasedUnit to be a `IfcMeasureWithUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationSubContext* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurfaceOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedEdgeFeature* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricDistributionPoint* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallStandardCase* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeamType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillArea* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMemberVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrderAction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillAreaOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkPlan* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipse* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcEllipse"); } do { // convert the 'SemiAxis1' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SemiAxis1, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'SemiAxis2' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SemiAxis2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductDefinitionShape* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalCircuit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRationalBezierCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointAction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTwoDirectionRepeatFactor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySet* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -4929,6 +3269,122 @@ template <> size_t GenericFill(const DB& db, const LIST& params, return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondition* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyEnumeratedValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteralWithExtent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowController* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricDistributionPoint* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsset* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSweptAreaSolid"); } do { // convert the 'SweptArea' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->SweptArea, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptAreaSolid to be a `IfcProfileDef`")); } + } while(0); + do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptAreaSolid to be a `IfcAxis2Placement3D`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRevolvedAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRevolvedAreaSolid"); } do { // convert the 'Axis' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Axis, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRevolvedAreaSolid to be a `IfcAxis1Placement`")); } + } while(0); + do { // convert the 'Angle' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Angle, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRevolvedAreaSolid to be a `IfcPlaneAngleMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowInstrumentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleShading* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleShading"); } do { // convert the 'SurfaceColour' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->SurfaceColour, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleShading to be a `IfcColourRgb`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleRendering* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -4982,27 +3438,1354 @@ template <> size_t GenericFill(const DB& db, const LIS return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionPort* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoilerType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeFittingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxy* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLocalPlacement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLocalPlacement"); } do { // convert the 'PlacementRelTo' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->PlacementRelTo, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLocalPlacement to be a `IfcObjectPlacement`")); } + } while(0); + do { // convert the 'RelativePlacement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelativePlacement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLocalPlacement to be a `IfcAxis2Placement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcZone* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStair* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallStandardCase* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiameterDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcJunctionBoxType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3DnonUniform* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcCartesianTransformationOperator3DnonUniform"); } do { // convert the 'Scale2' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Scale2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } + } while(0); + do { // convert the 'Scale3' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Scale3, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcInventory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConditionCriterion* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConnectedFaceSet* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConnectedFaceSet"); } do { // convert the 'CfsFaces' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->CfsFaces, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConnectedFaceSet to be a `SET [1:?] OF IfcFace`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpenShell* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to IfcDoor"); } do { // convert the 'OverallHeight' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->OverallHeight, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'OverallWidth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->OverallWidth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBezierCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRationalBezierCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryProfileDefWithVoids* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcArbitraryProfileDefWithVoids"); } do { // convert the 'InnerCurves' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->InnerCurves, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcArbitraryProfileDefWithVoids to be a `SET [1:?] OF IfcCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanResult* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanResult"); } do { // convert the 'Operator' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Operator, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBooleanResult to be a `IfcBooleanOperator`")); } + } while(0); + do { // convert the 'FirstOperand' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->FirstOperand, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBooleanResult to be a `IfcBooleanOperand`")); } + } while(0); + do { // convert the 'SecondOperand' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->SecondOperand, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBooleanResult to be a `IfcBooleanOperand`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStackTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcIShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcIShapeProfileDef"); } do { // convert the 'OverallWidth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->OverallWidth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'OverallDepth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->OverallDepth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'WebThickness' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->WebThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'FlangeThickness' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->FlangeThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'FilletRadius' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->FilletRadius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsymmetricIShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentElement* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcClosedShell* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcClosedShell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipseProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyBoundedValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoveringType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActuatorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve2D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcAnnotation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve3D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFooting* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMappedItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMappedItem"); } do { // convert the 'MappingSource' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingSource, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMappedItem to be a `IfcRepresentationMap`")); } + } while(0); + do { // convert the 'MappingTarget' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingTarget, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMappedItem to be a `IfcCartesianTransformationOperator`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransformerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCylinder* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceProgram* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcZShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleHollowProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricSet* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricCurveSet* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryOpenProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryOpenProfileDef"); } do { // convert the 'Curve' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Curve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryOpenProfileDef to be a `IfcBoundedCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrepWithVoids* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVector* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcVector"); } do { // convert the 'Orientation' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Orientation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcVector to be a `IfcDirection`")); } + } while(0); + do { // convert the 'Magnitude' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Magnitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcVector to be a `IfcLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcServiceLife* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurveBoundedPlane* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCircle"); } do { // convert the 'Radius' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Radius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCircle to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexLoop* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceCurveSweptAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionEquipmentResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSectionedSpine* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyReferenceValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSite* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to IfcSite"); } do { // convert the 'RefLatitude' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefLatitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } + } while(0); + do { // convert the 'RefLongitude' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefLongitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } + } while(0); + do { // convert the 'RefElevation' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefElevation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcSite to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'LandTitleNumber' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->LandTitleNumber, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to IfcSite to be a `IfcLabel`")); } + } while(0); + do { // convert the 'SiteAddress' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->SiteAddress, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to IfcSite to be a `IfcPostalAddress`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPerformanceHistory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyTableValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolygonalBoundedHalfSpace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPolygonalBoundedHalfSpace"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPolygonalBoundedHalfSpace to be a `IfcAxis2Placement3D`")); } + } while(0); + do { // convert the 'PolygonalBoundary' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->PolygonalBoundary, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPolygonalBoundedHalfSpace to be a `IfcBoundedCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement2D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis2Placement2D"); } do { // convert the 'RefDirection' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement2D to be a `IfcDirection`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleHatching* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastener* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcScheduleTimeControl* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricMotorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTimeSeriesSchedule* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminal* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoilType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWasteTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindow* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricFlowStorageDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelAggregates* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelAggregates"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRamp* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLinearDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementarySurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcElementarySurface"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcElementarySurface to be a `IfcAxis2Placement3D`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionProductResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPath* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOccupant* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSwitchingDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfLinearExtrusion* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShellBasedSurfaceModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcShellBasedSurfaceModel"); } do { // convert the 'SbsmBoundary' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SbsmBoundary, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcShellBasedSurfaceModel to be a `SET [1:?] OF IfcShell`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuilding* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to IfcBuilding"); } do { // convert the 'ElevationOfRefHeight' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationOfRefHeight, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcBuilding to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'ElevationOfTerrain' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationOfTerrain, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcBuilding to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'BuildingAddress' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->BuildingAddress, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcBuilding to be a `IfcPostalAddress`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSIUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcSIUnit"); } do { // convert the 'Prefix' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Prefix, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSIUnit to be a `IfcSIPrefix`")); } + } while(0); + do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSIUnit to be a `IfcSIUnitName`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystemFurnitureElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementAssembly* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoolingTowerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceSpot* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporatorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceHeaterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementQuantity* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcElementQuantity"); } do { // convert the 'MethodOfMeasurement' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->MethodOfMeasurement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcElementQuantity to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Quantities' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Quantities, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcElementQuantity to be a `SET [1:?] OF IfcPhysicalQuantity`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlight* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConversionBasedUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcConversionBasedUnit"); } do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcConversionBasedUnit to be a `IfcLabel`")); } + } while(0); + do { // convert the 'ConversionFactor' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ConversionFactor, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcConversionBasedUnit to be a `IfcMeasureWithUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcExtrudedAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcExtrudedAreaSolid"); } do { // convert the 'ExtrudedDirection' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ExtrudedDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcExtrudedAreaSolid to be a `IfcDirection`")); } + } while(0); + do { // convert the 'Depth' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Depth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcExtrudedAreaSolid to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrder* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanClippingResult* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanClippingResult"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingBar* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCenterLineProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcUShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundingBox* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcBoundingBox"); } do { // convert the 'Corner' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Corner, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBoundingBox to be a `IfcCartesianPoint`")); } + } while(0); + do { // convert the 'XDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->XDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'YDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->YDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'ZDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ZDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindowStyle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMemberType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightFixtureType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologyRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefinesByProperties* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDefinesByProperties"); } do { // convert the 'RelatingPropertyDefinition' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatingPropertyDefinition, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDefinesByProperties to be a `IfcPropertySetDefinition`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelOverridesProperties* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlightType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCircleProfileDef"); } do { // convert the 'Radius' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Radius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCircleProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptDiskSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcSweptDiskSolid"); } do { // convert the 'Directrix' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Directrix, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptDiskSolid to be a `IfcCurve`")); } + } while(0); + do { // convert the 'Radius' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Radius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptDiskSolid to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'InnerRadius' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->InnerRadius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSweptDiskSolid to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'StartParam' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->StartParam, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSweptDiskSolid to be a `IfcParameterValue`")); } + } while(0); + do { // convert the 'EndParam' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->EndParam, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcSweptDiskSolid to be a `IfcParameterValue`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarActionVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcValveType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitAssignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcUnitAssignment"); } do { // convert the 'Units' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Units, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcUnitAssignment to be a `SET [1:?] OF IfcUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVirtualElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoof* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricTimeControlType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPile* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostSchedule* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlightType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDerivedProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporativeCoolerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcChillerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoxedHalfSpace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWallType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationSubContext* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlane* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlane"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDamperType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastener* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSilencerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLaborResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFanType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailFShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProject* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcProject"); } do { // convert the 'LongName' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->LongName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProject to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Phase' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Phase, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProject to be a `IfcLabel`")); } + } while(0); + do { // convert the 'RepresentationContexts' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RepresentationContexts, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcProject to be a `SET [1:?] OF IfcRepresentationContext`")); } + } while(0); + do { // convert the 'UnitsInContext' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->UnitsInContext, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcProject to be a `IfcUnitAssignment`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelVoidsElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelVoidsElement"); } do { // convert the 'RelatingBuildingElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingBuildingElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelVoidsElement to be a `IfcElement`")); } + } while(0); + do { // convert the 'RelatedOpeningElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedOpeningElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelVoidsElement to be a `IfcFeatureElementSubtraction`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalCircuit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexPoint* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationTextOccurrence* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -5010,16 +4793,237 @@ template <> size_t GenericFill(const DB& db, const return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAnalysisModel* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFilterType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConditionCriterion* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeLoop* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleHollowProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCircleHollowProfileDef"); } do { // convert the 'WallThickness' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->WallThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCircleHollowProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalBoxType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuredDimensionCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularTrimmedSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductDefinitionShape* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlight* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlab* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to IfcSpace"); } do { // convert the 'InteriorOrExteriorSpace' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->InteriorOrExteriorSpace, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSpace to be a `IfcInternalOrExternalEnum`")); } + } while(0); + do { // convert the 'ElevationWithFlooring' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationWithFlooring, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSpace to be a `IfcLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxyType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAlarmType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendonAnchor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkSchedule* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfRevolution* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricHeaterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMeasureWithUnit* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMeasureWithUnit"); } do { // convert the 'ValueComponent' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ValueComponent, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMeasureWithUnit to be a `IfcValue`")); } + } while(0); + do { // convert the 'UnitComponent' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->UnitComponent, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMeasureWithUnit to be a `IfcUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrientedEdge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2DnonUniform* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelFillsElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelFillsElement"); } do { // convert the 'RelatingOpeningElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingOpeningElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelFillsElement to be a `IfcOpeningElement`")); } + } while(0); + do { // convert the 'RelatedBuildingElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedBuildingElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelFillsElement to be a `IfcElement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionMaterialResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRadiusDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } diff --git a/code/IFCReaderGen.h b/code/IFCReaderGen.h index dd4376872..f87cf2b45 100644 --- a/code/IFCReaderGen.h +++ b/code/IFCReaderGen.h @@ -61,1320 +61,1348 @@ namespace IFC { // ****************************************************************************** - // C++ wrapper type for IfcStairTypeEnum - typedef ENUMERATION IfcStairTypeEnum; - // C++ wrapper type for IfcSpaceTypeEnum - typedef ENUMERATION IfcSpaceTypeEnum; - // C++ wrapper type for IfcWallTypeEnum - typedef ENUMERATION IfcWallTypeEnum; - // C++ wrapper type for IfcMonthInYearNumber - typedef INTEGER IfcMonthInYearNumber; - // C++ wrapper type for IfcHeatFluxDensityMeasure - typedef REAL IfcHeatFluxDensityMeasure; - // C++ wrapper type for IfcKinematicViscosityMeasure - typedef REAL IfcKinematicViscosityMeasure; - // C++ wrapper type for IfcSequenceEnum - typedef ENUMERATION IfcSequenceEnum; - // C++ wrapper type for IfcAirToAirHeatRecoveryTypeEnum - typedef ENUMERATION IfcAirToAirHeatRecoveryTypeEnum; - // C++ wrapper type for IfcActorSelect - typedef SELECT IfcActorSelect; - // C++ wrapper type for IfcTransformerTypeEnum - typedef ENUMERATION IfcTransformerTypeEnum; - // C++ wrapper type for IfcUnitaryEquipmentTypeEnum - typedef ENUMERATION IfcUnitaryEquipmentTypeEnum; - // C++ wrapper type for IfcElectricFlowStorageDeviceTypeEnum - typedef ENUMERATION IfcElectricFlowStorageDeviceTypeEnum; - // C++ wrapper type for IfcEnergySequenceEnum - typedef ENUMERATION IfcEnergySequenceEnum; - // C++ wrapper type for IfcWorkControlTypeEnum - typedef ENUMERATION IfcWorkControlTypeEnum; - // C++ wrapper type for IfcCurvatureMeasure - typedef REAL IfcCurvatureMeasure; - // C++ wrapper type for IfcParameterValue - typedef REAL IfcParameterValue; - // C++ wrapper type for IfcAppliedValueSelect - typedef SELECT IfcAppliedValueSelect; - // C++ wrapper type for IfcWarpingConstantMeasure - typedef REAL IfcWarpingConstantMeasure; + // C++ wrapper type for IfcSIPrefix + typedef ENUMERATION IfcSIPrefix; + // C++ wrapper type for IfcColour + typedef SELECT IfcColour; + // C++ wrapper type for IfcEvaporativeCoolerTypeEnum + typedef ENUMERATION IfcEvaporativeCoolerTypeEnum; + // C++ wrapper type for IfcMetricValueSelect + typedef SELECT IfcMetricValueSelect; + // C++ wrapper type for IfcCurtainWallTypeEnum + typedef ENUMERATION IfcCurtainWallTypeEnum; + // C++ wrapper type for IfcVolumetricFlowRateMeasure + typedef REAL IfcVolumetricFlowRateMeasure; + // C++ wrapper type for IfcPHMeasure + typedef REAL IfcPHMeasure; + // C++ wrapper type for IfcTimeStamp + typedef INTEGER IfcTimeStamp; + // C++ wrapper type for IfcSoundPressureMeasure + typedef REAL IfcSoundPressureMeasure; // C++ wrapper type for IfcArithmeticOperatorEnum typedef ENUMERATION IfcArithmeticOperatorEnum; - // C++ wrapper type for IfcLinearForceMeasure - typedef REAL IfcLinearForceMeasure; + // C++ wrapper type for IfcOutletTypeEnum + typedef ENUMERATION IfcOutletTypeEnum; + // C++ wrapper type for IfcLampTypeEnum + typedef ENUMERATION IfcLampTypeEnum; + // C++ wrapper type for IfcObjectReferenceSelect + typedef SELECT IfcObjectReferenceSelect; + // C++ wrapper type for IfcDateTimeSelect + typedef SELECT IfcDateTimeSelect; + // C++ wrapper type for IfcElectricGeneratorTypeEnum + typedef ENUMERATION IfcElectricGeneratorTypeEnum; + // C++ wrapper type for IfcMoistureDiffusivityMeasure + typedef REAL IfcMoistureDiffusivityMeasure; + // C++ wrapper type for IfcCompoundPlaneAngleMeasure + typedef ListOf< INTEGER, 3, 3 > IfcCompoundPlaneAngleMeasure; + // C++ wrapper type for IfcDerivedUnitEnum + typedef ENUMERATION IfcDerivedUnitEnum; + // C++ wrapper type for IfcRotationalStiffnessMeasure + typedef REAL IfcRotationalStiffnessMeasure; + // C++ wrapper type for IfcPipeFittingTypeEnum + typedef ENUMERATION IfcPipeFittingTypeEnum; + // C++ wrapper type for IfcShearModulusMeasure + typedef REAL IfcShearModulusMeasure; + // C++ wrapper type for IfcContextDependentMeasure + typedef REAL IfcContextDependentMeasure; + // C++ wrapper type for IfcLightFixtureTypeEnum + typedef ENUMERATION IfcLightFixtureTypeEnum; + // C++ wrapper type for IfcResourceConsumptionEnum + typedef ENUMERATION IfcResourceConsumptionEnum; + // C++ wrapper type for IfcDistributionChamberElementTypeEnum + typedef ENUMERATION IfcDistributionChamberElementTypeEnum; + // C++ wrapper type for IfcPlaneAngleMeasure + typedef REAL IfcPlaneAngleMeasure; + // C++ wrapper type for IfcSlabTypeEnum + typedef ENUMERATION IfcSlabTypeEnum; + // C++ wrapper type for IfcCharacterStyleSelect + typedef SELECT IfcCharacterStyleSelect; + // C++ wrapper type for IfcDimensionExtentUsage + typedef ENUMERATION IfcDimensionExtentUsage; + // C++ wrapper type for IfcDynamicViscosityMeasure + typedef REAL IfcDynamicViscosityMeasure; + // C++ wrapper type for IfcPropertySourceEnum + typedef ENUMERATION IfcPropertySourceEnum; + // C++ wrapper type for IfcConstraintEnum + typedef ENUMERATION IfcConstraintEnum; + // C++ wrapper type for IfcLayerSetDirectionEnum + typedef ENUMERATION IfcLayerSetDirectionEnum; + // C++ wrapper type for IfcFontVariant + typedef STRING IfcFontVariant; + // C++ wrapper type for IfcModulusOfElasticityMeasure + typedef REAL IfcModulusOfElasticityMeasure; + // C++ wrapper type for IfcDoorPanelPositionEnum + typedef ENUMERATION IfcDoorPanelPositionEnum; + // C++ wrapper type for IfcWindowStyleConstructionEnum + typedef ENUMERATION IfcWindowStyleConstructionEnum; + // C++ wrapper type for IfcAmountOfSubstanceMeasure + typedef REAL IfcAmountOfSubstanceMeasure; + // C++ wrapper type for IfcCurvatureMeasure + typedef REAL IfcCurvatureMeasure; + // C++ wrapper type for IfcCableCarrierFittingTypeEnum + typedef ENUMERATION IfcCableCarrierFittingTypeEnum; + // C++ wrapper type for IfcMinuteInHour + typedef INTEGER IfcMinuteInHour; + // C++ wrapper type for IfcPressureMeasure + typedef REAL IfcPressureMeasure; + // C++ wrapper type for IfcElectricConductanceMeasure + typedef REAL IfcElectricConductanceMeasure; + // C++ wrapper type for IfcIsothermalMoistureCapacityMeasure + typedef REAL IfcIsothermalMoistureCapacityMeasure; + // C++ wrapper type for IfcFanTypeEnum + typedef ENUMERATION IfcFanTypeEnum; + // C++ wrapper type for IfcCurveOrEdgeCurve + typedef SELECT IfcCurveOrEdgeCurve; + // C++ wrapper type for IfcPipeSegmentTypeEnum + typedef ENUMERATION IfcPipeSegmentTypeEnum; + // C++ wrapper type for IfcEvaporatorTypeEnum + typedef ENUMERATION IfcEvaporatorTypeEnum; + // C++ wrapper type for IfcElectricCapacitanceMeasure + typedef REAL IfcElectricCapacitanceMeasure; + // C++ wrapper type for IfcElementAssemblyTypeEnum + typedef ENUMERATION IfcElementAssemblyTypeEnum; + // C++ wrapper type for IfcElectricCurrentMeasure + typedef REAL IfcElectricCurrentMeasure; + // C++ wrapper type for IfcThermalAdmittanceMeasure + typedef REAL IfcThermalAdmittanceMeasure; + // C++ wrapper type for IfcLibrarySelect + typedef SELECT IfcLibrarySelect; + // C++ wrapper type for IfcSanitaryTerminalTypeEnum + typedef ENUMERATION IfcSanitaryTerminalTypeEnum; + // C++ wrapper type for IfcValue + typedef SELECT IfcValue; + // C++ wrapper type for IfcRoleEnum + typedef ENUMERATION IfcRoleEnum; + // C++ wrapper type for IfcModulusOfRotationalSubgradeReactionMeasure + typedef REAL IfcModulusOfRotationalSubgradeReactionMeasure; + // C++ wrapper type for IfcWindowStyleOperationEnum + typedef ENUMERATION IfcWindowStyleOperationEnum; + // C++ wrapper type for IfcDayInMonthNumber + typedef INTEGER IfcDayInMonthNumber; + // C++ wrapper type for IfcDirectionSenseEnum + typedef ENUMERATION IfcDirectionSenseEnum; + // C++ wrapper type for IfcMotorConnectionTypeEnum + typedef ENUMERATION IfcMotorConnectionTypeEnum; + // C++ wrapper type for IfcMassDensityMeasure + typedef REAL IfcMassDensityMeasure; + // C++ wrapper type for IfcSpaceTypeEnum + typedef ENUMERATION IfcSpaceTypeEnum; + // C++ wrapper type for IfcTextAlignment + typedef STRING IfcTextAlignment; + // C++ wrapper type for IfcAbsorbedDoseMeasure + typedef REAL IfcAbsorbedDoseMeasure; + // C++ wrapper type for IfcObjectiveEnum + typedef ENUMERATION IfcObjectiveEnum; + // C++ wrapper type for IfcSoundScaleEnum + typedef ENUMERATION IfcSoundScaleEnum; + // C++ wrapper type for IfcIlluminanceMeasure + typedef REAL IfcIlluminanceMeasure; + // C++ wrapper type for IfcDoseEquivalentMeasure + typedef REAL IfcDoseEquivalentMeasure; + // C++ wrapper type for IfcPowerMeasure + typedef REAL IfcPowerMeasure; + // C++ wrapper type for IfcElectricVoltageMeasure + typedef REAL IfcElectricVoltageMeasure; + // C++ wrapper type for IfcFootingTypeEnum + typedef ENUMERATION IfcFootingTypeEnum; + // C++ wrapper type for IfcFontStyle + typedef STRING IfcFontStyle; + // C++ wrapper type for IfcShell + typedef SELECT IfcShell; + // C++ wrapper type for IfcPermeableCoveringOperationEnum + typedef ENUMERATION IfcPermeableCoveringOperationEnum; + // C++ wrapper type for IfcWarpingMomentMeasure + typedef REAL IfcWarpingMomentMeasure; + // C++ wrapper type for IfcSectionalAreaIntegralMeasure + typedef REAL IfcSectionalAreaIntegralMeasure; + // C++ wrapper type for IfcModulusOfSubgradeReactionMeasure + typedef REAL IfcModulusOfSubgradeReactionMeasure; + // C++ wrapper type for IfcRotationalFrequencyMeasure + typedef REAL IfcRotationalFrequencyMeasure; + // C++ wrapper type for IfcFillAreaStyleTileShapeSelect + typedef SELECT IfcFillAreaStyleTileShapeSelect; + // C++ wrapper type for IfcLoadGroupTypeEnum + typedef ENUMERATION IfcLoadGroupTypeEnum; + // C++ wrapper type for IfcSolidAngleMeasure + typedef REAL IfcSolidAngleMeasure; + // C++ wrapper type for IfcColourOrFactor + typedef SELECT IfcColourOrFactor; + // C++ wrapper type for IfcHourInDay + typedef INTEGER IfcHourInDay; + // C++ wrapper type for IfcLinearStiffnessMeasure + typedef REAL IfcLinearStiffnessMeasure; + // C++ wrapper type for IfcTimeMeasure + typedef REAL IfcTimeMeasure; + // C++ wrapper type for IfcBoxAlignment + typedef STRING IfcBoxAlignment; + // C++ wrapper type for IfcElectricFlowStorageDeviceTypeEnum + typedef ENUMERATION IfcElectricFlowStorageDeviceTypeEnum; + // C++ wrapper type for IfcOrientationSelect + typedef SELECT IfcOrientationSelect; + // C++ wrapper type for IfcSecondInMinute + typedef REAL IfcSecondInMinute; + // C++ wrapper type for IfcWorkControlTypeEnum + typedef ENUMERATION IfcWorkControlTypeEnum; + // C++ wrapper type for IfcHeatFluxDensityMeasure + typedef REAL IfcHeatFluxDensityMeasure; + // C++ wrapper type for IfcSizeSelect + typedef SELECT IfcSizeSelect; + // C++ wrapper type for IfcDimensionCount + typedef INTEGER IfcDimensionCount; + // C++ wrapper type for IfcValveTypeEnum + typedef ENUMERATION IfcValveTypeEnum; + // C++ wrapper type for IfcTransportElementTypeEnum + typedef ENUMERATION IfcTransportElementTypeEnum; + // C++ wrapper type for IfcInductanceMeasure + typedef REAL IfcInductanceMeasure; + // C++ wrapper type for IfcYearNumber + typedef INTEGER IfcYearNumber; + // C++ wrapper type for IfcDoorStyleConstructionEnum + typedef ENUMERATION IfcDoorStyleConstructionEnum; + // C++ wrapper type for IfcThermalExpansionCoefficientMeasure + typedef REAL IfcThermalExpansionCoefficientMeasure; + // C++ wrapper type for IfcCompressorTypeEnum + typedef ENUMERATION IfcCompressorTypeEnum; + // C++ wrapper type for IfcAxis2Placement + typedef SELECT IfcAxis2Placement; + // C++ wrapper type for IfcSwitchingDeviceTypeEnum + typedef ENUMERATION IfcSwitchingDeviceTypeEnum; + // C++ wrapper type for IfcDocumentConfidentialityEnum + typedef ENUMERATION IfcDocumentConfidentialityEnum; + // C++ wrapper type for IfcGasTerminalTypeEnum + typedef ENUMERATION IfcGasTerminalTypeEnum; + // C++ wrapper type for IfcServiceLifeTypeEnum + typedef ENUMERATION IfcServiceLifeTypeEnum; + // C++ wrapper type for IfcIntegerCountRateMeasure + typedef INTEGER IfcIntegerCountRateMeasure; + // C++ wrapper type for IfcDocumentStatusEnum + typedef ENUMERATION IfcDocumentStatusEnum; + // C++ wrapper type for IfcSpaceHeaterTypeEnum + typedef ENUMERATION IfcSpaceHeaterTypeEnum; + // C++ wrapper type for IfcWasteTerminalTypeEnum + typedef ENUMERATION IfcWasteTerminalTypeEnum; + // C++ wrapper type for IfcAirTerminalTypeEnum + typedef ENUMERATION IfcAirTerminalTypeEnum; + // C++ wrapper type for IfcProjectedOrTrueLengthEnum + typedef ENUMERATION IfcProjectedOrTrueLengthEnum; + // C++ wrapper type for IfcDuctFittingTypeEnum + typedef ENUMERATION IfcDuctFittingTypeEnum; + // C++ wrapper type for IfcLabel + typedef STRING IfcLabel; + // C++ wrapper type for IfcTextFontSelect + typedef SELECT IfcTextFontSelect; + // C++ wrapper type for IfcAnalysisTheoryTypeEnum + typedef ENUMERATION IfcAnalysisTheoryTypeEnum; + // C++ wrapper type for IfcProjectOrderRecordTypeEnum + typedef ENUMERATION IfcProjectOrderRecordTypeEnum; + // C++ wrapper type for IfcUnit + typedef SELECT IfcUnit; // C++ wrapper type for IfcWindowPanelPositionEnum typedef ENUMERATION IfcWindowPanelPositionEnum; - // C++ wrapper type for IfcFlowMeterTypeEnum - typedef ENUMERATION IfcFlowMeterTypeEnum; + // C++ wrapper type for IfcSymbolStyleSelect + typedef SELECT IfcSymbolStyleSelect; + // C++ wrapper type for IfcWallTypeEnum + typedef ENUMERATION IfcWallTypeEnum; + // C++ wrapper type for IfcLightEmissionSourceEnum + typedef ENUMERATION IfcLightEmissionSourceEnum; + // C++ wrapper type for IfcModulusOfLinearSubgradeReactionMeasure + typedef REAL IfcModulusOfLinearSubgradeReactionMeasure; + // C++ wrapper type for IfcSpecularRoughness + typedef REAL IfcSpecularRoughness; + // C++ wrapper type for IfcTendonTypeEnum + typedef ENUMERATION IfcTendonTypeEnum; + // C++ wrapper type for IfcElectricMotorTypeEnum + typedef ENUMERATION IfcElectricMotorTypeEnum; + // C++ wrapper type for IfcCurveStyleFontSelect + typedef SELECT IfcCurveStyleFontSelect; + // C++ wrapper type for IfcPlanarForceMeasure + typedef REAL IfcPlanarForceMeasure; + // C++ wrapper type for IfcCoilTypeEnum + typedef ENUMERATION IfcCoilTypeEnum; + // C++ wrapper type for IfcSimpleValue + typedef SELECT IfcSimpleValue; + // C++ wrapper type for IfcLogicalOperatorEnum + typedef ENUMERATION IfcLogicalOperatorEnum; + // C++ wrapper type for IfcTransformerTypeEnum + typedef ENUMERATION IfcTransformerTypeEnum; + // C++ wrapper type for IfcVaporPermeabilityMeasure + typedef REAL IfcVaporPermeabilityMeasure; + // C++ wrapper type for IfcMassFlowRateMeasure + typedef REAL IfcMassFlowRateMeasure; + // C++ wrapper type for IfcBooleanOperator + typedef ENUMERATION IfcBooleanOperator; + // C++ wrapper type for IfcRadioActivityMeasure + typedef REAL IfcRadioActivityMeasure; + // C++ wrapper type for IfcSurfaceSide + typedef ENUMERATION IfcSurfaceSide; + // C++ wrapper type for IfcRibPlateDirectionEnum + typedef ENUMERATION IfcRibPlateDirectionEnum; + // C++ wrapper type for IfcGeometricSetSelect + typedef SELECT IfcGeometricSetSelect; + // C++ wrapper type for IfcVolumeMeasure + typedef REAL IfcVolumeMeasure; + // C++ wrapper type for IfcDoorPanelOperationEnum + typedef ENUMERATION IfcDoorPanelOperationEnum; + // C++ wrapper type for IfcElectricHeaterTypeEnum + typedef ENUMERATION IfcElectricHeaterTypeEnum; + // C++ wrapper type for IfcMagneticFluxMeasure + typedef REAL IfcMagneticFluxMeasure; + // C++ wrapper type for IfcThermalTransmittanceMeasure + typedef REAL IfcThermalTransmittanceMeasure; + // C++ wrapper type for IfcStructuralCurveTypeEnum + typedef ENUMERATION IfcStructuralCurveTypeEnum; + // C++ wrapper type for IfcMonetaryMeasure + typedef REAL IfcMonetaryMeasure; + // C++ wrapper type for IfcAssemblyPlaceEnum + typedef ENUMERATION IfcAssemblyPlaceEnum; + // C++ wrapper type for IfcReinforcingBarSurfaceEnum + typedef ENUMERATION IfcReinforcingBarSurfaceEnum; + // C++ wrapper type for IfcPointOrVertexPoint + typedef SELECT IfcPointOrVertexPoint; + // C++ wrapper type for IfcSpecificHeatCapacityMeasure + typedef REAL IfcSpecificHeatCapacityMeasure; + // C++ wrapper type for IfcChangeActionEnum + typedef ENUMERATION IfcChangeActionEnum; + // C++ wrapper type for IfcElectricDistributionPointFunctionEnum + typedef ENUMERATION IfcElectricDistributionPointFunctionEnum; + // C++ wrapper type for IfcBuildingElementProxyTypeEnum + typedef ENUMERATION IfcBuildingElementProxyTypeEnum; + // C++ wrapper type for IfcSequenceEnum + typedef ENUMERATION IfcSequenceEnum; + // C++ wrapper type for IfcAheadOrBehind + typedef ENUMERATION IfcAheadOrBehind; + // C++ wrapper type for IfcProjectOrderTypeEnum + typedef ENUMERATION IfcProjectOrderTypeEnum; + // C++ wrapper type for IfcTextStyleSelect + typedef SELECT IfcTextStyleSelect; + // C++ wrapper type for IfcCooledBeamTypeEnum + typedef ENUMERATION IfcCooledBeamTypeEnum; + // C++ wrapper type for IfcConnectionTypeEnum + typedef ENUMERATION IfcConnectionTypeEnum; + // C++ wrapper type for IfcSensorTypeEnum + typedef ENUMERATION IfcSensorTypeEnum; + // C++ wrapper type for IfcTrimmingPreference + typedef ENUMERATION IfcTrimmingPreference; + // C++ wrapper type for IfcStructuralSurfaceTypeEnum + typedef ENUMERATION IfcStructuralSurfaceTypeEnum; + // C++ wrapper type for IfcCostScheduleTypeEnum + typedef ENUMERATION IfcCostScheduleTypeEnum; + // C++ wrapper type for IfcSoundPowerMeasure + typedef REAL IfcSoundPowerMeasure; + // C++ wrapper type for IfcStairFlightTypeEnum + typedef ENUMERATION IfcStairFlightTypeEnum; + // C++ wrapper type for IfcDuctSegmentTypeEnum + typedef ENUMERATION IfcDuctSegmentTypeEnum; + // C++ wrapper type for IfcServiceLifeFactorTypeEnum + typedef ENUMERATION IfcServiceLifeFactorTypeEnum; + // C++ wrapper type for IfcBSplineCurveForm + typedef ENUMERATION IfcBSplineCurveForm; + // C++ wrapper type for IfcLuminousIntensityMeasure + typedef REAL IfcLuminousIntensityMeasure; + // C++ wrapper type for IfcCoolingTowerTypeEnum + typedef ENUMERATION IfcCoolingTowerTypeEnum; + // C++ wrapper type for IfcUnitEnum + typedef ENUMERATION IfcUnitEnum; + // C++ wrapper type for IfcPositivePlaneAngleMeasure + typedef REAL IfcPositivePlaneAngleMeasure; + // C++ wrapper type for IfcLightDistributionDataSourceSelect + typedef SELECT IfcLightDistributionDataSourceSelect; + // C++ wrapper type for IfcKinematicViscosityMeasure + typedef REAL IfcKinematicViscosityMeasure; + // C++ wrapper type for IfcDamperTypeEnum + typedef ENUMERATION IfcDamperTypeEnum; + // C++ wrapper type for IfcVectorOrDirection + typedef SELECT IfcVectorOrDirection; + // C++ wrapper type for IfcJunctionBoxTypeEnum + typedef ENUMERATION IfcJunctionBoxTypeEnum; + // C++ wrapper type for IfcActorSelect + typedef SELECT IfcActorSelect; + // C++ wrapper type for IfcElectricApplianceTypeEnum + typedef ENUMERATION IfcElectricApplianceTypeEnum; + // C++ wrapper type for IfcThermodynamicTemperatureMeasure + typedef REAL IfcThermodynamicTemperatureMeasure; + // C++ wrapper type for IfcMomentOfInertiaMeasure + typedef REAL IfcMomentOfInertiaMeasure; + // C++ wrapper type for IfcMonthInYearNumber + typedef INTEGER IfcMonthInYearNumber; + // C++ wrapper type for IfcStairTypeEnum + typedef ENUMERATION IfcStairTypeEnum; + // C++ wrapper type for IfcProtectiveDeviceTypeEnum + typedef ENUMERATION IfcProtectiveDeviceTypeEnum; + // C++ wrapper type for IfcTextDecoration + typedef STRING IfcTextDecoration; + // C++ wrapper type for IfcUnitaryEquipmentTypeEnum + typedef ENUMERATION IfcUnitaryEquipmentTypeEnum; + // C++ wrapper type for IfcElementCompositionEnum + typedef ENUMERATION IfcElementCompositionEnum; + // C++ wrapper type for IfcCurveFontOrScaledCurveFontSelect + typedef SELECT IfcCurveFontOrScaledCurveFontSelect; + // C++ wrapper type for IfcDescriptiveMeasure + typedef STRING IfcDescriptiveMeasure; + // C++ wrapper type for IfcProfileTypeEnum + typedef ENUMERATION IfcProfileTypeEnum; + // C++ wrapper type for IfcDoorStyleOperationEnum + typedef ENUMERATION IfcDoorStyleOperationEnum; + // C++ wrapper type for IfcTorqueMeasure + typedef REAL IfcTorqueMeasure; + // C++ wrapper type for IfcDaylightSavingHour + typedef INTEGER IfcDaylightSavingHour; + // C++ wrapper type for IfcRotationalMassMeasure + typedef REAL IfcRotationalMassMeasure; + // C++ wrapper type for IfcNullStyle + typedef ENUMERATION IfcNullStyle; + // C++ wrapper type for IfcFireSuppressionTerminalTypeEnum + typedef ENUMERATION IfcFireSuppressionTerminalTypeEnum; + // C++ wrapper type for IfcHeatingValueMeasure + typedef REAL IfcHeatingValueMeasure; // C++ wrapper type for IfcRampFlightTypeEnum typedef ENUMERATION IfcRampFlightTypeEnum; // C++ wrapper type for IfcSpecularHighlightSelect typedef SELECT IfcSpecularHighlightSelect; - // C++ wrapper type for IfcActionTypeEnum - typedef ENUMERATION IfcActionTypeEnum; - // C++ wrapper type for IfcGeometricProjectionEnum - typedef ENUMERATION IfcGeometricProjectionEnum; - // C++ wrapper type for IfcTimeSeriesDataTypeEnum - typedef ENUMERATION IfcTimeSeriesDataTypeEnum; - // C++ wrapper type for IfcMagneticFluxMeasure - typedef REAL IfcMagneticFluxMeasure; - // C++ wrapper type for IfcObjectTypeEnum - typedef ENUMERATION IfcObjectTypeEnum; - // C++ wrapper type for IfcDataOriginEnum - typedef ENUMERATION IfcDataOriginEnum; - // C++ wrapper type for IfcMassDensityMeasure - typedef REAL IfcMassDensityMeasure; - // C++ wrapper type for IfcLightFixtureTypeEnum - typedef ENUMERATION IfcLightFixtureTypeEnum; - // C++ wrapper type for IfcServiceLifeTypeEnum - typedef ENUMERATION IfcServiceLifeTypeEnum; - // C++ wrapper type for IfcElectricVoltageMeasure - typedef REAL IfcElectricVoltageMeasure; - // C++ wrapper type for IfcHeatingValueMeasure - typedef REAL IfcHeatingValueMeasure; - // C++ wrapper type for IfcPresentableText - typedef STRING IfcPresentableText; - // C++ wrapper type for IfcAheadOrBehind - typedef ENUMERATION IfcAheadOrBehind; - // C++ wrapper type for IfcSimpleValue - typedef SELECT IfcSimpleValue; - // C++ wrapper type for IfcSensorTypeEnum - typedef ENUMERATION IfcSensorTypeEnum; - // C++ wrapper type for IfcDerivedUnitEnum - typedef ENUMERATION IfcDerivedUnitEnum; - // C++ wrapper type for IfcSizeSelect - typedef SELECT IfcSizeSelect; - // C++ wrapper type for IfcTransportElementTypeEnum - typedef ENUMERATION IfcTransportElementTypeEnum; - // C++ wrapper type for IfcInventoryTypeEnum - typedef ENUMERATION IfcInventoryTypeEnum; - // C++ wrapper type for IfcTextDecoration - typedef STRING IfcTextDecoration; - // C++ wrapper type for IfcDirectionSenseEnum - typedef ENUMERATION IfcDirectionSenseEnum; - // C++ wrapper type for IfcDuctFittingTypeEnum - typedef ENUMERATION IfcDuctFittingTypeEnum; - // C++ wrapper type for IfcDocumentStatusEnum - typedef ENUMERATION IfcDocumentStatusEnum; - // C++ wrapper type for IfcSlabTypeEnum - typedef ENUMERATION IfcSlabTypeEnum; - // C++ wrapper type for IfcDoorStyleConstructionEnum - typedef ENUMERATION IfcDoorStyleConstructionEnum; - // C++ wrapper type for IfcVolumeMeasure - typedef REAL IfcVolumeMeasure; - // C++ wrapper type for IfcInductanceMeasure - typedef REAL IfcInductanceMeasure; - // C++ wrapper type for IfcCurtainWallTypeEnum - typedef ENUMERATION IfcCurtainWallTypeEnum; - // C++ wrapper type for IfcSIUnitName - typedef ENUMERATION IfcSIUnitName; - // C++ wrapper type for IfcSpecularExponent - typedef REAL IfcSpecularExponent; - // C++ wrapper type for IfcSoundPressureMeasure - typedef REAL IfcSoundPressureMeasure; - // C++ wrapper type for IfcAnalysisTheoryTypeEnum - typedef ENUMERATION IfcAnalysisTheoryTypeEnum; - // C++ wrapper type for IfcGasTerminalTypeEnum - typedef ENUMERATION IfcGasTerminalTypeEnum; - // C++ wrapper type for IfcYearNumber - typedef INTEGER IfcYearNumber; - // C++ wrapper type for IfcModulusOfElasticityMeasure - typedef REAL IfcModulusOfElasticityMeasure; - // C++ wrapper type for IfcChangeActionEnum - typedef ENUMERATION IfcChangeActionEnum; - // C++ wrapper type for IfcDamperTypeEnum - typedef ENUMERATION IfcDamperTypeEnum; - // C++ wrapper type for IfcEvaporatorTypeEnum - typedef ENUMERATION IfcEvaporatorTypeEnum; - // C++ wrapper type for IfcIonConcentrationMeasure - typedef REAL IfcIonConcentrationMeasure; - // C++ wrapper type for IfcDuctSegmentTypeEnum - typedef ENUMERATION IfcDuctSegmentTypeEnum; - // C++ wrapper type for IfcProtectiveDeviceTypeEnum - typedef ENUMERATION IfcProtectiveDeviceTypeEnum; - // C++ wrapper type for IfcAbsorbedDoseMeasure - typedef REAL IfcAbsorbedDoseMeasure; - // C++ wrapper type for IfcMassPerLengthMeasure - typedef REAL IfcMassPerLengthMeasure; - // C++ wrapper type for IfcTextFontName - typedef STRING IfcTextFontName; - // C++ wrapper type for IfcOrientationSelect - typedef SELECT IfcOrientationSelect; - // C++ wrapper type for IfcIlluminanceMeasure - typedef REAL IfcIlluminanceMeasure; - // C++ wrapper type for IfcFireSuppressionTerminalTypeEnum - typedef ENUMERATION IfcFireSuppressionTerminalTypeEnum; - // C++ wrapper type for IfcFontStyle - typedef STRING IfcFontStyle; - // C++ wrapper type for IfcMomentOfInertiaMeasure - typedef REAL IfcMomentOfInertiaMeasure; - // C++ wrapper type for IfcModulusOfSubgradeReactionMeasure - typedef REAL IfcModulusOfSubgradeReactionMeasure; - // C++ wrapper type for IfcHumidifierTypeEnum - typedef ENUMERATION IfcHumidifierTypeEnum; - // C++ wrapper type for IfcPresentationStyleSelect - typedef SELECT IfcPresentationStyleSelect; - // C++ wrapper type for IfcThermalTransmittanceMeasure - typedef REAL IfcThermalTransmittanceMeasure; - // C++ wrapper type for IfcRibPlateDirectionEnum - typedef ENUMERATION IfcRibPlateDirectionEnum; - // C++ wrapper type for IfcClassificationNotationSelect - typedef SELECT IfcClassificationNotationSelect; - // C++ wrapper type for IfcMinuteInHour - typedef INTEGER IfcMinuteInHour; - // C++ wrapper type for IfcInternalOrExternalEnum - typedef ENUMERATION IfcInternalOrExternalEnum; - // C++ wrapper type for IfcRotationalFrequencyMeasure - typedef REAL IfcRotationalFrequencyMeasure; - // C++ wrapper type for IfcSanitaryTerminalTypeEnum - typedef ENUMERATION IfcSanitaryTerminalTypeEnum; - // C++ wrapper type for IfcSymbolStyleSelect - typedef SELECT IfcSymbolStyleSelect; - // C++ wrapper type for IfcElementCompositionEnum - typedef ENUMERATION IfcElementCompositionEnum; - // C++ wrapper type for IfcTextPath - typedef ENUMERATION IfcTextPath; - // C++ wrapper type for IfcPowerMeasure - typedef REAL IfcPowerMeasure; - // C++ wrapper type for IfcSurfaceStyleElementSelect - typedef SELECT IfcSurfaceStyleElementSelect; - // C++ wrapper type for IfcResourceConsumptionEnum - typedef ENUMERATION IfcResourceConsumptionEnum; - // C++ wrapper type for IfcElectricCapacitanceMeasure - typedef REAL IfcElectricCapacitanceMeasure; - // C++ wrapper type for IfcLayerSetDirectionEnum - typedef ENUMERATION IfcLayerSetDirectionEnum; - // C++ wrapper type for IfcRailingTypeEnum - typedef ENUMERATION IfcRailingTypeEnum; - // C++ wrapper type for IfcObjectiveEnum - typedef ENUMERATION IfcObjectiveEnum; - // C++ wrapper type for IfcDocumentSelect - typedef SELECT IfcDocumentSelect; - // C++ wrapper type for IfcModulusOfLinearSubgradeReactionMeasure - typedef REAL IfcModulusOfLinearSubgradeReactionMeasure; - // C++ wrapper type for IfcThermalAdmittanceMeasure - typedef REAL IfcThermalAdmittanceMeasure; - // C++ wrapper type for IfcTransitionCode - typedef ENUMERATION IfcTransitionCode; - // C++ wrapper type for IfcConnectionTypeEnum - typedef ENUMERATION IfcConnectionTypeEnum; - // C++ wrapper type for IfcMonetaryMeasure - typedef REAL IfcMonetaryMeasure; - // C++ wrapper type for IfcStackTerminalTypeEnum - typedef ENUMERATION IfcStackTerminalTypeEnum; - // C++ wrapper type for IfcColour - typedef SELECT IfcColour; - // C++ wrapper type for IfcText - typedef STRING IfcText; - // C++ wrapper type for IfcContextDependentMeasure - typedef REAL IfcContextDependentMeasure; - // C++ wrapper type for IfcThermalConductivityMeasure - typedef REAL IfcThermalConductivityMeasure; - // C++ wrapper type for IfcProjectedOrTrueLengthEnum - typedef ENUMERATION IfcProjectedOrTrueLengthEnum; - // C++ wrapper type for IfcPressureMeasure - typedef REAL IfcPressureMeasure; - // C++ wrapper type for IfcMoistureDiffusivityMeasure - typedef REAL IfcMoistureDiffusivityMeasure; - // C++ wrapper type for IfcBooleanOperator - typedef ENUMERATION IfcBooleanOperator; - // C++ wrapper type for IfcPropertySourceEnum - typedef ENUMERATION IfcPropertySourceEnum; - // C++ wrapper type for IfcTimeStamp - typedef INTEGER IfcTimeStamp; - // C++ wrapper type for IfcMaterialSelect - typedef SELECT IfcMaterialSelect; - // C++ wrapper type for IfcGloballyUniqueId - typedef STRING IfcGloballyUniqueId; - // C++ wrapper type for IfcReflectanceMethodEnum - typedef ENUMERATION IfcReflectanceMethodEnum; - // C++ wrapper type for IfcVaporPermeabilityMeasure - typedef REAL IfcVaporPermeabilityMeasure; - // C++ wrapper type for IfcTimeSeriesScheduleTypeEnum - typedef ENUMERATION IfcTimeSeriesScheduleTypeEnum; - // C++ wrapper type for IfcLinearMomentMeasure - typedef REAL IfcLinearMomentMeasure; - // C++ wrapper type for IfcGeometricSetSelect - typedef SELECT IfcGeometricSetSelect; - // C++ wrapper type for IfcSectionModulusMeasure - typedef REAL IfcSectionModulusMeasure; - // C++ wrapper type for IfcBSplineCurveForm - typedef ENUMERATION IfcBSplineCurveForm; - // C++ wrapper type for IfcDimensionExtentUsage - typedef ENUMERATION IfcDimensionExtentUsage; - // C++ wrapper type for IfcThermalExpansionCoefficientMeasure - typedef REAL IfcThermalExpansionCoefficientMeasure; - // C++ wrapper type for IfcHourInDay - typedef INTEGER IfcHourInDay; - // C++ wrapper type for IfcLinearVelocityMeasure - typedef REAL IfcLinearVelocityMeasure; - // C++ wrapper type for IfcTorqueMeasure - typedef REAL IfcTorqueMeasure; - // C++ wrapper type for IfcTemperatureGradientMeasure - typedef REAL IfcTemperatureGradientMeasure; - // C++ wrapper type for IfcFillStyleSelect - typedef SELECT IfcFillStyleSelect; - // C++ wrapper type for IfcElectricChargeMeasure - typedef REAL IfcElectricChargeMeasure; - // C++ wrapper type for IfcHeatExchangerTypeEnum - typedef ENUMERATION IfcHeatExchangerTypeEnum; - // C++ wrapper type for IfcElectricCurrentEnum - typedef ENUMERATION IfcElectricCurrentEnum; - // C++ wrapper type for IfcDaylightSavingHour - typedef INTEGER IfcDaylightSavingHour; - // C++ wrapper type for IfcShell - typedef SELECT IfcShell; - // C++ wrapper type for IfcDoseEquivalentMeasure - typedef REAL IfcDoseEquivalentMeasure; - // C++ wrapper type for IfcProjectOrderTypeEnum - typedef ENUMERATION IfcProjectOrderTypeEnum; - // C++ wrapper type for IfcDerivedMeasureValue - typedef SELECT IfcDerivedMeasureValue; - // C++ wrapper type for IfcLightDistributionCurveEnum - typedef ENUMERATION IfcLightDistributionCurveEnum; - // C++ wrapper type for IfcWarpingMomentMeasure - typedef REAL IfcWarpingMomentMeasure; - // C++ wrapper type for IfcMemberTypeEnum - typedef ENUMERATION IfcMemberTypeEnum; - // C++ wrapper type for IfcSoundPowerMeasure - typedef REAL IfcSoundPowerMeasure; - // C++ wrapper type for IfcTextAlignment - typedef STRING IfcTextAlignment; - // C++ wrapper type for IfcCurveOrEdgeCurve - typedef SELECT IfcCurveOrEdgeCurve; - // C++ wrapper type for IfcMassFlowRateMeasure - typedef REAL IfcMassFlowRateMeasure; - // C++ wrapper type for IfcIsothermalMoistureCapacityMeasure - typedef REAL IfcIsothermalMoistureCapacityMeasure; - // C++ wrapper type for IfcCsgSelect - typedef SELECT IfcCsgSelect; - // C++ wrapper type for IfcCoolingTowerTypeEnum - typedef ENUMERATION IfcCoolingTowerTypeEnum; - // C++ wrapper type for IfcMassMeasure - typedef REAL IfcMassMeasure; - // C++ wrapper type for IfcPileConstructionEnum - typedef ENUMERATION IfcPileConstructionEnum; - // C++ wrapper type for IfcDoorStyleOperationEnum - typedef ENUMERATION IfcDoorStyleOperationEnum; - // C++ wrapper type for IfcFlowDirectionEnum - typedef ENUMERATION IfcFlowDirectionEnum; - // C++ wrapper type for IfcThermalLoadSourceEnum - typedef ENUMERATION IfcThermalLoadSourceEnum; - // C++ wrapper type for IfcLengthMeasure - typedef REAL IfcLengthMeasure; - // C++ wrapper type for IfcConstraintEnum - typedef ENUMERATION IfcConstraintEnum; - // C++ wrapper type for IfcAxis2Placement - typedef SELECT IfcAxis2Placement; - // C++ wrapper type for IfcLoadGroupTypeEnum - typedef ENUMERATION IfcLoadGroupTypeEnum; - // C++ wrapper type for IfcValue - typedef SELECT IfcValue; - // C++ wrapper type for IfcReinforcingBarSurfaceEnum - typedef ENUMERATION IfcReinforcingBarSurfaceEnum; - // C++ wrapper type for IfcProjectOrderRecordTypeEnum - typedef ENUMERATION IfcProjectOrderRecordTypeEnum; - // C++ wrapper type for IfcDateTimeSelect - typedef SELECT IfcDateTimeSelect; - // C++ wrapper type for IfcStructuralSurfaceTypeEnum - typedef ENUMERATION IfcStructuralSurfaceTypeEnum; - // C++ wrapper type for IfcPermeableCoveringOperationEnum - typedef ENUMERATION IfcPermeableCoveringOperationEnum; - // C++ wrapper type for IfcFontWeight - typedef STRING IfcFontWeight; - // C++ wrapper type for IfcPHMeasure - typedef REAL IfcPHMeasure; - // C++ wrapper type for IfcDescriptiveMeasure - typedef STRING IfcDescriptiveMeasure; - // C++ wrapper type for IfcCurveStyleFontSelect - typedef SELECT IfcCurveStyleFontSelect; - // C++ wrapper type for IfcUnit - typedef SELECT IfcUnit; - // C++ wrapper type for IfcHatchLineDistanceSelect - typedef SELECT IfcHatchLineDistanceSelect; - // C++ wrapper type for IfcTextStyleSelect - typedef SELECT IfcTextStyleSelect; - // C++ wrapper type for IfcMetricValueSelect - typedef SELECT IfcMetricValueSelect; - // C++ wrapper type for IfcVectorOrDirection - typedef SELECT IfcVectorOrDirection; - // C++ wrapper type for IfcAssemblyPlaceEnum - typedef ENUMERATION IfcAssemblyPlaceEnum; - // C++ wrapper type for IfcAirTerminalTypeEnum - typedef ENUMERATION IfcAirTerminalTypeEnum; - // C++ wrapper type for IfcCoveringTypeEnum - typedef ENUMERATION IfcCoveringTypeEnum; - // C++ wrapper type for IfcPlanarForceMeasure - typedef REAL IfcPlanarForceMeasure; - // C++ wrapper type for IfcValveTypeEnum - typedef ENUMERATION IfcValveTypeEnum; - // C++ wrapper type for IfcAlarmTypeEnum - typedef ENUMERATION IfcAlarmTypeEnum; - // C++ wrapper type for IfcDynamicViscosityMeasure - typedef REAL IfcDynamicViscosityMeasure; - // C++ wrapper type for IfcCurrencyEnum - typedef ENUMERATION IfcCurrencyEnum; - // C++ wrapper type for IfcModulusOfRotationalSubgradeReactionMeasure - typedef REAL IfcModulusOfRotationalSubgradeReactionMeasure; - // C++ wrapper type for IfcCableCarrierFittingTypeEnum - typedef ENUMERATION IfcCableCarrierFittingTypeEnum; - // C++ wrapper type for IfcBoolean - typedef BOOLEAN IfcBoolean; - // C++ wrapper type for IfcActionSourceTypeEnum - typedef ENUMERATION IfcActionSourceTypeEnum; - // C++ wrapper type for IfcStructuralActivityAssignmentSelect - typedef SELECT IfcStructuralActivityAssignmentSelect; - // C++ wrapper type for IfcDistributionChamberElementTypeEnum - typedef ENUMERATION IfcDistributionChamberElementTypeEnum; - // C++ wrapper type for IfcEvaporativeCoolerTypeEnum - typedef ENUMERATION IfcEvaporativeCoolerTypeEnum; - // C++ wrapper type for IfcMagneticFluxDensityMeasure - typedef REAL IfcMagneticFluxDensityMeasure; - // C++ wrapper type for IfcLightDistributionDataSourceSelect - typedef SELECT IfcLightDistributionDataSourceSelect; - // C++ wrapper type for IfcTubeBundleTypeEnum - typedef ENUMERATION IfcTubeBundleTypeEnum; - // C++ wrapper type for IfcAccelerationMeasure - typedef REAL IfcAccelerationMeasure; - // C++ wrapper type for IfcBoilerTypeEnum - typedef ENUMERATION IfcBoilerTypeEnum; - // C++ wrapper type for IfcRampTypeEnum - typedef ENUMERATION IfcRampTypeEnum; - // C++ wrapper type for IfcLuminousIntensityDistributionMeasure - typedef REAL IfcLuminousIntensityDistributionMeasure; - // C++ wrapper type for IfcTrimmingPreference - typedef ENUMERATION IfcTrimmingPreference; - // C++ wrapper type for IfcSpecificHeatCapacityMeasure - typedef REAL IfcSpecificHeatCapacityMeasure; - // C++ wrapper type for IfcAmountOfSubstanceMeasure - typedef REAL IfcAmountOfSubstanceMeasure; - // C++ wrapper type for IfcRoleEnum - typedef ENUMERATION IfcRoleEnum; - // C++ wrapper type for IfcDocumentConfidentialityEnum - typedef ENUMERATION IfcDocumentConfidentialityEnum; - // C++ wrapper type for IfcFrequencyMeasure - typedef REAL IfcFrequencyMeasure; - // C++ wrapper type for IfcSectionTypeEnum - typedef ENUMERATION IfcSectionTypeEnum; - // C++ wrapper type for IfcElementAssemblyTypeEnum - typedef ENUMERATION IfcElementAssemblyTypeEnum; - // C++ wrapper type for IfcFootingTypeEnum - typedef ENUMERATION IfcFootingTypeEnum; - // C++ wrapper type for IfcLayeredItem - typedef SELECT IfcLayeredItem; - // C++ wrapper type for IfcCableSegmentTypeEnum - typedef ENUMERATION IfcCableSegmentTypeEnum; - // C++ wrapper type for IfcDefinedSymbolSelect - typedef SELECT IfcDefinedSymbolSelect; - // C++ wrapper type for IfcBuildingElementProxyTypeEnum - typedef ENUMERATION IfcBuildingElementProxyTypeEnum; - // C++ wrapper type for IfcElectricGeneratorTypeEnum - typedef ENUMERATION IfcElectricGeneratorTypeEnum; - // C++ wrapper type for IfcRotationalStiffnessMeasure - typedef REAL IfcRotationalStiffnessMeasure; - // C++ wrapper type for IfcSpaceHeaterTypeEnum - typedef ENUMERATION IfcSpaceHeaterTypeEnum; - // C++ wrapper type for IfcAreaMeasure - typedef REAL IfcAreaMeasure; - // C++ wrapper type for IfcLabel - typedef STRING IfcLabel; - // C++ wrapper type for IfcCostScheduleTypeEnum - typedef ENUMERATION IfcCostScheduleTypeEnum; - // C++ wrapper type for IfcSwitchingDeviceTypeEnum - typedef ENUMERATION IfcSwitchingDeviceTypeEnum; - // C++ wrapper type for IfcElectricTimeControlTypeEnum - typedef ENUMERATION IfcElectricTimeControlTypeEnum; - // C++ wrapper type for IfcFilterTypeEnum - typedef ENUMERATION IfcFilterTypeEnum; - // C++ wrapper type for IfcPositiveLengthMeasure - typedef REAL IfcPositiveLengthMeasure; - // C++ wrapper type for IfcNullStyle - typedef ENUMERATION IfcNullStyle; - // C++ wrapper type for IfcConditionCriterionSelect - typedef SELECT IfcConditionCriterionSelect; - // C++ wrapper type for IfcShearModulusMeasure - typedef REAL IfcShearModulusMeasure; - // C++ wrapper type for IfcNormalisedRatioMeasure - typedef REAL IfcNormalisedRatioMeasure; - // C++ wrapper type for IfcDoorPanelOperationEnum - typedef ENUMERATION IfcDoorPanelOperationEnum; - // C++ wrapper type for IfcPointOrVertexPoint - typedef SELECT IfcPointOrVertexPoint; - // C++ wrapper type for IfcRoofTypeEnum - typedef ENUMERATION IfcRoofTypeEnum; - // C++ wrapper type for IfcCountMeasure - typedef NUMBER IfcCountMeasure; - // C++ wrapper type for IfcElectricConductanceMeasure - typedef REAL IfcElectricConductanceMeasure; - // C++ wrapper type for IfcProcedureTypeEnum - typedef ENUMERATION IfcProcedureTypeEnum; - // C++ wrapper type for IfcFlowInstrumentTypeEnum - typedef ENUMERATION IfcFlowInstrumentTypeEnum; - // C++ wrapper type for IfcElectricMotorTypeEnum - typedef ENUMERATION IfcElectricMotorTypeEnum; - // C++ wrapper type for IfcSurfaceSide - typedef ENUMERATION IfcSurfaceSide; - // C++ wrapper type for IfcStructuralCurveTypeEnum - typedef ENUMERATION IfcStructuralCurveTypeEnum; - // C++ wrapper type for IfcCondenserTypeEnum - typedef ENUMERATION IfcCondenserTypeEnum; - // C++ wrapper type for IfcLinearStiffnessMeasure - typedef REAL IfcLinearStiffnessMeasure; - // C++ wrapper type for IfcUnitEnum - typedef ENUMERATION IfcUnitEnum; - // C++ wrapper type for IfcOccupantTypeEnum - typedef ENUMERATION IfcOccupantTypeEnum; // C++ wrapper type for IfcThermalLoadTypeEnum typedef ENUMERATION IfcThermalLoadTypeEnum; - // C++ wrapper type for IfcReinforcingBarRoleEnum - typedef ENUMERATION IfcReinforcingBarRoleEnum; - // C++ wrapper type for IfcBenchmarkEnum - typedef ENUMERATION IfcBenchmarkEnum; - // C++ wrapper type for IfcPositivePlaneAngleMeasure - typedef REAL IfcPositivePlaneAngleMeasure; - // C++ wrapper type for IfcTextTransformation - typedef STRING IfcTextTransformation; - // C++ wrapper type for IfcDraughtingCalloutElement - typedef SELECT IfcDraughtingCalloutElement; - // C++ wrapper type for IfcRatioMeasure - typedef REAL IfcRatioMeasure; - // C++ wrapper type for IfcSolidAngleMeasure - typedef REAL IfcSolidAngleMeasure; - // C++ wrapper type for IfcPipeSegmentTypeEnum - typedef ENUMERATION IfcPipeSegmentTypeEnum; - // C++ wrapper type for IfcCableCarrierSegmentTypeEnum - typedef ENUMERATION IfcCableCarrierSegmentTypeEnum; - // C++ wrapper type for IfcColourOrFactor - typedef SELECT IfcColourOrFactor; - // C++ wrapper type for IfcIdentifier - typedef STRING IfcIdentifier; - // C++ wrapper type for IfcTendonTypeEnum - typedef ENUMERATION IfcTendonTypeEnum; - // C++ wrapper type for IfcControllerTypeEnum - typedef ENUMERATION IfcControllerTypeEnum; - // C++ wrapper type for IfcRadioActivityMeasure - typedef REAL IfcRadioActivityMeasure; - // C++ wrapper type for IfcTimeMeasure - typedef REAL IfcTimeMeasure; - // C++ wrapper type for IfcPumpTypeEnum - typedef ENUMERATION IfcPumpTypeEnum; - // C++ wrapper type for IfcElectricHeaterTypeEnum - typedef ENUMERATION IfcElectricHeaterTypeEnum; - // C++ wrapper type for IfcBeamTypeEnum - typedef ENUMERATION IfcBeamTypeEnum; - // C++ wrapper type for IfcStateEnum - typedef ENUMERATION IfcStateEnum; - // C++ wrapper type for IfcSIPrefix - typedef ENUMERATION IfcSIPrefix; - // C++ wrapper type for IfcNumericMeasure - typedef NUMBER IfcNumericMeasure; - // C++ wrapper type for IfcOutletTypeEnum - typedef ENUMERATION IfcOutletTypeEnum; - // C++ wrapper type for IfcCompoundPlaneAngleMeasure - typedef ListOf< INTEGER, 3, 3 > IfcCompoundPlaneAngleMeasure; - // C++ wrapper type for IfcServiceLifeFactorTypeEnum - typedef ENUMERATION IfcServiceLifeFactorTypeEnum; - // C++ wrapper type for IfcLogicalOperatorEnum - typedef ENUMERATION IfcLogicalOperatorEnum; - // C++ wrapper type for IfcBooleanOperand - typedef SELECT IfcBooleanOperand; - // C++ wrapper type for IfcObjectReferenceSelect - typedef SELECT IfcObjectReferenceSelect; - // C++ wrapper type for IfcCooledBeamTypeEnum - typedef ENUMERATION IfcCooledBeamTypeEnum; - // C++ wrapper type for IfcDuctSilencerTypeEnum - typedef ENUMERATION IfcDuctSilencerTypeEnum; - // C++ wrapper type for IfcSectionalAreaIntegralMeasure - typedef REAL IfcSectionalAreaIntegralMeasure; - // C++ wrapper type for IfcFontVariant - typedef STRING IfcFontVariant; - // C++ wrapper type for IfcVolumetricFlowRateMeasure - typedef REAL IfcVolumetricFlowRateMeasure; - // C++ wrapper type for IfcPlateTypeEnum - typedef ENUMERATION IfcPlateTypeEnum; - // C++ wrapper type for IfcEnvironmentalImpactCategoryEnum - typedef ENUMERATION IfcEnvironmentalImpactCategoryEnum; // C++ wrapper type for IfcVibrationIsolatorTypeEnum typedef ENUMERATION IfcVibrationIsolatorTypeEnum; - // C++ wrapper type for IfcThermodynamicTemperatureMeasure - typedef REAL IfcThermodynamicTemperatureMeasure; - // C++ wrapper type for IfcRotationalMassMeasure - typedef REAL IfcRotationalMassMeasure; - // C++ wrapper type for IfcSecondInMinute - typedef REAL IfcSecondInMinute; - // C++ wrapper type for IfcDayInMonthNumber - typedef INTEGER IfcDayInMonthNumber; - // C++ wrapper type for IfcDimensionCount - typedef INTEGER IfcDimensionCount; - // C++ wrapper type for IfcWindowStyleOperationEnum - typedef ENUMERATION IfcWindowStyleOperationEnum; - // C++ wrapper type for IfcThermalResistanceMeasure - typedef REAL IfcThermalResistanceMeasure; - // C++ wrapper type for IfcMeasureValue - typedef SELECT IfcMeasureValue; - // C++ wrapper type for IfcWindowPanelOperationEnum - typedef ENUMERATION IfcWindowPanelOperationEnum; - // C++ wrapper type for IfcChillerTypeEnum - typedef ENUMERATION IfcChillerTypeEnum; - // C++ wrapper type for IfcPositiveRatioMeasure - typedef REAL IfcPositiveRatioMeasure; - // C++ wrapper type for IfcInteger - typedef INTEGER IfcInteger; - // C++ wrapper type for IfcLogical - typedef LOGICAL IfcLogical; - // C++ wrapper type for IfcJunctionBoxTypeEnum - typedef ENUMERATION IfcJunctionBoxTypeEnum; - // C++ wrapper type for IfcAddressTypeEnum - typedef ENUMERATION IfcAddressTypeEnum; - // C++ wrapper type for IfcWasteTerminalTypeEnum - typedef ENUMERATION IfcWasteTerminalTypeEnum; - // C++ wrapper type for IfcTrimmingSelect - typedef SELECT IfcTrimmingSelect; - // C++ wrapper type for IfcLightEmissionSourceEnum - typedef ENUMERATION IfcLightEmissionSourceEnum; - // C++ wrapper type for IfcSoundScaleEnum - typedef ENUMERATION IfcSoundScaleEnum; - // C++ wrapper type for IfcLuminousFluxMeasure - typedef REAL IfcLuminousFluxMeasure; - // C++ wrapper type for IfcElectricResistanceMeasure - typedef REAL IfcElectricResistanceMeasure; - // C++ wrapper type for IfcIntegerCountRateMeasure - typedef INTEGER IfcIntegerCountRateMeasure; - // C++ wrapper type for IfcPhysicalOrVirtualEnum - typedef ENUMERATION IfcPhysicalOrVirtualEnum; - // C++ wrapper type for IfcMolecularWeightMeasure - typedef REAL IfcMolecularWeightMeasure; - // C++ wrapper type for IfcProfileTypeEnum - typedef ENUMERATION IfcProfileTypeEnum; - // C++ wrapper type for IfcBoxAlignment - typedef STRING IfcBoxAlignment; - // C++ wrapper type for IfcGlobalOrLocalEnum - typedef ENUMERATION IfcGlobalOrLocalEnum; - // C++ wrapper type for IfcSpecularRoughness - typedef REAL IfcSpecularRoughness; - // C++ wrapper type for IfcLampTypeEnum - typedef ENUMERATION IfcLampTypeEnum; - // C++ wrapper type for IfcPileTypeEnum - typedef ENUMERATION IfcPileTypeEnum; - // C++ wrapper type for IfcElectricCurrentMeasure - typedef REAL IfcElectricCurrentMeasure; - // C++ wrapper type for IfcFanTypeEnum - typedef ENUMERATION IfcFanTypeEnum; - // C++ wrapper type for IfcSurfaceOrFaceSurface - typedef SELECT IfcSurfaceOrFaceSurface; - // C++ wrapper type for IfcPipeFittingTypeEnum - typedef ENUMERATION IfcPipeFittingTypeEnum; - // C++ wrapper type for IfcTankTypeEnum - typedef ENUMERATION IfcTankTypeEnum; - // C++ wrapper type for IfcCurveFontOrScaledCurveFontSelect - typedef SELECT IfcCurveFontOrScaledCurveFontSelect; - // C++ wrapper type for IfcWindowStyleConstructionEnum - typedef ENUMERATION IfcWindowStyleConstructionEnum; - // C++ wrapper type for IfcAirTerminalBoxTypeEnum - typedef ENUMERATION IfcAirTerminalBoxTypeEnum; - // C++ wrapper type for IfcStairFlightTypeEnum - typedef ENUMERATION IfcStairFlightTypeEnum; - // C++ wrapper type for IfcLuminousIntensityMeasure - typedef REAL IfcLuminousIntensityMeasure; - // C++ wrapper type for IfcMotorConnectionTypeEnum - typedef ENUMERATION IfcMotorConnectionTypeEnum; - // C++ wrapper type for IfcPlaneAngleMeasure - typedef REAL IfcPlaneAngleMeasure; - // C++ wrapper type for IfcActuatorTypeEnum - typedef ENUMERATION IfcActuatorTypeEnum; - // C++ wrapper type for IfcColumnTypeEnum - typedef ENUMERATION IfcColumnTypeEnum; - // C++ wrapper type for IfcTextFontSelect - typedef SELECT IfcTextFontSelect; - // C++ wrapper type for IfcDoorPanelPositionEnum - typedef ENUMERATION IfcDoorPanelPositionEnum; - // C++ wrapper type for IfcCoilTypeEnum - typedef ENUMERATION IfcCoilTypeEnum; - // C++ wrapper type for IfcAngularVelocityMeasure - typedef REAL IfcAngularVelocityMeasure; + // C++ wrapper type for IfcFillStyleSelect + typedef SELECT IfcFillStyleSelect; + // C++ wrapper type for IfcObjectTypeEnum + typedef ENUMERATION IfcObjectTypeEnum; + // C++ wrapper type for IfcHatchLineDistanceSelect + typedef SELECT IfcHatchLineDistanceSelect; + // C++ wrapper type for IfcPresentableText + typedef STRING IfcPresentableText; // C++ wrapper type for IfcAnalysisModelTypeEnum typedef ENUMERATION IfcAnalysisModelTypeEnum; - // C++ wrapper type for IfcLibrarySelect - typedef SELECT IfcLibrarySelect; - // C++ wrapper type for IfcForceMeasure - typedef REAL IfcForceMeasure; - // C++ wrapper type for IfcFillAreaStyleTileShapeSelect - typedef SELECT IfcFillAreaStyleTileShapeSelect; - // C++ wrapper type for IfcElectricApplianceTypeEnum - typedef ENUMERATION IfcElectricApplianceTypeEnum; + // C++ wrapper type for IfcAngularVelocityMeasure + typedef REAL IfcAngularVelocityMeasure; + // C++ wrapper type for IfcAccelerationMeasure + typedef REAL IfcAccelerationMeasure; + // C++ wrapper type for IfcThermalLoadSourceEnum + typedef ENUMERATION IfcThermalLoadSourceEnum; + // C++ wrapper type for IfcFlowDirectionEnum + typedef ENUMERATION IfcFlowDirectionEnum; + // C++ wrapper type for IfcTankTypeEnum + typedef ENUMERATION IfcTankTypeEnum; // C++ wrapper type for IfcSurfaceTextureEnum typedef ENUMERATION IfcSurfaceTextureEnum; - // C++ wrapper type for IfcCharacterStyleSelect - typedef SELECT IfcCharacterStyleSelect; - // C++ wrapper type for IfcEnergyMeasure - typedef REAL IfcEnergyMeasure; + // C++ wrapper type for IfcTimeSeriesDataTypeEnum + typedef ENUMERATION IfcTimeSeriesDataTypeEnum; + // C++ wrapper type for IfcPhysicalOrVirtualEnum + typedef ENUMERATION IfcPhysicalOrVirtualEnum; + // C++ wrapper type for IfcDraughtingCalloutElement + typedef SELECT IfcDraughtingCalloutElement; + // C++ wrapper type for IfcDocumentSelect + typedef SELECT IfcDocumentSelect; + // C++ wrapper type for IfcThermalResistanceMeasure + typedef REAL IfcThermalResistanceMeasure; + // C++ wrapper type for IfcTemperatureGradientMeasure + typedef REAL IfcTemperatureGradientMeasure; + // C++ wrapper type for IfcGeometricProjectionEnum + typedef ENUMERATION IfcGeometricProjectionEnum; + // C++ wrapper type for IfcGlobalOrLocalEnum + typedef ENUMERATION IfcGlobalOrLocalEnum; + // C++ wrapper type for IfcAreaMeasure + typedef REAL IfcAreaMeasure; + // C++ wrapper type for IfcCsgSelect + typedef SELECT IfcCsgSelect; + // C++ wrapper type for IfcOccupantTypeEnum + typedef ENUMERATION IfcOccupantTypeEnum; + // C++ wrapper type for IfcEnergySequenceEnum + typedef ENUMERATION IfcEnergySequenceEnum; + // C++ wrapper type for IfcFlowMeterTypeEnum + typedef ENUMERATION IfcFlowMeterTypeEnum; + // C++ wrapper type for IfcSectionModulusMeasure + typedef REAL IfcSectionModulusMeasure; + // C++ wrapper type for IfcAirTerminalBoxTypeEnum + typedef ENUMERATION IfcAirTerminalBoxTypeEnum; + // C++ wrapper type for IfcIdentifier + typedef STRING IfcIdentifier; + // C++ wrapper type for IfcInteger + typedef INTEGER IfcInteger; + // C++ wrapper type for IfcProcedureTypeEnum + typedef ENUMERATION IfcProcedureTypeEnum; + // C++ wrapper type for IfcBenchmarkEnum + typedef ENUMERATION IfcBenchmarkEnum; + // C++ wrapper type for IfcWindowPanelOperationEnum + typedef ENUMERATION IfcWindowPanelOperationEnum; + // C++ wrapper type for IfcTrimmingSelect + typedef SELECT IfcTrimmingSelect; // C++ wrapper type for IfcReal typedef REAL IfcReal; - // C++ wrapper type for IfcCompressorTypeEnum - typedef ENUMERATION IfcCompressorTypeEnum; - // C++ wrapper type for IfcElectricDistributionPointFunctionEnum - typedef ENUMERATION IfcElectricDistributionPointFunctionEnum; + // C++ wrapper type for IfcSurfaceStyleElementSelect + typedef SELECT IfcSurfaceStyleElementSelect; + // C++ wrapper type for IfcAirToAirHeatRecoveryTypeEnum + typedef ENUMERATION IfcAirToAirHeatRecoveryTypeEnum; + // C++ wrapper type for IfcNormalisedRatioMeasure + typedef REAL IfcNormalisedRatioMeasure; + // C++ wrapper type for IfcCableSegmentTypeEnum + typedef ENUMERATION IfcCableSegmentTypeEnum; + // C++ wrapper type for IfcBeamTypeEnum + typedef ENUMERATION IfcBeamTypeEnum; + // C++ wrapper type for IfcBooleanOperand + typedef SELECT IfcBooleanOperand; + // C++ wrapper type for IfcFrequencyMeasure + typedef REAL IfcFrequencyMeasure; + // C++ wrapper type for IfcDataOriginEnum + typedef ENUMERATION IfcDataOriginEnum; + // C++ wrapper type for IfcAlarmTypeEnum + typedef ENUMERATION IfcAlarmTypeEnum; + // C++ wrapper type for IfcMassMeasure + typedef REAL IfcMassMeasure; + // C++ wrapper type for IfcStateEnum + typedef ENUMERATION IfcStateEnum; + // C++ wrapper type for IfcStackTerminalTypeEnum + typedef ENUMERATION IfcStackTerminalTypeEnum; + // C++ wrapper type for IfcReinforcingBarRoleEnum + typedef ENUMERATION IfcReinforcingBarRoleEnum; + // C++ wrapper type for IfcElectricTimeControlTypeEnum + typedef ENUMERATION IfcElectricTimeControlTypeEnum; + // C++ wrapper type for IfcInternalOrExternalEnum + typedef ENUMERATION IfcInternalOrExternalEnum; + // C++ wrapper type for IfcDuctSilencerTypeEnum + typedef ENUMERATION IfcDuctSilencerTypeEnum; + // C++ wrapper type for IfcConditionCriterionSelect + typedef SELECT IfcConditionCriterionSelect; + // C++ wrapper type for IfcHumidifierTypeEnum + typedef ENUMERATION IfcHumidifierTypeEnum; + // C++ wrapper type for IfcForceMeasure + typedef REAL IfcForceMeasure; + // C++ wrapper type for IfcMemberTypeEnum + typedef ENUMERATION IfcMemberTypeEnum; + // C++ wrapper type for IfcIonConcentrationMeasure + typedef REAL IfcIonConcentrationMeasure; + // C++ wrapper type for IfcChillerTypeEnum + typedef ENUMERATION IfcChillerTypeEnum; + // C++ wrapper type for IfcMassPerLengthMeasure + typedef REAL IfcMassPerLengthMeasure; + // C++ wrapper type for IfcTimeSeriesScheduleTypeEnum + typedef ENUMERATION IfcTimeSeriesScheduleTypeEnum; + // C++ wrapper type for IfcFilterTypeEnum + typedef ENUMERATION IfcFilterTypeEnum; + // C++ wrapper type for IfcLogical + typedef LOGICAL IfcLogical; + // C++ wrapper type for IfcInventoryTypeEnum + typedef ENUMERATION IfcInventoryTypeEnum; + // C++ wrapper type for IfcClassificationNotationSelect + typedef SELECT IfcClassificationNotationSelect; + // C++ wrapper type for IfcAddressTypeEnum + typedef ENUMERATION IfcAddressTypeEnum; + // C++ wrapper type for IfcPositiveLengthMeasure + typedef REAL IfcPositiveLengthMeasure; + // C++ wrapper type for IfcRatioMeasure + typedef REAL IfcRatioMeasure; + // C++ wrapper type for IfcRampTypeEnum + typedef ENUMERATION IfcRampTypeEnum; + // C++ wrapper type for IfcMaterialSelect + typedef SELECT IfcMaterialSelect; + // C++ wrapper type for IfcCoveringTypeEnum + typedef ENUMERATION IfcCoveringTypeEnum; + // C++ wrapper type for IfcPileTypeEnum + typedef ENUMERATION IfcPileTypeEnum; + // C++ wrapper type for IfcTransitionCode + typedef ENUMERATION IfcTransitionCode; + // C++ wrapper type for IfcParameterValue + typedef REAL IfcParameterValue; + // C++ wrapper type for IfcCondenserTypeEnum + typedef ENUMERATION IfcCondenserTypeEnum; + // C++ wrapper type for IfcTextPath + typedef ENUMERATION IfcTextPath; + // C++ wrapper type for IfcElectricCurrentEnum + typedef ENUMERATION IfcElectricCurrentEnum; + // C++ wrapper type for IfcColumnTypeEnum + typedef ENUMERATION IfcColumnTypeEnum; + // C++ wrapper type for IfcLuminousFluxMeasure + typedef REAL IfcLuminousFluxMeasure; + // C++ wrapper type for IfcPlateTypeEnum + typedef ENUMERATION IfcPlateTypeEnum; + // C++ wrapper type for IfcPileConstructionEnum + typedef ENUMERATION IfcPileConstructionEnum; + // C++ wrapper type for IfcActionSourceTypeEnum + typedef ENUMERATION IfcActionSourceTypeEnum; + // C++ wrapper type for IfcMagneticFluxDensityMeasure + typedef REAL IfcMagneticFluxDensityMeasure; + // C++ wrapper type for IfcSurfaceOrFaceSurface + typedef SELECT IfcSurfaceOrFaceSurface; + // C++ wrapper type for IfcPresentationStyleSelect + typedef SELECT IfcPresentationStyleSelect; + // C++ wrapper type for IfcGloballyUniqueId + typedef STRING IfcGloballyUniqueId; + // C++ wrapper type for IfcLinearMomentMeasure + typedef REAL IfcLinearMomentMeasure; + // C++ wrapper type for IfcHeatExchangerTypeEnum + typedef ENUMERATION IfcHeatExchangerTypeEnum; + // C++ wrapper type for IfcPumpTypeEnum + typedef ENUMERATION IfcPumpTypeEnum; + // C++ wrapper type for IfcSpecularExponent + typedef REAL IfcSpecularExponent; + // C++ wrapper type for IfcElectricResistanceMeasure + typedef REAL IfcElectricResistanceMeasure; + // C++ wrapper type for IfcThermalConductivityMeasure + typedef REAL IfcThermalConductivityMeasure; + // C++ wrapper type for IfcReflectanceMethodEnum + typedef ENUMERATION IfcReflectanceMethodEnum; + // C++ wrapper type for IfcTubeBundleTypeEnum + typedef ENUMERATION IfcTubeBundleTypeEnum; + // C++ wrapper type for IfcActuatorTypeEnum + typedef ENUMERATION IfcActuatorTypeEnum; + // C++ wrapper type for IfcControllerTypeEnum + typedef ENUMERATION IfcControllerTypeEnum; + // C++ wrapper type for IfcLightDistributionCurveEnum + typedef ENUMERATION IfcLightDistributionCurveEnum; + // C++ wrapper type for IfcPositiveRatioMeasure + typedef REAL IfcPositiveRatioMeasure; + // C++ wrapper type for IfcElectricChargeMeasure + typedef REAL IfcElectricChargeMeasure; + // C++ wrapper type for IfcNumericMeasure + typedef NUMBER IfcNumericMeasure; + // C++ wrapper type for IfcStructuralActivityAssignmentSelect + typedef SELECT IfcStructuralActivityAssignmentSelect; + // C++ wrapper type for IfcLuminousIntensityDistributionMeasure + typedef REAL IfcLuminousIntensityDistributionMeasure; + // C++ wrapper type for IfcMolecularWeightMeasure + typedef REAL IfcMolecularWeightMeasure; + // C++ wrapper type for IfcLayeredItem + typedef SELECT IfcLayeredItem; + // C++ wrapper type for IfcLengthMeasure + typedef REAL IfcLengthMeasure; + // C++ wrapper type for IfcWarpingConstantMeasure + typedef REAL IfcWarpingConstantMeasure; + // C++ wrapper type for IfcBoilerTypeEnum + typedef ENUMERATION IfcBoilerTypeEnum; + // C++ wrapper type for IfcCableCarrierSegmentTypeEnum + typedef ENUMERATION IfcCableCarrierSegmentTypeEnum; + // C++ wrapper type for IfcFontWeight + typedef STRING IfcFontWeight; + // C++ wrapper type for IfcTextFontName + typedef STRING IfcTextFontName; + // C++ wrapper type for IfcEnvironmentalImpactCategoryEnum + typedef ENUMERATION IfcEnvironmentalImpactCategoryEnum; + // C++ wrapper type for IfcActionTypeEnum + typedef ENUMERATION IfcActionTypeEnum; + // C++ wrapper type for IfcDefinedSymbolSelect + typedef SELECT IfcDefinedSymbolSelect; + // C++ wrapper type for IfcTextTransformation + typedef STRING IfcTextTransformation; + // C++ wrapper type for IfcAppliedValueSelect + typedef SELECT IfcAppliedValueSelect; + // C++ wrapper type for IfcEnergyMeasure + typedef REAL IfcEnergyMeasure; + // C++ wrapper type for IfcFlowInstrumentTypeEnum + typedef ENUMERATION IfcFlowInstrumentTypeEnum; + // C++ wrapper type for IfcCountMeasure + typedef NUMBER IfcCountMeasure; + // C++ wrapper type for IfcCurrencyEnum + typedef ENUMERATION IfcCurrencyEnum; + // C++ wrapper type for IfcSectionTypeEnum + typedef ENUMERATION IfcSectionTypeEnum; + // C++ wrapper type for IfcLinearForceMeasure + typedef REAL IfcLinearForceMeasure; + // C++ wrapper type for IfcDerivedMeasureValue + typedef SELECT IfcDerivedMeasureValue; + // C++ wrapper type for IfcRailingTypeEnum + typedef ENUMERATION IfcRailingTypeEnum; + // C++ wrapper type for IfcSIUnitName + typedef ENUMERATION IfcSIUnitName; + // C++ wrapper type for IfcMeasureValue + typedef SELECT IfcMeasureValue; + // C++ wrapper type for IfcRoofTypeEnum + typedef ENUMERATION IfcRoofTypeEnum; + // C++ wrapper type for IfcText + typedef STRING IfcText; + // C++ wrapper type for IfcLinearVelocityMeasure + typedef REAL IfcLinearVelocityMeasure; + // C++ wrapper type for IfcBoolean + typedef BOOLEAN IfcBoolean; // ****************************************************************************** // IFC Entities // ****************************************************************************** + struct IfcRepresentationItem; + struct IfcTopologicalRepresentationItem; + struct IfcEdge; + typedef NotImplemented IfcExternalReference; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentReference; // (not currently used by Assimp) + struct IfcGeometricRepresentationItem; + struct IfcCompositeCurveSegment; struct IfcRoot; struct IfcObjectDefinition; + struct IfcObject; + struct IfcProduct; + struct IfcStructuralItem; + struct IfcStructuralConnection; + struct IfcStructuralSurfaceConnection; + typedef NotImplemented IfcApprovalActorRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcVertexBasedTextureMap; // (not currently used by Assimp) + struct IfcPresentationStyleAssignment; + struct IfcElement; + struct IfcBuildingElement; + struct IfcCurtainWall; + typedef NotImplemented IfcTextureCoordinate; // (not currently used by Assimp) + typedef NotImplemented IfcTextureCoordinateGenerator; // (not currently used by Assimp) + struct IfcProxy; + typedef NotImplemented IfcPreDefinedItem; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedTextFont; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleFontModel; // (not currently used by Assimp) + struct IfcStyledItem; + struct IfcAnnotationOccurrence; + struct IfcAnnotationSymbolOccurrence; + struct IfcTerminatorSymbol; + struct IfcDimensionCurveTerminator; struct IfcTypeObject; struct IfcTypeProduct; struct IfcElementType; struct IfcDistributionElementType; - struct IfcDistributionFlowElementType; - struct IfcFlowControllerType; - struct IfcElectricTimeControlType; - struct IfcRepresentation; - struct IfcShapeModel; - struct IfcTopologyRepresentation; - struct IfcRelationship; - struct IfcRelConnects; - typedef NotImplemented IfcRelCoversSpaces; // (not currently used by Assimp) - struct IfcFlowFittingType; - struct IfcCableCarrierFittingType; - typedef NotImplemented IfcStructuralConnectionCondition; // (not currently used by Assimp) - typedef NotImplemented IfcSlippageConnectionCondition; // (not currently used by Assimp) - struct IfcEnergyConversionDeviceType; - struct IfcCoilType; - struct IfcObject; - struct IfcControl; - struct IfcPerformanceHistory; - struct IfcRepresentationItem; - struct IfcGeometricRepresentationItem; - struct IfcTextLiteral; - struct IfcTextLiteralWithExtent; - struct IfcProductRepresentation; - struct IfcProduct; - struct IfcElement; - struct IfcDistributionElement; - struct IfcDistributionFlowElement; - struct IfcCurve; - struct IfcBoundedCurve; - struct IfcCompositeCurve; - struct Ifc2DCompositeCurve; - typedef NotImplemented IfcBoundaryCondition; // (not currently used by Assimp) - typedef NotImplemented IfcBoundaryFaceCondition; // (not currently used by Assimp) - struct IfcCartesianTransformationOperator; - struct IfcCartesianTransformationOperator3D; - struct IfcProperty; - struct IfcSimpleProperty; - struct IfcPropertyEnumeratedValue; - typedef NotImplemented IfcPresentationLayerAssignment; // (not currently used by Assimp) - typedef NotImplemented IfcPresentationLayerWithStyle; // (not currently used by Assimp) - struct IfcBuildingElementType; - struct IfcStairFlightType; - struct IfcSurface; - struct IfcElementarySurface; - struct IfcPlane; - struct IfcBooleanResult; - struct IfcBooleanClippingResult; - struct IfcSolidModel; - struct IfcManifoldSolidBrep; - typedef NotImplemented IfcProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcGeneralProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralProfileProperties; // (not currently used by Assimp) - struct IfcFlowTerminalType; - struct IfcStackTerminalType; - struct IfcStructuralItem; - struct IfcStructuralConnection; - struct IfcStructuralCurveConnection; - struct IfcJunctionBoxType; - typedef NotImplemented IfcRelAssociates; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesConstraint; // (not currently used by Assimp) - struct IfcPropertyDefinition; - struct IfcPropertySetDefinition; - typedef NotImplemented IfcDoorPanelProperties; // (not currently used by Assimp) - typedef NotImplemented IfcConstraintRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcSpaceThermalLoadProperties; // (not currently used by Assimp) - typedef NotImplemented IfcLibraryInformation; // (not currently used by Assimp) - struct IfcProcess; - struct IfcTask; - typedef NotImplemented IfcAppliedValue; // (not currently used by Assimp) - typedef NotImplemented IfcEnvironmentalImpactValue; // (not currently used by Assimp) - struct IfcRelFillsElement; - struct IfcProcedure; - typedef NotImplemented IfcStructuralLoad; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadStatic; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleDisplacement; // (not currently used by Assimp) - struct IfcProxy; - typedef NotImplemented IfcCurveStyleFont; // (not currently used by Assimp) - struct IfcResource; - struct IfcConstructionResource; - struct IfcSubContractResource; - typedef NotImplemented IfcCalendarDate; // (not currently used by Assimp) - typedef NotImplemented IfcDocumentElectronicFormat; // (not currently used by Assimp) - struct IfcRelContainedInSpatialStructure; - typedef NotImplemented IfcMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcProductsOfCombustionProperties; // (not currently used by Assimp) - struct IfcTopologicalRepresentationItem; - struct IfcEdge; - struct IfcEdgeCurve; - struct IfcPlateType; - struct IfcObjectPlacement; - struct IfcGridPlacement; - struct IfcFireSuppressionTerminalType; - typedef NotImplemented IfcMechanicalMaterialProperties; // (not currently used by Assimp) - struct IfcFlowStorageDevice; - typedef NotImplemented IfcPerson; // (not currently used by Assimp) - struct IfcSweptSurface; - struct IfcSurfaceOfRevolution; - struct IfcOrientedEdge; - typedef NotImplemented IfcOwnerHistory; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssigns; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsToActor; // (not currently used by Assimp) - struct IfcDirection; - typedef NotImplemented IfcReinforcementBarProperties; // (not currently used by Assimp) - struct IfcProfileDef; - struct IfcParameterizedProfileDef; - struct IfcCShapeProfileDef; struct IfcFeatureElement; struct IfcFeatureElementSubtraction; - struct IfcEdgeFeature; - struct IfcChamferEdgeFeature; - struct IfcBuildingElement; - struct IfcColumn; - struct IfcPropertyReferenceValue; - typedef NotImplemented IfcMaterialClassificationRelationship; // (not currently used by Assimp) - struct IfcElectricMotorType; - struct IfcSpatialStructureElementType; - struct IfcSpaceType; - typedef NotImplemented IfcExternalReference; // (not currently used by Assimp) - typedef NotImplemented IfcExternallyDefinedHatchStyle; // (not currently used by Assimp) - struct IfcColumnType; - struct IfcCraneRailAShapeProfileDef; - struct IfcCondenserType; - typedef NotImplemented IfcRelConnectsElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelConnectsWithRealizingElements; // (not currently used by Assimp) - struct IfcCircleProfileDef; - struct IfcCircleHollowProfileDef; - typedef NotImplemented IfcOrganizationRelationship; // (not currently used by Assimp) - struct IfcPlacement; - struct IfcAxis2Placement3D; + struct IfcOpeningElement; struct IfcPresentationStyle; - typedef NotImplemented IfcCurveStyle; // (not currently used by Assimp) - struct IfcEquipmentElement; - struct IfcCompositeCurveSegment; - struct IfcRectangleProfileDef; - typedef NotImplemented IfcPhysicalQuantity; // (not currently used by Assimp) - typedef NotImplemented IfcPhysicalComplexQuantity; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesLibrary; // (not currently used by Assimp) - typedef NotImplemented IfcRelSequence; // (not currently used by Assimp) - struct IfcBuildingElementProxy; - struct IfcDistributionControlElementType; - struct IfcFlowInstrumentType; - struct IfcDraughtingCallout; - struct IfcDimensionCurveDirectedCallout; - struct IfcLinearDimension; - struct IfcElementAssembly; - typedef NotImplemented IfcDraughtingCalloutRelationship; // (not currently used by Assimp) - struct IfcCsgPrimitive3D; - struct IfcRightCircularCone; - typedef NotImplemented IfcExternallyDefinedSurfaceStyle; // (not currently used by Assimp) - struct IfcProjectOrder; - typedef NotImplemented IfcPropertyConstraintRelationship; // (not currently used by Assimp) - struct IfcLShapeProfileDef; - struct IfcAngularDimension; - typedef NotImplemented IfcTextStyleForDefinedFont; // (not currently used by Assimp) - struct IfcLocalPlacement; - struct IfcSweptAreaSolid; - struct IfcRevolvedAreaSolid; - struct IfcStructuralSurfaceConnection; - struct IfcRadiusDimension; - struct IfcSweptDiskSolid; - struct IfcHalfSpaceSolid; - struct IfcPolygonalBoundedHalfSpace; - struct IfcTimeSeriesSchedule; - typedef NotImplemented IfcDimensionCalloutRelationship; // (not currently used by Assimp) - struct IfcCooledBeamType; - struct IfcProject; - typedef NotImplemented IfcApprovalRelationship; // (not currently used by Assimp) - struct IfcEvaporatorType; - struct IfcLaborResource; - typedef NotImplemented IfcStructuralLoadSingleDisplacementDistortion; // (not currently used by Assimp) - struct IfcPropertyBoundedValue; - struct IfcRampFlightType; - struct IfcMember; - typedef NotImplemented IfcStructuralLoadPlanarForce; // (not currently used by Assimp) - struct IfcTubeBundleType; - struct IfcValveType; - typedef NotImplemented IfcExternallyDefinedTextFont; // (not currently used by Assimp) - struct IfcTrimmedCurve; - struct IfcRelDefines; - struct IfcRelDefinesByProperties; - typedef NotImplemented IfcRelAssignsToControl; // (not currently used by Assimp) - struct IfcActor; - struct IfcOccupant; - struct IfcHumidifierType; - struct IfcArbitraryOpenProfileDef; - typedef NotImplemented IfcRelAssignsToProjectOrder; // (not currently used by Assimp) - struct IfcPermit; - struct IfcOffsetCurve3D; - struct IfcLightSource; - struct IfcLightSourcePositional; - typedef NotImplemented IfcSurfaceTexture; // (not currently used by Assimp) - typedef NotImplemented IfcBlobTexture; // (not currently used by Assimp) - struct IfcCompositeProfileDef; - typedef NotImplemented IfcDocumentInformation; // (not currently used by Assimp) - typedef NotImplemented IfcSurfaceStyleLighting; // (not currently used by Assimp) - typedef NotImplemented IfcPhysicalSimpleQuantity; // (not currently used by Assimp) - typedef NotImplemented IfcQuantityArea; // (not currently used by Assimp) - typedef NotImplemented IfcTimeSeries; // (not currently used by Assimp) - typedef NotImplemented IfcClassificationNotation; // (not currently used by Assimp) - struct IfcRamp; - typedef NotImplemented IfcPreDefinedItem; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedCurveFont; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedColour; // (not currently used by Assimp) - typedef NotImplemented IfcCurrencyRelationship; // (not currently used by Assimp) - struct IfcFlowMovingDevice; - struct IfcSpaceHeaterType; - struct IfcLampType; - struct IfcBuildingElementComponent; - struct IfcReinforcingElement; - struct IfcReinforcingBar; - struct IfcElectricHeaterType; - struct IfcTShapeProfileDef; - typedef NotImplemented IfcConstraint; // (not currently used by Assimp) - typedef NotImplemented IfcObjective; // (not currently used by Assimp) - struct IfcStructuralActivity; - struct IfcStructuralAction; - typedef NotImplemented IfcTextureCoordinate; // (not currently used by Assimp) - typedef NotImplemented IfcTextureMap; // (not currently used by Assimp) - typedef NotImplemented IfcMonetaryUnit; // (not currently used by Assimp) - typedef NotImplemented IfcQuantityTime; // (not currently used by Assimp) - typedef NotImplemented IfcTableRow; // (not currently used by Assimp) - typedef NotImplemented IfcLightDistributionData; // (not currently used by Assimp) - struct IfcDuctFittingType; - struct IfcCartesianTransformationOperator2D; - struct IfcCartesianTransformationOperator2DnonUniform; - typedef NotImplemented IfcClassificationNotationFacet; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesApproval; // (not currently used by Assimp) - typedef NotImplemented IfcDraughtingPreDefinedCurveFont; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleForce; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleForceWarping; // (not currently used by Assimp) - typedef NotImplemented IfcCurveStyleFontAndScaling; // (not currently used by Assimp) - struct IfcVirtualElement; - struct IfcRightCircularCylinder; - struct IfcOutletType; - struct IfcRelDecomposes; - typedef NotImplemented IfcRelNests; // (not currently used by Assimp) - struct IfcCovering; - typedef NotImplemented IfcExternallyDefinedSymbol; // (not currently used by Assimp) - typedef NotImplemented IfcIrregularTimeSeries; // (not currently used by Assimp) - struct IfcPolyline; - struct IfcPath; - struct IfcElementComponent; - struct IfcFastener; - struct IfcMappedItem; - typedef NotImplemented IfcMetric; // (not currently used by Assimp) - typedef NotImplemented IfcDocumentReference; // (not currently used by Assimp) - typedef NotImplemented IfcSectionProperties; // (not currently used by Assimp) - struct IfcRectangularPyramid; - typedef NotImplemented IfcRelReferencedInSpatialStructure; // (not currently used by Assimp) - struct IfcCrewResource; - struct IfcNamedUnit; - struct IfcContextDependentUnit; - struct IfcUnitaryEquipmentType; - struct IfcRoof; - typedef NotImplemented IfcRelAssignsTasks; // (not currently used by Assimp) - struct IfcStructuralMember; - typedef NotImplemented IfcRelConnectsPorts; // (not currently used by Assimp) - struct IfcStyleModel; - struct IfcStyledRepresentation; - struct IfcSpatialStructureElement; - struct IfcBuilding; - struct IfcConnectedFaceSet; - struct IfcOpenShell; - struct IfcFacetedBrep; - typedef NotImplemented IfcLocalTime; // (not currently used by Assimp) - typedef NotImplemented IfcMechanicalConcreteMaterialProperties; // (not currently used by Assimp) - struct IfcConic; - struct IfcCoveringType; - struct IfcRoundedRectangleProfileDef; - struct IfcAirTerminalType; - struct IfcFlowMovingDeviceType; - struct IfcCompressorType; - typedef NotImplemented IfcWindowPanelProperties; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedSymbol; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedTerminatorSymbol; // (not currently used by Assimp) - struct IfcIShapeProfileDef; - struct IfcAsymmetricIShapeProfileDef; - struct IfcControllerType; - struct IfcRailing; - struct IfcGroup; - struct IfcAsset; - struct IfcMaterialDefinitionRepresentation; - typedef NotImplemented IfcCurveStyleFontPattern; // (not currently used by Assimp) - typedef NotImplemented IfcApprovalPropertyRelationship; // (not currently used by Assimp) - struct IfcRailingType; - struct IfcWall; - typedef NotImplemented IfcClassificationItem; // (not currently used by Assimp) - struct IfcStructuralPointConnection; - typedef NotImplemented IfcConnectionGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcConnectionPointGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcTimeSeriesValue; // (not currently used by Assimp) - struct IfcPropertyListValue; - struct IfcFurnitureStandard; - typedef NotImplemented IfcRelSchedulesCostItems; // (not currently used by Assimp) - struct IfcElectricGeneratorType; - struct IfcDoor; - struct IfcStyledItem; - struct IfcAnnotationOccurrence; - struct IfcAnnotationSymbolOccurrence; - struct IfcArbitraryClosedProfileDef; - struct IfcArbitraryProfileDefWithVoids; - struct IfcLine; - typedef NotImplemented IfcMaterialLayerSet; // (not currently used by Assimp) - struct IfcFlowSegmentType; - struct IfcAirTerminalBoxType; - typedef NotImplemented IfcRelConnectsStructuralMember; // (not currently used by Assimp) - struct IfcPropertySingleValue; - struct IfcAlarmType; - struct IfcEllipseProfileDef; - struct IfcStair; - typedef NotImplemented IfcPreDefinedTextFont; // (not currently used by Assimp) - typedef NotImplemented IfcTextStyleFontModel; // (not currently used by Assimp) - struct IfcSurfaceStyleShading; - struct IfcPumpType; - struct IfcDefinedSymbol; - typedef NotImplemented IfcClassificationItemRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcGeneralMaterialProperties; // (not currently used by Assimp) - struct IfcElementComponentType; - struct IfcFastenerType; - struct IfcMechanicalFastenerType; - typedef NotImplemented IfcPermeableCoveringProperties; // (not currently used by Assimp) - struct IfcFlowFitting; - typedef NotImplemented IfcApproval; // (not currently used by Assimp) - typedef NotImplemented IfcShapeAspect; // (not currently used by Assimp) - typedef NotImplemented IfcConstraintClassificationRelationship; // (not currently used by Assimp) - struct IfcLightSourceDirectional; struct IfcSurfaceStyle; - typedef NotImplemented IfcRelConnectsStructuralActivity; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesProfileProperties; // (not currently used by Assimp) - struct IfcAnnotationSurface; - typedef NotImplemented IfcFuelProperties; // (not currently used by Assimp) - struct IfcFlowController; - typedef NotImplemented IfcFailureConnectionCondition; // (not currently used by Assimp) - struct IfcBuildingStorey; - struct IfcWorkControl; - struct IfcWorkSchedule; - typedef NotImplemented IfcTable; // (not currently used by Assimp) - struct IfcDuctSegmentType; - typedef NotImplemented IfcStructuralSteelProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcDraughtingPreDefinedTextFont; // (not currently used by Assimp) - struct IfcFace; + struct IfcFillAreaStyleTileSymbolWithStyle; + typedef NotImplemented IfcApplication; // (not currently used by Assimp) + struct IfcRelationship; + struct IfcRelConnects; + typedef NotImplemented IfcRelConnectsStructuralElement; // (not currently used by Assimp) + struct IfcStructuralMember; struct IfcStructuralSurfaceMember; - struct IfcStructuralSurfaceMemberVarying; - struct IfcFaceSurface; - typedef NotImplemented IfcClassification; // (not currently used by Assimp) typedef NotImplemented IfcMaterialList; // (not currently used by Assimp) - struct IfcCostSchedule; - typedef NotImplemented IfcCoordinatedUniversalTimeOffset; // (not currently used by Assimp) - struct IfcPlanarExtent; - struct IfcPlanarBox; - typedef NotImplemented IfcFillAreaStyle; // (not currently used by Assimp) - typedef NotImplemented IfcSectionReinforcementProperties; // (not currently used by Assimp) - struct IfcColourSpecification; - struct IfcVector; - struct IfcBeam; - struct IfcColourRgb; - struct IfcStructuralPlanarAction; - struct IfcStructuralPlanarActionVarying; - struct IfcSite; - struct IfcDiscreteAccessoryType; - struct IfcVibrationIsolatorType; - struct IfcEvaporativeCoolerType; - struct IfcDistributionChamberElementType; - struct IfcFeatureElementAddition; - typedef NotImplemented IfcRelAssignsToResource; // (not currently used by Assimp) - struct IfcStructuredDimensionCallout; - struct IfcCoolingTowerType; - struct IfcCenterLineProfileDef; - typedef NotImplemented IfcTextureVertex; // (not currently used by Assimp) - typedef NotImplemented IfcOrganization; // (not currently used by Assimp) - struct IfcWindowStyle; - struct IfcLightSourceGoniometric; - typedef NotImplemented IfcRibPlateProfileProperties; // (not currently used by Assimp) - struct IfcTransformerType; - struct IfcMemberType; - struct IfcSurfaceOfLinearExtrusion; - struct IfcMotorConnectionType; - struct IfcFlowTreatmentDeviceType; - struct IfcDuctSilencerType; - typedef NotImplemented IfcWindowLiningProperties; // (not currently used by Assimp) - struct IfcFurnishingElementType; - struct IfcSystemFurnitureElementType; - typedef NotImplemented IfcConnectionPointEccentricity; // (not currently used by Assimp) - struct IfcWasteTerminalType; - struct IfcBSplineCurve; - struct IfcBezierCurve; - typedef NotImplemented IfcDocumentInformationRelationship; // (not currently used by Assimp) - struct IfcActuatorType; - struct IfcDistributionControlElement; - struct IfcAnnotation; - typedef NotImplemented IfcRelAssociatesDocument; // (not currently used by Assimp) - typedef NotImplemented IfcDoorLiningProperties; // (not currently used by Assimp) - struct IfcShellBasedSurfaceModel; - struct IfcActionRequest; - struct IfcExtrudedAreaSolid; - struct IfcSystem; - struct IfcFillAreaStyleHatching; - struct IfcRelVoidsElement; - typedef NotImplemented IfcRelConnectsPathElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelSpaceBoundary; // (not currently used by Assimp) - struct IfcSurfaceCurveSweptAreaSolid; - struct IfcCartesianTransformationOperator3DnonUniform; - typedef NotImplemented IfcRelInteractionRequirements; // (not currently used by Assimp) - struct IfcCurtainWallType; - typedef NotImplemented IfcQuantityLength; // (not currently used by Assimp) + struct IfcCartesianTransformationOperator; + struct IfcCartesianTransformationOperator3D; + struct IfcDistributionFlowElementType; + struct IfcFlowTerminalType; + struct IfcSanitaryTerminalType; + struct IfcEnergyConversionDeviceType; + struct IfcElectricGeneratorType; + struct IfcResource; + struct IfcConstructionResource; + struct IfcControl; struct IfcEquipmentStandard; - struct IfcFlowStorageDeviceType; - typedef NotImplemented IfcVirtualGridIntersection; // (not currently used by Assimp) - struct IfcDiameterDimension; - struct IfcSwitchingDeviceType; - typedef NotImplemented IfcAddress; // (not currently used by Assimp) - typedef NotImplemented IfcTelecomAddress; // (not currently used by Assimp) - struct IfcWindow; + typedef NotImplemented IfcMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcMechanicalMaterialProperties; // (not currently used by Assimp) typedef NotImplemented IfcMechanicalSteelMaterialProperties; // (not currently used by Assimp) - struct IfcFlowTreatmentDevice; - typedef NotImplemented IfcRelServicesBuildings; // (not currently used by Assimp) - struct IfcChillerType; - typedef NotImplemented IfcRelAssignsToProduct; // (not currently used by Assimp) - struct IfcRectangleHollowProfileDef; - typedef NotImplemented IfcEnergyProperties; // (not currently used by Assimp) - struct IfcBoxedHalfSpace; - struct IfcAxis2Placement2D; - struct IfcSpaceProgram; + struct IfcElectricApplianceType; + typedef NotImplemented IfcHygroscopicMaterialProperties; // (not currently used by Assimp) + struct IfcFurnitureStandard; + typedef NotImplemented IfcIrregularTimeSeriesValue; // (not currently used by Assimp) + struct IfcDefinedSymbol; + struct IfcColourSpecification; + struct IfcCurve; + struct IfcLine; + struct IfcLoop; + typedef NotImplemented IfcRelaxation; // (not currently used by Assimp) + struct IfcProperty; + struct IfcComplexProperty; + struct IfcCovering; + struct IfcBoundedCurve; + struct IfcBSplineCurve; + struct IfcNamedUnit; + struct IfcSubContractResource; + typedef NotImplemented IfcClassificationItem; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralConnectionCondition; // (not currently used by Assimp) + struct IfcObjectPlacement; + struct IfcGridPlacement; + typedef NotImplemented IfcFailureConnectionCondition; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalQuantity; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalSimpleQuantity; // (not currently used by Assimp) + struct IfcPropertyDefinition; + struct IfcPropertySetDefinition; + typedef NotImplemented IfcWindowLiningProperties; // (not currently used by Assimp) struct IfcPoint; struct IfcCartesianPoint; - struct IfcBoundedSurface; - struct IfcLoop; - struct IfcPolyLoop; - typedef NotImplemented IfcPreDefinedPointMarkerSymbol; // (not currently used by Assimp) - struct IfcTerminatorSymbol; - struct IfcDimensionCurveTerminator; - typedef NotImplemented IfcRelProjectsElement; // (not currently used by Assimp) - struct IfcTrapeziumProfileDef; - struct IfcRepresentationContext; - struct IfcGeometricRepresentationContext; - typedef NotImplemented IfcTextStyleWithBoxCharacteristics; // (not currently used by Assimp) - struct IfcCurveBoundedPlane; - typedef NotImplemented IfcQuantityCount; // (not currently used by Assimp) - typedef NotImplemented IfcTimeSeriesReferenceRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadTemperature; // (not currently used by Assimp) - struct IfcSIUnit; + struct IfcFaceBound; + typedef NotImplemented IfcBoundaryCondition; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryFaceCondition; // (not currently used by Assimp) + struct IfcEdgeCurve; + typedef NotImplemented IfcLibraryInformation; // (not currently used by Assimp) + struct IfcOneDirectionRepeatFactor; + struct IfcTwoDirectionRepeatFactor; + typedef NotImplemented IfcRelConnectsElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPathElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssigns; // (not currently used by Assimp) + typedef NotImplemented IfcPropertyConstraintRelationship; // (not currently used by Assimp) + struct IfcLightSource; + struct IfcLightSourceAmbient; + struct IfcPlacement; + struct IfcAxis1Placement; + struct IfcAnnotationSurfaceOccurrence; + struct IfcFlowControllerType; + struct IfcFlowMeterType; + struct IfcAnnotationCurveOccurrence; + typedef NotImplemented IfcLocalTime; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociates; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesApproval; // (not currently used by Assimp) + struct IfcProfileDef; + struct IfcCompositeProfileDef; + struct IfcSubedge; + struct IfcFlowStorageDeviceType; + struct IfcTankType; + typedef NotImplemented IfcRelAssignsToActor; // (not currently used by Assimp) + struct IfcBuildingElementComponent; + struct IfcBuildingElementPart; + struct IfcRepresentation; + struct IfcShapeModel; + struct IfcShapeRepresentation; + struct IfcRailing; + typedef NotImplemented IfcStructuralLoad; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadStatic; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleForce; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleForceWarping; // (not currently used by Assimp) + struct IfcStyleModel; + struct IfcStyledRepresentation; + struct IfcColourRgb; + struct IfcElementComponentType; + struct IfcDiscreteAccessoryType; + struct IfcVibrationIsolatorType; + struct IfcProcess; + struct IfcProcedure; + struct IfcFeatureElementAddition; + struct IfcEdgeFeature; + struct IfcTrimmedCurve; + typedef NotImplemented IfcFillAreaStyle; // (not currently used by Assimp) + typedef NotImplemented IfcRelCoversBldgElements; // (not currently used by Assimp) + struct IfcTextLiteral; + struct IfcParameterizedProfileDef; + struct IfcCraneRailAShapeProfileDef; + struct IfcElementComponent; + struct IfcCsgPrimitive3D; + struct IfcBlock; + struct IfcBuildingElementType; + struct IfcRailingType; + struct IfcStructuralPointConnection; + struct IfcFlowMovingDeviceType; + struct IfcPumpType; + struct IfcStructuralCurveMember; + struct IfcStructuralCurveMemberVarying; + struct IfcReinforcingElement; + struct IfcReinforcingMesh; + struct IfcPlanarExtent; + struct IfcPlanarBox; + struct IfcCooledBeamType; + typedef NotImplemented IfcQuantityArea; // (not currently used by Assimp) + typedef NotImplemented IfcDraughtingCalloutRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcDimensionCalloutRelationship; // (not currently used by Assimp) + struct IfcProjectOrderRecord; + struct IfcPointOnSurface; + struct IfcPointOnCurve; + struct IfcRelContainedInSpatialStructure; + struct IfcSimpleProperty; + struct IfcPropertyListValue; + struct IfcSpatialStructureElement; + struct IfcBuildingStorey; + struct IfcUnitaryEquipmentType; + struct IfcOutletType; + struct IfcFastenerType; + struct IfcGroup; + struct IfcSystem; + struct IfcStructuralAnalysisModel; + struct IfcSlabType; + typedef NotImplemented IfcRelAssignsToProduct; // (not currently used by Assimp) + typedef NotImplemented IfcClassification; // (not currently used by Assimp) + struct IfcDistributionElement; + struct IfcDistributionFlowElement; + struct IfcTShapeProfileDef; + struct IfcPolyline; + typedef NotImplemented IfcQuantityVolume; // (not currently used by Assimp) + struct IfcDraughtingCallout; + struct IfcFace; + typedef NotImplemented IfcAddress; // (not currently used by Assimp) + struct IfcStructuralSurfaceMemberVarying; + struct IfcMotorConnectionType; + struct IfcAirToAirHeatRecoveryType; + struct IfcPlateType; + struct IfcSolidModel; + struct IfcCsgSolid; + struct IfcMechanicalFastenerType; + struct IfcRelDecomposes; + struct IfcElectricalElement; + struct IfcColumnType; + struct IfcRectangularPyramid; + struct IfcActionRequest; + struct IfcStructuralActivity; struct IfcStructuralReaction; struct IfcStructuralPointReaction; - struct IfcAxis1Placement; - typedef NotImplemented IfcReinforcementDefinitionProperties; // (not currently used by Assimp) - struct IfcElectricApplianceType; - struct IfcSensorType; - struct IfcFurnishingElement; - struct IfcProtectiveDeviceType; - struct IfcZShapeProfileDef; - struct IfcScheduleTimeControl; - struct IfcRepresentationMap; - struct IfcClosedShell; - struct IfcBuildingElementPart; - typedef NotImplemented IfcDraughtingPreDefinedColour; // (not currently used by Assimp) - typedef NotImplemented IfcPostalAddress; // (not currently used by Assimp) - struct IfcBlock; - struct IfcLightFixtureType; - struct IfcOpeningElement; - struct IfcLightSourceSpot; - struct IfcTendonAnchor; - typedef NotImplemented IfcSurfaceStyleRefraction; // (not currently used by Assimp) - struct IfcElectricFlowStorageDeviceType; - typedef NotImplemented IfcFluidFlowProperties; // (not currently used by Assimp) - struct IfcSphere; - typedef NotImplemented IfcRelAssociatesAppliedValue; // (not currently used by Assimp) - struct IfcDamperType; - struct IfcProjectOrderRecord; - typedef NotImplemented IfcDimensionalExponents; // (not currently used by Assimp) - typedef NotImplemented IfcRelDefinesByType; // (not currently used by Assimp) - struct IfcDistributionChamberElement; - struct IfcMechanicalFastener; - typedef NotImplemented IfcQuantityVolume; // (not currently used by Assimp) - struct IfcRectangularTrimmedSurface; - typedef NotImplemented IfcDateAndTime; // (not currently used by Assimp) - struct IfcZone; - struct IfcFanType; - struct IfcGeometricSet; - struct IfcFillAreaStyleTiles; - typedef NotImplemented IfcPixelTexture; // (not currently used by Assimp) - struct IfcCableSegmentType; - struct IfcRelOverridesProperties; - struct IfcMeasureWithUnit; - struct IfcSlabType; - struct IfcServiceLife; - struct IfcFurnitureType; - struct IfcCostItem; - struct IfcReinforcingMesh; - typedef NotImplemented IfcExtendedMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcActorRole; // (not currently used by Assimp) - struct IfcFacetedBrepWithVoids; - typedef NotImplemented IfcConstraintAggregationRelationship; // (not currently used by Assimp) - struct IfcGasTerminalType; - typedef NotImplemented IfcRelConnectsWithEccentricity; // (not currently used by Assimp) - struct IfcPile; - struct IfcFillAreaStyleTileSymbolWithStyle; - typedef NotImplemented IfcElectricalBaseProperties; // (not currently used by Assimp) - struct IfcConstructionMaterialResource; - struct IfcAnnotationCurveOccurrence; - struct IfcDimensionCurve; - struct IfcGeometricCurveSet; - struct IfcRelAggregates; - struct IfcFaceBasedSurfaceModel; - struct IfcEnergyConversionDevice; - struct IfcRampFlight; - typedef NotImplemented IfcPropertyEnumeration; // (not currently used by Assimp) - struct IfcVertexLoop; - struct IfcPlate; - struct IfcUShapeProfileDef; - typedef NotImplemented IfcHygroscopicMaterialProperties; // (not currently used by Assimp) - struct IfcFaceBound; - struct IfcFaceOuterBound; - struct IfcOneDirectionRepeatFactor; - struct IfcBoilerType; - struct IfcConstructionEquipmentResource; - struct IfcComplexProperty; - struct IfcFooting; - typedef NotImplemented IfcOpticalMaterialProperties; // (not currently used by Assimp) - struct IfcConstructionProductResource; - typedef NotImplemented IfcBoundaryEdgeCondition; // (not currently used by Assimp) - struct IfcDerivedProfileDef; - struct IfcPropertyTableValue; - typedef NotImplemented IfcRelAssignsToGroup; // (not currently used by Assimp) - struct IfcFlowMeterType; - struct IfcDoorStyle; - typedef NotImplemented IfcRelConnectsPortToElement; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesClassification; // (not currently used by Assimp) - struct IfcUnitAssignment; - struct IfcFlowTerminal; - struct IfcCraneRailFShapeProfileDef; - struct IfcFlowSegment; - struct IfcElementQuantity; - typedef NotImplemented IfcBoundaryNodeCondition; // (not currently used by Assimp) - typedef NotImplemented IfcBoundaryNodeConditionWarping; // (not currently used by Assimp) - struct IfcCurtainWall; - struct IfcDiscreteAccessory; - struct IfcGrid; - struct IfcSanitaryTerminalType; - typedef NotImplemented IfcSoundProperties; // (not currently used by Assimp) - struct IfcSubedge; - typedef NotImplemented IfcTextStyleTextModel; // (not currently used by Assimp) - struct IfcFilterType; - typedef NotImplemented IfcSymbolStyle; // (not currently used by Assimp) - struct IfcTendon; - typedef NotImplemented IfcDimensionPair; // (not currently used by Assimp) - struct IfcStructuralLoadGroup; - struct IfcPresentationStyleAssignment; - typedef NotImplemented IfcRegularTimeSeries; // (not currently used by Assimp) - struct IfcStructuralCurveMember; - struct IfcLightSourceAmbient; - struct IfcCondition; - struct IfcPort; - struct IfcSpace; - struct IfcHeatExchangerType; - struct IfcTankType; - struct IfcInventory; - typedef NotImplemented IfcTextStyle; // (not currently used by Assimp) - typedef NotImplemented IfcAppliedValueRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcSoundValue; // (not currently used by Assimp) - struct IfcTransportElementType; - struct IfcAirToAirHeatRecoveryType; - struct IfcStairFlight; - struct IfcElectricalElement; - typedef NotImplemented IfcLightIntensityDistribution; // (not currently used by Assimp) - typedef NotImplemented IfcClassificationReference; // (not currently used by Assimp) - struct IfcSurfaceStyleWithTextures; - struct IfcBoundingBox; - typedef NotImplemented IfcApplication; // (not currently used by Assimp) - struct IfcWallType; - struct IfcMove; - struct IfcCircle; - struct IfcOffsetCurve2D; - typedef NotImplemented IfcMaterialLayerSetUsage; // (not currently used by Assimp) - struct IfcPointOnCurve; - struct IfcStructuralResultGroup; - struct IfcSectionedSpine; - struct IfcSlab; - typedef NotImplemented IfcConnectionPortGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcQuantityWeight; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesMaterial; // (not currently used by Assimp) - struct IfcVertex; - struct IfcVertexPoint; - typedef NotImplemented IfcReferencesValueDocument; // (not currently used by Assimp) - typedef NotImplemented IfcPersonAndOrganization; // (not currently used by Assimp) - typedef NotImplemented IfcRelFlowControlElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsToProcess; // (not currently used by Assimp) + typedef NotImplemented IfcPropertyDependencyRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedTerminatorSymbol; // (not currently used by Assimp) + struct IfcStructuralAction; struct IfcStructuralLinearAction; struct IfcStructuralLinearActionVarying; - struct IfcBuildingElementProxyType; - struct IfcProjectionElement; - typedef NotImplemented IfcDerivedUnit; // (not currently used by Assimp) - typedef NotImplemented IfcApprovalActorRelationship; // (not currently used by Assimp) - struct IfcConversionBasedUnit; - typedef NotImplemented IfcMaterial; // (not currently used by Assimp) - struct IfcGeometricRepresentationSubContext; - struct IfcAnnotationSurfaceOccurrence; - typedef NotImplemented IfcPreDefinedDimensionSymbol; // (not currently used by Assimp) - struct IfcRoundedEdgeFeature; - typedef NotImplemented IfcRelCoversBldgElements; // (not currently used by Assimp) - struct IfcElectricDistributionPoint; - struct IfcCableCarrierSegmentType; - typedef NotImplemented IfcStructuralLoadLinearForce; // (not currently used by Assimp) - typedef NotImplemented IfcGridAxis; // (not currently used by Assimp) - typedef NotImplemented IfcIrregularTimeSeriesValue; // (not currently used by Assimp) - struct IfcWallStandardCase; - typedef NotImplemented IfcRelOccupiesSpaces; // (not currently used by Assimp) - typedef NotImplemented IfcDerivedUnitElement; // (not currently used by Assimp) - struct IfcCsgSolid; + struct IfcCrewResource; + struct IfcChamferEdgeFeature; + typedef NotImplemented IfcPreDefinedColour; // (not currently used by Assimp) + typedef NotImplemented IfcDraughtingPreDefinedColour; // (not currently used by Assimp) + typedef NotImplemented IfcConstraintRelationship; // (not currently used by Assimp) + struct IfcCompositeCurve; + struct Ifc2DCompositeCurve; + struct IfcGrid; + struct IfcTendon; + struct IfcRectangleProfileDef; + struct IfcRoundedRectangleProfileDef; struct IfcBeamType; - struct IfcAnnotationFillArea; - typedef NotImplemented IfcRelaxation; // (not currently used by Assimp) - struct IfcStructuralCurveMemberVarying; - struct IfcPointOnSurface; - typedef NotImplemented IfcPropertyDependencyRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcVertexBasedTextureMap; // (not currently used by Assimp) - struct IfcOrderAction; - typedef NotImplemented IfcLibraryReference; // (not currently used by Assimp) - struct IfcEdgeLoop; - struct IfcAnnotationFillAreaOccurrence; - typedef NotImplemented IfcRelConnectsStructuralElement; // (not currently used by Assimp) - struct IfcWorkPlan; - struct IfcEllipse; - struct IfcProductDefinitionShape; - struct IfcProjectionCurve; - struct IfcElectricalCircuit; - struct IfcRationalBezierCurve; - struct IfcStructuralPointAction; - typedef NotImplemented IfcServiceLifeFactor; // (not currently used by Assimp) - typedef NotImplemented IfcThermalMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcTextureCoordinateGenerator; // (not currently used by Assimp) - struct IfcPipeSegmentType; - struct IfcTwoDirectionRepeatFactor; - struct IfcShapeRepresentation; - struct IfcPropertySet; - struct IfcSurfaceStyleRendering; - struct IfcDistributionPort; + struct IfcLampType; + typedef NotImplemented IfcTimeSeriesReferenceRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcSurfaceTexture; // (not currently used by Assimp) typedef NotImplemented IfcImageTexture; // (not currently used by Assimp) - struct IfcPipeFittingType; + struct IfcLightSourceGoniometric; + struct IfcProductRepresentation; + struct IfcMaterialDefinitionRepresentation; + struct IfcPermit; + typedef NotImplemented IfcGeneralMaterialProperties; // (not currently used by Assimp) + struct IfcContextDependentUnit; + struct IfcFlowMovingDevice; + struct IfcColumn; + typedef NotImplemented IfcRelAssignsToControl; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToProjectOrder; // (not currently used by Assimp) + struct IfcDistributionControlElement; + struct IfcProtectiveDeviceType; + typedef NotImplemented IfcTextureMap; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToResource; // (not currently used by Assimp) + struct IfcFlowSegment; + struct IfcCompressorType; + typedef NotImplemented IfcProfileProperties; // (not currently used by Assimp) + typedef NotImplemented IfcGeneralProfileProperties; // (not currently used by Assimp) + struct IfcCShapeProfileDef; + typedef NotImplemented IfcAppliedValue; // (not currently used by Assimp) + struct IfcTrapeziumProfileDef; + struct IfcRelDefines; + typedef NotImplemented IfcRelDefinesByType; // (not currently used by Assimp) + struct IfcTask; + struct IfcMove; + typedef NotImplemented IfcBoundaryEdgeCondition; // (not currently used by Assimp) + struct IfcLightSourceDirectional; + struct IfcCondenserType; + typedef NotImplemented IfcTableRow; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesAppliedValue; // (not currently used by Assimp) + struct IfcConic; + struct IfcEllipse; + typedef NotImplemented IfcRelAssociatesClassification; // (not currently used by Assimp) + typedef NotImplemented IfcProductsOfCombustionProperties; // (not currently used by Assimp) + struct IfcDoorStyle; + struct IfcDistributionControlElementType; + struct IfcSensorType; + struct IfcAnnotationFillAreaOccurrence; + struct IfcWall; + typedef NotImplemented IfcRelProjectsElement; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityWeight; // (not currently used by Assimp) + struct IfcFurnishingElementType; + struct IfcFurnitureType; + struct IfcControllerType; + struct IfcFlowFitting; + typedef NotImplemented IfcRelConnectsStructuralActivity; // (not currently used by Assimp) + typedef NotImplemented IfcRelNests; // (not currently used by Assimp) + typedef NotImplemented IfcCalendarDate; // (not currently used by Assimp) + typedef NotImplemented IfcLightDistributionData; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalComplexQuantity; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentElectronicFormat; // (not currently used by Assimp) + struct IfcRepresentationContext; + typedef NotImplemented IfcDerivedUnitElement; // (not currently used by Assimp) + typedef NotImplemented IfcWindowPanelProperties; // (not currently used by Assimp) + struct IfcRepresentationMap; + typedef NotImplemented IfcRelConnectsStructuralMember; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialClassificationRelationship; // (not currently used by Assimp) + struct IfcDirection; + struct IfcDimensionCurveDirectedCallout; + struct IfcAngularDimension; + struct IfcWorkControl; + struct IfcWorkPlan; + struct IfcSpatialStructureElementType; + struct IfcSpaceType; + typedef NotImplemented IfcSlippageConnectionCondition; // (not currently used by Assimp) + struct IfcPort; + struct IfcDistributionPort; + struct IfcOrderAction; + typedef NotImplemented IfcDoorPanelProperties; // (not currently used by Assimp) + struct IfcBeam; + typedef NotImplemented IfcSectionReinforcementProperties; // (not currently used by Assimp) + struct IfcManifoldSolidBrep; + struct IfcFacetedBrep; + typedef NotImplemented IfcOpticalMaterialProperties; // (not currently used by Assimp) + struct IfcSurfaceStyleWithTextures; + typedef NotImplemented IfcRelConnectsWithEccentricity; // (not currently used by Assimp) + struct IfcArbitraryClosedProfileDef; + struct IfcHumidifierType; + struct IfcPolyLoop; + struct IfcFlowFittingType; + struct IfcFillAreaStyleTiles; + typedef NotImplemented IfcTextureVertex; // (not currently used by Assimp) + struct IfcVertex; + struct IfcAnnotationFillArea; + struct IfcPlate; + struct IfcRightCircularCone; + struct IfcSurface; + struct IfcBoundedSurface; + typedef NotImplemented IfcLibraryReference; // (not currently used by Assimp) + typedef NotImplemented IfcConstraintClassificationRelationship; // (not currently used by Assimp) + struct IfcStructuralLoadGroup; + struct IfcGeometricRepresentationContext; + struct IfcTubeBundleType; + struct IfcStructuralPlanarAction; + typedef NotImplemented IfcBoundaryNodeCondition; // (not currently used by Assimp) + struct IfcHeatExchangerType; + typedef NotImplemented IfcRelSchedulesCostItems; // (not currently used by Assimp) + struct IfcFaceOuterBound; + struct IfcSphere; + struct IfcLightSourcePositional; + struct IfcStructuralPointAction; + struct IfcFlowSegmentType; + struct IfcFireSuppressionTerminalType; + struct IfcPropertySingleValue; + typedef NotImplemented IfcSpaceThermalLoadProperties; // (not currently used by Assimp) + typedef NotImplemented IfcPerson; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleForDefinedFont; // (not currently used by Assimp) + struct IfcFaceBasedSurfaceModel; + struct IfcAxis2Placement3D; + struct IfcStructuralResultGroup; + typedef NotImplemented IfcCurveStyleFont; // (not currently used by Assimp) + struct IfcHalfSpaceSolid; + struct IfcGasTerminalType; + typedef NotImplemented IfcSoundValue; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentInformation; // (not currently used by Assimp) + struct IfcMember; + typedef NotImplemented IfcMaterialLayerSetUsage; // (not currently used by Assimp) + struct IfcPropertySet; + struct IfcCondition; + struct IfcPropertyEnumeratedValue; + typedef NotImplemented IfcTextStyle; // (not currently used by Assimp) + typedef NotImplemented IfcPermeableCoveringProperties; // (not currently used by Assimp) + typedef NotImplemented IfcLightIntensityDistribution; // (not currently used by Assimp) + struct IfcDistributionChamberElementType; + struct IfcTextLiteralWithExtent; + struct IfcFlowController; + struct IfcElectricDistributionPoint; struct IfcTransportElement; - struct IfcAnnotationTextOccurrence; - typedef NotImplemented IfcConnectionSurfaceGeometry; // (not currently used by Assimp) - struct IfcStructuralAnalysisModel; - typedef NotImplemented IfcConnectionCurveGeometry; // (not currently used by Assimp) + struct IfcAsset; + typedef NotImplemented IfcPersonAndOrganization; // (not currently used by Assimp) + struct IfcSweptAreaSolid; + struct IfcRevolvedAreaSolid; + struct IfcFlowInstrumentType; + struct IfcEnergyConversionDevice; + typedef NotImplemented IfcSoundProperties; // (not currently used by Assimp) + struct IfcSurfaceStyleShading; + struct IfcSurfaceStyleRendering; + struct IfcBoilerType; + struct IfcBuildingElementProxy; + struct IfcLocalPlacement; + struct IfcZone; + struct IfcStair; + struct IfcWallStandardCase; + struct IfcDiameterDimension; + struct IfcDuctSegmentType; + typedef NotImplemented IfcTimeSeries; // (not currently used by Assimp) + typedef NotImplemented IfcIrregularTimeSeries; // (not currently used by Assimp) + struct IfcJunctionBoxType; + struct IfcCartesianTransformationOperator3DnonUniform; + typedef NotImplemented IfcApproval; // (not currently used by Assimp) + typedef NotImplemented IfcCurveStyleFontAndScaling; // (not currently used by Assimp) + struct IfcInventory; + typedef NotImplemented IfcQuantityLength; // (not currently used by Assimp) struct IfcConditionCriterion; - typedef NotImplemented IfcWaterProperties; // (not currently used by Assimp) - typedef NotImplemented IfcMaterialLayer; // (not currently used by Assimp) + struct IfcConnectedFaceSet; + struct IfcOpenShell; + typedef NotImplemented IfcStructuralProfileProperties; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralSteelProfileProperties; // (not currently used by Assimp) + struct IfcDoor; + struct IfcBezierCurve; + struct IfcRationalBezierCurve; + struct IfcArbitraryProfileDefWithVoids; + typedef NotImplemented IfcMaterial; // (not currently used by Assimp) + struct IfcBooleanResult; + struct IfcStackTerminalType; + typedef NotImplemented IfcPreDefinedDimensionSymbol; // (not currently used by Assimp) + struct IfcIShapeProfileDef; + struct IfcAsymmetricIShapeProfileDef; + struct IfcEquipmentElement; + typedef NotImplemented IfcClassificationReference; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedCurveFont; // (not currently used by Assimp) + typedef NotImplemented IfcShapeAspect; // (not currently used by Assimp) + typedef NotImplemented IfcClassificationNotationFacet; // (not currently used by Assimp) + typedef NotImplemented IfcDoorLiningProperties; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleDisplacement; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesMaterial; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryNodeConditionWarping; // (not currently used by Assimp) + typedef NotImplemented IfcCoordinatedUniversalTimeOffset; // (not currently used by Assimp) + struct IfcClosedShell; + typedef NotImplemented IfcMechanicalConcreteMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialLayerSet; // (not currently used by Assimp) + struct IfcEllipseProfileDef; + struct IfcPropertyBoundedValue; + struct IfcCoveringType; + typedef NotImplemented IfcRelCoversSpaces; // (not currently used by Assimp) + typedef NotImplemented IfcClassificationItemRelationship; // (not currently used by Assimp) + struct IfcActuatorType; + struct IfcOffsetCurve2D; + typedef NotImplemented IfcConnectionGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcConnectionSurfaceGeometry; // (not currently used by Assimp) + struct IfcAnnotation; + struct IfcDistributionChamberElement; + typedef NotImplemented IfcCurveStyleFontPattern; // (not currently used by Assimp) + struct IfcOffsetCurve3D; + struct IfcFooting; + struct IfcMappedItem; + typedef NotImplemented IfcPostalAddress; // (not currently used by Assimp) + typedef NotImplemented IfcRelSpaceBoundary; // (not currently used by Assimp) + struct IfcTransformerType; + struct IfcRightCircularCylinder; + struct IfcSpaceProgram; + typedef NotImplemented IfcThermalMaterialProperties; // (not currently used by Assimp) + struct IfcAnnotationSurface; + struct IfcZShapeProfileDef; + struct IfcRectangleHollowProfileDef; + struct IfcGeometricSet; + struct IfcGeometricCurveSet; + struct IfcArbitraryOpenProfileDef; + typedef NotImplemented IfcDocumentInformationRelationship; // (not currently used by Assimp) + struct IfcFacetedBrepWithVoids; + struct IfcVector; + typedef NotImplemented IfcExternallyDefinedSurfaceStyle; // (not currently used by Assimp) + struct IfcServiceLife; + struct IfcCurveBoundedPlane; + struct IfcCircle; + typedef NotImplemented IfcFuelProperties; // (not currently used by Assimp) + struct IfcVertexLoop; + typedef NotImplemented IfcServiceLifeFactor; // (not currently used by Assimp) + typedef NotImplemented IfcPropertyEnumeration; // (not currently used by Assimp) + struct IfcSurfaceCurveSweptAreaSolid; + struct IfcConstructionEquipmentResource; + struct IfcSectionedSpine; + typedef NotImplemented IfcReferencesValueDocument; // (not currently used by Assimp) + struct IfcPropertyReferenceValue; + typedef NotImplemented IfcRelServicesBuildings; // (not currently used by Assimp) + struct IfcSite; + struct IfcPerformanceHistory; + typedef NotImplemented IfcExternallyDefinedTextFont; // (not currently used by Assimp) + struct IfcPropertyTableValue; + typedef NotImplemented IfcEnvironmentalImpactValue; // (not currently used by Assimp) + typedef NotImplemented IfcCurveStyle; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesProfileProperties; // (not currently used by Assimp) + struct IfcTransportElementType; + struct IfcPolygonalBoundedHalfSpace; + typedef NotImplemented IfcConnectionPortGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcRelFlowControlElements; // (not currently used by Assimp) + typedef NotImplemented IfcApprovalPropertyRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcRelReferencedInSpatialStructure; // (not currently used by Assimp) + struct IfcAxis2Placement2D; + struct IfcFillAreaStyleHatching; + struct IfcFastener; + struct IfcScheduleTimeControl; + struct IfcElectricMotorType; + struct IfcTimeSeriesSchedule; + typedef NotImplemented IfcTable; // (not currently used by Assimp) + struct IfcPipeSegmentType; + struct IfcFlowTerminal; + typedef NotImplemented IfcReinforcementDefinitionProperties; // (not currently used by Assimp) + struct IfcWallType; + struct IfcCoilType; + typedef NotImplemented IfcStructuralLoadSingleDisplacementDistortion; // (not currently used by Assimp) + struct IfcFurnishingElement; + typedef NotImplemented IfcTextStyleWithBoxCharacteristics; // (not currently used by Assimp) + struct IfcWasteTerminalType; + struct IfcWindow; + typedef NotImplemented IfcActorRole; // (not currently used by Assimp) + struct IfcElectricFlowStorageDeviceType; + struct IfcRelAggregates; + typedef NotImplemented IfcDerivedUnit; // (not currently used by Assimp) + struct IfcRamp; + typedef NotImplemented IfcDraughtingPreDefinedCurveFont; // (not currently used by Assimp) + struct IfcLinearDimension; + struct IfcElementarySurface; + struct IfcConstructionProductResource; + struct IfcCableSegmentType; + typedef NotImplemented IfcDraughtingPreDefinedTextFont; // (not currently used by Assimp) + struct IfcPath; + typedef NotImplemented IfcTextStyleTextModel; // (not currently used by Assimp) + typedef NotImplemented IfcOrganizationRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcMonetaryUnit; // (not currently used by Assimp) + struct IfcActor; + struct IfcOccupant; + struct IfcSwitchingDeviceType; + struct IfcSweptSurface; + struct IfcSurfaceOfLinearExtrusion; + struct IfcShellBasedSurfaceModel; + typedef NotImplemented IfcSymbolStyle; // (not currently used by Assimp) + struct IfcBuilding; + struct IfcSIUnit; + struct IfcDiscreteAccessory; + typedef NotImplemented IfcPreDefinedPointMarkerSymbol; // (not currently used by Assimp) typedef NotImplemented IfcCostValue; // (not currently used by Assimp) + typedef NotImplemented IfcOwnerHistory; // (not currently used by Assimp) + struct IfcSystemFurnitureElementType; + struct IfcElementAssembly; + struct IfcCoolingTowerType; + typedef NotImplemented IfcStructuralLoadLinearForce; // (not currently used by Assimp) + typedef NotImplemented IfcPresentationLayerAssignment; // (not currently used by Assimp) + typedef NotImplemented IfcPresentationLayerWithStyle; // (not currently used by Assimp) + struct IfcLightSourceSpot; + typedef NotImplemented IfcExtendedMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcPixelTexture; // (not currently used by Assimp) + typedef NotImplemented IfcDimensionalExponents; // (not currently used by Assimp) + struct IfcEvaporatorType; + typedef NotImplemented IfcClassificationNotation; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadPlanarForce; // (not currently used by Assimp) + struct IfcSpaceHeaterType; + struct IfcElementQuantity; + typedef NotImplemented IfcCurrencyRelationship; // (not currently used by Assimp) + struct IfcRampFlight; + struct IfcConversionBasedUnit; + struct IfcExtrudedAreaSolid; + struct IfcProjectOrder; + typedef NotImplemented IfcConnectionPointGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcConnectionPointEccentricity; // (not currently used by Assimp) + typedef NotImplemented IfcConstraintAggregationRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcDimensionPair; // (not currently used by Assimp) + struct IfcBooleanClippingResult; + typedef NotImplemented IfcConstraint; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadTemperature; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesConstraint; // (not currently used by Assimp) + struct IfcReinforcingBar; + struct IfcCenterLineProfileDef; + struct IfcUShapeProfileDef; + struct IfcBoundingBox; + struct IfcWindowStyle; + typedef NotImplemented IfcBlobTexture; // (not currently used by Assimp) + struct IfcMemberType; + struct IfcLightFixtureType; + struct IfcFlowStorageDevice; + struct IfcTopologyRepresentation; + struct IfcRelDefinesByProperties; + struct IfcRelOverridesProperties; + struct IfcStairFlightType; + struct IfcCircleProfileDef; + struct IfcSweptDiskSolid; + typedef NotImplemented IfcExternallyDefinedSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcRegularTimeSeries; // (not currently used by Assimp) + struct IfcStructuralPlanarActionVarying; + struct IfcValveType; + struct IfcUnitAssignment; + typedef NotImplemented IfcConnectionCurveGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcOrganization; // (not currently used by Assimp) + struct IfcVirtualElement; + typedef NotImplemented IfcQuantityCount; // (not currently used by Assimp) + struct IfcStructuralCurveConnection; + struct IfcAirTerminalType; + struct IfcFlowTreatmentDeviceType; + struct IfcRoof; + typedef NotImplemented IfcSectionProperties; // (not currently used by Assimp) + typedef NotImplemented IfcTimeSeriesValue; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToGroup; // (not currently used by Assimp) + struct IfcElectricTimeControlType; + struct IfcPile; + struct IfcCostSchedule; + struct IfcRampFlightType; + struct IfcDerivedProfileDef; + struct IfcCostItem; + struct IfcEvaporativeCoolerType; + struct IfcChillerType; + typedef NotImplemented IfcMaterialLayer; // (not currently used by Assimp) + struct IfcBoxedHalfSpace; + struct IfcCurtainWallType; + struct IfcGeometricRepresentationSubContext; + struct IfcDimensionCurve; + struct IfcPlane; + struct IfcProjectionCurve; + struct IfcDamperType; + typedef NotImplemented IfcSurfaceStyleRefraction; // (not currently used by Assimp) + typedef NotImplemented IfcRibPlateProfileProperties; // (not currently used by Assimp) + typedef NotImplemented IfcWaterProperties; // (not currently used by Assimp) + struct IfcMechanicalFastener; + struct IfcDuctSilencerType; + typedef NotImplemented IfcRelAssociatesDocument; // (not currently used by Assimp) + typedef NotImplemented IfcReinforcementBarProperties; // (not currently used by Assimp) + struct IfcLaborResource; + struct IfcFanType; + typedef NotImplemented IfcEnergyProperties; // (not currently used by Assimp) + struct IfcProjectionElement; + typedef NotImplemented IfcRelInteractionRequirements; // (not currently used by Assimp) + struct IfcCraneRailFShapeProfileDef; + typedef NotImplemented IfcApprovalRelationship; // (not currently used by Assimp) + struct IfcProject; + struct IfcRelVoidsElement; + typedef NotImplemented IfcMetric; // (not currently used by Assimp) + struct IfcElectricalCircuit; + struct IfcLShapeProfileDef; + typedef NotImplemented IfcRelSequence; // (not currently used by Assimp) + struct IfcFlowTreatmentDevice; + struct IfcVertexPoint; + struct IfcAnnotationTextOccurrence; + struct IfcFilterType; + typedef NotImplemented IfcQuantityTime; // (not currently used by Assimp) + struct IfcEdgeLoop; + struct IfcCircleHollowProfileDef; + struct IfcAirTerminalBoxType; + struct IfcStructuredDimensionCallout; + typedef NotImplemented IfcElectricalBaseProperties; // (not currently used by Assimp) + struct IfcCableCarrierSegmentType; + typedef NotImplemented IfcAppliedValueRelationship; // (not currently used by Assimp) + struct IfcDuctFittingType; + typedef NotImplemented IfcExternallyDefinedHatchStyle; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesLibrary; // (not currently used by Assimp) + struct IfcRectangularTrimmedSurface; + struct IfcProductDefinitionShape; + struct IfcStairFlight; + struct IfcSlab; + struct IfcPipeFittingType; + struct IfcSpace; + typedef NotImplemented IfcDateAndTime; // (not currently used by Assimp) + typedef NotImplemented IfcObjective; // (not currently used by Assimp) + typedef NotImplemented IfcVirtualGridIntersection; // (not currently used by Assimp) + struct IfcBuildingElementProxyType; + typedef NotImplemented IfcRelAssignsToProcess; // (not currently used by Assimp) + struct IfcAlarmType; + struct IfcCableCarrierFittingType; + struct IfcRoundedEdgeFeature; + typedef NotImplemented IfcTelecomAddress; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPortToElement; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsTasks; // (not currently used by Assimp) + struct IfcFaceSurface; + typedef NotImplemented IfcRelOccupiesSpaces; // (not currently used by Assimp) + struct IfcCartesianTransformationOperator2D; + typedef NotImplemented IfcGridAxis; // (not currently used by Assimp) + struct IfcTendonAnchor; + typedef NotImplemented IfcFluidFlowProperties; // (not currently used by Assimp) + struct IfcWorkSchedule; + struct IfcSurfaceOfRevolution; + typedef NotImplemented IfcSurfaceStyleLighting; // (not currently used by Assimp) + struct IfcElectricHeaterType; + struct IfcMeasureWithUnit; + struct IfcOrientedEdge; + struct IfcCartesianTransformationOperator2DnonUniform; + typedef NotImplemented IfcRelConnectsWithRealizingElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPorts; // (not currently used by Assimp) + struct IfcRelFillsElement; + struct IfcConstructionMaterialResource; + struct IfcRadiusDimension; + // C++ wrapper for IfcRepresentationItem + struct IfcRepresentationItem : ObjectHelper { IfcRepresentationItem() : Object("IfcRepresentationItem") {} + + }; + + // C++ wrapper for IfcTopologicalRepresentationItem + struct IfcTopologicalRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcTopologicalRepresentationItem() : Object("IfcTopologicalRepresentationItem") {} + + }; + + // C++ wrapper for IfcEdge + struct IfcEdge : IfcTopologicalRepresentationItem, ObjectHelper { IfcEdge() : Object("IfcEdge") {} + Lazy< IfcVertex > EdgeStart; + Lazy< IfcVertex > EdgeEnd; + }; + + // C++ wrapper for IfcGeometricRepresentationItem + struct IfcGeometricRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcGeometricRepresentationItem() : Object("IfcGeometricRepresentationItem") {} + + }; + + // C++ wrapper for IfcCompositeCurveSegment + struct IfcCompositeCurveSegment : IfcGeometricRepresentationItem, ObjectHelper { IfcCompositeCurveSegment() : Object("IfcCompositeCurveSegment") {} + IfcTransitionCode::Out Transition; + BOOLEAN::Out SameSense; + Lazy< IfcCurve > ParentCurve; + }; + // C++ wrapper for IfcRoot struct IfcRoot : ObjectHelper { IfcRoot() : Object("IfcRoot") {} IfcGloballyUniqueId::Out GlobalId; @@ -1388,6 +1416,85 @@ namespace IFC { }; + // C++ wrapper for IfcObject + struct IfcObject : IfcObjectDefinition, ObjectHelper { IfcObject() : Object("IfcObject") {} + Maybe< IfcLabel::Out > ObjectType; + }; + + // C++ wrapper for IfcProduct + struct IfcProduct : IfcObject, ObjectHelper { IfcProduct() : Object("IfcProduct") {} + Maybe< Lazy< IfcObjectPlacement > > ObjectPlacement; + Maybe< Lazy< IfcProductRepresentation > > Representation; + }; + + // C++ wrapper for IfcStructuralItem + struct IfcStructuralItem : IfcProduct, ObjectHelper { IfcStructuralItem() : Object("IfcStructuralItem") {} + + }; + + // C++ wrapper for IfcStructuralConnection + struct IfcStructuralConnection : IfcStructuralItem, ObjectHelper { IfcStructuralConnection() : Object("IfcStructuralConnection") {} + Maybe< Lazy< NotImplemented > > AppliedCondition; + }; + + // C++ wrapper for IfcStructuralSurfaceConnection + struct IfcStructuralSurfaceConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralSurfaceConnection() : Object("IfcStructuralSurfaceConnection") {} + + }; + + // C++ wrapper for IfcPresentationStyleAssignment + struct IfcPresentationStyleAssignment : ObjectHelper { IfcPresentationStyleAssignment() : Object("IfcPresentationStyleAssignment") {} + ListOf< IfcPresentationStyleSelect, 1, 0 >::Out Styles; + }; + + // C++ wrapper for IfcElement + struct IfcElement : IfcProduct, ObjectHelper { IfcElement() : Object("IfcElement") {} + Maybe< IfcIdentifier::Out > Tag; + }; + + // C++ wrapper for IfcBuildingElement + struct IfcBuildingElement : IfcElement, ObjectHelper { IfcBuildingElement() : Object("IfcBuildingElement") {} + + }; + + // C++ wrapper for IfcCurtainWall + struct IfcCurtainWall : IfcBuildingElement, ObjectHelper { IfcCurtainWall() : Object("IfcCurtainWall") {} + + }; + + // C++ wrapper for IfcProxy + struct IfcProxy : IfcProduct, ObjectHelper { IfcProxy() : Object("IfcProxy") {} + IfcObjectTypeEnum::Out ProxyType; + Maybe< IfcLabel::Out > Tag; + }; + + // C++ wrapper for IfcStyledItem + struct IfcStyledItem : IfcRepresentationItem, ObjectHelper { IfcStyledItem() : Object("IfcStyledItem") {} + Maybe< Lazy< IfcRepresentationItem > > Item; + ListOf< Lazy< IfcPresentationStyleAssignment >, 1, 0 > Styles; + Maybe< IfcLabel::Out > Name; + }; + + // C++ wrapper for IfcAnnotationOccurrence + struct IfcAnnotationOccurrence : IfcStyledItem, ObjectHelper { IfcAnnotationOccurrence() : Object("IfcAnnotationOccurrence") {} + + }; + + // C++ wrapper for IfcAnnotationSymbolOccurrence + struct IfcAnnotationSymbolOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSymbolOccurrence() : Object("IfcAnnotationSymbolOccurrence") {} + + }; + + // C++ wrapper for IfcTerminatorSymbol + struct IfcTerminatorSymbol : IfcAnnotationSymbolOccurrence, ObjectHelper { IfcTerminatorSymbol() : Object("IfcTerminatorSymbol") {} + Lazy< IfcAnnotationCurveOccurrence > AnnotatedCurve; + }; + + // C++ wrapper for IfcDimensionCurveTerminator + struct IfcDimensionCurveTerminator : IfcTerminatorSymbol, ObjectHelper { IfcDimensionCurveTerminator() : Object("IfcDimensionCurveTerminator") {} + IfcDimensionExtentUsage::Out Role; + }; + // C++ wrapper for IfcTypeObject struct IfcTypeObject : IfcObjectDefinition, ObjectHelper { IfcTypeObject() : Object("IfcTypeObject") {} Maybe< IfcLabel::Out > ApplicableOccurrence; @@ -1410,37 +1517,35 @@ namespace IFC { }; - // C++ wrapper for IfcDistributionFlowElementType - struct IfcDistributionFlowElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionFlowElementType() : Object("IfcDistributionFlowElementType") {} + // C++ wrapper for IfcFeatureElement + struct IfcFeatureElement : IfcElement, ObjectHelper { IfcFeatureElement() : Object("IfcFeatureElement") {} }; - // C++ wrapper for IfcFlowControllerType - struct IfcFlowControllerType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowControllerType() : Object("IfcFlowControllerType") {} + // C++ wrapper for IfcFeatureElementSubtraction + struct IfcFeatureElementSubtraction : IfcFeatureElement, ObjectHelper { IfcFeatureElementSubtraction() : Object("IfcFeatureElementSubtraction") {} }; - // C++ wrapper for IfcElectricTimeControlType - struct IfcElectricTimeControlType : IfcFlowControllerType, ObjectHelper { IfcElectricTimeControlType() : Object("IfcElectricTimeControlType") {} - IfcElectricTimeControlTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRepresentation - struct IfcRepresentation : ObjectHelper { IfcRepresentation() : Object("IfcRepresentation") {} - Lazy< IfcRepresentationContext > ContextOfItems; - Maybe< IfcLabel::Out > RepresentationIdentifier; - Maybe< IfcLabel::Out > RepresentationType; - ListOf< Lazy< IfcRepresentationItem >, 1, 0 > Items; - }; - - // C++ wrapper for IfcShapeModel - struct IfcShapeModel : IfcRepresentation, ObjectHelper { IfcShapeModel() : Object("IfcShapeModel") {} + // C++ wrapper for IfcOpeningElement + struct IfcOpeningElement : IfcFeatureElementSubtraction, ObjectHelper { IfcOpeningElement() : Object("IfcOpeningElement") {} }; - // C++ wrapper for IfcTopologyRepresentation - struct IfcTopologyRepresentation : IfcShapeModel, ObjectHelper { IfcTopologyRepresentation() : Object("IfcTopologyRepresentation") {} + // C++ wrapper for IfcPresentationStyle + struct IfcPresentationStyle : ObjectHelper { IfcPresentationStyle() : Object("IfcPresentationStyle") {} + Maybe< IfcLabel::Out > Name; + }; + // C++ wrapper for IfcSurfaceStyle + struct IfcSurfaceStyle : IfcPresentationStyle, ObjectHelper { IfcSurfaceStyle() : Object("IfcSurfaceStyle") {} + IfcSurfaceSide::Out Side; + ListOf< IfcSurfaceStyleElementSelect, 1, 5 >::Out Styles; + }; + + // C++ wrapper for IfcFillAreaStyleTileSymbolWithStyle + struct IfcFillAreaStyleTileSymbolWithStyle : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTileSymbolWithStyle() : Object("IfcFillAreaStyleTileSymbolWithStyle") {} + Lazy< IfcAnnotationSymbolOccurrence > Symbol; }; // C++ wrapper for IfcRelationship @@ -1453,111 +1558,15 @@ namespace IFC { }; - // C++ wrapper for IfcFlowFittingType - struct IfcFlowFittingType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowFittingType() : Object("IfcFlowFittingType") {} + // C++ wrapper for IfcStructuralMember + struct IfcStructuralMember : IfcStructuralItem, ObjectHelper { IfcStructuralMember() : Object("IfcStructuralMember") {} }; - // C++ wrapper for IfcCableCarrierFittingType - struct IfcCableCarrierFittingType : IfcFlowFittingType, ObjectHelper { IfcCableCarrierFittingType() : Object("IfcCableCarrierFittingType") {} - IfcCableCarrierFittingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEnergyConversionDeviceType - struct IfcEnergyConversionDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcEnergyConversionDeviceType() : Object("IfcEnergyConversionDeviceType") {} - - }; - - // C++ wrapper for IfcCoilType - struct IfcCoilType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoilType() : Object("IfcCoilType") {} - IfcCoilTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcObject - struct IfcObject : IfcObjectDefinition, ObjectHelper { IfcObject() : Object("IfcObject") {} - Maybe< IfcLabel::Out > ObjectType; - }; - - // C++ wrapper for IfcControl - struct IfcControl : IfcObject, ObjectHelper { IfcControl() : Object("IfcControl") {} - - }; - - // C++ wrapper for IfcPerformanceHistory - struct IfcPerformanceHistory : IfcControl, ObjectHelper { IfcPerformanceHistory() : Object("IfcPerformanceHistory") {} - IfcLabel::Out LifeCyclePhase; - }; - - // C++ wrapper for IfcRepresentationItem - struct IfcRepresentationItem : ObjectHelper { IfcRepresentationItem() : Object("IfcRepresentationItem") {} - - }; - - // C++ wrapper for IfcGeometricRepresentationItem - struct IfcGeometricRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcGeometricRepresentationItem() : Object("IfcGeometricRepresentationItem") {} - - }; - - // C++ wrapper for IfcTextLiteral - struct IfcTextLiteral : IfcGeometricRepresentationItem, ObjectHelper { IfcTextLiteral() : Object("IfcTextLiteral") {} - IfcPresentableText::Out Literal; - IfcAxis2Placement::Out Placement; - IfcTextPath::Out Path; - }; - - // C++ wrapper for IfcTextLiteralWithExtent - struct IfcTextLiteralWithExtent : IfcTextLiteral, ObjectHelper { IfcTextLiteralWithExtent() : Object("IfcTextLiteralWithExtent") {} - Lazy< IfcPlanarExtent > Extent; - IfcBoxAlignment::Out BoxAlignment; - }; - - // C++ wrapper for IfcProductRepresentation - struct IfcProductRepresentation : ObjectHelper { IfcProductRepresentation() : Object("IfcProductRepresentation") {} - Maybe< IfcLabel::Out > Name; - Maybe< IfcText::Out > Description; - ListOf< Lazy< IfcRepresentation >, 1, 0 > Representations; - }; - - // C++ wrapper for IfcProduct - struct IfcProduct : IfcObject, ObjectHelper { IfcProduct() : Object("IfcProduct") {} - Maybe< Lazy< IfcObjectPlacement > > ObjectPlacement; - Maybe< Lazy< IfcProductRepresentation > > Representation; - }; - - // C++ wrapper for IfcElement - struct IfcElement : IfcProduct, ObjectHelper { IfcElement() : Object("IfcElement") {} - Maybe< IfcIdentifier::Out > Tag; - }; - - // C++ wrapper for IfcDistributionElement - struct IfcDistributionElement : IfcElement, ObjectHelper { IfcDistributionElement() : Object("IfcDistributionElement") {} - - }; - - // C++ wrapper for IfcDistributionFlowElement - struct IfcDistributionFlowElement : IfcDistributionElement, ObjectHelper { IfcDistributionFlowElement() : Object("IfcDistributionFlowElement") {} - - }; - - // C++ wrapper for IfcCurve - struct IfcCurve : IfcGeometricRepresentationItem, ObjectHelper { IfcCurve() : Object("IfcCurve") {} - - }; - - // C++ wrapper for IfcBoundedCurve - struct IfcBoundedCurve : IfcCurve, ObjectHelper { IfcBoundedCurve() : Object("IfcBoundedCurve") {} - - }; - - // C++ wrapper for IfcCompositeCurve - struct IfcCompositeCurve : IfcBoundedCurve, ObjectHelper { IfcCompositeCurve() : Object("IfcCompositeCurve") {} - ListOf< Lazy< IfcCompositeCurveSegment >, 1, 0 > Segments; - LOGICAL::Out SelfIntersect; - }; - - // C++ wrapper for Ifc2DCompositeCurve - struct Ifc2DCompositeCurve : IfcCompositeCurve, ObjectHelper { Ifc2DCompositeCurve() : Object("Ifc2DCompositeCurve") {} - + // C++ wrapper for IfcStructuralSurfaceMember + struct IfcStructuralSurfaceMember : IfcStructuralMember, ObjectHelper { IfcStructuralSurfaceMember() : Object("IfcStructuralSurfaceMember") {} + IfcStructuralSurfaceTypeEnum::Out PredefinedType; + Maybe< IfcPositiveLengthMeasure::Out > Thickness; }; // C++ wrapper for IfcCartesianTransformationOperator @@ -1573,68 +1582,9 @@ namespace IFC { Maybe< Lazy< IfcDirection > > Axis3; }; - // C++ wrapper for IfcProperty - struct IfcProperty : ObjectHelper { IfcProperty() : Object("IfcProperty") {} - IfcIdentifier::Out Name; - Maybe< IfcText::Out > Description; - }; + // C++ wrapper for IfcDistributionFlowElementType + struct IfcDistributionFlowElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionFlowElementType() : Object("IfcDistributionFlowElementType") {} - // C++ wrapper for IfcSimpleProperty - struct IfcSimpleProperty : IfcProperty, ObjectHelper { IfcSimpleProperty() : Object("IfcSimpleProperty") {} - - }; - - // C++ wrapper for IfcPropertyEnumeratedValue - struct IfcPropertyEnumeratedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyEnumeratedValue() : Object("IfcPropertyEnumeratedValue") {} - ListOf< IfcValue, 1, 0 >::Out EnumerationValues; - Maybe< Lazy< NotImplemented > > EnumerationReference; - }; - - // C++ wrapper for IfcBuildingElementType - struct IfcBuildingElementType : IfcElementType, ObjectHelper { IfcBuildingElementType() : Object("IfcBuildingElementType") {} - - }; - - // C++ wrapper for IfcStairFlightType - struct IfcStairFlightType : IfcBuildingElementType, ObjectHelper { IfcStairFlightType() : Object("IfcStairFlightType") {} - IfcStairFlightTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSurface - struct IfcSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcSurface() : Object("IfcSurface") {} - - }; - - // C++ wrapper for IfcElementarySurface - struct IfcElementarySurface : IfcSurface, ObjectHelper { IfcElementarySurface() : Object("IfcElementarySurface") {} - Lazy< IfcAxis2Placement3D > Position; - }; - - // C++ wrapper for IfcPlane - struct IfcPlane : IfcElementarySurface, ObjectHelper { IfcPlane() : Object("IfcPlane") {} - - }; - - // C++ wrapper for IfcBooleanResult - struct IfcBooleanResult : IfcGeometricRepresentationItem, ObjectHelper { IfcBooleanResult() : Object("IfcBooleanResult") {} - IfcBooleanOperator::Out Operator; - IfcBooleanOperand::Out FirstOperand; - IfcBooleanOperand::Out SecondOperand; - }; - - // C++ wrapper for IfcBooleanClippingResult - struct IfcBooleanClippingResult : IfcBooleanResult, ObjectHelper { IfcBooleanClippingResult() : Object("IfcBooleanClippingResult") {} - - }; - - // C++ wrapper for IfcSolidModel - struct IfcSolidModel : IfcGeometricRepresentationItem, ObjectHelper { IfcSolidModel() : Object("IfcSolidModel") {} - - }; - - // C++ wrapper for IfcManifoldSolidBrep - struct IfcManifoldSolidBrep : IfcSolidModel, ObjectHelper { IfcManifoldSolidBrep() : Object("IfcManifoldSolidBrep") {} - Lazy< IfcClosedShell > Outer; }; // C++ wrapper for IfcFlowTerminalType @@ -1642,72 +1592,19 @@ namespace IFC { }; - // C++ wrapper for IfcStackTerminalType - struct IfcStackTerminalType : IfcFlowTerminalType, ObjectHelper { IfcStackTerminalType() : Object("IfcStackTerminalType") {} - IfcStackTerminalTypeEnum::Out PredefinedType; + // C++ wrapper for IfcSanitaryTerminalType + struct IfcSanitaryTerminalType : IfcFlowTerminalType, ObjectHelper { IfcSanitaryTerminalType() : Object("IfcSanitaryTerminalType") {} + IfcSanitaryTerminalTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcStructuralItem - struct IfcStructuralItem : IfcProduct, ObjectHelper { IfcStructuralItem() : Object("IfcStructuralItem") {} + // C++ wrapper for IfcEnergyConversionDeviceType + struct IfcEnergyConversionDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcEnergyConversionDeviceType() : Object("IfcEnergyConversionDeviceType") {} }; - // C++ wrapper for IfcStructuralConnection - struct IfcStructuralConnection : IfcStructuralItem, ObjectHelper { IfcStructuralConnection() : Object("IfcStructuralConnection") {} - Maybe< Lazy< NotImplemented > > AppliedCondition; - }; - - // C++ wrapper for IfcStructuralCurveConnection - struct IfcStructuralCurveConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralCurveConnection() : Object("IfcStructuralCurveConnection") {} - - }; - - // C++ wrapper for IfcJunctionBoxType - struct IfcJunctionBoxType : IfcFlowFittingType, ObjectHelper { IfcJunctionBoxType() : Object("IfcJunctionBoxType") {} - IfcJunctionBoxTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPropertyDefinition - struct IfcPropertyDefinition : IfcRoot, ObjectHelper { IfcPropertyDefinition() : Object("IfcPropertyDefinition") {} - - }; - - // C++ wrapper for IfcPropertySetDefinition - struct IfcPropertySetDefinition : IfcPropertyDefinition, ObjectHelper { IfcPropertySetDefinition() : Object("IfcPropertySetDefinition") {} - - }; - - // C++ wrapper for IfcProcess - struct IfcProcess : IfcObject, ObjectHelper { IfcProcess() : Object("IfcProcess") {} - - }; - - // C++ wrapper for IfcTask - struct IfcTask : IfcProcess, ObjectHelper { IfcTask() : Object("IfcTask") {} - IfcIdentifier::Out TaskId; - Maybe< IfcLabel::Out > Status; - Maybe< IfcLabel::Out > WorkMethod; - BOOLEAN::Out IsMilestone; - Maybe< INTEGER::Out > Priority; - }; - - // C++ wrapper for IfcRelFillsElement - struct IfcRelFillsElement : IfcRelConnects, ObjectHelper { IfcRelFillsElement() : Object("IfcRelFillsElement") {} - Lazy< IfcOpeningElement > RelatingOpeningElement; - Lazy< IfcElement > RelatedBuildingElement; - }; - - // C++ wrapper for IfcProcedure - struct IfcProcedure : IfcProcess, ObjectHelper { IfcProcedure() : Object("IfcProcedure") {} - IfcIdentifier::Out ProcedureID; - IfcProcedureTypeEnum::Out ProcedureType; - Maybe< IfcLabel::Out > UserDefinedProcedureType; - }; - - // C++ wrapper for IfcProxy - struct IfcProxy : IfcProduct, ObjectHelper { IfcProxy() : Object("IfcProxy") {} - IfcObjectTypeEnum::Out ProxyType; - Maybe< IfcLabel::Out > Tag; + // C++ wrapper for IfcElectricGeneratorType + struct IfcElectricGeneratorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricGeneratorType() : Object("IfcElectricGeneratorType") {} + IfcElectricGeneratorTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcResource @@ -1723,40 +1620,96 @@ namespace IFC { Maybe< Lazy< IfcMeasureWithUnit > > BaseQuantity; }; + // C++ wrapper for IfcControl + struct IfcControl : IfcObject, ObjectHelper { IfcControl() : Object("IfcControl") {} + + }; + + // C++ wrapper for IfcEquipmentStandard + struct IfcEquipmentStandard : IfcControl, ObjectHelper { IfcEquipmentStandard() : Object("IfcEquipmentStandard") {} + + }; + + // C++ wrapper for IfcElectricApplianceType + struct IfcElectricApplianceType : IfcFlowTerminalType, ObjectHelper { IfcElectricApplianceType() : Object("IfcElectricApplianceType") {} + IfcElectricApplianceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFurnitureStandard + struct IfcFurnitureStandard : IfcControl, ObjectHelper { IfcFurnitureStandard() : Object("IfcFurnitureStandard") {} + + }; + + // C++ wrapper for IfcDefinedSymbol + struct IfcDefinedSymbol : IfcGeometricRepresentationItem, ObjectHelper { IfcDefinedSymbol() : Object("IfcDefinedSymbol") {} + IfcDefinedSymbolSelect::Out Definition; + Lazy< IfcCartesianTransformationOperator2D > Target; + }; + + // C++ wrapper for IfcColourSpecification + struct IfcColourSpecification : ObjectHelper { IfcColourSpecification() : Object("IfcColourSpecification") {} + Maybe< IfcLabel::Out > Name; + }; + + // C++ wrapper for IfcCurve + struct IfcCurve : IfcGeometricRepresentationItem, ObjectHelper { IfcCurve() : Object("IfcCurve") {} + + }; + + // C++ wrapper for IfcLine + struct IfcLine : IfcCurve, ObjectHelper { IfcLine() : Object("IfcLine") {} + Lazy< IfcCartesianPoint > Pnt; + Lazy< IfcVector > Dir; + }; + + // C++ wrapper for IfcLoop + struct IfcLoop : IfcTopologicalRepresentationItem, ObjectHelper { IfcLoop() : Object("IfcLoop") {} + + }; + + // C++ wrapper for IfcProperty + struct IfcProperty : ObjectHelper { IfcProperty() : Object("IfcProperty") {} + IfcIdentifier::Out Name; + Maybe< IfcText::Out > Description; + }; + + // C++ wrapper for IfcComplexProperty + struct IfcComplexProperty : IfcProperty, ObjectHelper { IfcComplexProperty() : Object("IfcComplexProperty") {} + IfcIdentifier::Out UsageName; + ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; + }; + + // C++ wrapper for IfcCovering + struct IfcCovering : IfcBuildingElement, ObjectHelper { IfcCovering() : Object("IfcCovering") {} + Maybe< IfcCoveringTypeEnum::Out > PredefinedType; + }; + + // C++ wrapper for IfcBoundedCurve + struct IfcBoundedCurve : IfcCurve, ObjectHelper { IfcBoundedCurve() : Object("IfcBoundedCurve") {} + + }; + + // C++ wrapper for IfcBSplineCurve + struct IfcBSplineCurve : IfcBoundedCurve, ObjectHelper { IfcBSplineCurve() : Object("IfcBSplineCurve") {} + INTEGER::Out Degree; + ListOf< Lazy< IfcCartesianPoint >, 2, 0 > ControlPointsList; + IfcBSplineCurveForm::Out CurveForm; + LOGICAL::Out ClosedCurve; + LOGICAL::Out SelfIntersect; + }; + + // C++ wrapper for IfcNamedUnit + struct IfcNamedUnit : ObjectHelper { IfcNamedUnit() : Object("IfcNamedUnit") {} + Lazy< NotImplemented > Dimensions; + IfcUnitEnum::Out UnitType; + }; + // C++ wrapper for IfcSubContractResource struct IfcSubContractResource : IfcConstructionResource, ObjectHelper { IfcSubContractResource() : Object("IfcSubContractResource") {} Maybe< IfcActorSelect::Out > SubContractor; Maybe< IfcText::Out > JobDescription; }; - // C++ wrapper for IfcRelContainedInSpatialStructure - struct IfcRelContainedInSpatialStructure : IfcRelConnects, ObjectHelper { IfcRelContainedInSpatialStructure() : Object("IfcRelContainedInSpatialStructure") {} - ListOf< Lazy< IfcProduct >, 1, 0 > RelatedElements; - Lazy< IfcSpatialStructureElement > RelatingStructure; - }; - - // C++ wrapper for IfcTopologicalRepresentationItem - struct IfcTopologicalRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcTopologicalRepresentationItem() : Object("IfcTopologicalRepresentationItem") {} - - }; - - // C++ wrapper for IfcEdge - struct IfcEdge : IfcTopologicalRepresentationItem, ObjectHelper { IfcEdge() : Object("IfcEdge") {} - Lazy< IfcVertex > EdgeStart; - Lazy< IfcVertex > EdgeEnd; - }; - - // C++ wrapper for IfcEdgeCurve - struct IfcEdgeCurve : IfcEdge, ObjectHelper { IfcEdgeCurve() : Object("IfcEdgeCurve") {} - Lazy< IfcCurve > EdgeGeometry; - BOOLEAN::Out SameSense; - }; - - // C++ wrapper for IfcPlateType - struct IfcPlateType : IfcBuildingElementType, ObjectHelper { IfcPlateType() : Object("IfcPlateType") {} - IfcPlateTypeEnum::Out PredefinedType; - }; - // C++ wrapper for IfcObjectPlacement struct IfcObjectPlacement : ObjectHelper { IfcObjectPlacement() : Object("IfcObjectPlacement") {} @@ -1768,36 +1721,89 @@ namespace IFC { Maybe< Lazy< NotImplemented > > PlacementRefDirection; }; - // C++ wrapper for IfcFireSuppressionTerminalType - struct IfcFireSuppressionTerminalType : IfcFlowTerminalType, ObjectHelper { IfcFireSuppressionTerminalType() : Object("IfcFireSuppressionTerminalType") {} - IfcFireSuppressionTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowStorageDevice - struct IfcFlowStorageDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowStorageDevice() : Object("IfcFlowStorageDevice") {} + // C++ wrapper for IfcPropertyDefinition + struct IfcPropertyDefinition : IfcRoot, ObjectHelper { IfcPropertyDefinition() : Object("IfcPropertyDefinition") {} }; - // C++ wrapper for IfcSweptSurface - struct IfcSweptSurface : IfcSurface, ObjectHelper { IfcSweptSurface() : Object("IfcSweptSurface") {} - Lazy< IfcProfileDef > SweptCurve; - Lazy< IfcAxis2Placement3D > Position; + // C++ wrapper for IfcPropertySetDefinition + struct IfcPropertySetDefinition : IfcPropertyDefinition, ObjectHelper { IfcPropertySetDefinition() : Object("IfcPropertySetDefinition") {} + }; - // C++ wrapper for IfcSurfaceOfRevolution - struct IfcSurfaceOfRevolution : IfcSweptSurface, ObjectHelper { IfcSurfaceOfRevolution() : Object("IfcSurfaceOfRevolution") {} - Lazy< IfcAxis1Placement > AxisPosition; + // C++ wrapper for IfcPoint + struct IfcPoint : IfcGeometricRepresentationItem, ObjectHelper { IfcPoint() : Object("IfcPoint") {} + }; - // C++ wrapper for IfcOrientedEdge - struct IfcOrientedEdge : IfcEdge, ObjectHelper { IfcOrientedEdge() : Object("IfcOrientedEdge") {} - Lazy< IfcEdge > EdgeElement; + // C++ wrapper for IfcCartesianPoint + struct IfcCartesianPoint : IfcPoint, ObjectHelper { IfcCartesianPoint() : Object("IfcCartesianPoint") {} + ListOf< IfcLengthMeasure, 1, 3 >::Out Coordinates; + }; + + // C++ wrapper for IfcFaceBound + struct IfcFaceBound : IfcTopologicalRepresentationItem, ObjectHelper { IfcFaceBound() : Object("IfcFaceBound") {} + Lazy< IfcLoop > Bound; BOOLEAN::Out Orientation; }; - // C++ wrapper for IfcDirection - struct IfcDirection : IfcGeometricRepresentationItem, ObjectHelper { IfcDirection() : Object("IfcDirection") {} - ListOf< REAL, 2, 3 >::Out DirectionRatios; + // C++ wrapper for IfcEdgeCurve + struct IfcEdgeCurve : IfcEdge, ObjectHelper { IfcEdgeCurve() : Object("IfcEdgeCurve") {} + Lazy< IfcCurve > EdgeGeometry; + BOOLEAN::Out SameSense; + }; + + // C++ wrapper for IfcOneDirectionRepeatFactor + struct IfcOneDirectionRepeatFactor : IfcGeometricRepresentationItem, ObjectHelper { IfcOneDirectionRepeatFactor() : Object("IfcOneDirectionRepeatFactor") {} + Lazy< IfcVector > RepeatFactor; + }; + + // C++ wrapper for IfcTwoDirectionRepeatFactor + struct IfcTwoDirectionRepeatFactor : IfcOneDirectionRepeatFactor, ObjectHelper { IfcTwoDirectionRepeatFactor() : Object("IfcTwoDirectionRepeatFactor") {} + Lazy< IfcVector > SecondRepeatFactor; + }; + + // C++ wrapper for IfcLightSource + struct IfcLightSource : IfcGeometricRepresentationItem, ObjectHelper { IfcLightSource() : Object("IfcLightSource") {} + Maybe< IfcLabel::Out > Name; + Lazy< IfcColourRgb > LightColour; + Maybe< IfcNormalisedRatioMeasure::Out > AmbientIntensity; + Maybe< IfcNormalisedRatioMeasure::Out > Intensity; + }; + + // C++ wrapper for IfcLightSourceAmbient + struct IfcLightSourceAmbient : IfcLightSource, ObjectHelper { IfcLightSourceAmbient() : Object("IfcLightSourceAmbient") {} + + }; + + // C++ wrapper for IfcPlacement + struct IfcPlacement : IfcGeometricRepresentationItem, ObjectHelper { IfcPlacement() : Object("IfcPlacement") {} + Lazy< IfcCartesianPoint > Location; + }; + + // C++ wrapper for IfcAxis1Placement + struct IfcAxis1Placement : IfcPlacement, ObjectHelper { IfcAxis1Placement() : Object("IfcAxis1Placement") {} + Maybe< Lazy< IfcDirection > > Axis; + }; + + // C++ wrapper for IfcAnnotationSurfaceOccurrence + struct IfcAnnotationSurfaceOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSurfaceOccurrence() : Object("IfcAnnotationSurfaceOccurrence") {} + + }; + + // C++ wrapper for IfcFlowControllerType + struct IfcFlowControllerType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowControllerType() : Object("IfcFlowControllerType") {} + + }; + + // C++ wrapper for IfcFlowMeterType + struct IfcFlowMeterType : IfcFlowControllerType, ObjectHelper { IfcFlowMeterType() : Object("IfcFlowMeterType") {} + IfcFlowMeterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcAnnotationCurveOccurrence + struct IfcAnnotationCurveOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationCurveOccurrence() : Object("IfcAnnotationCurveOccurrence") {} + }; // C++ wrapper for IfcProfileDef @@ -1806,28 +1812,106 @@ namespace IFC { Maybe< IfcLabel::Out > ProfileName; }; - // C++ wrapper for IfcParameterizedProfileDef - struct IfcParameterizedProfileDef : IfcProfileDef, ObjectHelper { IfcParameterizedProfileDef() : Object("IfcParameterizedProfileDef") {} - Lazy< IfcAxis2Placement2D > Position; + // C++ wrapper for IfcCompositeProfileDef + struct IfcCompositeProfileDef : IfcProfileDef, ObjectHelper { IfcCompositeProfileDef() : Object("IfcCompositeProfileDef") {} + ListOf< Lazy< IfcProfileDef >, 2, 0 > Profiles; + Maybe< IfcLabel::Out > Label; }; - // C++ wrapper for IfcCShapeProfileDef - struct IfcCShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCShapeProfileDef() : Object("IfcCShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - IfcPositiveLengthMeasure::Out Width; - IfcPositiveLengthMeasure::Out WallThickness; - IfcPositiveLengthMeasure::Out Girth; - Maybe< IfcPositiveLengthMeasure::Out > InternalFilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; + // C++ wrapper for IfcSubedge + struct IfcSubedge : IfcEdge, ObjectHelper { IfcSubedge() : Object("IfcSubedge") {} + Lazy< IfcEdge > ParentEdge; }; - // C++ wrapper for IfcFeatureElement - struct IfcFeatureElement : IfcElement, ObjectHelper { IfcFeatureElement() : Object("IfcFeatureElement") {} + // C++ wrapper for IfcFlowStorageDeviceType + struct IfcFlowStorageDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowStorageDeviceType() : Object("IfcFlowStorageDeviceType") {} }; - // C++ wrapper for IfcFeatureElementSubtraction - struct IfcFeatureElementSubtraction : IfcFeatureElement, ObjectHelper { IfcFeatureElementSubtraction() : Object("IfcFeatureElementSubtraction") {} + // C++ wrapper for IfcTankType + struct IfcTankType : IfcFlowStorageDeviceType, ObjectHelper { IfcTankType() : Object("IfcTankType") {} + IfcTankTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcBuildingElementComponent + struct IfcBuildingElementComponent : IfcBuildingElement, ObjectHelper { IfcBuildingElementComponent() : Object("IfcBuildingElementComponent") {} + + }; + + // C++ wrapper for IfcBuildingElementPart + struct IfcBuildingElementPart : IfcBuildingElementComponent, ObjectHelper { IfcBuildingElementPart() : Object("IfcBuildingElementPart") {} + + }; + + // C++ wrapper for IfcRepresentation + struct IfcRepresentation : ObjectHelper { IfcRepresentation() : Object("IfcRepresentation") {} + Lazy< IfcRepresentationContext > ContextOfItems; + Maybe< IfcLabel::Out > RepresentationIdentifier; + Maybe< IfcLabel::Out > RepresentationType; + ListOf< Lazy< IfcRepresentationItem >, 1, 0 > Items; + }; + + // C++ wrapper for IfcShapeModel + struct IfcShapeModel : IfcRepresentation, ObjectHelper { IfcShapeModel() : Object("IfcShapeModel") {} + + }; + + // C++ wrapper for IfcShapeRepresentation + struct IfcShapeRepresentation : IfcShapeModel, ObjectHelper { IfcShapeRepresentation() : Object("IfcShapeRepresentation") {} + + }; + + // C++ wrapper for IfcRailing + struct IfcRailing : IfcBuildingElement, ObjectHelper { IfcRailing() : Object("IfcRailing") {} + Maybe< IfcRailingTypeEnum::Out > PredefinedType; + }; + + // C++ wrapper for IfcStyleModel + struct IfcStyleModel : IfcRepresentation, ObjectHelper { IfcStyleModel() : Object("IfcStyleModel") {} + + }; + + // C++ wrapper for IfcStyledRepresentation + struct IfcStyledRepresentation : IfcStyleModel, ObjectHelper { IfcStyledRepresentation() : Object("IfcStyledRepresentation") {} + + }; + + // C++ wrapper for IfcColourRgb + struct IfcColourRgb : IfcColourSpecification, ObjectHelper { IfcColourRgb() : Object("IfcColourRgb") {} + IfcNormalisedRatioMeasure::Out Red; + IfcNormalisedRatioMeasure::Out Green; + IfcNormalisedRatioMeasure::Out Blue; + }; + + // C++ wrapper for IfcElementComponentType + struct IfcElementComponentType : IfcElementType, ObjectHelper { IfcElementComponentType() : Object("IfcElementComponentType") {} + + }; + + // C++ wrapper for IfcDiscreteAccessoryType + struct IfcDiscreteAccessoryType : IfcElementComponentType, ObjectHelper { IfcDiscreteAccessoryType() : Object("IfcDiscreteAccessoryType") {} + + }; + + // C++ wrapper for IfcVibrationIsolatorType + struct IfcVibrationIsolatorType : IfcDiscreteAccessoryType, ObjectHelper { IfcVibrationIsolatorType() : Object("IfcVibrationIsolatorType") {} + IfcVibrationIsolatorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProcess + struct IfcProcess : IfcObject, ObjectHelper { IfcProcess() : Object("IfcProcess") {} + + }; + + // C++ wrapper for IfcProcedure + struct IfcProcedure : IfcProcess, ObjectHelper { IfcProcedure() : Object("IfcProcedure") {} + IfcIdentifier::Out ProcedureID; + IfcProcedureTypeEnum::Out ProcedureType; + Maybe< IfcLabel::Out > UserDefinedProcedureType; + }; + + // C++ wrapper for IfcFeatureElementAddition + struct IfcFeatureElementAddition : IfcFeatureElement, ObjectHelper { IfcFeatureElementAddition() : Object("IfcFeatureElementAddition") {} }; @@ -1836,46 +1920,25 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > FeatureLength; }; - // C++ wrapper for IfcChamferEdgeFeature - struct IfcChamferEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcChamferEdgeFeature() : Object("IfcChamferEdgeFeature") {} - Maybe< IfcPositiveLengthMeasure::Out > Width; - Maybe< IfcPositiveLengthMeasure::Out > Height; + // C++ wrapper for IfcTrimmedCurve + struct IfcTrimmedCurve : IfcBoundedCurve, ObjectHelper { IfcTrimmedCurve() : Object("IfcTrimmedCurve") {} + Lazy< IfcCurve > BasisCurve; + ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim1; + ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim2; + BOOLEAN::Out SenseAgreement; + IfcTrimmingPreference::Out MasterRepresentation; }; - // C++ wrapper for IfcBuildingElement - struct IfcBuildingElement : IfcElement, ObjectHelper { IfcBuildingElement() : Object("IfcBuildingElement") {} - + // C++ wrapper for IfcTextLiteral + struct IfcTextLiteral : IfcGeometricRepresentationItem, ObjectHelper { IfcTextLiteral() : Object("IfcTextLiteral") {} + IfcPresentableText::Out Literal; + IfcAxis2Placement::Out Placement; + IfcTextPath::Out Path; }; - // C++ wrapper for IfcColumn - struct IfcColumn : IfcBuildingElement, ObjectHelper { IfcColumn() : Object("IfcColumn") {} - - }; - - // C++ wrapper for IfcPropertyReferenceValue - struct IfcPropertyReferenceValue : IfcSimpleProperty, ObjectHelper { IfcPropertyReferenceValue() : Object("IfcPropertyReferenceValue") {} - Maybe< IfcLabel::Out > UsageName; - IfcObjectReferenceSelect::Out PropertyReference; - }; - - // C++ wrapper for IfcElectricMotorType - struct IfcElectricMotorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricMotorType() : Object("IfcElectricMotorType") {} - IfcElectricMotorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSpatialStructureElementType - struct IfcSpatialStructureElementType : IfcElementType, ObjectHelper { IfcSpatialStructureElementType() : Object("IfcSpatialStructureElementType") {} - - }; - - // C++ wrapper for IfcSpaceType - struct IfcSpaceType : IfcSpatialStructureElementType, ObjectHelper { IfcSpaceType() : Object("IfcSpaceType") {} - IfcSpaceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcColumnType - struct IfcColumnType : IfcBuildingElementType, ObjectHelper { IfcColumnType() : Object("IfcColumnType") {} - IfcColumnTypeEnum::Out PredefinedType; + // C++ wrapper for IfcParameterizedProfileDef + struct IfcParameterizedProfileDef : IfcProfileDef, ObjectHelper { IfcParameterizedProfileDef() : Object("IfcParameterizedProfileDef") {} + Lazy< IfcAxis2Placement2D > Position; }; // C++ wrapper for IfcCraneRailAShapeProfileDef @@ -1894,89 +1957,9 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcCondenserType - struct IfcCondenserType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCondenserType() : Object("IfcCondenserType") {} - IfcCondenserTypeEnum::Out PredefinedType; - }; + // C++ wrapper for IfcElementComponent + struct IfcElementComponent : IfcElement, ObjectHelper { IfcElementComponent() : Object("IfcElementComponent") {} - // C++ wrapper for IfcCircleProfileDef - struct IfcCircleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCircleProfileDef() : Object("IfcCircleProfileDef") {} - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcCircleHollowProfileDef - struct IfcCircleHollowProfileDef : IfcCircleProfileDef, ObjectHelper { IfcCircleHollowProfileDef() : Object("IfcCircleHollowProfileDef") {} - IfcPositiveLengthMeasure::Out WallThickness; - }; - - // C++ wrapper for IfcPlacement - struct IfcPlacement : IfcGeometricRepresentationItem, ObjectHelper { IfcPlacement() : Object("IfcPlacement") {} - Lazy< IfcCartesianPoint > Location; - }; - - // C++ wrapper for IfcAxis2Placement3D - struct IfcAxis2Placement3D : IfcPlacement, ObjectHelper { IfcAxis2Placement3D() : Object("IfcAxis2Placement3D") {} - Maybe< Lazy< IfcDirection > > Axis; - Maybe< Lazy< IfcDirection > > RefDirection; - }; - - // C++ wrapper for IfcPresentationStyle - struct IfcPresentationStyle : ObjectHelper { IfcPresentationStyle() : Object("IfcPresentationStyle") {} - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcEquipmentElement - struct IfcEquipmentElement : IfcElement, ObjectHelper { IfcEquipmentElement() : Object("IfcEquipmentElement") {} - - }; - - // C++ wrapper for IfcCompositeCurveSegment - struct IfcCompositeCurveSegment : IfcGeometricRepresentationItem, ObjectHelper { IfcCompositeCurveSegment() : Object("IfcCompositeCurveSegment") {} - IfcTransitionCode::Out Transition; - BOOLEAN::Out SameSense; - Lazy< IfcCurve > ParentCurve; - }; - - // C++ wrapper for IfcRectangleProfileDef - struct IfcRectangleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcRectangleProfileDef() : Object("IfcRectangleProfileDef") {} - IfcPositiveLengthMeasure::Out XDim; - IfcPositiveLengthMeasure::Out YDim; - }; - - // C++ wrapper for IfcBuildingElementProxy - struct IfcBuildingElementProxy : IfcBuildingElement, ObjectHelper { IfcBuildingElementProxy() : Object("IfcBuildingElementProxy") {} - Maybe< IfcElementCompositionEnum::Out > CompositionType; - }; - - // C++ wrapper for IfcDistributionControlElementType - struct IfcDistributionControlElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionControlElementType() : Object("IfcDistributionControlElementType") {} - - }; - - // C++ wrapper for IfcFlowInstrumentType - struct IfcFlowInstrumentType : IfcDistributionControlElementType, ObjectHelper { IfcFlowInstrumentType() : Object("IfcFlowInstrumentType") {} - IfcFlowInstrumentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDraughtingCallout - struct IfcDraughtingCallout : IfcGeometricRepresentationItem, ObjectHelper { IfcDraughtingCallout() : Object("IfcDraughtingCallout") {} - ListOf< IfcDraughtingCalloutElement, 1, 0 >::Out Contents; - }; - - // C++ wrapper for IfcDimensionCurveDirectedCallout - struct IfcDimensionCurveDirectedCallout : IfcDraughtingCallout, ObjectHelper { IfcDimensionCurveDirectedCallout() : Object("IfcDimensionCurveDirectedCallout") {} - - }; - - // C++ wrapper for IfcLinearDimension - struct IfcLinearDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcLinearDimension() : Object("IfcLinearDimension") {} - - }; - - // C++ wrapper for IfcElementAssembly - struct IfcElementAssembly : IfcElement, ObjectHelper { IfcElementAssembly() : Object("IfcElementAssembly") {} - Maybe< IfcAssemblyPlaceEnum::Out > AssemblyPlace; - IfcElementAssemblyTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcCsgPrimitive3D @@ -1984,239 +1967,45 @@ namespace IFC { Lazy< IfcAxis2Placement3D > Position; }; - // C++ wrapper for IfcRightCircularCone - struct IfcRightCircularCone : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCone() : Object("IfcRightCircularCone") {} - IfcPositiveLengthMeasure::Out Height; - IfcPositiveLengthMeasure::Out BottomRadius; + // C++ wrapper for IfcBlock + struct IfcBlock : IfcCsgPrimitive3D, ObjectHelper { IfcBlock() : Object("IfcBlock") {} + IfcPositiveLengthMeasure::Out XLength; + IfcPositiveLengthMeasure::Out YLength; + IfcPositiveLengthMeasure::Out ZLength; }; - // C++ wrapper for IfcProjectOrder - struct IfcProjectOrder : IfcControl, ObjectHelper { IfcProjectOrder() : Object("IfcProjectOrder") {} - IfcIdentifier::Out ID; - IfcProjectOrderTypeEnum::Out PredefinedType; - Maybe< IfcLabel::Out > Status; - }; - - // C++ wrapper for IfcLShapeProfileDef - struct IfcLShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcLShapeProfileDef() : Object("IfcLShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - Maybe< IfcPositiveLengthMeasure::Out > Width; - IfcPositiveLengthMeasure::Out Thickness; - Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; - Maybe< IfcPlaneAngleMeasure::Out > LegSlope; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; - }; - - // C++ wrapper for IfcAngularDimension - struct IfcAngularDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcAngularDimension() : Object("IfcAngularDimension") {} + // C++ wrapper for IfcBuildingElementType + struct IfcBuildingElementType : IfcElementType, ObjectHelper { IfcBuildingElementType() : Object("IfcBuildingElementType") {} }; - // C++ wrapper for IfcLocalPlacement - struct IfcLocalPlacement : IfcObjectPlacement, ObjectHelper { IfcLocalPlacement() : Object("IfcLocalPlacement") {} - Maybe< Lazy< IfcObjectPlacement > > PlacementRelTo; - IfcAxis2Placement::Out RelativePlacement; + // C++ wrapper for IfcRailingType + struct IfcRailingType : IfcBuildingElementType, ObjectHelper { IfcRailingType() : Object("IfcRailingType") {} + IfcRailingTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcSweptAreaSolid - struct IfcSweptAreaSolid : IfcSolidModel, ObjectHelper { IfcSweptAreaSolid() : Object("IfcSweptAreaSolid") {} - Lazy< IfcProfileDef > SweptArea; - Lazy< IfcAxis2Placement3D > Position; - }; - - // C++ wrapper for IfcRevolvedAreaSolid - struct IfcRevolvedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcRevolvedAreaSolid() : Object("IfcRevolvedAreaSolid") {} - Lazy< IfcAxis1Placement > Axis; - IfcPlaneAngleMeasure::Out Angle; - }; - - // C++ wrapper for IfcStructuralSurfaceConnection - struct IfcStructuralSurfaceConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralSurfaceConnection() : Object("IfcStructuralSurfaceConnection") {} + // C++ wrapper for IfcStructuralPointConnection + struct IfcStructuralPointConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralPointConnection() : Object("IfcStructuralPointConnection") {} }; - // C++ wrapper for IfcRadiusDimension - struct IfcRadiusDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcRadiusDimension() : Object("IfcRadiusDimension") {} + // C++ wrapper for IfcFlowMovingDeviceType + struct IfcFlowMovingDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowMovingDeviceType() : Object("IfcFlowMovingDeviceType") {} }; - // C++ wrapper for IfcSweptDiskSolid - struct IfcSweptDiskSolid : IfcSolidModel, ObjectHelper { IfcSweptDiskSolid() : Object("IfcSweptDiskSolid") {} - Lazy< IfcCurve > Directrix; - IfcPositiveLengthMeasure::Out Radius; - Maybe< IfcPositiveLengthMeasure::Out > InnerRadius; - IfcParameterValue::Out StartParam; - IfcParameterValue::Out EndParam; + // C++ wrapper for IfcPumpType + struct IfcPumpType : IfcFlowMovingDeviceType, ObjectHelper { IfcPumpType() : Object("IfcPumpType") {} + IfcPumpTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcHalfSpaceSolid - struct IfcHalfSpaceSolid : IfcGeometricRepresentationItem, ObjectHelper { IfcHalfSpaceSolid() : Object("IfcHalfSpaceSolid") {} - Lazy< IfcSurface > BaseSurface; - BOOLEAN::Out AgreementFlag; + // C++ wrapper for IfcStructuralCurveMember + struct IfcStructuralCurveMember : IfcStructuralMember, ObjectHelper { IfcStructuralCurveMember() : Object("IfcStructuralCurveMember") {} + IfcStructuralCurveTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPolygonalBoundedHalfSpace - struct IfcPolygonalBoundedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcPolygonalBoundedHalfSpace() : Object("IfcPolygonalBoundedHalfSpace") {} - Lazy< IfcAxis2Placement3D > Position; - Lazy< IfcBoundedCurve > PolygonalBoundary; - }; - - // C++ wrapper for IfcTimeSeriesSchedule - struct IfcTimeSeriesSchedule : IfcControl, ObjectHelper { IfcTimeSeriesSchedule() : Object("IfcTimeSeriesSchedule") {} - Maybe< ListOf< IfcDateTimeSelect, 1, 0 >::Out > ApplicableDates; - IfcTimeSeriesScheduleTypeEnum::Out TimeSeriesScheduleType; - Lazy< NotImplemented > TimeSeries; - }; - - // C++ wrapper for IfcCooledBeamType - struct IfcCooledBeamType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCooledBeamType() : Object("IfcCooledBeamType") {} - IfcCooledBeamTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProject - struct IfcProject : IfcObject, ObjectHelper { IfcProject() : Object("IfcProject") {} - Maybe< IfcLabel::Out > LongName; - Maybe< IfcLabel::Out > Phase; - ListOf< Lazy< IfcRepresentationContext >, 1, 0 > RepresentationContexts; - Lazy< IfcUnitAssignment > UnitsInContext; - }; - - // C++ wrapper for IfcEvaporatorType - struct IfcEvaporatorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporatorType() : Object("IfcEvaporatorType") {} - IfcEvaporatorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLaborResource - struct IfcLaborResource : IfcConstructionResource, ObjectHelper { IfcLaborResource() : Object("IfcLaborResource") {} - Maybe< IfcText::Out > SkillSet; - }; - - // C++ wrapper for IfcPropertyBoundedValue - struct IfcPropertyBoundedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyBoundedValue() : Object("IfcPropertyBoundedValue") {} - Maybe< IfcValue::Out > UpperBoundValue; - Maybe< IfcValue::Out > LowerBoundValue; - Maybe< IfcUnit::Out > Unit; - }; - - // C++ wrapper for IfcRampFlightType - struct IfcRampFlightType : IfcBuildingElementType, ObjectHelper { IfcRampFlightType() : Object("IfcRampFlightType") {} - IfcRampFlightTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMember - struct IfcMember : IfcBuildingElement, ObjectHelper { IfcMember() : Object("IfcMember") {} - - }; - - // C++ wrapper for IfcTubeBundleType - struct IfcTubeBundleType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTubeBundleType() : Object("IfcTubeBundleType") {} - IfcTubeBundleTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcValveType - struct IfcValveType : IfcFlowControllerType, ObjectHelper { IfcValveType() : Object("IfcValveType") {} - IfcValveTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcTrimmedCurve - struct IfcTrimmedCurve : IfcBoundedCurve, ObjectHelper { IfcTrimmedCurve() : Object("IfcTrimmedCurve") {} - Lazy< IfcCurve > BasisCurve; - ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim1; - ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim2; - BOOLEAN::Out SenseAgreement; - IfcTrimmingPreference::Out MasterRepresentation; - }; - - // C++ wrapper for IfcRelDefines - struct IfcRelDefines : IfcRelationship, ObjectHelper { IfcRelDefines() : Object("IfcRelDefines") {} - ListOf< Lazy< IfcObject >, 1, 0 > RelatedObjects; - }; - - // C++ wrapper for IfcRelDefinesByProperties - struct IfcRelDefinesByProperties : IfcRelDefines, ObjectHelper { IfcRelDefinesByProperties() : Object("IfcRelDefinesByProperties") {} - Lazy< IfcPropertySetDefinition > RelatingPropertyDefinition; - }; - - // C++ wrapper for IfcActor - struct IfcActor : IfcObject, ObjectHelper { IfcActor() : Object("IfcActor") {} - IfcActorSelect::Out TheActor; - }; - - // C++ wrapper for IfcOccupant - struct IfcOccupant : IfcActor, ObjectHelper { IfcOccupant() : Object("IfcOccupant") {} - IfcOccupantTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcHumidifierType - struct IfcHumidifierType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHumidifierType() : Object("IfcHumidifierType") {} - IfcHumidifierTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcArbitraryOpenProfileDef - struct IfcArbitraryOpenProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryOpenProfileDef() : Object("IfcArbitraryOpenProfileDef") {} - Lazy< IfcBoundedCurve > Curve; - }; - - // C++ wrapper for IfcPermit - struct IfcPermit : IfcControl, ObjectHelper { IfcPermit() : Object("IfcPermit") {} - IfcIdentifier::Out PermitID; - }; - - // C++ wrapper for IfcOffsetCurve3D - struct IfcOffsetCurve3D : IfcCurve, ObjectHelper { IfcOffsetCurve3D() : Object("IfcOffsetCurve3D") {} - Lazy< IfcCurve > BasisCurve; - IfcLengthMeasure::Out Distance; - LOGICAL::Out SelfIntersect; - Lazy< IfcDirection > RefDirection; - }; - - // C++ wrapper for IfcLightSource - struct IfcLightSource : IfcGeometricRepresentationItem, ObjectHelper { IfcLightSource() : Object("IfcLightSource") {} - Maybe< IfcLabel::Out > Name; - Lazy< IfcColourRgb > LightColour; - Maybe< IfcNormalisedRatioMeasure::Out > AmbientIntensity; - Maybe< IfcNormalisedRatioMeasure::Out > Intensity; - }; - - // C++ wrapper for IfcLightSourcePositional - struct IfcLightSourcePositional : IfcLightSource, ObjectHelper { IfcLightSourcePositional() : Object("IfcLightSourcePositional") {} - Lazy< IfcCartesianPoint > Position; - IfcPositiveLengthMeasure::Out Radius; - IfcReal::Out ConstantAttenuation; - IfcReal::Out DistanceAttenuation; - IfcReal::Out QuadricAttenuation; - }; - - // C++ wrapper for IfcCompositeProfileDef - struct IfcCompositeProfileDef : IfcProfileDef, ObjectHelper { IfcCompositeProfileDef() : Object("IfcCompositeProfileDef") {} - ListOf< Lazy< IfcProfileDef >, 2, 0 > Profiles; - Maybe< IfcLabel::Out > Label; - }; - - // C++ wrapper for IfcRamp - struct IfcRamp : IfcBuildingElement, ObjectHelper { IfcRamp() : Object("IfcRamp") {} - IfcRampTypeEnum::Out ShapeType; - }; - - // C++ wrapper for IfcFlowMovingDevice - struct IfcFlowMovingDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowMovingDevice() : Object("IfcFlowMovingDevice") {} - - }; - - // C++ wrapper for IfcSpaceHeaterType - struct IfcSpaceHeaterType : IfcEnergyConversionDeviceType, ObjectHelper { IfcSpaceHeaterType() : Object("IfcSpaceHeaterType") {} - IfcSpaceHeaterTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLampType - struct IfcLampType : IfcFlowTerminalType, ObjectHelper { IfcLampType() : Object("IfcLampType") {} - IfcLampTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcBuildingElementComponent - struct IfcBuildingElementComponent : IfcBuildingElement, ObjectHelper { IfcBuildingElementComponent() : Object("IfcBuildingElementComponent") {} + // C++ wrapper for IfcStructuralCurveMemberVarying + struct IfcStructuralCurveMemberVarying : IfcStructuralCurveMember, ObjectHelper { IfcStructuralCurveMemberVarying() : Object("IfcStructuralCurveMemberVarying") {} }; @@ -2225,18 +2014,127 @@ namespace IFC { Maybe< IfcLabel::Out > SteelGrade; }; - // C++ wrapper for IfcReinforcingBar - struct IfcReinforcingBar : IfcReinforcingElement, ObjectHelper { IfcReinforcingBar() : Object("IfcReinforcingBar") {} - IfcPositiveLengthMeasure::Out NominalDiameter; - IfcAreaMeasure::Out CrossSectionArea; - Maybe< IfcPositiveLengthMeasure::Out > BarLength; - IfcReinforcingBarRoleEnum::Out BarRole; - Maybe< IfcReinforcingBarSurfaceEnum::Out > BarSurface; + // C++ wrapper for IfcReinforcingMesh + struct IfcReinforcingMesh : IfcReinforcingElement, ObjectHelper { IfcReinforcingMesh() : Object("IfcReinforcingMesh") {} + Maybe< IfcPositiveLengthMeasure::Out > MeshLength; + Maybe< IfcPositiveLengthMeasure::Out > MeshWidth; + IfcPositiveLengthMeasure::Out LongitudinalBarNominalDiameter; + IfcPositiveLengthMeasure::Out TransverseBarNominalDiameter; + IfcAreaMeasure::Out LongitudinalBarCrossSectionArea; + IfcAreaMeasure::Out TransverseBarCrossSectionArea; + IfcPositiveLengthMeasure::Out LongitudinalBarSpacing; + IfcPositiveLengthMeasure::Out TransverseBarSpacing; }; - // C++ wrapper for IfcElectricHeaterType - struct IfcElectricHeaterType : IfcFlowTerminalType, ObjectHelper { IfcElectricHeaterType() : Object("IfcElectricHeaterType") {} - IfcElectricHeaterTypeEnum::Out PredefinedType; + // C++ wrapper for IfcPlanarExtent + struct IfcPlanarExtent : IfcGeometricRepresentationItem, ObjectHelper { IfcPlanarExtent() : Object("IfcPlanarExtent") {} + IfcLengthMeasure::Out SizeInX; + IfcLengthMeasure::Out SizeInY; + }; + + // C++ wrapper for IfcPlanarBox + struct IfcPlanarBox : IfcPlanarExtent, ObjectHelper { IfcPlanarBox() : Object("IfcPlanarBox") {} + IfcAxis2Placement::Out Placement; + }; + + // C++ wrapper for IfcCooledBeamType + struct IfcCooledBeamType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCooledBeamType() : Object("IfcCooledBeamType") {} + IfcCooledBeamTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProjectOrderRecord + struct IfcProjectOrderRecord : IfcControl, ObjectHelper { IfcProjectOrderRecord() : Object("IfcProjectOrderRecord") {} + ListOf< Lazy< NotImplemented >, 1, 0 > Records; + IfcProjectOrderRecordTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPointOnSurface + struct IfcPointOnSurface : IfcPoint, ObjectHelper { IfcPointOnSurface() : Object("IfcPointOnSurface") {} + Lazy< IfcSurface > BasisSurface; + IfcParameterValue::Out PointParameterU; + IfcParameterValue::Out PointParameterV; + }; + + // C++ wrapper for IfcPointOnCurve + struct IfcPointOnCurve : IfcPoint, ObjectHelper { IfcPointOnCurve() : Object("IfcPointOnCurve") {} + Lazy< IfcCurve > BasisCurve; + IfcParameterValue::Out PointParameter; + }; + + // C++ wrapper for IfcRelContainedInSpatialStructure + struct IfcRelContainedInSpatialStructure : IfcRelConnects, ObjectHelper { IfcRelContainedInSpatialStructure() : Object("IfcRelContainedInSpatialStructure") {} + ListOf< Lazy< IfcProduct >, 1, 0 > RelatedElements; + Lazy< IfcSpatialStructureElement > RelatingStructure; + }; + + // C++ wrapper for IfcSimpleProperty + struct IfcSimpleProperty : IfcProperty, ObjectHelper { IfcSimpleProperty() : Object("IfcSimpleProperty") {} + + }; + + // C++ wrapper for IfcPropertyListValue + struct IfcPropertyListValue : IfcSimpleProperty, ObjectHelper { IfcPropertyListValue() : Object("IfcPropertyListValue") {} + ListOf< IfcValue, 1, 0 >::Out ListValues; + Maybe< IfcUnit::Out > Unit; + }; + + // C++ wrapper for IfcSpatialStructureElement + struct IfcSpatialStructureElement : IfcProduct, ObjectHelper { IfcSpatialStructureElement() : Object("IfcSpatialStructureElement") {} + Maybe< IfcLabel::Out > LongName; + IfcElementCompositionEnum::Out CompositionType; + }; + + // C++ wrapper for IfcBuildingStorey + struct IfcBuildingStorey : IfcSpatialStructureElement, ObjectHelper { IfcBuildingStorey() : Object("IfcBuildingStorey") {} + Maybe< IfcLengthMeasure::Out > Elevation; + }; + + // C++ wrapper for IfcUnitaryEquipmentType + struct IfcUnitaryEquipmentType : IfcEnergyConversionDeviceType, ObjectHelper { IfcUnitaryEquipmentType() : Object("IfcUnitaryEquipmentType") {} + IfcUnitaryEquipmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcOutletType + struct IfcOutletType : IfcFlowTerminalType, ObjectHelper { IfcOutletType() : Object("IfcOutletType") {} + IfcOutletTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFastenerType + struct IfcFastenerType : IfcElementComponentType, ObjectHelper { IfcFastenerType() : Object("IfcFastenerType") {} + + }; + + // C++ wrapper for IfcGroup + struct IfcGroup : IfcObject, ObjectHelper { IfcGroup() : Object("IfcGroup") {} + + }; + + // C++ wrapper for IfcSystem + struct IfcSystem : IfcGroup, ObjectHelper { IfcSystem() : Object("IfcSystem") {} + + }; + + // C++ wrapper for IfcStructuralAnalysisModel + struct IfcStructuralAnalysisModel : IfcSystem, ObjectHelper { IfcStructuralAnalysisModel() : Object("IfcStructuralAnalysisModel") {} + IfcAnalysisModelTypeEnum::Out PredefinedType; + Maybe< Lazy< IfcAxis2Placement3D > > OrientationOf2DPlane; + Maybe< ListOf< Lazy< IfcStructuralLoadGroup >, 1, 0 > > LoadedBy; + Maybe< ListOf< Lazy< IfcStructuralResultGroup >, 1, 0 > > HasResults; + }; + + // C++ wrapper for IfcSlabType + struct IfcSlabType : IfcBuildingElementType, ObjectHelper { IfcSlabType() : Object("IfcSlabType") {} + IfcSlabTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcDistributionElement + struct IfcDistributionElement : IfcElement, ObjectHelper { IfcDistributionElement() : Object("IfcDistributionElement") {} + + }; + + // C++ wrapper for IfcDistributionFlowElement + struct IfcDistributionFlowElement : IfcDistributionElement, ObjectHelper { IfcDistributionFlowElement() : Object("IfcDistributionFlowElement") {} + }; // C++ wrapper for IfcTShapeProfileDef @@ -2253,84 +2151,71 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcStructuralActivity - struct IfcStructuralActivity : IfcProduct, ObjectHelper { IfcStructuralActivity() : Object("IfcStructuralActivity") {} - Lazy< NotImplemented > AppliedLoad; - IfcGlobalOrLocalEnum::Out GlobalOrLocal; + // C++ wrapper for IfcPolyline + struct IfcPolyline : IfcBoundedCurve, ObjectHelper { IfcPolyline() : Object("IfcPolyline") {} + ListOf< Lazy< IfcCartesianPoint >, 2, 0 > Points; }; - // C++ wrapper for IfcStructuralAction - struct IfcStructuralAction : IfcStructuralActivity, ObjectHelper { IfcStructuralAction() : Object("IfcStructuralAction") {} - BOOLEAN::Out DestabilizingLoad; - Maybe< Lazy< IfcStructuralReaction > > CausedBy; + // C++ wrapper for IfcDraughtingCallout + struct IfcDraughtingCallout : IfcGeometricRepresentationItem, ObjectHelper { IfcDraughtingCallout() : Object("IfcDraughtingCallout") {} + ListOf< IfcDraughtingCalloutElement, 1, 0 >::Out Contents; }; - // C++ wrapper for IfcDuctFittingType - struct IfcDuctFittingType : IfcFlowFittingType, ObjectHelper { IfcDuctFittingType() : Object("IfcDuctFittingType") {} - IfcDuctFittingTypeEnum::Out PredefinedType; + // C++ wrapper for IfcFace + struct IfcFace : IfcTopologicalRepresentationItem, ObjectHelper { IfcFace() : Object("IfcFace") {} + ListOf< Lazy< IfcFaceBound >, 1, 0 > Bounds; }; - // C++ wrapper for IfcCartesianTransformationOperator2D - struct IfcCartesianTransformationOperator2D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator2D() : Object("IfcCartesianTransformationOperator2D") {} + // C++ wrapper for IfcStructuralSurfaceMemberVarying + struct IfcStructuralSurfaceMemberVarying : IfcStructuralSurfaceMember, ObjectHelper { IfcStructuralSurfaceMemberVarying() : Object("IfcStructuralSurfaceMemberVarying") {} + ListOf< IfcPositiveLengthMeasure, 2, 0 >::Out SubsequentThickness; + Lazy< NotImplemented > VaryingThicknessLocation; + }; + + // C++ wrapper for IfcMotorConnectionType + struct IfcMotorConnectionType : IfcEnergyConversionDeviceType, ObjectHelper { IfcMotorConnectionType() : Object("IfcMotorConnectionType") {} + IfcMotorConnectionTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcAirToAirHeatRecoveryType + struct IfcAirToAirHeatRecoveryType : IfcEnergyConversionDeviceType, ObjectHelper { IfcAirToAirHeatRecoveryType() : Object("IfcAirToAirHeatRecoveryType") {} + IfcAirToAirHeatRecoveryTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPlateType + struct IfcPlateType : IfcBuildingElementType, ObjectHelper { IfcPlateType() : Object("IfcPlateType") {} + IfcPlateTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSolidModel + struct IfcSolidModel : IfcGeometricRepresentationItem, ObjectHelper { IfcSolidModel() : Object("IfcSolidModel") {} }; - // C++ wrapper for IfcCartesianTransformationOperator2DnonUniform - struct IfcCartesianTransformationOperator2DnonUniform : IfcCartesianTransformationOperator2D, ObjectHelper { IfcCartesianTransformationOperator2DnonUniform() : Object("IfcCartesianTransformationOperator2DnonUniform") {} - Maybe< REAL::Out > Scale2; + // C++ wrapper for IfcCsgSolid + struct IfcCsgSolid : IfcSolidModel, ObjectHelper { IfcCsgSolid() : Object("IfcCsgSolid") {} + IfcCsgSelect::Out TreeRootExpression; }; - // C++ wrapper for IfcVirtualElement - struct IfcVirtualElement : IfcElement, ObjectHelper { IfcVirtualElement() : Object("IfcVirtualElement") {} + // C++ wrapper for IfcMechanicalFastenerType + struct IfcMechanicalFastenerType : IfcFastenerType, ObjectHelper { IfcMechanicalFastenerType() : Object("IfcMechanicalFastenerType") {} }; - // C++ wrapper for IfcRightCircularCylinder - struct IfcRightCircularCylinder : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCylinder() : Object("IfcRightCircularCylinder") {} - IfcPositiveLengthMeasure::Out Height; - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcOutletType - struct IfcOutletType : IfcFlowTerminalType, ObjectHelper { IfcOutletType() : Object("IfcOutletType") {} - IfcOutletTypeEnum::Out PredefinedType; - }; - // C++ wrapper for IfcRelDecomposes struct IfcRelDecomposes : IfcRelationship, ObjectHelper { IfcRelDecomposes() : Object("IfcRelDecomposes") {} Lazy< IfcObjectDefinition > RelatingObject; ListOf< Lazy< IfcObjectDefinition >, 1, 0 > RelatedObjects; }; - // C++ wrapper for IfcCovering - struct IfcCovering : IfcBuildingElement, ObjectHelper { IfcCovering() : Object("IfcCovering") {} - Maybe< IfcCoveringTypeEnum::Out > PredefinedType; - }; - - // C++ wrapper for IfcPolyline - struct IfcPolyline : IfcBoundedCurve, ObjectHelper { IfcPolyline() : Object("IfcPolyline") {} - ListOf< Lazy< IfcCartesianPoint >, 2, 0 > Points; - }; - - // C++ wrapper for IfcPath - struct IfcPath : IfcTopologicalRepresentationItem, ObjectHelper { IfcPath() : Object("IfcPath") {} - ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; - }; - - // C++ wrapper for IfcElementComponent - struct IfcElementComponent : IfcElement, ObjectHelper { IfcElementComponent() : Object("IfcElementComponent") {} + // C++ wrapper for IfcElectricalElement + struct IfcElectricalElement : IfcElement, ObjectHelper { IfcElectricalElement() : Object("IfcElectricalElement") {} }; - // C++ wrapper for IfcFastener - struct IfcFastener : IfcElementComponent, ObjectHelper { IfcFastener() : Object("IfcFastener") {} - - }; - - // C++ wrapper for IfcMappedItem - struct IfcMappedItem : IfcRepresentationItem, ObjectHelper { IfcMappedItem() : Object("IfcMappedItem") {} - Lazy< IfcRepresentationMap > MappingSource; - Lazy< IfcCartesianTransformationOperator > MappingTarget; + // C++ wrapper for IfcColumnType + struct IfcColumnType : IfcBuildingElementType, ObjectHelper { IfcColumnType() : Object("IfcColumnType") {} + IfcColumnTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcRectangularPyramid @@ -2340,15 +2225,131 @@ namespace IFC { IfcPositiveLengthMeasure::Out Height; }; + // C++ wrapper for IfcActionRequest + struct IfcActionRequest : IfcControl, ObjectHelper { IfcActionRequest() : Object("IfcActionRequest") {} + IfcIdentifier::Out RequestID; + }; + + // C++ wrapper for IfcStructuralActivity + struct IfcStructuralActivity : IfcProduct, ObjectHelper { IfcStructuralActivity() : Object("IfcStructuralActivity") {} + Lazy< NotImplemented > AppliedLoad; + IfcGlobalOrLocalEnum::Out GlobalOrLocal; + }; + + // C++ wrapper for IfcStructuralReaction + struct IfcStructuralReaction : IfcStructuralActivity, ObjectHelper { IfcStructuralReaction() : Object("IfcStructuralReaction") {} + + }; + + // C++ wrapper for IfcStructuralPointReaction + struct IfcStructuralPointReaction : IfcStructuralReaction, ObjectHelper { IfcStructuralPointReaction() : Object("IfcStructuralPointReaction") {} + + }; + + // C++ wrapper for IfcStructuralAction + struct IfcStructuralAction : IfcStructuralActivity, ObjectHelper { IfcStructuralAction() : Object("IfcStructuralAction") {} + BOOLEAN::Out DestabilizingLoad; + Maybe< Lazy< IfcStructuralReaction > > CausedBy; + }; + + // C++ wrapper for IfcStructuralLinearAction + struct IfcStructuralLinearAction : IfcStructuralAction, ObjectHelper { IfcStructuralLinearAction() : Object("IfcStructuralLinearAction") {} + IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; + }; + + // C++ wrapper for IfcStructuralLinearActionVarying + struct IfcStructuralLinearActionVarying : IfcStructuralLinearAction, ObjectHelper { IfcStructuralLinearActionVarying() : Object("IfcStructuralLinearActionVarying") {} + Lazy< NotImplemented > VaryingAppliedLoadLocation; + ListOf< Lazy< NotImplemented >, 1, 0 > SubsequentAppliedLoads; + }; + // C++ wrapper for IfcCrewResource struct IfcCrewResource : IfcConstructionResource, ObjectHelper { IfcCrewResource() : Object("IfcCrewResource") {} }; - // C++ wrapper for IfcNamedUnit - struct IfcNamedUnit : ObjectHelper { IfcNamedUnit() : Object("IfcNamedUnit") {} - Lazy< NotImplemented > Dimensions; - IfcUnitEnum::Out UnitType; + // C++ wrapper for IfcChamferEdgeFeature + struct IfcChamferEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcChamferEdgeFeature() : Object("IfcChamferEdgeFeature") {} + Maybe< IfcPositiveLengthMeasure::Out > Width; + Maybe< IfcPositiveLengthMeasure::Out > Height; + }; + + // C++ wrapper for IfcCompositeCurve + struct IfcCompositeCurve : IfcBoundedCurve, ObjectHelper { IfcCompositeCurve() : Object("IfcCompositeCurve") {} + ListOf< Lazy< IfcCompositeCurveSegment >, 1, 0 > Segments; + LOGICAL::Out SelfIntersect; + }; + + // C++ wrapper for Ifc2DCompositeCurve + struct Ifc2DCompositeCurve : IfcCompositeCurve, ObjectHelper { Ifc2DCompositeCurve() : Object("Ifc2DCompositeCurve") {} + + }; + + // C++ wrapper for IfcGrid + struct IfcGrid : IfcProduct, ObjectHelper { IfcGrid() : Object("IfcGrid") {} + ListOf< Lazy< NotImplemented >, 1, 0 > UAxes; + ListOf< Lazy< NotImplemented >, 1, 0 > VAxes; + Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > WAxes; + }; + + // C++ wrapper for IfcTendon + struct IfcTendon : IfcReinforcingElement, ObjectHelper { IfcTendon() : Object("IfcTendon") {} + IfcTendonTypeEnum::Out PredefinedType; + IfcPositiveLengthMeasure::Out NominalDiameter; + IfcAreaMeasure::Out CrossSectionArea; + Maybe< IfcForceMeasure::Out > TensionForce; + Maybe< IfcPressureMeasure::Out > PreStress; + Maybe< IfcNormalisedRatioMeasure::Out > FrictionCoefficient; + Maybe< IfcPositiveLengthMeasure::Out > AnchorageSlip; + Maybe< IfcPositiveLengthMeasure::Out > MinCurvatureRadius; + }; + + // C++ wrapper for IfcRectangleProfileDef + struct IfcRectangleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcRectangleProfileDef() : Object("IfcRectangleProfileDef") {} + IfcPositiveLengthMeasure::Out XDim; + IfcPositiveLengthMeasure::Out YDim; + }; + + // C++ wrapper for IfcRoundedRectangleProfileDef + struct IfcRoundedRectangleProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRoundedRectangleProfileDef() : Object("IfcRoundedRectangleProfileDef") {} + IfcPositiveLengthMeasure::Out RoundingRadius; + }; + + // C++ wrapper for IfcBeamType + struct IfcBeamType : IfcBuildingElementType, ObjectHelper { IfcBeamType() : Object("IfcBeamType") {} + IfcBeamTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLampType + struct IfcLampType : IfcFlowTerminalType, ObjectHelper { IfcLampType() : Object("IfcLampType") {} + IfcLampTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLightSourceGoniometric + struct IfcLightSourceGoniometric : IfcLightSource, ObjectHelper { IfcLightSourceGoniometric() : Object("IfcLightSourceGoniometric") {} + Lazy< IfcAxis2Placement3D > Position; + Maybe< Lazy< IfcColourRgb > > ColourAppearance; + IfcThermodynamicTemperatureMeasure::Out ColourTemperature; + IfcLuminousFluxMeasure::Out LuminousFlux; + IfcLightEmissionSourceEnum::Out LightEmissionSource; + IfcLightDistributionDataSourceSelect::Out LightDistributionDataSource; + }; + + // C++ wrapper for IfcProductRepresentation + struct IfcProductRepresentation : ObjectHelper { IfcProductRepresentation() : Object("IfcProductRepresentation") {} + Maybe< IfcLabel::Out > Name; + Maybe< IfcText::Out > Description; + ListOf< Lazy< IfcRepresentation >, 1, 0 > Representations; + }; + + // C++ wrapper for IfcMaterialDefinitionRepresentation + struct IfcMaterialDefinitionRepresentation : IfcProductRepresentation, ObjectHelper { IfcMaterialDefinitionRepresentation() : Object("IfcMaterialDefinitionRepresentation") {} + Lazy< NotImplemented > RepresentedMaterial; + }; + + // C++ wrapper for IfcPermit + struct IfcPermit : IfcControl, ObjectHelper { IfcPermit() : Object("IfcPermit") {} + IfcIdentifier::Out PermitID; }; // C++ wrapper for IfcContextDependentUnit @@ -2356,42 +2357,564 @@ namespace IFC { IfcLabel::Out Name; }; - // C++ wrapper for IfcUnitaryEquipmentType - struct IfcUnitaryEquipmentType : IfcEnergyConversionDeviceType, ObjectHelper { IfcUnitaryEquipmentType() : Object("IfcUnitaryEquipmentType") {} - IfcUnitaryEquipmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRoof - struct IfcRoof : IfcBuildingElement, ObjectHelper { IfcRoof() : Object("IfcRoof") {} - IfcRoofTypeEnum::Out ShapeType; - }; - - // C++ wrapper for IfcStructuralMember - struct IfcStructuralMember : IfcStructuralItem, ObjectHelper { IfcStructuralMember() : Object("IfcStructuralMember") {} + // C++ wrapper for IfcFlowMovingDevice + struct IfcFlowMovingDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowMovingDevice() : Object("IfcFlowMovingDevice") {} }; - // C++ wrapper for IfcStyleModel - struct IfcStyleModel : IfcRepresentation, ObjectHelper { IfcStyleModel() : Object("IfcStyleModel") {} + // C++ wrapper for IfcColumn + struct IfcColumn : IfcBuildingElement, ObjectHelper { IfcColumn() : Object("IfcColumn") {} }; - // C++ wrapper for IfcStyledRepresentation - struct IfcStyledRepresentation : IfcStyleModel, ObjectHelper { IfcStyledRepresentation() : Object("IfcStyledRepresentation") {} + // C++ wrapper for IfcDistributionControlElement + struct IfcDistributionControlElement : IfcDistributionElement, ObjectHelper { IfcDistributionControlElement() : Object("IfcDistributionControlElement") {} + Maybe< IfcIdentifier::Out > ControlElementId; + }; + + // C++ wrapper for IfcProtectiveDeviceType + struct IfcProtectiveDeviceType : IfcFlowControllerType, ObjectHelper { IfcProtectiveDeviceType() : Object("IfcProtectiveDeviceType") {} + IfcProtectiveDeviceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowSegment + struct IfcFlowSegment : IfcDistributionFlowElement, ObjectHelper { IfcFlowSegment() : Object("IfcFlowSegment") {} }; - // C++ wrapper for IfcSpatialStructureElement - struct IfcSpatialStructureElement : IfcProduct, ObjectHelper { IfcSpatialStructureElement() : Object("IfcSpatialStructureElement") {} - Maybe< IfcLabel::Out > LongName; - IfcElementCompositionEnum::Out CompositionType; + // C++ wrapper for IfcCompressorType + struct IfcCompressorType : IfcFlowMovingDeviceType, ObjectHelper { IfcCompressorType() : Object("IfcCompressorType") {} + IfcCompressorTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcBuilding - struct IfcBuilding : IfcSpatialStructureElement, ObjectHelper { IfcBuilding() : Object("IfcBuilding") {} - Maybe< IfcLengthMeasure::Out > ElevationOfRefHeight; - Maybe< IfcLengthMeasure::Out > ElevationOfTerrain; - Maybe< Lazy< NotImplemented > > BuildingAddress; + // C++ wrapper for IfcCShapeProfileDef + struct IfcCShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCShapeProfileDef() : Object("IfcCShapeProfileDef") {} + IfcPositiveLengthMeasure::Out Depth; + IfcPositiveLengthMeasure::Out Width; + IfcPositiveLengthMeasure::Out WallThickness; + IfcPositiveLengthMeasure::Out Girth; + Maybe< IfcPositiveLengthMeasure::Out > InternalFilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; + }; + + // C++ wrapper for IfcTrapeziumProfileDef + struct IfcTrapeziumProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTrapeziumProfileDef() : Object("IfcTrapeziumProfileDef") {} + IfcPositiveLengthMeasure::Out BottomXDim; + IfcPositiveLengthMeasure::Out TopXDim; + IfcPositiveLengthMeasure::Out YDim; + IfcLengthMeasure::Out TopXOffset; + }; + + // C++ wrapper for IfcRelDefines + struct IfcRelDefines : IfcRelationship, ObjectHelper { IfcRelDefines() : Object("IfcRelDefines") {} + ListOf< Lazy< IfcObject >, 1, 0 > RelatedObjects; + }; + + // C++ wrapper for IfcTask + struct IfcTask : IfcProcess, ObjectHelper { IfcTask() : Object("IfcTask") {} + IfcIdentifier::Out TaskId; + Maybe< IfcLabel::Out > Status; + Maybe< IfcLabel::Out > WorkMethod; + BOOLEAN::Out IsMilestone; + Maybe< INTEGER::Out > Priority; + }; + + // C++ wrapper for IfcMove + struct IfcMove : IfcTask, ObjectHelper { IfcMove() : Object("IfcMove") {} + Lazy< IfcSpatialStructureElement > MoveFrom; + Lazy< IfcSpatialStructureElement > MoveTo; + Maybe< ListOf< IfcText, 1, 0 >::Out > PunchList; + }; + + // C++ wrapper for IfcLightSourceDirectional + struct IfcLightSourceDirectional : IfcLightSource, ObjectHelper { IfcLightSourceDirectional() : Object("IfcLightSourceDirectional") {} + Lazy< IfcDirection > Orientation; + }; + + // C++ wrapper for IfcCondenserType + struct IfcCondenserType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCondenserType() : Object("IfcCondenserType") {} + IfcCondenserTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcConic + struct IfcConic : IfcCurve, ObjectHelper { IfcConic() : Object("IfcConic") {} + IfcAxis2Placement::Out Position; + }; + + // C++ wrapper for IfcEllipse + struct IfcEllipse : IfcConic, ObjectHelper { IfcEllipse() : Object("IfcEllipse") {} + IfcPositiveLengthMeasure::Out SemiAxis1; + IfcPositiveLengthMeasure::Out SemiAxis2; + }; + + // C++ wrapper for IfcDoorStyle + struct IfcDoorStyle : IfcTypeProduct, ObjectHelper { IfcDoorStyle() : Object("IfcDoorStyle") {} + IfcDoorStyleOperationEnum::Out OperationType; + IfcDoorStyleConstructionEnum::Out ConstructionType; + BOOLEAN::Out ParameterTakesPrecedence; + BOOLEAN::Out Sizeable; + }; + + // C++ wrapper for IfcDistributionControlElementType + struct IfcDistributionControlElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionControlElementType() : Object("IfcDistributionControlElementType") {} + + }; + + // C++ wrapper for IfcSensorType + struct IfcSensorType : IfcDistributionControlElementType, ObjectHelper { IfcSensorType() : Object("IfcSensorType") {} + IfcSensorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcAnnotationFillAreaOccurrence + struct IfcAnnotationFillAreaOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationFillAreaOccurrence() : Object("IfcAnnotationFillAreaOccurrence") {} + Maybe< Lazy< IfcPoint > > FillStyleTarget; + Maybe< IfcGlobalOrLocalEnum::Out > GlobalOrLocal; + }; + + // C++ wrapper for IfcWall + struct IfcWall : IfcBuildingElement, ObjectHelper { IfcWall() : Object("IfcWall") {} + + }; + + // C++ wrapper for IfcFurnishingElementType + struct IfcFurnishingElementType : IfcElementType, ObjectHelper { IfcFurnishingElementType() : Object("IfcFurnishingElementType") {} + + }; + + // C++ wrapper for IfcFurnitureType + struct IfcFurnitureType : IfcFurnishingElementType, ObjectHelper { IfcFurnitureType() : Object("IfcFurnitureType") {} + IfcAssemblyPlaceEnum::Out AssemblyPlace; + }; + + // C++ wrapper for IfcControllerType + struct IfcControllerType : IfcDistributionControlElementType, ObjectHelper { IfcControllerType() : Object("IfcControllerType") {} + IfcControllerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowFitting + struct IfcFlowFitting : IfcDistributionFlowElement, ObjectHelper { IfcFlowFitting() : Object("IfcFlowFitting") {} + + }; + + // C++ wrapper for IfcRepresentationContext + struct IfcRepresentationContext : ObjectHelper { IfcRepresentationContext() : Object("IfcRepresentationContext") {} + Maybe< IfcLabel::Out > ContextIdentifier; + Maybe< IfcLabel::Out > ContextType; + }; + + // C++ wrapper for IfcRepresentationMap + struct IfcRepresentationMap : ObjectHelper { IfcRepresentationMap() : Object("IfcRepresentationMap") {} + IfcAxis2Placement::Out MappingOrigin; + Lazy< IfcRepresentation > MappedRepresentation; + }; + + // C++ wrapper for IfcDirection + struct IfcDirection : IfcGeometricRepresentationItem, ObjectHelper { IfcDirection() : Object("IfcDirection") {} + ListOf< REAL, 2, 3 >::Out DirectionRatios; + }; + + // C++ wrapper for IfcDimensionCurveDirectedCallout + struct IfcDimensionCurveDirectedCallout : IfcDraughtingCallout, ObjectHelper { IfcDimensionCurveDirectedCallout() : Object("IfcDimensionCurveDirectedCallout") {} + + }; + + // C++ wrapper for IfcAngularDimension + struct IfcAngularDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcAngularDimension() : Object("IfcAngularDimension") {} + + }; + + // C++ wrapper for IfcWorkControl + struct IfcWorkControl : IfcControl, ObjectHelper { IfcWorkControl() : Object("IfcWorkControl") {} + IfcIdentifier::Out Identifier; + IfcDateTimeSelect::Out CreationDate; + Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > Creators; + Maybe< IfcLabel::Out > Purpose; + Maybe< IfcTimeMeasure::Out > Duration; + Maybe< IfcTimeMeasure::Out > TotalFloat; + IfcDateTimeSelect::Out StartTime; + Maybe< IfcDateTimeSelect::Out > FinishTime; + Maybe< IfcWorkControlTypeEnum::Out > WorkControlType; + Maybe< IfcLabel::Out > UserDefinedControlType; + }; + + // C++ wrapper for IfcWorkPlan + struct IfcWorkPlan : IfcWorkControl, ObjectHelper { IfcWorkPlan() : Object("IfcWorkPlan") {} + + }; + + // C++ wrapper for IfcSpatialStructureElementType + struct IfcSpatialStructureElementType : IfcElementType, ObjectHelper { IfcSpatialStructureElementType() : Object("IfcSpatialStructureElementType") {} + + }; + + // C++ wrapper for IfcSpaceType + struct IfcSpaceType : IfcSpatialStructureElementType, ObjectHelper { IfcSpaceType() : Object("IfcSpaceType") {} + IfcSpaceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPort + struct IfcPort : IfcProduct, ObjectHelper { IfcPort() : Object("IfcPort") {} + + }; + + // C++ wrapper for IfcDistributionPort + struct IfcDistributionPort : IfcPort, ObjectHelper { IfcDistributionPort() : Object("IfcDistributionPort") {} + Maybe< IfcFlowDirectionEnum::Out > FlowDirection; + }; + + // C++ wrapper for IfcOrderAction + struct IfcOrderAction : IfcTask, ObjectHelper { IfcOrderAction() : Object("IfcOrderAction") {} + IfcIdentifier::Out ActionID; + }; + + // C++ wrapper for IfcBeam + struct IfcBeam : IfcBuildingElement, ObjectHelper { IfcBeam() : Object("IfcBeam") {} + + }; + + // C++ wrapper for IfcManifoldSolidBrep + struct IfcManifoldSolidBrep : IfcSolidModel, ObjectHelper { IfcManifoldSolidBrep() : Object("IfcManifoldSolidBrep") {} + Lazy< IfcClosedShell > Outer; + }; + + // C++ wrapper for IfcFacetedBrep + struct IfcFacetedBrep : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrep() : Object("IfcFacetedBrep") {} + + }; + + // C++ wrapper for IfcSurfaceStyleWithTextures + struct IfcSurfaceStyleWithTextures : ObjectHelper { IfcSurfaceStyleWithTextures() : Object("IfcSurfaceStyleWithTextures") {} + ListOf< Lazy< NotImplemented >, 1, 0 > Textures; + }; + + // C++ wrapper for IfcArbitraryClosedProfileDef + struct IfcArbitraryClosedProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryClosedProfileDef() : Object("IfcArbitraryClosedProfileDef") {} + Lazy< IfcCurve > OuterCurve; + }; + + // C++ wrapper for IfcHumidifierType + struct IfcHumidifierType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHumidifierType() : Object("IfcHumidifierType") {} + IfcHumidifierTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPolyLoop + struct IfcPolyLoop : IfcLoop, ObjectHelper { IfcPolyLoop() : Object("IfcPolyLoop") {} + ListOf< Lazy< IfcCartesianPoint >, 3, 0 > Polygon; + }; + + // C++ wrapper for IfcFlowFittingType + struct IfcFlowFittingType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowFittingType() : Object("IfcFlowFittingType") {} + + }; + + // C++ wrapper for IfcFillAreaStyleTiles + struct IfcFillAreaStyleTiles : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTiles() : Object("IfcFillAreaStyleTiles") {} + Lazy< IfcOneDirectionRepeatFactor > TilingPattern; + ListOf< IfcFillAreaStyleTileShapeSelect, 1, 0 >::Out Tiles; + IfcPositiveRatioMeasure::Out TilingScale; + }; + + // C++ wrapper for IfcVertex + struct IfcVertex : IfcTopologicalRepresentationItem, ObjectHelper { IfcVertex() : Object("IfcVertex") {} + + }; + + // C++ wrapper for IfcAnnotationFillArea + struct IfcAnnotationFillArea : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationFillArea() : Object("IfcAnnotationFillArea") {} + Lazy< IfcCurve > OuterBoundary; + Maybe< ListOf< Lazy< IfcCurve >, 1, 0 > > InnerBoundaries; + }; + + // C++ wrapper for IfcPlate + struct IfcPlate : IfcBuildingElement, ObjectHelper { IfcPlate() : Object("IfcPlate") {} + + }; + + // C++ wrapper for IfcRightCircularCone + struct IfcRightCircularCone : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCone() : Object("IfcRightCircularCone") {} + IfcPositiveLengthMeasure::Out Height; + IfcPositiveLengthMeasure::Out BottomRadius; + }; + + // C++ wrapper for IfcSurface + struct IfcSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcSurface() : Object("IfcSurface") {} + + }; + + // C++ wrapper for IfcBoundedSurface + struct IfcBoundedSurface : IfcSurface, ObjectHelper { IfcBoundedSurface() : Object("IfcBoundedSurface") {} + + }; + + // C++ wrapper for IfcStructuralLoadGroup + struct IfcStructuralLoadGroup : IfcGroup, ObjectHelper { IfcStructuralLoadGroup() : Object("IfcStructuralLoadGroup") {} + IfcLoadGroupTypeEnum::Out PredefinedType; + IfcActionTypeEnum::Out ActionType; + IfcActionSourceTypeEnum::Out ActionSource; + Maybe< IfcPositiveRatioMeasure::Out > Coefficient; + Maybe< IfcLabel::Out > Purpose; + }; + + // C++ wrapper for IfcGeometricRepresentationContext + struct IfcGeometricRepresentationContext : IfcRepresentationContext, ObjectHelper { IfcGeometricRepresentationContext() : Object("IfcGeometricRepresentationContext") {} + IfcDimensionCount::Out CoordinateSpaceDimension; + Maybe< REAL::Out > Precision; + IfcAxis2Placement::Out WorldCoordinateSystem; + Maybe< Lazy< IfcDirection > > TrueNorth; + }; + + // C++ wrapper for IfcTubeBundleType + struct IfcTubeBundleType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTubeBundleType() : Object("IfcTubeBundleType") {} + IfcTubeBundleTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcStructuralPlanarAction + struct IfcStructuralPlanarAction : IfcStructuralAction, ObjectHelper { IfcStructuralPlanarAction() : Object("IfcStructuralPlanarAction") {} + IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; + }; + + // C++ wrapper for IfcHeatExchangerType + struct IfcHeatExchangerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHeatExchangerType() : Object("IfcHeatExchangerType") {} + IfcHeatExchangerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFaceOuterBound + struct IfcFaceOuterBound : IfcFaceBound, ObjectHelper { IfcFaceOuterBound() : Object("IfcFaceOuterBound") {} + + }; + + // C++ wrapper for IfcSphere + struct IfcSphere : IfcCsgPrimitive3D, ObjectHelper { IfcSphere() : Object("IfcSphere") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcLightSourcePositional + struct IfcLightSourcePositional : IfcLightSource, ObjectHelper { IfcLightSourcePositional() : Object("IfcLightSourcePositional") {} + Lazy< IfcCartesianPoint > Position; + IfcPositiveLengthMeasure::Out Radius; + IfcReal::Out ConstantAttenuation; + IfcReal::Out DistanceAttenuation; + IfcReal::Out QuadricAttenuation; + }; + + // C++ wrapper for IfcStructuralPointAction + struct IfcStructuralPointAction : IfcStructuralAction, ObjectHelper { IfcStructuralPointAction() : Object("IfcStructuralPointAction") {} + + }; + + // C++ wrapper for IfcFlowSegmentType + struct IfcFlowSegmentType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowSegmentType() : Object("IfcFlowSegmentType") {} + + }; + + // C++ wrapper for IfcFireSuppressionTerminalType + struct IfcFireSuppressionTerminalType : IfcFlowTerminalType, ObjectHelper { IfcFireSuppressionTerminalType() : Object("IfcFireSuppressionTerminalType") {} + IfcFireSuppressionTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPropertySingleValue + struct IfcPropertySingleValue : IfcSimpleProperty, ObjectHelper { IfcPropertySingleValue() : Object("IfcPropertySingleValue") {} + Maybe< IfcValue::Out > NominalValue; + Maybe< IfcUnit::Out > Unit; + }; + + // C++ wrapper for IfcFaceBasedSurfaceModel + struct IfcFaceBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcFaceBasedSurfaceModel() : Object("IfcFaceBasedSurfaceModel") {} + ListOf< Lazy< IfcConnectedFaceSet >, 1, 0 > FbsmFaces; + }; + + // C++ wrapper for IfcAxis2Placement3D + struct IfcAxis2Placement3D : IfcPlacement, ObjectHelper { IfcAxis2Placement3D() : Object("IfcAxis2Placement3D") {} + Maybe< Lazy< IfcDirection > > Axis; + Maybe< Lazy< IfcDirection > > RefDirection; + }; + + // C++ wrapper for IfcStructuralResultGroup + struct IfcStructuralResultGroup : IfcGroup, ObjectHelper { IfcStructuralResultGroup() : Object("IfcStructuralResultGroup") {} + IfcAnalysisTheoryTypeEnum::Out TheoryType; + Maybe< Lazy< IfcStructuralLoadGroup > > ResultForLoadGroup; + BOOLEAN::Out IsLinear; + }; + + // C++ wrapper for IfcHalfSpaceSolid + struct IfcHalfSpaceSolid : IfcGeometricRepresentationItem, ObjectHelper { IfcHalfSpaceSolid() : Object("IfcHalfSpaceSolid") {} + Lazy< IfcSurface > BaseSurface; + BOOLEAN::Out AgreementFlag; + }; + + // C++ wrapper for IfcGasTerminalType + struct IfcGasTerminalType : IfcFlowTerminalType, ObjectHelper { IfcGasTerminalType() : Object("IfcGasTerminalType") {} + IfcGasTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcMember + struct IfcMember : IfcBuildingElement, ObjectHelper { IfcMember() : Object("IfcMember") {} + + }; + + // C++ wrapper for IfcPropertySet + struct IfcPropertySet : IfcPropertySetDefinition, ObjectHelper { IfcPropertySet() : Object("IfcPropertySet") {} + ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; + }; + + // C++ wrapper for IfcCondition + struct IfcCondition : IfcGroup, ObjectHelper { IfcCondition() : Object("IfcCondition") {} + + }; + + // C++ wrapper for IfcPropertyEnumeratedValue + struct IfcPropertyEnumeratedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyEnumeratedValue() : Object("IfcPropertyEnumeratedValue") {} + ListOf< IfcValue, 1, 0 >::Out EnumerationValues; + Maybe< Lazy< NotImplemented > > EnumerationReference; + }; + + // C++ wrapper for IfcDistributionChamberElementType + struct IfcDistributionChamberElementType : IfcDistributionFlowElementType, ObjectHelper { IfcDistributionChamberElementType() : Object("IfcDistributionChamberElementType") {} + IfcDistributionChamberElementTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcTextLiteralWithExtent + struct IfcTextLiteralWithExtent : IfcTextLiteral, ObjectHelper { IfcTextLiteralWithExtent() : Object("IfcTextLiteralWithExtent") {} + Lazy< IfcPlanarExtent > Extent; + IfcBoxAlignment::Out BoxAlignment; + }; + + // C++ wrapper for IfcFlowController + struct IfcFlowController : IfcDistributionFlowElement, ObjectHelper { IfcFlowController() : Object("IfcFlowController") {} + + }; + + // C++ wrapper for IfcElectricDistributionPoint + struct IfcElectricDistributionPoint : IfcFlowController, ObjectHelper { IfcElectricDistributionPoint() : Object("IfcElectricDistributionPoint") {} + IfcElectricDistributionPointFunctionEnum::Out DistributionPointFunction; + Maybe< IfcLabel::Out > UserDefinedFunction; + }; + + // C++ wrapper for IfcTransportElement + struct IfcTransportElement : IfcElement, ObjectHelper { IfcTransportElement() : Object("IfcTransportElement") {} + Maybe< IfcTransportElementTypeEnum::Out > OperationType; + Maybe< IfcMassMeasure::Out > CapacityByWeight; + Maybe< IfcCountMeasure::Out > CapacityByNumber; + }; + + // C++ wrapper for IfcAsset + struct IfcAsset : IfcGroup, ObjectHelper { IfcAsset() : Object("IfcAsset") {} + IfcIdentifier::Out AssetID; + Lazy< NotImplemented > OriginalValue; + Lazy< NotImplemented > CurrentValue; + Lazy< NotImplemented > TotalReplacementCost; + IfcActorSelect::Out Owner; + IfcActorSelect::Out User; + Lazy< NotImplemented > ResponsiblePerson; + Lazy< NotImplemented > IncorporationDate; + Lazy< NotImplemented > DepreciatedValue; + }; + + // C++ wrapper for IfcSweptAreaSolid + struct IfcSweptAreaSolid : IfcSolidModel, ObjectHelper { IfcSweptAreaSolid() : Object("IfcSweptAreaSolid") {} + Lazy< IfcProfileDef > SweptArea; + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcRevolvedAreaSolid + struct IfcRevolvedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcRevolvedAreaSolid() : Object("IfcRevolvedAreaSolid") {} + Lazy< IfcAxis1Placement > Axis; + IfcPlaneAngleMeasure::Out Angle; + }; + + // C++ wrapper for IfcFlowInstrumentType + struct IfcFlowInstrumentType : IfcDistributionControlElementType, ObjectHelper { IfcFlowInstrumentType() : Object("IfcFlowInstrumentType") {} + IfcFlowInstrumentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcEnergyConversionDevice + struct IfcEnergyConversionDevice : IfcDistributionFlowElement, ObjectHelper { IfcEnergyConversionDevice() : Object("IfcEnergyConversionDevice") {} + + }; + + // C++ wrapper for IfcSurfaceStyleShading + struct IfcSurfaceStyleShading : ObjectHelper { IfcSurfaceStyleShading() : Object("IfcSurfaceStyleShading") {} + Lazy< IfcColourRgb > SurfaceColour; + }; + + // C++ wrapper for IfcSurfaceStyleRendering + struct IfcSurfaceStyleRendering : IfcSurfaceStyleShading, ObjectHelper { IfcSurfaceStyleRendering() : Object("IfcSurfaceStyleRendering") {} + Maybe< IfcNormalisedRatioMeasure::Out > Transparency; + Maybe< IfcColourOrFactor::Out > DiffuseColour; + Maybe< IfcColourOrFactor::Out > TransmissionColour; + Maybe< IfcColourOrFactor::Out > DiffuseTransmissionColour; + Maybe< IfcColourOrFactor::Out > ReflectionColour; + Maybe< IfcColourOrFactor::Out > SpecularColour; + Maybe< IfcSpecularHighlightSelect::Out > SpecularHighlight; + IfcReflectanceMethodEnum::Out ReflectanceMethod; + }; + + // C++ wrapper for IfcBoilerType + struct IfcBoilerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcBoilerType() : Object("IfcBoilerType") {} + IfcBoilerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcBuildingElementProxy + struct IfcBuildingElementProxy : IfcBuildingElement, ObjectHelper { IfcBuildingElementProxy() : Object("IfcBuildingElementProxy") {} + Maybe< IfcElementCompositionEnum::Out > CompositionType; + }; + + // C++ wrapper for IfcLocalPlacement + struct IfcLocalPlacement : IfcObjectPlacement, ObjectHelper { IfcLocalPlacement() : Object("IfcLocalPlacement") {} + Maybe< Lazy< IfcObjectPlacement > > PlacementRelTo; + IfcAxis2Placement::Out RelativePlacement; + }; + + // C++ wrapper for IfcZone + struct IfcZone : IfcGroup, ObjectHelper { IfcZone() : Object("IfcZone") {} + + }; + + // C++ wrapper for IfcStair + struct IfcStair : IfcBuildingElement, ObjectHelper { IfcStair() : Object("IfcStair") {} + IfcStairTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcWallStandardCase + struct IfcWallStandardCase : IfcWall, ObjectHelper { IfcWallStandardCase() : Object("IfcWallStandardCase") {} + + }; + + // C++ wrapper for IfcDiameterDimension + struct IfcDiameterDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcDiameterDimension() : Object("IfcDiameterDimension") {} + + }; + + // C++ wrapper for IfcDuctSegmentType + struct IfcDuctSegmentType : IfcFlowSegmentType, ObjectHelper { IfcDuctSegmentType() : Object("IfcDuctSegmentType") {} + IfcDuctSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcJunctionBoxType + struct IfcJunctionBoxType : IfcFlowFittingType, ObjectHelper { IfcJunctionBoxType() : Object("IfcJunctionBoxType") {} + IfcJunctionBoxTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCartesianTransformationOperator3DnonUniform + struct IfcCartesianTransformationOperator3DnonUniform : IfcCartesianTransformationOperator3D, ObjectHelper { IfcCartesianTransformationOperator3DnonUniform() : Object("IfcCartesianTransformationOperator3DnonUniform") {} + Maybe< REAL::Out > Scale2; + Maybe< REAL::Out > Scale3; + }; + + // C++ wrapper for IfcInventory + struct IfcInventory : IfcGroup, ObjectHelper { IfcInventory() : Object("IfcInventory") {} + IfcInventoryTypeEnum::Out InventoryType; + IfcActorSelect::Out Jurisdiction; + ListOf< Lazy< NotImplemented >, 1, 0 > ResponsiblePersons; + Lazy< NotImplemented > LastUpdateDate; + Maybe< Lazy< NotImplemented > > CurrentValue; + Maybe< Lazy< NotImplemented > > OriginalValue; + }; + + // C++ wrapper for IfcConditionCriterion + struct IfcConditionCriterion : IfcControl, ObjectHelper { IfcConditionCriterion() : Object("IfcConditionCriterion") {} + IfcConditionCriterionSelect::Out Criterion; + IfcDateTimeSelect::Out CriterionDateTime; }; // C++ wrapper for IfcConnectedFaceSet @@ -2404,39 +2927,37 @@ namespace IFC { }; - // C++ wrapper for IfcFacetedBrep - struct IfcFacetedBrep : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrep() : Object("IfcFacetedBrep") {} + // C++ wrapper for IfcDoor + struct IfcDoor : IfcBuildingElement, ObjectHelper { IfcDoor() : Object("IfcDoor") {} + Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; + Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; + }; + + // C++ wrapper for IfcBezierCurve + struct IfcBezierCurve : IfcBSplineCurve, ObjectHelper { IfcBezierCurve() : Object("IfcBezierCurve") {} }; - // C++ wrapper for IfcConic - struct IfcConic : IfcCurve, ObjectHelper { IfcConic() : Object("IfcConic") {} - IfcAxis2Placement::Out Position; + // C++ wrapper for IfcRationalBezierCurve + struct IfcRationalBezierCurve : IfcBezierCurve, ObjectHelper { IfcRationalBezierCurve() : Object("IfcRationalBezierCurve") {} + ListOf< REAL, 2, 0 >::Out WeightsData; }; - // C++ wrapper for IfcCoveringType - struct IfcCoveringType : IfcBuildingElementType, ObjectHelper { IfcCoveringType() : Object("IfcCoveringType") {} - IfcCoveringTypeEnum::Out PredefinedType; + // C++ wrapper for IfcArbitraryProfileDefWithVoids + struct IfcArbitraryProfileDefWithVoids : IfcArbitraryClosedProfileDef, ObjectHelper { IfcArbitraryProfileDefWithVoids() : Object("IfcArbitraryProfileDefWithVoids") {} + ListOf< Lazy< IfcCurve >, 1, 0 > InnerCurves; }; - // C++ wrapper for IfcRoundedRectangleProfileDef - struct IfcRoundedRectangleProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRoundedRectangleProfileDef() : Object("IfcRoundedRectangleProfileDef") {} - IfcPositiveLengthMeasure::Out RoundingRadius; + // C++ wrapper for IfcBooleanResult + struct IfcBooleanResult : IfcGeometricRepresentationItem, ObjectHelper { IfcBooleanResult() : Object("IfcBooleanResult") {} + IfcBooleanOperator::Out Operator; + IfcBooleanOperand::Out FirstOperand; + IfcBooleanOperand::Out SecondOperand; }; - // C++ wrapper for IfcAirTerminalType - struct IfcAirTerminalType : IfcFlowTerminalType, ObjectHelper { IfcAirTerminalType() : Object("IfcAirTerminalType") {} - IfcAirTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowMovingDeviceType - struct IfcFlowMovingDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowMovingDeviceType() : Object("IfcFlowMovingDeviceType") {} - - }; - - // C++ wrapper for IfcCompressorType - struct IfcCompressorType : IfcFlowMovingDeviceType, ObjectHelper { IfcCompressorType() : Object("IfcCompressorType") {} - IfcCompressorTypeEnum::Out PredefinedType; + // C++ wrapper for IfcStackTerminalType + struct IfcStackTerminalType : IfcFlowTerminalType, ObjectHelper { IfcStackTerminalType() : Object("IfcStackTerminalType") {} + IfcStackTerminalTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcIShapeProfileDef @@ -2456,128 +2977,14 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcControllerType - struct IfcControllerType : IfcDistributionControlElementType, ObjectHelper { IfcControllerType() : Object("IfcControllerType") {} - IfcControllerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRailing - struct IfcRailing : IfcBuildingElement, ObjectHelper { IfcRailing() : Object("IfcRailing") {} - Maybe< IfcRailingTypeEnum::Out > PredefinedType; - }; - - // C++ wrapper for IfcGroup - struct IfcGroup : IfcObject, ObjectHelper { IfcGroup() : Object("IfcGroup") {} + // C++ wrapper for IfcEquipmentElement + struct IfcEquipmentElement : IfcElement, ObjectHelper { IfcEquipmentElement() : Object("IfcEquipmentElement") {} }; - // C++ wrapper for IfcAsset - struct IfcAsset : IfcGroup, ObjectHelper { IfcAsset() : Object("IfcAsset") {} - IfcIdentifier::Out AssetID; - Lazy< NotImplemented > OriginalValue; - Lazy< NotImplemented > CurrentValue; - Lazy< NotImplemented > TotalReplacementCost; - IfcActorSelect::Out Owner; - IfcActorSelect::Out User; - Lazy< NotImplemented > ResponsiblePerson; - Lazy< NotImplemented > IncorporationDate; - Lazy< NotImplemented > DepreciatedValue; - }; + // C++ wrapper for IfcClosedShell + struct IfcClosedShell : IfcConnectedFaceSet, ObjectHelper { IfcClosedShell() : Object("IfcClosedShell") {} - // C++ wrapper for IfcMaterialDefinitionRepresentation - struct IfcMaterialDefinitionRepresentation : IfcProductRepresentation, ObjectHelper { IfcMaterialDefinitionRepresentation() : Object("IfcMaterialDefinitionRepresentation") {} - Lazy< NotImplemented > RepresentedMaterial; - }; - - // C++ wrapper for IfcRailingType - struct IfcRailingType : IfcBuildingElementType, ObjectHelper { IfcRailingType() : Object("IfcRailingType") {} - IfcRailingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcWall - struct IfcWall : IfcBuildingElement, ObjectHelper { IfcWall() : Object("IfcWall") {} - - }; - - // C++ wrapper for IfcStructuralPointConnection - struct IfcStructuralPointConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralPointConnection() : Object("IfcStructuralPointConnection") {} - - }; - - // C++ wrapper for IfcPropertyListValue - struct IfcPropertyListValue : IfcSimpleProperty, ObjectHelper { IfcPropertyListValue() : Object("IfcPropertyListValue") {} - ListOf< IfcValue, 1, 0 >::Out ListValues; - Maybe< IfcUnit::Out > Unit; - }; - - // C++ wrapper for IfcFurnitureStandard - struct IfcFurnitureStandard : IfcControl, ObjectHelper { IfcFurnitureStandard() : Object("IfcFurnitureStandard") {} - - }; - - // C++ wrapper for IfcElectricGeneratorType - struct IfcElectricGeneratorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricGeneratorType() : Object("IfcElectricGeneratorType") {} - IfcElectricGeneratorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDoor - struct IfcDoor : IfcBuildingElement, ObjectHelper { IfcDoor() : Object("IfcDoor") {} - Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; - Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; - }; - - // C++ wrapper for IfcStyledItem - struct IfcStyledItem : IfcRepresentationItem, ObjectHelper { IfcStyledItem() : Object("IfcStyledItem") {} - Maybe< Lazy< IfcRepresentationItem > > Item; - ListOf< Lazy< IfcPresentationStyleAssignment >, 1, 0 > Styles; - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcAnnotationOccurrence - struct IfcAnnotationOccurrence : IfcStyledItem, ObjectHelper { IfcAnnotationOccurrence() : Object("IfcAnnotationOccurrence") {} - - }; - - // C++ wrapper for IfcAnnotationSymbolOccurrence - struct IfcAnnotationSymbolOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSymbolOccurrence() : Object("IfcAnnotationSymbolOccurrence") {} - - }; - - // C++ wrapper for IfcArbitraryClosedProfileDef - struct IfcArbitraryClosedProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryClosedProfileDef() : Object("IfcArbitraryClosedProfileDef") {} - Lazy< IfcCurve > OuterCurve; - }; - - // C++ wrapper for IfcArbitraryProfileDefWithVoids - struct IfcArbitraryProfileDefWithVoids : IfcArbitraryClosedProfileDef, ObjectHelper { IfcArbitraryProfileDefWithVoids() : Object("IfcArbitraryProfileDefWithVoids") {} - ListOf< Lazy< IfcCurve >, 1, 0 > InnerCurves; - }; - - // C++ wrapper for IfcLine - struct IfcLine : IfcCurve, ObjectHelper { IfcLine() : Object("IfcLine") {} - Lazy< IfcCartesianPoint > Pnt; - Lazy< IfcVector > Dir; - }; - - // C++ wrapper for IfcFlowSegmentType - struct IfcFlowSegmentType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowSegmentType() : Object("IfcFlowSegmentType") {} - - }; - - // C++ wrapper for IfcAirTerminalBoxType - struct IfcAirTerminalBoxType : IfcFlowControllerType, ObjectHelper { IfcAirTerminalBoxType() : Object("IfcAirTerminalBoxType") {} - IfcAirTerminalBoxTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPropertySingleValue - struct IfcPropertySingleValue : IfcSimpleProperty, ObjectHelper { IfcPropertySingleValue() : Object("IfcPropertySingleValue") {} - Maybe< IfcValue::Out > NominalValue; - Maybe< IfcUnit::Out > Unit; - }; - - // C++ wrapper for IfcAlarmType - struct IfcAlarmType : IfcDistributionControlElementType, ObjectHelper { IfcAlarmType() : Object("IfcAlarmType") {} - IfcAlarmTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcEllipseProfileDef @@ -2586,303 +2993,16 @@ namespace IFC { IfcPositiveLengthMeasure::Out SemiAxis2; }; - // C++ wrapper for IfcStair - struct IfcStair : IfcBuildingElement, ObjectHelper { IfcStair() : Object("IfcStair") {} - IfcStairTypeEnum::Out ShapeType; + // C++ wrapper for IfcPropertyBoundedValue + struct IfcPropertyBoundedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyBoundedValue() : Object("IfcPropertyBoundedValue") {} + Maybe< IfcValue::Out > UpperBoundValue; + Maybe< IfcValue::Out > LowerBoundValue; + Maybe< IfcUnit::Out > Unit; }; - // C++ wrapper for IfcSurfaceStyleShading - struct IfcSurfaceStyleShading : ObjectHelper { IfcSurfaceStyleShading() : Object("IfcSurfaceStyleShading") {} - Lazy< IfcColourRgb > SurfaceColour; - }; - - // C++ wrapper for IfcPumpType - struct IfcPumpType : IfcFlowMovingDeviceType, ObjectHelper { IfcPumpType() : Object("IfcPumpType") {} - IfcPumpTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDefinedSymbol - struct IfcDefinedSymbol : IfcGeometricRepresentationItem, ObjectHelper { IfcDefinedSymbol() : Object("IfcDefinedSymbol") {} - IfcDefinedSymbolSelect::Out Definition; - Lazy< IfcCartesianTransformationOperator2D > Target; - }; - - // C++ wrapper for IfcElementComponentType - struct IfcElementComponentType : IfcElementType, ObjectHelper { IfcElementComponentType() : Object("IfcElementComponentType") {} - - }; - - // C++ wrapper for IfcFastenerType - struct IfcFastenerType : IfcElementComponentType, ObjectHelper { IfcFastenerType() : Object("IfcFastenerType") {} - - }; - - // C++ wrapper for IfcMechanicalFastenerType - struct IfcMechanicalFastenerType : IfcFastenerType, ObjectHelper { IfcMechanicalFastenerType() : Object("IfcMechanicalFastenerType") {} - - }; - - // C++ wrapper for IfcFlowFitting - struct IfcFlowFitting : IfcDistributionFlowElement, ObjectHelper { IfcFlowFitting() : Object("IfcFlowFitting") {} - - }; - - // C++ wrapper for IfcLightSourceDirectional - struct IfcLightSourceDirectional : IfcLightSource, ObjectHelper { IfcLightSourceDirectional() : Object("IfcLightSourceDirectional") {} - Lazy< IfcDirection > Orientation; - }; - - // C++ wrapper for IfcSurfaceStyle - struct IfcSurfaceStyle : IfcPresentationStyle, ObjectHelper { IfcSurfaceStyle() : Object("IfcSurfaceStyle") {} - IfcSurfaceSide::Out Side; - ListOf< IfcSurfaceStyleElementSelect, 1, 5 >::Out Styles; - }; - - // C++ wrapper for IfcAnnotationSurface - struct IfcAnnotationSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationSurface() : Object("IfcAnnotationSurface") {} - Lazy< IfcGeometricRepresentationItem > Item; - Maybe< Lazy< NotImplemented > > TextureCoordinates; - }; - - // C++ wrapper for IfcFlowController - struct IfcFlowController : IfcDistributionFlowElement, ObjectHelper { IfcFlowController() : Object("IfcFlowController") {} - - }; - - // C++ wrapper for IfcBuildingStorey - struct IfcBuildingStorey : IfcSpatialStructureElement, ObjectHelper { IfcBuildingStorey() : Object("IfcBuildingStorey") {} - Maybe< IfcLengthMeasure::Out > Elevation; - }; - - // C++ wrapper for IfcWorkControl - struct IfcWorkControl : IfcControl, ObjectHelper { IfcWorkControl() : Object("IfcWorkControl") {} - IfcIdentifier::Out Identifier; - IfcDateTimeSelect::Out CreationDate; - Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > Creators; - Maybe< IfcLabel::Out > Purpose; - Maybe< IfcTimeMeasure::Out > Duration; - Maybe< IfcTimeMeasure::Out > TotalFloat; - IfcDateTimeSelect::Out StartTime; - Maybe< IfcDateTimeSelect::Out > FinishTime; - Maybe< IfcWorkControlTypeEnum::Out > WorkControlType; - Maybe< IfcLabel::Out > UserDefinedControlType; - }; - - // C++ wrapper for IfcWorkSchedule - struct IfcWorkSchedule : IfcWorkControl, ObjectHelper { IfcWorkSchedule() : Object("IfcWorkSchedule") {} - - }; - - // C++ wrapper for IfcDuctSegmentType - struct IfcDuctSegmentType : IfcFlowSegmentType, ObjectHelper { IfcDuctSegmentType() : Object("IfcDuctSegmentType") {} - IfcDuctSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFace - struct IfcFace : IfcTopologicalRepresentationItem, ObjectHelper { IfcFace() : Object("IfcFace") {} - ListOf< Lazy< IfcFaceBound >, 1, 0 > Bounds; - }; - - // C++ wrapper for IfcStructuralSurfaceMember - struct IfcStructuralSurfaceMember : IfcStructuralMember, ObjectHelper { IfcStructuralSurfaceMember() : Object("IfcStructuralSurfaceMember") {} - IfcStructuralSurfaceTypeEnum::Out PredefinedType; - Maybe< IfcPositiveLengthMeasure::Out > Thickness; - }; - - // C++ wrapper for IfcStructuralSurfaceMemberVarying - struct IfcStructuralSurfaceMemberVarying : IfcStructuralSurfaceMember, ObjectHelper { IfcStructuralSurfaceMemberVarying() : Object("IfcStructuralSurfaceMemberVarying") {} - ListOf< IfcPositiveLengthMeasure, 2, 0 >::Out SubsequentThickness; - Lazy< NotImplemented > VaryingThicknessLocation; - }; - - // C++ wrapper for IfcFaceSurface - struct IfcFaceSurface : IfcFace, ObjectHelper { IfcFaceSurface() : Object("IfcFaceSurface") {} - Lazy< IfcSurface > FaceSurface; - BOOLEAN::Out SameSense; - }; - - // C++ wrapper for IfcCostSchedule - struct IfcCostSchedule : IfcControl, ObjectHelper { IfcCostSchedule() : Object("IfcCostSchedule") {} - Maybe< IfcActorSelect::Out > SubmittedBy; - Maybe< IfcActorSelect::Out > PreparedBy; - Maybe< IfcDateTimeSelect::Out > SubmittedOn; - Maybe< IfcLabel::Out > Status; - Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > TargetUsers; - Maybe< IfcDateTimeSelect::Out > UpdateDate; - IfcIdentifier::Out ID; - IfcCostScheduleTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPlanarExtent - struct IfcPlanarExtent : IfcGeometricRepresentationItem, ObjectHelper { IfcPlanarExtent() : Object("IfcPlanarExtent") {} - IfcLengthMeasure::Out SizeInX; - IfcLengthMeasure::Out SizeInY; - }; - - // C++ wrapper for IfcPlanarBox - struct IfcPlanarBox : IfcPlanarExtent, ObjectHelper { IfcPlanarBox() : Object("IfcPlanarBox") {} - IfcAxis2Placement::Out Placement; - }; - - // C++ wrapper for IfcColourSpecification - struct IfcColourSpecification : ObjectHelper { IfcColourSpecification() : Object("IfcColourSpecification") {} - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcVector - struct IfcVector : IfcGeometricRepresentationItem, ObjectHelper { IfcVector() : Object("IfcVector") {} - Lazy< IfcDirection > Orientation; - IfcLengthMeasure::Out Magnitude; - }; - - // C++ wrapper for IfcBeam - struct IfcBeam : IfcBuildingElement, ObjectHelper { IfcBeam() : Object("IfcBeam") {} - - }; - - // C++ wrapper for IfcColourRgb - struct IfcColourRgb : IfcColourSpecification, ObjectHelper { IfcColourRgb() : Object("IfcColourRgb") {} - IfcNormalisedRatioMeasure::Out Red; - IfcNormalisedRatioMeasure::Out Green; - IfcNormalisedRatioMeasure::Out Blue; - }; - - // C++ wrapper for IfcStructuralPlanarAction - struct IfcStructuralPlanarAction : IfcStructuralAction, ObjectHelper { IfcStructuralPlanarAction() : Object("IfcStructuralPlanarAction") {} - IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; - }; - - // C++ wrapper for IfcStructuralPlanarActionVarying - struct IfcStructuralPlanarActionVarying : IfcStructuralPlanarAction, ObjectHelper { IfcStructuralPlanarActionVarying() : Object("IfcStructuralPlanarActionVarying") {} - Lazy< NotImplemented > VaryingAppliedLoadLocation; - ListOf< Lazy< NotImplemented >, 2, 0 > SubsequentAppliedLoads; - }; - - // C++ wrapper for IfcSite - struct IfcSite : IfcSpatialStructureElement, ObjectHelper { IfcSite() : Object("IfcSite") {} - Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLatitude; - Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLongitude; - Maybe< IfcLengthMeasure::Out > RefElevation; - Maybe< IfcLabel::Out > LandTitleNumber; - Maybe< Lazy< NotImplemented > > SiteAddress; - }; - - // C++ wrapper for IfcDiscreteAccessoryType - struct IfcDiscreteAccessoryType : IfcElementComponentType, ObjectHelper { IfcDiscreteAccessoryType() : Object("IfcDiscreteAccessoryType") {} - - }; - - // C++ wrapper for IfcVibrationIsolatorType - struct IfcVibrationIsolatorType : IfcDiscreteAccessoryType, ObjectHelper { IfcVibrationIsolatorType() : Object("IfcVibrationIsolatorType") {} - IfcVibrationIsolatorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEvaporativeCoolerType - struct IfcEvaporativeCoolerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporativeCoolerType() : Object("IfcEvaporativeCoolerType") {} - IfcEvaporativeCoolerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDistributionChamberElementType - struct IfcDistributionChamberElementType : IfcDistributionFlowElementType, ObjectHelper { IfcDistributionChamberElementType() : Object("IfcDistributionChamberElementType") {} - IfcDistributionChamberElementTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFeatureElementAddition - struct IfcFeatureElementAddition : IfcFeatureElement, ObjectHelper { IfcFeatureElementAddition() : Object("IfcFeatureElementAddition") {} - - }; - - // C++ wrapper for IfcStructuredDimensionCallout - struct IfcStructuredDimensionCallout : IfcDraughtingCallout, ObjectHelper { IfcStructuredDimensionCallout() : Object("IfcStructuredDimensionCallout") {} - - }; - - // C++ wrapper for IfcCoolingTowerType - struct IfcCoolingTowerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoolingTowerType() : Object("IfcCoolingTowerType") {} - IfcCoolingTowerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCenterLineProfileDef - struct IfcCenterLineProfileDef : IfcArbitraryOpenProfileDef, ObjectHelper { IfcCenterLineProfileDef() : Object("IfcCenterLineProfileDef") {} - IfcPositiveLengthMeasure::Out Thickness; - }; - - // C++ wrapper for IfcWindowStyle - struct IfcWindowStyle : IfcTypeProduct, ObjectHelper { IfcWindowStyle() : Object("IfcWindowStyle") {} - IfcWindowStyleConstructionEnum::Out ConstructionType; - IfcWindowStyleOperationEnum::Out OperationType; - BOOLEAN::Out ParameterTakesPrecedence; - BOOLEAN::Out Sizeable; - }; - - // C++ wrapper for IfcLightSourceGoniometric - struct IfcLightSourceGoniometric : IfcLightSource, ObjectHelper { IfcLightSourceGoniometric() : Object("IfcLightSourceGoniometric") {} - Lazy< IfcAxis2Placement3D > Position; - Maybe< Lazy< IfcColourRgb > > ColourAppearance; - IfcThermodynamicTemperatureMeasure::Out ColourTemperature; - IfcLuminousFluxMeasure::Out LuminousFlux; - IfcLightEmissionSourceEnum::Out LightEmissionSource; - IfcLightDistributionDataSourceSelect::Out LightDistributionDataSource; - }; - - // C++ wrapper for IfcTransformerType - struct IfcTransformerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTransformerType() : Object("IfcTransformerType") {} - IfcTransformerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMemberType - struct IfcMemberType : IfcBuildingElementType, ObjectHelper { IfcMemberType() : Object("IfcMemberType") {} - IfcMemberTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSurfaceOfLinearExtrusion - struct IfcSurfaceOfLinearExtrusion : IfcSweptSurface, ObjectHelper { IfcSurfaceOfLinearExtrusion() : Object("IfcSurfaceOfLinearExtrusion") {} - Lazy< IfcDirection > ExtrudedDirection; - IfcLengthMeasure::Out Depth; - }; - - // C++ wrapper for IfcMotorConnectionType - struct IfcMotorConnectionType : IfcEnergyConversionDeviceType, ObjectHelper { IfcMotorConnectionType() : Object("IfcMotorConnectionType") {} - IfcMotorConnectionTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowTreatmentDeviceType - struct IfcFlowTreatmentDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTreatmentDeviceType() : Object("IfcFlowTreatmentDeviceType") {} - - }; - - // C++ wrapper for IfcDuctSilencerType - struct IfcDuctSilencerType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcDuctSilencerType() : Object("IfcDuctSilencerType") {} - IfcDuctSilencerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFurnishingElementType - struct IfcFurnishingElementType : IfcElementType, ObjectHelper { IfcFurnishingElementType() : Object("IfcFurnishingElementType") {} - - }; - - // C++ wrapper for IfcSystemFurnitureElementType - struct IfcSystemFurnitureElementType : IfcFurnishingElementType, ObjectHelper { IfcSystemFurnitureElementType() : Object("IfcSystemFurnitureElementType") {} - - }; - - // C++ wrapper for IfcWasteTerminalType - struct IfcWasteTerminalType : IfcFlowTerminalType, ObjectHelper { IfcWasteTerminalType() : Object("IfcWasteTerminalType") {} - IfcWasteTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcBSplineCurve - struct IfcBSplineCurve : IfcBoundedCurve, ObjectHelper { IfcBSplineCurve() : Object("IfcBSplineCurve") {} - INTEGER::Out Degree; - ListOf< Lazy< IfcCartesianPoint >, 2, 0 > ControlPointsList; - IfcBSplineCurveForm::Out CurveForm; - LOGICAL::Out ClosedCurve; - LOGICAL::Out SelfIntersect; - }; - - // C++ wrapper for IfcBezierCurve - struct IfcBezierCurve : IfcBSplineCurve, ObjectHelper { IfcBezierCurve() : Object("IfcBezierCurve") {} - + // C++ wrapper for IfcCoveringType + struct IfcCoveringType : IfcBuildingElementType, ObjectHelper { IfcCoveringType() : Object("IfcCoveringType") {} + IfcCoveringTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcActuatorType @@ -2890,9 +3010,11 @@ namespace IFC { IfcActuatorTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcDistributionControlElement - struct IfcDistributionControlElement : IfcDistributionElement, ObjectHelper { IfcDistributionControlElement() : Object("IfcDistributionControlElement") {} - Maybe< IfcIdentifier::Out > ControlElementId; + // C++ wrapper for IfcOffsetCurve2D + struct IfcOffsetCurve2D : IfcCurve, ObjectHelper { IfcOffsetCurve2D() : Object("IfcOffsetCurve2D") {} + Lazy< IfcCurve > BasisCurve; + IfcLengthMeasure::Out Distance; + LOGICAL::Out SelfIntersect; }; // C++ wrapper for IfcAnnotation @@ -2900,112 +3022,39 @@ namespace IFC { }; - // C++ wrapper for IfcShellBasedSurfaceModel - struct IfcShellBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcShellBasedSurfaceModel() : Object("IfcShellBasedSurfaceModel") {} - ListOf< IfcShell, 1, 0 >::Out SbsmBoundary; - }; - - // C++ wrapper for IfcActionRequest - struct IfcActionRequest : IfcControl, ObjectHelper { IfcActionRequest() : Object("IfcActionRequest") {} - IfcIdentifier::Out RequestID; - }; - - // C++ wrapper for IfcExtrudedAreaSolid - struct IfcExtrudedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcExtrudedAreaSolid() : Object("IfcExtrudedAreaSolid") {} - Lazy< IfcDirection > ExtrudedDirection; - IfcPositiveLengthMeasure::Out Depth; - }; - - // C++ wrapper for IfcSystem - struct IfcSystem : IfcGroup, ObjectHelper { IfcSystem() : Object("IfcSystem") {} + // C++ wrapper for IfcDistributionChamberElement + struct IfcDistributionChamberElement : IfcDistributionFlowElement, ObjectHelper { IfcDistributionChamberElement() : Object("IfcDistributionChamberElement") {} }; - // C++ wrapper for IfcFillAreaStyleHatching - struct IfcFillAreaStyleHatching : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleHatching() : Object("IfcFillAreaStyleHatching") {} - Lazy< NotImplemented > HatchLineAppearance; - IfcHatchLineDistanceSelect::Out StartOfNextHatchLine; - Maybe< Lazy< IfcCartesianPoint > > PointOfReferenceHatchLine; - Maybe< Lazy< IfcCartesianPoint > > PatternStart; - IfcPlaneAngleMeasure::Out HatchLineAngle; + // C++ wrapper for IfcOffsetCurve3D + struct IfcOffsetCurve3D : IfcCurve, ObjectHelper { IfcOffsetCurve3D() : Object("IfcOffsetCurve3D") {} + Lazy< IfcCurve > BasisCurve; + IfcLengthMeasure::Out Distance; + LOGICAL::Out SelfIntersect; + Lazy< IfcDirection > RefDirection; }; - // C++ wrapper for IfcRelVoidsElement - struct IfcRelVoidsElement : IfcRelConnects, ObjectHelper { IfcRelVoidsElement() : Object("IfcRelVoidsElement") {} - Lazy< IfcElement > RelatingBuildingElement; - Lazy< IfcFeatureElementSubtraction > RelatedOpeningElement; + // C++ wrapper for IfcFooting + struct IfcFooting : IfcBuildingElement, ObjectHelper { IfcFooting() : Object("IfcFooting") {} + IfcFootingTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcSurfaceCurveSweptAreaSolid - struct IfcSurfaceCurveSweptAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcSurfaceCurveSweptAreaSolid() : Object("IfcSurfaceCurveSweptAreaSolid") {} - Lazy< IfcCurve > Directrix; - IfcParameterValue::Out StartParam; - IfcParameterValue::Out EndParam; - Lazy< IfcSurface > ReferenceSurface; + // C++ wrapper for IfcMappedItem + struct IfcMappedItem : IfcRepresentationItem, ObjectHelper { IfcMappedItem() : Object("IfcMappedItem") {} + Lazy< IfcRepresentationMap > MappingSource; + Lazy< IfcCartesianTransformationOperator > MappingTarget; }; - // C++ wrapper for IfcCartesianTransformationOperator3DnonUniform - struct IfcCartesianTransformationOperator3DnonUniform : IfcCartesianTransformationOperator3D, ObjectHelper { IfcCartesianTransformationOperator3DnonUniform() : Object("IfcCartesianTransformationOperator3DnonUniform") {} - Maybe< REAL::Out > Scale2; - Maybe< REAL::Out > Scale3; + // C++ wrapper for IfcTransformerType + struct IfcTransformerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTransformerType() : Object("IfcTransformerType") {} + IfcTransformerTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcCurtainWallType - struct IfcCurtainWallType : IfcBuildingElementType, ObjectHelper { IfcCurtainWallType() : Object("IfcCurtainWallType") {} - IfcCurtainWallTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEquipmentStandard - struct IfcEquipmentStandard : IfcControl, ObjectHelper { IfcEquipmentStandard() : Object("IfcEquipmentStandard") {} - - }; - - // C++ wrapper for IfcFlowStorageDeviceType - struct IfcFlowStorageDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowStorageDeviceType() : Object("IfcFlowStorageDeviceType") {} - - }; - - // C++ wrapper for IfcDiameterDimension - struct IfcDiameterDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcDiameterDimension() : Object("IfcDiameterDimension") {} - - }; - - // C++ wrapper for IfcSwitchingDeviceType - struct IfcSwitchingDeviceType : IfcFlowControllerType, ObjectHelper { IfcSwitchingDeviceType() : Object("IfcSwitchingDeviceType") {} - IfcSwitchingDeviceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcWindow - struct IfcWindow : IfcBuildingElement, ObjectHelper { IfcWindow() : Object("IfcWindow") {} - Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; - Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; - }; - - // C++ wrapper for IfcFlowTreatmentDevice - struct IfcFlowTreatmentDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowTreatmentDevice() : Object("IfcFlowTreatmentDevice") {} - - }; - - // C++ wrapper for IfcChillerType - struct IfcChillerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcChillerType() : Object("IfcChillerType") {} - IfcChillerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRectangleHollowProfileDef - struct IfcRectangleHollowProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRectangleHollowProfileDef() : Object("IfcRectangleHollowProfileDef") {} - IfcPositiveLengthMeasure::Out WallThickness; - Maybe< IfcPositiveLengthMeasure::Out > InnerFilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > OuterFilletRadius; - }; - - // C++ wrapper for IfcBoxedHalfSpace - struct IfcBoxedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcBoxedHalfSpace() : Object("IfcBoxedHalfSpace") {} - Lazy< IfcBoundingBox > Enclosure; - }; - - // C++ wrapper for IfcAxis2Placement2D - struct IfcAxis2Placement2D : IfcPlacement, ObjectHelper { IfcAxis2Placement2D() : Object("IfcAxis2Placement2D") {} - Maybe< Lazy< IfcDirection > > RefDirection; + // C++ wrapper for IfcRightCircularCylinder + struct IfcRightCircularCylinder : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCylinder() : Object("IfcRightCircularCylinder") {} + IfcPositiveLengthMeasure::Out Height; + IfcPositiveLengthMeasure::Out Radius; }; // C++ wrapper for IfcSpaceProgram @@ -3017,109 +3066,10 @@ namespace IFC { IfcAreaMeasure::Out StandardRequiredArea; }; - // C++ wrapper for IfcPoint - struct IfcPoint : IfcGeometricRepresentationItem, ObjectHelper { IfcPoint() : Object("IfcPoint") {} - - }; - - // C++ wrapper for IfcCartesianPoint - struct IfcCartesianPoint : IfcPoint, ObjectHelper { IfcCartesianPoint() : Object("IfcCartesianPoint") {} - ListOf< IfcLengthMeasure, 1, 3 >::Out Coordinates; - }; - - // C++ wrapper for IfcBoundedSurface - struct IfcBoundedSurface : IfcSurface, ObjectHelper { IfcBoundedSurface() : Object("IfcBoundedSurface") {} - - }; - - // C++ wrapper for IfcLoop - struct IfcLoop : IfcTopologicalRepresentationItem, ObjectHelper { IfcLoop() : Object("IfcLoop") {} - - }; - - // C++ wrapper for IfcPolyLoop - struct IfcPolyLoop : IfcLoop, ObjectHelper { IfcPolyLoop() : Object("IfcPolyLoop") {} - ListOf< Lazy< IfcCartesianPoint >, 3, 0 > Polygon; - }; - - // C++ wrapper for IfcTerminatorSymbol - struct IfcTerminatorSymbol : IfcAnnotationSymbolOccurrence, ObjectHelper { IfcTerminatorSymbol() : Object("IfcTerminatorSymbol") {} - Lazy< IfcAnnotationCurveOccurrence > AnnotatedCurve; - }; - - // C++ wrapper for IfcDimensionCurveTerminator - struct IfcDimensionCurveTerminator : IfcTerminatorSymbol, ObjectHelper { IfcDimensionCurveTerminator() : Object("IfcDimensionCurveTerminator") {} - IfcDimensionExtentUsage::Out Role; - }; - - // C++ wrapper for IfcTrapeziumProfileDef - struct IfcTrapeziumProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTrapeziumProfileDef() : Object("IfcTrapeziumProfileDef") {} - IfcPositiveLengthMeasure::Out BottomXDim; - IfcPositiveLengthMeasure::Out TopXDim; - IfcPositiveLengthMeasure::Out YDim; - IfcLengthMeasure::Out TopXOffset; - }; - - // C++ wrapper for IfcRepresentationContext - struct IfcRepresentationContext : ObjectHelper { IfcRepresentationContext() : Object("IfcRepresentationContext") {} - Maybe< IfcLabel::Out > ContextIdentifier; - Maybe< IfcLabel::Out > ContextType; - }; - - // C++ wrapper for IfcGeometricRepresentationContext - struct IfcGeometricRepresentationContext : IfcRepresentationContext, ObjectHelper { IfcGeometricRepresentationContext() : Object("IfcGeometricRepresentationContext") {} - IfcDimensionCount::Out CoordinateSpaceDimension; - Maybe< REAL::Out > Precision; - IfcAxis2Placement::Out WorldCoordinateSystem; - Maybe< Lazy< IfcDirection > > TrueNorth; - }; - - // C++ wrapper for IfcCurveBoundedPlane - struct IfcCurveBoundedPlane : IfcBoundedSurface, ObjectHelper { IfcCurveBoundedPlane() : Object("IfcCurveBoundedPlane") {} - Lazy< IfcPlane > BasisSurface; - Lazy< IfcCurve > OuterBoundary; - ListOf< Lazy< IfcCurve >, 0, 0 > InnerBoundaries; - }; - - // C++ wrapper for IfcSIUnit - struct IfcSIUnit : IfcNamedUnit, ObjectHelper { IfcSIUnit() : Object("IfcSIUnit") {} - Maybe< IfcSIPrefix::Out > Prefix; - IfcSIUnitName::Out Name; - }; - - // C++ wrapper for IfcStructuralReaction - struct IfcStructuralReaction : IfcStructuralActivity, ObjectHelper { IfcStructuralReaction() : Object("IfcStructuralReaction") {} - - }; - - // C++ wrapper for IfcStructuralPointReaction - struct IfcStructuralPointReaction : IfcStructuralReaction, ObjectHelper { IfcStructuralPointReaction() : Object("IfcStructuralPointReaction") {} - - }; - - // C++ wrapper for IfcAxis1Placement - struct IfcAxis1Placement : IfcPlacement, ObjectHelper { IfcAxis1Placement() : Object("IfcAxis1Placement") {} - Maybe< Lazy< IfcDirection > > Axis; - }; - - // C++ wrapper for IfcElectricApplianceType - struct IfcElectricApplianceType : IfcFlowTerminalType, ObjectHelper { IfcElectricApplianceType() : Object("IfcElectricApplianceType") {} - IfcElectricApplianceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSensorType - struct IfcSensorType : IfcDistributionControlElementType, ObjectHelper { IfcSensorType() : Object("IfcSensorType") {} - IfcSensorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFurnishingElement - struct IfcFurnishingElement : IfcElement, ObjectHelper { IfcFurnishingElement() : Object("IfcFurnishingElement") {} - - }; - - // C++ wrapper for IfcProtectiveDeviceType - struct IfcProtectiveDeviceType : IfcFlowControllerType, ObjectHelper { IfcProtectiveDeviceType() : Object("IfcProtectiveDeviceType") {} - IfcProtectiveDeviceTypeEnum::Out PredefinedType; + // C++ wrapper for IfcAnnotationSurface + struct IfcAnnotationSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationSurface() : Object("IfcAnnotationSurface") {} + Lazy< IfcGeometricRepresentationItem > Item; + Maybe< Lazy< NotImplemented > > TextureCoordinates; }; // C++ wrapper for IfcZShapeProfileDef @@ -3132,6 +3082,141 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; }; + // C++ wrapper for IfcRectangleHollowProfileDef + struct IfcRectangleHollowProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRectangleHollowProfileDef() : Object("IfcRectangleHollowProfileDef") {} + IfcPositiveLengthMeasure::Out WallThickness; + Maybe< IfcPositiveLengthMeasure::Out > InnerFilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > OuterFilletRadius; + }; + + // C++ wrapper for IfcGeometricSet + struct IfcGeometricSet : IfcGeometricRepresentationItem, ObjectHelper { IfcGeometricSet() : Object("IfcGeometricSet") {} + ListOf< IfcGeometricSetSelect, 1, 0 >::Out Elements; + }; + + // C++ wrapper for IfcGeometricCurveSet + struct IfcGeometricCurveSet : IfcGeometricSet, ObjectHelper { IfcGeometricCurveSet() : Object("IfcGeometricCurveSet") {} + + }; + + // C++ wrapper for IfcArbitraryOpenProfileDef + struct IfcArbitraryOpenProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryOpenProfileDef() : Object("IfcArbitraryOpenProfileDef") {} + Lazy< IfcBoundedCurve > Curve; + }; + + // C++ wrapper for IfcFacetedBrepWithVoids + struct IfcFacetedBrepWithVoids : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrepWithVoids() : Object("IfcFacetedBrepWithVoids") {} + ListOf< Lazy< IfcClosedShell >, 1, 0 > Voids; + }; + + // C++ wrapper for IfcVector + struct IfcVector : IfcGeometricRepresentationItem, ObjectHelper { IfcVector() : Object("IfcVector") {} + Lazy< IfcDirection > Orientation; + IfcLengthMeasure::Out Magnitude; + }; + + // C++ wrapper for IfcServiceLife + struct IfcServiceLife : IfcControl, ObjectHelper { IfcServiceLife() : Object("IfcServiceLife") {} + IfcServiceLifeTypeEnum::Out ServiceLifeType; + IfcTimeMeasure::Out ServiceLifeDuration; + }; + + // C++ wrapper for IfcCurveBoundedPlane + struct IfcCurveBoundedPlane : IfcBoundedSurface, ObjectHelper { IfcCurveBoundedPlane() : Object("IfcCurveBoundedPlane") {} + Lazy< IfcPlane > BasisSurface; + Lazy< IfcCurve > OuterBoundary; + ListOf< Lazy< IfcCurve >, 0, 0 > InnerBoundaries; + }; + + // C++ wrapper for IfcCircle + struct IfcCircle : IfcConic, ObjectHelper { IfcCircle() : Object("IfcCircle") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcVertexLoop + struct IfcVertexLoop : IfcLoop, ObjectHelper { IfcVertexLoop() : Object("IfcVertexLoop") {} + Lazy< IfcVertex > LoopVertex; + }; + + // C++ wrapper for IfcSurfaceCurveSweptAreaSolid + struct IfcSurfaceCurveSweptAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcSurfaceCurveSweptAreaSolid() : Object("IfcSurfaceCurveSweptAreaSolid") {} + Lazy< IfcCurve > Directrix; + IfcParameterValue::Out StartParam; + IfcParameterValue::Out EndParam; + Lazy< IfcSurface > ReferenceSurface; + }; + + // C++ wrapper for IfcConstructionEquipmentResource + struct IfcConstructionEquipmentResource : IfcConstructionResource, ObjectHelper { IfcConstructionEquipmentResource() : Object("IfcConstructionEquipmentResource") {} + + }; + + // C++ wrapper for IfcSectionedSpine + struct IfcSectionedSpine : IfcGeometricRepresentationItem, ObjectHelper { IfcSectionedSpine() : Object("IfcSectionedSpine") {} + Lazy< IfcCompositeCurve > SpineCurve; + ListOf< Lazy< IfcProfileDef >, 2, 0 > CrossSections; + ListOf< Lazy< IfcAxis2Placement3D >, 2, 0 > CrossSectionPositions; + }; + + // C++ wrapper for IfcPropertyReferenceValue + struct IfcPropertyReferenceValue : IfcSimpleProperty, ObjectHelper { IfcPropertyReferenceValue() : Object("IfcPropertyReferenceValue") {} + Maybe< IfcLabel::Out > UsageName; + IfcObjectReferenceSelect::Out PropertyReference; + }; + + // C++ wrapper for IfcSite + struct IfcSite : IfcSpatialStructureElement, ObjectHelper { IfcSite() : Object("IfcSite") {} + Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLatitude; + Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLongitude; + Maybe< IfcLengthMeasure::Out > RefElevation; + Maybe< IfcLabel::Out > LandTitleNumber; + Maybe< Lazy< NotImplemented > > SiteAddress; + }; + + // C++ wrapper for IfcPerformanceHistory + struct IfcPerformanceHistory : IfcControl, ObjectHelper { IfcPerformanceHistory() : Object("IfcPerformanceHistory") {} + IfcLabel::Out LifeCyclePhase; + }; + + // C++ wrapper for IfcPropertyTableValue + struct IfcPropertyTableValue : IfcSimpleProperty, ObjectHelper { IfcPropertyTableValue() : Object("IfcPropertyTableValue") {} + ListOf< IfcValue, 1, 0 >::Out DefiningValues; + ListOf< IfcValue, 1, 0 >::Out DefinedValues; + Maybe< IfcText::Out > Expression; + Maybe< IfcUnit::Out > DefiningUnit; + Maybe< IfcUnit::Out > DefinedUnit; + }; + + // C++ wrapper for IfcTransportElementType + struct IfcTransportElementType : IfcElementType, ObjectHelper { IfcTransportElementType() : Object("IfcTransportElementType") {} + IfcTransportElementTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPolygonalBoundedHalfSpace + struct IfcPolygonalBoundedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcPolygonalBoundedHalfSpace() : Object("IfcPolygonalBoundedHalfSpace") {} + Lazy< IfcAxis2Placement3D > Position; + Lazy< IfcBoundedCurve > PolygonalBoundary; + }; + + // C++ wrapper for IfcAxis2Placement2D + struct IfcAxis2Placement2D : IfcPlacement, ObjectHelper { IfcAxis2Placement2D() : Object("IfcAxis2Placement2D") {} + Maybe< Lazy< IfcDirection > > RefDirection; + }; + + // C++ wrapper for IfcFillAreaStyleHatching + struct IfcFillAreaStyleHatching : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleHatching() : Object("IfcFillAreaStyleHatching") {} + Lazy< NotImplemented > HatchLineAppearance; + IfcHatchLineDistanceSelect::Out StartOfNextHatchLine; + Maybe< Lazy< IfcCartesianPoint > > PointOfReferenceHatchLine; + Maybe< Lazy< IfcCartesianPoint > > PatternStart; + IfcPlaneAngleMeasure::Out HatchLineAngle; + }; + + // C++ wrapper for IfcFastener + struct IfcFastener : IfcElementComponent, ObjectHelper { IfcFastener() : Object("IfcFastener") {} + + }; + // C++ wrapper for IfcScheduleTimeControl struct IfcScheduleTimeControl : IfcControl, ObjectHelper { IfcScheduleTimeControl() : Object("IfcScheduleTimeControl") {} Maybe< IfcDateTimeSelect::Out > ActualStart; @@ -3154,37 +3239,158 @@ namespace IFC { Maybe< IfcPositiveRatioMeasure::Out > Completion; }; - // C++ wrapper for IfcRepresentationMap - struct IfcRepresentationMap : ObjectHelper { IfcRepresentationMap() : Object("IfcRepresentationMap") {} - IfcAxis2Placement::Out MappingOrigin; - Lazy< IfcRepresentation > MappedRepresentation; + // C++ wrapper for IfcElectricMotorType + struct IfcElectricMotorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricMotorType() : Object("IfcElectricMotorType") {} + IfcElectricMotorTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcClosedShell - struct IfcClosedShell : IfcConnectedFaceSet, ObjectHelper { IfcClosedShell() : Object("IfcClosedShell") {} + // C++ wrapper for IfcTimeSeriesSchedule + struct IfcTimeSeriesSchedule : IfcControl, ObjectHelper { IfcTimeSeriesSchedule() : Object("IfcTimeSeriesSchedule") {} + Maybe< ListOf< IfcDateTimeSelect, 1, 0 >::Out > ApplicableDates; + IfcTimeSeriesScheduleTypeEnum::Out TimeSeriesScheduleType; + Lazy< NotImplemented > TimeSeries; + }; + + // C++ wrapper for IfcPipeSegmentType + struct IfcPipeSegmentType : IfcFlowSegmentType, ObjectHelper { IfcPipeSegmentType() : Object("IfcPipeSegmentType") {} + IfcPipeSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowTerminal + struct IfcFlowTerminal : IfcDistributionFlowElement, ObjectHelper { IfcFlowTerminal() : Object("IfcFlowTerminal") {} }; - // C++ wrapper for IfcBuildingElementPart - struct IfcBuildingElementPart : IfcBuildingElementComponent, ObjectHelper { IfcBuildingElementPart() : Object("IfcBuildingElementPart") {} + // C++ wrapper for IfcWallType + struct IfcWallType : IfcBuildingElementType, ObjectHelper { IfcWallType() : Object("IfcWallType") {} + IfcWallTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCoilType + struct IfcCoilType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoilType() : Object("IfcCoilType") {} + IfcCoilTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFurnishingElement + struct IfcFurnishingElement : IfcElement, ObjectHelper { IfcFurnishingElement() : Object("IfcFurnishingElement") {} }; - // C++ wrapper for IfcBlock - struct IfcBlock : IfcCsgPrimitive3D, ObjectHelper { IfcBlock() : Object("IfcBlock") {} - IfcPositiveLengthMeasure::Out XLength; - IfcPositiveLengthMeasure::Out YLength; - IfcPositiveLengthMeasure::Out ZLength; + // C++ wrapper for IfcWasteTerminalType + struct IfcWasteTerminalType : IfcFlowTerminalType, ObjectHelper { IfcWasteTerminalType() : Object("IfcWasteTerminalType") {} + IfcWasteTerminalTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcLightFixtureType - struct IfcLightFixtureType : IfcFlowTerminalType, ObjectHelper { IfcLightFixtureType() : Object("IfcLightFixtureType") {} - IfcLightFixtureTypeEnum::Out PredefinedType; + // C++ wrapper for IfcWindow + struct IfcWindow : IfcBuildingElement, ObjectHelper { IfcWindow() : Object("IfcWindow") {} + Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; + Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; }; - // C++ wrapper for IfcOpeningElement - struct IfcOpeningElement : IfcFeatureElementSubtraction, ObjectHelper { IfcOpeningElement() : Object("IfcOpeningElement") {} + // C++ wrapper for IfcElectricFlowStorageDeviceType + struct IfcElectricFlowStorageDeviceType : IfcFlowStorageDeviceType, ObjectHelper { IfcElectricFlowStorageDeviceType() : Object("IfcElectricFlowStorageDeviceType") {} + IfcElectricFlowStorageDeviceTypeEnum::Out PredefinedType; + }; + // C++ wrapper for IfcRelAggregates + struct IfcRelAggregates : IfcRelDecomposes, ObjectHelper { IfcRelAggregates() : Object("IfcRelAggregates") {} + + }; + + // C++ wrapper for IfcRamp + struct IfcRamp : IfcBuildingElement, ObjectHelper { IfcRamp() : Object("IfcRamp") {} + IfcRampTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcLinearDimension + struct IfcLinearDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcLinearDimension() : Object("IfcLinearDimension") {} + + }; + + // C++ wrapper for IfcElementarySurface + struct IfcElementarySurface : IfcSurface, ObjectHelper { IfcElementarySurface() : Object("IfcElementarySurface") {} + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcConstructionProductResource + struct IfcConstructionProductResource : IfcConstructionResource, ObjectHelper { IfcConstructionProductResource() : Object("IfcConstructionProductResource") {} + + }; + + // C++ wrapper for IfcCableSegmentType + struct IfcCableSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableSegmentType() : Object("IfcCableSegmentType") {} + IfcCableSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPath + struct IfcPath : IfcTopologicalRepresentationItem, ObjectHelper { IfcPath() : Object("IfcPath") {} + ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; + }; + + // C++ wrapper for IfcActor + struct IfcActor : IfcObject, ObjectHelper { IfcActor() : Object("IfcActor") {} + IfcActorSelect::Out TheActor; + }; + + // C++ wrapper for IfcOccupant + struct IfcOccupant : IfcActor, ObjectHelper { IfcOccupant() : Object("IfcOccupant") {} + IfcOccupantTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSwitchingDeviceType + struct IfcSwitchingDeviceType : IfcFlowControllerType, ObjectHelper { IfcSwitchingDeviceType() : Object("IfcSwitchingDeviceType") {} + IfcSwitchingDeviceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSweptSurface + struct IfcSweptSurface : IfcSurface, ObjectHelper { IfcSweptSurface() : Object("IfcSweptSurface") {} + Lazy< IfcProfileDef > SweptCurve; + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcSurfaceOfLinearExtrusion + struct IfcSurfaceOfLinearExtrusion : IfcSweptSurface, ObjectHelper { IfcSurfaceOfLinearExtrusion() : Object("IfcSurfaceOfLinearExtrusion") {} + Lazy< IfcDirection > ExtrudedDirection; + IfcLengthMeasure::Out Depth; + }; + + // C++ wrapper for IfcShellBasedSurfaceModel + struct IfcShellBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcShellBasedSurfaceModel() : Object("IfcShellBasedSurfaceModel") {} + ListOf< IfcShell, 1, 0 >::Out SbsmBoundary; + }; + + // C++ wrapper for IfcBuilding + struct IfcBuilding : IfcSpatialStructureElement, ObjectHelper { IfcBuilding() : Object("IfcBuilding") {} + Maybe< IfcLengthMeasure::Out > ElevationOfRefHeight; + Maybe< IfcLengthMeasure::Out > ElevationOfTerrain; + Maybe< Lazy< NotImplemented > > BuildingAddress; + }; + + // C++ wrapper for IfcSIUnit + struct IfcSIUnit : IfcNamedUnit, ObjectHelper { IfcSIUnit() : Object("IfcSIUnit") {} + Maybe< IfcSIPrefix::Out > Prefix; + IfcSIUnitName::Out Name; + }; + + // C++ wrapper for IfcDiscreteAccessory + struct IfcDiscreteAccessory : IfcElementComponent, ObjectHelper { IfcDiscreteAccessory() : Object("IfcDiscreteAccessory") {} + + }; + + // C++ wrapper for IfcSystemFurnitureElementType + struct IfcSystemFurnitureElementType : IfcFurnishingElementType, ObjectHelper { IfcSystemFurnitureElementType() : Object("IfcSystemFurnitureElementType") {} + + }; + + // C++ wrapper for IfcElementAssembly + struct IfcElementAssembly : IfcElement, ObjectHelper { IfcElementAssembly() : Object("IfcElementAssembly") {} + Maybe< IfcAssemblyPlaceEnum::Out > AssemblyPlace; + IfcElementAssemblyTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCoolingTowerType + struct IfcCoolingTowerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoolingTowerType() : Object("IfcCoolingTowerType") {} + IfcCoolingTowerTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcLightSourceSpot @@ -3195,180 +3401,20 @@ namespace IFC { IfcPositivePlaneAngleMeasure::Out BeamWidthAngle; }; - // C++ wrapper for IfcTendonAnchor - struct IfcTendonAnchor : IfcReinforcingElement, ObjectHelper { IfcTendonAnchor() : Object("IfcTendonAnchor") {} - + // C++ wrapper for IfcEvaporatorType + struct IfcEvaporatorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporatorType() : Object("IfcEvaporatorType") {} + IfcEvaporatorTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcElectricFlowStorageDeviceType - struct IfcElectricFlowStorageDeviceType : IfcFlowStorageDeviceType, ObjectHelper { IfcElectricFlowStorageDeviceType() : Object("IfcElectricFlowStorageDeviceType") {} - IfcElectricFlowStorageDeviceTypeEnum::Out PredefinedType; + // C++ wrapper for IfcSpaceHeaterType + struct IfcSpaceHeaterType : IfcEnergyConversionDeviceType, ObjectHelper { IfcSpaceHeaterType() : Object("IfcSpaceHeaterType") {} + IfcSpaceHeaterTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcSphere - struct IfcSphere : IfcCsgPrimitive3D, ObjectHelper { IfcSphere() : Object("IfcSphere") {} - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcDamperType - struct IfcDamperType : IfcFlowControllerType, ObjectHelper { IfcDamperType() : Object("IfcDamperType") {} - IfcDamperTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProjectOrderRecord - struct IfcProjectOrderRecord : IfcControl, ObjectHelper { IfcProjectOrderRecord() : Object("IfcProjectOrderRecord") {} - ListOf< Lazy< NotImplemented >, 1, 0 > Records; - IfcProjectOrderRecordTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDistributionChamberElement - struct IfcDistributionChamberElement : IfcDistributionFlowElement, ObjectHelper { IfcDistributionChamberElement() : Object("IfcDistributionChamberElement") {} - - }; - - // C++ wrapper for IfcMechanicalFastener - struct IfcMechanicalFastener : IfcFastener, ObjectHelper { IfcMechanicalFastener() : Object("IfcMechanicalFastener") {} - Maybe< IfcPositiveLengthMeasure::Out > NominalDiameter; - Maybe< IfcPositiveLengthMeasure::Out > NominalLength; - }; - - // C++ wrapper for IfcRectangularTrimmedSurface - struct IfcRectangularTrimmedSurface : IfcBoundedSurface, ObjectHelper { IfcRectangularTrimmedSurface() : Object("IfcRectangularTrimmedSurface") {} - Lazy< IfcSurface > BasisSurface; - IfcParameterValue::Out U1; - IfcParameterValue::Out V1; - IfcParameterValue::Out U2; - IfcParameterValue::Out V2; - BOOLEAN::Out Usense; - BOOLEAN::Out Vsense; - }; - - // C++ wrapper for IfcZone - struct IfcZone : IfcGroup, ObjectHelper { IfcZone() : Object("IfcZone") {} - - }; - - // C++ wrapper for IfcFanType - struct IfcFanType : IfcFlowMovingDeviceType, ObjectHelper { IfcFanType() : Object("IfcFanType") {} - IfcFanTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcGeometricSet - struct IfcGeometricSet : IfcGeometricRepresentationItem, ObjectHelper { IfcGeometricSet() : Object("IfcGeometricSet") {} - ListOf< IfcGeometricSetSelect, 1, 0 >::Out Elements; - }; - - // C++ wrapper for IfcFillAreaStyleTiles - struct IfcFillAreaStyleTiles : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTiles() : Object("IfcFillAreaStyleTiles") {} - Lazy< IfcOneDirectionRepeatFactor > TilingPattern; - ListOf< IfcFillAreaStyleTileShapeSelect, 1, 0 >::Out Tiles; - IfcPositiveRatioMeasure::Out TilingScale; - }; - - // C++ wrapper for IfcCableSegmentType - struct IfcCableSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableSegmentType() : Object("IfcCableSegmentType") {} - IfcCableSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRelOverridesProperties - struct IfcRelOverridesProperties : IfcRelDefinesByProperties, ObjectHelper { IfcRelOverridesProperties() : Object("IfcRelOverridesProperties") {} - ListOf< Lazy< IfcProperty >, 1, 0 > OverridingProperties; - }; - - // C++ wrapper for IfcMeasureWithUnit - struct IfcMeasureWithUnit : ObjectHelper { IfcMeasureWithUnit() : Object("IfcMeasureWithUnit") {} - IfcValue::Out ValueComponent; - IfcUnit::Out UnitComponent; - }; - - // C++ wrapper for IfcSlabType - struct IfcSlabType : IfcBuildingElementType, ObjectHelper { IfcSlabType() : Object("IfcSlabType") {} - IfcSlabTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcServiceLife - struct IfcServiceLife : IfcControl, ObjectHelper { IfcServiceLife() : Object("IfcServiceLife") {} - IfcServiceLifeTypeEnum::Out ServiceLifeType; - IfcTimeMeasure::Out ServiceLifeDuration; - }; - - // C++ wrapper for IfcFurnitureType - struct IfcFurnitureType : IfcFurnishingElementType, ObjectHelper { IfcFurnitureType() : Object("IfcFurnitureType") {} - IfcAssemblyPlaceEnum::Out AssemblyPlace; - }; - - // C++ wrapper for IfcCostItem - struct IfcCostItem : IfcControl, ObjectHelper { IfcCostItem() : Object("IfcCostItem") {} - - }; - - // C++ wrapper for IfcReinforcingMesh - struct IfcReinforcingMesh : IfcReinforcingElement, ObjectHelper { IfcReinforcingMesh() : Object("IfcReinforcingMesh") {} - Maybe< IfcPositiveLengthMeasure::Out > MeshLength; - Maybe< IfcPositiveLengthMeasure::Out > MeshWidth; - IfcPositiveLengthMeasure::Out LongitudinalBarNominalDiameter; - IfcPositiveLengthMeasure::Out TransverseBarNominalDiameter; - IfcAreaMeasure::Out LongitudinalBarCrossSectionArea; - IfcAreaMeasure::Out TransverseBarCrossSectionArea; - IfcPositiveLengthMeasure::Out LongitudinalBarSpacing; - IfcPositiveLengthMeasure::Out TransverseBarSpacing; - }; - - // C++ wrapper for IfcFacetedBrepWithVoids - struct IfcFacetedBrepWithVoids : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrepWithVoids() : Object("IfcFacetedBrepWithVoids") {} - ListOf< Lazy< IfcClosedShell >, 1, 0 > Voids; - }; - - // C++ wrapper for IfcGasTerminalType - struct IfcGasTerminalType : IfcFlowTerminalType, ObjectHelper { IfcGasTerminalType() : Object("IfcGasTerminalType") {} - IfcGasTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPile - struct IfcPile : IfcBuildingElement, ObjectHelper { IfcPile() : Object("IfcPile") {} - IfcPileTypeEnum::Out PredefinedType; - Maybe< IfcPileConstructionEnum::Out > ConstructionType; - }; - - // C++ wrapper for IfcFillAreaStyleTileSymbolWithStyle - struct IfcFillAreaStyleTileSymbolWithStyle : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTileSymbolWithStyle() : Object("IfcFillAreaStyleTileSymbolWithStyle") {} - Lazy< IfcAnnotationSymbolOccurrence > Symbol; - }; - - // C++ wrapper for IfcConstructionMaterialResource - struct IfcConstructionMaterialResource : IfcConstructionResource, ObjectHelper { IfcConstructionMaterialResource() : Object("IfcConstructionMaterialResource") {} - Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > Suppliers; - Maybe< IfcRatioMeasure::Out > UsageRatio; - }; - - // C++ wrapper for IfcAnnotationCurveOccurrence - struct IfcAnnotationCurveOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationCurveOccurrence() : Object("IfcAnnotationCurveOccurrence") {} - - }; - - // C++ wrapper for IfcDimensionCurve - struct IfcDimensionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcDimensionCurve() : Object("IfcDimensionCurve") {} - - }; - - // C++ wrapper for IfcGeometricCurveSet - struct IfcGeometricCurveSet : IfcGeometricSet, ObjectHelper { IfcGeometricCurveSet() : Object("IfcGeometricCurveSet") {} - - }; - - // C++ wrapper for IfcRelAggregates - struct IfcRelAggregates : IfcRelDecomposes, ObjectHelper { IfcRelAggregates() : Object("IfcRelAggregates") {} - - }; - - // C++ wrapper for IfcFaceBasedSurfaceModel - struct IfcFaceBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcFaceBasedSurfaceModel() : Object("IfcFaceBasedSurfaceModel") {} - ListOf< Lazy< IfcConnectedFaceSet >, 1, 0 > FbsmFaces; - }; - - // C++ wrapper for IfcEnergyConversionDevice - struct IfcEnergyConversionDevice : IfcDistributionFlowElement, ObjectHelper { IfcEnergyConversionDevice() : Object("IfcEnergyConversionDevice") {} - + // C++ wrapper for IfcElementQuantity + struct IfcElementQuantity : IfcPropertySetDefinition, ObjectHelper { IfcElementQuantity() : Object("IfcElementQuantity") {} + Maybe< IfcLabel::Out > MethodOfMeasurement; + ListOf< Lazy< NotImplemented >, 1, 0 > Quantities; }; // C++ wrapper for IfcRampFlight @@ -3376,14 +3422,42 @@ namespace IFC { }; - // C++ wrapper for IfcVertexLoop - struct IfcVertexLoop : IfcLoop, ObjectHelper { IfcVertexLoop() : Object("IfcVertexLoop") {} - Lazy< IfcVertex > LoopVertex; + // C++ wrapper for IfcConversionBasedUnit + struct IfcConversionBasedUnit : IfcNamedUnit, ObjectHelper { IfcConversionBasedUnit() : Object("IfcConversionBasedUnit") {} + IfcLabel::Out Name; + Lazy< IfcMeasureWithUnit > ConversionFactor; }; - // C++ wrapper for IfcPlate - struct IfcPlate : IfcBuildingElement, ObjectHelper { IfcPlate() : Object("IfcPlate") {} + // C++ wrapper for IfcExtrudedAreaSolid + struct IfcExtrudedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcExtrudedAreaSolid() : Object("IfcExtrudedAreaSolid") {} + Lazy< IfcDirection > ExtrudedDirection; + IfcPositiveLengthMeasure::Out Depth; + }; + // C++ wrapper for IfcProjectOrder + struct IfcProjectOrder : IfcControl, ObjectHelper { IfcProjectOrder() : Object("IfcProjectOrder") {} + IfcIdentifier::Out ID; + IfcProjectOrderTypeEnum::Out PredefinedType; + Maybe< IfcLabel::Out > Status; + }; + + // C++ wrapper for IfcBooleanClippingResult + struct IfcBooleanClippingResult : IfcBooleanResult, ObjectHelper { IfcBooleanClippingResult() : Object("IfcBooleanClippingResult") {} + + }; + + // C++ wrapper for IfcReinforcingBar + struct IfcReinforcingBar : IfcReinforcingElement, ObjectHelper { IfcReinforcingBar() : Object("IfcReinforcingBar") {} + IfcPositiveLengthMeasure::Out NominalDiameter; + IfcAreaMeasure::Out CrossSectionArea; + Maybe< IfcPositiveLengthMeasure::Out > BarLength; + IfcReinforcingBarRoleEnum::Out BarRole; + Maybe< IfcReinforcingBarSurfaceEnum::Out > BarSurface; + }; + + // C++ wrapper for IfcCenterLineProfileDef + struct IfcCenterLineProfileDef : IfcArbitraryOpenProfileDef, ObjectHelper { IfcCenterLineProfileDef() : Object("IfcCenterLineProfileDef") {} + IfcPositiveLengthMeasure::Out Thickness; }; // C++ wrapper for IfcUShapeProfileDef @@ -3398,46 +3472,138 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; }; - // C++ wrapper for IfcFaceBound - struct IfcFaceBound : IfcTopologicalRepresentationItem, ObjectHelper { IfcFaceBound() : Object("IfcFaceBound") {} - Lazy< IfcLoop > Bound; - BOOLEAN::Out Orientation; + // C++ wrapper for IfcBoundingBox + struct IfcBoundingBox : IfcGeometricRepresentationItem, ObjectHelper { IfcBoundingBox() : Object("IfcBoundingBox") {} + Lazy< IfcCartesianPoint > Corner; + IfcPositiveLengthMeasure::Out XDim; + IfcPositiveLengthMeasure::Out YDim; + IfcPositiveLengthMeasure::Out ZDim; }; - // C++ wrapper for IfcFaceOuterBound - struct IfcFaceOuterBound : IfcFaceBound, ObjectHelper { IfcFaceOuterBound() : Object("IfcFaceOuterBound") {} + // C++ wrapper for IfcWindowStyle + struct IfcWindowStyle : IfcTypeProduct, ObjectHelper { IfcWindowStyle() : Object("IfcWindowStyle") {} + IfcWindowStyleConstructionEnum::Out ConstructionType; + IfcWindowStyleOperationEnum::Out OperationType; + BOOLEAN::Out ParameterTakesPrecedence; + BOOLEAN::Out Sizeable; + }; + + // C++ wrapper for IfcMemberType + struct IfcMemberType : IfcBuildingElementType, ObjectHelper { IfcMemberType() : Object("IfcMemberType") {} + IfcMemberTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLightFixtureType + struct IfcLightFixtureType : IfcFlowTerminalType, ObjectHelper { IfcLightFixtureType() : Object("IfcLightFixtureType") {} + IfcLightFixtureTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowStorageDevice + struct IfcFlowStorageDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowStorageDevice() : Object("IfcFlowStorageDevice") {} }; - // C++ wrapper for IfcOneDirectionRepeatFactor - struct IfcOneDirectionRepeatFactor : IfcGeometricRepresentationItem, ObjectHelper { IfcOneDirectionRepeatFactor() : Object("IfcOneDirectionRepeatFactor") {} - Lazy< IfcVector > RepeatFactor; - }; - - // C++ wrapper for IfcBoilerType - struct IfcBoilerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcBoilerType() : Object("IfcBoilerType") {} - IfcBoilerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcConstructionEquipmentResource - struct IfcConstructionEquipmentResource : IfcConstructionResource, ObjectHelper { IfcConstructionEquipmentResource() : Object("IfcConstructionEquipmentResource") {} + // C++ wrapper for IfcTopologyRepresentation + struct IfcTopologyRepresentation : IfcShapeModel, ObjectHelper { IfcTopologyRepresentation() : Object("IfcTopologyRepresentation") {} }; - // C++ wrapper for IfcComplexProperty - struct IfcComplexProperty : IfcProperty, ObjectHelper { IfcComplexProperty() : Object("IfcComplexProperty") {} - IfcIdentifier::Out UsageName; - ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; + // C++ wrapper for IfcRelDefinesByProperties + struct IfcRelDefinesByProperties : IfcRelDefines, ObjectHelper { IfcRelDefinesByProperties() : Object("IfcRelDefinesByProperties") {} + Lazy< IfcPropertySetDefinition > RelatingPropertyDefinition; }; - // C++ wrapper for IfcFooting - struct IfcFooting : IfcBuildingElement, ObjectHelper { IfcFooting() : Object("IfcFooting") {} - IfcFootingTypeEnum::Out PredefinedType; + // C++ wrapper for IfcRelOverridesProperties + struct IfcRelOverridesProperties : IfcRelDefinesByProperties, ObjectHelper { IfcRelOverridesProperties() : Object("IfcRelOverridesProperties") {} + ListOf< Lazy< IfcProperty >, 1, 0 > OverridingProperties; }; - // C++ wrapper for IfcConstructionProductResource - struct IfcConstructionProductResource : IfcConstructionResource, ObjectHelper { IfcConstructionProductResource() : Object("IfcConstructionProductResource") {} + // C++ wrapper for IfcStairFlightType + struct IfcStairFlightType : IfcBuildingElementType, ObjectHelper { IfcStairFlightType() : Object("IfcStairFlightType") {} + IfcStairFlightTypeEnum::Out PredefinedType; + }; + // C++ wrapper for IfcCircleProfileDef + struct IfcCircleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCircleProfileDef() : Object("IfcCircleProfileDef") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcSweptDiskSolid + struct IfcSweptDiskSolid : IfcSolidModel, ObjectHelper { IfcSweptDiskSolid() : Object("IfcSweptDiskSolid") {} + Lazy< IfcCurve > Directrix; + IfcPositiveLengthMeasure::Out Radius; + Maybe< IfcPositiveLengthMeasure::Out > InnerRadius; + IfcParameterValue::Out StartParam; + IfcParameterValue::Out EndParam; + }; + + // C++ wrapper for IfcStructuralPlanarActionVarying + struct IfcStructuralPlanarActionVarying : IfcStructuralPlanarAction, ObjectHelper { IfcStructuralPlanarActionVarying() : Object("IfcStructuralPlanarActionVarying") {} + Lazy< NotImplemented > VaryingAppliedLoadLocation; + ListOf< Lazy< NotImplemented >, 2, 0 > SubsequentAppliedLoads; + }; + + // C++ wrapper for IfcValveType + struct IfcValveType : IfcFlowControllerType, ObjectHelper { IfcValveType() : Object("IfcValveType") {} + IfcValveTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcUnitAssignment + struct IfcUnitAssignment : ObjectHelper { IfcUnitAssignment() : Object("IfcUnitAssignment") {} + ListOf< IfcUnit, 1, 0 >::Out Units; + }; + + // C++ wrapper for IfcVirtualElement + struct IfcVirtualElement : IfcElement, ObjectHelper { IfcVirtualElement() : Object("IfcVirtualElement") {} + + }; + + // C++ wrapper for IfcStructuralCurveConnection + struct IfcStructuralCurveConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralCurveConnection() : Object("IfcStructuralCurveConnection") {} + + }; + + // C++ wrapper for IfcAirTerminalType + struct IfcAirTerminalType : IfcFlowTerminalType, ObjectHelper { IfcAirTerminalType() : Object("IfcAirTerminalType") {} + IfcAirTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowTreatmentDeviceType + struct IfcFlowTreatmentDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTreatmentDeviceType() : Object("IfcFlowTreatmentDeviceType") {} + + }; + + // C++ wrapper for IfcRoof + struct IfcRoof : IfcBuildingElement, ObjectHelper { IfcRoof() : Object("IfcRoof") {} + IfcRoofTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcElectricTimeControlType + struct IfcElectricTimeControlType : IfcFlowControllerType, ObjectHelper { IfcElectricTimeControlType() : Object("IfcElectricTimeControlType") {} + IfcElectricTimeControlTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPile + struct IfcPile : IfcBuildingElement, ObjectHelper { IfcPile() : Object("IfcPile") {} + IfcPileTypeEnum::Out PredefinedType; + Maybe< IfcPileConstructionEnum::Out > ConstructionType; + }; + + // C++ wrapper for IfcCostSchedule + struct IfcCostSchedule : IfcControl, ObjectHelper { IfcCostSchedule() : Object("IfcCostSchedule") {} + Maybe< IfcActorSelect::Out > SubmittedBy; + Maybe< IfcActorSelect::Out > PreparedBy; + Maybe< IfcDateTimeSelect::Out > SubmittedOn; + Maybe< IfcLabel::Out > Status; + Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > TargetUsers; + Maybe< IfcDateTimeSelect::Out > UpdateDate; + IfcIdentifier::Out ID; + IfcCostScheduleTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcRampFlightType + struct IfcRampFlightType : IfcBuildingElementType, ObjectHelper { IfcRampFlightType() : Object("IfcRampFlightType") {} + IfcRampFlightTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcDerivedProfileDef @@ -3447,35 +3613,82 @@ namespace IFC { Maybe< IfcLabel::Out > Label; }; - // C++ wrapper for IfcPropertyTableValue - struct IfcPropertyTableValue : IfcSimpleProperty, ObjectHelper { IfcPropertyTableValue() : Object("IfcPropertyTableValue") {} - ListOf< IfcValue, 1, 0 >::Out DefiningValues; - ListOf< IfcValue, 1, 0 >::Out DefinedValues; - Maybe< IfcText::Out > Expression; - Maybe< IfcUnit::Out > DefiningUnit; - Maybe< IfcUnit::Out > DefinedUnit; + // C++ wrapper for IfcCostItem + struct IfcCostItem : IfcControl, ObjectHelper { IfcCostItem() : Object("IfcCostItem") {} + }; - // C++ wrapper for IfcFlowMeterType - struct IfcFlowMeterType : IfcFlowControllerType, ObjectHelper { IfcFlowMeterType() : Object("IfcFlowMeterType") {} - IfcFlowMeterTypeEnum::Out PredefinedType; + // C++ wrapper for IfcEvaporativeCoolerType + struct IfcEvaporativeCoolerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporativeCoolerType() : Object("IfcEvaporativeCoolerType") {} + IfcEvaporativeCoolerTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcDoorStyle - struct IfcDoorStyle : IfcTypeProduct, ObjectHelper { IfcDoorStyle() : Object("IfcDoorStyle") {} - IfcDoorStyleOperationEnum::Out OperationType; - IfcDoorStyleConstructionEnum::Out ConstructionType; - BOOLEAN::Out ParameterTakesPrecedence; - BOOLEAN::Out Sizeable; + // C++ wrapper for IfcChillerType + struct IfcChillerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcChillerType() : Object("IfcChillerType") {} + IfcChillerTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcUnitAssignment - struct IfcUnitAssignment : ObjectHelper { IfcUnitAssignment() : Object("IfcUnitAssignment") {} - ListOf< IfcUnit, 1, 0 >::Out Units; + // C++ wrapper for IfcBoxedHalfSpace + struct IfcBoxedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcBoxedHalfSpace() : Object("IfcBoxedHalfSpace") {} + Lazy< IfcBoundingBox > Enclosure; }; - // C++ wrapper for IfcFlowTerminal - struct IfcFlowTerminal : IfcDistributionFlowElement, ObjectHelper { IfcFlowTerminal() : Object("IfcFlowTerminal") {} + // C++ wrapper for IfcCurtainWallType + struct IfcCurtainWallType : IfcBuildingElementType, ObjectHelper { IfcCurtainWallType() : Object("IfcCurtainWallType") {} + IfcCurtainWallTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcGeometricRepresentationSubContext + struct IfcGeometricRepresentationSubContext : IfcGeometricRepresentationContext, ObjectHelper { IfcGeometricRepresentationSubContext() : Object("IfcGeometricRepresentationSubContext") {} + Lazy< IfcGeometricRepresentationContext > ParentContext; + Maybe< IfcPositiveRatioMeasure::Out > TargetScale; + IfcGeometricProjectionEnum::Out TargetView; + Maybe< IfcLabel::Out > UserDefinedTargetView; + }; + + // C++ wrapper for IfcDimensionCurve + struct IfcDimensionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcDimensionCurve() : Object("IfcDimensionCurve") {} + + }; + + // C++ wrapper for IfcPlane + struct IfcPlane : IfcElementarySurface, ObjectHelper { IfcPlane() : Object("IfcPlane") {} + + }; + + // C++ wrapper for IfcProjectionCurve + struct IfcProjectionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcProjectionCurve() : Object("IfcProjectionCurve") {} + + }; + + // C++ wrapper for IfcDamperType + struct IfcDamperType : IfcFlowControllerType, ObjectHelper { IfcDamperType() : Object("IfcDamperType") {} + IfcDamperTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcMechanicalFastener + struct IfcMechanicalFastener : IfcFastener, ObjectHelper { IfcMechanicalFastener() : Object("IfcMechanicalFastener") {} + Maybe< IfcPositiveLengthMeasure::Out > NominalDiameter; + Maybe< IfcPositiveLengthMeasure::Out > NominalLength; + }; + + // C++ wrapper for IfcDuctSilencerType + struct IfcDuctSilencerType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcDuctSilencerType() : Object("IfcDuctSilencerType") {} + IfcDuctSilencerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLaborResource + struct IfcLaborResource : IfcConstructionResource, ObjectHelper { IfcLaborResource() : Object("IfcLaborResource") {} + Maybe< IfcText::Out > SkillSet; + }; + + // C++ wrapper for IfcFanType + struct IfcFanType : IfcFlowMovingDeviceType, ObjectHelper { IfcFanType() : Object("IfcFanType") {} + IfcFanTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProjectionElement + struct IfcProjectionElement : IfcFeatureElementAddition, ObjectHelper { IfcProjectionElement() : Object("IfcProjectionElement") {} }; @@ -3492,42 +3705,50 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcFlowSegment - struct IfcFlowSegment : IfcDistributionFlowElement, ObjectHelper { IfcFlowSegment() : Object("IfcFlowSegment") {} + // C++ wrapper for IfcProject + struct IfcProject : IfcObject, ObjectHelper { IfcProject() : Object("IfcProject") {} + Maybe< IfcLabel::Out > LongName; + Maybe< IfcLabel::Out > Phase; + ListOf< Lazy< IfcRepresentationContext >, 1, 0 > RepresentationContexts; + Lazy< IfcUnitAssignment > UnitsInContext; + }; + + // C++ wrapper for IfcRelVoidsElement + struct IfcRelVoidsElement : IfcRelConnects, ObjectHelper { IfcRelVoidsElement() : Object("IfcRelVoidsElement") {} + Lazy< IfcElement > RelatingBuildingElement; + Lazy< IfcFeatureElementSubtraction > RelatedOpeningElement; + }; + + // C++ wrapper for IfcElectricalCircuit + struct IfcElectricalCircuit : IfcSystem, ObjectHelper { IfcElectricalCircuit() : Object("IfcElectricalCircuit") {} }; - // C++ wrapper for IfcElementQuantity - struct IfcElementQuantity : IfcPropertySetDefinition, ObjectHelper { IfcElementQuantity() : Object("IfcElementQuantity") {} - Maybe< IfcLabel::Out > MethodOfMeasurement; - ListOf< Lazy< NotImplemented >, 1, 0 > Quantities; + // C++ wrapper for IfcLShapeProfileDef + struct IfcLShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcLShapeProfileDef() : Object("IfcLShapeProfileDef") {} + IfcPositiveLengthMeasure::Out Depth; + Maybe< IfcPositiveLengthMeasure::Out > Width; + IfcPositiveLengthMeasure::Out Thickness; + Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; + Maybe< IfcPlaneAngleMeasure::Out > LegSlope; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcCurtainWall - struct IfcCurtainWall : IfcBuildingElement, ObjectHelper { IfcCurtainWall() : Object("IfcCurtainWall") {} + // C++ wrapper for IfcFlowTreatmentDevice + struct IfcFlowTreatmentDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowTreatmentDevice() : Object("IfcFlowTreatmentDevice") {} }; - // C++ wrapper for IfcDiscreteAccessory - struct IfcDiscreteAccessory : IfcElementComponent, ObjectHelper { IfcDiscreteAccessory() : Object("IfcDiscreteAccessory") {} - + // C++ wrapper for IfcVertexPoint + struct IfcVertexPoint : IfcVertex, ObjectHelper { IfcVertexPoint() : Object("IfcVertexPoint") {} + Lazy< IfcPoint > VertexGeometry; }; - // C++ wrapper for IfcGrid - struct IfcGrid : IfcProduct, ObjectHelper { IfcGrid() : Object("IfcGrid") {} - ListOf< Lazy< NotImplemented >, 1, 0 > UAxes; - ListOf< Lazy< NotImplemented >, 1, 0 > VAxes; - Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > WAxes; - }; + // C++ wrapper for IfcAnnotationTextOccurrence + struct IfcAnnotationTextOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationTextOccurrence() : Object("IfcAnnotationTextOccurrence") {} - // C++ wrapper for IfcSanitaryTerminalType - struct IfcSanitaryTerminalType : IfcFlowTerminalType, ObjectHelper { IfcSanitaryTerminalType() : Object("IfcSanitaryTerminalType") {} - IfcSanitaryTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSubedge - struct IfcSubedge : IfcEdge, ObjectHelper { IfcSubedge() : Object("IfcSubedge") {} - Lazy< IfcEdge > ParentEdge; }; // C++ wrapper for IfcFilterType @@ -3535,86 +3756,50 @@ namespace IFC { IfcFilterTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcTendon - struct IfcTendon : IfcReinforcingElement, ObjectHelper { IfcTendon() : Object("IfcTendon") {} - IfcTendonTypeEnum::Out PredefinedType; - IfcPositiveLengthMeasure::Out NominalDiameter; - IfcAreaMeasure::Out CrossSectionArea; - Maybe< IfcForceMeasure::Out > TensionForce; - Maybe< IfcPressureMeasure::Out > PreStress; - Maybe< IfcNormalisedRatioMeasure::Out > FrictionCoefficient; - Maybe< IfcPositiveLengthMeasure::Out > AnchorageSlip; - Maybe< IfcPositiveLengthMeasure::Out > MinCurvatureRadius; + // C++ wrapper for IfcEdgeLoop + struct IfcEdgeLoop : IfcLoop, ObjectHelper { IfcEdgeLoop() : Object("IfcEdgeLoop") {} + ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; }; - // C++ wrapper for IfcStructuralLoadGroup - struct IfcStructuralLoadGroup : IfcGroup, ObjectHelper { IfcStructuralLoadGroup() : Object("IfcStructuralLoadGroup") {} - IfcLoadGroupTypeEnum::Out PredefinedType; - IfcActionTypeEnum::Out ActionType; - IfcActionSourceTypeEnum::Out ActionSource; - Maybe< IfcPositiveRatioMeasure::Out > Coefficient; - Maybe< IfcLabel::Out > Purpose; + // C++ wrapper for IfcCircleHollowProfileDef + struct IfcCircleHollowProfileDef : IfcCircleProfileDef, ObjectHelper { IfcCircleHollowProfileDef() : Object("IfcCircleHollowProfileDef") {} + IfcPositiveLengthMeasure::Out WallThickness; }; - // C++ wrapper for IfcPresentationStyleAssignment - struct IfcPresentationStyleAssignment : ObjectHelper { IfcPresentationStyleAssignment() : Object("IfcPresentationStyleAssignment") {} - ListOf< IfcPresentationStyleSelect, 1, 0 >::Out Styles; + // C++ wrapper for IfcAirTerminalBoxType + struct IfcAirTerminalBoxType : IfcFlowControllerType, ObjectHelper { IfcAirTerminalBoxType() : Object("IfcAirTerminalBoxType") {} + IfcAirTerminalBoxTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcStructuralCurveMember - struct IfcStructuralCurveMember : IfcStructuralMember, ObjectHelper { IfcStructuralCurveMember() : Object("IfcStructuralCurveMember") {} - IfcStructuralCurveTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLightSourceAmbient - struct IfcLightSourceAmbient : IfcLightSource, ObjectHelper { IfcLightSourceAmbient() : Object("IfcLightSourceAmbient") {} + // C++ wrapper for IfcStructuredDimensionCallout + struct IfcStructuredDimensionCallout : IfcDraughtingCallout, ObjectHelper { IfcStructuredDimensionCallout() : Object("IfcStructuredDimensionCallout") {} }; - // C++ wrapper for IfcCondition - struct IfcCondition : IfcGroup, ObjectHelper { IfcCondition() : Object("IfcCondition") {} - + // C++ wrapper for IfcCableCarrierSegmentType + struct IfcCableCarrierSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableCarrierSegmentType() : Object("IfcCableCarrierSegmentType") {} + IfcCableCarrierSegmentTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPort - struct IfcPort : IfcProduct, ObjectHelper { IfcPort() : Object("IfcPort") {} - + // C++ wrapper for IfcDuctFittingType + struct IfcDuctFittingType : IfcFlowFittingType, ObjectHelper { IfcDuctFittingType() : Object("IfcDuctFittingType") {} + IfcDuctFittingTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcSpace - struct IfcSpace : IfcSpatialStructureElement, ObjectHelper { IfcSpace() : Object("IfcSpace") {} - IfcInternalOrExternalEnum::Out InteriorOrExteriorSpace; - Maybe< IfcLengthMeasure::Out > ElevationWithFlooring; + // C++ wrapper for IfcRectangularTrimmedSurface + struct IfcRectangularTrimmedSurface : IfcBoundedSurface, ObjectHelper { IfcRectangularTrimmedSurface() : Object("IfcRectangularTrimmedSurface") {} + Lazy< IfcSurface > BasisSurface; + IfcParameterValue::Out U1; + IfcParameterValue::Out V1; + IfcParameterValue::Out U2; + IfcParameterValue::Out V2; + BOOLEAN::Out Usense; + BOOLEAN::Out Vsense; }; - // C++ wrapper for IfcHeatExchangerType - struct IfcHeatExchangerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHeatExchangerType() : Object("IfcHeatExchangerType") {} - IfcHeatExchangerTypeEnum::Out PredefinedType; - }; + // C++ wrapper for IfcProductDefinitionShape + struct IfcProductDefinitionShape : IfcProductRepresentation, ObjectHelper { IfcProductDefinitionShape() : Object("IfcProductDefinitionShape") {} - // C++ wrapper for IfcTankType - struct IfcTankType : IfcFlowStorageDeviceType, ObjectHelper { IfcTankType() : Object("IfcTankType") {} - IfcTankTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcInventory - struct IfcInventory : IfcGroup, ObjectHelper { IfcInventory() : Object("IfcInventory") {} - IfcInventoryTypeEnum::Out InventoryType; - IfcActorSelect::Out Jurisdiction; - ListOf< Lazy< NotImplemented >, 1, 0 > ResponsiblePersons; - Lazy< NotImplemented > LastUpdateDate; - Maybe< Lazy< NotImplemented > > CurrentValue; - Maybe< Lazy< NotImplemented > > OriginalValue; - }; - - // C++ wrapper for IfcTransportElementType - struct IfcTransportElementType : IfcElementType, ObjectHelper { IfcTransportElementType() : Object("IfcTransportElementType") {} - IfcTransportElementTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcAirToAirHeatRecoveryType - struct IfcAirToAirHeatRecoveryType : IfcEnergyConversionDeviceType, ObjectHelper { IfcAirToAirHeatRecoveryType() : Object("IfcAirToAirHeatRecoveryType") {} - IfcAirToAirHeatRecoveryTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcStairFlight @@ -3625,290 +3810,105 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > TreadLength; }; - // C++ wrapper for IfcElectricalElement - struct IfcElectricalElement : IfcElement, ObjectHelper { IfcElectricalElement() : Object("IfcElectricalElement") {} - - }; - - // C++ wrapper for IfcSurfaceStyleWithTextures - struct IfcSurfaceStyleWithTextures : ObjectHelper { IfcSurfaceStyleWithTextures() : Object("IfcSurfaceStyleWithTextures") {} - ListOf< Lazy< NotImplemented >, 1, 0 > Textures; - }; - - // C++ wrapper for IfcBoundingBox - struct IfcBoundingBox : IfcGeometricRepresentationItem, ObjectHelper { IfcBoundingBox() : Object("IfcBoundingBox") {} - Lazy< IfcCartesianPoint > Corner; - IfcPositiveLengthMeasure::Out XDim; - IfcPositiveLengthMeasure::Out YDim; - IfcPositiveLengthMeasure::Out ZDim; - }; - - // C++ wrapper for IfcWallType - struct IfcWallType : IfcBuildingElementType, ObjectHelper { IfcWallType() : Object("IfcWallType") {} - IfcWallTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMove - struct IfcMove : IfcTask, ObjectHelper { IfcMove() : Object("IfcMove") {} - Lazy< IfcSpatialStructureElement > MoveFrom; - Lazy< IfcSpatialStructureElement > MoveTo; - Maybe< ListOf< IfcText, 1, 0 >::Out > PunchList; - }; - - // C++ wrapper for IfcCircle - struct IfcCircle : IfcConic, ObjectHelper { IfcCircle() : Object("IfcCircle") {} - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcOffsetCurve2D - struct IfcOffsetCurve2D : IfcCurve, ObjectHelper { IfcOffsetCurve2D() : Object("IfcOffsetCurve2D") {} - Lazy< IfcCurve > BasisCurve; - IfcLengthMeasure::Out Distance; - LOGICAL::Out SelfIntersect; - }; - - // C++ wrapper for IfcPointOnCurve - struct IfcPointOnCurve : IfcPoint, ObjectHelper { IfcPointOnCurve() : Object("IfcPointOnCurve") {} - Lazy< IfcCurve > BasisCurve; - IfcParameterValue::Out PointParameter; - }; - - // C++ wrapper for IfcStructuralResultGroup - struct IfcStructuralResultGroup : IfcGroup, ObjectHelper { IfcStructuralResultGroup() : Object("IfcStructuralResultGroup") {} - IfcAnalysisTheoryTypeEnum::Out TheoryType; - Maybe< Lazy< IfcStructuralLoadGroup > > ResultForLoadGroup; - BOOLEAN::Out IsLinear; - }; - - // C++ wrapper for IfcSectionedSpine - struct IfcSectionedSpine : IfcGeometricRepresentationItem, ObjectHelper { IfcSectionedSpine() : Object("IfcSectionedSpine") {} - Lazy< IfcCompositeCurve > SpineCurve; - ListOf< Lazy< IfcProfileDef >, 2, 0 > CrossSections; - ListOf< Lazy< IfcAxis2Placement3D >, 2, 0 > CrossSectionPositions; - }; - // C++ wrapper for IfcSlab struct IfcSlab : IfcBuildingElement, ObjectHelper { IfcSlab() : Object("IfcSlab") {} Maybe< IfcSlabTypeEnum::Out > PredefinedType; }; - // C++ wrapper for IfcVertex - struct IfcVertex : IfcTopologicalRepresentationItem, ObjectHelper { IfcVertex() : Object("IfcVertex") {} - - }; - - // C++ wrapper for IfcVertexPoint - struct IfcVertexPoint : IfcVertex, ObjectHelper { IfcVertexPoint() : Object("IfcVertexPoint") {} - Lazy< IfcPoint > VertexGeometry; - }; - - // C++ wrapper for IfcStructuralLinearAction - struct IfcStructuralLinearAction : IfcStructuralAction, ObjectHelper { IfcStructuralLinearAction() : Object("IfcStructuralLinearAction") {} - IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; - }; - - // C++ wrapper for IfcStructuralLinearActionVarying - struct IfcStructuralLinearActionVarying : IfcStructuralLinearAction, ObjectHelper { IfcStructuralLinearActionVarying() : Object("IfcStructuralLinearActionVarying") {} - Lazy< NotImplemented > VaryingAppliedLoadLocation; - ListOf< Lazy< NotImplemented >, 1, 0 > SubsequentAppliedLoads; - }; - - // C++ wrapper for IfcBuildingElementProxyType - struct IfcBuildingElementProxyType : IfcBuildingElementType, ObjectHelper { IfcBuildingElementProxyType() : Object("IfcBuildingElementProxyType") {} - IfcBuildingElementProxyTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProjectionElement - struct IfcProjectionElement : IfcFeatureElementAddition, ObjectHelper { IfcProjectionElement() : Object("IfcProjectionElement") {} - - }; - - // C++ wrapper for IfcConversionBasedUnit - struct IfcConversionBasedUnit : IfcNamedUnit, ObjectHelper { IfcConversionBasedUnit() : Object("IfcConversionBasedUnit") {} - IfcLabel::Out Name; - Lazy< IfcMeasureWithUnit > ConversionFactor; - }; - - // C++ wrapper for IfcGeometricRepresentationSubContext - struct IfcGeometricRepresentationSubContext : IfcGeometricRepresentationContext, ObjectHelper { IfcGeometricRepresentationSubContext() : Object("IfcGeometricRepresentationSubContext") {} - Lazy< IfcGeometricRepresentationContext > ParentContext; - Maybe< IfcPositiveRatioMeasure::Out > TargetScale; - IfcGeometricProjectionEnum::Out TargetView; - Maybe< IfcLabel::Out > UserDefinedTargetView; - }; - - // C++ wrapper for IfcAnnotationSurfaceOccurrence - struct IfcAnnotationSurfaceOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSurfaceOccurrence() : Object("IfcAnnotationSurfaceOccurrence") {} - - }; - - // C++ wrapper for IfcRoundedEdgeFeature - struct IfcRoundedEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcRoundedEdgeFeature() : Object("IfcRoundedEdgeFeature") {} - Maybe< IfcPositiveLengthMeasure::Out > Radius; - }; - - // C++ wrapper for IfcElectricDistributionPoint - struct IfcElectricDistributionPoint : IfcFlowController, ObjectHelper { IfcElectricDistributionPoint() : Object("IfcElectricDistributionPoint") {} - IfcElectricDistributionPointFunctionEnum::Out DistributionPointFunction; - Maybe< IfcLabel::Out > UserDefinedFunction; - }; - - // C++ wrapper for IfcCableCarrierSegmentType - struct IfcCableCarrierSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableCarrierSegmentType() : Object("IfcCableCarrierSegmentType") {} - IfcCableCarrierSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcWallStandardCase - struct IfcWallStandardCase : IfcWall, ObjectHelper { IfcWallStandardCase() : Object("IfcWallStandardCase") {} - - }; - - // C++ wrapper for IfcCsgSolid - struct IfcCsgSolid : IfcSolidModel, ObjectHelper { IfcCsgSolid() : Object("IfcCsgSolid") {} - IfcCsgSelect::Out TreeRootExpression; - }; - - // C++ wrapper for IfcBeamType - struct IfcBeamType : IfcBuildingElementType, ObjectHelper { IfcBeamType() : Object("IfcBeamType") {} - IfcBeamTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcAnnotationFillArea - struct IfcAnnotationFillArea : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationFillArea() : Object("IfcAnnotationFillArea") {} - Lazy< IfcCurve > OuterBoundary; - Maybe< ListOf< Lazy< IfcCurve >, 1, 0 > > InnerBoundaries; - }; - - // C++ wrapper for IfcStructuralCurveMemberVarying - struct IfcStructuralCurveMemberVarying : IfcStructuralCurveMember, ObjectHelper { IfcStructuralCurveMemberVarying() : Object("IfcStructuralCurveMemberVarying") {} - - }; - - // C++ wrapper for IfcPointOnSurface - struct IfcPointOnSurface : IfcPoint, ObjectHelper { IfcPointOnSurface() : Object("IfcPointOnSurface") {} - Lazy< IfcSurface > BasisSurface; - IfcParameterValue::Out PointParameterU; - IfcParameterValue::Out PointParameterV; - }; - - // C++ wrapper for IfcOrderAction - struct IfcOrderAction : IfcTask, ObjectHelper { IfcOrderAction() : Object("IfcOrderAction") {} - IfcIdentifier::Out ActionID; - }; - - // C++ wrapper for IfcEdgeLoop - struct IfcEdgeLoop : IfcLoop, ObjectHelper { IfcEdgeLoop() : Object("IfcEdgeLoop") {} - ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; - }; - - // C++ wrapper for IfcAnnotationFillAreaOccurrence - struct IfcAnnotationFillAreaOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationFillAreaOccurrence() : Object("IfcAnnotationFillAreaOccurrence") {} - Maybe< Lazy< IfcPoint > > FillStyleTarget; - Maybe< IfcGlobalOrLocalEnum::Out > GlobalOrLocal; - }; - - // C++ wrapper for IfcWorkPlan - struct IfcWorkPlan : IfcWorkControl, ObjectHelper { IfcWorkPlan() : Object("IfcWorkPlan") {} - - }; - - // C++ wrapper for IfcEllipse - struct IfcEllipse : IfcConic, ObjectHelper { IfcEllipse() : Object("IfcEllipse") {} - IfcPositiveLengthMeasure::Out SemiAxis1; - IfcPositiveLengthMeasure::Out SemiAxis2; - }; - - // C++ wrapper for IfcProductDefinitionShape - struct IfcProductDefinitionShape : IfcProductRepresentation, ObjectHelper { IfcProductDefinitionShape() : Object("IfcProductDefinitionShape") {} - - }; - - // C++ wrapper for IfcProjectionCurve - struct IfcProjectionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcProjectionCurve() : Object("IfcProjectionCurve") {} - - }; - - // C++ wrapper for IfcElectricalCircuit - struct IfcElectricalCircuit : IfcSystem, ObjectHelper { IfcElectricalCircuit() : Object("IfcElectricalCircuit") {} - - }; - - // C++ wrapper for IfcRationalBezierCurve - struct IfcRationalBezierCurve : IfcBezierCurve, ObjectHelper { IfcRationalBezierCurve() : Object("IfcRationalBezierCurve") {} - ListOf< REAL, 2, 0 >::Out WeightsData; - }; - - // C++ wrapper for IfcStructuralPointAction - struct IfcStructuralPointAction : IfcStructuralAction, ObjectHelper { IfcStructuralPointAction() : Object("IfcStructuralPointAction") {} - - }; - - // C++ wrapper for IfcPipeSegmentType - struct IfcPipeSegmentType : IfcFlowSegmentType, ObjectHelper { IfcPipeSegmentType() : Object("IfcPipeSegmentType") {} - IfcPipeSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcTwoDirectionRepeatFactor - struct IfcTwoDirectionRepeatFactor : IfcOneDirectionRepeatFactor, ObjectHelper { IfcTwoDirectionRepeatFactor() : Object("IfcTwoDirectionRepeatFactor") {} - Lazy< IfcVector > SecondRepeatFactor; - }; - - // C++ wrapper for IfcShapeRepresentation - struct IfcShapeRepresentation : IfcShapeModel, ObjectHelper { IfcShapeRepresentation() : Object("IfcShapeRepresentation") {} - - }; - - // C++ wrapper for IfcPropertySet - struct IfcPropertySet : IfcPropertySetDefinition, ObjectHelper { IfcPropertySet() : Object("IfcPropertySet") {} - ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; - }; - - // C++ wrapper for IfcSurfaceStyleRendering - struct IfcSurfaceStyleRendering : IfcSurfaceStyleShading, ObjectHelper { IfcSurfaceStyleRendering() : Object("IfcSurfaceStyleRendering") {} - Maybe< IfcNormalisedRatioMeasure::Out > Transparency; - Maybe< IfcColourOrFactor::Out > DiffuseColour; - Maybe< IfcColourOrFactor::Out > TransmissionColour; - Maybe< IfcColourOrFactor::Out > DiffuseTransmissionColour; - Maybe< IfcColourOrFactor::Out > ReflectionColour; - Maybe< IfcColourOrFactor::Out > SpecularColour; - Maybe< IfcSpecularHighlightSelect::Out > SpecularHighlight; - IfcReflectanceMethodEnum::Out ReflectanceMethod; - }; - - // C++ wrapper for IfcDistributionPort - struct IfcDistributionPort : IfcPort, ObjectHelper { IfcDistributionPort() : Object("IfcDistributionPort") {} - Maybe< IfcFlowDirectionEnum::Out > FlowDirection; - }; - // C++ wrapper for IfcPipeFittingType struct IfcPipeFittingType : IfcFlowFittingType, ObjectHelper { IfcPipeFittingType() : Object("IfcPipeFittingType") {} IfcPipeFittingTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcTransportElement - struct IfcTransportElement : IfcElement, ObjectHelper { IfcTransportElement() : Object("IfcTransportElement") {} - Maybe< IfcTransportElementTypeEnum::Out > OperationType; - Maybe< IfcMassMeasure::Out > CapacityByWeight; - Maybe< IfcCountMeasure::Out > CapacityByNumber; + // C++ wrapper for IfcSpace + struct IfcSpace : IfcSpatialStructureElement, ObjectHelper { IfcSpace() : Object("IfcSpace") {} + IfcInternalOrExternalEnum::Out InteriorOrExteriorSpace; + Maybe< IfcLengthMeasure::Out > ElevationWithFlooring; }; - // C++ wrapper for IfcAnnotationTextOccurrence - struct IfcAnnotationTextOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationTextOccurrence() : Object("IfcAnnotationTextOccurrence") {} + // C++ wrapper for IfcBuildingElementProxyType + struct IfcBuildingElementProxyType : IfcBuildingElementType, ObjectHelper { IfcBuildingElementProxyType() : Object("IfcBuildingElementProxyType") {} + IfcBuildingElementProxyTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcAlarmType + struct IfcAlarmType : IfcDistributionControlElementType, ObjectHelper { IfcAlarmType() : Object("IfcAlarmType") {} + IfcAlarmTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCableCarrierFittingType + struct IfcCableCarrierFittingType : IfcFlowFittingType, ObjectHelper { IfcCableCarrierFittingType() : Object("IfcCableCarrierFittingType") {} + IfcCableCarrierFittingTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcRoundedEdgeFeature + struct IfcRoundedEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcRoundedEdgeFeature() : Object("IfcRoundedEdgeFeature") {} + Maybe< IfcPositiveLengthMeasure::Out > Radius; + }; + + // C++ wrapper for IfcFaceSurface + struct IfcFaceSurface : IfcFace, ObjectHelper { IfcFaceSurface() : Object("IfcFaceSurface") {} + Lazy< IfcSurface > FaceSurface; + BOOLEAN::Out SameSense; + }; + + // C++ wrapper for IfcCartesianTransformationOperator2D + struct IfcCartesianTransformationOperator2D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator2D() : Object("IfcCartesianTransformationOperator2D") {} }; - // C++ wrapper for IfcStructuralAnalysisModel - struct IfcStructuralAnalysisModel : IfcSystem, ObjectHelper { IfcStructuralAnalysisModel() : Object("IfcStructuralAnalysisModel") {} - IfcAnalysisModelTypeEnum::Out PredefinedType; - Maybe< Lazy< IfcAxis2Placement3D > > OrientationOf2DPlane; - Maybe< ListOf< Lazy< IfcStructuralLoadGroup >, 1, 0 > > LoadedBy; - Maybe< ListOf< Lazy< IfcStructuralResultGroup >, 1, 0 > > HasResults; + // C++ wrapper for IfcTendonAnchor + struct IfcTendonAnchor : IfcReinforcingElement, ObjectHelper { IfcTendonAnchor() : Object("IfcTendonAnchor") {} + }; - // C++ wrapper for IfcConditionCriterion - struct IfcConditionCriterion : IfcControl, ObjectHelper { IfcConditionCriterion() : Object("IfcConditionCriterion") {} - IfcConditionCriterionSelect::Out Criterion; - IfcDateTimeSelect::Out CriterionDateTime; + // C++ wrapper for IfcWorkSchedule + struct IfcWorkSchedule : IfcWorkControl, ObjectHelper { IfcWorkSchedule() : Object("IfcWorkSchedule") {} + + }; + + // C++ wrapper for IfcSurfaceOfRevolution + struct IfcSurfaceOfRevolution : IfcSweptSurface, ObjectHelper { IfcSurfaceOfRevolution() : Object("IfcSurfaceOfRevolution") {} + Lazy< IfcAxis1Placement > AxisPosition; + }; + + // C++ wrapper for IfcElectricHeaterType + struct IfcElectricHeaterType : IfcFlowTerminalType, ObjectHelper { IfcElectricHeaterType() : Object("IfcElectricHeaterType") {} + IfcElectricHeaterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcMeasureWithUnit + struct IfcMeasureWithUnit : ObjectHelper { IfcMeasureWithUnit() : Object("IfcMeasureWithUnit") {} + IfcValue::Out ValueComponent; + IfcUnit::Out UnitComponent; + }; + + // C++ wrapper for IfcOrientedEdge + struct IfcOrientedEdge : IfcEdge, ObjectHelper { IfcOrientedEdge() : Object("IfcOrientedEdge") {} + Lazy< IfcEdge > EdgeElement; + BOOLEAN::Out Orientation; + }; + + // C++ wrapper for IfcCartesianTransformationOperator2DnonUniform + struct IfcCartesianTransformationOperator2DnonUniform : IfcCartesianTransformationOperator2D, ObjectHelper { IfcCartesianTransformationOperator2DnonUniform() : Object("IfcCartesianTransformationOperator2DnonUniform") {} + Maybe< REAL::Out > Scale2; + }; + + // C++ wrapper for IfcRelFillsElement + struct IfcRelFillsElement : IfcRelConnects, ObjectHelper { IfcRelFillsElement() : Object("IfcRelFillsElement") {} + Lazy< IfcOpeningElement > RelatingOpeningElement; + Lazy< IfcElement > RelatedBuildingElement; + }; + + // C++ wrapper for IfcConstructionMaterialResource + struct IfcConstructionMaterialResource : IfcConstructionResource, ObjectHelper { IfcConstructionMaterialResource() : Object("IfcConstructionMaterialResource") {} + Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > Suppliers; + Maybe< IfcRatioMeasure::Out > UsageRatio; + }; + + // C++ wrapper for IfcRadiusDimension + struct IfcRadiusDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcRadiusDimension() : Object("IfcRadiusDimension") {} + }; void GetSchema(EXPRESS::ConversionSchema& out); @@ -3922,442 +3922,442 @@ namespace STEP { #define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) + DECL_CONV_STUB(IfcRepresentationItem); + DECL_CONV_STUB(IfcTopologicalRepresentationItem); + DECL_CONV_STUB(IfcEdge); + DECL_CONV_STUB(IfcGeometricRepresentationItem); + DECL_CONV_STUB(IfcCompositeCurveSegment); DECL_CONV_STUB(IfcRoot); DECL_CONV_STUB(IfcObjectDefinition); + DECL_CONV_STUB(IfcObject); + DECL_CONV_STUB(IfcProduct); + DECL_CONV_STUB(IfcStructuralItem); + DECL_CONV_STUB(IfcStructuralConnection); + DECL_CONV_STUB(IfcStructuralSurfaceConnection); + DECL_CONV_STUB(IfcPresentationStyleAssignment); + DECL_CONV_STUB(IfcElement); + DECL_CONV_STUB(IfcBuildingElement); + DECL_CONV_STUB(IfcCurtainWall); + DECL_CONV_STUB(IfcProxy); + DECL_CONV_STUB(IfcStyledItem); + DECL_CONV_STUB(IfcAnnotationOccurrence); + DECL_CONV_STUB(IfcAnnotationSymbolOccurrence); + DECL_CONV_STUB(IfcTerminatorSymbol); + DECL_CONV_STUB(IfcDimensionCurveTerminator); DECL_CONV_STUB(IfcTypeObject); DECL_CONV_STUB(IfcTypeProduct); DECL_CONV_STUB(IfcElementType); DECL_CONV_STUB(IfcDistributionElementType); - DECL_CONV_STUB(IfcDistributionFlowElementType); - DECL_CONV_STUB(IfcFlowControllerType); - DECL_CONV_STUB(IfcElectricTimeControlType); - DECL_CONV_STUB(IfcRepresentation); - DECL_CONV_STUB(IfcShapeModel); - DECL_CONV_STUB(IfcTopologyRepresentation); - DECL_CONV_STUB(IfcRelationship); - DECL_CONV_STUB(IfcRelConnects); - DECL_CONV_STUB(IfcFlowFittingType); - DECL_CONV_STUB(IfcCableCarrierFittingType); - DECL_CONV_STUB(IfcEnergyConversionDeviceType); - DECL_CONV_STUB(IfcCoilType); - DECL_CONV_STUB(IfcObject); - DECL_CONV_STUB(IfcControl); - DECL_CONV_STUB(IfcPerformanceHistory); - DECL_CONV_STUB(IfcRepresentationItem); - DECL_CONV_STUB(IfcGeometricRepresentationItem); - DECL_CONV_STUB(IfcTextLiteral); - DECL_CONV_STUB(IfcTextLiteralWithExtent); - DECL_CONV_STUB(IfcProductRepresentation); - DECL_CONV_STUB(IfcProduct); - DECL_CONV_STUB(IfcElement); - DECL_CONV_STUB(IfcDistributionElement); - DECL_CONV_STUB(IfcDistributionFlowElement); - DECL_CONV_STUB(IfcCurve); - DECL_CONV_STUB(IfcBoundedCurve); - DECL_CONV_STUB(IfcCompositeCurve); - DECL_CONV_STUB(Ifc2DCompositeCurve); - DECL_CONV_STUB(IfcCartesianTransformationOperator); - DECL_CONV_STUB(IfcCartesianTransformationOperator3D); - DECL_CONV_STUB(IfcProperty); - DECL_CONV_STUB(IfcSimpleProperty); - DECL_CONV_STUB(IfcPropertyEnumeratedValue); - DECL_CONV_STUB(IfcBuildingElementType); - DECL_CONV_STUB(IfcStairFlightType); - DECL_CONV_STUB(IfcSurface); - DECL_CONV_STUB(IfcElementarySurface); - DECL_CONV_STUB(IfcPlane); - DECL_CONV_STUB(IfcBooleanResult); - DECL_CONV_STUB(IfcBooleanClippingResult); - DECL_CONV_STUB(IfcSolidModel); - DECL_CONV_STUB(IfcManifoldSolidBrep); - DECL_CONV_STUB(IfcFlowTerminalType); - DECL_CONV_STUB(IfcStackTerminalType); - DECL_CONV_STUB(IfcStructuralItem); - DECL_CONV_STUB(IfcStructuralConnection); - DECL_CONV_STUB(IfcStructuralCurveConnection); - DECL_CONV_STUB(IfcJunctionBoxType); - DECL_CONV_STUB(IfcPropertyDefinition); - DECL_CONV_STUB(IfcPropertySetDefinition); - DECL_CONV_STUB(IfcProcess); - DECL_CONV_STUB(IfcTask); - DECL_CONV_STUB(IfcRelFillsElement); - DECL_CONV_STUB(IfcProcedure); - DECL_CONV_STUB(IfcProxy); - DECL_CONV_STUB(IfcResource); - DECL_CONV_STUB(IfcConstructionResource); - DECL_CONV_STUB(IfcSubContractResource); - DECL_CONV_STUB(IfcRelContainedInSpatialStructure); - DECL_CONV_STUB(IfcTopologicalRepresentationItem); - DECL_CONV_STUB(IfcEdge); - DECL_CONV_STUB(IfcEdgeCurve); - DECL_CONV_STUB(IfcPlateType); - DECL_CONV_STUB(IfcObjectPlacement); - DECL_CONV_STUB(IfcGridPlacement); - DECL_CONV_STUB(IfcFireSuppressionTerminalType); - DECL_CONV_STUB(IfcFlowStorageDevice); - DECL_CONV_STUB(IfcSweptSurface); - DECL_CONV_STUB(IfcSurfaceOfRevolution); - DECL_CONV_STUB(IfcOrientedEdge); - DECL_CONV_STUB(IfcDirection); - DECL_CONV_STUB(IfcProfileDef); - DECL_CONV_STUB(IfcParameterizedProfileDef); - DECL_CONV_STUB(IfcCShapeProfileDef); DECL_CONV_STUB(IfcFeatureElement); DECL_CONV_STUB(IfcFeatureElementSubtraction); - DECL_CONV_STUB(IfcEdgeFeature); - DECL_CONV_STUB(IfcChamferEdgeFeature); - DECL_CONV_STUB(IfcBuildingElement); - DECL_CONV_STUB(IfcColumn); - DECL_CONV_STUB(IfcPropertyReferenceValue); - DECL_CONV_STUB(IfcElectricMotorType); - DECL_CONV_STUB(IfcSpatialStructureElementType); - DECL_CONV_STUB(IfcSpaceType); - DECL_CONV_STUB(IfcColumnType); - DECL_CONV_STUB(IfcCraneRailAShapeProfileDef); - DECL_CONV_STUB(IfcCondenserType); - DECL_CONV_STUB(IfcCircleProfileDef); - DECL_CONV_STUB(IfcCircleHollowProfileDef); - DECL_CONV_STUB(IfcPlacement); - DECL_CONV_STUB(IfcAxis2Placement3D); + DECL_CONV_STUB(IfcOpeningElement); DECL_CONV_STUB(IfcPresentationStyle); - DECL_CONV_STUB(IfcEquipmentElement); - DECL_CONV_STUB(IfcCompositeCurveSegment); - DECL_CONV_STUB(IfcRectangleProfileDef); - DECL_CONV_STUB(IfcBuildingElementProxy); - DECL_CONV_STUB(IfcDistributionControlElementType); - DECL_CONV_STUB(IfcFlowInstrumentType); - DECL_CONV_STUB(IfcDraughtingCallout); - DECL_CONV_STUB(IfcDimensionCurveDirectedCallout); - DECL_CONV_STUB(IfcLinearDimension); - DECL_CONV_STUB(IfcElementAssembly); - DECL_CONV_STUB(IfcCsgPrimitive3D); - DECL_CONV_STUB(IfcRightCircularCone); - DECL_CONV_STUB(IfcProjectOrder); - DECL_CONV_STUB(IfcLShapeProfileDef); - DECL_CONV_STUB(IfcAngularDimension); - DECL_CONV_STUB(IfcLocalPlacement); - DECL_CONV_STUB(IfcSweptAreaSolid); - DECL_CONV_STUB(IfcRevolvedAreaSolid); - DECL_CONV_STUB(IfcStructuralSurfaceConnection); - DECL_CONV_STUB(IfcRadiusDimension); - DECL_CONV_STUB(IfcSweptDiskSolid); - DECL_CONV_STUB(IfcHalfSpaceSolid); - DECL_CONV_STUB(IfcPolygonalBoundedHalfSpace); - DECL_CONV_STUB(IfcTimeSeriesSchedule); - DECL_CONV_STUB(IfcCooledBeamType); - DECL_CONV_STUB(IfcProject); - DECL_CONV_STUB(IfcEvaporatorType); - DECL_CONV_STUB(IfcLaborResource); - DECL_CONV_STUB(IfcPropertyBoundedValue); - DECL_CONV_STUB(IfcRampFlightType); - DECL_CONV_STUB(IfcMember); - DECL_CONV_STUB(IfcTubeBundleType); - DECL_CONV_STUB(IfcValveType); - DECL_CONV_STUB(IfcTrimmedCurve); - DECL_CONV_STUB(IfcRelDefines); - DECL_CONV_STUB(IfcRelDefinesByProperties); - DECL_CONV_STUB(IfcActor); - DECL_CONV_STUB(IfcOccupant); - DECL_CONV_STUB(IfcHumidifierType); - DECL_CONV_STUB(IfcArbitraryOpenProfileDef); - DECL_CONV_STUB(IfcPermit); - DECL_CONV_STUB(IfcOffsetCurve3D); - DECL_CONV_STUB(IfcLightSource); - DECL_CONV_STUB(IfcLightSourcePositional); - DECL_CONV_STUB(IfcCompositeProfileDef); - DECL_CONV_STUB(IfcRamp); - DECL_CONV_STUB(IfcFlowMovingDevice); - DECL_CONV_STUB(IfcSpaceHeaterType); - DECL_CONV_STUB(IfcLampType); - DECL_CONV_STUB(IfcBuildingElementComponent); - DECL_CONV_STUB(IfcReinforcingElement); - DECL_CONV_STUB(IfcReinforcingBar); - DECL_CONV_STUB(IfcElectricHeaterType); - DECL_CONV_STUB(IfcTShapeProfileDef); - DECL_CONV_STUB(IfcStructuralActivity); - DECL_CONV_STUB(IfcStructuralAction); - DECL_CONV_STUB(IfcDuctFittingType); - DECL_CONV_STUB(IfcCartesianTransformationOperator2D); - DECL_CONV_STUB(IfcCartesianTransformationOperator2DnonUniform); - DECL_CONV_STUB(IfcVirtualElement); - DECL_CONV_STUB(IfcRightCircularCylinder); - DECL_CONV_STUB(IfcOutletType); - DECL_CONV_STUB(IfcRelDecomposes); - DECL_CONV_STUB(IfcCovering); - DECL_CONV_STUB(IfcPolyline); - DECL_CONV_STUB(IfcPath); - DECL_CONV_STUB(IfcElementComponent); - DECL_CONV_STUB(IfcFastener); - DECL_CONV_STUB(IfcMappedItem); - DECL_CONV_STUB(IfcRectangularPyramid); - DECL_CONV_STUB(IfcCrewResource); - DECL_CONV_STUB(IfcNamedUnit); - DECL_CONV_STUB(IfcContextDependentUnit); - DECL_CONV_STUB(IfcUnitaryEquipmentType); - DECL_CONV_STUB(IfcRoof); - DECL_CONV_STUB(IfcStructuralMember); - DECL_CONV_STUB(IfcStyleModel); - DECL_CONV_STUB(IfcStyledRepresentation); - DECL_CONV_STUB(IfcSpatialStructureElement); - DECL_CONV_STUB(IfcBuilding); - DECL_CONV_STUB(IfcConnectedFaceSet); - DECL_CONV_STUB(IfcOpenShell); - DECL_CONV_STUB(IfcFacetedBrep); - DECL_CONV_STUB(IfcConic); - DECL_CONV_STUB(IfcCoveringType); - DECL_CONV_STUB(IfcRoundedRectangleProfileDef); - DECL_CONV_STUB(IfcAirTerminalType); - DECL_CONV_STUB(IfcFlowMovingDeviceType); - DECL_CONV_STUB(IfcCompressorType); - DECL_CONV_STUB(IfcIShapeProfileDef); - DECL_CONV_STUB(IfcAsymmetricIShapeProfileDef); - DECL_CONV_STUB(IfcControllerType); - DECL_CONV_STUB(IfcRailing); - DECL_CONV_STUB(IfcGroup); - DECL_CONV_STUB(IfcAsset); - DECL_CONV_STUB(IfcMaterialDefinitionRepresentation); - DECL_CONV_STUB(IfcRailingType); - DECL_CONV_STUB(IfcWall); - DECL_CONV_STUB(IfcStructuralPointConnection); - DECL_CONV_STUB(IfcPropertyListValue); - DECL_CONV_STUB(IfcFurnitureStandard); - DECL_CONV_STUB(IfcElectricGeneratorType); - DECL_CONV_STUB(IfcDoor); - DECL_CONV_STUB(IfcStyledItem); - DECL_CONV_STUB(IfcAnnotationOccurrence); - DECL_CONV_STUB(IfcAnnotationSymbolOccurrence); - DECL_CONV_STUB(IfcArbitraryClosedProfileDef); - DECL_CONV_STUB(IfcArbitraryProfileDefWithVoids); - DECL_CONV_STUB(IfcLine); - DECL_CONV_STUB(IfcFlowSegmentType); - DECL_CONV_STUB(IfcAirTerminalBoxType); - DECL_CONV_STUB(IfcPropertySingleValue); - DECL_CONV_STUB(IfcAlarmType); - DECL_CONV_STUB(IfcEllipseProfileDef); - DECL_CONV_STUB(IfcStair); - DECL_CONV_STUB(IfcSurfaceStyleShading); - DECL_CONV_STUB(IfcPumpType); - DECL_CONV_STUB(IfcDefinedSymbol); - DECL_CONV_STUB(IfcElementComponentType); - DECL_CONV_STUB(IfcFastenerType); - DECL_CONV_STUB(IfcMechanicalFastenerType); - DECL_CONV_STUB(IfcFlowFitting); - DECL_CONV_STUB(IfcLightSourceDirectional); DECL_CONV_STUB(IfcSurfaceStyle); - DECL_CONV_STUB(IfcAnnotationSurface); - DECL_CONV_STUB(IfcFlowController); - DECL_CONV_STUB(IfcBuildingStorey); - DECL_CONV_STUB(IfcWorkControl); - DECL_CONV_STUB(IfcWorkSchedule); - DECL_CONV_STUB(IfcDuctSegmentType); - DECL_CONV_STUB(IfcFace); + DECL_CONV_STUB(IfcFillAreaStyleTileSymbolWithStyle); + DECL_CONV_STUB(IfcRelationship); + DECL_CONV_STUB(IfcRelConnects); + DECL_CONV_STUB(IfcStructuralMember); DECL_CONV_STUB(IfcStructuralSurfaceMember); - DECL_CONV_STUB(IfcStructuralSurfaceMemberVarying); - DECL_CONV_STUB(IfcFaceSurface); - DECL_CONV_STUB(IfcCostSchedule); - DECL_CONV_STUB(IfcPlanarExtent); - DECL_CONV_STUB(IfcPlanarBox); - DECL_CONV_STUB(IfcColourSpecification); - DECL_CONV_STUB(IfcVector); - DECL_CONV_STUB(IfcBeam); - DECL_CONV_STUB(IfcColourRgb); - DECL_CONV_STUB(IfcStructuralPlanarAction); - DECL_CONV_STUB(IfcStructuralPlanarActionVarying); - DECL_CONV_STUB(IfcSite); - DECL_CONV_STUB(IfcDiscreteAccessoryType); - DECL_CONV_STUB(IfcVibrationIsolatorType); - DECL_CONV_STUB(IfcEvaporativeCoolerType); - DECL_CONV_STUB(IfcDistributionChamberElementType); - DECL_CONV_STUB(IfcFeatureElementAddition); - DECL_CONV_STUB(IfcStructuredDimensionCallout); - DECL_CONV_STUB(IfcCoolingTowerType); - DECL_CONV_STUB(IfcCenterLineProfileDef); - DECL_CONV_STUB(IfcWindowStyle); - DECL_CONV_STUB(IfcLightSourceGoniometric); - DECL_CONV_STUB(IfcTransformerType); - DECL_CONV_STUB(IfcMemberType); - DECL_CONV_STUB(IfcSurfaceOfLinearExtrusion); - DECL_CONV_STUB(IfcMotorConnectionType); - DECL_CONV_STUB(IfcFlowTreatmentDeviceType); - DECL_CONV_STUB(IfcDuctSilencerType); - DECL_CONV_STUB(IfcFurnishingElementType); - DECL_CONV_STUB(IfcSystemFurnitureElementType); - DECL_CONV_STUB(IfcWasteTerminalType); - DECL_CONV_STUB(IfcBSplineCurve); - DECL_CONV_STUB(IfcBezierCurve); - DECL_CONV_STUB(IfcActuatorType); - DECL_CONV_STUB(IfcDistributionControlElement); - DECL_CONV_STUB(IfcAnnotation); - DECL_CONV_STUB(IfcShellBasedSurfaceModel); - DECL_CONV_STUB(IfcActionRequest); - DECL_CONV_STUB(IfcExtrudedAreaSolid); - DECL_CONV_STUB(IfcSystem); - DECL_CONV_STUB(IfcFillAreaStyleHatching); - DECL_CONV_STUB(IfcRelVoidsElement); - DECL_CONV_STUB(IfcSurfaceCurveSweptAreaSolid); - DECL_CONV_STUB(IfcCartesianTransformationOperator3DnonUniform); - DECL_CONV_STUB(IfcCurtainWallType); + DECL_CONV_STUB(IfcCartesianTransformationOperator); + DECL_CONV_STUB(IfcCartesianTransformationOperator3D); + DECL_CONV_STUB(IfcDistributionFlowElementType); + DECL_CONV_STUB(IfcFlowTerminalType); + DECL_CONV_STUB(IfcSanitaryTerminalType); + DECL_CONV_STUB(IfcEnergyConversionDeviceType); + DECL_CONV_STUB(IfcElectricGeneratorType); + DECL_CONV_STUB(IfcResource); + DECL_CONV_STUB(IfcConstructionResource); + DECL_CONV_STUB(IfcControl); DECL_CONV_STUB(IfcEquipmentStandard); - DECL_CONV_STUB(IfcFlowStorageDeviceType); - DECL_CONV_STUB(IfcDiameterDimension); - DECL_CONV_STUB(IfcSwitchingDeviceType); - DECL_CONV_STUB(IfcWindow); - DECL_CONV_STUB(IfcFlowTreatmentDevice); - DECL_CONV_STUB(IfcChillerType); - DECL_CONV_STUB(IfcRectangleHollowProfileDef); - DECL_CONV_STUB(IfcBoxedHalfSpace); - DECL_CONV_STUB(IfcAxis2Placement2D); - DECL_CONV_STUB(IfcSpaceProgram); + DECL_CONV_STUB(IfcElectricApplianceType); + DECL_CONV_STUB(IfcFurnitureStandard); + DECL_CONV_STUB(IfcDefinedSymbol); + DECL_CONV_STUB(IfcColourSpecification); + DECL_CONV_STUB(IfcCurve); + DECL_CONV_STUB(IfcLine); + DECL_CONV_STUB(IfcLoop); + DECL_CONV_STUB(IfcProperty); + DECL_CONV_STUB(IfcComplexProperty); + DECL_CONV_STUB(IfcCovering); + DECL_CONV_STUB(IfcBoundedCurve); + DECL_CONV_STUB(IfcBSplineCurve); + DECL_CONV_STUB(IfcNamedUnit); + DECL_CONV_STUB(IfcSubContractResource); + DECL_CONV_STUB(IfcObjectPlacement); + DECL_CONV_STUB(IfcGridPlacement); + DECL_CONV_STUB(IfcPropertyDefinition); + DECL_CONV_STUB(IfcPropertySetDefinition); DECL_CONV_STUB(IfcPoint); DECL_CONV_STUB(IfcCartesianPoint); - DECL_CONV_STUB(IfcBoundedSurface); - DECL_CONV_STUB(IfcLoop); - DECL_CONV_STUB(IfcPolyLoop); - DECL_CONV_STUB(IfcTerminatorSymbol); - DECL_CONV_STUB(IfcDimensionCurveTerminator); - DECL_CONV_STUB(IfcTrapeziumProfileDef); - DECL_CONV_STUB(IfcRepresentationContext); - DECL_CONV_STUB(IfcGeometricRepresentationContext); - DECL_CONV_STUB(IfcCurveBoundedPlane); - DECL_CONV_STUB(IfcSIUnit); + DECL_CONV_STUB(IfcFaceBound); + DECL_CONV_STUB(IfcEdgeCurve); + DECL_CONV_STUB(IfcOneDirectionRepeatFactor); + DECL_CONV_STUB(IfcTwoDirectionRepeatFactor); + DECL_CONV_STUB(IfcLightSource); + DECL_CONV_STUB(IfcLightSourceAmbient); + DECL_CONV_STUB(IfcPlacement); + DECL_CONV_STUB(IfcAxis1Placement); + DECL_CONV_STUB(IfcAnnotationSurfaceOccurrence); + DECL_CONV_STUB(IfcFlowControllerType); + DECL_CONV_STUB(IfcFlowMeterType); + DECL_CONV_STUB(IfcAnnotationCurveOccurrence); + DECL_CONV_STUB(IfcProfileDef); + DECL_CONV_STUB(IfcCompositeProfileDef); + DECL_CONV_STUB(IfcSubedge); + DECL_CONV_STUB(IfcFlowStorageDeviceType); + DECL_CONV_STUB(IfcTankType); + DECL_CONV_STUB(IfcBuildingElementComponent); + DECL_CONV_STUB(IfcBuildingElementPart); + DECL_CONV_STUB(IfcRepresentation); + DECL_CONV_STUB(IfcShapeModel); + DECL_CONV_STUB(IfcShapeRepresentation); + DECL_CONV_STUB(IfcRailing); + DECL_CONV_STUB(IfcStyleModel); + DECL_CONV_STUB(IfcStyledRepresentation); + DECL_CONV_STUB(IfcColourRgb); + DECL_CONV_STUB(IfcElementComponentType); + DECL_CONV_STUB(IfcDiscreteAccessoryType); + DECL_CONV_STUB(IfcVibrationIsolatorType); + DECL_CONV_STUB(IfcProcess); + DECL_CONV_STUB(IfcProcedure); + DECL_CONV_STUB(IfcFeatureElementAddition); + DECL_CONV_STUB(IfcEdgeFeature); + DECL_CONV_STUB(IfcTrimmedCurve); + DECL_CONV_STUB(IfcTextLiteral); + DECL_CONV_STUB(IfcParameterizedProfileDef); + DECL_CONV_STUB(IfcCraneRailAShapeProfileDef); + DECL_CONV_STUB(IfcElementComponent); + DECL_CONV_STUB(IfcCsgPrimitive3D); + DECL_CONV_STUB(IfcBlock); + DECL_CONV_STUB(IfcBuildingElementType); + DECL_CONV_STUB(IfcRailingType); + DECL_CONV_STUB(IfcStructuralPointConnection); + DECL_CONV_STUB(IfcFlowMovingDeviceType); + DECL_CONV_STUB(IfcPumpType); + DECL_CONV_STUB(IfcStructuralCurveMember); + DECL_CONV_STUB(IfcStructuralCurveMemberVarying); + DECL_CONV_STUB(IfcReinforcingElement); + DECL_CONV_STUB(IfcReinforcingMesh); + DECL_CONV_STUB(IfcPlanarExtent); + DECL_CONV_STUB(IfcPlanarBox); + DECL_CONV_STUB(IfcCooledBeamType); + DECL_CONV_STUB(IfcProjectOrderRecord); + DECL_CONV_STUB(IfcPointOnSurface); + DECL_CONV_STUB(IfcPointOnCurve); + DECL_CONV_STUB(IfcRelContainedInSpatialStructure); + DECL_CONV_STUB(IfcSimpleProperty); + DECL_CONV_STUB(IfcPropertyListValue); + DECL_CONV_STUB(IfcSpatialStructureElement); + DECL_CONV_STUB(IfcBuildingStorey); + DECL_CONV_STUB(IfcUnitaryEquipmentType); + DECL_CONV_STUB(IfcOutletType); + DECL_CONV_STUB(IfcFastenerType); + DECL_CONV_STUB(IfcGroup); + DECL_CONV_STUB(IfcSystem); + DECL_CONV_STUB(IfcStructuralAnalysisModel); + DECL_CONV_STUB(IfcSlabType); + DECL_CONV_STUB(IfcDistributionElement); + DECL_CONV_STUB(IfcDistributionFlowElement); + DECL_CONV_STUB(IfcTShapeProfileDef); + DECL_CONV_STUB(IfcPolyline); + DECL_CONV_STUB(IfcDraughtingCallout); + DECL_CONV_STUB(IfcFace); + DECL_CONV_STUB(IfcStructuralSurfaceMemberVarying); + DECL_CONV_STUB(IfcMotorConnectionType); + DECL_CONV_STUB(IfcAirToAirHeatRecoveryType); + DECL_CONV_STUB(IfcPlateType); + DECL_CONV_STUB(IfcSolidModel); + DECL_CONV_STUB(IfcCsgSolid); + DECL_CONV_STUB(IfcMechanicalFastenerType); + DECL_CONV_STUB(IfcRelDecomposes); + DECL_CONV_STUB(IfcElectricalElement); + DECL_CONV_STUB(IfcColumnType); + DECL_CONV_STUB(IfcRectangularPyramid); + DECL_CONV_STUB(IfcActionRequest); + DECL_CONV_STUB(IfcStructuralActivity); DECL_CONV_STUB(IfcStructuralReaction); DECL_CONV_STUB(IfcStructuralPointReaction); - DECL_CONV_STUB(IfcAxis1Placement); - DECL_CONV_STUB(IfcElectricApplianceType); - DECL_CONV_STUB(IfcSensorType); - DECL_CONV_STUB(IfcFurnishingElement); - DECL_CONV_STUB(IfcProtectiveDeviceType); - DECL_CONV_STUB(IfcZShapeProfileDef); - DECL_CONV_STUB(IfcScheduleTimeControl); - DECL_CONV_STUB(IfcRepresentationMap); - DECL_CONV_STUB(IfcClosedShell); - DECL_CONV_STUB(IfcBuildingElementPart); - DECL_CONV_STUB(IfcBlock); - DECL_CONV_STUB(IfcLightFixtureType); - DECL_CONV_STUB(IfcOpeningElement); - DECL_CONV_STUB(IfcLightSourceSpot); - DECL_CONV_STUB(IfcTendonAnchor); - DECL_CONV_STUB(IfcElectricFlowStorageDeviceType); - DECL_CONV_STUB(IfcSphere); - DECL_CONV_STUB(IfcDamperType); - DECL_CONV_STUB(IfcProjectOrderRecord); - DECL_CONV_STUB(IfcDistributionChamberElement); - DECL_CONV_STUB(IfcMechanicalFastener); - DECL_CONV_STUB(IfcRectangularTrimmedSurface); - DECL_CONV_STUB(IfcZone); - DECL_CONV_STUB(IfcFanType); - DECL_CONV_STUB(IfcGeometricSet); - DECL_CONV_STUB(IfcFillAreaStyleTiles); - DECL_CONV_STUB(IfcCableSegmentType); - DECL_CONV_STUB(IfcRelOverridesProperties); - DECL_CONV_STUB(IfcMeasureWithUnit); - DECL_CONV_STUB(IfcSlabType); - DECL_CONV_STUB(IfcServiceLife); - DECL_CONV_STUB(IfcFurnitureType); - DECL_CONV_STUB(IfcCostItem); - DECL_CONV_STUB(IfcReinforcingMesh); - DECL_CONV_STUB(IfcFacetedBrepWithVoids); - DECL_CONV_STUB(IfcGasTerminalType); - DECL_CONV_STUB(IfcPile); - DECL_CONV_STUB(IfcFillAreaStyleTileSymbolWithStyle); - DECL_CONV_STUB(IfcConstructionMaterialResource); - DECL_CONV_STUB(IfcAnnotationCurveOccurrence); - DECL_CONV_STUB(IfcDimensionCurve); - DECL_CONV_STUB(IfcGeometricCurveSet); - DECL_CONV_STUB(IfcRelAggregates); - DECL_CONV_STUB(IfcFaceBasedSurfaceModel); - DECL_CONV_STUB(IfcEnergyConversionDevice); - DECL_CONV_STUB(IfcRampFlight); - DECL_CONV_STUB(IfcVertexLoop); - DECL_CONV_STUB(IfcPlate); - DECL_CONV_STUB(IfcUShapeProfileDef); - DECL_CONV_STUB(IfcFaceBound); - DECL_CONV_STUB(IfcFaceOuterBound); - DECL_CONV_STUB(IfcOneDirectionRepeatFactor); - DECL_CONV_STUB(IfcBoilerType); - DECL_CONV_STUB(IfcConstructionEquipmentResource); - DECL_CONV_STUB(IfcComplexProperty); - DECL_CONV_STUB(IfcFooting); - DECL_CONV_STUB(IfcConstructionProductResource); - DECL_CONV_STUB(IfcDerivedProfileDef); - DECL_CONV_STUB(IfcPropertyTableValue); - DECL_CONV_STUB(IfcFlowMeterType); - DECL_CONV_STUB(IfcDoorStyle); - DECL_CONV_STUB(IfcUnitAssignment); - DECL_CONV_STUB(IfcFlowTerminal); - DECL_CONV_STUB(IfcCraneRailFShapeProfileDef); - DECL_CONV_STUB(IfcFlowSegment); - DECL_CONV_STUB(IfcElementQuantity); - DECL_CONV_STUB(IfcCurtainWall); - DECL_CONV_STUB(IfcDiscreteAccessory); - DECL_CONV_STUB(IfcGrid); - DECL_CONV_STUB(IfcSanitaryTerminalType); - DECL_CONV_STUB(IfcSubedge); - DECL_CONV_STUB(IfcFilterType); - DECL_CONV_STUB(IfcTendon); - DECL_CONV_STUB(IfcStructuralLoadGroup); - DECL_CONV_STUB(IfcPresentationStyleAssignment); - DECL_CONV_STUB(IfcStructuralCurveMember); - DECL_CONV_STUB(IfcLightSourceAmbient); - DECL_CONV_STUB(IfcCondition); - DECL_CONV_STUB(IfcPort); - DECL_CONV_STUB(IfcSpace); - DECL_CONV_STUB(IfcHeatExchangerType); - DECL_CONV_STUB(IfcTankType); - DECL_CONV_STUB(IfcInventory); - DECL_CONV_STUB(IfcTransportElementType); - DECL_CONV_STUB(IfcAirToAirHeatRecoveryType); - DECL_CONV_STUB(IfcStairFlight); - DECL_CONV_STUB(IfcElectricalElement); - DECL_CONV_STUB(IfcSurfaceStyleWithTextures); - DECL_CONV_STUB(IfcBoundingBox); - DECL_CONV_STUB(IfcWallType); - DECL_CONV_STUB(IfcMove); - DECL_CONV_STUB(IfcCircle); - DECL_CONV_STUB(IfcOffsetCurve2D); - DECL_CONV_STUB(IfcPointOnCurve); - DECL_CONV_STUB(IfcStructuralResultGroup); - DECL_CONV_STUB(IfcSectionedSpine); - DECL_CONV_STUB(IfcSlab); - DECL_CONV_STUB(IfcVertex); - DECL_CONV_STUB(IfcVertexPoint); + DECL_CONV_STUB(IfcStructuralAction); DECL_CONV_STUB(IfcStructuralLinearAction); DECL_CONV_STUB(IfcStructuralLinearActionVarying); - DECL_CONV_STUB(IfcBuildingElementProxyType); - DECL_CONV_STUB(IfcProjectionElement); - DECL_CONV_STUB(IfcConversionBasedUnit); - DECL_CONV_STUB(IfcGeometricRepresentationSubContext); - DECL_CONV_STUB(IfcAnnotationSurfaceOccurrence); - DECL_CONV_STUB(IfcRoundedEdgeFeature); - DECL_CONV_STUB(IfcElectricDistributionPoint); - DECL_CONV_STUB(IfcCableCarrierSegmentType); - DECL_CONV_STUB(IfcWallStandardCase); - DECL_CONV_STUB(IfcCsgSolid); + DECL_CONV_STUB(IfcCrewResource); + DECL_CONV_STUB(IfcChamferEdgeFeature); + DECL_CONV_STUB(IfcCompositeCurve); + DECL_CONV_STUB(Ifc2DCompositeCurve); + DECL_CONV_STUB(IfcGrid); + DECL_CONV_STUB(IfcTendon); + DECL_CONV_STUB(IfcRectangleProfileDef); + DECL_CONV_STUB(IfcRoundedRectangleProfileDef); DECL_CONV_STUB(IfcBeamType); - DECL_CONV_STUB(IfcAnnotationFillArea); - DECL_CONV_STUB(IfcStructuralCurveMemberVarying); - DECL_CONV_STUB(IfcPointOnSurface); - DECL_CONV_STUB(IfcOrderAction); - DECL_CONV_STUB(IfcEdgeLoop); - DECL_CONV_STUB(IfcAnnotationFillAreaOccurrence); - DECL_CONV_STUB(IfcWorkPlan); + DECL_CONV_STUB(IfcLampType); + DECL_CONV_STUB(IfcLightSourceGoniometric); + DECL_CONV_STUB(IfcProductRepresentation); + DECL_CONV_STUB(IfcMaterialDefinitionRepresentation); + DECL_CONV_STUB(IfcPermit); + DECL_CONV_STUB(IfcContextDependentUnit); + DECL_CONV_STUB(IfcFlowMovingDevice); + DECL_CONV_STUB(IfcColumn); + DECL_CONV_STUB(IfcDistributionControlElement); + DECL_CONV_STUB(IfcProtectiveDeviceType); + DECL_CONV_STUB(IfcFlowSegment); + DECL_CONV_STUB(IfcCompressorType); + DECL_CONV_STUB(IfcCShapeProfileDef); + DECL_CONV_STUB(IfcTrapeziumProfileDef); + DECL_CONV_STUB(IfcRelDefines); + DECL_CONV_STUB(IfcTask); + DECL_CONV_STUB(IfcMove); + DECL_CONV_STUB(IfcLightSourceDirectional); + DECL_CONV_STUB(IfcCondenserType); + DECL_CONV_STUB(IfcConic); DECL_CONV_STUB(IfcEllipse); - DECL_CONV_STUB(IfcProductDefinitionShape); - DECL_CONV_STUB(IfcProjectionCurve); - DECL_CONV_STUB(IfcElectricalCircuit); - DECL_CONV_STUB(IfcRationalBezierCurve); - DECL_CONV_STUB(IfcStructuralPointAction); - DECL_CONV_STUB(IfcPipeSegmentType); - DECL_CONV_STUB(IfcTwoDirectionRepeatFactor); - DECL_CONV_STUB(IfcShapeRepresentation); - DECL_CONV_STUB(IfcPropertySet); - DECL_CONV_STUB(IfcSurfaceStyleRendering); + DECL_CONV_STUB(IfcDoorStyle); + DECL_CONV_STUB(IfcDistributionControlElementType); + DECL_CONV_STUB(IfcSensorType); + DECL_CONV_STUB(IfcAnnotationFillAreaOccurrence); + DECL_CONV_STUB(IfcWall); + DECL_CONV_STUB(IfcFurnishingElementType); + DECL_CONV_STUB(IfcFurnitureType); + DECL_CONV_STUB(IfcControllerType); + DECL_CONV_STUB(IfcFlowFitting); + DECL_CONV_STUB(IfcRepresentationContext); + DECL_CONV_STUB(IfcRepresentationMap); + DECL_CONV_STUB(IfcDirection); + DECL_CONV_STUB(IfcDimensionCurveDirectedCallout); + DECL_CONV_STUB(IfcAngularDimension); + DECL_CONV_STUB(IfcWorkControl); + DECL_CONV_STUB(IfcWorkPlan); + DECL_CONV_STUB(IfcSpatialStructureElementType); + DECL_CONV_STUB(IfcSpaceType); + DECL_CONV_STUB(IfcPort); DECL_CONV_STUB(IfcDistributionPort); - DECL_CONV_STUB(IfcPipeFittingType); + DECL_CONV_STUB(IfcOrderAction); + DECL_CONV_STUB(IfcBeam); + DECL_CONV_STUB(IfcManifoldSolidBrep); + DECL_CONV_STUB(IfcFacetedBrep); + DECL_CONV_STUB(IfcSurfaceStyleWithTextures); + DECL_CONV_STUB(IfcArbitraryClosedProfileDef); + DECL_CONV_STUB(IfcHumidifierType); + DECL_CONV_STUB(IfcPolyLoop); + DECL_CONV_STUB(IfcFlowFittingType); + DECL_CONV_STUB(IfcFillAreaStyleTiles); + DECL_CONV_STUB(IfcVertex); + DECL_CONV_STUB(IfcAnnotationFillArea); + DECL_CONV_STUB(IfcPlate); + DECL_CONV_STUB(IfcRightCircularCone); + DECL_CONV_STUB(IfcSurface); + DECL_CONV_STUB(IfcBoundedSurface); + DECL_CONV_STUB(IfcStructuralLoadGroup); + DECL_CONV_STUB(IfcGeometricRepresentationContext); + DECL_CONV_STUB(IfcTubeBundleType); + DECL_CONV_STUB(IfcStructuralPlanarAction); + DECL_CONV_STUB(IfcHeatExchangerType); + DECL_CONV_STUB(IfcFaceOuterBound); + DECL_CONV_STUB(IfcSphere); + DECL_CONV_STUB(IfcLightSourcePositional); + DECL_CONV_STUB(IfcStructuralPointAction); + DECL_CONV_STUB(IfcFlowSegmentType); + DECL_CONV_STUB(IfcFireSuppressionTerminalType); + DECL_CONV_STUB(IfcPropertySingleValue); + DECL_CONV_STUB(IfcFaceBasedSurfaceModel); + DECL_CONV_STUB(IfcAxis2Placement3D); + DECL_CONV_STUB(IfcStructuralResultGroup); + DECL_CONV_STUB(IfcHalfSpaceSolid); + DECL_CONV_STUB(IfcGasTerminalType); + DECL_CONV_STUB(IfcMember); + DECL_CONV_STUB(IfcPropertySet); + DECL_CONV_STUB(IfcCondition); + DECL_CONV_STUB(IfcPropertyEnumeratedValue); + DECL_CONV_STUB(IfcDistributionChamberElementType); + DECL_CONV_STUB(IfcTextLiteralWithExtent); + DECL_CONV_STUB(IfcFlowController); + DECL_CONV_STUB(IfcElectricDistributionPoint); DECL_CONV_STUB(IfcTransportElement); - DECL_CONV_STUB(IfcAnnotationTextOccurrence); - DECL_CONV_STUB(IfcStructuralAnalysisModel); + DECL_CONV_STUB(IfcAsset); + DECL_CONV_STUB(IfcSweptAreaSolid); + DECL_CONV_STUB(IfcRevolvedAreaSolid); + DECL_CONV_STUB(IfcFlowInstrumentType); + DECL_CONV_STUB(IfcEnergyConversionDevice); + DECL_CONV_STUB(IfcSurfaceStyleShading); + DECL_CONV_STUB(IfcSurfaceStyleRendering); + DECL_CONV_STUB(IfcBoilerType); + DECL_CONV_STUB(IfcBuildingElementProxy); + DECL_CONV_STUB(IfcLocalPlacement); + DECL_CONV_STUB(IfcZone); + DECL_CONV_STUB(IfcStair); + DECL_CONV_STUB(IfcWallStandardCase); + DECL_CONV_STUB(IfcDiameterDimension); + DECL_CONV_STUB(IfcDuctSegmentType); + DECL_CONV_STUB(IfcJunctionBoxType); + DECL_CONV_STUB(IfcCartesianTransformationOperator3DnonUniform); + DECL_CONV_STUB(IfcInventory); DECL_CONV_STUB(IfcConditionCriterion); + DECL_CONV_STUB(IfcConnectedFaceSet); + DECL_CONV_STUB(IfcOpenShell); + DECL_CONV_STUB(IfcDoor); + DECL_CONV_STUB(IfcBezierCurve); + DECL_CONV_STUB(IfcRationalBezierCurve); + DECL_CONV_STUB(IfcArbitraryProfileDefWithVoids); + DECL_CONV_STUB(IfcBooleanResult); + DECL_CONV_STUB(IfcStackTerminalType); + DECL_CONV_STUB(IfcIShapeProfileDef); + DECL_CONV_STUB(IfcAsymmetricIShapeProfileDef); + DECL_CONV_STUB(IfcEquipmentElement); + DECL_CONV_STUB(IfcClosedShell); + DECL_CONV_STUB(IfcEllipseProfileDef); + DECL_CONV_STUB(IfcPropertyBoundedValue); + DECL_CONV_STUB(IfcCoveringType); + DECL_CONV_STUB(IfcActuatorType); + DECL_CONV_STUB(IfcOffsetCurve2D); + DECL_CONV_STUB(IfcAnnotation); + DECL_CONV_STUB(IfcDistributionChamberElement); + DECL_CONV_STUB(IfcOffsetCurve3D); + DECL_CONV_STUB(IfcFooting); + DECL_CONV_STUB(IfcMappedItem); + DECL_CONV_STUB(IfcTransformerType); + DECL_CONV_STUB(IfcRightCircularCylinder); + DECL_CONV_STUB(IfcSpaceProgram); + DECL_CONV_STUB(IfcAnnotationSurface); + DECL_CONV_STUB(IfcZShapeProfileDef); + DECL_CONV_STUB(IfcRectangleHollowProfileDef); + DECL_CONV_STUB(IfcGeometricSet); + DECL_CONV_STUB(IfcGeometricCurveSet); + DECL_CONV_STUB(IfcArbitraryOpenProfileDef); + DECL_CONV_STUB(IfcFacetedBrepWithVoids); + DECL_CONV_STUB(IfcVector); + DECL_CONV_STUB(IfcServiceLife); + DECL_CONV_STUB(IfcCurveBoundedPlane); + DECL_CONV_STUB(IfcCircle); + DECL_CONV_STUB(IfcVertexLoop); + DECL_CONV_STUB(IfcSurfaceCurveSweptAreaSolid); + DECL_CONV_STUB(IfcConstructionEquipmentResource); + DECL_CONV_STUB(IfcSectionedSpine); + DECL_CONV_STUB(IfcPropertyReferenceValue); + DECL_CONV_STUB(IfcSite); + DECL_CONV_STUB(IfcPerformanceHistory); + DECL_CONV_STUB(IfcPropertyTableValue); + DECL_CONV_STUB(IfcTransportElementType); + DECL_CONV_STUB(IfcPolygonalBoundedHalfSpace); + DECL_CONV_STUB(IfcAxis2Placement2D); + DECL_CONV_STUB(IfcFillAreaStyleHatching); + DECL_CONV_STUB(IfcFastener); + DECL_CONV_STUB(IfcScheduleTimeControl); + DECL_CONV_STUB(IfcElectricMotorType); + DECL_CONV_STUB(IfcTimeSeriesSchedule); + DECL_CONV_STUB(IfcPipeSegmentType); + DECL_CONV_STUB(IfcFlowTerminal); + DECL_CONV_STUB(IfcWallType); + DECL_CONV_STUB(IfcCoilType); + DECL_CONV_STUB(IfcFurnishingElement); + DECL_CONV_STUB(IfcWasteTerminalType); + DECL_CONV_STUB(IfcWindow); + DECL_CONV_STUB(IfcElectricFlowStorageDeviceType); + DECL_CONV_STUB(IfcRelAggregates); + DECL_CONV_STUB(IfcRamp); + DECL_CONV_STUB(IfcLinearDimension); + DECL_CONV_STUB(IfcElementarySurface); + DECL_CONV_STUB(IfcConstructionProductResource); + DECL_CONV_STUB(IfcCableSegmentType); + DECL_CONV_STUB(IfcPath); + DECL_CONV_STUB(IfcActor); + DECL_CONV_STUB(IfcOccupant); + DECL_CONV_STUB(IfcSwitchingDeviceType); + DECL_CONV_STUB(IfcSweptSurface); + DECL_CONV_STUB(IfcSurfaceOfLinearExtrusion); + DECL_CONV_STUB(IfcShellBasedSurfaceModel); + DECL_CONV_STUB(IfcBuilding); + DECL_CONV_STUB(IfcSIUnit); + DECL_CONV_STUB(IfcDiscreteAccessory); + DECL_CONV_STUB(IfcSystemFurnitureElementType); + DECL_CONV_STUB(IfcElementAssembly); + DECL_CONV_STUB(IfcCoolingTowerType); + DECL_CONV_STUB(IfcLightSourceSpot); + DECL_CONV_STUB(IfcEvaporatorType); + DECL_CONV_STUB(IfcSpaceHeaterType); + DECL_CONV_STUB(IfcElementQuantity); + DECL_CONV_STUB(IfcRampFlight); + DECL_CONV_STUB(IfcConversionBasedUnit); + DECL_CONV_STUB(IfcExtrudedAreaSolid); + DECL_CONV_STUB(IfcProjectOrder); + DECL_CONV_STUB(IfcBooleanClippingResult); + DECL_CONV_STUB(IfcReinforcingBar); + DECL_CONV_STUB(IfcCenterLineProfileDef); + DECL_CONV_STUB(IfcUShapeProfileDef); + DECL_CONV_STUB(IfcBoundingBox); + DECL_CONV_STUB(IfcWindowStyle); + DECL_CONV_STUB(IfcMemberType); + DECL_CONV_STUB(IfcLightFixtureType); + DECL_CONV_STUB(IfcFlowStorageDevice); + DECL_CONV_STUB(IfcTopologyRepresentation); + DECL_CONV_STUB(IfcRelDefinesByProperties); + DECL_CONV_STUB(IfcRelOverridesProperties); + DECL_CONV_STUB(IfcStairFlightType); + DECL_CONV_STUB(IfcCircleProfileDef); + DECL_CONV_STUB(IfcSweptDiskSolid); + DECL_CONV_STUB(IfcStructuralPlanarActionVarying); + DECL_CONV_STUB(IfcValveType); + DECL_CONV_STUB(IfcUnitAssignment); + DECL_CONV_STUB(IfcVirtualElement); + DECL_CONV_STUB(IfcStructuralCurveConnection); + DECL_CONV_STUB(IfcAirTerminalType); + DECL_CONV_STUB(IfcFlowTreatmentDeviceType); + DECL_CONV_STUB(IfcRoof); + DECL_CONV_STUB(IfcElectricTimeControlType); + DECL_CONV_STUB(IfcPile); + DECL_CONV_STUB(IfcCostSchedule); + DECL_CONV_STUB(IfcRampFlightType); + DECL_CONV_STUB(IfcDerivedProfileDef); + DECL_CONV_STUB(IfcCostItem); + DECL_CONV_STUB(IfcEvaporativeCoolerType); + DECL_CONV_STUB(IfcChillerType); + DECL_CONV_STUB(IfcBoxedHalfSpace); + DECL_CONV_STUB(IfcCurtainWallType); + DECL_CONV_STUB(IfcGeometricRepresentationSubContext); + DECL_CONV_STUB(IfcDimensionCurve); + DECL_CONV_STUB(IfcPlane); + DECL_CONV_STUB(IfcProjectionCurve); + DECL_CONV_STUB(IfcDamperType); + DECL_CONV_STUB(IfcMechanicalFastener); + DECL_CONV_STUB(IfcDuctSilencerType); + DECL_CONV_STUB(IfcLaborResource); + DECL_CONV_STUB(IfcFanType); + DECL_CONV_STUB(IfcProjectionElement); + DECL_CONV_STUB(IfcCraneRailFShapeProfileDef); + DECL_CONV_STUB(IfcProject); + DECL_CONV_STUB(IfcRelVoidsElement); + DECL_CONV_STUB(IfcElectricalCircuit); + DECL_CONV_STUB(IfcLShapeProfileDef); + DECL_CONV_STUB(IfcFlowTreatmentDevice); + DECL_CONV_STUB(IfcVertexPoint); + DECL_CONV_STUB(IfcAnnotationTextOccurrence); + DECL_CONV_STUB(IfcFilterType); + DECL_CONV_STUB(IfcEdgeLoop); + DECL_CONV_STUB(IfcCircleHollowProfileDef); + DECL_CONV_STUB(IfcAirTerminalBoxType); + DECL_CONV_STUB(IfcStructuredDimensionCallout); + DECL_CONV_STUB(IfcCableCarrierSegmentType); + DECL_CONV_STUB(IfcDuctFittingType); + DECL_CONV_STUB(IfcRectangularTrimmedSurface); + DECL_CONV_STUB(IfcProductDefinitionShape); + DECL_CONV_STUB(IfcStairFlight); + DECL_CONV_STUB(IfcSlab); + DECL_CONV_STUB(IfcPipeFittingType); + DECL_CONV_STUB(IfcSpace); + DECL_CONV_STUB(IfcBuildingElementProxyType); + DECL_CONV_STUB(IfcAlarmType); + DECL_CONV_STUB(IfcCableCarrierFittingType); + DECL_CONV_STUB(IfcRoundedEdgeFeature); + DECL_CONV_STUB(IfcFaceSurface); + DECL_CONV_STUB(IfcCartesianTransformationOperator2D); + DECL_CONV_STUB(IfcTendonAnchor); + DECL_CONV_STUB(IfcWorkSchedule); + DECL_CONV_STUB(IfcSurfaceOfRevolution); + DECL_CONV_STUB(IfcElectricHeaterType); + DECL_CONV_STUB(IfcMeasureWithUnit); + DECL_CONV_STUB(IfcOrientedEdge); + DECL_CONV_STUB(IfcCartesianTransformationOperator2DnonUniform); + DECL_CONV_STUB(IfcRelFillsElement); + DECL_CONV_STUB(IfcConstructionMaterialResource); + DECL_CONV_STUB(IfcRadiusDimension); #undef DECL_CONV_STUB diff --git a/code/IFCUtil.h b/code/IFCUtil.h index 8d329c5d6..9a84c30ef 100644 --- a/code/IFCUtil.h +++ b/code/IFCUtil.h @@ -271,6 +271,7 @@ IfcFloat ConvertSIPrefix(const std::string& prefix); // IFCProfile.cpp bool ProcessProfile(const IfcProfileDef& prof, TempMesh& meshout, ConversionData& conv); +bool ProcessCurve(const IfcCurve& curve, TempMesh& meshout, ConversionData& conv); // IFCMaterial.cpp unsigned int ProcessMaterials(uint64_t id, unsigned int prevMatId, ConversionData& conv, bool forceDefaultMat); diff --git a/scripts/IFCImporter/entitylist.txt b/scripts/IFCImporter/entitylist.txt index ef91e2f56..3c7a9d7eb 100644 --- a/scripts/IFCImporter/entitylist.txt +++ b/scripts/IFCImporter/entitylist.txt @@ -1,16 +1,17 @@ -# ============================================================================== +# ============================================================================== # List of IFC structures needed by Assimp -# ============================================================================== +# ============================================================================== # use genentitylist.sh to update this list -# This machine-generated list is not complete, it lacks many intermediate +# This machine-generated list is not complete, it lacks many intermediate # classes in the inheritance hierarchy. Those are magically augmented by the -# code generator. Also, the names of all used entities need to be present +# code generator. Also, the names of all used entities need to be present # in the source code for this to work. IfcAnnotation IfcArbitraryClosedProfileDef IfcArbitraryOpenProfileDef +IfcArbitraryProfileDefWithVoids IfcAxis1Placement IfcAxis2Placement IfcAxis2Placement2D diff --git a/scripts/IFCImporter/schema.exp b/scripts/IFCImporter/schema.exp new file mode 100644 index 000000000..ae978a6e6 --- /dev/null +++ b/scripts/IFCImporter/schema.exp @@ -0,0 +1,9571 @@ +(* +Copyright by: +International Alliance for Interoperability, 1996-2005 + +All rights reserved. No part of this documentation may be +reproduced, stored in a retrieval system, or transmitted +in any form or by any means, without the prior written +permission of the owner. + +Contents: +full IFC object model EXPRESS definitions for the IFC2x Edition 3 final version + + +- express longform distribution +- compiled for EXPRESS version 1 technical corrigendum 2 + +Issue date: +December 15, 2005 + +Development Team: +Modeling Support Group of the +International Alliance for Interoperability +compiled by Thomas Liebich tl@aec3.com +*) +SCHEMA IFC2X3; + +TYPE IfcAbsorbedDoseMeasure = REAL; +END_TYPE; + +TYPE IfcAccelerationMeasure = REAL; +END_TYPE; + +TYPE IfcAmountOfSubstanceMeasure = REAL; +END_TYPE; + +TYPE IfcAngularVelocityMeasure = REAL; +END_TYPE; + +TYPE IfcAreaMeasure = REAL; +END_TYPE; + +TYPE IfcBoolean = BOOLEAN; +END_TYPE; + +TYPE IfcBoxAlignment = IfcLabel; + WHERE + WR1 : SELF IN ['top-left', 'top-middle', 'top-right', 'middle-left', 'center', 'middle-right', 'bottom-left', 'bottom-middle', 'bottom-right']; +END_TYPE; + +TYPE IfcComplexNumber = ARRAY [1:2] OF REAL; +END_TYPE; + +TYPE IfcCompoundPlaneAngleMeasure = LIST [3:3] OF INTEGER; + WHERE + WR1 : { -360 <= SELF[1] < 360 }; + WR2 : { -60 <= SELF[2] < 60 }; + WR3 : { -60 <= SELF[3] < 60 }; + WR4 : ((SELF[1] >= 0) AND (SELF[2] >= 0) AND (SELF[3] >= 0)) OR ((SELF[1] <= 0) AND (SELF[2] <= 0) AND (SELF[3] <= 0)); +END_TYPE; + +TYPE IfcContextDependentMeasure = REAL; +END_TYPE; + +TYPE IfcCountMeasure = NUMBER; +END_TYPE; + +TYPE IfcCurvatureMeasure = REAL; +END_TYPE; + +TYPE IfcDayInMonthNumber = INTEGER; +END_TYPE; + +TYPE IfcDaylightSavingHour = INTEGER; + WHERE + WR1 : { 0 <= SELF <= 2 }; +END_TYPE; + +TYPE IfcDescriptiveMeasure = STRING; +END_TYPE; + +TYPE IfcDimensionCount = INTEGER; + WHERE + WR1 : { 0 < SELF <= 3 }; +END_TYPE; + +TYPE IfcDoseEquivalentMeasure = REAL; +END_TYPE; + +TYPE IfcDynamicViscosityMeasure = REAL; +END_TYPE; + +TYPE IfcElectricCapacitanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricChargeMeasure = REAL; +END_TYPE; + +TYPE IfcElectricConductanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricCurrentMeasure = REAL; +END_TYPE; + +TYPE IfcElectricResistanceMeasure = REAL; +END_TYPE; + +TYPE IfcElectricVoltageMeasure = REAL; +END_TYPE; + +TYPE IfcEnergyMeasure = REAL; +END_TYPE; + +TYPE IfcFontStyle = STRING; + WHERE + WR1 : SELF IN ['normal','italic','oblique']; +END_TYPE; + +TYPE IfcFontVariant = STRING; + WHERE + WR1 : SELF IN ['normal','small-caps']; +END_TYPE; + +TYPE IfcFontWeight = STRING; + WHERE + WR1 : SELF IN ['normal','small-caps','100','200','300','400','500','600','700','800','900']; +END_TYPE; + +TYPE IfcForceMeasure = REAL; +END_TYPE; + +TYPE IfcFrequencyMeasure = REAL; +END_TYPE; + +TYPE IfcGloballyUniqueId = STRING(22) FIXED; +END_TYPE; + +TYPE IfcHeatFluxDensityMeasure = REAL; +END_TYPE; + +TYPE IfcHeatingValueMeasure = REAL; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcHourInDay = INTEGER; + WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE IfcIdentifier = STRING; +END_TYPE; + +TYPE IfcIlluminanceMeasure = REAL; +END_TYPE; + +TYPE IfcInductanceMeasure = REAL; +END_TYPE; + +TYPE IfcInteger = INTEGER; +END_TYPE; + +TYPE IfcIntegerCountRateMeasure = INTEGER; +END_TYPE; + +TYPE IfcIonConcentrationMeasure = REAL; +END_TYPE; + +TYPE IfcIsothermalMoistureCapacityMeasure = REAL; +END_TYPE; + +TYPE IfcKinematicViscosityMeasure = REAL; +END_TYPE; + +TYPE IfcLabel = STRING; +END_TYPE; + +TYPE IfcLengthMeasure = REAL; +END_TYPE; + +TYPE IfcLinearForceMeasure = REAL; +END_TYPE; + +TYPE IfcLinearMomentMeasure = REAL; +END_TYPE; + +TYPE IfcLinearStiffnessMeasure = REAL; +END_TYPE; + +TYPE IfcLinearVelocityMeasure = REAL; +END_TYPE; + +TYPE IfcLogical = LOGICAL; +END_TYPE; + +TYPE IfcLuminousFluxMeasure = REAL; +END_TYPE; + +TYPE IfcLuminousIntensityDistributionMeasure = REAL; +END_TYPE; + +TYPE IfcLuminousIntensityMeasure = REAL; +END_TYPE; + +TYPE IfcMagneticFluxDensityMeasure = REAL; +END_TYPE; + +TYPE IfcMagneticFluxMeasure = REAL; +END_TYPE; + +TYPE IfcMassDensityMeasure = REAL; +END_TYPE; + +TYPE IfcMassFlowRateMeasure = REAL; +END_TYPE; + +TYPE IfcMassMeasure = REAL; +END_TYPE; + +TYPE IfcMassPerLengthMeasure = REAL; +END_TYPE; + +TYPE IfcMinuteInHour = INTEGER; + WHERE + WR1 : {0 <= SELF <= 59 }; +END_TYPE; + +TYPE IfcModulusOfElasticityMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfLinearSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfRotationalSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcModulusOfSubgradeReactionMeasure = REAL; +END_TYPE; + +TYPE IfcMoistureDiffusivityMeasure = REAL; +END_TYPE; + +TYPE IfcMolecularWeightMeasure = REAL; +END_TYPE; + +TYPE IfcMomentOfInertiaMeasure = REAL; +END_TYPE; + +TYPE IfcMonetaryMeasure = REAL; +END_TYPE; + +TYPE IfcMonthInYearNumber = INTEGER; + WHERE + WR1 : { 1<= SELF <= 12 }; +END_TYPE; + +TYPE IfcNormalisedRatioMeasure = IfcRatioMeasure; + WHERE + WR1 : {0.0 <= SELF <= 1.0}; +END_TYPE; + +TYPE IfcNumericMeasure = NUMBER; +END_TYPE; + +TYPE IfcPHMeasure = REAL; + WHERE + WR21 : {0.0 <= SELF <= 14.0}; +END_TYPE; + +TYPE IfcParameterValue = REAL; +END_TYPE; + +TYPE IfcPlanarForceMeasure = REAL; +END_TYPE; + +TYPE IfcPlaneAngleMeasure = REAL; +END_TYPE; + +TYPE IfcPositiveLengthMeasure = IfcLengthMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPositivePlaneAngleMeasure = IfcPlaneAngleMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPositiveRatioMeasure = IfcRatioMeasure; + WHERE + WR1 : SELF > 0.; +END_TYPE; + +TYPE IfcPowerMeasure = REAL; +END_TYPE; + +TYPE IfcPresentableText = STRING; +END_TYPE; + +TYPE IfcPressureMeasure = REAL; +END_TYPE; + +TYPE IfcRadioActivityMeasure = REAL; +END_TYPE; + +TYPE IfcRatioMeasure = REAL; +END_TYPE; + +TYPE IfcReal = REAL; +END_TYPE; + +TYPE IfcRotationalFrequencyMeasure = REAL; +END_TYPE; + +TYPE IfcRotationalMassMeasure = REAL; +END_TYPE; + +TYPE IfcRotationalStiffnessMeasure = REAL; +END_TYPE; + +TYPE IfcSecondInMinute = REAL; + WHERE + WR1 : { 0. <= SELF < 60. }; +END_TYPE; + +TYPE IfcSectionModulusMeasure = REAL; +END_TYPE; + +TYPE IfcSectionalAreaIntegralMeasure = REAL; +END_TYPE; + +TYPE IfcShearModulusMeasure = REAL; +END_TYPE; + +TYPE IfcSolidAngleMeasure = REAL; +END_TYPE; + +TYPE IfcSoundPowerMeasure = REAL; +END_TYPE; + +TYPE IfcSoundPressureMeasure = REAL; +END_TYPE; + +TYPE IfcSpecificHeatCapacityMeasure = REAL; +END_TYPE; + +TYPE IfcSpecularExponent = REAL; +END_TYPE; + +TYPE IfcSpecularRoughness = REAL; + WHERE + WR1 : {0.0 <= SELF <= 1.0}; +END_TYPE; + +TYPE IfcTemperatureGradientMeasure = REAL; +END_TYPE; + +TYPE IfcText = STRING; +END_TYPE; + +TYPE IfcTextAlignment = STRING; + WHERE + WR1 : SELF IN ['left', 'right', 'center', 'justify']; +END_TYPE; + +TYPE IfcTextDecoration = STRING; + WHERE + WR1 : SELF IN ['none', 'underline', 'overline', 'line-through', 'blink']; +END_TYPE; + +TYPE IfcTextFontName = STRING; +END_TYPE; + +TYPE IfcTextTransformation = STRING; + WHERE + WR1 : SELF IN ['capitalize', 'uppercase', 'lowercase', 'none']; +END_TYPE; + +TYPE IfcThermalAdmittanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermalConductivityMeasure = REAL; +END_TYPE; + +TYPE IfcThermalExpansionCoefficientMeasure = REAL; +END_TYPE; + +TYPE IfcThermalResistanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermalTransmittanceMeasure = REAL; +END_TYPE; + +TYPE IfcThermodynamicTemperatureMeasure = REAL; +END_TYPE; + +TYPE IfcTimeMeasure = REAL; +END_TYPE; + +TYPE IfcTimeStamp = INTEGER; +END_TYPE; + +TYPE IfcTorqueMeasure = REAL; +END_TYPE; + +TYPE IfcVaporPermeabilityMeasure = REAL; +END_TYPE; + +TYPE IfcVolumeMeasure = REAL; +END_TYPE; + +TYPE IfcVolumetricFlowRateMeasure = REAL; +END_TYPE; + +TYPE IfcWarpingConstantMeasure = REAL; +END_TYPE; + +TYPE IfcWarpingMomentMeasure = REAL; +END_TYPE; + +TYPE IfcYearNumber = INTEGER; +END_TYPE; + +TYPE IfcActionSourceTypeEnum = ENUMERATION OF + (DEAD_LOAD_G + ,COMPLETION_G1 + ,LIVE_LOAD_Q + ,SNOW_S + ,WIND_W + ,PRESTRESSING_P + ,SETTLEMENT_U + ,TEMPERATURE_T + ,EARTHQUAKE_E + ,FIRE + ,IMPULSE + ,IMPACT + ,TRANSPORT + ,ERECTION + ,PROPPING + ,SYSTEM_IMPERFECTION + ,SHRINKAGE + ,CREEP + ,LACK_OF_FIT + ,BUOYANCY + ,ICE + ,CURRENT + ,WAVE + ,RAIN + ,BRAKES + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActionTypeEnum = ENUMERATION OF + (PERMANENT_G + ,VARIABLE_Q + ,EXTRAORDINARY_A + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActuatorTypeEnum = ENUMERATION OF + (ELECTRICACTUATOR + ,HANDOPERATEDACTUATOR + ,HYDRAULICACTUATOR + ,PNEUMATICACTUATOR + ,THERMOSTATICACTUATOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAddressTypeEnum = ENUMERATION OF + (OFFICE + ,SITE + ,HOME + ,DISTRIBUTIONPOINT + ,USERDEFINED); +END_TYPE; + +TYPE IfcAheadOrBehind = ENUMERATION OF + (AHEAD + ,BEHIND); +END_TYPE; + +TYPE IfcAirTerminalBoxTypeEnum = ENUMERATION OF + (CONSTANTFLOW + ,VARIABLEFLOWPRESSUREDEPENDANT + ,VARIABLEFLOWPRESSUREINDEPENDANT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAirTerminalTypeEnum = ENUMERATION OF + (GRILLE + ,REGISTER + ,DIFFUSER + ,EYEBALL + ,IRIS + ,LINEARGRILLE + ,LINEARDIFFUSER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAirToAirHeatRecoveryTypeEnum = ENUMERATION OF + (FIXEDPLATECOUNTERFLOWEXCHANGER + ,FIXEDPLATECROSSFLOWEXCHANGER + ,FIXEDPLATEPARALLELFLOWEXCHANGER + ,ROTARYWHEEL + ,RUNAROUNDCOILLOOP + ,HEATPIPE + ,TWINTOWERENTHALPYRECOVERYLOOPS + ,THERMOSIPHONSEALEDTUBEHEATEXCHANGERS + ,THERMOSIPHONCOILTYPEHEATEXCHANGERS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAlarmTypeEnum = ENUMERATION OF + (BELL + ,BREAKGLASSBUTTON + ,LIGHT + ,MANUALPULLBOX + ,SIREN + ,WHISTLE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAnalysisModelTypeEnum = ENUMERATION OF + (IN_PLANE_LOADING_2D + ,OUT_PLANE_LOADING_2D + ,LOADING_3D + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcAnalysisTheoryTypeEnum = ENUMERATION OF + (FIRST_ORDER_THEORY + ,SECOND_ORDER_THEORY + ,THIRD_ORDER_THEORY + ,FULL_NONLINEAR_THEORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcArithmeticOperatorEnum = ENUMERATION OF + (ADD + ,DIVIDE + ,MULTIPLY + ,SUBTRACT); +END_TYPE; + +TYPE IfcAssemblyPlaceEnum = ENUMERATION OF + (SITE + ,FACTORY + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBSplineCurveForm = ENUMERATION OF + (POLYLINE_FORM + ,CIRCULAR_ARC + ,ELLIPTIC_ARC + ,PARABOLIC_ARC + ,HYPERBOLIC_ARC + ,UNSPECIFIED); +END_TYPE; + +TYPE IfcBeamTypeEnum = ENUMERATION OF + (BEAM + ,JOIST + ,LINTEL + ,T_BEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBenchmarkEnum = ENUMERATION OF + (GREATERTHAN + ,GREATERTHANOREQUALTO + ,LESSTHAN + ,LESSTHANOREQUALTO + ,EQUALTO + ,NOTEQUALTO); +END_TYPE; + +TYPE IfcBoilerTypeEnum = ENUMERATION OF + (WATER + ,STEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcBooleanOperator = ENUMERATION OF + (UNION + ,INTERSECTION + ,DIFFERENCE); +END_TYPE; + +TYPE IfcBuildingElementProxyTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableCarrierFittingTypeEnum = ENUMERATION OF + (BEND + ,CROSS + ,REDUCER + ,TEE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableCarrierSegmentTypeEnum = ENUMERATION OF + (CABLELADDERSEGMENT + ,CABLETRAYSEGMENT + ,CABLETRUNKINGSEGMENT + ,CONDUITSEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCableSegmentTypeEnum = ENUMERATION OF + (CABLESEGMENT + ,CONDUCTORSEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcChangeActionEnum = ENUMERATION OF + (NOCHANGE + ,MODIFIED + ,ADDED + ,DELETED + ,MODIFIEDADDED + ,MODIFIEDDELETED); +END_TYPE; + +TYPE IfcChillerTypeEnum = ENUMERATION OF + (AIRCOOLED + ,WATERCOOLED + ,HEATRECOVERY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoilTypeEnum = ENUMERATION OF + (DXCOOLINGCOIL + ,WATERCOOLINGCOIL + ,STEAMHEATINGCOIL + ,WATERHEATINGCOIL + ,ELECTRICHEATINGCOIL + ,GASHEATINGCOIL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcColumnTypeEnum = ENUMERATION OF + (COLUMN + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCompressorTypeEnum = ENUMERATION OF + (DYNAMIC + ,RECIPROCATING + ,ROTARY + ,SCROLL + ,TROCHOIDAL + ,SINGLESTAGE + ,BOOSTER + ,OPENTYPE + ,HERMETIC + ,SEMIHERMETIC + ,WELDEDSHELLHERMETIC + ,ROLLINGPISTON + ,ROTARYVANE + ,SINGLESCREW + ,TWINSCREW + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCondenserTypeEnum = ENUMERATION OF + (WATERCOOLEDSHELLTUBE + ,WATERCOOLEDSHELLCOIL + ,WATERCOOLEDTUBEINTUBE + ,WATERCOOLEDBRAZEDPLATE + ,AIRCOOLED + ,EVAPORATIVECOOLED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcConnectionTypeEnum = ENUMERATION OF + (ATPATH + ,ATSTART + ,ATEND + ,NOTDEFINED); +END_TYPE; + +TYPE IfcConstraintEnum = ENUMERATION OF + (HARD + ,SOFT + ,ADVISORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcControllerTypeEnum = ENUMERATION OF + (FLOATING + ,PROPORTIONAL + ,PROPORTIONALINTEGRAL + ,PROPORTIONALINTEGRALDERIVATIVE + ,TIMEDTWOPOSITION + ,TWOPOSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCooledBeamTypeEnum = ENUMERATION OF + (ACTIVE + ,PASSIVE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoolingTowerTypeEnum = ENUMERATION OF + (NATURALDRAFT + ,MECHANICALINDUCEDDRAFT + ,MECHANICALFORCEDDRAFT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCostScheduleTypeEnum = ENUMERATION OF + (BUDGET + ,COSTPLAN + ,ESTIMATE + ,TENDER + ,PRICEDBILLOFQUANTITIES + ,UNPRICEDBILLOFQUANTITIES + ,SCHEDULEOFRATES + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCoveringTypeEnum = ENUMERATION OF + (CEILING + ,FLOORING + ,CLADDING + ,ROOFING + ,INSULATION + ,MEMBRANE + ,SLEEVING + ,WRAPPING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcCurrencyEnum = ENUMERATION OF + (AED + ,AES + ,ATS + ,AUD + ,BBD + ,BEG + ,BGL + ,BHD + ,BMD + ,BND + ,BRL + ,BSD + ,BWP + ,BZD + ,CAD + ,CBD + ,CHF + ,CLP + ,CNY + ,CYS + ,CZK + ,DDP + ,DEM + ,DKK + ,EGL + ,EST + ,EUR + ,FAK + ,FIM + ,FJD + ,FKP + ,FRF + ,GBP + ,GIP + ,GMD + ,GRX + ,HKD + ,HUF + ,ICK + ,IDR + ,ILS + ,INR + ,IRP + ,ITL + ,JMD + ,JOD + ,JPY + ,KES + ,KRW + ,KWD + ,KYD + ,LKR + ,LUF + ,MTL + ,MUR + ,MXN + ,MYR + ,NLG + ,NZD + ,OMR + ,PGK + ,PHP + ,PKR + ,PLN + ,PTN + ,QAR + ,RUR + ,SAR + ,SCR + ,SEK + ,SGD + ,SKP + ,THB + ,TRL + ,TTD + ,TWD + ,USD + ,VEB + ,VND + ,XEU + ,ZAR + ,ZWD + ,NOK); +END_TYPE; + +TYPE IfcCurtainWallTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDamperTypeEnum = ENUMERATION OF + (CONTROLDAMPER + ,FIREDAMPER + ,SMOKEDAMPER + ,FIRESMOKEDAMPER + ,BACKDRAFTDAMPER + ,RELIEFDAMPER + ,BLASTDAMPER + ,GRAVITYDAMPER + ,GRAVITYRELIEFDAMPER + ,BALANCINGDAMPER + ,FUMEHOODEXHAUST + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDataOriginEnum = ENUMERATION OF + (MEASURED + ,PREDICTED + ,SIMULATED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDerivedUnitEnum = ENUMERATION OF + (ANGULARVELOCITYUNIT + ,COMPOUNDPLANEANGLEUNIT + ,DYNAMICVISCOSITYUNIT + ,HEATFLUXDENSITYUNIT + ,INTEGERCOUNTRATEUNIT + ,ISOTHERMALMOISTURECAPACITYUNIT + ,KINEMATICVISCOSITYUNIT + ,LINEARVELOCITYUNIT + ,MASSDENSITYUNIT + ,MASSFLOWRATEUNIT + ,MOISTUREDIFFUSIVITYUNIT + ,MOLECULARWEIGHTUNIT + ,SPECIFICHEATCAPACITYUNIT + ,THERMALADMITTANCEUNIT + ,THERMALCONDUCTANCEUNIT + ,THERMALRESISTANCEUNIT + ,THERMALTRANSMITTANCEUNIT + ,VAPORPERMEABILITYUNIT + ,VOLUMETRICFLOWRATEUNIT + ,ROTATIONALFREQUENCYUNIT + ,TORQUEUNIT + ,MOMENTOFINERTIAUNIT + ,LINEARMOMENTUNIT + ,LINEARFORCEUNIT + ,PLANARFORCEUNIT + ,MODULUSOFELASTICITYUNIT + ,SHEARMODULUSUNIT + ,LINEARSTIFFNESSUNIT + ,ROTATIONALSTIFFNESSUNIT + ,MODULUSOFSUBGRADEREACTIONUNIT + ,ACCELERATIONUNIT + ,CURVATUREUNIT + ,HEATINGVALUEUNIT + ,IONCONCENTRATIONUNIT + ,LUMINOUSINTENSITYDISTRIBUTIONUNIT + ,MASSPERLENGTHUNIT + ,MODULUSOFLINEARSUBGRADEREACTIONUNIT + ,MODULUSOFROTATIONALSUBGRADEREACTIONUNIT + ,PHUNIT + ,ROTATIONALMASSUNIT + ,SECTIONAREAINTEGRALUNIT + ,SECTIONMODULUSUNIT + ,SOUNDPOWERUNIT + ,SOUNDPRESSUREUNIT + ,TEMPERATUREGRADIENTUNIT + ,THERMALEXPANSIONCOEFFICIENTUNIT + ,WARPINGCONSTANTUNIT + ,WARPINGMOMENTUNIT + ,USERDEFINED); +END_TYPE; + +TYPE IfcDimensionExtentUsage = ENUMERATION OF + (ORIGIN + ,TARGET); +END_TYPE; + +TYPE IfcDirectionSenseEnum = ENUMERATION OF + (POSITIVE + ,NEGATIVE); +END_TYPE; + +TYPE IfcDistributionChamberElementTypeEnum = ENUMERATION OF + (FORMEDDUCT + ,INSPECTIONCHAMBER + ,INSPECTIONPIT + ,MANHOLE + ,METERCHAMBER + ,SUMP + ,TRENCH + ,VALVECHAMBER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDocumentConfidentialityEnum = ENUMERATION OF + (PUBLIC + ,RESTRICTED + ,CONFIDENTIAL + ,PERSONAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDocumentStatusEnum = ENUMERATION OF + (DRAFT + ,FINALDRAFT + ,FINAL + ,REVISION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorPanelOperationEnum = ENUMERATION OF + (SWINGING + ,DOUBLE_ACTING + ,SLIDING + ,FOLDING + ,REVOLVING + ,ROLLINGUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorPanelPositionEnum = ENUMERATION OF + (LEFT + ,MIDDLE + ,RIGHT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorStyleConstructionEnum = ENUMERATION OF + (ALUMINIUM + ,HIGH_GRADE_STEEL + ,STEEL + ,WOOD + ,ALUMINIUM_WOOD + ,ALUMINIUM_PLASTIC + ,PLASTIC + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDoorStyleOperationEnum = ENUMERATION OF + (SINGLE_SWING_LEFT + ,SINGLE_SWING_RIGHT + ,DOUBLE_DOOR_SINGLE_SWING + ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT + ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT + ,DOUBLE_SWING_LEFT + ,DOUBLE_SWING_RIGHT + ,DOUBLE_DOOR_DOUBLE_SWING + ,SLIDING_TO_LEFT + ,SLIDING_TO_RIGHT + ,DOUBLE_DOOR_SLIDING + ,FOLDING_TO_LEFT + ,FOLDING_TO_RIGHT + ,DOUBLE_DOOR_FOLDING + ,REVOLVING + ,ROLLINGUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctFittingTypeEnum = ENUMERATION OF + (BEND + ,CONNECTOR + ,ENTRY + ,EXIT + ,JUNCTION + ,OBSTRUCTION + ,TRANSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctSegmentTypeEnum = ENUMERATION OF + (RIGIDSEGMENT + ,FLEXIBLESEGMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcDuctSilencerTypeEnum = ENUMERATION OF + (FLATOVAL + ,RECTANGULAR + ,ROUND + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricApplianceTypeEnum = ENUMERATION OF + (COMPUTER + ,DIRECTWATERHEATER + ,DISHWASHER + ,ELECTRICCOOKER + ,ELECTRICHEATER + ,FACSIMILE + ,FREESTANDINGFAN + ,FREEZER + ,FRIDGE_FREEZER + ,HANDDRYER + ,INDIRECTWATERHEATER + ,MICROWAVE + ,PHOTOCOPIER + ,PRINTER + ,REFRIGERATOR + ,RADIANTHEATER + ,SCANNER + ,TELEPHONE + ,TUMBLEDRYER + ,TV + ,VENDINGMACHINE + ,WASHINGMACHINE + ,WATERHEATER + ,WATERCOOLER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricCurrentEnum = ENUMERATION OF + (ALTERNATING + ,DIRECT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricDistributionPointFunctionEnum = ENUMERATION OF + (ALARMPANEL + ,CONSUMERUNIT + ,CONTROLPANEL + ,DISTRIBUTIONBOARD + ,GASDETECTORPANEL + ,INDICATORPANEL + ,MIMICPANEL + ,MOTORCONTROLCENTRE + ,SWITCHBOARD + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricFlowStorageDeviceTypeEnum = ENUMERATION OF + (BATTERY + ,CAPACITORBANK + ,HARMONICFILTER + ,INDUCTORBANK + ,UPS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricGeneratorTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricHeaterTypeEnum = ENUMERATION OF + (ELECTRICPOINTHEATER + ,ELECTRICCABLEHEATER + ,ELECTRICMATHEATER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricMotorTypeEnum = ENUMERATION OF + (DC + ,INDUCTION + ,POLYPHASE + ,RELUCTANCESYNCHRONOUS + ,SYNCHRONOUS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElectricTimeControlTypeEnum = ENUMERATION OF + (TIMECLOCK + ,TIMEDELAY + ,RELAY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElementAssemblyTypeEnum = ENUMERATION OF + (ACCESSORY_ASSEMBLY + ,ARCH + ,BEAM_GRID + ,BRACED_FRAME + ,GIRDER + ,REINFORCEMENT_UNIT + ,RIGID_FRAME + ,SLAB_FIELD + ,TRUSS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcElementCompositionEnum = ENUMERATION OF + (COMPLEX + ,ELEMENT + ,PARTIAL); +END_TYPE; + +TYPE IfcEnergySequenceEnum = ENUMERATION OF + (PRIMARY + ,SECONDARY + ,TERTIARY + ,AUXILIARY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEnvironmentalImpactCategoryEnum = ENUMERATION OF + (COMBINEDVALUE + ,DISPOSAL + ,EXTRACTION + ,INSTALLATION + ,MANUFACTURE + ,TRANSPORTATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEvaporativeCoolerTypeEnum = ENUMERATION OF + (DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER + ,DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER + ,DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER + ,DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER + ,DIRECTEVAPORATIVEAIRWASHER + ,INDIRECTEVAPORATIVEPACKAGEAIRCOOLER + ,INDIRECTEVAPORATIVEWETCOIL + ,INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER + ,INDIRECTDIRECTCOMBINATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcEvaporatorTypeEnum = ENUMERATION OF + (DIRECTEXPANSIONSHELLANDTUBE + ,DIRECTEXPANSIONTUBEINTUBE + ,DIRECTEXPANSIONBRAZEDPLATE + ,FLOODEDSHELLANDTUBE + ,SHELLANDCOIL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFanTypeEnum = ENUMERATION OF + (CENTRIFUGALFORWARDCURVED + ,CENTRIFUGALRADIAL + ,CENTRIFUGALBACKWARDINCLINEDCURVED + ,CENTRIFUGALAIRFOIL + ,TUBEAXIAL + ,VANEAXIAL + ,PROPELLORAXIAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFilterTypeEnum = ENUMERATION OF + (AIRPARTICLEFILTER + ,ODORFILTER + ,OILFILTER + ,STRAINER + ,WATERFILTER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFireSuppressionTerminalTypeEnum = ENUMERATION OF + (BREECHINGINLET + ,FIREHYDRANT + ,HOSEREEL + ,SPRINKLER + ,SPRINKLERDEFLECTOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowDirectionEnum = ENUMERATION OF + (SOURCE + ,SINK + ,SOURCEANDSINK + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowInstrumentTypeEnum = ENUMERATION OF + (PRESSUREGAUGE + ,THERMOMETER + ,AMMETER + ,FREQUENCYMETER + ,POWERFACTORMETER + ,PHASEANGLEMETER + ,VOLTMETER_PEAK + ,VOLTMETER_RMS + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFlowMeterTypeEnum = ENUMERATION OF + (ELECTRICMETER + ,ENERGYMETER + ,FLOWMETER + ,GASMETER + ,OILMETER + ,WATERMETER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcFootingTypeEnum = ENUMERATION OF + (FOOTING_BEAM + ,PAD_FOOTING + ,PILE_CAP + ,STRIP_FOOTING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGasTerminalTypeEnum = ENUMERATION OF + (GASAPPLIANCE + ,GASBOOSTER + ,GASBURNER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGeometricProjectionEnum = ENUMERATION OF + (GRAPH_VIEW + ,SKETCH_VIEW + ,MODEL_VIEW + ,PLAN_VIEW + ,REFLECTED_PLAN_VIEW + ,SECTION_VIEW + ,ELEVATION_VIEW + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcGlobalOrLocalEnum = ENUMERATION OF + (GLOBAL_COORDS + ,LOCAL_COORDS); +END_TYPE; + +TYPE IfcHeatExchangerTypeEnum = ENUMERATION OF + (PLATE + ,SHELLANDTUBE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcHumidifierTypeEnum = ENUMERATION OF + (STEAMINJECTION + ,ADIABATICAIRWASHER + ,ADIABATICPAN + ,ADIABATICWETTEDELEMENT + ,ADIABATICATOMIZING + ,ADIABATICULTRASONIC + ,ADIABATICRIGIDMEDIA + ,ADIABATICCOMPRESSEDAIRNOZZLE + ,ASSISTEDELECTRIC + ,ASSISTEDNATURALGAS + ,ASSISTEDPROPANE + ,ASSISTEDBUTANE + ,ASSISTEDSTEAM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcInternalOrExternalEnum = ENUMERATION OF + (INTERNAL + ,EXTERNAL + ,NOTDEFINED); +END_TYPE; + +TYPE IfcInventoryTypeEnum = ENUMERATION OF + (ASSETINVENTORY + ,SPACEINVENTORY + ,FURNITUREINVENTORY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcJunctionBoxTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLampTypeEnum = ENUMERATION OF + (COMPACTFLUORESCENT + ,FLUORESCENT + ,HIGHPRESSUREMERCURY + ,HIGHPRESSURESODIUM + ,METALHALIDE + ,TUNGSTENFILAMENT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLayerSetDirectionEnum = ENUMERATION OF + (AXIS1 + ,AXIS2 + ,AXIS3); +END_TYPE; + +TYPE IfcLightDistributionCurveEnum = ENUMERATION OF + (TYPE_A + ,TYPE_B + ,TYPE_C + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLightEmissionSourceEnum = ENUMERATION OF + (COMPACTFLUORESCENT + ,FLUORESCENT + ,HIGHPRESSUREMERCURY + ,HIGHPRESSURESODIUM + ,LIGHTEMITTINGDIODE + ,LOWPRESSURESODIUM + ,LOWVOLTAGEHALOGEN + ,MAINVOLTAGEHALOGEN + ,METALHALIDE + ,TUNGSTENFILAMENT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLightFixtureTypeEnum = ENUMERATION OF + (POINTSOURCE + ,DIRECTIONSOURCE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLoadGroupTypeEnum = ENUMERATION OF + (LOAD_GROUP + ,LOAD_CASE + ,LOAD_COMBINATION_GROUP + ,LOAD_COMBINATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcLogicalOperatorEnum = ENUMERATION OF + (LOGICALAND + ,LOGICALOR); +END_TYPE; + +TYPE IfcMemberTypeEnum = ENUMERATION OF + (BRACE + ,CHORD + ,COLLAR + ,MEMBER + ,MULLION + ,PLATE + ,POST + ,PURLIN + ,RAFTER + ,STRINGER + ,STRUT + ,STUD + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcMotorConnectionTypeEnum = ENUMERATION OF + (BELTDRIVE + ,COUPLING + ,DIRECTDRIVE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcNullStyle = ENUMERATION OF + (NULL); +END_TYPE; + +TYPE IfcObjectTypeEnum = ENUMERATION OF + (PRODUCT + ,PROCESS + ,CONTROL + ,RESOURCE + ,ACTOR + ,GROUP + ,PROJECT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcObjectiveEnum = ENUMERATION OF + (CODECOMPLIANCE + ,DESIGNINTENT + ,HEALTHANDSAFETY + ,REQUIREMENT + ,SPECIFICATION + ,TRIGGERCONDITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcOccupantTypeEnum = ENUMERATION OF + (ASSIGNEE + ,ASSIGNOR + ,LESSEE + ,LESSOR + ,LETTINGAGENT + ,OWNER + ,TENANT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcOutletTypeEnum = ENUMERATION OF + (AUDIOVISUALOUTLET + ,COMMUNICATIONSOUTLET + ,POWEROUTLET + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPermeableCoveringOperationEnum = ENUMERATION OF + (GRILL + ,LOUVER + ,SCREEN + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF + (PHYSICAL + ,VIRTUAL + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPileConstructionEnum = ENUMERATION OF + (CAST_IN_PLACE + ,COMPOSITE + ,PRECAST_CONCRETE + ,PREFAB_STEEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPileTypeEnum = ENUMERATION OF + (COHESION + ,FRICTION + ,SUPPORT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPipeFittingTypeEnum = ENUMERATION OF + (BEND + ,CONNECTOR + ,ENTRY + ,EXIT + ,JUNCTION + ,OBSTRUCTION + ,TRANSITION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPipeSegmentTypeEnum = ENUMERATION OF + (FLEXIBLESEGMENT + ,RIGIDSEGMENT + ,GUTTER + ,SPOOL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPlateTypeEnum = ENUMERATION OF + (CURTAIN_PANEL + ,SHEET + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProcedureTypeEnum = ENUMERATION OF + (ADVICE_CAUTION + ,ADVICE_NOTE + ,ADVICE_WARNING + ,CALIBRATION + ,DIAGNOSTIC + ,SHUTDOWN + ,STARTUP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProfileTypeEnum = ENUMERATION OF + (CURVE + ,AREA); +END_TYPE; + +TYPE IfcProjectOrderRecordTypeEnum = ENUMERATION OF + (CHANGE + ,MAINTENANCE + ,MOVE + ,PURCHASE + ,WORK + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProjectOrderTypeEnum = ENUMERATION OF + (CHANGEORDER + ,MAINTENANCEWORKORDER + ,MOVEORDER + ,PURCHASEORDER + ,WORKORDER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcProjectedOrTrueLengthEnum = ENUMERATION OF + (PROJECTED_LENGTH + ,TRUE_LENGTH); +END_TYPE; + +TYPE IfcPropertySourceEnum = ENUMERATION OF + (DESIGN + ,DESIGNMAXIMUM + ,DESIGNMINIMUM + ,SIMULATED + ,ASBUILT + ,COMMISSIONING + ,MEASURED + ,USERDEFINED + ,NOTKNOWN); +END_TYPE; + +TYPE IfcProtectiveDeviceTypeEnum = ENUMERATION OF + (FUSEDISCONNECTOR + ,CIRCUITBREAKER + ,EARTHFAILUREDEVICE + ,RESIDUALCURRENTCIRCUITBREAKER + ,RESIDUALCURRENTSWITCH + ,VARISTOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcPumpTypeEnum = ENUMERATION OF + (CIRCULATOR + ,ENDSUCTION + ,SPLITCASE + ,VERTICALINLINE + ,VERTICALTURBINE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRailingTypeEnum = ENUMERATION OF + (HANDRAIL + ,GUARDRAIL + ,BALUSTRADE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRampFlightTypeEnum = ENUMERATION OF + (STRAIGHT + ,SPIRAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRampTypeEnum = ENUMERATION OF + (STRAIGHT_RUN_RAMP + ,TWO_STRAIGHT_RUN_RAMP + ,QUARTER_TURN_RAMP + ,TWO_QUARTER_TURN_RAMP + ,HALF_TURN_RAMP + ,SPIRAL_RAMP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReflectanceMethodEnum = ENUMERATION OF + (BLINN + ,FLAT + ,GLASS + ,MATT + ,METAL + ,MIRROR + ,PHONG + ,PLASTIC + ,STRAUSS + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReinforcingBarRoleEnum = ENUMERATION OF + (MAIN + ,SHEAR + ,LIGATURE + ,STUD + ,PUNCHING + ,EDGE + ,RING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcReinforcingBarSurfaceEnum = ENUMERATION OF + (PLAIN + ,TEXTURED); +END_TYPE; + +TYPE IfcResourceConsumptionEnum = ENUMERATION OF + (CONSUMED + ,PARTIALLYCONSUMED + ,NOTCONSUMED + ,OCCUPIED + ,PARTIALLYOCCUPIED + ,NOTOCCUPIED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcRibPlateDirectionEnum = ENUMERATION OF + (DIRECTION_X + ,DIRECTION_Y); +END_TYPE; + +TYPE IfcRoleEnum = ENUMERATION OF + (SUPPLIER + ,MANUFACTURER + ,CONTRACTOR + ,SUBCONTRACTOR + ,ARCHITECT + ,STRUCTURALENGINEER + ,COSTENGINEER + ,CLIENT + ,BUILDINGOWNER + ,BUILDINGOPERATOR + ,MECHANICALENGINEER + ,ELECTRICALENGINEER + ,PROJECTMANAGER + ,FACILITIESMANAGER + ,CIVILENGINEER + ,COMISSIONINGENGINEER + ,ENGINEER + ,OWNER + ,CONSULTANT + ,CONSTRUCTIONMANAGER + ,FIELDCONSTRUCTIONMANAGER + ,RESELLER + ,USERDEFINED); +END_TYPE; + +TYPE IfcRoofTypeEnum = ENUMERATION OF + (FLAT_ROOF + ,SHED_ROOF + ,GABLE_ROOF + ,HIP_ROOF + ,HIPPED_GABLE_ROOF + ,GAMBREL_ROOF + ,MANSARD_ROOF + ,BARREL_ROOF + ,RAINBOW_ROOF + ,BUTTERFLY_ROOF + ,PAVILION_ROOF + ,DOME_ROOF + ,FREEFORM + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSIPrefix = ENUMERATION OF + (EXA + ,PETA + ,TERA + ,GIGA + ,MEGA + ,KILO + ,HECTO + ,DECA + ,DECI + ,CENTI + ,MILLI + ,MICRO + ,NANO + ,PICO + ,FEMTO + ,ATTO); +END_TYPE; + +TYPE IfcSIUnitName = ENUMERATION OF + (AMPERE + ,BECQUEREL + ,CANDELA + ,COULOMB + ,CUBIC_METRE + ,DEGREE_CELSIUS + ,FARAD + ,GRAM + ,GRAY + ,HENRY + ,HERTZ + ,JOULE + ,KELVIN + ,LUMEN + ,LUX + ,METRE + ,MOLE + ,NEWTON + ,OHM + ,PASCAL + ,RADIAN + ,SECOND + ,SIEMENS + ,SIEVERT + ,SQUARE_METRE + ,STERADIAN + ,TESLA + ,VOLT + ,WATT + ,WEBER); +END_TYPE; + +TYPE IfcSanitaryTerminalTypeEnum = ENUMERATION OF + (BATH + ,BIDET + ,CISTERN + ,SHOWER + ,SINK + ,SANITARYFOUNTAIN + ,TOILETPAN + ,URINAL + ,WASHHANDBASIN + ,WCSEAT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSectionTypeEnum = ENUMERATION OF + (UNIFORM + ,TAPERED); +END_TYPE; + +TYPE IfcSensorTypeEnum = ENUMERATION OF + (CO2SENSOR + ,FIRESENSOR + ,FLOWSENSOR + ,GASSENSOR + ,HEATSENSOR + ,HUMIDITYSENSOR + ,LIGHTSENSOR + ,MOISTURESENSOR + ,MOVEMENTSENSOR + ,PRESSURESENSOR + ,SMOKESENSOR + ,SOUNDSENSOR + ,TEMPERATURESENSOR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSequenceEnum = ENUMERATION OF + (START_START + ,START_FINISH + ,FINISH_START + ,FINISH_FINISH + ,NOTDEFINED); +END_TYPE; + +TYPE IfcServiceLifeFactorTypeEnum = ENUMERATION OF + (A_QUALITYOFCOMPONENTS + ,B_DESIGNLEVEL + ,C_WORKEXECUTIONLEVEL + ,D_INDOORENVIRONMENT + ,E_OUTDOORENVIRONMENT + ,F_INUSECONDITIONS + ,G_MAINTENANCELEVEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcServiceLifeTypeEnum = ENUMERATION OF + (ACTUALSERVICELIFE + ,EXPECTEDSERVICELIFE + ,OPTIMISTICREFERENCESERVICELIFE + ,PESSIMISTICREFERENCESERVICELIFE + ,REFERENCESERVICELIFE); +END_TYPE; + +TYPE IfcSlabTypeEnum = ENUMERATION OF + (FLOOR + ,ROOF + ,LANDING + ,BASESLAB + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSoundScaleEnum = ENUMERATION OF + (DBA + ,DBB + ,DBC + ,NC + ,NR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSpaceHeaterTypeEnum = ENUMERATION OF + (SECTIONALRADIATOR + ,PANELRADIATOR + ,TUBULARRADIATOR + ,CONVECTOR + ,BASEBOARDHEATER + ,FINNEDTUBEUNIT + ,UNITHEATER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSpaceTypeEnum = ENUMERATION OF + (USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStackTerminalTypeEnum = ENUMERATION OF + (BIRDCAGE + ,COWL + ,RAINWATERHOPPER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStairFlightTypeEnum = ENUMERATION OF + (STRAIGHT + ,WINDER + ,SPIRAL + ,CURVED + ,FREEFORM + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStairTypeEnum = ENUMERATION OF + (STRAIGHT_RUN_STAIR + ,TWO_STRAIGHT_RUN_STAIR + ,QUARTER_WINDING_STAIR + ,QUARTER_TURN_STAIR + ,HALF_WINDING_STAIR + ,HALF_TURN_STAIR + ,TWO_QUARTER_WINDING_STAIR + ,TWO_QUARTER_TURN_STAIR + ,THREE_QUARTER_WINDING_STAIR + ,THREE_QUARTER_TURN_STAIR + ,SPIRAL_STAIR + ,DOUBLE_RETURN_STAIR + ,CURVED_RUN_STAIR + ,TWO_CURVED_RUN_STAIR + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStateEnum = ENUMERATION OF + (READWRITE + ,READONLY + ,LOCKED + ,READWRITELOCKED + ,READONLYLOCKED); +END_TYPE; + +TYPE IfcStructuralCurveTypeEnum = ENUMERATION OF + (RIGID_JOINED_MEMBER + ,PIN_JOINED_MEMBER + ,CABLE + ,TENSION_MEMBER + ,COMPRESSION_MEMBER + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcStructuralSurfaceTypeEnum = ENUMERATION OF + (BENDING_ELEMENT + ,MEMBRANE_ELEMENT + ,SHELL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSurfaceSide = ENUMERATION OF + (POSITIVE + ,NEGATIVE + ,BOTH); +END_TYPE; + +TYPE IfcSurfaceTextureEnum = ENUMERATION OF + (BUMP + ,OPACITY + ,REFLECTION + ,SELFILLUMINATION + ,SHININESS + ,SPECULAR + ,TEXTURE + ,TRANSPARENCYMAP + ,NOTDEFINED); +END_TYPE; + +TYPE IfcSwitchingDeviceTypeEnum = ENUMERATION OF + (CONTACTOR + ,EMERGENCYSTOP + ,STARTER + ,SWITCHDISCONNECTOR + ,TOGGLESWITCH + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTankTypeEnum = ENUMERATION OF + (PREFORMED + ,SECTIONAL + ,EXPANSION + ,PRESSUREVESSEL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTendonTypeEnum = ENUMERATION OF + (STRAND + ,WIRE + ,BAR + ,COATED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTextPath = ENUMERATION OF + (LEFT + ,RIGHT + ,UP + ,DOWN); +END_TYPE; + +TYPE IfcThermalLoadSourceEnum = ENUMERATION OF + (PEOPLE + ,LIGHTING + ,EQUIPMENT + ,VENTILATIONINDOORAIR + ,VENTILATIONOUTSIDEAIR + ,RECIRCULATEDAIR + ,EXHAUSTAIR + ,AIREXCHANGERATE + ,DRYBULBTEMPERATURE + ,RELATIVEHUMIDITY + ,INFILTRATION + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcThermalLoadTypeEnum = ENUMERATION OF + (SENSIBLE + ,LATENT + ,RADIANT + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTimeSeriesDataTypeEnum = ENUMERATION OF + (CONTINUOUS + ,DISCRETE + ,DISCRETEBINARY + ,PIECEWISEBINARY + ,PIECEWISECONSTANT + ,PIECEWISECONTINUOUS + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTimeSeriesScheduleTypeEnum = ENUMERATION OF + (ANNUAL + ,MONTHLY + ,WEEKLY + ,DAILY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTransformerTypeEnum = ENUMERATION OF + (CURRENT + ,FREQUENCY + ,VOLTAGE + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTransitionCode = ENUMERATION OF + (DISCONTINUOUS + ,CONTINUOUS + ,CONTSAMEGRADIENT + ,CONTSAMEGRADIENTSAMECURVATURE); +END_TYPE; + +TYPE IfcTransportElementTypeEnum = ENUMERATION OF + (ELEVATOR + ,ESCALATOR + ,MOVINGWALKWAY + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcTrimmingPreference = ENUMERATION OF + (CARTESIAN + ,PARAMETER + ,UNSPECIFIED); +END_TYPE; + +TYPE IfcTubeBundleTypeEnum = ENUMERATION OF + (FINNED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcUnitEnum = ENUMERATION OF + (ABSORBEDDOSEUNIT + ,AMOUNTOFSUBSTANCEUNIT + ,AREAUNIT + ,DOSEEQUIVALENTUNIT + ,ELECTRICCAPACITANCEUNIT + ,ELECTRICCHARGEUNIT + ,ELECTRICCONDUCTANCEUNIT + ,ELECTRICCURRENTUNIT + ,ELECTRICRESISTANCEUNIT + ,ELECTRICVOLTAGEUNIT + ,ENERGYUNIT + ,FORCEUNIT + ,FREQUENCYUNIT + ,ILLUMINANCEUNIT + ,INDUCTANCEUNIT + ,LENGTHUNIT + ,LUMINOUSFLUXUNIT + ,LUMINOUSINTENSITYUNIT + ,MAGNETICFLUXDENSITYUNIT + ,MAGNETICFLUXUNIT + ,MASSUNIT + ,PLANEANGLEUNIT + ,POWERUNIT + ,PRESSUREUNIT + ,RADIOACTIVITYUNIT + ,SOLIDANGLEUNIT + ,THERMODYNAMICTEMPERATUREUNIT + ,TIMEUNIT + ,VOLUMEUNIT + ,USERDEFINED); +END_TYPE; + +TYPE IfcUnitaryEquipmentTypeEnum = ENUMERATION OF + (AIRHANDLER + ,AIRCONDITIONINGUNIT + ,SPLITSYSTEM + ,ROOFTOPUNIT + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcValveTypeEnum = ENUMERATION OF + (AIRRELEASE + ,ANTIVACUUM + ,CHANGEOVER + ,CHECK + ,COMMISSIONING + ,DIVERTING + ,DRAWOFFCOCK + ,DOUBLECHECK + ,DOUBLEREGULATING + ,FAUCET + ,FLUSHING + ,GASCOCK + ,GASTAP + ,ISOLATING + ,MIXING + ,PRESSUREREDUCING + ,PRESSURERELIEF + ,REGULATING + ,SAFETYCUTOFF + ,STEAMTRAP + ,STOPCOCK + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcVibrationIsolatorTypeEnum = ENUMERATION OF + (COMPRESSION + ,SPRING + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWallTypeEnum = ENUMERATION OF + (STANDARD + ,POLYGONAL + ,SHEAR + ,ELEMENTEDWALL + ,PLUMBINGWALL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWasteTerminalTypeEnum = ENUMERATION OF + (FLOORTRAP + ,FLOORWASTE + ,GULLYSUMP + ,GULLYTRAP + ,GREASEINTERCEPTOR + ,OILINTERCEPTOR + ,PETROLINTERCEPTOR + ,ROOFDRAIN + ,WASTEDISPOSALUNIT + ,WASTETRAP + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowPanelOperationEnum = ENUMERATION OF + (SIDEHUNGRIGHTHAND + ,SIDEHUNGLEFTHAND + ,TILTANDTURNRIGHTHAND + ,TILTANDTURNLEFTHAND + ,TOPHUNG + ,BOTTOMHUNG + ,PIVOTHORIZONTAL + ,PIVOTVERTICAL + ,SLIDINGHORIZONTAL + ,SLIDINGVERTICAL + ,REMOVABLECASEMENT + ,FIXEDCASEMENT + ,OTHEROPERATION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowPanelPositionEnum = ENUMERATION OF + (LEFT + ,MIDDLE + ,RIGHT + ,BOTTOM + ,TOP + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowStyleConstructionEnum = ENUMERATION OF + (ALUMINIUM + ,HIGH_GRADE_STEEL + ,STEEL + ,WOOD + ,ALUMINIUM_WOOD + ,PLASTIC + ,OTHER_CONSTRUCTION + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWindowStyleOperationEnum = ENUMERATION OF + (SINGLE_PANEL + ,DOUBLE_PANEL_VERTICAL + ,DOUBLE_PANEL_HORIZONTAL + ,TRIPLE_PANEL_VERTICAL + ,TRIPLE_PANEL_BOTTOM + ,TRIPLE_PANEL_TOP + ,TRIPLE_PANEL_LEFT + ,TRIPLE_PANEL_RIGHT + ,TRIPLE_PANEL_HORIZONTAL + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcWorkControlTypeEnum = ENUMERATION OF + (ACTUAL + ,BASELINE + ,PLANNED + ,USERDEFINED + ,NOTDEFINED); +END_TYPE; + +TYPE IfcActorSelect = SELECT + (IfcOrganization + ,IfcPerson + ,IfcPersonAndOrganization); +END_TYPE; + +TYPE IfcAppliedValueSelect = SELECT + (IfcRatioMeasure + ,IfcMeasureWithUnit + ,IfcMonetaryMeasure); +END_TYPE; + +TYPE IfcAxis2Placement = SELECT + (IfcAxis2Placement2D + ,IfcAxis2Placement3D); +END_TYPE; + +TYPE IfcBooleanOperand = SELECT + (IfcSolidModel + ,IfcHalfSpaceSolid + ,IfcBooleanResult + ,IfcCsgPrimitive3D); +END_TYPE; + +TYPE IfcCharacterStyleSelect = SELECT + (IfcTextStyleForDefinedFont); +END_TYPE; + +TYPE IfcClassificationNotationSelect = SELECT + (IfcClassificationNotation + ,IfcClassificationReference); +END_TYPE; + +TYPE IfcColour = SELECT + (IfcColourSpecification + ,IfcPreDefinedColour); +END_TYPE; + +TYPE IfcColourOrFactor = SELECT + (IfcColourRgb + ,IfcNormalisedRatioMeasure); +END_TYPE; + +TYPE IfcConditionCriterionSelect = SELECT + (IfcLabel + ,IfcMeasureWithUnit); +END_TYPE; + +TYPE IfcCsgSelect = SELECT + (IfcBooleanResult + ,IfcCsgPrimitive3D); +END_TYPE; + +TYPE IfcCurveFontOrScaledCurveFontSelect = SELECT + (IfcCurveStyleFontSelect + ,IfcCurveStyleFontAndScaling); +END_TYPE; + +TYPE IfcCurveOrEdgeCurve = SELECT + (IfcBoundedCurve + ,IfcEdgeCurve); +END_TYPE; + +TYPE IfcCurveStyleFontSelect = SELECT + (IfcPreDefinedCurveFont + ,IfcCurveStyleFont); +END_TYPE; + +TYPE IfcDateTimeSelect = SELECT + (IfcCalendarDate + ,IfcLocalTime + ,IfcDateAndTime); +END_TYPE; + +TYPE IfcDefinedSymbolSelect = SELECT + (IfcPreDefinedSymbol + ,IfcExternallyDefinedSymbol); +END_TYPE; + +TYPE IfcDerivedMeasureValue = SELECT + (IfcVolumetricFlowRateMeasure + ,IfcTimeStamp + ,IfcThermalTransmittanceMeasure + ,IfcThermalResistanceMeasure + ,IfcThermalAdmittanceMeasure + ,IfcPressureMeasure + ,IfcPowerMeasure + ,IfcMassFlowRateMeasure + ,IfcMassDensityMeasure + ,IfcLinearVelocityMeasure + ,IfcKinematicViscosityMeasure + ,IfcIntegerCountRateMeasure + ,IfcHeatFluxDensityMeasure + ,IfcFrequencyMeasure + ,IfcEnergyMeasure + ,IfcElectricVoltageMeasure + ,IfcDynamicViscosityMeasure + ,IfcCompoundPlaneAngleMeasure + ,IfcAngularVelocityMeasure + ,IfcThermalConductivityMeasure + ,IfcMolecularWeightMeasure + ,IfcVaporPermeabilityMeasure + ,IfcMoistureDiffusivityMeasure + ,IfcIsothermalMoistureCapacityMeasure + ,IfcSpecificHeatCapacityMeasure + ,IfcMonetaryMeasure + ,IfcMagneticFluxDensityMeasure + ,IfcMagneticFluxMeasure + ,IfcLuminousFluxMeasure + ,IfcForceMeasure + ,IfcInductanceMeasure + ,IfcIlluminanceMeasure + ,IfcElectricResistanceMeasure + ,IfcElectricConductanceMeasure + ,IfcElectricChargeMeasure + ,IfcDoseEquivalentMeasure + ,IfcElectricCapacitanceMeasure + ,IfcAbsorbedDoseMeasure + ,IfcRadioActivityMeasure + ,IfcRotationalFrequencyMeasure + ,IfcTorqueMeasure + ,IfcAccelerationMeasure + ,IfcLinearForceMeasure + ,IfcLinearStiffnessMeasure + ,IfcModulusOfSubgradeReactionMeasure + ,IfcModulusOfElasticityMeasure + ,IfcMomentOfInertiaMeasure + ,IfcPlanarForceMeasure + ,IfcRotationalStiffnessMeasure + ,IfcShearModulusMeasure + ,IfcLinearMomentMeasure + ,IfcLuminousIntensityDistributionMeasure + ,IfcCurvatureMeasure + ,IfcMassPerLengthMeasure + ,IfcModulusOfLinearSubgradeReactionMeasure + ,IfcModulusOfRotationalSubgradeReactionMeasure + ,IfcRotationalMassMeasure + ,IfcSectionalAreaIntegralMeasure + ,IfcSectionModulusMeasure + ,IfcTemperatureGradientMeasure + ,IfcThermalExpansionCoefficientMeasure + ,IfcWarpingConstantMeasure + ,IfcWarpingMomentMeasure + ,IfcSoundPowerMeasure + ,IfcSoundPressureMeasure + ,IfcHeatingValueMeasure + ,IfcPHMeasure + ,IfcIonConcentrationMeasure); +END_TYPE; + +TYPE IfcDocumentSelect = SELECT + (IfcDocumentReference + ,IfcDocumentInformation); +END_TYPE; + +TYPE IfcDraughtingCalloutElement = SELECT + (IfcAnnotationCurveOccurrence + ,IfcAnnotationTextOccurrence + ,IfcAnnotationSymbolOccurrence); +END_TYPE; + +TYPE IfcFillAreaStyleTileShapeSelect = SELECT + (IfcFillAreaStyleTileSymbolWithStyle); +END_TYPE; + +TYPE IfcFillStyleSelect = SELECT + (IfcFillAreaStyleHatching + ,IfcFillAreaStyleTiles + ,IfcColour + ,IfcExternallyDefinedHatchStyle); +END_TYPE; + +TYPE IfcGeometricSetSelect = SELECT + (IfcPoint + ,IfcCurve + ,IfcSurface); +END_TYPE; + +TYPE IfcHatchLineDistanceSelect = SELECT + (IfcOneDirectionRepeatFactor + ,IfcPositiveLengthMeasure); +END_TYPE; + +TYPE IfcLayeredItem = SELECT + (IfcRepresentationItem + ,IfcRepresentation); +END_TYPE; + +TYPE IfcLibrarySelect = SELECT + (IfcLibraryReference + ,IfcLibraryInformation); +END_TYPE; + +TYPE IfcLightDistributionDataSourceSelect = SELECT + (IfcExternalReference + ,IfcLightIntensityDistribution); +END_TYPE; + +TYPE IfcMaterialSelect = SELECT + (IfcMaterial + ,IfcMaterialList + ,IfcMaterialLayerSetUsage + ,IfcMaterialLayerSet + ,IfcMaterialLayer); +END_TYPE; + +TYPE IfcMeasureValue = SELECT + (IfcVolumeMeasure + ,IfcTimeMeasure + ,IfcThermodynamicTemperatureMeasure + ,IfcSolidAngleMeasure + ,IfcPositiveRatioMeasure + ,IfcRatioMeasure + ,IfcPositivePlaneAngleMeasure + ,IfcPlaneAngleMeasure + ,IfcParameterValue + ,IfcNumericMeasure + ,IfcMassMeasure + ,IfcPositiveLengthMeasure + ,IfcLengthMeasure + ,IfcElectricCurrentMeasure + ,IfcDescriptiveMeasure + ,IfcCountMeasure + ,IfcContextDependentMeasure + ,IfcAreaMeasure + ,IfcAmountOfSubstanceMeasure + ,IfcLuminousIntensityMeasure + ,IfcNormalisedRatioMeasure + ,IfcComplexNumber); +END_TYPE; + +TYPE IfcMetricValueSelect = SELECT + (IfcDateTimeSelect + ,IfcMeasureWithUnit + ,IfcTable + ,IfcText + ,IfcTimeSeries + ,IfcCostValue); +END_TYPE; + +TYPE IfcObjectReferenceSelect = SELECT + (IfcMaterial + ,IfcPerson + ,IfcDateAndTime + ,IfcMaterialList + ,IfcOrganization + ,IfcCalendarDate + ,IfcLocalTime + ,IfcPersonAndOrganization + ,IfcMaterialLayer + ,IfcExternalReference + ,IfcTimeSeries + ,IfcAddress + ,IfcAppliedValue); +END_TYPE; + +TYPE IfcOrientationSelect = SELECT + (IfcPlaneAngleMeasure + ,IfcDirection); +END_TYPE; + +TYPE IfcPointOrVertexPoint = SELECT + (IfcPoint + ,IfcVertexPoint); +END_TYPE; + +TYPE IfcPresentationStyleSelect = SELECT + (IfcNullStyle + ,IfcCurveStyle + ,IfcSymbolStyle + ,IfcFillAreaStyle + ,IfcTextStyle + ,IfcSurfaceStyle); +END_TYPE; + +TYPE IfcShell = SELECT + (IfcClosedShell + ,IfcOpenShell); +END_TYPE; + +TYPE IfcSimpleValue = SELECT + (IfcInteger + ,IfcReal + ,IfcBoolean + ,IfcIdentifier + ,IfcText + ,IfcLabel + ,IfcLogical); +END_TYPE; + +TYPE IfcSizeSelect = SELECT + (IfcRatioMeasure + ,IfcLengthMeasure + ,IfcDescriptiveMeasure + ,IfcPositiveLengthMeasure + ,IfcNormalisedRatioMeasure + ,IfcPositiveRatioMeasure); +END_TYPE; + +TYPE IfcSpecularHighlightSelect = SELECT + (IfcSpecularExponent + ,IfcSpecularRoughness); +END_TYPE; + +TYPE IfcStructuralActivityAssignmentSelect = SELECT + (IfcStructuralItem + ,IfcElement); +END_TYPE; + +TYPE IfcSurfaceOrFaceSurface = SELECT + (IfcSurface + ,IfcFaceSurface + ,IfcFaceBasedSurfaceModel); +END_TYPE; + +TYPE IfcSurfaceStyleElementSelect = SELECT + (IfcSurfaceStyleShading + ,IfcSurfaceStyleLighting + ,IfcSurfaceStyleWithTextures + ,IfcExternallyDefinedSurfaceStyle + ,IfcSurfaceStyleRefraction); +END_TYPE; + +TYPE IfcSymbolStyleSelect = SELECT + (IfcColour); +END_TYPE; + +TYPE IfcTextFontSelect = SELECT + (IfcPreDefinedTextFont + ,IfcExternallyDefinedTextFont); +END_TYPE; + +TYPE IfcTextStyleSelect = SELECT + (IfcTextStyleWithBoxCharacteristics + ,IfcTextStyleTextModel); +END_TYPE; + +TYPE IfcTrimmingSelect = SELECT + (IfcCartesianPoint + ,IfcParameterValue); +END_TYPE; + +TYPE IfcUnit = SELECT + (IfcDerivedUnit + ,IfcNamedUnit + ,IfcMonetaryUnit); +END_TYPE; + +TYPE IfcValue = SELECT + (IfcMeasureValue + ,IfcSimpleValue + ,IfcDerivedMeasureValue); +END_TYPE; + +TYPE IfcVectorOrDirection = SELECT + (IfcDirection + ,IfcVector); +END_TYPE; + +ENTITY Ifc2DCompositeCurve + SUBTYPE OF (IfcCompositeCurve); + WHERE + WR1 : SELF\IfcCompositeCurve.ClosedCurve; + WR2 : SELF\IfcCurve.Dim = 2; +END_ENTITY; + +ENTITY IfcActionRequest + SUBTYPE OF (IfcControl); + RequestID : IfcIdentifier; + UNIQUE + UR2 : RequestID; +END_ENTITY; + +ENTITY IfcActor + SUPERTYPE OF (ONEOF + (IfcOccupant)) + SUBTYPE OF (IfcObject); + TheActor : IfcActorSelect; + INVERSE + IsActingUpon : SET [0:?] OF IfcRelAssignsToActor FOR RelatingActor; +END_ENTITY; + +ENTITY IfcActorRole; + Role : IfcRoleEnum; + UserDefinedRole : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + WHERE + WR1 : (Role <> IfcRoleEnum.USERDEFINED) OR + ((Role = IfcRoleEnum.USERDEFINED) AND + EXISTS(SELF.UserDefinedRole)); +END_ENTITY; + +ENTITY IfcActuatorType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcActuatorTypeEnum; +END_ENTITY; + +ENTITY IfcAddress + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPostalAddress + ,IfcTelecomAddress)); + Purpose : OPTIONAL IfcAddressTypeEnum; + Description : OPTIONAL IfcText; + UserDefinedPurpose : OPTIONAL IfcLabel; + INVERSE + OfPerson : SET [0:?] OF IfcPerson FOR Addresses; + OfOrganization : SET [0:?] OF IfcOrganization FOR Addresses; + WHERE + WR1 : (NOT(EXISTS(Purpose))) OR + ((Purpose <> IfcAddressTypeEnum.USERDEFINED) OR + ((Purpose = IfcAddressTypeEnum.USERDEFINED) AND + EXISTS(SELF.UserDefinedPurpose))); +END_ENTITY; + +ENTITY IfcAirTerminalBoxType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcAirTerminalBoxTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirTerminalBoxTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirTerminalBoxTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAirTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcAirTerminalTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirTerminalTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAirToAirHeatRecoveryType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcAirToAirHeatRecoveryTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcAlarmType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcAlarmTypeEnum; +END_ENTITY; + +ENTITY IfcAngularDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcAnnotation + SUBTYPE OF (IfcProduct); + INVERSE + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; +END_ENTITY; + +ENTITY IfcAnnotationCurveOccurrence + SUPERTYPE OF (ONEOF + (IfcDimensionCurve + ,IfcProjectionCurve)) + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCCURVE' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationFillArea + SUBTYPE OF (IfcGeometricRepresentationItem); + OuterBoundary : IfcCurve; + InnerBoundaries : OPTIONAL SET [1:?] OF IfcCurve; +END_ENTITY; + +ENTITY IfcAnnotationFillAreaOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + FillStyleTarget : OPTIONAL IfcPoint; + GlobalOrLocal : OPTIONAL IfcGlobalOrLocalEnum; + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCANNOTATIONFILLAREA' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationOccurrence + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotationCurveOccurrence + ,IfcAnnotationFillAreaOccurrence + ,IfcAnnotationSurfaceOccurrence + ,IfcAnnotationSymbolOccurrence + ,IfcAnnotationTextOccurrence)) + SUBTYPE OF (IfcStyledItem); +END_ENTITY; + +ENTITY IfcAnnotationSurface + SUBTYPE OF (IfcGeometricRepresentationItem); + Item : IfcGeometricRepresentationItem; + TextureCoordinates : OPTIONAL IfcTextureCoordinate; + WHERE + WR01 : SIZEOF([ + 'IFC2X3.IFCSURFACE', + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCSOLIDMODEL', + 'IFC2X3.IFCBOOLEANRESULT', + 'IFC2X3.IFCCSGPRIMITIVE3D'] + * TYPEOF(Item) + ) >= 1; +END_ENTITY; + +ENTITY IfcAnnotationSurfaceOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + (SIZEOF( + ['IFC2X3.IFCSURFACE', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCSOLIDMODEL'] * + TYPEOF(SELF\IfcStyledItem.Item)) > 0); +END_ENTITY; + +ENTITY IfcAnnotationSymbolOccurrence + SUPERTYPE OF (ONEOF + (IfcTerminatorSymbol)) + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCDEFINEDSYMBOL' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcAnnotationTextOccurrence + SUBTYPE OF (IfcAnnotationOccurrence); + WHERE + WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR + ('IFC2X3.IFCTEXTLITERAL' IN TYPEOF (SELF\IfcStyledItem.Item)); +END_ENTITY; + +ENTITY IfcApplication; + ApplicationDeveloper : IfcOrganization; + Version : IfcLabel; + ApplicationFullName : IfcLabel; + ApplicationIdentifier : IfcIdentifier; + UNIQUE + UR1 : ApplicationIdentifier; + UR2 : ApplicationFullName, Version; +END_ENTITY; + +ENTITY IfcAppliedValue + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCostValue + ,IfcEnvironmentalImpactValue)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + AppliedValue : OPTIONAL IfcAppliedValueSelect; + UnitBasis : OPTIONAL IfcMeasureWithUnit; + ApplicableDate : OPTIONAL IfcDateTimeSelect; + FixedUntilDate : OPTIONAL IfcDateTimeSelect; + INVERSE + ValuesReferenced : SET [0:?] OF IfcReferencesValueDocument FOR ReferencingValues; + ValueOfComponents : SET [0:?] OF IfcAppliedValueRelationship FOR ComponentOfTotal; + IsComponentIn : SET [0:?] OF IfcAppliedValueRelationship FOR Components; + WHERE + WR1 : EXISTS (AppliedValue) OR + EXISTS (ValueOfComponents); +END_ENTITY; + +ENTITY IfcAppliedValueRelationship; + ComponentOfTotal : IfcAppliedValue; + Components : SET [1:?] OF IfcAppliedValue; + ArithmeticOperator : IfcArithmeticOperatorEnum; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcApproval; + Description : OPTIONAL IfcText; + ApprovalDateTime : IfcDateTimeSelect; + ApprovalStatus : OPTIONAL IfcLabel; + ApprovalLevel : OPTIONAL IfcLabel; + ApprovalQualifier : OPTIONAL IfcText; + Name : IfcLabel; + Identifier : IfcIdentifier; + INVERSE + Actors : SET [0:?] OF IfcApprovalActorRelationship FOR Approval; + IsRelatedWith : SET [0:?] OF IfcApprovalRelationship FOR RelatedApproval; + Relates : SET [0:?] OF IfcApprovalRelationship FOR RelatingApproval; +END_ENTITY; + +ENTITY IfcApprovalActorRelationship; + Actor : IfcActorSelect; + Approval : IfcApproval; + Role : IfcActorRole; +END_ENTITY; + +ENTITY IfcApprovalPropertyRelationship; + ApprovedProperties : SET [1:?] OF IfcProperty; + Approval : IfcApproval; +END_ENTITY; + +ENTITY IfcApprovalRelationship; + RelatedApproval : IfcApproval; + RelatingApproval : IfcApproval; + Description : OPTIONAL IfcText; + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcArbitraryClosedProfileDef + SUPERTYPE OF (ONEOF + (IfcArbitraryProfileDefWithVoids)) + SUBTYPE OF (IfcProfileDef); + OuterCurve : IfcCurve; + WHERE + WR1 : OuterCurve.Dim = 2; + WR2 : NOT('IFC2X3.IFCLINE' IN TYPEOF(OuterCurve)); + WR3 : NOT('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(OuterCurve)); +END_ENTITY; + +ENTITY IfcArbitraryOpenProfileDef + SUPERTYPE OF (ONEOF + (IfcCenterLineProfileDef)) + SUBTYPE OF (IfcProfileDef); + Curve : IfcBoundedCurve; + WHERE + WR11 : ('IFC2X3.IFCCENTERLINEPROFILEDEF' IN TYPEOF(SELF)) OR + (SELF\IfcProfileDef.ProfileType = IfcProfileTypeEnum.CURVE); + WR12 : Curve.Dim = 2; +END_ENTITY; + +ENTITY IfcArbitraryProfileDefWithVoids + SUBTYPE OF (IfcArbitraryClosedProfileDef); + InnerCurves : SET [1:?] OF IfcCurve; + WHERE + WR1 : SELF\IfcProfileDef.ProfileType = AREA; + WR2 : SIZEOF(QUERY(temp <* InnerCurves | temp.Dim <> 2)) = 0; + WR3 : SIZEOF(QUERY(temp <* InnerCurves | 'IFC2X3.IFCLINE' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcAsset + SUBTYPE OF (IfcGroup); + AssetID : IfcIdentifier; + OriginalValue : IfcCostValue; + CurrentValue : IfcCostValue; + TotalReplacementCost : IfcCostValue; + Owner : IfcActorSelect; + User : IfcActorSelect; + ResponsiblePerson : IfcPerson; + IncorporationDate : IfcCalendarDate; + DepreciatedValue : IfcCostValue; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT('IFC2X3.IFCELEMENT' IN TYPEOF(Temp)))) = 0; +END_ENTITY; + +ENTITY IfcAsymmetricIShapeProfileDef + SUBTYPE OF (IfcIShapeProfileDef); + TopFlangeWidth : IfcPositiveLengthMeasure; + TopFlangeThickness : OPTIONAL IfcPositiveLengthMeasure; + TopFlangeFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcAxis1Placement + SUBTYPE OF (IfcPlacement); + Axis : OPTIONAL IfcDirection; + DERIVE + Z : IfcDirection := NVL (IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + WHERE + WR1 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); + WR2 : SELF\IfcPlacement.Location.Dim = 3; +END_ENTITY; + +ENTITY IfcAxis2Placement2D + SUBTYPE OF (IfcPlacement); + RefDirection : OPTIONAL IfcDirection; + DERIVE + P : LIST [2:2] OF IfcDirection := IfcBuild2Axes(RefDirection); + WHERE + WR1 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 2); + WR2 : SELF\IfcPlacement.Location.Dim = 2; +END_ENTITY; + +ENTITY IfcAxis2Placement3D + SUBTYPE OF (IfcPlacement); + Axis : OPTIONAL IfcDirection; + RefDirection : OPTIONAL IfcDirection; + DERIVE + P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection); + WHERE + WR1 : SELF\IfcPlacement.Location.Dim = 3; + WR2 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); + WR3 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3); + WR4 : (NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0); + WR5 : NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection))); +END_ENTITY; + +ENTITY IfcBSplineCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBezierCurve)) + SUBTYPE OF (IfcBoundedCurve); + Degree : INTEGER; + ControlPointsList : LIST [2:?] OF IfcCartesianPoint; + CurveForm : IfcBSplineCurveForm; + ClosedCurve : LOGICAL; + SelfIntersect : LOGICAL; + DERIVE + ControlPoints : ARRAY [0:255] OF IfcCartesianPoint := IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints); + UpperIndexOnControlPoints : INTEGER := (SIZEOF(ControlPointsList) - 1); + WHERE + WR41 : SIZEOF(QUERY(Temp <* ControlPointsList | + Temp.Dim <> ControlPointsList[1].Dim)) + = 0; +END_ENTITY; + +ENTITY IfcBeam + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcBeamType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcBeamTypeEnum; +END_ENTITY; + +ENTITY IfcBezierCurve + SUPERTYPE OF (ONEOF + (IfcRationalBezierCurve)) + SUBTYPE OF (IfcBSplineCurve); +END_ENTITY; + +ENTITY IfcBlobTexture + SUBTYPE OF (IfcSurfaceTexture); + RasterFormat : IfcIdentifier; + RasterCode : BOOLEAN; + WHERE + WR11 : SELF.RasterFormat IN ['BMP', 'JPG', 'GIF', 'PNG']; +END_ENTITY; + +ENTITY IfcBlock + SUBTYPE OF (IfcCsgPrimitive3D); + XLength : IfcPositiveLengthMeasure; + YLength : IfcPositiveLengthMeasure; + ZLength : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcBoilerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcBoilerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcBoilerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcBoilerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcBooleanClippingResult + SUBTYPE OF (IfcBooleanResult); + WHERE + WR1 : ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(FirstOperand)) OR ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(FirstOperand)); + WR2 : ('IFC2X3.IFCHALFSPACESOLID' IN TYPEOF(SecondOperand)); + WR3 : Operator = DIFFERENCE; +END_ENTITY; + +ENTITY IfcBooleanResult + SUPERTYPE OF (ONEOF + (IfcBooleanClippingResult)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Operator : IfcBooleanOperator; + FirstOperand : IfcBooleanOperand; + SecondOperand : IfcBooleanOperand; + DERIVE + Dim : IfcDimensionCount := FirstOperand.Dim; + WHERE + WR1 : FirstOperand.Dim = SecondOperand.Dim; +END_ENTITY; + +ENTITY IfcBoundaryCondition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundaryEdgeCondition + ,IfcBoundaryFaceCondition + ,IfcBoundaryNodeCondition)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcBoundaryEdgeCondition + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessByLengthX : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + LinearStiffnessByLengthY : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + LinearStiffnessByLengthZ : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; + RotationalStiffnessByLengthX : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; + RotationalStiffnessByLengthY : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; + RotationalStiffnessByLengthZ : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; +END_ENTITY; + +ENTITY IfcBoundaryFaceCondition + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessByAreaX : OPTIONAL IfcModulusOfSubgradeReactionMeasure; + LinearStiffnessByAreaY : OPTIONAL IfcModulusOfSubgradeReactionMeasure; + LinearStiffnessByAreaZ : OPTIONAL IfcModulusOfSubgradeReactionMeasure; +END_ENTITY; + +ENTITY IfcBoundaryNodeCondition + SUPERTYPE OF (ONEOF + (IfcBoundaryNodeConditionWarping)) + SUBTYPE OF (IfcBoundaryCondition); + LinearStiffnessX : OPTIONAL IfcLinearStiffnessMeasure; + LinearStiffnessY : OPTIONAL IfcLinearStiffnessMeasure; + LinearStiffnessZ : OPTIONAL IfcLinearStiffnessMeasure; + RotationalStiffnessX : OPTIONAL IfcRotationalStiffnessMeasure; + RotationalStiffnessY : OPTIONAL IfcRotationalStiffnessMeasure; + RotationalStiffnessZ : OPTIONAL IfcRotationalStiffnessMeasure; +END_ENTITY; + +ENTITY IfcBoundaryNodeConditionWarping + SUBTYPE OF (IfcBoundaryNodeCondition); + WarpingStiffness : OPTIONAL IfcWarpingMomentMeasure; +END_ENTITY; + +ENTITY IfcBoundedCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBSplineCurve + ,IfcCompositeCurve + ,IfcPolyline + ,IfcTrimmedCurve)) + SUBTYPE OF (IfcCurve); +END_ENTITY; + +ENTITY IfcBoundedSurface + SUPERTYPE OF (ONEOF + (IfcCurveBoundedPlane + ,IfcRectangularTrimmedSurface)) + SUBTYPE OF (IfcSurface); +END_ENTITY; + +ENTITY IfcBoundingBox + SUBTYPE OF (IfcGeometricRepresentationItem); + Corner : IfcCartesianPoint; + XDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; + ZDim : IfcPositiveLengthMeasure; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcBoxedHalfSpace + SUBTYPE OF (IfcHalfSpaceSolid); + Enclosure : IfcBoundingBox; + WHERE + WR1 : NOT ('IFC2X3.IFCCURVEBOUNDEDPLANE' IN TYPEOF(SELF\IfcHalfSpaceSolid.BaseSurface)); +END_ENTITY; + +ENTITY IfcBuilding + SUBTYPE OF (IfcSpatialStructureElement); + ElevationOfRefHeight : OPTIONAL IfcLengthMeasure; + ElevationOfTerrain : OPTIONAL IfcLengthMeasure; + BuildingAddress : OPTIONAL IfcPostalAddress; +END_ENTITY; + +ENTITY IfcBuildingElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBeam + ,IfcBuildingElementComponent + ,IfcBuildingElementProxy + ,IfcColumn + ,IfcCovering + ,IfcCurtainWall + ,IfcDoor + ,IfcFooting + ,IfcMember + ,IfcPile + ,IfcPlate + ,IfcRailing + ,IfcRamp + ,IfcRampFlight + ,IfcRoof + ,IfcSlab + ,IfcStair + ,IfcStairFlight + ,IfcWall + ,IfcWindow)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcBuildingElementComponent + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElementPart + ,IfcReinforcingElement)) + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcBuildingElementPart + SUBTYPE OF (IfcBuildingElementComponent); +END_ENTITY; + +ENTITY IfcBuildingElementProxy + SUBTYPE OF (IfcBuildingElement); + CompositionType : OPTIONAL IfcElementCompositionEnum; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcBuildingElementProxyType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcBuildingElementProxyTypeEnum; +END_ENTITY; + +ENTITY IfcBuildingElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBeamType + ,IfcBuildingElementProxyType + ,IfcColumnType + ,IfcCoveringType + ,IfcCurtainWallType + ,IfcMemberType + ,IfcPlateType + ,IfcRailingType + ,IfcRampFlightType + ,IfcSlabType + ,IfcStairFlightType + ,IfcWallType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcBuildingStorey + SUBTYPE OF (IfcSpatialStructureElement); + Elevation : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcCShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + Width : IfcPositiveLengthMeasure; + WallThickness : IfcPositiveLengthMeasure; + Girth : IfcPositiveLengthMeasure; + InternalFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : Girth < (Depth / 2.); + WR2 : NOT(EXISTS(InternalFilletRadius)) OR + ((InternalFilletRadius <= Width/2.) AND (InternalFilletRadius <= Depth/2.)); + WR3 : (WallThickness < Width/2.) AND (WallThickness < Depth/2.); +END_ENTITY; + +ENTITY IfcCableCarrierFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcCableCarrierFittingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCableCarrierFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCableCarrierFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCableCarrierSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcCableCarrierSegmentTypeEnum; +END_ENTITY; + +ENTITY IfcCableSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcCableSegmentTypeEnum; +END_ENTITY; + +ENTITY IfcCalendarDate; + DayComponent : IfcDayInMonthNumber; + MonthComponent : IfcMonthInYearNumber; + YearComponent : IfcYearNumber; + WHERE + WR21 : IfcValidCalendarDate (SELF); +END_ENTITY; + +ENTITY IfcCartesianPoint + SUBTYPE OF (IfcPoint); + Coordinates : LIST [1:3] OF IfcLengthMeasure; + DERIVE + Dim : IfcDimensionCount := HIINDEX(Coordinates); + WHERE + WR1 : HIINDEX(Coordinates) >= 2; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator2D + ,IfcCartesianTransformationOperator3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Axis1 : OPTIONAL IfcDirection; + Axis2 : OPTIONAL IfcDirection; + LocalOrigin : IfcCartesianPoint; + Scale : OPTIONAL REAL; + DERIVE + Scl : REAL := NVL(Scale, 1.0); + Dim : IfcDimensionCount := LocalOrigin.Dim; + WHERE + WR1 : Scl > 0.0; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator2D + SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator2DnonUniform)) + SUBTYPE OF (IfcCartesianTransformationOperator); + DERIVE + U : LIST [2:2] OF IfcDirection := IfcBaseAxis(2,SELF\IfcCartesianTransformationOperator.Axis1, + SELF\IfcCartesianTransformationOperator.Axis2,?); + WHERE + WR1 : SELF\IfcCartesianTransformationOperator.Dim = 2; + WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR + (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 2); + WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR + (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 2); +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator2DnonUniform + SUBTYPE OF (IfcCartesianTransformationOperator2D); + Scale2 : OPTIONAL REAL; + DERIVE + Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); + WHERE + WR1 : Scl2 > 0.0; +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator3D + SUPERTYPE OF (ONEOF + (IfcCartesianTransformationOperator3DnonUniform)) + SUBTYPE OF (IfcCartesianTransformationOperator); + Axis3 : OPTIONAL IfcDirection; + DERIVE + U : LIST [3:3] OF IfcDirection := IfcBaseAxis(3,SELF\IfcCartesianTransformationOperator.Axis1, + SELF\IfcCartesianTransformationOperator.Axis2,Axis3); + WHERE + WR1 : SELF\IfcCartesianTransformationOperator.Dim = 3; + WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR + (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 3); + WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR + (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 3); + WR4 : NOT(EXISTS(Axis3)) OR (Axis3.Dim = 3); +END_ENTITY; + +ENTITY IfcCartesianTransformationOperator3DnonUniform + SUBTYPE OF (IfcCartesianTransformationOperator3D); + Scale2 : OPTIONAL REAL; + Scale3 : OPTIONAL REAL; + DERIVE + Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); + Scl3 : REAL := NVL(Scale3, SELF\IfcCartesianTransformationOperator.Scl); + WHERE + WR1 : Scl2 > 0.0; + WR2 : Scl3 > 0.0; +END_ENTITY; + +ENTITY IfcCenterLineProfileDef + SUBTYPE OF (IfcArbitraryOpenProfileDef); + Thickness : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcChamferEdgeFeature + SUBTYPE OF (IfcEdgeFeature); + Width : OPTIONAL IfcPositiveLengthMeasure; + Height : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcChillerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcChillerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcChillerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcChillerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCircle + SUBTYPE OF (IfcConic); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCircleHollowProfileDef + SUBTYPE OF (IfcCircleProfileDef); + WallThickness : IfcPositiveLengthMeasure; + WHERE + WR1 : WallThickness < SELF\IfcCircleProfileDef.Radius; +END_ENTITY; + +ENTITY IfcCircleProfileDef + SUPERTYPE OF (ONEOF + (IfcCircleHollowProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcClassification; + Source : IfcLabel; + Edition : IfcLabel; + EditionDate : OPTIONAL IfcCalendarDate; + Name : IfcLabel; + INVERSE + Contains : SET [0:?] OF IfcClassificationItem FOR ItemOf; +END_ENTITY; + +ENTITY IfcClassificationItem; + Notation : IfcClassificationNotationFacet; + ItemOf : OPTIONAL IfcClassification; + Title : IfcLabel; + INVERSE + IsClassifiedItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatedItems; + IsClassifyingItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatingItem; +END_ENTITY; + +ENTITY IfcClassificationItemRelationship; + RelatingItem : IfcClassificationItem; + RelatedItems : SET [1:?] OF IfcClassificationItem; +END_ENTITY; + +ENTITY IfcClassificationNotation; + NotationFacets : SET [1:?] OF IfcClassificationNotationFacet; +END_ENTITY; + +ENTITY IfcClassificationNotationFacet; + NotationValue : IfcLabel; +END_ENTITY; + +ENTITY IfcClassificationReference + SUBTYPE OF (IfcExternalReference); + ReferencedSource : OPTIONAL IfcClassification; +END_ENTITY; + +ENTITY IfcClosedShell + SUBTYPE OF (IfcConnectedFaceSet); +END_ENTITY; + +ENTITY IfcCoilType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCoilTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCoilTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCoilTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcColourRgb + SUBTYPE OF (IfcColourSpecification); + Red : IfcNormalisedRatioMeasure; + Green : IfcNormalisedRatioMeasure; + Blue : IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcColourSpecification + ABSTRACT SUPERTYPE OF (ONEOF + (IfcColourRgb)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcColumn + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcColumnType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcColumnTypeEnum; +END_ENTITY; + +ENTITY IfcComplexProperty + SUBTYPE OF (IfcProperty); + UsageName : IfcIdentifier; + HasProperties : SET [1:?] OF IfcProperty; + WHERE + WR21 : SIZEOF(QUERY(temp <* HasProperties | SELF :=: temp)) = 0; + WR22 : IfcUniquePropertyName(HasProperties); +END_ENTITY; + +ENTITY IfcCompositeCurve + SUPERTYPE OF (ONEOF + (Ifc2DCompositeCurve)) + SUBTYPE OF (IfcBoundedCurve); + Segments : LIST [1:?] OF IfcCompositeCurveSegment; + SelfIntersect : LOGICAL; + DERIVE + NSegments : INTEGER := SIZEOF(Segments); + ClosedCurve : LOGICAL := Segments[NSegments].Transition <> Discontinuous; + WHERE + WR41 : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0)); + WR42 : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcCompositeCurveSegment + SUBTYPE OF (IfcGeometricRepresentationItem); + Transition : IfcTransitionCode; + SameSense : BOOLEAN; + ParentCurve : IfcCurve; + DERIVE + Dim : IfcDimensionCount := ParentCurve.Dim; + INVERSE + UsingCurves : SET [1:?] OF IfcCompositeCurve FOR Segments; + WHERE + WR1 : ('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(ParentCurve)); +END_ENTITY; + +ENTITY IfcCompositeProfileDef + SUBTYPE OF (IfcProfileDef); + Profiles : SET [2:?] OF IfcProfileDef; + Label : OPTIONAL IfcLabel; + WHERE + WR1 : SIZEOF(QUERY(temp <* Profiles | temp.ProfileType <> Profiles[1].ProfileType)) = 0; + WR2 : SIZEOF(QUERY(temp <* Profiles | 'IFC2X3.IFCCOMPOSITEPROFILEDEF' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcCompressorType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcCompressorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCompressorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCompressorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCondenserType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCondenserTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCondenserTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCondenserTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCondition + SUBTYPE OF (IfcGroup); +END_ENTITY; + +ENTITY IfcConditionCriterion + SUBTYPE OF (IfcControl); + Criterion : IfcConditionCriterionSelect; + CriterionDateTime : IfcDateTimeSelect; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcConic + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCircle + ,IfcEllipse)) + SUBTYPE OF (IfcCurve); + Position : IfcAxis2Placement; +END_ENTITY; + +ENTITY IfcConnectedFaceSet + SUPERTYPE OF (ONEOF + (IfcClosedShell + ,IfcOpenShell)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + CfsFaces : SET [1:?] OF IfcFace; +END_ENTITY; + +ENTITY IfcConnectionCurveGeometry + SUBTYPE OF (IfcConnectionGeometry); + CurveOnRelatingElement : IfcCurveOrEdgeCurve; + CurveOnRelatedElement : OPTIONAL IfcCurveOrEdgeCurve; +END_ENTITY; + +ENTITY IfcConnectionGeometry + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConnectionCurveGeometry + ,IfcConnectionPointGeometry + ,IfcConnectionPortGeometry + ,IfcConnectionSurfaceGeometry)); +END_ENTITY; + +ENTITY IfcConnectionPointEccentricity + SUBTYPE OF (IfcConnectionPointGeometry); + EccentricityInX : OPTIONAL IfcLengthMeasure; + EccentricityInY : OPTIONAL IfcLengthMeasure; + EccentricityInZ : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcConnectionPointGeometry + SUPERTYPE OF (ONEOF + (IfcConnectionPointEccentricity)) + SUBTYPE OF (IfcConnectionGeometry); + PointOnRelatingElement : IfcPointOrVertexPoint; + PointOnRelatedElement : OPTIONAL IfcPointOrVertexPoint; +END_ENTITY; + +ENTITY IfcConnectionPortGeometry + SUBTYPE OF (IfcConnectionGeometry); + LocationAtRelatingElement : IfcAxis2Placement; + LocationAtRelatedElement : OPTIONAL IfcAxis2Placement; + ProfileOfPort : IfcProfileDef; +END_ENTITY; + +ENTITY IfcConnectionSurfaceGeometry + SUBTYPE OF (IfcConnectionGeometry); + SurfaceOnRelatingElement : IfcSurfaceOrFaceSurface; + SurfaceOnRelatedElement : OPTIONAL IfcSurfaceOrFaceSurface; +END_ENTITY; + +ENTITY IfcConstraint + ABSTRACT SUPERTYPE OF (ONEOF + (IfcMetric + ,IfcObjective)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + ConstraintGrade : IfcConstraintEnum; + ConstraintSource : OPTIONAL IfcLabel; + CreatingActor : OPTIONAL IfcActorSelect; + CreationTime : OPTIONAL IfcDateTimeSelect; + UserDefinedGrade : OPTIONAL IfcLabel; + INVERSE + ClassifiedAs : SET [0:?] OF IfcConstraintClassificationRelationship FOR ClassifiedConstraint; + RelatesConstraints : SET [0:?] OF IfcConstraintRelationship FOR RelatingConstraint; + IsRelatedWith : SET [0:?] OF IfcConstraintRelationship FOR RelatedConstraints; + PropertiesForConstraint : SET [0:?] OF IfcPropertyConstraintRelationship FOR RelatingConstraint; + Aggregates : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatingConstraint; + IsAggregatedIn : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatedConstraints; + WHERE + WR11 : (ConstraintGrade <> IfcConstraintEnum.USERDEFINED) OR + ((ConstraintGrade = IfcConstraintEnum.USERDEFINED) AND EXISTS(SELF\IfcConstraint.UserDefinedGrade)); +END_ENTITY; + +ENTITY IfcConstraintAggregationRelationship; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingConstraint : IfcConstraint; + RelatedConstraints : LIST [1:?] OF UNIQUE IfcConstraint; + LogicalAggregator : IfcLogicalOperatorEnum; + WHERE + WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | + temp :=: RelatingConstraint + )) = 0; +END_ENTITY; + +ENTITY IfcConstraintClassificationRelationship; + ClassifiedConstraint : IfcConstraint; + RelatedClassifications : SET [1:?] OF IfcClassificationNotationSelect; +END_ENTITY; + +ENTITY IfcConstraintRelationship; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingConstraint : IfcConstraint; + RelatedConstraints : SET [1:?] OF IfcConstraint; + WHERE + WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | temp :=: RelatingConstraint )) = 0; +END_ENTITY; + +ENTITY IfcConstructionEquipmentResource + SUBTYPE OF (IfcConstructionResource); +END_ENTITY; + +ENTITY IfcConstructionMaterialResource + SUBTYPE OF (IfcConstructionResource); + Suppliers : OPTIONAL SET [1:?] OF IfcActorSelect; + UsageRatio : OPTIONAL IfcRatioMeasure; + WHERE + WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; + WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR + (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); +END_ENTITY; + +ENTITY IfcConstructionProductResource + SUBTYPE OF (IfcConstructionResource); + WHERE + WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; + WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR + (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); +END_ENTITY; + +ENTITY IfcConstructionResource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConstructionEquipmentResource + ,IfcConstructionMaterialResource + ,IfcConstructionProductResource + ,IfcCrewResource + ,IfcLaborResource + ,IfcSubContractResource)) + SUBTYPE OF (IfcResource); + ResourceIdentifier : OPTIONAL IfcIdentifier; + ResourceGroup : OPTIONAL IfcLabel; + ResourceConsumption : OPTIONAL IfcResourceConsumptionEnum; + BaseQuantity : OPTIONAL IfcMeasureWithUnit; +END_ENTITY; + +ENTITY IfcContextDependentUnit + SUBTYPE OF (IfcNamedUnit); + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcControl + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActionRequest + ,IfcConditionCriterion + ,IfcCostItem + ,IfcCostSchedule + ,IfcEquipmentStandard + ,IfcFurnitureStandard + ,IfcPerformanceHistory + ,IfcPermit + ,IfcProjectOrder + ,IfcProjectOrderRecord + ,IfcScheduleTimeControl + ,IfcServiceLife + ,IfcSpaceProgram + ,IfcTimeSeriesSchedule + ,IfcWorkControl)) + SUBTYPE OF (IfcObject); + INVERSE + Controls : SET [0:?] OF IfcRelAssignsToControl FOR RelatingControl; +END_ENTITY; + +ENTITY IfcControllerType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcControllerTypeEnum; +END_ENTITY; + +ENTITY IfcConversionBasedUnit + SUBTYPE OF (IfcNamedUnit); + Name : IfcLabel; + ConversionFactor : IfcMeasureWithUnit; +END_ENTITY; + +ENTITY IfcCooledBeamType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCooledBeamTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCooledBeamTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCooledBeamTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCoolingTowerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcCoolingTowerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcCoolingTowerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcCoolingTowerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcCoordinatedUniversalTimeOffset; + HourOffset : IfcHourInDay; + MinuteOffset : OPTIONAL IfcMinuteInHour; + Sense : IfcAheadOrBehind; +END_ENTITY; + +ENTITY IfcCostItem + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcCostSchedule + SUBTYPE OF (IfcControl); + SubmittedBy : OPTIONAL IfcActorSelect; + PreparedBy : OPTIONAL IfcActorSelect; + SubmittedOn : OPTIONAL IfcDateTimeSelect; + Status : OPTIONAL IfcLabel; + TargetUsers : OPTIONAL SET [1:?] OF IfcActorSelect; + UpdateDate : OPTIONAL IfcDateTimeSelect; + ID : IfcIdentifier; + PredefinedType : IfcCostScheduleTypeEnum; + UNIQUE + UR2 : ID; +END_ENTITY; + +ENTITY IfcCostValue + SUBTYPE OF (IfcAppliedValue); + CostType : IfcLabel; + Condition : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcCovering + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcCoveringTypeEnum; + INVERSE + CoversSpaces : SET [0:1] OF IfcRelCoversSpaces FOR RelatedCoverings; + Covers : SET [0:1] OF IfcRelCoversBldgElements FOR RelatedCoverings; +END_ENTITY; + +ENTITY IfcCoveringType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcCoveringTypeEnum; +END_ENTITY; + +ENTITY IfcCraneRailAShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + OverallHeight : IfcPositiveLengthMeasure; + BaseWidth2 : IfcPositiveLengthMeasure; + Radius : OPTIONAL IfcPositiveLengthMeasure; + HeadWidth : IfcPositiveLengthMeasure; + HeadDepth2 : IfcPositiveLengthMeasure; + HeadDepth3 : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + BaseWidth4 : IfcPositiveLengthMeasure; + BaseDepth1 : IfcPositiveLengthMeasure; + BaseDepth2 : IfcPositiveLengthMeasure; + BaseDepth3 : IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCraneRailFShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + OverallHeight : IfcPositiveLengthMeasure; + HeadWidth : IfcPositiveLengthMeasure; + Radius : OPTIONAL IfcPositiveLengthMeasure; + HeadDepth2 : IfcPositiveLengthMeasure; + HeadDepth3 : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + BaseDepth1 : IfcPositiveLengthMeasure; + BaseDepth2 : IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcCrewResource + SUBTYPE OF (IfcConstructionResource); +END_ENTITY; + +ENTITY IfcCsgPrimitive3D + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBlock + ,IfcRectangularPyramid + ,IfcRightCircularCone + ,IfcRightCircularCylinder + ,IfcSphere)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcCsgSolid + SUBTYPE OF (IfcSolidModel); + TreeRootExpression : IfcCsgSelect; +END_ENTITY; + +ENTITY IfcCurrencyRelationship; + RelatingMonetaryUnit : IfcMonetaryUnit; + RelatedMonetaryUnit : IfcMonetaryUnit; + ExchangeRate : IfcPositiveRatioMeasure; + RateDateTime : IfcDateAndTime; + RateSource : OPTIONAL IfcLibraryInformation; +END_ENTITY; + +ENTITY IfcCurtainWall + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcCurtainWallType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcCurtainWallTypeEnum; +END_ENTITY; + +ENTITY IfcCurve + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundedCurve + ,IfcConic + ,IfcLine + ,IfcOffsetCurve2D + ,IfcOffsetCurve3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + DERIVE + Dim : IfcDimensionCount := IfcCurveDim(SELF); +END_ENTITY; + +ENTITY IfcCurveBoundedPlane + SUBTYPE OF (IfcBoundedSurface); + BasisSurface : IfcPlane; + OuterBoundary : IfcCurve; + InnerBoundaries : SET [0:?] OF IfcCurve; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; +END_ENTITY; + +ENTITY IfcCurveStyle + SUBTYPE OF (IfcPresentationStyle); + CurveFont : OPTIONAL IfcCurveFontOrScaledCurveFontSelect; + CurveWidth : OPTIONAL IfcSizeSelect; + CurveColour : OPTIONAL IfcColour; + WHERE + WR11 : (NOT(EXISTS(CurveWidth))) OR + ('IFC2X3.IFCPOSITIVELENGTHMEASURE' IN TYPEOF(CurveWidth)) OR + (('IFC2X3.IFCDESCRIPTIVEMEASURE' IN TYPEOF(CurveWidth)) AND + (CurveWidth = 'by layer')); +END_ENTITY; + +ENTITY IfcCurveStyleFont; + Name : OPTIONAL IfcLabel; + PatternList : LIST [1:?] OF IfcCurveStyleFontPattern; +END_ENTITY; + +ENTITY IfcCurveStyleFontAndScaling; + Name : OPTIONAL IfcLabel; + CurveFont : IfcCurveStyleFontSelect; + CurveFontScaling : IfcPositiveRatioMeasure; +END_ENTITY; + +ENTITY IfcCurveStyleFontPattern; + VisibleSegmentLength : IfcLengthMeasure; + InvisibleSegmentLength : IfcPositiveLengthMeasure; + WHERE + WR01 : VisibleSegmentLength >= 0.; +END_ENTITY; + +ENTITY IfcDamperType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcDamperTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDamperTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDamperTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDateAndTime; + DateComponent : IfcCalendarDate; + TimeComponent : IfcLocalTime; +END_ENTITY; + +ENTITY IfcDefinedSymbol + SUBTYPE OF (IfcGeometricRepresentationItem); + Definition : IfcDefinedSymbolSelect; + Target : IfcCartesianTransformationOperator2D; +END_ENTITY; + +ENTITY IfcDerivedProfileDef + SUBTYPE OF (IfcProfileDef); + ParentProfile : IfcProfileDef; + Operator : IfcCartesianTransformationOperator2D; + Label : OPTIONAL IfcLabel; + WHERE + WR1 : SELF\IfcProfileDef.ProfileType = ParentProfile.ProfileType; +END_ENTITY; + +ENTITY IfcDerivedUnit; + Elements : SET [1:?] OF IfcDerivedUnitElement; + UnitType : IfcDerivedUnitEnum; + UserDefinedType : OPTIONAL IfcLabel; + DERIVE + Dimensions : IfcDimensionalExponents := IfcDeriveDimensionalExponents(SELF); + WHERE + WR1 : (SIZEOF (Elements) > 1) OR ((SIZEOF (Elements) = 1) AND (Elements[1].Exponent <> 1 )); + WR2 : (UnitType <> IfcDerivedUnitEnum.USERDEFINED) OR + ((UnitType = IfcDerivedUnitEnum.USERDEFINED) AND + (EXISTS(SELF.UserDefinedType))); +END_ENTITY; + +ENTITY IfcDerivedUnitElement; + Unit : IfcNamedUnit; + Exponent : INTEGER; +END_ENTITY; + +ENTITY IfcDiameterDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcDimensionCalloutRelationship + SUBTYPE OF (IfcDraughtingCalloutRelationship); + WHERE + WR11 : SELF\IfcDraughtingCalloutRelationship.Name IN ['primary','secondary']; + WR12 : SIZEOF(TYPEOF(SELF\IfcDraughtingCalloutRelationship.RelatingDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; + WR13 : NOT ('IFC2X3.IFCDIMENSIONCURVEDIRECTEDCALLOUT' + IN TYPEOF (SELF\IfcDraughtingCalloutRelationship.RelatedDraughtingCallout)); +END_ENTITY; + +ENTITY IfcDimensionCurve + SUBTYPE OF (IfcAnnotationCurveOccurrence); + INVERSE + AnnotatedBySymbols : SET [0:2] OF IfcTerminatorSymbol FOR AnnotatedCurve; + WHERE + WR51 : SIZEOF(USEDIN(SELF,'IFC2X3.IFCDRAUGHTINGCALLOUT.CONTENTS')) + >= 1; + WR52 : (SIZEOF(QUERY (Dct1 <* USEDIN(SELF,'IFC2X3.' + + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct1.Role = IfcDimensionExtentUsage.ORIGIN))) <= 1) + AND + (SIZEOF(QUERY (Dct2 <* USEDIN(SELF,'IFC2X3.' + + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct2.Role = IfcDimensionExtentUsage.TARGET))) <= 1); + WR53 : SIZEOF(QUERY (Dct <* AnnotatedBySymbols | + NOT('IFC2X3.IFCDIMENSIONCURVETERMINATOR' IN TYPEOF(Dct)))) + = 0; +END_ENTITY; + +ENTITY IfcDimensionCurveDirectedCallout + SUPERTYPE OF (ONEOF + (IfcAngularDimension + ,IfcDiameterDimension + ,IfcLinearDimension + ,IfcRadiusDimension)) + SUBTYPE OF (IfcDraughtingCallout); + WHERE + WR41 : SIZEOF(QUERY (Dc <* SELF\IfcDraughtingCallout.Contents | ( + 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF(Dc)))) + = 1; + WR42 : SIZEOF (QUERY (Dc <* SELF.contents | + ('IFC2X3.IFCPROJECTIONCURVE' IN + TYPEOF (Dc)))) <= 2; +END_ENTITY; + +ENTITY IfcDimensionCurveTerminator + SUBTYPE OF (IfcTerminatorSymbol); + Role : IfcDimensionExtentUsage; + WHERE + WR61 : 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF + (SELF\IfcTerminatorSymbol.AnnotatedCurve); +END_ENTITY; + +ENTITY IfcDimensionPair + SUBTYPE OF (IfcDraughtingCalloutRelationship); + WHERE + WR11 : SELF.Name IN ['chained','parallel']; + WR12 : SIZEOF(TYPEOF(SELF.RelatingDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; + WR13 : SIZEOF(TYPEOF(SELF.RelatedDraughtingCallout) * [ + 'IFC2X3.IFCANGULARDIMENSION', + 'IFC2X3.IFCDIAMETERDIMENSION', + 'IFC2X3.IFCLINEARDIMENSION', + 'IFC2X3.IFCRADIUSDIMENSION']) = 1; +END_ENTITY; + +ENTITY IfcDimensionalExponents; + LengthExponent : INTEGER; + MassExponent : INTEGER; + TimeExponent : INTEGER; + ElectricCurrentExponent : INTEGER; + ThermodynamicTemperatureExponent : INTEGER; + AmountOfSubstanceExponent : INTEGER; + LuminousIntensityExponent : INTEGER; +END_ENTITY; + +ENTITY IfcDirection + SUBTYPE OF (IfcGeometricRepresentationItem); + DirectionRatios : LIST [2:3] OF REAL; + DERIVE + Dim : IfcDimensionCount := HIINDEX(DirectionRatios); +END_ENTITY; + +ENTITY IfcDiscreteAccessory + SUBTYPE OF (IfcElementComponent); +END_ENTITY; + +ENTITY IfcDiscreteAccessoryType + SUPERTYPE OF (ONEOF + (IfcVibrationIsolatorType)) + SUBTYPE OF (IfcElementComponentType); +END_ENTITY; + +ENTITY IfcDistributionChamberElement + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcDistributionChamberElementType + SUBTYPE OF (IfcDistributionFlowElementType); + PredefinedType : IfcDistributionChamberElementTypeEnum; +END_ENTITY; + +ENTITY IfcDistributionControlElement + SUBTYPE OF (IfcDistributionElement); + ControlElementId : OPTIONAL IfcIdentifier; + INVERSE + AssignedToFlowElement : SET [0:1] OF IfcRelFlowControlElements FOR RelatedControlElements; +END_ENTITY; + +ENTITY IfcDistributionControlElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActuatorType + ,IfcAlarmType + ,IfcControllerType + ,IfcFlowInstrumentType + ,IfcSensorType)) + SUBTYPE OF (IfcDistributionElementType); +END_ENTITY; + +ENTITY IfcDistributionElement + SUPERTYPE OF (ONEOF + (IfcDistributionControlElement + ,IfcDistributionFlowElement)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcDistributionElementType + SUPERTYPE OF (ONEOF + (IfcDistributionControlElementType + ,IfcDistributionFlowElementType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcDistributionFlowElement + SUPERTYPE OF (ONEOF + (IfcDistributionChamberElement + ,IfcEnergyConversionDevice + ,IfcFlowController + ,IfcFlowFitting + ,IfcFlowMovingDevice + ,IfcFlowSegment + ,IfcFlowStorageDevice + ,IfcFlowTerminal + ,IfcFlowTreatmentDevice)) + SUBTYPE OF (IfcDistributionElement); + INVERSE + HasControlElements : SET [0:1] OF IfcRelFlowControlElements FOR RelatingFlowElement; +END_ENTITY; + +ENTITY IfcDistributionFlowElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDistributionChamberElementType + ,IfcEnergyConversionDeviceType + ,IfcFlowControllerType + ,IfcFlowFittingType + ,IfcFlowMovingDeviceType + ,IfcFlowSegmentType + ,IfcFlowStorageDeviceType + ,IfcFlowTerminalType + ,IfcFlowTreatmentDeviceType)) + SUBTYPE OF (IfcDistributionElementType); +END_ENTITY; + +ENTITY IfcDistributionPort + SUBTYPE OF (IfcPort); + FlowDirection : OPTIONAL IfcFlowDirectionEnum; +END_ENTITY; + +ENTITY IfcDocumentElectronicFormat; + FileExtension : OPTIONAL IfcLabel; + MimeContentType : OPTIONAL IfcLabel; + MimeSubtype : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(FileExtension) OR EXISTS(MimeContentType); +END_ENTITY; + +ENTITY IfcDocumentInformation; + DocumentId : IfcIdentifier; + Name : IfcLabel; + Description : OPTIONAL IfcText; + DocumentReferences : OPTIONAL SET [1:?] OF IfcDocumentReference; + Purpose : OPTIONAL IfcText; + IntendedUse : OPTIONAL IfcText; + Scope : OPTIONAL IfcText; + Revision : OPTIONAL IfcLabel; + DocumentOwner : OPTIONAL IfcActorSelect; + Editors : OPTIONAL SET [1:?] OF IfcActorSelect; + CreationTime : OPTIONAL IfcDateAndTime; + LastRevisionTime : OPTIONAL IfcDateAndTime; + ElectronicFormat : OPTIONAL IfcDocumentElectronicFormat; + ValidFrom : OPTIONAL IfcCalendarDate; + ValidUntil : OPTIONAL IfcCalendarDate; + Confidentiality : OPTIONAL IfcDocumentConfidentialityEnum; + Status : OPTIONAL IfcDocumentStatusEnum; + INVERSE + IsPointedTo : SET [0:?] OF IfcDocumentInformationRelationship FOR RelatedDocuments; + IsPointer : SET [0:1] OF IfcDocumentInformationRelationship FOR RelatingDocument; +END_ENTITY; + +ENTITY IfcDocumentInformationRelationship; + RelatingDocument : IfcDocumentInformation; + RelatedDocuments : SET [1:?] OF IfcDocumentInformation; + RelationshipType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcDocumentReference + SUBTYPE OF (IfcExternalReference); + INVERSE + ReferenceToDocument : SET [0:1] OF IfcDocumentInformation FOR DocumentReferences; + WHERE + WR1 : EXISTS(Name) XOR EXISTS(ReferenceToDocument[1]); +END_ENTITY; + +ENTITY IfcDoor + SUBTYPE OF (IfcBuildingElement); + OverallHeight : OPTIONAL IfcPositiveLengthMeasure; + OverallWidth : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcDoorLiningProperties + SUBTYPE OF (IfcPropertySetDefinition); + LiningDepth : OPTIONAL IfcPositiveLengthMeasure; + LiningThickness : OPTIONAL IfcPositiveLengthMeasure; + ThresholdDepth : OPTIONAL IfcPositiveLengthMeasure; + ThresholdThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomOffset : OPTIONAL IfcLengthMeasure; + LiningOffset : OPTIONAL IfcLengthMeasure; + ThresholdOffset : OPTIONAL IfcLengthMeasure; + CasingThickness : OPTIONAL IfcPositiveLengthMeasure; + CasingDepth : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); + WR32 : NOT(NOT(EXISTS(ThresholdDepth)) AND EXISTS(ThresholdThickness)); + WR33 : (EXISTS(TransomOffset) AND EXISTS(TransomThickness)) XOR + (NOT(EXISTS(TransomOffset)) AND NOT(EXISTS(TransomThickness))); + WR34 : (EXISTS(CasingDepth) AND EXISTS(CasingThickness)) XOR + (NOT(EXISTS(CasingDepth)) AND NOT(EXISTS(CasingThickness))); + WR35 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcDoorPanelProperties + SUBTYPE OF (IfcPropertySetDefinition); + PanelDepth : OPTIONAL IfcPositiveLengthMeasure; + PanelOperation : IfcDoorPanelOperationEnum; + PanelWidth : OPTIONAL IfcNormalisedRatioMeasure; + PanelPosition : IfcDoorPanelPositionEnum; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcDoorStyle + SUBTYPE OF (IfcTypeProduct); + OperationType : IfcDoorStyleOperationEnum; + ConstructionType : IfcDoorStyleConstructionEnum; + ParameterTakesPrecedence : BOOLEAN; + Sizeable : BOOLEAN; +END_ENTITY; + +ENTITY IfcDraughtingCallout + SUPERTYPE OF (ONEOF + (IfcDimensionCurveDirectedCallout + ,IfcStructuredDimensionCallout)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Contents : SET [1:?] OF IfcDraughtingCalloutElement; + INVERSE + IsRelatedFromCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatedDraughtingCallout; + IsRelatedToCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatingDraughtingCallout; +END_ENTITY; + +ENTITY IfcDraughtingCalloutRelationship + SUPERTYPE OF (ONEOF + (IfcDimensionCalloutRelationship + ,IfcDimensionPair)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + RelatingDraughtingCallout : IfcDraughtingCallout; + RelatedDraughtingCallout : IfcDraughtingCallout; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedColour + SUBTYPE OF (IfcPreDefinedColour); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['black','red','green','blue','yellow', + 'magenta','cyan','white','by layer']; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedCurveFont + SUBTYPE OF (IfcPreDefinedCurveFont); + WHERE + WR31 : SELF\IfcPredefinedItem.Name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted', + 'by layer']; +END_ENTITY; + +ENTITY IfcDraughtingPreDefinedTextFont + SUBTYPE OF (IfcPreDefinedTextFont); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['ISO 3098-1 font A','ISO 3098-1 font B']; +END_ENTITY; + +ENTITY IfcDuctFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcDuctFittingTypeEnum; + WHERE + WR2 : (PredefinedType <> IfcDuctFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDuctSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcDuctSegmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDuctSegmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcDuctSilencerType + SUBTYPE OF (IfcFlowTreatmentDeviceType); + PredefinedType : IfcDuctSilencerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcDuctSilencerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcDuctSilencerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcEdge + SUPERTYPE OF (ONEOF + (IfcEdgeCurve + ,IfcOrientedEdge + ,IfcSubedge)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + EdgeStart : IfcVertex; + EdgeEnd : IfcVertex; +END_ENTITY; + +ENTITY IfcEdgeCurve + SUBTYPE OF (IfcEdge); + EdgeGeometry : IfcCurve; + SameSense : BOOLEAN; +END_ENTITY; + +ENTITY IfcEdgeFeature + ABSTRACT SUPERTYPE OF (ONEOF + (IfcChamferEdgeFeature + ,IfcRoundedEdgeFeature)) + SUBTYPE OF (IfcFeatureElementSubtraction); + FeatureLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEdgeLoop + SUBTYPE OF (IfcLoop); + EdgeList : LIST [1:?] OF IfcOrientedEdge; + DERIVE + Ne : INTEGER := SIZEOF(EdgeList); + WHERE + WR1 : (EdgeList[1].EdgeStart) :=: (EdgeList[Ne].EdgeEnd); + WR2 : IfcLoopHeadToTail(SELF); +END_ENTITY; + +ENTITY IfcElectricApplianceType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcElectricApplianceTypeEnum; +END_ENTITY; + +ENTITY IfcElectricDistributionPoint + SUBTYPE OF (IfcFlowController); + DistributionPointFunction : IfcElectricDistributionPointFunctionEnum; + UserDefinedFunction : OPTIONAL IfcLabel; + WHERE + WR31 : (DistributionPointFunction <> IfcElectricDistributionPointFunctionEnum.USERDEFINED) OR + ((DistributionPointFunction = IfcElectricDistributionPointFunctionEnum.USERDEFINED) AND EXISTS(SELF\IfcElectricDistributionPoint.UserDefinedFunction)); +END_ENTITY; + +ENTITY IfcElectricFlowStorageDeviceType + SUBTYPE OF (IfcFlowStorageDeviceType); + PredefinedType : IfcElectricFlowStorageDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcElectricGeneratorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcElectricGeneratorTypeEnum; +END_ENTITY; + +ENTITY IfcElectricHeaterType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcElectricHeaterTypeEnum; +END_ENTITY; + +ENTITY IfcElectricMotorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcElectricMotorTypeEnum; +END_ENTITY; + +ENTITY IfcElectricTimeControlType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcElectricTimeControlTypeEnum; +END_ENTITY; + +ENTITY IfcElectricalBaseProperties + SUBTYPE OF (IfcEnergyProperties); + ElectricCurrentType : OPTIONAL IfcElectricCurrentEnum; + InputVoltage : IfcElectricVoltageMeasure; + InputFrequency : IfcFrequencyMeasure; + FullLoadCurrent : OPTIONAL IfcElectricCurrentMeasure; + MinimumCircuitCurrent : OPTIONAL IfcElectricCurrentMeasure; + MaximumPowerInput : OPTIONAL IfcPowerMeasure; + RatedPowerInput : OPTIONAL IfcPowerMeasure; + InputPhase : INTEGER; +END_ENTITY; + +ENTITY IfcElectricalCircuit + SUBTYPE OF (IfcSystem); +END_ENTITY; + +ENTITY IfcElectricalElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElement + ,IfcDistributionElement + ,IfcElectricalElement + ,IfcElementAssembly + ,IfcElementComponent + ,IfcEquipmentElement + ,IfcFeatureElement + ,IfcFurnishingElement + ,IfcTransportElement + ,IfcVirtualElement)) + SUBTYPE OF (IfcProduct); + Tag : OPTIONAL IfcIdentifier; + INVERSE + FillsVoids : SET [0:1] OF IfcRelFillsElement FOR RelatedBuildingElement; + ConnectedTo : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement; + HasCoverings : SET [0:?] OF IfcRelCoversBldgElements FOR RelatingBuildingElement; + HasProjections : SET [0:?] OF IfcRelProjectsElement FOR RelatingElement; + HasStructuralMember : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatingElement; + ReferencedInStructures : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatedElements; + HasPorts : SET [0:?] OF IfcRelConnectsPortToElement FOR RelatedElement; + HasOpenings : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement; + IsConnectionRealization : SET [0:?] OF IfcRelConnectsWithRealizingElements FOR RealizingElements; + ProvidesBoundaries : SET [0:?] OF IfcRelSpaceBoundary FOR RelatedBuildingElement; + ConnectedFrom : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement; + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; +END_ENTITY; + +ENTITY IfcElementAssembly + SUBTYPE OF (IfcElement); + AssemblyPlace : OPTIONAL IfcAssemblyPlaceEnum; + PredefinedType : IfcElementAssemblyTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcElementAssemblyTypeEnum.USERDEFINED) OR ((PredefinedType = IfcElementAssemblyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcElementComponent + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDiscreteAccessory + ,IfcFastener)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcElementComponentType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDiscreteAccessoryType + ,IfcFastenerType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcElementQuantity + SUBTYPE OF (IfcPropertySetDefinition); + MethodOfMeasurement : OPTIONAL IfcLabel; + Quantities : SET [1:?] OF IfcPhysicalQuantity; +END_ENTITY; + +ENTITY IfcElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuildingElementType + ,IfcDistributionElementType + ,IfcElementComponentType + ,IfcFurnishingElementType + ,IfcSpatialStructureElementType + ,IfcTransportElementType)) + SUBTYPE OF (IfcTypeProduct); + ElementType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcElementarySurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPlane)) + SUBTYPE OF (IfcSurface); + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := Position.Dim; +END_ENTITY; + +ENTITY IfcEllipse + SUBTYPE OF (IfcConic); + SemiAxis1 : IfcPositiveLengthMeasure; + SemiAxis2 : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEllipseProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + SemiAxis1 : IfcPositiveLengthMeasure; + SemiAxis2 : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcEnergyConversionDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcEnergyConversionDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirToAirHeatRecoveryType + ,IfcBoilerType + ,IfcChillerType + ,IfcCoilType + ,IfcCondenserType + ,IfcCooledBeamType + ,IfcCoolingTowerType + ,IfcElectricGeneratorType + ,IfcElectricMotorType + ,IfcEvaporativeCoolerType + ,IfcEvaporatorType + ,IfcHeatExchangerType + ,IfcHumidifierType + ,IfcMotorConnectionType + ,IfcSpaceHeaterType + ,IfcTransformerType + ,IfcTubeBundleType + ,IfcUnitaryEquipmentType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcEnergyProperties + SUPERTYPE OF (ONEOF + (IfcElectricalBaseProperties)) + SUBTYPE OF (IfcPropertySetDefinition); + EnergySequence : OPTIONAL IfcEnergySequenceEnum; + UserDefinedEnergySequence : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcEnvironmentalImpactValue + SUBTYPE OF (IfcAppliedValue); + ImpactType : IfcLabel; + Category : IfcEnvironmentalImpactCategoryEnum; + UserDefinedCategory : OPTIONAL IfcLabel; + WHERE + WR1 : (Category <> IfcEnvironmentalImpactCategoryEnum.USERDEFINED) OR + ((Category = IfcEnvironmentalImpactCategoryEnum.USERDEFINED) AND EXISTS(SELF\IfcEnvironmentalImpactValue.UserDefinedCategory)); +END_ENTITY; + +ENTITY IfcEquipmentElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcEquipmentStandard + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcEvaporativeCoolerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcEvaporativeCoolerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcEvaporativeCoolerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcEvaporativeCoolerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcEvaporatorType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcEvaporatorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcEvaporatorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcEvaporatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcExtendedMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + ExtendedProperties : SET [1:?] OF IfcProperty; + Description : OPTIONAL IfcText; + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcExternalReference + ABSTRACT SUPERTYPE OF (ONEOF + (IfcClassificationReference + ,IfcDocumentReference + ,IfcExternallyDefinedHatchStyle + ,IfcExternallyDefinedSurfaceStyle + ,IfcExternallyDefinedSymbol + ,IfcExternallyDefinedTextFont + ,IfcLibraryReference)); + Location : OPTIONAL IfcLabel; + ItemReference : OPTIONAL IfcIdentifier; + Name : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(ItemReference) OR EXISTS(Location) OR EXISTS(Name); +END_ENTITY; + +ENTITY IfcExternallyDefinedHatchStyle + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedSurfaceStyle + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedSymbol + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExternallyDefinedTextFont + SUBTYPE OF (IfcExternalReference); +END_ENTITY; + +ENTITY IfcExtrudedAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + ExtrudedDirection : IfcDirection; + Depth : IfcPositiveLengthMeasure; + WHERE + WR31 : IfcDotProduct(IfcRepresentationItem() || IfcGeometricRepresentationItem() || IfcDirection([0.0,0.0,1.0]), SELF.ExtrudedDirection) <> 0.0; +END_ENTITY; + +ENTITY IfcFace + SUPERTYPE OF (ONEOF + (IfcFaceSurface)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + Bounds : SET [1:?] OF IfcFaceBound; + WHERE + WR1 : SIZEOF(QUERY(temp <* Bounds | 'IFC2X3.IFCFACEOUTERBOUND' IN TYPEOF(temp))) <= 1; +END_ENTITY; + +ENTITY IfcFaceBasedSurfaceModel + SUBTYPE OF (IfcGeometricRepresentationItem); + FbsmFaces : SET [1:?] OF IfcConnectedFaceSet; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcFaceBound + SUPERTYPE OF (ONEOF + (IfcFaceOuterBound)) + SUBTYPE OF (IfcTopologicalRepresentationItem); + Bound : IfcLoop; + Orientation : BOOLEAN; +END_ENTITY; + +ENTITY IfcFaceOuterBound + SUBTYPE OF (IfcFaceBound); +END_ENTITY; + +ENTITY IfcFaceSurface + SUBTYPE OF (IfcFace); + FaceSurface : IfcSurface; + SameSense : BOOLEAN; +END_ENTITY; + +ENTITY IfcFacetedBrep + SUBTYPE OF (IfcManifoldSolidBrep); +END_ENTITY; + +ENTITY IfcFacetedBrepWithVoids + SUBTYPE OF (IfcManifoldSolidBrep); + Voids : SET [1:?] OF IfcClosedShell; +END_ENTITY; + +ENTITY IfcFailureConnectionCondition + SUBTYPE OF (IfcStructuralConnectionCondition); + TensionFailureX : OPTIONAL IfcForceMeasure; + TensionFailureY : OPTIONAL IfcForceMeasure; + TensionFailureZ : OPTIONAL IfcForceMeasure; + CompressionFailureX : OPTIONAL IfcForceMeasure; + CompressionFailureY : OPTIONAL IfcForceMeasure; + CompressionFailureZ : OPTIONAL IfcForceMeasure; +END_ENTITY; + +ENTITY IfcFanType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcFanTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFanTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFanTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFastener + SUPERTYPE OF (ONEOF + (IfcMechanicalFastener)) + SUBTYPE OF (IfcElementComponent); +END_ENTITY; + +ENTITY IfcFastenerType + SUPERTYPE OF (ONEOF + (IfcMechanicalFastenerType)) + SUBTYPE OF (IfcElementComponentType); +END_ENTITY; + +ENTITY IfcFeatureElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFeatureElementAddition + ,IfcFeatureElementSubtraction)) + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcFeatureElementAddition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcProjectionElement)) + SUBTYPE OF (IfcFeatureElement); + INVERSE + ProjectsElements : IfcRelProjectsElement FOR RelatedFeatureElement; +END_ENTITY; + +ENTITY IfcFeatureElementSubtraction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcEdgeFeature + ,IfcOpeningElement)) + SUBTYPE OF (IfcFeatureElement); + INVERSE + VoidsElements : IfcRelVoidsElement FOR RelatedOpeningElement; +END_ENTITY; + +ENTITY IfcFillAreaStyle + SUBTYPE OF (IfcPresentationStyle); + FillStyles : SET [1:?] OF IfcFillStyleSelect; + WHERE + WR11 : SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCCOLOUR' IN + TYPEOF(Style) + )) <= 1; + WR12 : SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN + TYPEOF(Style) + )) <= 1; + WR13 : (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN + TYPEOF(Style) + )) >= 1) + XOR + (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCFILLAREASTYLEHATCHING' IN + TYPEOF(Style) + )) >= 1) + XOR + (SIZEOF(QUERY(Style <* SELF.FillStyles | + 'IFC2X3.IFCFILLAREASTYLETILES' IN + TYPEOF(Style) + )) >= 1); +END_ENTITY; + +ENTITY IfcFillAreaStyleHatching + SUBTYPE OF (IfcGeometricRepresentationItem); + HatchLineAppearance : IfcCurveStyle; + StartOfNextHatchLine : IfcHatchLineDistanceSelect; + PointOfReferenceHatchLine : OPTIONAL IfcCartesianPoint; + PatternStart : OPTIONAL IfcCartesianPoint; + HatchLineAngle : IfcPlaneAngleMeasure; + WHERE + WR21 : NOT( + 'IFC2X3.IFCTWODIRECTIONREPEATFACTOR' + IN TYPEOF(StartOfNextHatchLine) + ); + WR22 : NOT(EXISTS(PatternStart)) + OR (PatternStart.Dim = 2); + WR23 : NOT(EXISTS(PointOfReferenceHatchLine)) + OR (PointOfReferenceHatchLine.Dim = 2); +END_ENTITY; + +ENTITY IfcFillAreaStyleTileSymbolWithStyle + SUBTYPE OF (IfcGeometricRepresentationItem); + Symbol : IfcAnnotationSymbolOccurrence; +END_ENTITY; + +ENTITY IfcFillAreaStyleTiles + SUBTYPE OF (IfcGeometricRepresentationItem); + TilingPattern : IfcOneDirectionRepeatFactor; + Tiles : SET [1:?] OF IfcFillAreaStyleTileShapeSelect; + TilingScale : IfcPositiveRatioMeasure; +END_ENTITY; + +ENTITY IfcFilterType + SUBTYPE OF (IfcFlowTreatmentDeviceType); + PredefinedType : IfcFilterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFilterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFilterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFireSuppressionTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcFireSuppressionTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcFlowController + SUPERTYPE OF (ONEOF + (IfcElectricDistributionPoint)) + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowControllerType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirTerminalBoxType + ,IfcDamperType + ,IfcElectricTimeControlType + ,IfcFlowMeterType + ,IfcProtectiveDeviceType + ,IfcSwitchingDeviceType + ,IfcValveType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowFitting + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowFittingType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCableCarrierFittingType + ,IfcDuctFittingType + ,IfcJunctionBoxType + ,IfcPipeFittingType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowInstrumentType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcFlowInstrumentTypeEnum; +END_ENTITY; + +ENTITY IfcFlowMeterType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcFlowMeterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFlowMeterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcFlowMeterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcFlowMovingDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowMovingDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCompressorType + ,IfcFanType + ,IfcPumpType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowSegment + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowSegmentType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCableCarrierSegmentType + ,IfcCableSegmentType + ,IfcDuctSegmentType + ,IfcPipeSegmentType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowStorageDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowStorageDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcElectricFlowStorageDeviceType + ,IfcTankType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowTerminal + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowTerminalType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAirTerminalType + ,IfcElectricApplianceType + ,IfcElectricHeaterType + ,IfcFireSuppressionTerminalType + ,IfcGasTerminalType + ,IfcLampType + ,IfcLightFixtureType + ,IfcOutletType + ,IfcSanitaryTerminalType + ,IfcStackTerminalType + ,IfcWasteTerminalType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFlowTreatmentDevice + SUBTYPE OF (IfcDistributionFlowElement); +END_ENTITY; + +ENTITY IfcFlowTreatmentDeviceType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDuctSilencerType + ,IfcFilterType)) + SUBTYPE OF (IfcDistributionFlowElementType); +END_ENTITY; + +ENTITY IfcFluidFlowProperties + SUBTYPE OF (IfcPropertySetDefinition); + PropertySource : IfcPropertySourceEnum; + FlowConditionTimeSeries : OPTIONAL IfcTimeSeries; + VelocityTimeSeries : OPTIONAL IfcTimeSeries; + FlowrateTimeSeries : OPTIONAL IfcTimeSeries; + Fluid : IfcMaterial; + PressureTimeSeries : OPTIONAL IfcTimeSeries; + UserDefinedPropertySource : OPTIONAL IfcLabel; + TemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; + WetBulbTemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; + WetBulbTemperatureTimeSeries : OPTIONAL IfcTimeSeries; + TemperatureTimeSeries : OPTIONAL IfcTimeSeries; + FlowrateSingleValue : OPTIONAL IfcDerivedMeasureValue; + FlowConditionSingleValue : OPTIONAL IfcPositiveRatioMeasure; + VelocitySingleValue : OPTIONAL IfcLinearVelocityMeasure; + PressureSingleValue : OPTIONAL IfcPressureMeasure; +END_ENTITY; + +ENTITY IfcFooting + SUBTYPE OF (IfcBuildingElement); + PredefinedType : IfcFootingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcFootingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFootingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcFuelProperties + SUBTYPE OF (IfcMaterialProperties); + CombustionTemperature : OPTIONAL IfcThermodynamicTemperatureMeasure; + CarbonContent : OPTIONAL IfcPositiveRatioMeasure; + LowerHeatingValue : OPTIONAL IfcHeatingValueMeasure; + HigherHeatingValue : OPTIONAL IfcHeatingValueMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcFurnishingElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcFurnishingElementType + SUPERTYPE OF (ONEOF + (IfcFurnitureType + ,IfcSystemFurnitureElementType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcFurnitureStandard + SUBTYPE OF (IfcControl); +END_ENTITY; + +ENTITY IfcFurnitureType + SUBTYPE OF (IfcFurnishingElementType); + AssemblyPlace : IfcAssemblyPlaceEnum; +END_ENTITY; + +ENTITY IfcGasTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcGasTerminalTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcGasTerminalTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcGasTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcGeneralMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + MolecularWeight : OPTIONAL IfcMolecularWeightMeasure; + Porosity : OPTIONAL IfcNormalisedRatioMeasure; + MassDensity : OPTIONAL IfcMassDensityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcGeneralProfileProperties + SUPERTYPE OF (ONEOF + (IfcStructuralProfileProperties)) + SUBTYPE OF (IfcProfileProperties); + PhysicalWeight : OPTIONAL IfcMassPerLengthMeasure; + Perimeter : OPTIONAL IfcPositiveLengthMeasure; + MinimumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; + MaximumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; + CrossSectionArea : OPTIONAL IfcAreaMeasure; + WHERE + WR1 : NOT(EXISTS(CrossSectionArea)) OR (CrossSectionArea > 0.); +END_ENTITY; + +ENTITY IfcGeometricCurveSet + SUBTYPE OF (IfcGeometricSet); + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGeometricSet.Elements | + 'IFC2X3.IFCSURFACE' IN TYPEOF(Temp))) = 0; +END_ENTITY; + +ENTITY IfcGeometricRepresentationContext + SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationSubContext)) + SUBTYPE OF (IfcRepresentationContext); + CoordinateSpaceDimension : IfcDimensionCount; + Precision : OPTIONAL REAL; + WorldCoordinateSystem : IfcAxis2Placement; + TrueNorth : OPTIONAL IfcDirection; + INVERSE + HasSubContexts : SET [0:?] OF IfcGeometricRepresentationSubContext FOR ParentContext; +END_ENTITY; + +ENTITY IfcGeometricRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotationFillArea + ,IfcAnnotationSurface + ,IfcBooleanResult + ,IfcBoundingBox + ,IfcCartesianTransformationOperator + ,IfcCompositeCurveSegment + ,IfcCsgPrimitive3D + ,IfcCurve + ,IfcDefinedSymbol + ,IfcDirection + ,IfcDraughtingCallout + ,IfcFaceBasedSurfaceModel + ,IfcFillAreaStyleHatching + ,IfcFillAreaStyleTileSymbolWithStyle + ,IfcFillAreaStyleTiles + ,IfcGeometricSet + ,IfcHalfSpaceSolid + ,IfcLightSource + ,IfcOneDirectionRepeatFactor + ,IfcPlacement + ,IfcPlanarExtent + ,IfcPoint + ,IfcSectionedSpine + ,IfcShellBasedSurfaceModel + ,IfcSolidModel + ,IfcSurface + ,IfcTextLiteral + ,IfcVector)) + SUBTYPE OF (IfcRepresentationItem); +END_ENTITY; + +ENTITY IfcGeometricRepresentationSubContext + SUBTYPE OF (IfcGeometricRepresentationContext); + ParentContext : IfcGeometricRepresentationContext; + TargetScale : OPTIONAL IfcPositiveRatioMeasure; + TargetView : IfcGeometricProjectionEnum; + UserDefinedTargetView : OPTIONAL IfcLabel; + DERIVE + SELF\IfcGeometricRepresentationContext.WorldCoordinateSystem : IfcAxis2Placement := ParentContext.WorldCoordinateSystem; + SELF\IfcGeometricRepresentationContext.CoordinateSpaceDimension : IfcDimensionCount := ParentContext.CoordinateSpaceDimension; + SELF\IfcGeometricRepresentationContext.TrueNorth : IfcDirection := NVL(ParentContext.TrueNorth,SELF.WorldCoordinateSystem.P[2]); + SELF\IfcGeometricRepresentationContext.Precision : REAL := NVL(ParentContext.Precision,1.E-5); + WHERE + WR31 : NOT('IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(ParentContext)); + WR32 : (TargetView <> IfcGeometricProjectionEnum.USERDEFINED) OR + ((TargetView = IfcGeometricProjectionEnum.USERDEFINED) AND + EXISTS(UserDefinedTargetView)); +END_ENTITY; + +ENTITY IfcGeometricSet + SUPERTYPE OF (ONEOF + (IfcGeometricCurveSet)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Elements : SET [1:?] OF IfcGeometricSetSelect; + DERIVE + Dim : IfcDimensionCount := Elements[1].Dim; + WHERE + WR21 : SIZEOF(QUERY(Temp <* Elements | + Temp.Dim <> Elements[1].Dim)) + = 0; +END_ENTITY; + +ENTITY IfcGrid + SUBTYPE OF (IfcProduct); + UAxes : LIST [1:?] OF UNIQUE IfcGridAxis; + VAxes : LIST [1:?] OF UNIQUE IfcGridAxis; + WAxes : OPTIONAL LIST [1:?] OF UNIQUE IfcGridAxis; + INVERSE + ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; + WHERE + WR41 : EXISTS(SELF\IfcProduct.ObjectPlacement); +END_ENTITY; + +ENTITY IfcGridAxis; + AxisTag : OPTIONAL IfcLabel; + AxisCurve : IfcCurve; + SameSense : IfcBoolean; + INVERSE + PartOfW : SET [0:1] OF IfcGrid FOR WAxes; + PartOfV : SET [0:1] OF IfcGrid FOR VAxes; + PartOfU : SET [0:1] OF IfcGrid FOR UAxes; + HasIntersections : SET [0:?] OF IfcVirtualGridIntersection FOR IntersectingAxes; + WHERE + WR1 : AxisCurve.Dim = 2; + WR2 : (SIZEOF(PartOfU) = 1) XOR (SIZEOF(PartOfV) = 1) XOR (SIZEOF(PartOfW) = 1); +END_ENTITY; + +ENTITY IfcGridPlacement + SUBTYPE OF (IfcObjectPlacement); + PlacementLocation : IfcVirtualGridIntersection; + PlacementRefDirection : OPTIONAL IfcVirtualGridIntersection; +END_ENTITY; + +ENTITY IfcGroup + SUPERTYPE OF (ONEOF + (IfcAsset + ,IfcCondition + ,IfcInventory + ,IfcStructuralLoadGroup + ,IfcStructuralResultGroup + ,IfcSystem + ,IfcZone)) + SUBTYPE OF (IfcObject); + INVERSE + IsGroupedBy : IfcRelAssignsToGroup FOR RelatingGroup; +END_ENTITY; + +ENTITY IfcHalfSpaceSolid + SUPERTYPE OF (ONEOF + (IfcBoxedHalfSpace + ,IfcPolygonalBoundedHalfSpace)) + SUBTYPE OF (IfcGeometricRepresentationItem); + BaseSurface : IfcSurface; + AgreementFlag : BOOLEAN; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcHeatExchangerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcHeatExchangerTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcHeatExchangerTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcHeatExchangerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcHumidifierType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcHumidifierTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcHumidifierTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcHumidifierTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcHygroscopicMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + UpperVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; + LowerVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; + IsothermalMoistureCapacity : OPTIONAL IfcIsothermalMoistureCapacityMeasure; + VaporPermeability : OPTIONAL IfcVaporPermeabilityMeasure; + MoistureDiffusivity : OPTIONAL IfcMoistureDiffusivityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcIShapeProfileDef + SUPERTYPE OF (ONEOF + (IfcAsymmetricIShapeProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + OverallWidth : IfcPositiveLengthMeasure; + OverallDepth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : FlangeThickness < (OverallDepth / 2.); + WR2 : WebThickness < OverallWidth; + WR3 : NOT(EXISTS(FilletRadius)) OR + ((FilletRadius <= (OverallWidth - WebThickness)/2.) AND + (FilletRadius <= (OverallDepth - (2. * FlangeThickness))/2.)); +END_ENTITY; + +ENTITY IfcImageTexture + SUBTYPE OF (IfcSurfaceTexture); + UrlReference : IfcIdentifier; +END_ENTITY; + +ENTITY IfcInventory + SUBTYPE OF (IfcGroup); + InventoryType : IfcInventoryTypeEnum; + Jurisdiction : IfcActorSelect; + ResponsiblePersons : SET [1:?] OF IfcPerson; + LastUpdateDate : IfcCalendarDate; + CurrentValue : OPTIONAL IfcCostValue; + OriginalValue : OPTIONAL IfcCostValue; + WHERE + WR41 : SIZEOF(QUERY(temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | + NOT( ('IFC2X3.IFCSPACE' IN TYPEOF (temp)) OR + ('IFC2X3.IFCASSET' IN TYPEOF (temp)) OR + ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp)) + ))) = 0; +END_ENTITY; + +ENTITY IfcIrregularTimeSeries + SUBTYPE OF (IfcTimeSeries); + Values : LIST [1:?] OF IfcIrregularTimeSeriesValue; +END_ENTITY; + +ENTITY IfcIrregularTimeSeriesValue; + TimeStamp : IfcDateTimeSelect; + ListValues : LIST [1:?] OF IfcValue; +END_ENTITY; + +ENTITY IfcJunctionBoxType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcJunctionBoxTypeEnum; +END_ENTITY; + +ENTITY IfcLShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + Width : OPTIONAL IfcPositiveLengthMeasure; + Thickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + LegSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : Thickness < Depth; + WR22 : NOT(EXISTS(Width)) OR (Thickness < Width); +END_ENTITY; + +ENTITY IfcLaborResource + SUBTYPE OF (IfcConstructionResource); + SkillSet : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcLampType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcLampTypeEnum; +END_ENTITY; + +ENTITY IfcLibraryInformation; + Name : IfcLabel; + Version : OPTIONAL IfcLabel; + Publisher : OPTIONAL IfcOrganization; + VersionDate : OPTIONAL IfcCalendarDate; + LibraryReference : OPTIONAL SET [1:?] OF IfcLibraryReference; +END_ENTITY; + +ENTITY IfcLibraryReference + SUBTYPE OF (IfcExternalReference); + INVERSE + ReferenceIntoLibrary : SET [0:1] OF IfcLibraryInformation FOR LibraryReference; +END_ENTITY; + +ENTITY IfcLightDistributionData; + MainPlaneAngle : IfcPlaneAngleMeasure; + SecondaryPlaneAngle : LIST [1:?] OF IfcPlaneAngleMeasure; + LuminousIntensity : LIST [1:?] OF IfcLuminousIntensityDistributionMeasure; +END_ENTITY; + +ENTITY IfcLightFixtureType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcLightFixtureTypeEnum; +END_ENTITY; + +ENTITY IfcLightIntensityDistribution; + LightDistributionCurve : IfcLightDistributionCurveEnum; + DistributionData : LIST [1:?] OF IfcLightDistributionData; +END_ENTITY; + +ENTITY IfcLightSource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcLightSourceAmbient + ,IfcLightSourceDirectional + ,IfcLightSourceGoniometric + ,IfcLightSourcePositional)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Name : OPTIONAL IfcLabel; + LightColour : IfcColourRgb; + AmbientIntensity : OPTIONAL IfcNormalisedRatioMeasure; + Intensity : OPTIONAL IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcLightSourceAmbient + SUBTYPE OF (IfcLightSource); +END_ENTITY; + +ENTITY IfcLightSourceDirectional + SUBTYPE OF (IfcLightSource); + Orientation : IfcDirection; +END_ENTITY; + +ENTITY IfcLightSourceGoniometric + SUBTYPE OF (IfcLightSource); + Position : IfcAxis2Placement3D; + ColourAppearance : OPTIONAL IfcColourRgb; + ColourTemperature : IfcThermodynamicTemperatureMeasure; + LuminousFlux : IfcLuminousFluxMeasure; + LightEmissionSource : IfcLightEmissionSourceEnum; + LightDistributionDataSource : IfcLightDistributionDataSourceSelect; +END_ENTITY; + +ENTITY IfcLightSourcePositional + SUPERTYPE OF (ONEOF + (IfcLightSourceSpot)) + SUBTYPE OF (IfcLightSource); + Position : IfcCartesianPoint; + Radius : IfcPositiveLengthMeasure; + ConstantAttenuation : IfcReal; + DistanceAttenuation : IfcReal; + QuadricAttenuation : IfcReal; +END_ENTITY; + +ENTITY IfcLightSourceSpot + SUBTYPE OF (IfcLightSourcePositional); + Orientation : IfcDirection; + ConcentrationExponent : OPTIONAL IfcReal; + SpreadAngle : IfcPositivePlaneAngleMeasure; + BeamWidthAngle : IfcPositivePlaneAngleMeasure; +END_ENTITY; + +ENTITY IfcLine + SUBTYPE OF (IfcCurve); + Pnt : IfcCartesianPoint; + Dir : IfcVector; + WHERE + WR1 : Dir.Dim = Pnt.Dim; +END_ENTITY; + +ENTITY IfcLinearDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcLocalPlacement + SUBTYPE OF (IfcObjectPlacement); + PlacementRelTo : OPTIONAL IfcObjectPlacement; + RelativePlacement : IfcAxis2Placement; + WHERE + WR21 : IfcCorrectLocalPlacement(RelativePlacement, PlacementRelTo); +END_ENTITY; + +ENTITY IfcLocalTime; + HourComponent : IfcHourInDay; + MinuteComponent : OPTIONAL IfcMinuteInHour; + SecondComponent : OPTIONAL IfcSecondInMinute; + Zone : OPTIONAL IfcCoordinatedUniversalTimeOffset; + DaylightSavingOffset : OPTIONAL IfcDaylightSavingHour; + WHERE + WR21 : IfcValidTime (SELF); +END_ENTITY; + +ENTITY IfcLoop + SUPERTYPE OF (ONEOF + (IfcEdgeLoop + ,IfcPolyLoop + ,IfcVertexLoop)) + SUBTYPE OF (IfcTopologicalRepresentationItem); +END_ENTITY; + +ENTITY IfcManifoldSolidBrep + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFacetedBrep + ,IfcFacetedBrepWithVoids)) + SUBTYPE OF (IfcSolidModel); + Outer : IfcClosedShell; +END_ENTITY; + +ENTITY IfcMappedItem + SUBTYPE OF (IfcRepresentationItem); + MappingSource : IfcRepresentationMap; + MappingTarget : IfcCartesianTransformationOperator; +END_ENTITY; + +ENTITY IfcMaterial; + Name : IfcLabel; + INVERSE + HasRepresentation : SET [0:1] OF IfcMaterialDefinitionRepresentation FOR RepresentedMaterial; + ClassifiedAs : SET [0:1] OF IfcMaterialClassificationRelationship FOR ClassifiedMaterial; +END_ENTITY; + +ENTITY IfcMaterialClassificationRelationship; + MaterialClassifications : SET [1:?] OF IfcClassificationNotationSelect; + ClassifiedMaterial : IfcMaterial; +END_ENTITY; + +ENTITY IfcMaterialDefinitionRepresentation + SUBTYPE OF (IfcProductRepresentation); + RepresentedMaterial : IfcMaterial; + WHERE + WR11 : SIZEOF(QUERY(temp <* Representations | + (NOT('IFC2X3.IFCSTYLEDREPRESENTATION' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcMaterialLayer; + Material : OPTIONAL IfcMaterial; + LayerThickness : IfcPositiveLengthMeasure; + IsVentilated : OPTIONAL IfcLogical; + INVERSE + ToMaterialLayerSet : IfcMaterialLayerSet FOR MaterialLayers; +END_ENTITY; + +ENTITY IfcMaterialLayerSet; + MaterialLayers : LIST [1:?] OF IfcMaterialLayer; + LayerSetName : OPTIONAL IfcLabel; + DERIVE + TotalThickness : IfcLengthMeasure := IfcMlsTotalThickness(SELF); +END_ENTITY; + +ENTITY IfcMaterialLayerSetUsage; + ForLayerSet : IfcMaterialLayerSet; + LayerSetDirection : IfcLayerSetDirectionEnum; + DirectionSense : IfcDirectionSenseEnum; + OffsetFromReferenceLine : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcMaterialList; + Materials : LIST [1:?] OF IfcMaterial; +END_ENTITY; + +ENTITY IfcMaterialProperties + ABSTRACT SUPERTYPE OF (ONEOF + (IfcExtendedMaterialProperties + ,IfcFuelProperties + ,IfcGeneralMaterialProperties + ,IfcHygroscopicMaterialProperties + ,IfcMechanicalMaterialProperties + ,IfcOpticalMaterialProperties + ,IfcProductsOfCombustionProperties + ,IfcThermalMaterialProperties + ,IfcWaterProperties)); + Material : IfcMaterial; +END_ENTITY; + +ENTITY IfcMeasureWithUnit; + ValueComponent : IfcValue; + UnitComponent : IfcUnit; +END_ENTITY; + +ENTITY IfcMechanicalConcreteMaterialProperties + SUBTYPE OF (IfcMechanicalMaterialProperties); + CompressiveStrength : OPTIONAL IfcPressureMeasure; + MaxAggregateSize : OPTIONAL IfcPositiveLengthMeasure; + AdmixturesDescription : OPTIONAL IfcText; + Workability : OPTIONAL IfcText; + ProtectivePoreRatio : OPTIONAL IfcNormalisedRatioMeasure; + WaterImpermeability : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcMechanicalFastener + SUBTYPE OF (IfcFastener); + NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; + NominalLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcMechanicalFastenerType + SUBTYPE OF (IfcFastenerType); +END_ENTITY; + +ENTITY IfcMechanicalMaterialProperties + SUPERTYPE OF (ONEOF + (IfcMechanicalConcreteMaterialProperties + ,IfcMechanicalSteelMaterialProperties)) + SUBTYPE OF (IfcMaterialProperties); + DynamicViscosity : OPTIONAL IfcDynamicViscosityMeasure; + YoungModulus : OPTIONAL IfcModulusOfElasticityMeasure; + ShearModulus : OPTIONAL IfcModulusOfElasticityMeasure; + PoissonRatio : OPTIONAL IfcPositiveRatioMeasure; + ThermalExpansionCoefficient : OPTIONAL IfcThermalExpansionCoefficientMeasure; + UNIQUE + UR11 : Material; + WHERE + WR21 : NOT(EXISTS(YoungModulus)) OR (YoungModulus >= 0.0); + WR22 : NOT(EXISTS(ShearModulus)) OR (ShearModulus >= 0.0); +END_ENTITY; + +ENTITY IfcMechanicalSteelMaterialProperties + SUBTYPE OF (IfcMechanicalMaterialProperties); + YieldStress : OPTIONAL IfcPressureMeasure; + UltimateStress : OPTIONAL IfcPressureMeasure; + UltimateStrain : OPTIONAL IfcPositiveRatioMeasure; + HardeningModule : OPTIONAL IfcModulusOfElasticityMeasure; + ProportionalStress : OPTIONAL IfcPressureMeasure; + PlasticStrain : OPTIONAL IfcPositiveRatioMeasure; + Relaxations : OPTIONAL SET [1:?] OF IfcRelaxation; + WHERE + WR31 : NOT(EXISTS(YieldStress)) OR (YieldStress >= 0.); + WR32 : NOT(EXISTS(UltimateStress)) OR (UltimateStress >= 0.); + WR33 : NOT(EXISTS(HardeningModule)) OR (HardeningModule >= 0.); + WR34 : NOT(EXISTS(ProportionalStress)) OR (ProportionalStress >= 0.); +END_ENTITY; + +ENTITY IfcMember + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcMemberType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcMemberTypeEnum; +END_ENTITY; + +ENTITY IfcMetric + SUBTYPE OF (IfcConstraint); + Benchmark : IfcBenchmarkEnum; + ValueSource : OPTIONAL IfcLabel; + DataValue : IfcMetricValueSelect; +END_ENTITY; + +ENTITY IfcMonetaryUnit; + Currency : IfcCurrencyEnum; +END_ENTITY; + +ENTITY IfcMotorConnectionType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcMotorConnectionTypeEnum; +END_ENTITY; + +ENTITY IfcMove + SUBTYPE OF (IfcTask); + MoveFrom : IfcSpatialStructureElement; + MoveTo : IfcSpatialStructureElement; + PunchList : OPTIONAL LIST [1:?] OF UNIQUE IfcText; + WHERE + WR1 : SIZEOF(SELF\IfcProcess.OperatesOn) >= 1; + WR2 : SIZEOF(QUERY(temp <* OperatesOn | + SIZEOF(QUERY(temp2 <* temp.RelatedObjects | + ('IFC2X3.IFCACTOR' IN TYPEOF (temp2)) OR + ('IFC2X3.IFCEQUIPMENTELEMENT' IN TYPEOF (temp2)) OR + ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp2)) )) >=1 + )) >= 1; + WR3 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcNamedUnit + ABSTRACT SUPERTYPE OF (ONEOF + (IfcContextDependentUnit + ,IfcConversionBasedUnit + ,IfcSIUnit)); + Dimensions : IfcDimensionalExponents; + UnitType : IfcUnitEnum; + WHERE + WR1 : IfcCorrectDimensions (SELF.UnitType, SELF.Dimensions); +END_ENTITY; + +ENTITY IfcObject + ABSTRACT SUPERTYPE OF (ONEOF + (IfcActor + ,IfcControl + ,IfcGroup + ,IfcProcess + ,IfcProduct + ,IfcProject + ,IfcResource)) + SUBTYPE OF (IfcObjectDefinition); + ObjectType : OPTIONAL IfcLabel; + INVERSE + IsDefinedBy : SET [0:?] OF IfcRelDefines FOR RelatedObjects; + WHERE + WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X3.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1; +END_ENTITY; + +ENTITY IfcObjectDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcObject + ,IfcTypeObject)) + SUBTYPE OF (IfcRoot); + INVERSE + HasAssignments : SET [0:?] OF IfcRelAssigns FOR RelatedObjects; + IsDecomposedBy : SET [0:?] OF IfcRelDecomposes FOR RelatingObject; + Decomposes : SET [0:1] OF IfcRelDecomposes FOR RelatedObjects; + HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; +END_ENTITY; + +ENTITY IfcObjectPlacement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGridPlacement + ,IfcLocalPlacement)); + INVERSE + PlacesObject : SET [1:1] OF IfcProduct FOR ObjectPlacement; + ReferencedByPlacements : SET [0:?] OF IfcLocalPlacement FOR PlacementRelTo; +END_ENTITY; + +ENTITY IfcObjective + SUBTYPE OF (IfcConstraint); + BenchmarkValues : OPTIONAL IfcMetric; + ResultValues : OPTIONAL IfcMetric; + ObjectiveQualifier : IfcObjectiveEnum; + UserDefinedQualifier : OPTIONAL IfcLabel; + WHERE + WR21 : (ObjectiveQualifier <> IfcObjectiveEnum.USERDEFINED) OR + ((ObjectiveQualifier = IfcObjectiveEnum.USERDEFINED) AND EXISTS(SELF\IfcObjective.UserDefinedQualifier)); +END_ENTITY; + +ENTITY IfcOccupant + SUBTYPE OF (IfcActor); + PredefinedType : IfcOccupantTypeEnum; + WHERE + WR31 : NOT(PredefinedType = IfcOccupantTypeEnum.USERDEFINED) + OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcOffsetCurve2D + SUBTYPE OF (IfcCurve); + BasisCurve : IfcCurve; + Distance : IfcLengthMeasure; + SelfIntersect : LOGICAL; + WHERE + WR1 : BasisCurve.Dim = 2; +END_ENTITY; + +ENTITY IfcOffsetCurve3D + SUBTYPE OF (IfcCurve); + BasisCurve : IfcCurve; + Distance : IfcLengthMeasure; + SelfIntersect : LOGICAL; + RefDirection : IfcDirection; + WHERE + WR1 : BasisCurve.Dim = 3; +END_ENTITY; + +ENTITY IfcOneDirectionRepeatFactor + SUPERTYPE OF (ONEOF + (IfcTwoDirectionRepeatFactor)) + SUBTYPE OF (IfcGeometricRepresentationItem); + RepeatFactor : IfcVector; +END_ENTITY; + +ENTITY IfcOpenShell + SUBTYPE OF (IfcConnectedFaceSet); +END_ENTITY; + +ENTITY IfcOpeningElement + SUBTYPE OF (IfcFeatureElementSubtraction); + INVERSE + HasFillings : SET [0:?] OF IfcRelFillsElement FOR RelatingOpeningElement; +END_ENTITY; + +ENTITY IfcOpticalMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + VisibleTransmittance : OPTIONAL IfcPositiveRatioMeasure; + SolarTransmittance : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrTransmittance : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrEmissivityBack : OPTIONAL IfcPositiveRatioMeasure; + ThermalIrEmissivityFront : OPTIONAL IfcPositiveRatioMeasure; + VisibleReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; + VisibleReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; + SolarReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; + SolarReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcOrderAction + SUBTYPE OF (IfcTask); + ActionID : IfcIdentifier; + UNIQUE + UR2 : ActionID; +END_ENTITY; + +ENTITY IfcOrganization; + Id : OPTIONAL IfcIdentifier; + Name : IfcLabel; + Description : OPTIONAL IfcText; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; + Addresses : OPTIONAL LIST [1:?] OF IfcAddress; + INVERSE + IsRelatedBy : SET [0:?] OF IfcOrganizationRelationship FOR RelatedOrganizations; + Relates : SET [0:?] OF IfcOrganizationRelationship FOR RelatingOrganization; + Engages : SET [0:?] OF IfcPersonAndOrganization FOR TheOrganization; +END_ENTITY; + +ENTITY IfcOrganizationRelationship; + Name : IfcLabel; + Description : OPTIONAL IfcText; + RelatingOrganization : IfcOrganization; + RelatedOrganizations : SET [1:?] OF IfcOrganization; +END_ENTITY; + +ENTITY IfcOrientedEdge + SUBTYPE OF (IfcEdge); + EdgeElement : IfcEdge; + Orientation : BOOLEAN; + DERIVE + SELF\IfcEdge.EdgeStart : IfcVertex := IfcBooleanChoose + (Orientation, EdgeElement.EdgeStart, EdgeElement.EdgeEnd); + SELF\IfcEdge.EdgeEnd : IfcVertex := IfcBooleanChoose + (Orientation, EdgeElement.EdgeEnd, EdgeElement.EdgeStart); + WHERE + WR1 : NOT('IFC2X3.IFCORIENTEDEDGE' IN TYPEOF(EdgeElement)); +END_ENTITY; + +ENTITY IfcOutletType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcOutletTypeEnum; +END_ENTITY; + +ENTITY IfcOwnerHistory; + OwningUser : IfcPersonAndOrganization; + OwningApplication : IfcApplication; + State : OPTIONAL IfcStateEnum; + ChangeAction : IfcChangeActionEnum; + LastModifiedDate : OPTIONAL IfcTimeStamp; + LastModifyingUser : OPTIONAL IfcPersonAndOrganization; + LastModifyingApplication : OPTIONAL IfcApplication; + CreationDate : IfcTimeStamp; +END_ENTITY; + +ENTITY IfcParameterizedProfileDef + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCShapeProfileDef + ,IfcCircleProfileDef + ,IfcCraneRailAShapeProfileDef + ,IfcCraneRailFShapeProfileDef + ,IfcEllipseProfileDef + ,IfcIShapeProfileDef + ,IfcLShapeProfileDef + ,IfcRectangleProfileDef + ,IfcTShapeProfileDef + ,IfcTrapeziumProfileDef + ,IfcUShapeProfileDef + ,IfcZShapeProfileDef)) + SUBTYPE OF (IfcProfileDef); + Position : IfcAxis2Placement2D; +END_ENTITY; + +ENTITY IfcPath + SUBTYPE OF (IfcTopologicalRepresentationItem); + EdgeList : LIST [1:?] OF UNIQUE IfcOrientedEdge; + WHERE + WR1 : IfcPathHeadToTail(SELF); +END_ENTITY; + +ENTITY IfcPerformanceHistory + SUBTYPE OF (IfcControl); + LifeCyclePhase : IfcLabel; +END_ENTITY; + +ENTITY IfcPermeableCoveringProperties + SUBTYPE OF (IfcPropertySetDefinition); + OperationType : IfcPermeableCoveringOperationEnum; + PanelPosition : IfcWindowPanelPositionEnum; + FrameDepth : OPTIONAL IfcPositiveLengthMeasure; + FrameThickness : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; +END_ENTITY; + +ENTITY IfcPermit + SUBTYPE OF (IfcControl); + PermitID : IfcIdentifier; + UNIQUE + UR2 : PermitID; +END_ENTITY; + +ENTITY IfcPerson; + Id : OPTIONAL IfcIdentifier; + FamilyName : OPTIONAL IfcLabel; + GivenName : OPTIONAL IfcLabel; + MiddleNames : OPTIONAL LIST [1:?] OF IfcLabel; + PrefixTitles : OPTIONAL LIST [1:?] OF IfcLabel; + SuffixTitles : OPTIONAL LIST [1:?] OF IfcLabel; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; + Addresses : OPTIONAL LIST [1:?] OF IfcAddress; + INVERSE + EngagedIn : SET [0:?] OF IfcPersonAndOrganization FOR ThePerson; + WHERE + WR1 : EXISTS(FamilyName) OR + EXISTS(GivenName); +END_ENTITY; + +ENTITY IfcPersonAndOrganization; + ThePerson : IfcPerson; + TheOrganization : IfcOrganization; + Roles : OPTIONAL LIST [1:?] OF IfcActorRole; +END_ENTITY; + +ENTITY IfcPhysicalComplexQuantity + SUBTYPE OF (IfcPhysicalQuantity); + HasQuantities : SET [1:?] OF IfcPhysicalQuantity; + Discrimination : IfcLabel; + Quality : OPTIONAL IfcLabel; + Usage : OPTIONAL IfcLabel; + WHERE + WR21 : SIZEOF(QUERY(temp <* HasQuantities | SELF :=: temp)) = 0; +END_ENTITY; + +ENTITY IfcPhysicalQuantity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPhysicalComplexQuantity + ,IfcPhysicalSimpleQuantity)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + INVERSE + PartOfComplex : SET [0:1] OF IfcPhysicalComplexQuantity FOR HasQuantities; +END_ENTITY; + +ENTITY IfcPhysicalSimpleQuantity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcQuantityArea + ,IfcQuantityCount + ,IfcQuantityLength + ,IfcQuantityTime + ,IfcQuantityVolume + ,IfcQuantityWeight)) + SUBTYPE OF (IfcPhysicalQuantity); + Unit : OPTIONAL IfcNamedUnit; +END_ENTITY; + +ENTITY IfcPile + SUBTYPE OF (IfcBuildingElement); + PredefinedType : IfcPileTypeEnum; + ConstructionType : OPTIONAL IfcPileConstructionEnum; + WHERE + WR1 : (PredefinedType <> IfcPileTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPileTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcPipeFittingType + SUBTYPE OF (IfcFlowFittingType); + PredefinedType : IfcPipeFittingTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPipeFittingTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPipeFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcPipeSegmentType + SUBTYPE OF (IfcFlowSegmentType); + PredefinedType : IfcPipeSegmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPipeSegmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPipeSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcPixelTexture + SUBTYPE OF (IfcSurfaceTexture); + Width : IfcInteger; + Height : IfcInteger; + ColourComponents : IfcInteger; + Pixel : LIST [1:?] OF BINARY(32); + WHERE + WR21 : Width >= 1; + WR22 : Height >= 1; + WR23 : {1 <= ColourComponents <= 4}; + WR24 : SIZEOF(Pixel) = (Width * Height); +END_ENTITY; + +ENTITY IfcPlacement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAxis1Placement + ,IfcAxis2Placement2D + ,IfcAxis2Placement3D)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Location : IfcCartesianPoint; + DERIVE + Dim : IfcDimensionCount := Location.Dim; +END_ENTITY; + +ENTITY IfcPlanarBox + SUBTYPE OF (IfcPlanarExtent); + Placement : IfcAxis2Placement; +END_ENTITY; + +ENTITY IfcPlanarExtent + SUPERTYPE OF (ONEOF + (IfcPlanarBox)) + SUBTYPE OF (IfcGeometricRepresentationItem); + SizeInX : IfcLengthMeasure; + SizeInY : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcPlane + SUBTYPE OF (IfcElementarySurface); +END_ENTITY; + +ENTITY IfcPlate + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcPlateType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcPlateTypeEnum; + WHERE + WR1 : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | 'IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) )) = 1; +END_ENTITY; + +ENTITY IfcPoint + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCartesianPoint + ,IfcPointOnCurve + ,IfcPointOnSurface)) + SUBTYPE OF (IfcGeometricRepresentationItem); +END_ENTITY; + +ENTITY IfcPointOnCurve + SUBTYPE OF (IfcPoint); + BasisCurve : IfcCurve; + PointParameter : IfcParameterValue; + DERIVE + Dim : IfcDimensionCount := BasisCurve.Dim; +END_ENTITY; + +ENTITY IfcPointOnSurface + SUBTYPE OF (IfcPoint); + BasisSurface : IfcSurface; + PointParameterU : IfcParameterValue; + PointParameterV : IfcParameterValue; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; +END_ENTITY; + +ENTITY IfcPolyLoop + SUBTYPE OF (IfcLoop); + Polygon : LIST [3:?] OF UNIQUE IfcCartesianPoint; + WHERE + WR21 : SIZEOF(QUERY(Temp <* Polygon | Temp.Dim <> Polygon[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcPolygonalBoundedHalfSpace + SUBTYPE OF (IfcHalfSpaceSolid); + Position : IfcAxis2Placement3D; + PolygonalBoundary : IfcBoundedCurve; + WHERE + WR41 : PolygonalBoundary.Dim = 2; + WR42 : SIZEOF(TYPEOF(PolygonalBoundary) * [ + 'IFC2X3.IFCPOLYLINE', + 'IFC2X3.IFCCOMPOSITECURVE'] + ) = 1; +END_ENTITY; + +ENTITY IfcPolyline + SUBTYPE OF (IfcBoundedCurve); + Points : LIST [2:?] OF IfcCartesianPoint; + WHERE + WR41 : SIZEOF(QUERY(Temp <* Points | Temp.Dim <> Points[1].Dim)) = 0; +END_ENTITY; + +ENTITY IfcPort + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDistributionPort)) + SUBTYPE OF (IfcProduct); + INVERSE + ContainedIn : IfcRelConnectsPortToElement FOR RelatingPort; + ConnectedFrom : SET [0:1] OF IfcRelConnectsPorts FOR RelatedPort; + ConnectedTo : SET [0:1] OF IfcRelConnectsPorts FOR RelatingPort; +END_ENTITY; + +ENTITY IfcPostalAddress + SUBTYPE OF (IfcAddress); + InternalLocation : OPTIONAL IfcLabel; + AddressLines : OPTIONAL LIST [1:?] OF IfcLabel; + PostalBox : OPTIONAL IfcLabel; + Town : OPTIONAL IfcLabel; + Region : OPTIONAL IfcLabel; + PostalCode : OPTIONAL IfcLabel; + Country : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS (InternalLocation) OR + EXISTS (AddressLines) OR + EXISTS (PostalBox) OR + EXISTS (PostalCode) OR + EXISTS (Town) OR + EXISTS (Region) OR + EXISTS (Country); +END_ENTITY; + +ENTITY IfcPreDefinedColour + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedColour)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedCurveFont + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedCurveFont)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedDimensionSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['arc length','conical taper','counterbore', + 'countersink','depth','diameter','plus minus','radius', + 'slope','spherical diameter','spherical radius','square']; +END_ENTITY; + +ENTITY IfcPreDefinedItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPreDefinedColour + ,IfcPreDefinedCurveFont + ,IfcPreDefinedSymbol + ,IfcPreDefinedTextFont)); + Name : IfcLabel; +END_ENTITY; + +ENTITY IfcPreDefinedPointMarkerSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + +ENTITY IfcPreDefinedSymbol + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPreDefinedDimensionSymbol + ,IfcPreDefinedPointMarkerSymbol + ,IfcPreDefinedTerminatorSymbol)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPreDefinedTerminatorSymbol + SUBTYPE OF (IfcPreDefinedSymbol); + WHERE + WR31 : SELF\IfcPreDefinedItem.Name IN ['blanked arrow','blanked box', + 'blanked dot','dimension origin','filled arrow','filled box', + 'filled dot','integral symbol','open arrow','slash','unfilled arrow']; +END_ENTITY; + +ENTITY IfcPreDefinedTextFont + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDraughtingPreDefinedTextFont + ,IfcTextStyleFontModel)) + SUBTYPE OF (IfcPreDefinedItem); +END_ENTITY; + +ENTITY IfcPresentationLayerAssignment + SUPERTYPE OF (ONEOF + (IfcPresentationLayerWithStyle)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + AssignedItems : SET [1:?] OF IfcLayeredItem; + Identifier : OPTIONAL IfcIdentifier; +END_ENTITY; + +ENTITY IfcPresentationLayerWithStyle + SUBTYPE OF (IfcPresentationLayerAssignment); + LayerOn : LOGICAL; + LayerFrozen : LOGICAL; + LayerBlocked : LOGICAL; + LayerStyles : SET [0:?] OF IfcPresentationStyleSelect; +END_ENTITY; + +ENTITY IfcPresentationStyle + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCurveStyle + ,IfcFillAreaStyle + ,IfcSurfaceStyle + ,IfcSymbolStyle + ,IfcTextStyle)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcPresentationStyleAssignment; + Styles : SET [1:?] OF IfcPresentationStyleSelect; +END_ENTITY; + +ENTITY IfcProcedure + SUBTYPE OF (IfcProcess); + ProcedureID : IfcIdentifier; + ProcedureType : IfcProcedureTypeEnum; + UserDefinedProcedureType : OPTIONAL IfcLabel; + WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR3 : EXISTS(SELF\IfcRoot.Name); + WR4 : (ProcedureType <> IfcProcedureTypeEnum.USERDEFINED) OR + ((ProcedureType = IfcProcedureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcProcedure.UserDefinedProcedureType)); +END_ENTITY; + +ENTITY IfcProcess + ABSTRACT SUPERTYPE OF (ONEOF + (IfcProcedure + ,IfcTask)) + SUBTYPE OF (IfcObject); + INVERSE + OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess; + IsSuccessorFrom : SET [0:?] OF IfcRelSequence FOR RelatedProcess; + IsPredecessorTo : SET [0:?] OF IfcRelSequence FOR RelatingProcess; +END_ENTITY; + +ENTITY IfcProduct + ABSTRACT SUPERTYPE OF (ONEOF + (IfcAnnotation + ,IfcElement + ,IfcGrid + ,IfcPort + ,IfcProxy + ,IfcSpatialStructureElement + ,IfcStructuralActivity + ,IfcStructuralItem)) + SUBTYPE OF (IfcObject); + ObjectPlacement : OPTIONAL IfcObjectPlacement; + Representation : OPTIONAL IfcProductRepresentation; + INVERSE + ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct; + WHERE + WR1 : (EXISTS(Representation) AND EXISTS(ObjectPlacement)) + OR (EXISTS(Representation) AND + (NOT('IFC2X3.IFCPRODUCTDEFINITIONSHAPE' IN TYPEOF(Representation)))) + OR (NOT(EXISTS(Representation))); +END_ENTITY; + +ENTITY IfcProductDefinitionShape + SUBTYPE OF (IfcProductRepresentation); + INVERSE + ShapeOfProduct : SET [1:1] OF IfcProduct FOR Representation; + HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape; + WHERE + WR11 : SIZEOF(QUERY(temp <* Representations | + (NOT('IFC2X3.IFCSHAPEMODEL' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcProductRepresentation + SUPERTYPE OF (ONEOF + (IfcMaterialDefinitionRepresentation + ,IfcProductDefinitionShape)); + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + Representations : LIST [1:?] OF IfcRepresentation; +END_ENTITY; + +ENTITY IfcProductsOfCombustionProperties + SUBTYPE OF (IfcMaterialProperties); + SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; + N20Content : OPTIONAL IfcPositiveRatioMeasure; + COContent : OPTIONAL IfcPositiveRatioMeasure; + CO2Content : OPTIONAL IfcPositiveRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcProfileDef + ABSTRACT SUPERTYPE OF (ONEOF + (IfcArbitraryClosedProfileDef + ,IfcArbitraryOpenProfileDef + ,IfcCompositeProfileDef + ,IfcDerivedProfileDef + ,IfcParameterizedProfileDef)); + ProfileType : IfcProfileTypeEnum; + ProfileName : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcProfileProperties + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGeneralProfileProperties + ,IfcRibPlateProfileProperties)); + ProfileName : OPTIONAL IfcLabel; + ProfileDefinition : OPTIONAL IfcProfileDef; +END_ENTITY; + +ENTITY IfcProject + SUBTYPE OF (IfcObject); + LongName : OPTIONAL IfcLabel; + Phase : OPTIONAL IfcLabel; + RepresentationContexts : SET [1:?] OF IfcRepresentationContext; + UnitsInContext : IfcUnitAssignment; + WHERE + WR31 : EXISTS(SELF\IfcRoot.Name); + WR32 : SIZEOF(QUERY(Temp <* RepresentationContexts | + 'IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(Temp) + )) = 0; + WR33 : SIZEOF(SELF\IfcObjectDefinition.Decomposes) = 0; +END_ENTITY; + +ENTITY IfcProjectOrder + SUBTYPE OF (IfcControl); + ID : IfcIdentifier; + PredefinedType : IfcProjectOrderTypeEnum; + Status : OPTIONAL IfcLabel; + UNIQUE + UR2 : ID; +END_ENTITY; + +ENTITY IfcProjectOrderRecord + SUBTYPE OF (IfcControl); + Records : LIST [1:?] OF UNIQUE IfcRelAssignsToProjectOrder; + PredefinedType : IfcProjectOrderRecordTypeEnum; +END_ENTITY; + +ENTITY IfcProjectionCurve + SUBTYPE OF (IfcAnnotationCurveOccurrence); +END_ENTITY; + +ENTITY IfcProjectionElement + SUBTYPE OF (IfcFeatureElementAddition); +END_ENTITY; + +ENTITY IfcProperty + ABSTRACT SUPERTYPE OF (ONEOF + (IfcComplexProperty + ,IfcSimpleProperty)); + Name : IfcIdentifier; + Description : OPTIONAL IfcText; + INVERSE + PropertyForDependance : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependingProperty; + PropertyDependsOn : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependantProperty; + PartOfComplex : SET [0:1] OF IfcComplexProperty FOR HasProperties; +END_ENTITY; + +ENTITY IfcPropertyBoundedValue + SUBTYPE OF (IfcSimpleProperty); + UpperBoundValue : OPTIONAL IfcValue; + LowerBoundValue : OPTIONAL IfcValue; + Unit : OPTIONAL IfcUnit; + WHERE + WR21 : NOT(EXISTS(UpperBoundValue)) OR NOT(EXISTS(LowerBoundValue)) OR + (TYPEOF(UpperBoundValue) = TYPEOF(LowerBoundValue)); + WR22 : EXISTS(UpperBoundValue) OR EXISTS(LowerBoundValue); +END_ENTITY; + +ENTITY IfcPropertyConstraintRelationship; + RelatingConstraint : IfcConstraint; + RelatedProperties : SET [1:?] OF IfcProperty; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcPropertyDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPropertySetDefinition)) + SUBTYPE OF (IfcRoot); + INVERSE + HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; +END_ENTITY; + +ENTITY IfcPropertyDependencyRelationship; + DependingProperty : IfcProperty; + DependantProperty : IfcProperty; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + Expression : OPTIONAL IfcText; + WHERE + WR1 : DependingProperty :<>: DependantProperty; +END_ENTITY; + +ENTITY IfcPropertyEnumeratedValue + SUBTYPE OF (IfcSimpleProperty); + EnumerationValues : LIST [1:?] OF IfcValue; + EnumerationReference : OPTIONAL IfcPropertyEnumeration; + WHERE + WR1 : NOT(EXISTS(EnumerationReference)) OR + (SIZEOF(QUERY(temp <* EnumerationValues | + temp IN EnumerationReference.EnumerationValues)) + = SIZEOF(EnumerationValues)); +END_ENTITY; + +ENTITY IfcPropertyEnumeration; + Name : IfcLabel; + EnumerationValues : LIST [1:?] OF UNIQUE IfcValue; + Unit : OPTIONAL IfcUnit; + UNIQUE + UR1 : Name; + WHERE + WR01 : SIZEOF(QUERY(temp <* SELF.EnumerationValues | + NOT(TYPEOF(SELF.EnumerationValues[1]) = TYPEOF(temp)) + )) = 0; +END_ENTITY; + +ENTITY IfcPropertyListValue + SUBTYPE OF (IfcSimpleProperty); + ListValues : LIST [1:?] OF IfcValue; + Unit : OPTIONAL IfcUnit; + WHERE + WR31 : SIZEOF(QUERY(temp <* SELF.ListValues | + NOT(TYPEOF(SELF.ListValues[1]) = TYPEOF(temp)) + )) = 0; +END_ENTITY; + +ENTITY IfcPropertyReferenceValue + SUBTYPE OF (IfcSimpleProperty); + UsageName : OPTIONAL IfcLabel; + PropertyReference : IfcObjectReferenceSelect; +END_ENTITY; + +ENTITY IfcPropertySet + SUBTYPE OF (IfcPropertySetDefinition); + HasProperties : SET [1:?] OF IfcProperty; + WHERE + WR31 : EXISTS(SELF\IfcRoot.Name); + WR32 : IfcUniquePropertyName(HasProperties); +END_ENTITY; + +ENTITY IfcPropertySetDefinition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcDoorLiningProperties + ,IfcDoorPanelProperties + ,IfcElementQuantity + ,IfcEnergyProperties + ,IfcFluidFlowProperties + ,IfcPermeableCoveringProperties + ,IfcPropertySet + ,IfcReinforcementDefinitionProperties + ,IfcServiceLifeFactor + ,IfcSoundProperties + ,IfcSoundValue + ,IfcSpaceThermalLoadProperties + ,IfcWindowLiningProperties + ,IfcWindowPanelProperties)) + SUBTYPE OF (IfcPropertyDefinition); + INVERSE + PropertyDefinitionOf : SET [0:1] OF IfcRelDefinesByProperties FOR RelatingPropertyDefinition; + DefinesType : SET [0:1] OF IfcTypeObject FOR HasPropertySets; +END_ENTITY; + +ENTITY IfcPropertySingleValue + SUBTYPE OF (IfcSimpleProperty); + NominalValue : OPTIONAL IfcValue; + Unit : OPTIONAL IfcUnit; +END_ENTITY; + +ENTITY IfcPropertyTableValue + SUBTYPE OF (IfcSimpleProperty); + DefiningValues : LIST [1:?] OF UNIQUE IfcValue; + DefinedValues : LIST [1:?] OF IfcValue; + Expression : OPTIONAL IfcText; + DefiningUnit : OPTIONAL IfcUnit; + DefinedUnit : OPTIONAL IfcUnit; + WHERE + WR1 : SIZEOF(DefiningValues) = SIZEOF(DefinedValues); + WR2 : SIZEOF(QUERY(temp <* SELF.DefiningValues | TYPEOF(temp) <> TYPEOF(SELF.DefiningValues[1])))=0; + WR3 : SIZEOF(QUERY(temp <* SELF.DefinedValues | TYPEOF(temp) <> TYPEOF(SELF.DefinedValues[1])))=0; +END_ENTITY; + +ENTITY IfcProtectiveDeviceType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcProtectiveDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcProxy + SUBTYPE OF (IfcProduct); + ProxyType : IfcObjectTypeEnum; + Tag : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcPumpType + SUBTYPE OF (IfcFlowMovingDeviceType); + PredefinedType : IfcPumpTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcPumpTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcPumpTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcQuantityArea + SUBTYPE OF (IfcPhysicalSimpleQuantity); + AreaValue : IfcAreaMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.AREAUNIT); + WR22 : AreaValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityCount + SUBTYPE OF (IfcPhysicalSimpleQuantity); + CountValue : IfcCountMeasure; + WHERE + WR21 : CountValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityLength + SUBTYPE OF (IfcPhysicalSimpleQuantity); + LengthValue : IfcLengthMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.LENGTHUNIT); + WR22 : LengthValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityTime + SUBTYPE OF (IfcPhysicalSimpleQuantity); + TimeValue : IfcTimeMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.TIMEUNIT); + WR22 : TimeValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityVolume + SUBTYPE OF (IfcPhysicalSimpleQuantity); + VolumeValue : IfcVolumeMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.VOLUMEUNIT); + WR22 : VolumeValue >= 0.; +END_ENTITY; + +ENTITY IfcQuantityWeight + SUBTYPE OF (IfcPhysicalSimpleQuantity); + WeightValue : IfcMassMeasure; + WHERE + WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR + (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.MASSUNIT); + WR22 : WeightValue >= 0.; +END_ENTITY; + +ENTITY IfcRadiusDimension + SUBTYPE OF (IfcDimensionCurveDirectedCallout); +END_ENTITY; + +ENTITY IfcRailing + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcRailingTypeEnum; +END_ENTITY; + +ENTITY IfcRailingType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcRailingTypeEnum; +END_ENTITY; + +ENTITY IfcRamp + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcRampTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcRampFlight + SUBTYPE OF (IfcBuildingElement); +END_ENTITY; + +ENTITY IfcRampFlightType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcRampFlightTypeEnum; +END_ENTITY; + +ENTITY IfcRationalBezierCurve + SUBTYPE OF (IfcBezierCurve); + WeightsData : LIST [2:?] OF REAL; + DERIVE + Weights : ARRAY [0:255] OF REAL := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); + WHERE + WR1 : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); + WR2 : IfcCurveWeightsPositive(SELF); +END_ENTITY; + +ENTITY IfcRectangleHollowProfileDef + SUBTYPE OF (IfcRectangleProfileDef); + WallThickness : IfcPositiveLengthMeasure; + InnerFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + OuterFilletRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR31 : (WallThickness < (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (WallThickness < (SELF\IfcRectangleProfileDef.YDim/2.)); + WR32 : NOT(EXISTS(OuterFilletRadius)) OR + ((OuterFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (OuterFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); + WR33 : NOT(EXISTS(InnerFilletRadius)) OR + ((InnerFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2. - WallThickness)) AND + (InnerFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2. - WallThickness))); +END_ENTITY; + +ENTITY IfcRectangleProfileDef + SUPERTYPE OF (ONEOF + (IfcRectangleHollowProfileDef + ,IfcRoundedRectangleProfileDef)) + SUBTYPE OF (IfcParameterizedProfileDef); + XDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRectangularPyramid + SUBTYPE OF (IfcCsgPrimitive3D); + XLength : IfcPositiveLengthMeasure; + YLength : IfcPositiveLengthMeasure; + Height : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRectangularTrimmedSurface + SUBTYPE OF (IfcBoundedSurface); + BasisSurface : IfcSurface; + U1 : IfcParameterValue; + V1 : IfcParameterValue; + U2 : IfcParameterValue; + V2 : IfcParameterValue; + Usense : BOOLEAN; + Vsense : BOOLEAN; + DERIVE + Dim : IfcDimensionCount := BasisSurface.Dim; + WHERE + WR1 : U1 <> U2; + WR2 : V1 <> V2; + WR3 : (('IFC2X3.IFCELEMENTARYSURFACE' IN TYPEOF(BasisSurface)) AND + (NOT ('IFC2X3.IFCPLANE' IN TYPEOF(BasisSurface)))) OR + ('IFC2X3.IFCSURFACEOFREVOLUTION' IN TYPEOF(BasisSurface)) OR + (Usense = (U2 > U1)); + WR4 : Vsense = (V2 > V1); +END_ENTITY; + +ENTITY IfcReferencesValueDocument; + ReferencedDocument : IfcDocumentSelect; + ReferencingValues : SET [1:?] OF IfcAppliedValue; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcRegularTimeSeries + SUBTYPE OF (IfcTimeSeries); + TimeStep : IfcTimeMeasure; + Values : LIST [1:?] OF IfcTimeSeriesValue; +END_ENTITY; + +ENTITY IfcReinforcementBarProperties; + TotalCrossSectionArea : IfcAreaMeasure; + SteelGrade : IfcLabel; + BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; + EffectiveDepth : OPTIONAL IfcLengthMeasure; + NominalBarDiameter : OPTIONAL IfcPositiveLengthMeasure; + BarCount : OPTIONAL IfcCountMeasure; +END_ENTITY; + +ENTITY IfcReinforcementDefinitionProperties + SUBTYPE OF (IfcPropertySetDefinition); + DefinitionType : OPTIONAL IfcLabel; + ReinforcementSectionDefinitions : LIST [1:?] OF IfcSectionReinforcementProperties; +END_ENTITY; + +ENTITY IfcReinforcingBar + SUBTYPE OF (IfcReinforcingElement); + NominalDiameter : IfcPositiveLengthMeasure; + CrossSectionArea : IfcAreaMeasure; + BarLength : OPTIONAL IfcPositiveLengthMeasure; + BarRole : IfcReinforcingBarRoleEnum; + BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; + WHERE + WR1 : (BarRole <> IfcReinforcingBarRoleEnum.USERDEFINED) OR ((BarRole = IfcReinforcingBarRoleEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcReinforcingElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcReinforcingBar + ,IfcReinforcingMesh + ,IfcTendon + ,IfcTendonAnchor)) + SUBTYPE OF (IfcBuildingElementComponent); + SteelGrade : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcReinforcingMesh + SUBTYPE OF (IfcReinforcingElement); + MeshLength : OPTIONAL IfcPositiveLengthMeasure; + MeshWidth : OPTIONAL IfcPositiveLengthMeasure; + LongitudinalBarNominalDiameter : IfcPositiveLengthMeasure; + TransverseBarNominalDiameter : IfcPositiveLengthMeasure; + LongitudinalBarCrossSectionArea : IfcAreaMeasure; + TransverseBarCrossSectionArea : IfcAreaMeasure; + LongitudinalBarSpacing : IfcPositiveLengthMeasure; + TransverseBarSpacing : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRelAggregates + SUBTYPE OF (IfcRelDecomposes); +END_ENTITY; + +ENTITY IfcRelAssigns + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAssignsToActor + ,IfcRelAssignsToControl + ,IfcRelAssignsToGroup + ,IfcRelAssignsToProcess + ,IfcRelAssignsToProduct + ,IfcRelAssignsToResource)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcObjectDefinition; + RelatedObjectsType : OPTIONAL IfcObjectTypeEnum; + WHERE + WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects); +END_ENTITY; + +ENTITY IfcRelAssignsTasks + SUBTYPE OF (IfcRelAssignsToControl); + TimeForTask : OPTIONAL IfcScheduleTimeControl; + WHERE + WR1 : HIINDEX(SELF\IfcRelAssigns.RelatedObjects) = 1; + WR2 : 'IFC2X3.IFCTASK' IN TYPEOF(SELF\IfcRelAssigns.RelatedObjects[1]); + WR3 : 'IFC2X3.IFCWORKCONTROL' IN TYPEOF(SELF\IfcRelAssignsToControl.RelatingControl); +END_ENTITY; + +ENTITY IfcRelAssignsToActor + SUPERTYPE OF (ONEOF + (IfcRelOccupiesSpaces)) + SUBTYPE OF (IfcRelAssigns); + RelatingActor : IfcActor; + ActingRole : OPTIONAL IfcActorRole; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingActor :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToControl + SUPERTYPE OF (ONEOF + (IfcRelAssignsTasks + ,IfcRelAssignsToProjectOrder + ,IfcRelSchedulesCostItems)) + SUBTYPE OF (IfcRelAssigns); + RelatingControl : IfcControl; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingControl :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToGroup + SUBTYPE OF (IfcRelAssigns); + RelatingGroup : IfcGroup; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingGroup :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProcess + SUBTYPE OF (IfcRelAssigns); + RelatingProcess : IfcProcess; + QuantityInProcess : OPTIONAL IfcMeasureWithUnit; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProcess :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProduct + SUBTYPE OF (IfcRelAssigns); + RelatingProduct : IfcProduct; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProduct :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssignsToProjectOrder + SUBTYPE OF (IfcRelAssignsToControl); +END_ENTITY; + +ENTITY IfcRelAssignsToResource + SUBTYPE OF (IfcRelAssigns); + RelatingResource : IfcResource; + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingResource :=: Temp)) = 0; +END_ENTITY; + +ENTITY IfcRelAssociates + SUPERTYPE OF (ONEOF + (IfcRelAssociatesAppliedValue + ,IfcRelAssociatesApproval + ,IfcRelAssociatesClassification + ,IfcRelAssociatesConstraint + ,IfcRelAssociatesDocument + ,IfcRelAssociatesLibrary + ,IfcRelAssociatesMaterial + ,IfcRelAssociatesProfileProperties)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcRoot; + WHERE + WR21 : SIZEOF(QUERY(temp <* RelatedObjects | + NOT(('IFC2X3.IFCOBJECTDEFINITION' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPROPERTYDEFINITION' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcRelAssociatesAppliedValue + SUBTYPE OF (IfcRelAssociates); + RelatingAppliedValue : IfcAppliedValue; +END_ENTITY; + +ENTITY IfcRelAssociatesApproval + SUBTYPE OF (IfcRelAssociates); + RelatingApproval : IfcApproval; +END_ENTITY; + +ENTITY IfcRelAssociatesClassification + SUBTYPE OF (IfcRelAssociates); + RelatingClassification : IfcClassificationNotationSelect; +END_ENTITY; + +ENTITY IfcRelAssociatesConstraint + SUBTYPE OF (IfcRelAssociates); + Intent : IfcLabel; + RelatingConstraint : IfcConstraint; +END_ENTITY; + +ENTITY IfcRelAssociatesDocument + SUBTYPE OF (IfcRelAssociates); + RelatingDocument : IfcDocumentSelect; +END_ENTITY; + +ENTITY IfcRelAssociatesLibrary + SUBTYPE OF (IfcRelAssociates); + RelatingLibrary : IfcLibrarySelect; +END_ENTITY; + +ENTITY IfcRelAssociatesMaterial + SUBTYPE OF (IfcRelAssociates); + RelatingMaterial : IfcMaterialSelect; + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | + ('IFC2X3.IFCFEATUREELEMENTSUBTRACTION' IN TYPEOF(temp)) + OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(temp)) + )) = 0; + WR22 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | + (NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)) AND NOT('IFC2X3.IFCTYPEPRODUCT' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcRelAssociatesProfileProperties + SUBTYPE OF (IfcRelAssociates); + RelatingProfileProperties : IfcProfileProperties; + ProfileSectionLocation : OPTIONAL IfcShapeAspect; + ProfileOrientation : OPTIONAL IfcOrientationSelect; +END_ENTITY; + +ENTITY IfcRelConnects + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelConnectsElements + ,IfcRelConnectsPortToElement + ,IfcRelConnectsPorts + ,IfcRelConnectsStructuralActivity + ,IfcRelConnectsStructuralElement + ,IfcRelConnectsStructuralMember + ,IfcRelContainedInSpatialStructure + ,IfcRelCoversBldgElements + ,IfcRelCoversSpaces + ,IfcRelFillsElement + ,IfcRelFlowControlElements + ,IfcRelInteractionRequirements + ,IfcRelProjectsElement + ,IfcRelReferencedInSpatialStructure + ,IfcRelSequence + ,IfcRelServicesBuildings + ,IfcRelSpaceBoundary + ,IfcRelVoidsElement)) + SUBTYPE OF (IfcRelationship); +END_ENTITY; + +ENTITY IfcRelConnectsElements + SUPERTYPE OF (ONEOF + (IfcRelConnectsPathElements + ,IfcRelConnectsWithRealizingElements)) + SUBTYPE OF (IfcRelConnects); + ConnectionGeometry : OPTIONAL IfcConnectionGeometry; + RelatingElement : IfcElement; + RelatedElement : IfcElement; + WHERE + WR31 : RelatingElement :<>: RelatedElement; +END_ENTITY; + +ENTITY IfcRelConnectsPathElements + SUBTYPE OF (IfcRelConnectsElements); + RelatingPriorities : LIST [0:?] OF INTEGER; + RelatedPriorities : LIST [0:?] OF INTEGER; + RelatedConnectionType : IfcConnectionTypeEnum; + RelatingConnectionType : IfcConnectionTypeEnum; + DERIVE + RelatedLayerCount : INTEGER := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatedElement); + RelatingLayerCount : INTEGER := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatingElement); +END_ENTITY; + +ENTITY IfcRelConnectsPortToElement + SUBTYPE OF (IfcRelConnects); + RelatingPort : IfcPort; + RelatedElement : IfcElement; +END_ENTITY; + +ENTITY IfcRelConnectsPorts + SUBTYPE OF (IfcRelConnects); + RelatingPort : IfcPort; + RelatedPort : IfcPort; + RealizingElement : OPTIONAL IfcElement; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralActivity + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcStructuralActivityAssignmentSelect; + RelatedStructuralActivity : IfcStructuralActivity; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralElement + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcElement; + RelatedStructuralMember : IfcStructuralMember; +END_ENTITY; + +ENTITY IfcRelConnectsStructuralMember + SUPERTYPE OF (ONEOF + (IfcRelConnectsWithEccentricity)) + SUBTYPE OF (IfcRelConnects); + RelatingStructuralMember : IfcStructuralMember; + RelatedStructuralConnection : IfcStructuralConnection; + AppliedCondition : OPTIONAL IfcBoundaryCondition; + AdditionalConditions : OPTIONAL IfcStructuralConnectionCondition; + SupportedLength : OPTIONAL IfcLengthMeasure; + ConditionCoordinateSystem : OPTIONAL IfcAxis2Placement3D; +END_ENTITY; + +ENTITY IfcRelConnectsWithEccentricity + SUBTYPE OF (IfcRelConnectsStructuralMember); + ConnectionConstraint : IfcConnectionGeometry; +END_ENTITY; + +ENTITY IfcRelConnectsWithRealizingElements + SUBTYPE OF (IfcRelConnectsElements); + RealizingElements : SET [1:?] OF IfcElement; + ConnectionType : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcRelContainedInSpatialStructure + SUBTYPE OF (IfcRelConnects); + RelatedElements : SET [1:?] OF IfcProduct; + RelatingStructure : IfcSpatialStructureElement; + WHERE + WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcRelCoversBldgElements + SUBTYPE OF (IfcRelConnects); + RelatingBuildingElement : IfcElement; + RelatedCoverings : SET [1:?] OF IfcCovering; +END_ENTITY; + +ENTITY IfcRelCoversSpaces + SUBTYPE OF (IfcRelConnects); + RelatedSpace : IfcSpace; + RelatedCoverings : SET [1:?] OF IfcCovering; +END_ENTITY; + +ENTITY IfcRelDecomposes + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAggregates + ,IfcRelNests)) + SUBTYPE OF (IfcRelationship); + RelatingObject : IfcObjectDefinition; + RelatedObjects : SET [1:?] OF IfcObjectDefinition; + WHERE + WR31 : SIZEOF(QUERY(Temp <* RelatedObjects | RelatingObject :=: Temp)) = 0; + WR32 : SIZEOF(QUERY(Temp <* RelatedObjects | 'IFC2X3.IFCTYPEOBJECT' IN TYPEOF(temp))) = 0; + WR33 : NOT('IFC2X3.IFCTYPEOBJECT' IN TYPEOF(RelatingObject)); +END_ENTITY; + +ENTITY IfcRelDefines + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelDefinesByProperties + ,IfcRelDefinesByType)) + SUBTYPE OF (IfcRelationship); + RelatedObjects : SET [1:?] OF IfcObject; +END_ENTITY; + +ENTITY IfcRelDefinesByProperties + SUPERTYPE OF (ONEOF + (IfcRelOverridesProperties)) + SUBTYPE OF (IfcRelDefines); + RelatingPropertyDefinition : IfcPropertySetDefinition; +END_ENTITY; + +ENTITY IfcRelDefinesByType + SUBTYPE OF (IfcRelDefines); + RelatingType : IfcTypeObject; +END_ENTITY; + +ENTITY IfcRelFillsElement + SUBTYPE OF (IfcRelConnects); + RelatingOpeningElement : IfcOpeningElement; + RelatedBuildingElement : IfcElement; +END_ENTITY; + +ENTITY IfcRelFlowControlElements + SUBTYPE OF (IfcRelConnects); + RelatedControlElements : SET [1:?] OF IfcDistributionControlElement; + RelatingFlowElement : IfcDistributionFlowElement; +END_ENTITY; + +ENTITY IfcRelInteractionRequirements + SUBTYPE OF (IfcRelConnects); + DailyInteraction : OPTIONAL IfcCountMeasure; + ImportanceRating : OPTIONAL IfcNormalisedRatioMeasure; + LocationOfInteraction : OPTIONAL IfcSpatialStructureElement; + RelatedSpaceProgram : IfcSpaceProgram; + RelatingSpaceProgram : IfcSpaceProgram; +END_ENTITY; + +ENTITY IfcRelNests + SUBTYPE OF (IfcRelDecomposes); + WHERE + WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelDecomposes.RelatedObjects | + NOT(TYPEOF(SELF\IfcRelDecomposes.RelatingObject) = TYPEOF(Temp)))) = 0; +END_ENTITY; + +ENTITY IfcRelOccupiesSpaces + SUBTYPE OF (IfcRelAssignsToActor); +END_ENTITY; + +ENTITY IfcRelOverridesProperties + SUBTYPE OF (IfcRelDefinesByProperties); + OverridingProperties : SET [1:?] OF IfcProperty; + WHERE + WR1 : SIZEOF(SELF\IfcRelDefines.RelatedObjects) = 1; +END_ENTITY; + +ENTITY IfcRelProjectsElement + SUBTYPE OF (IfcRelConnects); + RelatingElement : IfcElement; + RelatedFeatureElement : IfcFeatureElementAddition; +END_ENTITY; + +ENTITY IfcRelReferencedInSpatialStructure + SUBTYPE OF (IfcRelConnects); + RelatedElements : SET [1:?] OF IfcProduct; + RelatingStructure : IfcSpatialStructureElement; + WHERE + WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; +END_ENTITY; + +ENTITY IfcRelSchedulesCostItems + SUBTYPE OF (IfcRelAssignsToControl); + WHERE + WR11 : SIZEOF(QUERY(temp <* SELF\IfcRelAssigns.RelatedObjects | + NOT('IFC2X3.IFCCOSTITEM' IN TYPEOF(temp)) + )) = 0; + WR12 : 'IFC2X3.IFCCOSTSCHEDULE' IN TYPEOF (SELF\IfcRelAssignsToControl.RelatingControl); +END_ENTITY; + +ENTITY IfcRelSequence + SUBTYPE OF (IfcRelConnects); + RelatingProcess : IfcProcess; + RelatedProcess : IfcProcess; + TimeLag : IfcTimeMeasure; + SequenceType : IfcSequenceEnum; + WHERE + WR1 : RelatingProcess :<>: RelatedProcess; +END_ENTITY; + +ENTITY IfcRelServicesBuildings + SUBTYPE OF (IfcRelConnects); + RelatingSystem : IfcSystem; + RelatedBuildings : SET [1:?] OF IfcSpatialStructureElement; +END_ENTITY; + +ENTITY IfcRelSpaceBoundary + SUBTYPE OF (IfcRelConnects); + RelatingSpace : IfcSpace; + RelatedBuildingElement : OPTIONAL IfcElement; + ConnectionGeometry : OPTIONAL IfcConnectionGeometry; + PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum; + InternalOrExternalBoundary : IfcInternalOrExternalEnum; + WHERE + WR1 : ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Physical) AND + (EXISTS(RelatedBuildingElement) AND NOT('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) + OR + ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Virtual) AND + (NOT(EXISTS(RelatedBuildingElement)) OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) + OR + (PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.NotDefined); +END_ENTITY; + +ENTITY IfcRelVoidsElement + SUBTYPE OF (IfcRelConnects); + RelatingBuildingElement : IfcElement; + RelatedOpeningElement : IfcFeatureElementSubtraction; +END_ENTITY; + +ENTITY IfcRelationship + ABSTRACT SUPERTYPE OF (ONEOF + (IfcRelAssigns + ,IfcRelAssociates + ,IfcRelConnects + ,IfcRelDecomposes + ,IfcRelDefines)) + SUBTYPE OF (IfcRoot); +END_ENTITY; + +ENTITY IfcRelaxation; + RelaxationValue : IfcNormalisedRatioMeasure; + InitialStress : IfcNormalisedRatioMeasure; +END_ENTITY; + +ENTITY IfcRepresentation + SUPERTYPE OF (ONEOF + (IfcShapeModel + ,IfcStyleModel)); + ContextOfItems : IfcRepresentationContext; + RepresentationIdentifier : OPTIONAL IfcLabel; + RepresentationType : OPTIONAL IfcLabel; + Items : SET [1:?] OF IfcRepresentationItem; + INVERSE + RepresentationMap : SET [0:1] OF IfcRepresentationMap FOR MappedRepresentation; + LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR Assigneditems; + OfProductRepresentation : SET [0:1] OF IfcProductRepresentation FOR Representations; +END_ENTITY; + +ENTITY IfcRepresentationContext + SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationContext)); + ContextIdentifier : OPTIONAL IfcLabel; + ContextType : OPTIONAL IfcLabel; + INVERSE + RepresentationsInContext : SET [0:?] OF IfcRepresentation FOR ContextOfItems; +END_ENTITY; + +ENTITY IfcRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcGeometricRepresentationItem + ,IfcMappedItem + ,IfcStyledItem + ,IfcTopologicalRepresentationItem)); + INVERSE + LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems; + StyledByItem : SET [0:1] OF IfcStyledItem FOR Item; +END_ENTITY; + +ENTITY IfcRepresentationMap; + MappingOrigin : IfcAxis2Placement; + MappedRepresentation : IfcRepresentation; + INVERSE + MapUsage : SET [0:?] OF IfcMappedItem FOR MappingSource; +END_ENTITY; + +ENTITY IfcResource + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConstructionResource)) + SUBTYPE OF (IfcObject); + INVERSE + ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource; +END_ENTITY; + +ENTITY IfcRevolvedAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + Axis : IfcAxis1Placement; + Angle : IfcPlaneAngleMeasure; + DERIVE + AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(Axis.Location, + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Axis.Z,1.0)); + WHERE + WR31 : Axis.Location.Coordinates[3] = 0.0; + WR32 : Axis.Z.DirectionRatios[3] = 0.0; +END_ENTITY; + +ENTITY IfcRibPlateProfileProperties + SUBTYPE OF (IfcProfileProperties); + Thickness : OPTIONAL IfcPositiveLengthMeasure; + RibHeight : OPTIONAL IfcPositiveLengthMeasure; + RibWidth : OPTIONAL IfcPositiveLengthMeasure; + RibSpacing : OPTIONAL IfcPositiveLengthMeasure; + Direction : IfcRibPlateDirectionEnum; +END_ENTITY; + +ENTITY IfcRightCircularCone + SUBTYPE OF (IfcCsgPrimitive3D); + Height : IfcPositiveLengthMeasure; + BottomRadius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRightCircularCylinder + SUBTYPE OF (IfcCsgPrimitive3D); + Height : IfcPositiveLengthMeasure; + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRoof + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcRoofTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcRoot + ABSTRACT SUPERTYPE OF (ONEOF + (IfcObjectDefinition + ,IfcPropertyDefinition + ,IfcRelationship)); + GlobalId : IfcGloballyUniqueId; + OwnerHistory : IfcOwnerHistory; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + UNIQUE + UR1 : GlobalId; +END_ENTITY; + +ENTITY IfcRoundedEdgeFeature + SUBTYPE OF (IfcEdgeFeature); + Radius : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcRoundedRectangleProfileDef + SUBTYPE OF (IfcRectangleProfileDef); + RoundingRadius : IfcPositiveLengthMeasure; + WHERE + WR31 : ((RoundingRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND + (RoundingRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); +END_ENTITY; + +ENTITY IfcSIUnit + SUBTYPE OF (IfcNamedUnit); + Prefix : OPTIONAL IfcSIPrefix; + Name : IfcSIUnitName; + DERIVE + SELF\IfcNamedUnit.Dimensions : IfcDimensionalExponents := IfcDimensionsForSiUnit (SELF.Name); +END_ENTITY; + +ENTITY IfcSanitaryTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcSanitaryTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcScheduleTimeControl + SUBTYPE OF (IfcControl); + ActualStart : OPTIONAL IfcDateTimeSelect; + EarlyStart : OPTIONAL IfcDateTimeSelect; + LateStart : OPTIONAL IfcDateTimeSelect; + ScheduleStart : OPTIONAL IfcDateTimeSelect; + ActualFinish : OPTIONAL IfcDateTimeSelect; + EarlyFinish : OPTIONAL IfcDateTimeSelect; + LateFinish : OPTIONAL IfcDateTimeSelect; + ScheduleFinish : OPTIONAL IfcDateTimeSelect; + ScheduleDuration : OPTIONAL IfcTimeMeasure; + ActualDuration : OPTIONAL IfcTimeMeasure; + RemainingTime : OPTIONAL IfcTimeMeasure; + FreeFloat : OPTIONAL IfcTimeMeasure; + TotalFloat : OPTIONAL IfcTimeMeasure; + IsCritical : OPTIONAL BOOLEAN; + StatusTime : OPTIONAL IfcDateTimeSelect; + StartFloat : OPTIONAL IfcTimeMeasure; + FinishFloat : OPTIONAL IfcTimeMeasure; + Completion : OPTIONAL IfcPositiveRatioMeasure; + INVERSE + ScheduleTimeControlAssigned : IfcRelAssignsTasks FOR TimeForTask; +END_ENTITY; + +ENTITY IfcSectionProperties; + SectionType : IfcSectionTypeEnum; + StartProfile : IfcProfileDef; + EndProfile : OPTIONAL IfcProfileDef; +END_ENTITY; + +ENTITY IfcSectionReinforcementProperties; + LongitudinalStartPosition : IfcLengthMeasure; + LongitudinalEndPosition : IfcLengthMeasure; + TransversePosition : OPTIONAL IfcLengthMeasure; + ReinforcementRole : IfcReinforcingBarRoleEnum; + SectionDefinition : IfcSectionProperties; + CrossSectionReinforcementDefinitions : SET [1:?] OF IfcReinforcementBarProperties; +END_ENTITY; + +ENTITY IfcSectionedSpine + SUBTYPE OF (IfcGeometricRepresentationItem); + SpineCurve : IfcCompositeCurve; + CrossSections : LIST [2:?] OF IfcProfileDef; + CrossSectionPositions : LIST [2:?] OF IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := 3; + WHERE + WR1 : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions); + WR2 : SIZEOF(QUERY(temp <* CrossSections | CrossSections[1].ProfileType <> temp.ProfileType)) = 0; + WR3 : SpineCurve.Dim = 3; +END_ENTITY; + +ENTITY IfcSensorType + SUBTYPE OF (IfcDistributionControlElementType); + PredefinedType : IfcSensorTypeEnum; +END_ENTITY; + +ENTITY IfcServiceLife + SUBTYPE OF (IfcControl); + ServiceLifeType : IfcServiceLifeTypeEnum; + ServiceLifeDuration : IfcTimeMeasure; +END_ENTITY; + +ENTITY IfcServiceLifeFactor + SUBTYPE OF (IfcPropertySetDefinition); + PredefinedType : IfcServiceLifeFactorTypeEnum; + UpperValue : OPTIONAL IfcMeasureValue; + MostUsedValue : IfcMeasureValue; + LowerValue : OPTIONAL IfcMeasureValue; + WHERE + WR31 : NOT(PredefinedType = IfcServiceLifeFactorTypeEnum.USERDEFINED) + OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcShapeAspect; + ShapeRepresentations : LIST [1:?] OF IfcShapeModel; + Name : OPTIONAL IfcLabel; + Description : OPTIONAL IfcText; + ProductDefinitional : LOGICAL; + PartOfProductDefinitionShape : IfcProductDefinitionShape; +END_ENTITY; + +ENTITY IfcShapeModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcShapeRepresentation + ,IfcTopologyRepresentation)) + SUBTYPE OF (IfcRepresentation); + INVERSE + OfShapeAspect : SET [0:1] OF IfcShapeAspect FOR ShapeRepresentations; + WHERE + WR11 : (SIZEOF(SELF\IfcRepresentation.OfProductRepresentation) = 1) XOR + (SIZEOF(SELF\IfcRepresentation.RepresentationMap) = 1) XOR + (SIZEOF(OfShapeAspect) = 1); +END_ENTITY; + +ENTITY IfcShapeRepresentation + SUBTYPE OF (IfcShapeModel); + WHERE + WR21 : 'IFC2X3.IFCGEOMETRICREPRESENTATIONCONTEXT' + IN TYPEOF(SELF\IfcRepresentation.ContextOfItems); + WR22 : SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) + AND (NOT(SIZEOF( + ['IFC2X3.IFCVERTEXPOINT', + 'IFC2X3.IFCEDGECURVE', + 'IFC2X3.IFCFACESURFACE'] * TYPEOF(temp)) = 1)) + )) = 0; + WR23 : EXISTS(SELF\IfcRepresentation.RepresentationType); + WR24 : IfcShapeRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); +END_ENTITY; + +ENTITY IfcShellBasedSurfaceModel + SUBTYPE OF (IfcGeometricRepresentationItem); + SbsmBoundary : SET [1:?] OF IfcShell; + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcSimpleProperty + ABSTRACT SUPERTYPE OF (ONEOF + (IfcPropertyBoundedValue + ,IfcPropertyEnumeratedValue + ,IfcPropertyListValue + ,IfcPropertyReferenceValue + ,IfcPropertySingleValue + ,IfcPropertyTableValue)) + SUBTYPE OF (IfcProperty); +END_ENTITY; + +ENTITY IfcSite + SUBTYPE OF (IfcSpatialStructureElement); + RefLatitude : OPTIONAL IfcCompoundPlaneAngleMeasure; + RefLongitude : OPTIONAL IfcCompoundPlaneAngleMeasure; + RefElevation : OPTIONAL IfcLengthMeasure; + LandTitleNumber : OPTIONAL IfcLabel; + SiteAddress : OPTIONAL IfcPostalAddress; +END_ENTITY; + +ENTITY IfcSlab + SUBTYPE OF (IfcBuildingElement); + PredefinedType : OPTIONAL IfcSlabTypeEnum; + WHERE + WR2 : (PredefinedType <> IfcSlabTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcSlabTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcSlabType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcSlabTypeEnum; +END_ENTITY; + +ENTITY IfcSlippageConnectionCondition + SUBTYPE OF (IfcStructuralConnectionCondition); + SlippageX : OPTIONAL IfcLengthMeasure; + SlippageY : OPTIONAL IfcLengthMeasure; + SlippageZ : OPTIONAL IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcSolidModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcCsgSolid + ,IfcManifoldSolidBrep + ,IfcSweptAreaSolid + ,IfcSweptDiskSolid)) + SUBTYPE OF (IfcGeometricRepresentationItem); + DERIVE + Dim : IfcDimensionCount := 3; +END_ENTITY; + +ENTITY IfcSoundProperties + SUBTYPE OF (IfcPropertySetDefinition); + IsAttenuating : IfcBoolean; + SoundScale : OPTIONAL IfcSoundScaleEnum; + SoundValues : LIST [1:8] OF IfcSoundValue; +END_ENTITY; + +ENTITY IfcSoundValue + SUBTYPE OF (IfcPropertySetDefinition); + SoundLevelTimeSeries : OPTIONAL IfcTimeSeries; + Frequency : IfcFrequencyMeasure; + SoundLevelSingleValue : OPTIONAL IfcDerivedMeasureValue; +END_ENTITY; + +ENTITY IfcSpace + SUBTYPE OF (IfcSpatialStructureElement); + InteriorOrExteriorSpace : IfcInternalOrExternalEnum; + ElevationWithFlooring : OPTIONAL IfcLengthMeasure; + INVERSE + HasCoverings : SET [0:?] OF IfcRelCoversSpaces FOR RelatedSpace; + BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace; +END_ENTITY; + +ENTITY IfcSpaceHeaterType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcSpaceHeaterTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcSpaceHeaterTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcSpaceHeaterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcSpaceProgram + SUBTYPE OF (IfcControl); + SpaceProgramIdentifier : IfcIdentifier; + MaxRequiredArea : OPTIONAL IfcAreaMeasure; + MinRequiredArea : OPTIONAL IfcAreaMeasure; + RequestedLocation : OPTIONAL IfcSpatialStructureElement; + StandardRequiredArea : IfcAreaMeasure; + INVERSE + HasInteractionReqsFrom : SET [0:?] OF IfcRelInteractionRequirements FOR RelatedSpaceProgram; + HasInteractionReqsTo : SET [0:?] OF IfcRelInteractionRequirements FOR RelatingSpaceProgram; +END_ENTITY; + +ENTITY IfcSpaceThermalLoadProperties + SUBTYPE OF (IfcPropertySetDefinition); + ApplicableValueRatio : OPTIONAL IfcPositiveRatioMeasure; + ThermalLoadSource : IfcThermalLoadSourceEnum; + PropertySource : IfcPropertySourceEnum; + SourceDescription : OPTIONAL IfcText; + MaximumValue : IfcPowerMeasure; + MinimumValue : OPTIONAL IfcPowerMeasure; + ThermalLoadTimeSeriesValues : OPTIONAL IfcTimeSeries; + UserDefinedThermalLoadSource : OPTIONAL IfcLabel; + UserDefinedPropertySource : OPTIONAL IfcLabel; + ThermalLoadType : IfcThermalLoadTypeEnum; +END_ENTITY; + +ENTITY IfcSpaceType + SUBTYPE OF (IfcSpatialStructureElementType); + PredefinedType : IfcSpaceTypeEnum; +END_ENTITY; + +ENTITY IfcSpatialStructureElement + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBuilding + ,IfcBuildingStorey + ,IfcSite + ,IfcSpace)) + SUBTYPE OF (IfcProduct); + LongName : OPTIONAL IfcLabel; + CompositionType : IfcElementCompositionEnum; + INVERSE + ReferencesElements : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatingStructure; + ServicedBySystems : SET [0:?] OF IfcRelServicesBuildings FOR RelatedBuildings; + ContainsElements : SET [0:?] OF IfcRelContainedInSpatialStructure FOR RelatingStructure; + WHERE + WR41 : (HIINDEX(SELF\IfcObjectDefinition.Decomposes) = 1) + AND + ('IFC2X3.IFCRELAGGREGATES' IN TYPEOF(SELF\IfcObjectDefinition.Decomposes[1])) + AND + (('IFC2X3.IFCPROJECT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) OR + ('IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) + ); +END_ENTITY; + +ENTITY IfcSpatialStructureElementType + ABSTRACT SUPERTYPE OF (ONEOF + (IfcSpaceType)) + SUBTYPE OF (IfcElementType); +END_ENTITY; + +ENTITY IfcSphere + SUBTYPE OF (IfcCsgPrimitive3D); + Radius : IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStackTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcStackTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcStair + SUBTYPE OF (IfcBuildingElement); + ShapeType : IfcStairTypeEnum; + WHERE + WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR + ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); +END_ENTITY; + +ENTITY IfcStairFlight + SUBTYPE OF (IfcBuildingElement); + NumberOfRiser : OPTIONAL INTEGER; + NumberOfTreads : OPTIONAL INTEGER; + RiserHeight : OPTIONAL IfcPositiveLengthMeasure; + TreadLength : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStairFlightType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcStairFlightTypeEnum; +END_ENTITY; + +ENTITY IfcStructuralAction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLinearAction + ,IfcStructuralPlanarAction + ,IfcStructuralPointAction)) + SUBTYPE OF (IfcStructuralActivity); + DestabilizingLoad : BOOLEAN; + CausedBy : OPTIONAL IfcStructuralReaction; +END_ENTITY; + +ENTITY IfcStructuralActivity + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralAction + ,IfcStructuralReaction)) + SUBTYPE OF (IfcProduct); + AppliedLoad : IfcStructuralLoad; + GlobalOrLocal : IfcGlobalOrLocalEnum; + INVERSE + AssignedToStructuralItem : IfcRelConnectsStructuralActivity FOR RelatedStructuralActivity; +END_ENTITY; + +ENTITY IfcStructuralAnalysisModel + SUBTYPE OF (IfcSystem); + PredefinedType : IfcAnalysisModelTypeEnum; + OrientationOf2DPlane : OPTIONAL IfcAxis2Placement3D; + LoadedBy : OPTIONAL SET [1:?] OF IfcStructuralLoadGroup; + HasResults : OPTIONAL SET [1:?] OF IfcStructuralResultGroup; +END_ENTITY; + +ENTITY IfcStructuralConnection + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralCurveConnection + ,IfcStructuralPointConnection + ,IfcStructuralSurfaceConnection)) + SUBTYPE OF (IfcStructuralItem); + AppliedCondition : OPTIONAL IfcBoundaryCondition; + INVERSE + ConnectsStructuralMembers : SET [1:?] OF IfcRelConnectsStructuralMember FOR RelatedStructuralConnection; +END_ENTITY; + +ENTITY IfcStructuralConnectionCondition + ABSTRACT SUPERTYPE OF (ONEOF + (IfcFailureConnectionCondition + ,IfcSlippageConnectionCondition)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcStructuralCurveConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralCurveMember + SUPERTYPE OF (ONEOF + (IfcStructuralCurveMemberVarying)) + SUBTYPE OF (IfcStructuralMember); + PredefinedType : IfcStructuralCurveTypeEnum; +END_ENTITY; + +ENTITY IfcStructuralCurveMemberVarying + SUBTYPE OF (IfcStructuralCurveMember); +END_ENTITY; + +ENTITY IfcStructuralItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralConnection + ,IfcStructuralMember)) + SUBTYPE OF (IfcProduct); + INVERSE + AssignedStructuralActivity : SET [0:?] OF IfcRelConnectsStructuralActivity FOR RelatingElement; +END_ENTITY; + +ENTITY IfcStructuralLinearAction + SUPERTYPE OF (ONEOF + (IfcStructuralLinearActionVarying)) + SUBTYPE OF (IfcStructuralAction); + ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADLINEARFORCE', + 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralLinearActionVarying + SUBTYPE OF (IfcStructuralLinearAction); + VaryingAppliedLoadLocation : IfcShapeAspect; + SubsequentAppliedLoads : LIST [1:?] OF IfcStructuralLoad; + DERIVE + VaryingAppliedLoads : LIST [2:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); +END_ENTITY; + +ENTITY IfcStructuralLoad + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLoadStatic)); + Name : OPTIONAL IfcLabel; +END_ENTITY; + +ENTITY IfcStructuralLoadGroup + SUBTYPE OF (IfcGroup); + PredefinedType : IfcLoadGroupTypeEnum; + ActionType : IfcActionTypeEnum; + ActionSource : IfcActionSourceTypeEnum; + Coefficient : OPTIONAL IfcPositiveRatioMeasure; + Purpose : OPTIONAL IfcLabel; + INVERSE + SourceOfResultGroup : SET [0:1] OF IfcStructuralResultGroup FOR ResultForLoadGroup; + LoadGroupFor : SET [0:?] OF IfcStructuralAnalysisModel FOR LoadedBy; +END_ENTITY; + +ENTITY IfcStructuralLoadLinearForce + SUBTYPE OF (IfcStructuralLoadStatic); + LinearForceX : OPTIONAL IfcLinearForceMeasure; + LinearForceY : OPTIONAL IfcLinearForceMeasure; + LinearForceZ : OPTIONAL IfcLinearForceMeasure; + LinearMomentX : OPTIONAL IfcLinearMomentMeasure; + LinearMomentY : OPTIONAL IfcLinearMomentMeasure; + LinearMomentZ : OPTIONAL IfcLinearMomentMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadPlanarForce + SUBTYPE OF (IfcStructuralLoadStatic); + PlanarForceX : OPTIONAL IfcPlanarForceMeasure; + PlanarForceY : OPTIONAL IfcPlanarForceMeasure; + PlanarForceZ : OPTIONAL IfcPlanarForceMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleDisplacement + SUPERTYPE OF (ONEOF + (IfcStructuralLoadSingleDisplacementDistortion)) + SUBTYPE OF (IfcStructuralLoadStatic); + DisplacementX : OPTIONAL IfcLengthMeasure; + DisplacementY : OPTIONAL IfcLengthMeasure; + DisplacementZ : OPTIONAL IfcLengthMeasure; + RotationalDisplacementRX : OPTIONAL IfcPlaneAngleMeasure; + RotationalDisplacementRY : OPTIONAL IfcPlaneAngleMeasure; + RotationalDisplacementRZ : OPTIONAL IfcPlaneAngleMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleDisplacementDistortion + SUBTYPE OF (IfcStructuralLoadSingleDisplacement); + Distortion : OPTIONAL IfcCurvatureMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleForce + SUPERTYPE OF (ONEOF + (IfcStructuralLoadSingleForceWarping)) + SUBTYPE OF (IfcStructuralLoadStatic); + ForceX : OPTIONAL IfcForceMeasure; + ForceY : OPTIONAL IfcForceMeasure; + ForceZ : OPTIONAL IfcForceMeasure; + MomentX : OPTIONAL IfcTorqueMeasure; + MomentY : OPTIONAL IfcTorqueMeasure; + MomentZ : OPTIONAL IfcTorqueMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadSingleForceWarping + SUBTYPE OF (IfcStructuralLoadSingleForce); + WarpingMoment : OPTIONAL IfcWarpingMomentMeasure; +END_ENTITY; + +ENTITY IfcStructuralLoadStatic + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralLoadLinearForce + ,IfcStructuralLoadPlanarForce + ,IfcStructuralLoadSingleDisplacement + ,IfcStructuralLoadSingleForce + ,IfcStructuralLoadTemperature)) + SUBTYPE OF (IfcStructuralLoad); +END_ENTITY; + +ENTITY IfcStructuralLoadTemperature + SUBTYPE OF (IfcStructuralLoadStatic); + DeltaT_Constant : OPTIONAL IfcThermodynamicTemperatureMeasure; + DeltaT_Y : OPTIONAL IfcThermodynamicTemperatureMeasure; + DeltaT_Z : OPTIONAL IfcThermodynamicTemperatureMeasure; +END_ENTITY; + +ENTITY IfcStructuralMember + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralCurveMember + ,IfcStructuralSurfaceMember)) + SUBTYPE OF (IfcStructuralItem); + INVERSE + ReferencesElement : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatedStructuralMember; + ConnectedBy : SET [0:?] OF IfcRelConnectsStructuralMember FOR RelatingStructuralMember; +END_ENTITY; + +ENTITY IfcStructuralPlanarAction + SUPERTYPE OF (ONEOF + (IfcStructuralPlanarActionVarying)) + SUBTYPE OF (IfcStructuralAction); + ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADPLANARFORCE', + 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralPlanarActionVarying + SUBTYPE OF (IfcStructuralPlanarAction); + VaryingAppliedLoadLocation : IfcShapeAspect; + SubsequentAppliedLoads : LIST [2:?] OF IfcStructuralLoad; + DERIVE + VaryingAppliedLoads : LIST [3:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); +END_ENTITY; + +ENTITY IfcStructuralPointAction + SUBTYPE OF (IfcStructuralAction); + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', + 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralPointConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralPointReaction + SUBTYPE OF (IfcStructuralReaction); + WHERE + WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', + 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] + * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; +END_ENTITY; + +ENTITY IfcStructuralProfileProperties + SUPERTYPE OF (ONEOF + (IfcStructuralSteelProfileProperties)) + SUBTYPE OF (IfcGeneralProfileProperties); + TorsionalConstantX : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaYZ : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaY : OPTIONAL IfcMomentOfInertiaMeasure; + MomentOfInertiaZ : OPTIONAL IfcMomentOfInertiaMeasure; + WarpingConstant : OPTIONAL IfcWarpingConstantMeasure; + ShearCentreZ : OPTIONAL IfcLengthMeasure; + ShearCentreY : OPTIONAL IfcLengthMeasure; + ShearDeformationAreaZ : OPTIONAL IfcAreaMeasure; + ShearDeformationAreaY : OPTIONAL IfcAreaMeasure; + MaximumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; + MinimumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; + MaximumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; + MinimumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; + TorsionalSectionModulus : OPTIONAL IfcSectionModulusMeasure; + CentreOfGravityInX : OPTIONAL IfcLengthMeasure; + CentreOfGravityInY : OPTIONAL IfcLengthMeasure; + WHERE + WR21 : NOT(EXISTS(ShearDeformationAreaY)) OR (ShearDeformationAreaY >= 0.); + WR22 : NOT(EXISTS(ShearDeformationAreaZ)) OR (ShearDeformationAreaZ >= 0.); +END_ENTITY; + +ENTITY IfcStructuralReaction + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStructuralPointReaction)) + SUBTYPE OF (IfcStructuralActivity); + INVERSE + Causes : SET [0:?] OF IfcStructuralAction FOR CausedBy; +END_ENTITY; + +ENTITY IfcStructuralResultGroup + SUBTYPE OF (IfcGroup); + TheoryType : IfcAnalysisTheoryTypeEnum; + ResultForLoadGroup : OPTIONAL IfcStructuralLoadGroup; + IsLinear : BOOLEAN; + INVERSE + ResultGroupFor : SET [0:1] OF IfcStructuralAnalysisModel FOR HasResults; +END_ENTITY; + +ENTITY IfcStructuralSteelProfileProperties + SUBTYPE OF (IfcStructuralProfileProperties); + ShearAreaZ : OPTIONAL IfcAreaMeasure; + ShearAreaY : OPTIONAL IfcAreaMeasure; + PlasticShapeFactorY : OPTIONAL IfcPositiveRatioMeasure; + PlasticShapeFactorZ : OPTIONAL IfcPositiveRatioMeasure; + WHERE + WR31 : NOT(EXISTS(ShearAreaY)) OR (ShearAreaY >= 0.); + WR32 : NOT(EXISTS(ShearAreaZ)) OR (ShearAreaZ >= 0.); +END_ENTITY; + +ENTITY IfcStructuralSurfaceConnection + SUBTYPE OF (IfcStructuralConnection); +END_ENTITY; + +ENTITY IfcStructuralSurfaceMember + SUPERTYPE OF (ONEOF + (IfcStructuralSurfaceMemberVarying)) + SUBTYPE OF (IfcStructuralMember); + PredefinedType : IfcStructuralSurfaceTypeEnum; + Thickness : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcStructuralSurfaceMemberVarying + SUBTYPE OF (IfcStructuralSurfaceMember); + SubsequentThickness : LIST [2:?] OF IfcPositiveLengthMeasure; + VaryingThicknessLocation : IfcShapeAspect; + DERIVE + VaryingThickness : LIST [3:?] OF IfcPositiveLengthMeasure := IfcAddToBeginOfList(SELF\IfcStructuralSurfaceMember.Thickness, SubsequentThickness); + WHERE + WR61 : EXISTS(SELF\IfcStructuralSurfaceMember.Thickness); + WR62 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | + NOT(SIZEOF(temp\IfcRepresentation.Items) = 1) + )) = 0; + WR63 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | + NOT(('IFC2X3.IFCCARTESIANPOINT' IN TYPEOF(temp\IfcRepresentation.Items[1])) + OR + ('IFC2X3.IFCPOINTONSURFACE' IN TYPEOF(temp\IfcRepresentation.Items[1]))) + )) = 0; +END_ENTITY; + +ENTITY IfcStructuredDimensionCallout + SUBTYPE OF (IfcDraughtingCallout); + WHERE + WR31 : SIZEOF(QUERY ( Ato <* QUERY ( Con <* SELF.contents | ( + 'IFC2X3.IFCANNOTATIONTEXTOCCURRENCE' IN + TYPEOF(Con)) ) | (NOT (Ato.Name IN ['dimension value', + 'tolerance value','unit text','prefix text','suffix text'])))) + = 0; +END_ENTITY; + +ENTITY IfcStyleModel + ABSTRACT SUPERTYPE OF (ONEOF + (IfcStyledRepresentation)) + SUBTYPE OF (IfcRepresentation); +END_ENTITY; + +ENTITY IfcStyledItem + SUPERTYPE OF (ONEOF + (IfcAnnotationOccurrence)) + SUBTYPE OF (IfcRepresentationItem); + Item : OPTIONAL IfcRepresentationItem; + Styles : SET [1:?] OF IfcPresentationStyleAssignment; + Name : OPTIONAL IfcLabel; + WHERE + WR11 : SIZEOF(Styles) = 1; + WR12 : NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(Item)); +END_ENTITY; + +ENTITY IfcStyledRepresentation + SUBTYPE OF (IfcStyleModel); + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | + (NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(temp))) + )) = 0; +END_ENTITY; + +ENTITY IfcSubContractResource + SUBTYPE OF (IfcConstructionResource); + SubContractor : OPTIONAL IfcActorSelect; + JobDescription : OPTIONAL IfcText; +END_ENTITY; + +ENTITY IfcSubedge + SUBTYPE OF (IfcEdge); + ParentEdge : IfcEdge; +END_ENTITY; + +ENTITY IfcSurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBoundedSurface + ,IfcElementarySurface + ,IfcSweptSurface)) + SUBTYPE OF (IfcGeometricRepresentationItem); +END_ENTITY; + +ENTITY IfcSurfaceCurveSweptAreaSolid + SUBTYPE OF (IfcSweptAreaSolid); + Directrix : IfcCurve; + StartParam : IfcParameterValue; + EndParam : IfcParameterValue; + ReferenceSurface : IfcSurface; +END_ENTITY; + +ENTITY IfcSurfaceOfLinearExtrusion + SUBTYPE OF (IfcSweptSurface); + ExtrudedDirection : IfcDirection; + Depth : IfcLengthMeasure; + DERIVE + ExtrusionAxis : IfcVector := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector (ExtrudedDirection, Depth); + WHERE + WR41 : Depth > 0.; +END_ENTITY; + +ENTITY IfcSurfaceOfRevolution + SUBTYPE OF (IfcSweptSurface); + AxisPosition : IfcAxis1Placement; + DERIVE + AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(AxisPosition.Location, + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(AxisPosition.Z,1.0)); +END_ENTITY; + +ENTITY IfcSurfaceStyle + SUBTYPE OF (IfcPresentationStyle); + Side : IfcSurfaceSide; + Styles : SET [1:5] OF IfcSurfaceStyleElementSelect; + WHERE + WR11 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLESHADING' IN + TYPEOF(Style) + )) <= 1; + WR12 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLELIGHTING' IN + TYPEOF(Style) + )) <= 1; + WR13 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLEREFRACTION' IN + TYPEOF(Style) + )) <= 1; + WR14 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCSURFACESTYLEWITHTEXTURES' IN + TYPEOF(Style) + )) <= 1; + WR15 : SIZEOF(QUERY(Style <* SELF.Styles | + 'IFC2X3.IFCEXTERNALLYDEFINEDSURFACESTYLE' IN + TYPEOF(Style) + )) <= 1; +END_ENTITY; + +ENTITY IfcSurfaceStyleLighting; + DiffuseTransmissionColour : IfcColourRgb; + DiffuseReflectionColour : IfcColourRgb; + TransmissionColour : IfcColourRgb; + ReflectanceColour : IfcColourRgb; +END_ENTITY; + +ENTITY IfcSurfaceStyleRefraction; + RefractionIndex : OPTIONAL IfcReal; + DispersionFactor : OPTIONAL IfcReal; +END_ENTITY; + +ENTITY IfcSurfaceStyleRendering + SUBTYPE OF (IfcSurfaceStyleShading); + Transparency : OPTIONAL IfcNormalisedRatioMeasure; + DiffuseColour : OPTIONAL IfcColourOrFactor; + TransmissionColour : OPTIONAL IfcColourOrFactor; + DiffuseTransmissionColour : OPTIONAL IfcColourOrFactor; + ReflectionColour : OPTIONAL IfcColourOrFactor; + SpecularColour : OPTIONAL IfcColourOrFactor; + SpecularHighlight : OPTIONAL IfcSpecularHighlightSelect; + ReflectanceMethod : IfcReflectanceMethodEnum; +END_ENTITY; + +ENTITY IfcSurfaceStyleShading + SUPERTYPE OF (ONEOF + (IfcSurfaceStyleRendering)); + SurfaceColour : IfcColourRgb; +END_ENTITY; + +ENTITY IfcSurfaceStyleWithTextures; + Textures : LIST [1:?] OF IfcSurfaceTexture; +END_ENTITY; + +ENTITY IfcSurfaceTexture + ABSTRACT SUPERTYPE OF (ONEOF + (IfcBlobTexture + ,IfcImageTexture + ,IfcPixelTexture)); + RepeatS : BOOLEAN; + RepeatT : BOOLEAN; + TextureType : IfcSurfaceTextureEnum; + TextureTransform : OPTIONAL IfcCartesianTransformationOperator2D; +END_ENTITY; + +ENTITY IfcSweptAreaSolid + ABSTRACT SUPERTYPE OF (ONEOF + (IfcExtrudedAreaSolid + ,IfcRevolvedAreaSolid + ,IfcSurfaceCurveSweptAreaSolid)) + SUBTYPE OF (IfcSolidModel); + SweptArea : IfcProfileDef; + Position : IfcAxis2Placement3D; + WHERE + WR22 : SweptArea.ProfileType = IfcProfileTypeEnum.Area; +END_ENTITY; + +ENTITY IfcSweptDiskSolid + SUBTYPE OF (IfcSolidModel); + Directrix : IfcCurve; + Radius : IfcPositiveLengthMeasure; + InnerRadius : OPTIONAL IfcPositiveLengthMeasure; + StartParam : IfcParameterValue; + EndParam : IfcParameterValue; + WHERE + WR1 : Directrix.Dim = 3; + WR2 : (NOT EXISTS(InnerRadius)) OR (Radius > InnerRadius); +END_ENTITY; + +ENTITY IfcSweptSurface + ABSTRACT SUPERTYPE OF (ONEOF + (IfcSurfaceOfLinearExtrusion + ,IfcSurfaceOfRevolution)) + SUBTYPE OF (IfcSurface); + SweptCurve : IfcProfileDef; + Position : IfcAxis2Placement3D; + DERIVE + Dim : IfcDimensionCount := Position.Dim; + WHERE + WR1 : NOT('IFC2X3.IFCDERIVEDPROFILEDEF' IN TYPEOF(SweptCurve)); + WR2 : SweptCurve.ProfileType = IfcProfileTypeEnum.Curve; +END_ENTITY; + +ENTITY IfcSwitchingDeviceType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcSwitchingDeviceTypeEnum; +END_ENTITY; + +ENTITY IfcSymbolStyle + SUBTYPE OF (IfcPresentationStyle); + StyleOfSymbol : IfcSymbolStyleSelect; +END_ENTITY; + +ENTITY IfcSystem + SUPERTYPE OF (ONEOF + (IfcElectricalCircuit + ,IfcStructuralAnalysisModel)) + SUBTYPE OF (IfcGroup); + INVERSE + ServicesBuildings : SET [0:1] OF IfcRelServicesBuildings FOR RelatingSystem; +END_ENTITY; + +ENTITY IfcSystemFurnitureElementType + SUBTYPE OF (IfcFurnishingElementType); +END_ENTITY; + +ENTITY IfcTShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + FlangeEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WebEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WebSlope : OPTIONAL IfcPlaneAngleMeasure; + FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : FlangeThickness < Depth; + WR2 : WebThickness < FlangeWidth; +END_ENTITY; + +ENTITY IfcTable; + Name : STRING; + Rows : LIST [1:?] OF IfcTableRow; + DERIVE + NumberOfCellsInRow : INTEGER := HIINDEX(Rows[1].RowCells); + NumberOfHeadings : INTEGER := SIZEOF(QUERY( Temp <* Rows | Temp.IsHeading)); + NumberOfDataRows : INTEGER := SIZEOF(QUERY( Temp <* Rows | NOT(Temp.IsHeading))); + WHERE + WR1 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; + WR2 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; + WR3 : { 0 <= NumberOfHeadings <= 1 }; +END_ENTITY; + +ENTITY IfcTableRow; + RowCells : LIST [1:?] OF IfcValue; + IsHeading : BOOLEAN; + INVERSE + OfTable : IfcTable FOR Rows; +END_ENTITY; + +ENTITY IfcTankType + SUBTYPE OF (IfcFlowStorageDeviceType); + PredefinedType : IfcTankTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcTankTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcTankTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcTask + SUPERTYPE OF (ONEOF + (IfcMove + ,IfcOrderAction)) + SUBTYPE OF (IfcProcess); + TaskId : IfcIdentifier; + Status : OPTIONAL IfcLabel; + WorkMethod : OPTIONAL IfcLabel; + IsMilestone : BOOLEAN; + Priority : OPTIONAL INTEGER; + WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; + WR3 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcTelecomAddress + SUBTYPE OF (IfcAddress); + TelephoneNumbers : OPTIONAL LIST [1:?] OF IfcLabel; + FacsimileNumbers : OPTIONAL LIST [1:?] OF IfcLabel; + PagerNumber : OPTIONAL IfcLabel; + ElectronicMailAddresses : OPTIONAL LIST [1:?] OF IfcLabel; + WWWHomePageURL : OPTIONAL IfcLabel; + WHERE + WR1 : EXISTS (TelephoneNumbers) OR + EXISTS (PagerNumber) OR + EXISTS (FacsimileNumbers) OR + EXISTS (ElectronicMailAddresses) OR + EXISTS (WWWHomePageURL); +END_ENTITY; + +ENTITY IfcTendon + SUBTYPE OF (IfcReinforcingElement); + PredefinedType : IfcTendonTypeEnum; + NominalDiameter : IfcPositiveLengthMeasure; + CrossSectionArea : IfcAreaMeasure; + TensionForce : OPTIONAL IfcForceMeasure; + PreStress : OPTIONAL IfcPressureMeasure; + FrictionCoefficient : OPTIONAL IfcNormalisedRatioMeasure; + AnchorageSlip : OPTIONAL IfcPositiveLengthMeasure; + MinCurvatureRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR1 : (PredefinedType <> IfcTendonTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTendonTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); +END_ENTITY; + +ENTITY IfcTendonAnchor + SUBTYPE OF (IfcReinforcingElement); +END_ENTITY; + +ENTITY IfcTerminatorSymbol + SUPERTYPE OF (ONEOF + (IfcDimensionCurveTerminator)) + SUBTYPE OF (IfcAnnotationSymbolOccurrence); + AnnotatedCurve : IfcAnnotationCurveOccurrence; +END_ENTITY; + +ENTITY IfcTextLiteral + SUPERTYPE OF (ONEOF + (IfcTextLiteralWithExtent)) + SUBTYPE OF (IfcGeometricRepresentationItem); + Literal : IfcPresentableText; + Placement : IfcAxis2Placement; + Path : IfcTextPath; +END_ENTITY; + +ENTITY IfcTextLiteralWithExtent + SUBTYPE OF (IfcTextLiteral); + Extent : IfcPlanarExtent; + BoxAlignment : IfcBoxAlignment; + WHERE + WR31 : NOT('IFC2X3.IFCPLANARBOX' IN TYPEOF(Extent)); +END_ENTITY; + +ENTITY IfcTextStyle + SUBTYPE OF (IfcPresentationStyle); + TextCharacterAppearance : OPTIONAL IfcCharacterStyleSelect; + TextStyle : OPTIONAL IfcTextStyleSelect; + TextFontStyle : IfcTextFontSelect; +END_ENTITY; + +ENTITY IfcTextStyleFontModel + SUBTYPE OF (IfcPreDefinedTextFont); + FontFamily : OPTIONAL LIST [1:?] OF IfcTextFontName; + FontStyle : OPTIONAL IfcFontStyle; + FontVariant : OPTIONAL IfcFontVariant; + FontWeight : OPTIONAL IfcFontWeight; + FontSize : IfcSizeSelect; + WHERE + WR31 : ('IFC2X3.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND + (SELF.FontSize > 0.); +END_ENTITY; + +ENTITY IfcTextStyleForDefinedFont; + Colour : IfcColour; + BackgroundColour : OPTIONAL IfcColour; +END_ENTITY; + +ENTITY IfcTextStyleTextModel; + TextIndent : OPTIONAL IfcSizeSelect; + TextAlign : OPTIONAL IfcTextAlignment; + TextDecoration : OPTIONAL IfcTextDecoration; + LetterSpacing : OPTIONAL IfcSizeSelect; + WordSpacing : OPTIONAL IfcSizeSelect; + TextTransform : OPTIONAL IfcTextTransformation; + LineHeight : OPTIONAL IfcSizeSelect; +END_ENTITY; + +ENTITY IfcTextStyleWithBoxCharacteristics; + BoxHeight : OPTIONAL IfcPositiveLengthMeasure; + BoxWidth : OPTIONAL IfcPositiveLengthMeasure; + BoxSlantAngle : OPTIONAL IfcPlaneAngleMeasure; + BoxRotateAngle : OPTIONAL IfcPlaneAngleMeasure; + CharacterSpacing : OPTIONAL IfcSizeSelect; +END_ENTITY; + +ENTITY IfcTextureCoordinate + ABSTRACT SUPERTYPE OF (ONEOF + (IfcTextureCoordinateGenerator + ,IfcTextureMap)); + INVERSE + AnnotatedSurface : SET [1:1] OF IfcAnnotationSurface FOR TextureCoordinates; +END_ENTITY; + +ENTITY IfcTextureCoordinateGenerator + SUBTYPE OF (IfcTextureCoordinate); + Mode : IfcLabel; + Parameter : LIST [1:?] OF IfcSimpleValue; +END_ENTITY; + +ENTITY IfcTextureMap + SUBTYPE OF (IfcTextureCoordinate); + TextureMaps : SET [1:?] OF IfcVertexBasedTextureMap; + WHERE + WR11 : SIZEOF([ + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCFACETEDBREP', + 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] + * TYPEOF(SELF\IfcTextureCoordinate.AnnotatedSurface[1].Item) + ) >= 1; +END_ENTITY; + +ENTITY IfcTextureVertex; + Coordinates : LIST [2:2] OF IfcParameterValue; +END_ENTITY; + +ENTITY IfcThermalMaterialProperties + SUBTYPE OF (IfcMaterialProperties); + SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; + BoilingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; + FreezingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; + ThermalConductivity : OPTIONAL IfcThermalConductivityMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcTimeSeries + ABSTRACT SUPERTYPE OF (ONEOF + (IfcIrregularTimeSeries + ,IfcRegularTimeSeries)); + Name : IfcLabel; + Description : OPTIONAL IfcText; + StartTime : IfcDateTimeSelect; + EndTime : IfcDateTimeSelect; + TimeSeriesDataType : IfcTimeSeriesDataTypeEnum; + DataOrigin : IfcDataOriginEnum; + UserDefinedDataOrigin : OPTIONAL IfcLabel; + Unit : OPTIONAL IfcUnit; + INVERSE + DocumentedBy : SET [0:1] OF IfcTimeSeriesReferenceRelationship FOR ReferencedTimeSeries; +END_ENTITY; + +ENTITY IfcTimeSeriesReferenceRelationship; + ReferencedTimeSeries : IfcTimeSeries; + TimeSeriesReferences : SET [1:?] OF IfcDocumentSelect; +END_ENTITY; + +ENTITY IfcTimeSeriesSchedule + SUBTYPE OF (IfcControl); + ApplicableDates : OPTIONAL LIST [1:?] OF IfcDateTimeSelect; + TimeSeriesScheduleType : IfcTimeSeriesScheduleTypeEnum; + TimeSeries : IfcTimeSeries; + WHERE + WR41 : NOT(TimeSeriesScheduleType=IfcTimeSeriesScheduleTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); +END_ENTITY; + +ENTITY IfcTimeSeriesValue; + ListValues : LIST [1:?] OF IfcValue; +END_ENTITY; + +ENTITY IfcTopologicalRepresentationItem + ABSTRACT SUPERTYPE OF (ONEOF + (IfcConnectedFaceSet + ,IfcEdge + ,IfcFace + ,IfcFaceBound + ,IfcLoop + ,IfcPath + ,IfcVertex)) + SUBTYPE OF (IfcRepresentationItem); +END_ENTITY; + +ENTITY IfcTopologyRepresentation + SUBTYPE OF (IfcShapeModel); + WHERE + WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | + NOT('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) + )) = 0; + WR22 : EXISTS(SELF\IfcRepresentation.RepresentationType); + WR23 : IfcTopologyRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); +END_ENTITY; + +ENTITY IfcTransformerType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcTransformerTypeEnum; +END_ENTITY; + +ENTITY IfcTransportElement + SUBTYPE OF (IfcElement); + OperationType : OPTIONAL IfcTransportElementTypeEnum; + CapacityByWeight : OPTIONAL IfcMassMeasure; + CapacityByNumber : OPTIONAL IfcCountMeasure; +END_ENTITY; + +ENTITY IfcTransportElementType + SUBTYPE OF (IfcElementType); + PredefinedType : IfcTransportElementTypeEnum; +END_ENTITY; + +ENTITY IfcTrapeziumProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + BottomXDim : IfcPositiveLengthMeasure; + TopXDim : IfcPositiveLengthMeasure; + YDim : IfcPositiveLengthMeasure; + TopXOffset : IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcTrimmedCurve + SUBTYPE OF (IfcBoundedCurve); + BasisCurve : IfcCurve; + Trim1 : SET [1:2] OF IfcTrimmingSelect; + Trim2 : SET [1:2] OF IfcTrimmingSelect; + SenseAgreement : BOOLEAN; + MasterRepresentation : IfcTrimmingPreference; + WHERE + WR41 : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2])); + WR42 : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2])); + WR43 : NOT('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(BasisCurve)); +END_ENTITY; + +ENTITY IfcTubeBundleType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcTubeBundleTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcTubeBundleTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcTubeBundleTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcTwoDirectionRepeatFactor + SUBTYPE OF (IfcOneDirectionRepeatFactor); + SecondRepeatFactor : IfcVector; +END_ENTITY; + +ENTITY IfcTypeObject + SUPERTYPE OF (ONEOF + (IfcTypeProduct)) + SUBTYPE OF (IfcObjectDefinition); + ApplicableOccurrence : OPTIONAL IfcLabel; + HasPropertySets : OPTIONAL SET [1:?] OF IfcPropertySetDefinition; + INVERSE + ObjectTypeOf : SET [0:1] OF IfcRelDefinesByType FOR RelatingType; + WHERE + WR1 : EXISTS(SELF\IfcRoot.Name); +END_ENTITY; + +ENTITY IfcTypeProduct + SUPERTYPE OF (ONEOF + (IfcDoorStyle + ,IfcElementType + ,IfcWindowStyle)) + SUBTYPE OF (IfcTypeObject); + RepresentationMaps : OPTIONAL LIST [1:?] OF UNIQUE IfcRepresentationMap; + Tag : OPTIONAL IfcLabel; + WHERE + WR41 : NOT(EXISTS(SELF\IfcTypeObject.ObjectTypeOf[1])) OR + (SIZEOF(QUERY(temp <* SELF\IfcTypeObject.ObjectTypeOf[1].RelatedObjects | + NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp))) + ) = 0); +END_ENTITY; + +ENTITY IfcUShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; + CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : FlangeThickness < (Depth / 2.); + WR22 : WebThickness < FlangeWidth; +END_ENTITY; + +ENTITY IfcUnitAssignment; + Units : SET [1:?] OF IfcUnit; + WHERE + WR01 : IfcCorrectUnitAssignment(Units); +END_ENTITY; + +ENTITY IfcUnitaryEquipmentType + SUBTYPE OF (IfcEnergyConversionDeviceType); + PredefinedType : IfcUnitaryEquipmentTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcUnitaryEquipmentTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcUnitaryEquipmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcValveType + SUBTYPE OF (IfcFlowControllerType); + PredefinedType : IfcValveTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcValveTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcValveTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcVector + SUBTYPE OF (IfcGeometricRepresentationItem); + Orientation : IfcDirection; + Magnitude : IfcLengthMeasure; + DERIVE + Dim : IfcDimensionCount := Orientation.Dim; + WHERE + WR1 : Magnitude >= 0.0; +END_ENTITY; + +ENTITY IfcVertex + SUPERTYPE OF (ONEOF + (IfcVertexPoint)) + SUBTYPE OF (IfcTopologicalRepresentationItem); +END_ENTITY; + +ENTITY IfcVertexBasedTextureMap; + TextureVertices : LIST [3:?] OF IfcTextureVertex; + TexturePoints : LIST [3:?] OF IfcCartesianPoint; +END_ENTITY; + +ENTITY IfcVertexLoop + SUBTYPE OF (IfcLoop); + LoopVertex : IfcVertex; +END_ENTITY; + +ENTITY IfcVertexPoint + SUBTYPE OF (IfcVertex); + VertexGeometry : IfcPoint; +END_ENTITY; + +ENTITY IfcVibrationIsolatorType + SUBTYPE OF (IfcDiscreteAccessoryType); + PredefinedType : IfcVibrationIsolatorTypeEnum; + WHERE + WR1 : (PredefinedType <> IfcVibrationIsolatorTypeEnum.USERDEFINED) OR + ((PredefinedType = IfcVibrationIsolatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); +END_ENTITY; + +ENTITY IfcVirtualElement + SUBTYPE OF (IfcElement); +END_ENTITY; + +ENTITY IfcVirtualGridIntersection; + IntersectingAxes : LIST [2:2] OF UNIQUE IfcGridAxis; + OffsetDistances : LIST [2:3] OF IfcLengthMeasure; +END_ENTITY; + +ENTITY IfcWall + SUPERTYPE OF (ONEOF + (IfcWallStandardCase)) + SUBTYPE OF (IfcBuildingElement); + WHERE + WR1 : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | + 'IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) + )) <= 1; +END_ENTITY; + +ENTITY IfcWallStandardCase + SUBTYPE OF (IfcWall); + WHERE + WR1 : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC2X3.IFCRELASSOCIATES.RELATEDOBJECTS') | + ('IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND + ('IFC2X3.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) + )) = 1; +END_ENTITY; + +ENTITY IfcWallType + SUBTYPE OF (IfcBuildingElementType); + PredefinedType : IfcWallTypeEnum; +END_ENTITY; + +ENTITY IfcWasteTerminalType + SUBTYPE OF (IfcFlowTerminalType); + PredefinedType : IfcWasteTerminalTypeEnum; +END_ENTITY; + +ENTITY IfcWaterProperties + SUBTYPE OF (IfcMaterialProperties); + IsPotable : OPTIONAL BOOLEAN; + Hardness : OPTIONAL IfcIonConcentrationMeasure; + AlkalinityConcentration : OPTIONAL IfcIonConcentrationMeasure; + AcidityConcentration : OPTIONAL IfcIonConcentrationMeasure; + ImpuritiesContent : OPTIONAL IfcNormalisedRatioMeasure; + PHLevel : OPTIONAL IfcPHMeasure; + DissolvedSolidsContent : OPTIONAL IfcNormalisedRatioMeasure; + UNIQUE + UR11 : Material; +END_ENTITY; + +ENTITY IfcWindow + SUBTYPE OF (IfcBuildingElement); + OverallHeight : OPTIONAL IfcPositiveLengthMeasure; + OverallWidth : OPTIONAL IfcPositiveLengthMeasure; +END_ENTITY; + +ENTITY IfcWindowLiningProperties + SUBTYPE OF (IfcPropertySetDefinition); + LiningDepth : OPTIONAL IfcPositiveLengthMeasure; + LiningThickness : OPTIONAL IfcPositiveLengthMeasure; + TransomThickness : OPTIONAL IfcPositiveLengthMeasure; + MullionThickness : OPTIONAL IfcPositiveLengthMeasure; + FirstTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; + SecondTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; + FirstMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; + SecondMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; + WHERE + WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); + WR32 : NOT(NOT(EXISTS(FirstTransomOffset)) AND EXISTS(SecondTransomOffset)); + WR33 : NOT(NOT(EXISTS(FirstMullionOffset)) AND EXISTS(SecondMullionOffset)); + WR34 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND + ('IFC2X3.IFCWINDOWSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); +END_ENTITY; + +ENTITY IfcWindowPanelProperties + SUBTYPE OF (IfcPropertySetDefinition); + OperationType : IfcWindowPanelOperationEnum; + PanelPosition : IfcWindowPanelPositionEnum; + FrameDepth : OPTIONAL IfcPositiveLengthMeasure; + FrameThickness : OPTIONAL IfcPositiveLengthMeasure; + ShapeAspectStyle : OPTIONAL IfcShapeAspect; +END_ENTITY; + +ENTITY IfcWindowStyle + SUBTYPE OF (IfcTypeProduct); + ConstructionType : IfcWindowStyleConstructionEnum; + OperationType : IfcWindowStyleOperationEnum; + ParameterTakesPrecedence : BOOLEAN; + Sizeable : BOOLEAN; +END_ENTITY; + +ENTITY IfcWorkControl + ABSTRACT SUPERTYPE OF (ONEOF + (IfcWorkPlan + ,IfcWorkSchedule)) + SUBTYPE OF (IfcControl); + Identifier : IfcIdentifier; + CreationDate : IfcDateTimeSelect; + Creators : OPTIONAL SET [1:?] OF IfcPerson; + Purpose : OPTIONAL IfcLabel; + Duration : OPTIONAL IfcTimeMeasure; + TotalFloat : OPTIONAL IfcTimeMeasure; + StartTime : IfcDateTimeSelect; + FinishTime : OPTIONAL IfcDateTimeSelect; + WorkControlType : OPTIONAL IfcWorkControlTypeEnum; + UserDefinedControlType : OPTIONAL IfcLabel; + WHERE + WR1 : (WorkControlType <> IfcWorkControlTypeEnum.USERDEFINED) OR + ((WorkControlType = IfcWorkControlTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcWorkControl.UserDefinedControlType)); +END_ENTITY; + +ENTITY IfcWorkPlan + SUBTYPE OF (IfcWorkControl); +END_ENTITY; + +ENTITY IfcWorkSchedule + SUBTYPE OF (IfcWorkControl); +END_ENTITY; + +ENTITY IfcZShapeProfileDef + SUBTYPE OF (IfcParameterizedProfileDef); + Depth : IfcPositiveLengthMeasure; + FlangeWidth : IfcPositiveLengthMeasure; + WebThickness : IfcPositiveLengthMeasure; + FlangeThickness : IfcPositiveLengthMeasure; + FilletRadius : OPTIONAL IfcPositiveLengthMeasure; + EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; + WHERE + WR21 : FlangeThickness < (Depth / 2.); +END_ENTITY; + +ENTITY IfcZone + SUBTYPE OF (IfcGroup); + WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT(('IFC2X3.IFCZONE' IN TYPEOF(temp)) OR ('IFC2X3.IFCSPACE' IN TYPEOF(temp))) )) = 0; +END_ENTITY; + +FUNCTION IfcAddToBeginOfList + (AScalar : GENERIC; + AList : LIST OF GENERIC:AL) + : LIST[1:?] OF GENERIC:AL; + + LOCAL + Result : LIST OF GENERIC:AL := []; + END_LOCAL; + + IF NOT(EXISTS(AScalar)) THEN + Result := AList; + ELSE + Result := Result + AScalar; + IF (HIINDEX(AList) >= 1) THEN + REPEAT i:=1 TO HIINDEX(AList); + Result[i+1] := AList[i]; + END_REPEAT; + END_IF; + END_IF; + RETURN(Result); +END_FUNCTION; + +FUNCTION IfcBaseAxis + (Dim : INTEGER; + Axis1, Axis2, Axis3 : IfcDirection) + : LIST [2:3] OF IfcDirection; + + LOCAL + U : LIST [2:3] OF IfcDirection; + Factor : REAL; + D1, D2 : IfcDirection; + END_LOCAL; + + IF (Dim = 3) THEN + D1 := NVL(IfcNormalise(Axis3), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + D2 := IfcFirstProjAxis(D1, Axis1); + U := [D2, IfcSecondProjAxis(D1, D2, Axis2), D1]; + ELSE + IF EXISTS(Axis1) THEN + D1 := IfcNormalise(Axis1); + U := [D1, IfcOrthogonalComplement(D1)]; + IF EXISTS(Axis2) THEN + Factor := IfcDotProduct(Axis2, U[2]); + IF (Factor < 0.0) THEN + U[2].DirectionRatios[1] := -U[2].DirectionRatios[1]; + U[2].DirectionRatios[2] := -U[2].DirectionRatios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(Axis2) THEN + D1 := IfcNormalise(Axis2); + U := [IfcOrthogonalComplement(D1), D1]; + U[1].DirectionRatios[1] := -U[1].DirectionRatios[1]; + U[1].DirectionRatios[2] := -U[1].DirectionRatios[2]; + ELSE + U := [IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0, 0.0]), + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(U); +END_FUNCTION; + +FUNCTION IfcBooleanChoose + (B : BOOLEAN ; + Choice1, Choice2 : Generic : Item) + : Generic : Item; + IF B THEN + RETURN (Choice1); + ELSE + RETURN (Choice2); + END_IF; +END_FUNCTION; + +FUNCTION IfcBuild2Axes + (RefDirection : IfcDirection) + : LIST [2:2] OF IfcDirection; + LOCAL + D : IfcDirection := NVL(IfcNormalise(RefDirection), + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0])); + END_LOCAL; + RETURN([D, IfcOrthogonalComplement(D)]); +END_FUNCTION; + +FUNCTION IfcBuildAxes + (Axis, RefDirection : IfcDirection) + : LIST [3:3] OF IfcDirection; + LOCAL + D1, D2 : IfcDirection; + END_LOCAL; + D1 := NVL(IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); + D2 := IfcFirstProjAxis(D1, RefDirection); + RETURN ([D2, IfcNormalise(IfcCrossProduct(D1,D2)).Orientation, D1]); +END_FUNCTION; + +FUNCTION IfcCorrectDimensions + (m : IfcUnitEnum; Dim : IfcDimensionalExponents) + : LOGICAL; + CASE m OF + LENGTHUNIT : IF + Dim = (IfcDimensionalExponents (1, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MASSUNIT : IF + Dim = (IfcDimensionalExponents (0, 1, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + TIMEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCURRENTUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + THERMODYNAMICTEMPERATUREUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + AMOUNTOFSUBSTANCEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 1, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + LUMINOUSINTENSITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + PLANEANGLEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + SOLIDANGLEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + AREAUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + VOLUMEUNIT : IF + Dim = (IfcDimensionalExponents (3, 0, 0, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + + ABSORBEDDOSEUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + RADIOACTIVITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCAPACITANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, 1, 4, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + DOSEEQUIVALENTUNIT : IF + Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCHARGEUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 1, 1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICCONDUCTANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, -1, 3, 2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICVOLTAGEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ELECTRICRESISTANCEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, -2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ENERGYUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + FORCEUNIT : IF + Dim = (IfcDimensionalExponents (1, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + FREQUENCYUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + INDUCTANCEUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, -2, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + ILLUMINANCEUNIT : IF + Dim = (IfcDimensionalExponents (-2, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + LUMINOUSFLUXUNIT : IF + Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MAGNETICFLUXUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -2, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + MAGNETICFLUXDENSITYUNIT : IF + Dim = (IfcDimensionalExponents (0, 1, -2, -1, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + POWERUNIT : IF + Dim = (IfcDimensionalExponents (2, 1, -3, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + PRESSUREUNIT : IF + Dim = (IfcDimensionalExponents (-1, 1, -2, 0, 0, 0, 0)) + THEN RETURN(TRUE); + ELSE RETURN(FALSE); + END_IF; + + OTHERWISE : + RETURN (UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION IfcCorrectLocalPlacement + (AxisPlacement:IfcAxis2Placement; + RelPlacement : IfcObjectPlacement) + : LOGICAL; + + IF (EXISTS(RelPlacement)) THEN + IF ('IFC2X3.IFCGRIDPLACEMENT' IN TYPEOF(RelPlacement)) THEN + RETURN(?); + END_IF; + IF ('IFC2X3.IFCLOCALPLACEMENT' IN TYPEOF(RelPlacement)) THEN + IF ('IFC2X3.IFCAXIS2PLACEMENT2D' IN TYPEOF(AxisPlacement)) THEN + RETURN(TRUE); + END_IF; + IF ('IFC2X3.IFCAXIS2PLACEMENT3D' IN TYPEOF(AxisPlacement)) THEN + IF (RelPlacement.RelativePlacement.Dim = 3) THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + ELSE + RETURN(TRUE); + END_IF; + RETURN(?); +END_FUNCTION; + +FUNCTION IfcCorrectObjectAssignment + (Constraint: IfcObjectTypeEnum; Objects : SET[1:?] OF IfcObjectDefinition) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + IF NOT(EXISTS(Constraint)) THEN + RETURN(TRUE); + END_IF; + + CASE Constraint OF + IfcObjectTypeEnum.NOTDEFINED : RETURN(TRUE); + IfcObjectTypeEnum.PRODUCT : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.PROCESS : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROCESS' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.CONTROL : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCCONTROL' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.RESOURCE : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCRESOURCE' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.ACTOR : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCACTOR' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.GROUP : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCGROUP' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + IfcObjectTypeEnum.PROJECT : + BEGIN + Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROJECT' IN TYPEOF(temp)))); + RETURN(Count = 0); + END; + OTHERWISE : RETURN(?); + END_CASE; +END_FUNCTION; + +FUNCTION IfcCorrectUnitAssignment + (Units : SET [1:?] OF IfcUnit) + : LOGICAL; + + LOCAL + NamedUnitNumber : INTEGER := 0; + DerivedUnitNumber : INTEGER := 0; + MonetaryUnitNumber : INTEGER := 0; + NamedUnitNames : SET OF IfcUnitEnum := []; + DerivedUnitNames : SET OF IfcDerivedUnitEnum := []; + END_LOCAL; + + NamedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(temp)) AND NOT(temp.UnitType = IfcUnitEnum.USERDEFINED))); + DerivedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(temp)) AND NOT(temp.UnitType = IfcDerivedUnitEnum.USERDEFINED))); + MonetaryUnitNumber := SIZEOF(QUERY(temp <* Units | 'IFC2X3.IFCMONETARYUNIT' IN TYPEOF(temp))); + + REPEAT i := 1 TO SIZEOF(Units); + IF (('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i].UnitType = IfcUnitEnum.USERDEFINED)) THEN + NamedUnitNames := NamedUnitNames + Units[i].UnitType; + END_IF; + IF (('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i].UnitType = IfcDerivedUnitEnum.USERDEFINED)) THEN + DerivedUnitNames := DerivedUnitNames + Units[i].UnitType; + END_IF; + END_REPEAT; + + RETURN((SIZEOF(NamedUnitNames) = NamedUnitNumber) AND (SIZEOF(DerivedUnitNames) = DerivedUnitNumber) AND (MonetaryUnitNumber <= 1)); +END_FUNCTION; + +FUNCTION IfcCrossProduct + (Arg1, Arg2 : IfcDirection) + : IfcVector; + LOCAL + Mag : REAL; + Res : IfcDirection; + V1,V2 : LIST[3:3] OF REAL; + Result : IfcVector; + END_LOCAL; + + IF (NOT EXISTS (Arg1) OR (Arg1.Dim = 2)) OR (NOT EXISTS (Arg2) OR (Arg2.Dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + V1 := IfcNormalise(Arg1).DirectionRatios; + V2 := IfcNormalise(Arg2).DirectionRatios; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () + || IfcDirection([(V1[2]*V2[3] - V1[3]*V2[2]), (V1[3]*V2[1] - V1[1]*V2[3]), (V1[1]*V2[2] - V1[2]*V2[1])]); + Mag := 0.0; + REPEAT i := 1 TO 3; + Mag := Mag + Res.DirectionRatios[i]*Res.DirectionRatios[i]; + END_REPEAT; + IF (Mag > 0.0) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Arg1, 0.0); + END_IF; + RETURN(Result); + END; + END_IF; +END_FUNCTION; + +FUNCTION IfcCurveDim + (Curve : IfcCurve) + : IfcDimensionCount; + + IF ('IFC2X3.IFCLINE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Pnt.Dim); + END_IF; + IF ('IFC2X3.IFCCONIC' IN TYPEOF(Curve)) + THEN RETURN(Curve.Position.Dim); + END_IF; + IF ('IFC2X3.IFCPOLYLINE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Points[1].Dim); + END_IF; + IF ('IFC2X3.IFCTRIMMEDCURVE' IN TYPEOF(Curve)) + THEN RETURN(IfcCurveDim(Curve.BasisCurve)); + END_IF; + IF ('IFC2X3.IFCCOMPOSITECURVE' IN TYPEOF(Curve)) + THEN RETURN(Curve.Segments[1].Dim); + END_IF; + IF ('IFC2X3.IFCBSPLINECURVE' IN TYPEOF(Curve)) + THEN RETURN(Curve.ControlPointsList[1].Dim); + END_IF; + IF ('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(Curve)) + THEN RETURN(2); + END_IF; + IF ('IFC2X3.IFCOFFSETCURVE3D' IN TYPEOF(Curve)) + THEN RETURN(3); + END_IF; + RETURN (?); +END_FUNCTION; + +FUNCTION IfcCurveWeightsPositive + (B: IfcRationalBezierCurve) + : BOOLEAN; + LOCAL + Result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO B.UpperIndexOnControlPoints; + IF B.Weights[i] <= 0.0 THEN + Result := FALSE; + RETURN(Result); + END_IF; + END_REPEAT; + RETURN(Result); +END_FUNCTION; + +FUNCTION IfcDeriveDimensionalExponents + (x : IfcUnit) + : IfcDimensionalExponents; + LOCAL + Result : IfcDimensionalExponents := + IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0); + END_LOCAL; + IF 'IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x.Elements) TO HIINDEX(x.Elements); + Result.LengthExponent := Result.LengthExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.LengthExponent); + Result.MassExponent := Result.MassExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.MassExponent); + Result.TimeExponent := Result.TimeExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.TimeExponent); + Result.ElectricCurrentExponent := Result.ElectricCurrentExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.ElectricCurrentExponent); + Result.ThermodynamicTemperatureExponent := + Result.ThermodynamicTemperatureExponent + + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.ThermodynamicTemperatureExponent); + Result.AmountOfSubstanceExponent := + Result.AmountOfSubstanceExponent + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.AmountOfSubstanceExponent); + Result.LuminousIntensityExponent := + Result.LuminousIntensityExponent + (x.Elements[i].Exponent * + x.Elements[i].Unit.Dimensions.LuminousIntensityExponent); + END_REPEAT; + ELSE + Result := x.Dimensions; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcDimensionsForSiUnit + (n : IfcSiUnitName ) + : IfcDimensionalExponents; + CASE n OF + METRE : RETURN (IfcDimensionalExponents + (1, 0, 0, 0, 0, 0, 0)); + SQUARE_METRE : RETURN (IfcDimensionalExponents + (2, 0, 0, 0, 0, 0, 0)); + CUBIC_METRE : RETURN (IfcDimensionalExponents + (3, 0, 0, 0, 0, 0, 0)); + GRAM : RETURN (IfcDimensionalExponents + (0, 1, 0, 0, 0, 0, 0)); + SECOND : RETURN (IfcDimensionalExponents + (0, 0, 1, 0, 0, 0, 0)); + AMPERE : RETURN (IfcDimensionalExponents + (0, 0, 0, 1, 0, 0, 0)); + KELVIN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 1, 0, 0)); + MOLE : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 1, 0)); + CANDELA : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 1)); + RADIAN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + STERADIAN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + HERTZ : RETURN (IfcDimensionalExponents + (0, 0, -1, 0, 0, 0, 0)); + NEWTON : RETURN (IfcDimensionalExponents + (1, 1, -2, 0, 0, 0, 0)); + PASCAL : RETURN (IfcDimensionalExponents + (-1, 1, -2, 0, 0, 0, 0)); + JOULE : RETURN (IfcDimensionalExponents + (2, 1, -2, 0, 0, 0, 0)); + WATT : RETURN (IfcDimensionalExponents + (2, 1, -3, 0, 0, 0, 0)); + COULOMB : RETURN (IfcDimensionalExponents + (0, 0, 1, 1, 0, 0, 0)); + VOLT : RETURN (IfcDimensionalExponents + (2, 1, -3, -1, 0, 0, 0)); + FARAD : RETURN (IfcDimensionalExponents + (-2, -1, 4, 1, 0, 0, 0)); + OHM : RETURN (IfcDimensionalExponents + (2, 1, -3, -2, 0, 0, 0)); + SIEMENS : RETURN (IfcDimensionalExponents + (-2, -1, 3, 2, 0, 0, 0)); + WEBER : RETURN (IfcDimensionalExponents + (2, 1, -2, -1, 0, 0, 0)); + TESLA : RETURN (IfcDimensionalExponents + (0, 1, -2, -1, 0, 0, 0)); + HENRY : RETURN (IfcDimensionalExponents + (2, 1, -2, -2, 0, 0, 0)); + DEGREE_CELSIUS : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 1, 0, 0)); + LUMEN : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 1)); + LUX : RETURN (IfcDimensionalExponents + (-2, 0, 0, 0, 0, 0, 1)); + BECQUEREL : RETURN (IfcDimensionalExponents + (0, 0, -1, 0, 0, 0, 0)); + GRAY : RETURN (IfcDimensionalExponents + (2, 0, -2, 0, 0, 0, 0)); + SIEVERT : RETURN (IfcDimensionalExponents + (2, 0, -2, 0, 0, 0, 0)); + OTHERWISE : RETURN (IfcDimensionalExponents + (0, 0, 0, 0, 0, 0, 0)); + END_CASE; +END_FUNCTION; + +FUNCTION IfcDotProduct + (Arg1, Arg2 : IfcDirection) + : REAL; + LOCAL + Scalar : REAL; + Vec1, Vec2 : IfcDirection; + Ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (Arg1) OR NOT EXISTS (Arg2) THEN + Scalar := ?; + ELSE + IF (Arg1.Dim <> Arg2.Dim) THEN + Scalar := ?; + ELSE + BEGIN + Vec1 := IfcNormalise(Arg1); + Vec2 := IfcNormalise(Arg2); + Ndim := Arg1.Dim; + Scalar := 0.0; + REPEAT i := 1 TO Ndim; + Scalar := Scalar + Vec1.DirectionRatios[i]*Vec2.DirectionRatios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (Scalar); +END_FUNCTION; + +FUNCTION IfcFirstProjAxis + (ZAxis, Arg : IfcDirection) + : IfcDirection; + LOCAL + XAxis : IfcDirection; + V : IfcDirection; + Z : IfcDirection; + XVec : IfcVector; + END_LOCAL; + + IF (NOT EXISTS(ZAxis)) THEN + RETURN (?) ; + ELSE + Z := IfcNormalise(ZAxis); + IF NOT EXISTS(Arg) THEN + IF (Z.DirectionRatios <> [1.0,0.0,0.0]) THEN + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0,0.0]); + ELSE + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); + END_IF; + ELSE + IF (Arg.Dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((IfcCrossProduct(Arg,Z).Magnitude) = 0.0) THEN + RETURN (?); + ELSE + V := IfcNormalise(Arg); + END_IF; + END_IF; + XVec := IfcScalarTimesVector(IfcDotProduct(V, Z), Z); + XAxis := IfcVectorDifference(V, XVec).Orientation; + XAxis := IfcNormalise(XAxis); + END_IF; + RETURN(XAxis); +END_FUNCTION; + +FUNCTION IfcLeapYear + (Year : IfcYearNumber) + : BOOLEAN; + + IF ((((Year MOD 4) = 0) AND ((Year MOD 100) <> 0)) OR + ((Year MOD 400) = 0)) THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; +END_FUNCTION; + +FUNCTION IfcListToArray + (Lis : LIST [0:?] OF GENERIC : T; + Low,U : INTEGER) + : ARRAY OF GENERIC : T; + LOCAL + N : INTEGER; + Res : ARRAY [Low:U] OF GENERIC : T; + END_LOCAL; + + N := SIZEOF(Lis); + IF (N <> (U-Low +1)) THEN + RETURN(?); + ELSE + Res := [Lis[1] : N]; + REPEAT i := 2 TO N; + Res[Low+i-1] := Lis[i]; + END_REPEAT; + RETURN(Res); + END_IF; +END_FUNCTION; + +FUNCTION IfcLoopHeadToTail + (ALoop : IfcEdgeLoop) + : LOGICAL; + LOCAL + N : INTEGER; + P : LOGICAL := TRUE; + END_LOCAL; + + N := SIZEOF (ALoop.EdgeList); + REPEAT i := 2 TO N; + P := P AND (ALoop.EdgeList[i-1].EdgeEnd :=: + ALoop.EdgeList[i].EdgeStart); + END_REPEAT; + RETURN (P); +END_FUNCTION; + +FUNCTION IfcMlsTotalThickness + (LayerSet : IfcMaterialLayerSet) + : IfcLengthMeasure; + LOCAL + Max : IfcLengthMeasure := LayerSet.MaterialLayers[1].LayerThickness; + END_LOCAL; + + IF SIZEOF(LayerSet.MaterialLayers) > 1 THEN + REPEAT i := 2 TO HIINDEX(LayerSet.MaterialLayers); + Max := Max + LayerSet.MaterialLayers[i].LayerThickness; + END_REPEAT; + END_IF; + RETURN (Max); +END_FUNCTION; + +FUNCTION IfcNoOfLayers + (Element : IfcElement ) + : INTEGER; + + LOCAL + Association : BAG OF IfcRelAssociates := []; + MaterialAssociation : SET OF IfcRelAssociatesMaterial := []; + END_LOCAL; + + Association := USEDIN(Element, 'IFC2X3.IFCRELASSOCIATES.RELATEDOBJECTS'); + + IF SIZEOF (Association) > 0 THEN + REPEAT i := 1 TO HIINDEX(Association); + IF ('IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(Association[i])) THEN + MaterialAssociation := MaterialAssociation + Association[i]; + END_IF; + END_REPEAT; + END_IF; + + IF (SIZEOF(MaterialAssociation) <> 1) THEN + RETURN (?); + ELSE + IF 'IFC2X3.IFCMATERIAL' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (1); + END_IF; + IF 'IFC2X3.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (SIZEOF(MaterialAssociation[1].RelatingMaterial.ForLayerSet.MaterialLayers)); + END_IF; + IF 'IFC2X3.IFCMATERIALLIST' IN TYPEOF(MaterialAssociation[1].RelatingMaterial) THEN + RETURN (?); + END_IF; + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION IfcNormalise + (Arg : IfcVectorOrDirection) + : IfcVectorOrDirection; + LOCAL + Ndim : INTEGER; + V : IfcDirection + := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]); + Vec : IfcVector + := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector ( + IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]), 1.); + Mag : REAL; + Result : IfcVectorOrDirection + := V; + END_LOCAL; + + IF NOT EXISTS (Arg) THEN + RETURN (?); + ELSE + Ndim := Arg.Dim; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg) THEN + BEGIN + V.DirectionRatios := Arg.Orientation.DirectionRatios; + Vec.Magnitude := Arg.Magnitude; + Vec.Orientation := V; + IF Arg.Magnitude = 0.0 THEN + RETURN(?); + ELSE + Vec.Magnitude := 1.0; + END_IF; + END; + ELSE + V.DirectionRatios := Arg.DirectionRatios; + END_IF; + Mag := 0.0; + REPEAT i := 1 TO Ndim; + Mag := Mag + V.DirectionRatios[i]*V.DirectionRatios[i]; + END_REPEAT; + IF Mag > 0.0 THEN + Mag := SQRT(Mag); + REPEAT i := 1 TO Ndim; + V.DirectionRatios[i] := V.DirectionRatios[i]/Mag; + END_REPEAT; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(arg) THEN + Vec.Orientation := V; + Result := Vec; + ELSE + Result := V; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcOrthogonalComplement + (Vec : IfcDirection) + : IfcDirection; + LOCAL + Result : IfcDirection ; + END_LOCAL; + IF NOT EXISTS (Vec) OR (Vec.Dim <> 2) THEN + RETURN(?); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([-Vec.DirectionRatios[2], Vec.DirectionRatios[1]]); + RETURN(Result); + END_IF; +END_FUNCTION; + +FUNCTION IfcPathHeadToTail + (APath : IfcPath) + : LOGICAL; + LOCAL + N : INTEGER := 0; + P : LOGICAL := UNKNOWN; + END_LOCAL; + N := SIZEOF (APath.EdgeList); + REPEAT i := 2 TO N; + P := P AND (APath.EdgeList[i-1].EdgeEnd :=: + APath.EdgeList[i].EdgeStart); + END_REPEAT; + RETURN (P); +END_FUNCTION; + +FUNCTION IfcSameAxis2Placement + (ap1, ap2 : IfcAxis2Placement; Epsilon : REAL) + : LOGICAL; + + RETURN (IfcSameDirection(ap1.P[1],ap2.P[1],Epsilon) AND + IfcSameDirection(ap1.P[2],ap2.P[2],Epsilon) AND + IfcSameCartesianPoint(ap1.Location,ap1.Location,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameCartesianPoint + (cp1, cp2 : IfcCartesianPoint; Epsilon : REAL) + : LOGICAL; + + LOCAL + cp1x : REAL := cp1.Coordinates[1]; + cp1y : REAL := cp1.Coordinates[2]; + cp1z : REAL := 0; + cp2x : REAL := cp2.Coordinates[1]; + cp2y : REAL := cp2.Coordinates[2]; + cp2z : REAL := 0; + END_LOCAL; + + IF (SIZEOF(cp1.Coordinates) > 2) THEN + cp1z := cp1.Coordinates[3]; + END_IF; + + IF (SIZEOF(cp2.Coordinates) > 2) THEN + cp2z := cp2.Coordinates[3]; + END_IF; + + RETURN (IfcSameValue(cp1x,cp2x,Epsilon) AND + IfcSameValue(cp1y,cp2y,Epsilon) AND + IfcSameValue(cp1z,cp2z,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameDirection + (dir1, dir2 : IfcDirection; Epsilon : REAL) + : LOGICAL; + LOCAL + dir1x : REAL := dir1.DirectionRatios[1]; + dir1y : REAL := dir1.DirectionRatios[2]; + dir1z : REAL := 0; + dir2x : REAL := dir2.DirectionRatios[1]; + dir2y : REAL := dir2.DirectionRatios[2]; + dir2z : REAL := 0; + END_LOCAL; + + IF (SIZEOF(dir1.DirectionRatios) > 2) THEN + dir1z := dir1.DirectionRatios[3]; + END_IF; + + IF (SIZEOF(dir2.DirectionRatios) > 2) THEN + dir2z := dir2.DirectionRatios[3]; + END_IF; + + RETURN (IfcSameValue(dir1x,dir2x,Epsilon) AND + IfcSameValue(dir1y,dir2y,Epsilon) AND + IfcSameValue(dir1z,dir2z,Epsilon)); +END_FUNCTION; + +FUNCTION IfcSameValidPrecision + (Epsilon1, Epsilon2 : REAL) + : LOGICAL; + LOCAL + ValidEps1, ValidEps2 : REAL; + DefaultEps : REAL := 0.000001; + DerivationOfEps : REAL := 1.001; + UpperEps : REAL := 1.0; + END_LOCAL; + + ValidEps1 := NVL(Epsilon1, DefaultEps); + ValidEps2 := NVL(Epsilon2, DefaultEps); + RETURN ((0.0 < ValidEps1) AND (ValidEps1 <= (DerivationOfEps * ValidEps2)) AND + (ValidEps2 <= (DerivationOfEps * ValidEps1)) AND (ValidEps2 < UpperEps)); +END_FUNCTION; + +FUNCTION IfcSameValue + (Value1, Value2 : REAL; Epsilon : REAL) + : LOGICAL; + LOCAL + ValidEps : REAL; + DefaultEps : REAL := 0.000001; + END_LOCAL; + + ValidEps := NVL(Epsilon, DefaultEps); + RETURN ((Value1 + ValidEps > Value2) AND (Value1 < Value2 + ValidEps)); +END_FUNCTION; + +FUNCTION IfcScalarTimesVector + (Scalar : REAL; Vec : IfcVectorOrDirection) + : IfcVector; + LOCAL + V : IfcDirection; + Mag : REAL; + Result : IfcVector; + END_LOCAL; + + IF NOT EXISTS (Scalar) OR NOT EXISTS (Vec) THEN + RETURN (?) ; + ELSE + IF 'IFC2X3.IFCVECTOR' IN TYPEOF (Vec) THEN + V := Vec.Orientation; + Mag := Scalar * Vec.Magnitude; + ELSE + V := Vec; + Mag := Scalar; + END_IF; + IF (Mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(V.DirectionRatios); + V.DirectionRatios[i] := -V.DirectionRatios[i]; + END_REPEAT; + Mag := -Mag; + END_IF; + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(IfcNormalise(V), Mag); + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcSecondProjAxis + (ZAxis, XAxis, Arg: IfcDirection) + : IfcDirection; + LOCAL + YAxis : IfcVector; + V : IfcDirection; + Temp : IfcVector; + END_LOCAL; + + IF NOT EXISTS(Arg) THEN + V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); + ELSE + V := Arg; + END_IF; + Temp := IfcScalarTimesVector(IfcDotProduct(V, ZAxis), ZAxis); + YAxis := IfcVectorDifference(V, Temp); + Temp := IfcScalarTimesVector(IfcDotProduct(V, XAxis), XAxis); + YAxis := IfcVectorDifference(YAxis, Temp); + YAxis := IfcNormalise(YAxis); + RETURN(YAxis.Orientation); +END_FUNCTION; + +FUNCTION IfcShapeRepresentationTypes + (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + CASE RepType OF + 'Curve2D' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) + AND (temp.Dim = 2))); + END; + 'Annotation2D' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ( + SIZEOF(TYPEOF(temp) * [ + 'IFC2X3.IFCPOINT', + 'IFC2X3.IFCCURVE', + 'IFC2X3.IFCGEOMETRICCURVESET', + 'IFC2X3.IFCANNOTATIONFILLAREA', + 'IFC2X3.IFCDEFINEDSYMBOL', + 'IFC2X3.IFCTEXTLITERAL', + 'IFC2X3.IFCDRAUGHTINGCALLOUT']) = 1) + )); + END; + 'GeometricSet' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) + OR ('IFC2X3.IFCSURFACE' IN TYPEOF(temp)))); + END; + 'GeometricCurveSet' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICCURVESET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) + OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)))); + REPEAT i:=1 TO HIINDEX(Items); + IF ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(Items[i])) + THEN + IF (SIZEOF(QUERY(temp <* Items[i]\IfcGeometricSet.Elements | 'IFC2X3.IFCSURFACE' IN TYPEOF(temp))) > 0) + THEN + Count := Count - 1; + END_IF; + END_IF; + END_REPEAT; + END; + 'SurfaceModel' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ + 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', + 'IFC2X3.IFCFACEBASEDSURFACEMODEL', + 'IFC2X3.IFCFACETEDBREP', + 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] * TYPEOF(temp)) >= 1 + )); + END; + 'SolidModel' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSOLIDMODEL' IN TYPEOF(temp)))); + END; + 'SweptSolid' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(temp)))); + END; + 'CSG' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANRESULT' IN TYPEOF(temp)))); + END; + 'Clipping' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(temp)))); + END; + 'AdvancedSweptSolid' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSURFACECURVESWEPTAREASOLID' IN TYPEOF(temp)) + OR ('IFC2X3.IFCSWEPTDISKSOLID' IN TYPEOF(temp)))); + END; + 'Brep' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCFACETEDBREP' IN TYPEOF(temp)) + OR ('IFC2X3.IFCFACETEDBREPWITHVOIDS' IN TYPEOF(temp)))); + END; + 'BoundingBox' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOUNDINGBOX' IN TYPEOF(temp)))); + IF (SIZEOF(Items) > 1) + THEN + Count := 0; + END_IF; + END; + 'SectionedSpine' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSECTIONEDSPINE' IN TYPEOF(temp)))); + END; + 'MappedRepresentation' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCMAPPEDITEM' IN TYPEOF(temp)))); + END; + OTHERWISE : RETURN(?); + END_CASE; + RETURN (Count = SIZEOF(Items)); +END_FUNCTION; + +FUNCTION IfcTopologyRepresentationTypes + (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) + : LOGICAL; + + LOCAL + Count : INTEGER := 0; + END_LOCAL; + + CASE RepType OF + 'Vertex' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCVERTEX' IN TYPEOF(temp)))); + END; + 'Edge' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCEDGE' IN TYPEOF(temp)))); + END; + 'Path' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCPATH' IN TYPEOF(temp)))); + END; + 'Face' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCFACE' IN TYPEOF(temp)))); + END; + 'Shell' : + BEGIN + Count := SIZEOF(QUERY(temp <* Items | + ('IFC2X3.IFCOPENSHELL' IN TYPEOF(temp)) + OR ('IFC2X3.IFCCLOSEDSHELL' IN TYPEOF(temp)))); + END; + 'Undefined': RETURN(TRUE); + OTHERWISE : RETURN(?); + END_CASE; + RETURN (Count = SIZEOF(Items)); +END_FUNCTION; + +FUNCTION IfcUniquePropertyName + (Properties : SET [1:?] OF IfcProperty) + : LOGICAL; + + LOCAL + Names : SET OF IfcIdentifier := []; + END_LOCAL; + + REPEAT i:=1 TO HIINDEX(Properties); + Names := Names + Properties[i].Name; + END_REPEAT; + RETURN (SIZEOF(Names) = SIZEOF(Properties)); +END_FUNCTION; + +FUNCTION IfcValidCalendarDate + (Date : IfcCalendarDate) + : LOGICAL; + IF NOT ({1 <= Date.DayComponent <= 31}) THEN + RETURN(FALSE); + END_IF; + CASE Date.MonthComponent OF + 4 : RETURN({ 1<= Date.DayComponent <= 30}); + 6 : RETURN({ 1<= Date.DayComponent <= 30}); + 9 : RETURN({ 1<= Date.DayComponent <= 30}); + 11 : RETURN({ 1<= Date.DayComponent <= 30}); + 2 : + BEGIN + IF (IfcLeapYear(Date.YearComponent)) THEN + RETURN({ 1<= Date.DayComponent <= 29}); + ELSE + RETURN({ 1<= Date.DayComponent <= 28}); + END_IF; + END; + OTHERWISE : RETURN(TRUE); + END_CASE; +END_FUNCTION; + +FUNCTION IfcValidTime + (Time: IfcLocalTime) + : BOOLEAN; + IF EXISTS (Time.SecondComponent) THEN + RETURN (EXISTS (Time.MinuteComponent)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION IfcVectorDifference + (Arg1, Arg2 : IfcVectorOrDirection) + : IfcVector; + LOCAL + Result : IfcVector; + Res, Vec1, Vec2 : IfcDirection; + Mag, Mag1, Mag2 : REAL; + Ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN + RETURN (?) ; + ELSE + BEGIN + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN + Mag1 := Arg1.Magnitude; + Vec1 := Arg1.Orientation; + ELSE + Mag1 := 1.0; + Vec1 := Arg1; + END_IF; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN + Mag2 := Arg2.Magnitude; + Vec2 := Arg2.Orientation; + ELSE + Mag2 := 1.0; + Vec2 := Arg2; + END_IF; + Vec1 := IfcNormalise (Vec1); + Vec2 := IfcNormalise (Vec2); + Ndim := SIZEOF(Vec1.DirectionRatios); + Mag := 0.0; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); + + REPEAT i := 1 TO Ndim; + Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] - Mag2*Vec2.DirectionRatios[i]; + Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); + END_REPEAT; + + IF (Mag > 0.0 ) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (Result); +END_FUNCTION; + +FUNCTION IfcVectorSum + (Arg1, Arg2 : IfcVectorOrDirection) + : IfcVector; + LOCAL + Result : IfcVector; + Res, Vec1, Vec2 : IfcDirection; + Mag, Mag1, Mag2 : REAL; + Ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN + RETURN (?) ; + ELSE + BEGIN + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN + Mag1 := Arg1.Magnitude; + Vec1 := Arg1.Orientation; + ELSE + Mag1 := 1.0; + Vec1 := Arg1; + END_IF; + IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN + Mag2 := Arg2.Magnitude; + Vec2 := Arg2.Orientation; + ELSE + Mag2 := 1.0; + Vec2 := Arg2; + END_IF; + Vec1 := IfcNormalise (Vec1); + Vec2 := IfcNormalise (Vec2); + Ndim := SIZEOF(Vec1.DirectionRatios); + Mag := 0.0; + Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); + + REPEAT i := 1 TO Ndim; + Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i]; + Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); + END_REPEAT; + + IF (Mag > 0.0 ) THEN + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); + ELSE + Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (Result); +END_FUNCTION; + +RULE IfcRepresentationContextSameWCS FOR + (IfcGeometricRepresentationContext); + LOCAL + IsDifferent : LOGICAL := FALSE; + END_LOCAL; + IF (SIZEOF(IfcGeometricRepresentationContext) > 1) + THEN + REPEAT i := 2 TO HIINDEX(IfcGeometricRepresentationContext); + IF (IfcGeometricRepresentationContext[1].WorldCoordinateSystem :<>: IfcGeometricRepresentationContext[i].WorldCoordinateSystem) + THEN + IsDifferent := (NOT(IfcSameValidPrecision(IfcGeometricRepresentationContext[1].Precision, + IfcGeometricRepresentationContext[i].Precision))) + OR (NOT(IfcSameAxis2Placement(IfcGeometricRepresentationContext[1].WorldCoordinateSystem, + IfcGeometricRepresentationContext[i].WorldCoordinateSystem, + IfcGeometricRepresentationContext[1].Precision))); + IF (IsDifferent = TRUE) THEN + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + END_IF; + WHERE + WR1 : IsDifferent = FALSE; +END_RULE; + +RULE IfcSingleProjectInstance FOR + (IfcProject); + WHERE + WR1 : SIZEOF(IfcProject) <= 1; +END_RULE; + +END_SCHEMA; From 55ca72e1c8bd08fd69f028edc735fe1565c1dc59 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 13 Apr 2015 21:38:36 +0200 Subject: [PATCH 54/85] Make order of classes in generated IFC parsing code deterministic. --- scripts/IFCImporter/ExpressReader.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/IFCImporter/ExpressReader.py b/scripts/IFCImporter/ExpressReader.py index 4318347cf..d3dd980c7 100644 --- a/scripts/IFCImporter/ExpressReader.py +++ b/scripts/IFCImporter/ExpressReader.py @@ -44,6 +44,7 @@ entities and data types contained""" import sys, os, re +from collections import OrderedDict re_match_entity = re.compile(r""" ENTITY\s+(\w+)\s* # 'ENTITY foo' @@ -68,8 +69,8 @@ re_match_field = re.compile(r""" class Schema: def __init__(self): - self.entities = {} - self.types = {} + self.entities = OrderedDict() + self.types = OrderedDict() class Entity: def __init__(self,name,parent,members): From b3a3558da3e26bcd4f5690a723cffbe87673707d Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 13 Apr 2015 21:42:50 +0200 Subject: [PATCH 55/85] Re-gen IFC parsing code with alphabetic order of types. This hopefully gives a stable diff base for the future. --- code/IFCReaderGen.cpp | 7692 ++++++++++++++++++++--------------------- code/IFCReaderGen.h | 7582 ++++++++++++++++++++-------------------- 2 files changed, 7637 insertions(+), 7637 deletions(-) diff --git a/code/IFCReaderGen.cpp b/code/IFCReaderGen.cpp index 5e551eec2..411ee1fc3 100644 --- a/code/IFCReaderGen.cpp +++ b/code/IFCReaderGen.cpp @@ -52,986 +52,986 @@ namespace { typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; const SchemaEntry schema_raw[] = { - SchemaEntry("ifcsiprefix",NULL ) -, SchemaEntry("ifccolour",NULL ) -, SchemaEntry("ifcevaporativecoolertypeenum",NULL ) -, SchemaEntry("ifcmetricvalueselect",NULL ) -, SchemaEntry("ifccurtainwalltypeenum",NULL ) -, SchemaEntry("ifcvolumetricflowratemeasure",NULL ) -, SchemaEntry("ifcphmeasure",NULL ) -, SchemaEntry("ifctimestamp",NULL ) -, SchemaEntry("ifcsoundpressuremeasure",NULL ) -, SchemaEntry("ifcarithmeticoperatorenum",NULL ) -, SchemaEntry("ifcoutlettypeenum",NULL ) -, SchemaEntry("ifclamptypeenum",NULL ) -, SchemaEntry("ifcobjectreferenceselect",NULL ) -, SchemaEntry("ifcdatetimeselect",NULL ) -, SchemaEntry("ifcelectricgeneratortypeenum",NULL ) -, SchemaEntry("ifcmoisturediffusivitymeasure",NULL ) -, SchemaEntry("ifccompoundplaneanglemeasure",NULL ) -, SchemaEntry("ifcderivedunitenum",NULL ) -, SchemaEntry("ifcrotationalstiffnessmeasure",NULL ) -, SchemaEntry("ifcpipefittingtypeenum",NULL ) -, SchemaEntry("ifcshearmodulusmeasure",NULL ) -, SchemaEntry("ifccontextdependentmeasure",NULL ) -, SchemaEntry("ifclightfixturetypeenum",NULL ) -, SchemaEntry("ifcresourceconsumptionenum",NULL ) -, SchemaEntry("ifcdistributionchamberelementtypeenum",NULL ) -, SchemaEntry("ifcplaneanglemeasure",NULL ) -, SchemaEntry("ifcslabtypeenum",NULL ) -, SchemaEntry("ifccharacterstyleselect",NULL ) -, SchemaEntry("ifcdimensionextentusage",NULL ) -, SchemaEntry("ifcdynamicviscositymeasure",NULL ) -, SchemaEntry("ifcpropertysourceenum",NULL ) -, SchemaEntry("ifcconstraintenum",NULL ) -, SchemaEntry("ifclayersetdirectionenum",NULL ) -, SchemaEntry("ifcfontvariant",NULL ) -, SchemaEntry("ifcmodulusofelasticitymeasure",NULL ) -, SchemaEntry("ifcdoorpanelpositionenum",NULL ) -, SchemaEntry("ifcwindowstyleconstructionenum",NULL ) -, SchemaEntry("ifcamountofsubstancemeasure",NULL ) -, SchemaEntry("ifccurvaturemeasure",NULL ) -, SchemaEntry("ifccablecarrierfittingtypeenum",NULL ) -, SchemaEntry("ifcminuteinhour",NULL ) -, SchemaEntry("ifcpressuremeasure",NULL ) -, SchemaEntry("ifcelectricconductancemeasure",NULL ) -, SchemaEntry("ifcisothermalmoisturecapacitymeasure",NULL ) -, SchemaEntry("ifcfantypeenum",NULL ) -, SchemaEntry("ifccurveoredgecurve",NULL ) -, SchemaEntry("ifcpipesegmenttypeenum",NULL ) -, SchemaEntry("ifcevaporatortypeenum",NULL ) -, SchemaEntry("ifcelectriccapacitancemeasure",NULL ) -, SchemaEntry("ifcelementassemblytypeenum",NULL ) -, SchemaEntry("ifcelectriccurrentmeasure",NULL ) -, SchemaEntry("ifcthermaladmittancemeasure",NULL ) -, SchemaEntry("ifclibraryselect",NULL ) -, SchemaEntry("ifcsanitaryterminaltypeenum",NULL ) -, SchemaEntry("ifcvalue",NULL ) -, SchemaEntry("ifcroleenum",NULL ) -, SchemaEntry("ifcmodulusofrotationalsubgradereactionmeasure",NULL ) -, SchemaEntry("ifcwindowstyleoperationenum",NULL ) -, SchemaEntry("ifcdayinmonthnumber",NULL ) -, SchemaEntry("ifcdirectionsenseenum",NULL ) -, SchemaEntry("ifcmotorconnectiontypeenum",NULL ) -, SchemaEntry("ifcmassdensitymeasure",NULL ) -, SchemaEntry("ifcspacetypeenum",NULL ) -, SchemaEntry("ifctextalignment",NULL ) -, SchemaEntry("ifcabsorbeddosemeasure",NULL ) -, SchemaEntry("ifcobjectiveenum",NULL ) -, SchemaEntry("ifcsoundscaleenum",NULL ) -, SchemaEntry("ifcilluminancemeasure",NULL ) -, SchemaEntry("ifcdoseequivalentmeasure",NULL ) -, SchemaEntry("ifcpowermeasure",NULL ) -, SchemaEntry("ifcelectricvoltagemeasure",NULL ) -, SchemaEntry("ifcfootingtypeenum",NULL ) -, SchemaEntry("ifcfontstyle",NULL ) -, SchemaEntry("ifcshell",NULL ) -, SchemaEntry("ifcpermeablecoveringoperationenum",NULL ) -, SchemaEntry("ifcwarpingmomentmeasure",NULL ) -, SchemaEntry("ifcsectionalareaintegralmeasure",NULL ) -, SchemaEntry("ifcmodulusofsubgradereactionmeasure",NULL ) -, SchemaEntry("ifcrotationalfrequencymeasure",NULL ) -, SchemaEntry("ifcfillareastyletileshapeselect",NULL ) -, SchemaEntry("ifcloadgrouptypeenum",NULL ) -, SchemaEntry("ifcsolidanglemeasure",NULL ) -, SchemaEntry("ifccolourorfactor",NULL ) -, SchemaEntry("ifchourinday",NULL ) -, SchemaEntry("ifclinearstiffnessmeasure",NULL ) -, SchemaEntry("ifctimemeasure",NULL ) -, SchemaEntry("ifcboxalignment",NULL ) -, SchemaEntry("ifcelectricflowstoragedevicetypeenum",NULL ) -, SchemaEntry("ifcorientationselect",NULL ) -, SchemaEntry("ifcsecondinminute",NULL ) -, SchemaEntry("ifcworkcontroltypeenum",NULL ) -, SchemaEntry("ifcheatfluxdensitymeasure",NULL ) -, SchemaEntry("ifcsizeselect",NULL ) -, SchemaEntry("ifcdimensioncount",NULL ) -, SchemaEntry("ifcvalvetypeenum",NULL ) -, SchemaEntry("ifctransportelementtypeenum",NULL ) -, SchemaEntry("ifcinductancemeasure",NULL ) -, SchemaEntry("ifcyearnumber",NULL ) -, SchemaEntry("ifcdoorstyleconstructionenum",NULL ) -, SchemaEntry("ifcthermalexpansioncoefficientmeasure",NULL ) -, SchemaEntry("ifccompressortypeenum",NULL ) -, SchemaEntry("ifcaxis2placement",NULL ) -, SchemaEntry("ifcswitchingdevicetypeenum",NULL ) -, SchemaEntry("ifcdocumentconfidentialityenum",NULL ) -, SchemaEntry("ifcgasterminaltypeenum",NULL ) -, SchemaEntry("ifcservicelifetypeenum",NULL ) -, SchemaEntry("ifcintegercountratemeasure",NULL ) -, SchemaEntry("ifcdocumentstatusenum",NULL ) -, SchemaEntry("ifcspaceheatertypeenum",NULL ) -, SchemaEntry("ifcwasteterminaltypeenum",NULL ) -, SchemaEntry("ifcairterminaltypeenum",NULL ) -, SchemaEntry("ifcprojectedortruelengthenum",NULL ) -, SchemaEntry("ifcductfittingtypeenum",NULL ) -, SchemaEntry("ifclabel",NULL ) -, SchemaEntry("ifctextfontselect",NULL ) -, SchemaEntry("ifcanalysistheorytypeenum",NULL ) -, SchemaEntry("ifcprojectorderrecordtypeenum",NULL ) -, SchemaEntry("ifcunit",NULL ) -, SchemaEntry("ifcwindowpanelpositionenum",NULL ) -, SchemaEntry("ifcsymbolstyleselect",NULL ) -, SchemaEntry("ifcwalltypeenum",NULL ) -, SchemaEntry("ifclightemissionsourceenum",NULL ) -, SchemaEntry("ifcmodulusoflinearsubgradereactionmeasure",NULL ) -, SchemaEntry("ifcspecularroughness",NULL ) -, SchemaEntry("ifctendontypeenum",NULL ) -, SchemaEntry("ifcelectricmotortypeenum",NULL ) -, SchemaEntry("ifccurvestylefontselect",NULL ) -, SchemaEntry("ifcplanarforcemeasure",NULL ) -, SchemaEntry("ifccoiltypeenum",NULL ) -, SchemaEntry("ifcsimplevalue",NULL ) -, SchemaEntry("ifclogicaloperatorenum",NULL ) -, SchemaEntry("ifctransformertypeenum",NULL ) -, SchemaEntry("ifcvaporpermeabilitymeasure",NULL ) -, SchemaEntry("ifcmassflowratemeasure",NULL ) -, SchemaEntry("ifcbooleanoperator",NULL ) -, SchemaEntry("ifcradioactivitymeasure",NULL ) -, SchemaEntry("ifcsurfaceside",NULL ) -, SchemaEntry("ifcribplatedirectionenum",NULL ) -, SchemaEntry("ifcgeometricsetselect",NULL ) -, SchemaEntry("ifcvolumemeasure",NULL ) -, SchemaEntry("ifcdoorpaneloperationenum",NULL ) -, SchemaEntry("ifcelectricheatertypeenum",NULL ) -, SchemaEntry("ifcmagneticfluxmeasure",NULL ) -, SchemaEntry("ifcthermaltransmittancemeasure",NULL ) -, SchemaEntry("ifcstructuralcurvetypeenum",NULL ) -, SchemaEntry("ifcmonetarymeasure",NULL ) -, SchemaEntry("ifcassemblyplaceenum",NULL ) -, SchemaEntry("ifcreinforcingbarsurfaceenum",NULL ) -, SchemaEntry("ifcpointorvertexpoint",NULL ) -, SchemaEntry("ifcspecificheatcapacitymeasure",NULL ) -, SchemaEntry("ifcchangeactionenum",NULL ) -, SchemaEntry("ifcelectricdistributionpointfunctionenum",NULL ) -, SchemaEntry("ifcbuildingelementproxytypeenum",NULL ) -, SchemaEntry("ifcsequenceenum",NULL ) -, SchemaEntry("ifcaheadorbehind",NULL ) -, SchemaEntry("ifcprojectordertypeenum",NULL ) -, SchemaEntry("ifctextstyleselect",NULL ) -, SchemaEntry("ifccooledbeamtypeenum",NULL ) -, SchemaEntry("ifcconnectiontypeenum",NULL ) -, SchemaEntry("ifcsensortypeenum",NULL ) -, SchemaEntry("ifctrimmingpreference",NULL ) -, SchemaEntry("ifcstructuralsurfacetypeenum",NULL ) -, SchemaEntry("ifccostscheduletypeenum",NULL ) -, SchemaEntry("ifcsoundpowermeasure",NULL ) -, SchemaEntry("ifcstairflighttypeenum",NULL ) -, SchemaEntry("ifcductsegmenttypeenum",NULL ) -, SchemaEntry("ifcservicelifefactortypeenum",NULL ) -, SchemaEntry("ifcbsplinecurveform",NULL ) -, SchemaEntry("ifcluminousintensitymeasure",NULL ) -, SchemaEntry("ifccoolingtowertypeenum",NULL ) -, SchemaEntry("ifcunitenum",NULL ) -, SchemaEntry("ifcpositiveplaneanglemeasure",NULL ) -, SchemaEntry("ifclightdistributiondatasourceselect",NULL ) -, SchemaEntry("ifckinematicviscositymeasure",NULL ) -, SchemaEntry("ifcdampertypeenum",NULL ) -, SchemaEntry("ifcvectorordirection",NULL ) -, SchemaEntry("ifcjunctionboxtypeenum",NULL ) -, SchemaEntry("ifcactorselect",NULL ) -, SchemaEntry("ifcelectricappliancetypeenum",NULL ) -, SchemaEntry("ifcthermodynamictemperaturemeasure",NULL ) -, SchemaEntry("ifcmomentofinertiameasure",NULL ) -, SchemaEntry("ifcmonthinyearnumber",NULL ) -, SchemaEntry("ifcstairtypeenum",NULL ) -, SchemaEntry("ifcprotectivedevicetypeenum",NULL ) -, SchemaEntry("ifctextdecoration",NULL ) -, SchemaEntry("ifcunitaryequipmenttypeenum",NULL ) -, SchemaEntry("ifcelementcompositionenum",NULL ) -, SchemaEntry("ifccurvefontorscaledcurvefontselect",NULL ) -, SchemaEntry("ifcdescriptivemeasure",NULL ) -, SchemaEntry("ifcprofiletypeenum",NULL ) -, SchemaEntry("ifcdoorstyleoperationenum",NULL ) -, SchemaEntry("ifctorquemeasure",NULL ) -, SchemaEntry("ifcdaylightsavinghour",NULL ) -, SchemaEntry("ifcrotationalmassmeasure",NULL ) -, SchemaEntry("ifcnullstyle",NULL ) -, SchemaEntry("ifcfiresuppressionterminaltypeenum",NULL ) -, SchemaEntry("ifcheatingvaluemeasure",NULL ) -, SchemaEntry("ifcrampflighttypeenum",NULL ) -, SchemaEntry("ifcspecularhighlightselect",NULL ) -, SchemaEntry("ifcthermalloadtypeenum",NULL ) -, SchemaEntry("ifcvibrationisolatortypeenum",NULL ) -, SchemaEntry("ifcfillstyleselect",NULL ) -, SchemaEntry("ifcobjecttypeenum",NULL ) -, SchemaEntry("ifchatchlinedistanceselect",NULL ) -, SchemaEntry("ifcpresentabletext",NULL ) -, SchemaEntry("ifcanalysismodeltypeenum",NULL ) -, SchemaEntry("ifcangularvelocitymeasure",NULL ) + SchemaEntry("ifcabsorbeddosemeasure",NULL ) , SchemaEntry("ifcaccelerationmeasure",NULL ) -, SchemaEntry("ifcthermalloadsourceenum",NULL ) -, SchemaEntry("ifcflowdirectionenum",NULL ) -, SchemaEntry("ifctanktypeenum",NULL ) -, SchemaEntry("ifcsurfacetextureenum",NULL ) -, SchemaEntry("ifctimeseriesdatatypeenum",NULL ) -, SchemaEntry("ifcphysicalorvirtualenum",NULL ) -, SchemaEntry("ifcdraughtingcalloutelement",NULL ) -, SchemaEntry("ifcdocumentselect",NULL ) -, SchemaEntry("ifcthermalresistancemeasure",NULL ) -, SchemaEntry("ifctemperaturegradientmeasure",NULL ) +, SchemaEntry("ifcamountofsubstancemeasure",NULL ) +, SchemaEntry("ifcangularvelocitymeasure",NULL ) +, SchemaEntry("ifcareameasure",NULL ) +, SchemaEntry("ifcboolean",NULL ) +, SchemaEntry("ifcboxalignment",NULL ) , SchemaEntry("ifccomplexnumber",NULL ) +, SchemaEntry("ifccompoundplaneanglemeasure",NULL ) +, SchemaEntry("ifccontextdependentmeasure",NULL ) +, SchemaEntry("ifccountmeasure",NULL ) +, SchemaEntry("ifccurvaturemeasure",NULL ) +, SchemaEntry("ifcdayinmonthnumber",NULL ) +, SchemaEntry("ifcdaylightsavinghour",NULL ) +, SchemaEntry("ifcdescriptivemeasure",NULL ) +, SchemaEntry("ifcdimensioncount",NULL ) +, SchemaEntry("ifcdoseequivalentmeasure",NULL ) +, SchemaEntry("ifcdynamicviscositymeasure",NULL ) +, SchemaEntry("ifcelectriccapacitancemeasure",NULL ) +, SchemaEntry("ifcelectricchargemeasure",NULL ) +, SchemaEntry("ifcelectricconductancemeasure",NULL ) +, SchemaEntry("ifcelectriccurrentmeasure",NULL ) +, SchemaEntry("ifcelectricresistancemeasure",NULL ) +, SchemaEntry("ifcelectricvoltagemeasure",NULL ) +, SchemaEntry("ifcenergymeasure",NULL ) +, SchemaEntry("ifcfontstyle",NULL ) +, SchemaEntry("ifcfontvariant",NULL ) +, SchemaEntry("ifcfontweight",NULL ) +, SchemaEntry("ifcforcemeasure",NULL ) +, SchemaEntry("ifcfrequencymeasure",NULL ) +, SchemaEntry("ifcgloballyuniqueid",NULL ) +, SchemaEntry("ifcheatfluxdensitymeasure",NULL ) +, SchemaEntry("ifcheatingvaluemeasure",NULL ) +, SchemaEntry("ifchourinday",NULL ) +, SchemaEntry("ifcidentifier",NULL ) +, SchemaEntry("ifcilluminancemeasure",NULL ) +, SchemaEntry("ifcinductancemeasure",NULL ) +, SchemaEntry("ifcinteger",NULL ) +, SchemaEntry("ifcintegercountratemeasure",NULL ) +, SchemaEntry("ifcionconcentrationmeasure",NULL ) +, SchemaEntry("ifcisothermalmoisturecapacitymeasure",NULL ) +, SchemaEntry("ifckinematicviscositymeasure",NULL ) +, SchemaEntry("ifclabel",NULL ) +, SchemaEntry("ifclengthmeasure",NULL ) +, SchemaEntry("ifclinearforcemeasure",NULL ) +, SchemaEntry("ifclinearmomentmeasure",NULL ) +, SchemaEntry("ifclinearstiffnessmeasure",NULL ) +, SchemaEntry("ifclinearvelocitymeasure",NULL ) +, SchemaEntry("ifclogical",NULL ) +, SchemaEntry("ifcluminousfluxmeasure",NULL ) +, SchemaEntry("ifcluminousintensitydistributionmeasure",NULL ) +, SchemaEntry("ifcluminousintensitymeasure",NULL ) +, SchemaEntry("ifcmagneticfluxdensitymeasure",NULL ) +, SchemaEntry("ifcmagneticfluxmeasure",NULL ) +, SchemaEntry("ifcmassdensitymeasure",NULL ) +, SchemaEntry("ifcmassflowratemeasure",NULL ) +, SchemaEntry("ifcmassmeasure",NULL ) +, SchemaEntry("ifcmassperlengthmeasure",NULL ) +, SchemaEntry("ifcminuteinhour",NULL ) +, SchemaEntry("ifcmodulusofelasticitymeasure",NULL ) +, SchemaEntry("ifcmodulusoflinearsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcmodulusofrotationalsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcmodulusofsubgradereactionmeasure",NULL ) +, SchemaEntry("ifcmoisturediffusivitymeasure",NULL ) +, SchemaEntry("ifcmolecularweightmeasure",NULL ) +, SchemaEntry("ifcmomentofinertiameasure",NULL ) +, SchemaEntry("ifcmonetarymeasure",NULL ) +, SchemaEntry("ifcmonthinyearnumber",NULL ) +, SchemaEntry("ifcnormalisedratiomeasure",NULL ) +, SchemaEntry("ifcnumericmeasure",NULL ) +, SchemaEntry("ifcphmeasure",NULL ) +, SchemaEntry("ifcparametervalue",NULL ) +, SchemaEntry("ifcplanarforcemeasure",NULL ) +, SchemaEntry("ifcplaneanglemeasure",NULL ) +, SchemaEntry("ifcpositivelengthmeasure",NULL ) +, SchemaEntry("ifcpositiveplaneanglemeasure",NULL ) +, SchemaEntry("ifcpositiveratiomeasure",NULL ) +, SchemaEntry("ifcpowermeasure",NULL ) +, SchemaEntry("ifcpresentabletext",NULL ) +, SchemaEntry("ifcpressuremeasure",NULL ) +, SchemaEntry("ifcradioactivitymeasure",NULL ) +, SchemaEntry("ifcratiomeasure",NULL ) +, SchemaEntry("ifcreal",NULL ) +, SchemaEntry("ifcrotationalfrequencymeasure",NULL ) +, SchemaEntry("ifcrotationalmassmeasure",NULL ) +, SchemaEntry("ifcrotationalstiffnessmeasure",NULL ) +, SchemaEntry("ifcsecondinminute",NULL ) +, SchemaEntry("ifcsectionmodulusmeasure",NULL ) +, SchemaEntry("ifcsectionalareaintegralmeasure",NULL ) +, SchemaEntry("ifcshearmodulusmeasure",NULL ) +, SchemaEntry("ifcsolidanglemeasure",NULL ) +, SchemaEntry("ifcsoundpowermeasure",NULL ) +, SchemaEntry("ifcsoundpressuremeasure",NULL ) +, SchemaEntry("ifcspecificheatcapacitymeasure",NULL ) +, SchemaEntry("ifcspecularexponent",NULL ) +, SchemaEntry("ifcspecularroughness",NULL ) +, SchemaEntry("ifctemperaturegradientmeasure",NULL ) +, SchemaEntry("ifctext",NULL ) +, SchemaEntry("ifctextalignment",NULL ) +, SchemaEntry("ifctextdecoration",NULL ) +, SchemaEntry("ifctextfontname",NULL ) +, SchemaEntry("ifctexttransformation",NULL ) +, SchemaEntry("ifcthermaladmittancemeasure",NULL ) +, SchemaEntry("ifcthermalconductivitymeasure",NULL ) +, SchemaEntry("ifcthermalexpansioncoefficientmeasure",NULL ) +, SchemaEntry("ifcthermalresistancemeasure",NULL ) +, SchemaEntry("ifcthermaltransmittancemeasure",NULL ) +, SchemaEntry("ifcthermodynamictemperaturemeasure",NULL ) +, SchemaEntry("ifctimemeasure",NULL ) +, SchemaEntry("ifctimestamp",NULL ) +, SchemaEntry("ifctorquemeasure",NULL ) +, SchemaEntry("ifcvaporpermeabilitymeasure",NULL ) +, SchemaEntry("ifcvolumemeasure",NULL ) +, SchemaEntry("ifcvolumetricflowratemeasure",NULL ) +, SchemaEntry("ifcwarpingconstantmeasure",NULL ) +, SchemaEntry("ifcwarpingmomentmeasure",NULL ) +, SchemaEntry("ifcyearnumber",NULL ) +, SchemaEntry("ifcactionsourcetypeenum",NULL ) +, SchemaEntry("ifcactiontypeenum",NULL ) +, SchemaEntry("ifcactuatortypeenum",NULL ) +, SchemaEntry("ifcaddresstypeenum",NULL ) +, SchemaEntry("ifcaheadorbehind",NULL ) +, SchemaEntry("ifcairterminalboxtypeenum",NULL ) +, SchemaEntry("ifcairterminaltypeenum",NULL ) +, SchemaEntry("ifcairtoairheatrecoverytypeenum",NULL ) +, SchemaEntry("ifcalarmtypeenum",NULL ) +, SchemaEntry("ifcanalysismodeltypeenum",NULL ) +, SchemaEntry("ifcanalysistheorytypeenum",NULL ) +, SchemaEntry("ifcarithmeticoperatorenum",NULL ) +, SchemaEntry("ifcassemblyplaceenum",NULL ) +, SchemaEntry("ifcbsplinecurveform",NULL ) +, SchemaEntry("ifcbeamtypeenum",NULL ) +, SchemaEntry("ifcbenchmarkenum",NULL ) +, SchemaEntry("ifcboilertypeenum",NULL ) +, SchemaEntry("ifcbooleanoperator",NULL ) +, SchemaEntry("ifcbuildingelementproxytypeenum",NULL ) +, SchemaEntry("ifccablecarrierfittingtypeenum",NULL ) +, SchemaEntry("ifccablecarriersegmenttypeenum",NULL ) +, SchemaEntry("ifccablesegmenttypeenum",NULL ) +, SchemaEntry("ifcchangeactionenum",NULL ) +, SchemaEntry("ifcchillertypeenum",NULL ) +, SchemaEntry("ifccoiltypeenum",NULL ) +, SchemaEntry("ifccolumntypeenum",NULL ) +, SchemaEntry("ifccompressortypeenum",NULL ) +, SchemaEntry("ifccondensertypeenum",NULL ) +, SchemaEntry("ifcconnectiontypeenum",NULL ) +, SchemaEntry("ifcconstraintenum",NULL ) +, SchemaEntry("ifccontrollertypeenum",NULL ) +, SchemaEntry("ifccooledbeamtypeenum",NULL ) +, SchemaEntry("ifccoolingtowertypeenum",NULL ) +, SchemaEntry("ifccostscheduletypeenum",NULL ) +, SchemaEntry("ifccoveringtypeenum",NULL ) +, SchemaEntry("ifccurrencyenum",NULL ) +, SchemaEntry("ifccurtainwalltypeenum",NULL ) +, SchemaEntry("ifcdampertypeenum",NULL ) +, SchemaEntry("ifcdataoriginenum",NULL ) +, SchemaEntry("ifcderivedunitenum",NULL ) +, SchemaEntry("ifcdimensionextentusage",NULL ) +, SchemaEntry("ifcdirectionsenseenum",NULL ) +, SchemaEntry("ifcdistributionchamberelementtypeenum",NULL ) +, SchemaEntry("ifcdocumentconfidentialityenum",NULL ) +, SchemaEntry("ifcdocumentstatusenum",NULL ) +, SchemaEntry("ifcdoorpaneloperationenum",NULL ) +, SchemaEntry("ifcdoorpanelpositionenum",NULL ) +, SchemaEntry("ifcdoorstyleconstructionenum",NULL ) +, SchemaEntry("ifcdoorstyleoperationenum",NULL ) +, SchemaEntry("ifcductfittingtypeenum",NULL ) +, SchemaEntry("ifcductsegmenttypeenum",NULL ) +, SchemaEntry("ifcductsilencertypeenum",NULL ) +, SchemaEntry("ifcelectricappliancetypeenum",NULL ) +, SchemaEntry("ifcelectriccurrentenum",NULL ) +, SchemaEntry("ifcelectricdistributionpointfunctionenum",NULL ) +, SchemaEntry("ifcelectricflowstoragedevicetypeenum",NULL ) +, SchemaEntry("ifcelectricgeneratortypeenum",NULL ) +, SchemaEntry("ifcelectricheatertypeenum",NULL ) +, SchemaEntry("ifcelectricmotortypeenum",NULL ) +, SchemaEntry("ifcelectrictimecontroltypeenum",NULL ) +, SchemaEntry("ifcelementassemblytypeenum",NULL ) +, SchemaEntry("ifcelementcompositionenum",NULL ) +, SchemaEntry("ifcenergysequenceenum",NULL ) +, SchemaEntry("ifcenvironmentalimpactcategoryenum",NULL ) +, SchemaEntry("ifcevaporativecoolertypeenum",NULL ) +, SchemaEntry("ifcevaporatortypeenum",NULL ) +, SchemaEntry("ifcfantypeenum",NULL ) +, SchemaEntry("ifcfiltertypeenum",NULL ) +, SchemaEntry("ifcfiresuppressionterminaltypeenum",NULL ) +, SchemaEntry("ifcflowdirectionenum",NULL ) +, SchemaEntry("ifcflowinstrumenttypeenum",NULL ) +, SchemaEntry("ifcflowmetertypeenum",NULL ) +, SchemaEntry("ifcfootingtypeenum",NULL ) +, SchemaEntry("ifcgasterminaltypeenum",NULL ) , SchemaEntry("ifcgeometricprojectionenum",NULL ) , SchemaEntry("ifcglobalorlocalenum",NULL ) -, SchemaEntry("ifcareameasure",NULL ) -, SchemaEntry("ifccsgselect",NULL ) -, SchemaEntry("ifcoccupanttypeenum",NULL ) -, SchemaEntry("ifcenergysequenceenum",NULL ) -, SchemaEntry("ifcflowmetertypeenum",NULL ) -, SchemaEntry("ifcsectionmodulusmeasure",NULL ) -, SchemaEntry("ifcairterminalboxtypeenum",NULL ) -, SchemaEntry("ifcidentifier",NULL ) -, SchemaEntry("ifcinteger",NULL ) -, SchemaEntry("ifcproceduretypeenum",NULL ) -, SchemaEntry("ifcbenchmarkenum",NULL ) -, SchemaEntry("ifcwindowpaneloperationenum",NULL ) -, SchemaEntry("ifctrimmingselect",NULL ) -, SchemaEntry("ifcreal",NULL ) -, SchemaEntry("ifcsurfacestyleelementselect",NULL ) -, SchemaEntry("ifcairtoairheatrecoverytypeenum",NULL ) -, SchemaEntry("ifcnormalisedratiomeasure",NULL ) -, SchemaEntry("ifccablesegmenttypeenum",NULL ) -, SchemaEntry("ifcbeamtypeenum",NULL ) -, SchemaEntry("ifcbooleanoperand",NULL ) -, SchemaEntry("ifcfrequencymeasure",NULL ) -, SchemaEntry("ifcdataoriginenum",NULL ) -, SchemaEntry("ifcalarmtypeenum",NULL ) -, SchemaEntry("ifcmassmeasure",NULL ) -, SchemaEntry("ifcstateenum",NULL ) -, SchemaEntry("ifcstackterminaltypeenum",NULL ) -, SchemaEntry("ifcreinforcingbarroleenum",NULL ) -, SchemaEntry("ifcelectrictimecontroltypeenum",NULL ) -, SchemaEntry("ifcinternalorexternalenum",NULL ) -, SchemaEntry("ifcductsilencertypeenum",NULL ) -, SchemaEntry("ifcconditioncriterionselect",NULL ) -, SchemaEntry("ifchumidifiertypeenum",NULL ) -, SchemaEntry("ifcforcemeasure",NULL ) -, SchemaEntry("ifcmembertypeenum",NULL ) -, SchemaEntry("ifcionconcentrationmeasure",NULL ) -, SchemaEntry("ifcchillertypeenum",NULL ) -, SchemaEntry("ifcmassperlengthmeasure",NULL ) -, SchemaEntry("ifctimeseriesscheduletypeenum",NULL ) -, SchemaEntry("ifcfiltertypeenum",NULL ) -, SchemaEntry("ifclogical",NULL ) -, SchemaEntry("ifcinventorytypeenum",NULL ) -, SchemaEntry("ifcclassificationnotationselect",NULL ) -, SchemaEntry("ifcaddresstypeenum",NULL ) -, SchemaEntry("ifcpositivelengthmeasure",NULL ) -, SchemaEntry("ifcratiomeasure",NULL ) -, SchemaEntry("ifcramptypeenum",NULL ) -, SchemaEntry("ifcmaterialselect",NULL ) -, SchemaEntry("ifccoveringtypeenum",NULL ) -, SchemaEntry("ifcpiletypeenum",NULL ) -, SchemaEntry("ifctransitioncode",NULL ) -, SchemaEntry("ifcparametervalue",NULL ) -, SchemaEntry("ifccondensertypeenum",NULL ) -, SchemaEntry("ifctextpath",NULL ) -, SchemaEntry("ifcelectriccurrentenum",NULL ) -, SchemaEntry("ifccolumntypeenum",NULL ) -, SchemaEntry("ifcluminousfluxmeasure",NULL ) -, SchemaEntry("ifcplatetypeenum",NULL ) -, SchemaEntry("ifcpileconstructionenum",NULL ) -, SchemaEntry("ifcactionsourcetypeenum",NULL ) -, SchemaEntry("ifcmagneticfluxdensitymeasure",NULL ) -, SchemaEntry("ifcsurfaceorfacesurface",NULL ) -, SchemaEntry("ifcpresentationstyleselect",NULL ) -, SchemaEntry("ifcgloballyuniqueid",NULL ) -, SchemaEntry("ifclinearmomentmeasure",NULL ) , SchemaEntry("ifcheatexchangertypeenum",NULL ) -, SchemaEntry("ifcpumptypeenum",NULL ) -, SchemaEntry("ifcspecularexponent",NULL ) -, SchemaEntry("ifcelectricresistancemeasure",NULL ) -, SchemaEntry("ifcthermalconductivitymeasure",NULL ) -, SchemaEntry("ifcreflectancemethodenum",NULL ) -, SchemaEntry("ifctubebundletypeenum",NULL ) -, SchemaEntry("ifcactuatortypeenum",NULL ) -, SchemaEntry("ifccontrollertypeenum",NULL ) +, SchemaEntry("ifchumidifiertypeenum",NULL ) +, SchemaEntry("ifcinternalorexternalenum",NULL ) +, SchemaEntry("ifcinventorytypeenum",NULL ) +, SchemaEntry("ifcjunctionboxtypeenum",NULL ) +, SchemaEntry("ifclamptypeenum",NULL ) +, SchemaEntry("ifclayersetdirectionenum",NULL ) , SchemaEntry("ifclightdistributioncurveenum",NULL ) -, SchemaEntry("ifcpositiveratiomeasure",NULL ) -, SchemaEntry("ifcelectricchargemeasure",NULL ) -, SchemaEntry("ifcnumericmeasure",NULL ) -, SchemaEntry("ifcstructuralactivityassignmentselect",NULL ) -, SchemaEntry("ifcluminousintensitydistributionmeasure",NULL ) -, SchemaEntry("ifcmolecularweightmeasure",NULL ) -, SchemaEntry("ifclayereditem",NULL ) -, SchemaEntry("ifclengthmeasure",NULL ) -, SchemaEntry("ifcwarpingconstantmeasure",NULL ) -, SchemaEntry("ifcboilertypeenum",NULL ) -, SchemaEntry("ifccablecarriersegmenttypeenum",NULL ) -, SchemaEntry("ifcfontweight",NULL ) -, SchemaEntry("ifctextfontname",NULL ) -, SchemaEntry("ifcenvironmentalimpactcategoryenum",NULL ) -, SchemaEntry("ifcactiontypeenum",NULL ) -, SchemaEntry("ifcdefinedsymbolselect",NULL ) -, SchemaEntry("ifctexttransformation",NULL ) -, SchemaEntry("ifcappliedvalueselect",NULL ) -, SchemaEntry("ifcenergymeasure",NULL ) -, SchemaEntry("ifcflowinstrumenttypeenum",NULL ) -, SchemaEntry("ifccountmeasure",NULL ) -, SchemaEntry("ifccurrencyenum",NULL ) -, SchemaEntry("ifcsectiontypeenum",NULL ) -, SchemaEntry("ifclinearforcemeasure",NULL ) -, SchemaEntry("ifcderivedmeasurevalue",NULL ) +, SchemaEntry("ifclightemissionsourceenum",NULL ) +, SchemaEntry("ifclightfixturetypeenum",NULL ) +, SchemaEntry("ifcloadgrouptypeenum",NULL ) +, SchemaEntry("ifclogicaloperatorenum",NULL ) +, SchemaEntry("ifcmembertypeenum",NULL ) +, SchemaEntry("ifcmotorconnectiontypeenum",NULL ) +, SchemaEntry("ifcnullstyle",NULL ) +, SchemaEntry("ifcobjecttypeenum",NULL ) +, SchemaEntry("ifcobjectiveenum",NULL ) +, SchemaEntry("ifcoccupanttypeenum",NULL ) +, SchemaEntry("ifcoutlettypeenum",NULL ) +, SchemaEntry("ifcpermeablecoveringoperationenum",NULL ) +, SchemaEntry("ifcphysicalorvirtualenum",NULL ) +, SchemaEntry("ifcpileconstructionenum",NULL ) +, SchemaEntry("ifcpiletypeenum",NULL ) +, SchemaEntry("ifcpipefittingtypeenum",NULL ) +, SchemaEntry("ifcpipesegmenttypeenum",NULL ) +, SchemaEntry("ifcplatetypeenum",NULL ) +, SchemaEntry("ifcproceduretypeenum",NULL ) +, SchemaEntry("ifcprofiletypeenum",NULL ) +, SchemaEntry("ifcprojectorderrecordtypeenum",NULL ) +, SchemaEntry("ifcprojectordertypeenum",NULL ) +, SchemaEntry("ifcprojectedortruelengthenum",NULL ) +, SchemaEntry("ifcpropertysourceenum",NULL ) +, SchemaEntry("ifcprotectivedevicetypeenum",NULL ) +, SchemaEntry("ifcpumptypeenum",NULL ) , SchemaEntry("ifcrailingtypeenum",NULL ) -, SchemaEntry("ifcsiunitname",NULL ) -, SchemaEntry("ifcmeasurevalue",NULL ) +, SchemaEntry("ifcrampflighttypeenum",NULL ) +, SchemaEntry("ifcramptypeenum",NULL ) +, SchemaEntry("ifcreflectancemethodenum",NULL ) +, SchemaEntry("ifcreinforcingbarroleenum",NULL ) +, SchemaEntry("ifcreinforcingbarsurfaceenum",NULL ) +, SchemaEntry("ifcresourceconsumptionenum",NULL ) +, SchemaEntry("ifcribplatedirectionenum",NULL ) +, SchemaEntry("ifcroleenum",NULL ) , SchemaEntry("ifcrooftypeenum",NULL ) -, SchemaEntry("ifctext",NULL ) -, SchemaEntry("ifclinearvelocitymeasure",NULL ) -, SchemaEntry("ifcboolean",NULL ) +, SchemaEntry("ifcsiprefix",NULL ) +, SchemaEntry("ifcsiunitname",NULL ) +, SchemaEntry("ifcsanitaryterminaltypeenum",NULL ) +, SchemaEntry("ifcsectiontypeenum",NULL ) +, SchemaEntry("ifcsensortypeenum",NULL ) +, SchemaEntry("ifcsequenceenum",NULL ) +, SchemaEntry("ifcservicelifefactortypeenum",NULL ) +, SchemaEntry("ifcservicelifetypeenum",NULL ) +, SchemaEntry("ifcslabtypeenum",NULL ) +, SchemaEntry("ifcsoundscaleenum",NULL ) +, SchemaEntry("ifcspaceheatertypeenum",NULL ) +, SchemaEntry("ifcspacetypeenum",NULL ) +, SchemaEntry("ifcstackterminaltypeenum",NULL ) +, SchemaEntry("ifcstairflighttypeenum",NULL ) +, SchemaEntry("ifcstairtypeenum",NULL ) +, SchemaEntry("ifcstateenum",NULL ) +, SchemaEntry("ifcstructuralcurvetypeenum",NULL ) +, SchemaEntry("ifcstructuralsurfacetypeenum",NULL ) +, SchemaEntry("ifcsurfaceside",NULL ) +, SchemaEntry("ifcsurfacetextureenum",NULL ) +, SchemaEntry("ifcswitchingdevicetypeenum",NULL ) +, SchemaEntry("ifctanktypeenum",NULL ) +, SchemaEntry("ifctendontypeenum",NULL ) +, SchemaEntry("ifctextpath",NULL ) +, SchemaEntry("ifcthermalloadsourceenum",NULL ) +, SchemaEntry("ifcthermalloadtypeenum",NULL ) +, SchemaEntry("ifctimeseriesdatatypeenum",NULL ) +, SchemaEntry("ifctimeseriesscheduletypeenum",NULL ) +, SchemaEntry("ifctransformertypeenum",NULL ) +, SchemaEntry("ifctransitioncode",NULL ) +, SchemaEntry("ifctransportelementtypeenum",NULL ) +, SchemaEntry("ifctrimmingpreference",NULL ) +, SchemaEntry("ifctubebundletypeenum",NULL ) +, SchemaEntry("ifcunitenum",NULL ) +, SchemaEntry("ifcunitaryequipmenttypeenum",NULL ) +, SchemaEntry("ifcvalvetypeenum",NULL ) +, SchemaEntry("ifcvibrationisolatortypeenum",NULL ) +, SchemaEntry("ifcwalltypeenum",NULL ) +, SchemaEntry("ifcwasteterminaltypeenum",NULL ) +, SchemaEntry("ifcwindowpaneloperationenum",NULL ) +, SchemaEntry("ifcwindowpanelpositionenum",NULL ) +, SchemaEntry("ifcwindowstyleconstructionenum",NULL ) +, SchemaEntry("ifcwindowstyleoperationenum",NULL ) +, SchemaEntry("ifcworkcontroltypeenum",NULL ) +, SchemaEntry("ifcactorselect",NULL ) +, SchemaEntry("ifcappliedvalueselect",NULL ) +, SchemaEntry("ifcaxis2placement",NULL ) +, SchemaEntry("ifcbooleanoperand",NULL ) +, SchemaEntry("ifccharacterstyleselect",NULL ) +, SchemaEntry("ifcclassificationnotationselect",NULL ) +, SchemaEntry("ifccolour",NULL ) +, SchemaEntry("ifccolourorfactor",NULL ) +, SchemaEntry("ifcconditioncriterionselect",NULL ) +, SchemaEntry("ifccsgselect",NULL ) +, SchemaEntry("ifccurvefontorscaledcurvefontselect",NULL ) +, SchemaEntry("ifccurveoredgecurve",NULL ) +, SchemaEntry("ifccurvestylefontselect",NULL ) +, SchemaEntry("ifcdatetimeselect",NULL ) +, SchemaEntry("ifcdefinedsymbolselect",NULL ) +, SchemaEntry("ifcderivedmeasurevalue",NULL ) +, SchemaEntry("ifcdocumentselect",NULL ) +, SchemaEntry("ifcdraughtingcalloutelement",NULL ) +, SchemaEntry("ifcfillareastyletileshapeselect",NULL ) +, SchemaEntry("ifcfillstyleselect",NULL ) +, SchemaEntry("ifcgeometricsetselect",NULL ) +, SchemaEntry("ifchatchlinedistanceselect",NULL ) +, SchemaEntry("ifclayereditem",NULL ) +, SchemaEntry("ifclibraryselect",NULL ) +, SchemaEntry("ifclightdistributiondatasourceselect",NULL ) +, SchemaEntry("ifcmaterialselect",NULL ) +, SchemaEntry("ifcmeasurevalue",NULL ) +, SchemaEntry("ifcmetricvalueselect",NULL ) +, SchemaEntry("ifcobjectreferenceselect",NULL ) +, SchemaEntry("ifcorientationselect",NULL ) +, SchemaEntry("ifcpointorvertexpoint",NULL ) +, SchemaEntry("ifcpresentationstyleselect",NULL ) +, SchemaEntry("ifcshell",NULL ) +, SchemaEntry("ifcsimplevalue",NULL ) +, SchemaEntry("ifcsizeselect",NULL ) +, SchemaEntry("ifcspecularhighlightselect",NULL ) +, SchemaEntry("ifcstructuralactivityassignmentselect",NULL ) +, SchemaEntry("ifcsurfaceorfacesurface",NULL ) +, SchemaEntry("ifcsurfacestyleelementselect",NULL ) +, SchemaEntry("ifcsymbolstyleselect",NULL ) +, SchemaEntry("ifctextfontselect",NULL ) +, SchemaEntry("ifctextstyleselect",NULL ) +, SchemaEntry("ifctrimmingselect",NULL ) +, SchemaEntry("ifcunit",NULL ) +, SchemaEntry("ifcvalue",NULL ) +, SchemaEntry("ifcvectorordirection",NULL ) , SchemaEntry("ifcrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctopologicalrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternalreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentreference",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcgeometricrepresentationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositecurvesegment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundedcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifc2dcompositecurve",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcroot",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcobjectdefinition",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcobject",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproduct",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsurfaceconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalactorrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexbasedtexturemap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationstyleassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurtainwall",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturecoordinate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturecoordinategenerator",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproxy",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefineditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylefontmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstyleditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsymboloccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcterminatorsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncurveterminator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactionrequest",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactorrole",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifctypeobject",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifctypeproduct",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcelementtype",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcdistributionelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfeatureelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfeatureelementsubtraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopeningelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyletilesymbolwithstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapplication",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnects",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsurfacemember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallist",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionflowelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsanitaryterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyconversiondevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricgeneratortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcequipmentstandard",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalsteelmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricappliancetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchygroscopicmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurniturestandard",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcirregulartimeseriesvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolourspecification",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcline",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelaxation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccomplexproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccovering",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundedcurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbsplinecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcnamedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsubcontractresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcobjectplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgridplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfailureconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalsimplequantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertydefinition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertysetdefinition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowliningproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesianpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacebound",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarycondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundaryfacecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclibraryinformation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifconedirectionrepeatfactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctwodirectionrepeatfactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectselements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectspathelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassigns",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyconstraintrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourceambient",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaxis1placement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsurfaceoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowcontrollertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmetertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationcurveoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclocaltime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociates",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesapproval",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsubedge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowstoragedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctanktype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementcomponent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementpart",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshapemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshaperepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrailing",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralload",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadstatic",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingleforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingleforcewarping",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstylemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstyledrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolourrgb",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementcomponenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiscreteaccessorytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvibrationisolatortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprocess",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprocedure",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfeatureelementaddition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctrimmedcurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcoversbldgelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextliteral",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcparameterizedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccranerailashapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementcomponent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccsgprimitive3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcblock",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrailingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralpointconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmovingdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpumptype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurvemember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurvemembervarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingmesh",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplanarextent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplanarbox",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccooledbeamtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityarea",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingcalloutrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncalloutrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectorderrecord",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpointonsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpointoncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcontainedinspatialstructure",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsimpleproperty",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertylistvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspatialstructureelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingstorey",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcunitaryequipmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoutlettype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfastenertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsystem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralanalysismodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslabtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoproduct",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassification",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionflowelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolyline",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityvolume",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingcallout",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaddress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsurfacemembervarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmotorconnectiontype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairtoairheatrecoverytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplatetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsolidmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccsgsolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalfastenertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldecomposes",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolumntype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangularpyramid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactionrequest",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralactivity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralreaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralpointreaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertydependencyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedterminatorsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructurallinearaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructurallinearactionvarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccrewresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcchamferedgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedcolour",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedcolour",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompositecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifc2dcompositecurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgrid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctendon",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroundedrectangleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbeamtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclamptype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesreferencerelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacetexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcimagetexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcegoniometric",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialdefinitionrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpermit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeneralmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontextdependentunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowmovingdevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccolumn",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstocontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoprojectorder",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributioncontrolelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprotectivedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturemap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowsegment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccompressortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeneralprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcappliedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctrapeziumprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefines",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefinesbytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctask",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmove",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundaryedgecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcedirectional",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccondensertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctablerow",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesappliedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconic",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcellipse",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesclassification",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductsofcombustionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorstyle",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcdistributioncontrolelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsensortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationfillareaoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwall",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelprojectselement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantityweight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnishingelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnituretype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccontrollertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowfitting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralactivity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelnests",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccalendardate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightdistributiondata",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcphysicalcomplexquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentelectronicformat",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentationcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedunitelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowpanelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrepresentationmap",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsstructuralmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterialclassificationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdirection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcactuatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaddress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionflowelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowcontrollertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairterminalboxtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyconversiondevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcairtoairheatrecoverytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcalarmtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingcallout",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcdimensioncurvedirectedcallout",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcangulardimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkcontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkplan",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspatialstructureelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspacetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslippageconnectioncondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcport",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionport",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorderaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorpanelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbeam",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionreinforcementproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmanifoldsolidbrep",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacetedbrep",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopticalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylewithtextures",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectswitheccentricity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcarbitraryclosedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchumidifiertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolyloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastyletiles",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctexturevertex",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproduct",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstyleditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationcurveoccurrence",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcannotationfillarea",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplate",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrightcircularcone",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundedsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclibraryreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintclassificationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricrepresentationcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctubebundletype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralplanaraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarynodecondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcheatexchangertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelschedulescostitems",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfaceouterbound",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsphere",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcepositional",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralpointaction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowsegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfiresuppressionterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertysinglevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspacethermalloadproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcperson",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylefordefinedfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacebasedsurfacemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcaxis2placement3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralresultgroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifchalfspacesolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgasterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsoundvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentinformation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmember",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayersetusage",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccondition",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyenumeratedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpermeablecoveringproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightintensitydistribution",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionchamberelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextliteralwithextent",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowcontroller",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricdistributionpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctransportelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcasset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpersonandorganization",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrevolvedareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowinstrumenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyconversiondevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsoundproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestyleshading",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylerendering",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboilertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementproxy",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclocalplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifczone",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstair",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwallstandardcase",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiameterdimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductsegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcirregulartimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcjunctionboxtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator3dnonuniform",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationfillareaoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsurfaceoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationsymboloccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcannotationtextoccurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapplication",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcappliedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcappliedvaluerelationship",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcapproval",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefontandscaling",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcinventory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitylength",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconditioncriterion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectedfaceset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcopenshell",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralsteelprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbeziercurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrationalbeziercurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalactorrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalpropertyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcapprovalrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcarbitraryclosedprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcarbitraryopenprofiledef",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcarbitraryprofiledefwithvoids",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmaterial",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbooleanresult",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstackterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefineddimensionsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcasset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcparameterizedprofiledef",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcishapeprofiledef",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcasymmetricishapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcequipmentelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationreference",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedcurvefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshapeaspect",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationnotationfacet",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdoorliningproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingledisplacement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesmaterial",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundarynodeconditionwarping",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoordinateduniversaltimeoffset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclosedshell",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalconcretematerialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayerset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcellipseprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyboundedvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoveringtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelcoversspaces",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcclassificationitemrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactuatortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoffsetcurve2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectiongeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionsurfacegeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdistributionchamberelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestylefontpattern",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoffsetcurve3d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfooting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmappeditem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpostaladdress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelspaceboundary",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctransformertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrightcircularcylinder",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspaceprogram",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcthermalmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifczshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectanglehollowprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometriccurveset",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcarbitraryopenprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdocumentinformationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacetedbrepwithvoids",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvector",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedsurfacestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcservicelife",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurveboundedplane",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccircle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfuelproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcservicelifefactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyenumeration",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacecurvesweptareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionequipmentresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionedspine",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreferencesvaluedocument",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertyreferencevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelservicesbuildings",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsite",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcperformancehistory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpropertytablevalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenvironmentalimpactvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurvestyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctransportelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpolygonalboundedhalfspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectionportgeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelflowcontrolelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalpropertyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelreferencedinspatialstructure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaxis1placement",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcaxis2placement2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfillareastylehatching",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfastener",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcscheduletimecontrol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricmotortype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctable",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpipesegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowterminal",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcementdefinitionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwalltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoiltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadsingledisplacementdistortion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfurnishingelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstylewithboxcharacteristics",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwasteterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindow",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactorrole",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricflowstoragedevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelaggregates",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcramp",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedcurvefont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclineardimension",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementarysurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstructionproductresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablesegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdraughtingpredefinedtextfont",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpath",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctextstyletextmodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorganizationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmonetaryunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcactor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcoccupant",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcswitchingdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfaceoflinearextrusion",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcshellbasedsurfacemodel",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsymbolstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcaxis2placement3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbsplinecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbeam",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbeamtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbeziercurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacetexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcblobtexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccsgprimitive3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcblock",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboilertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbooleanresult",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbooleanclippingresult",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarycondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundaryedgecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundaryfacecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarynodecondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundarynodeconditionwarping",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundedsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboundingbox",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchalfspacesolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcboxedhalfspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspatialstructureelement",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcbuilding",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsiunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdiscreteaccessory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpredefinedpointmarkersymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccostvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcownerhistory",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsystemfurnitureelementtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementassembly",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccoolingtowertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadlinearforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationlayerassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpresentationlayerwithstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightsourcespot",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcextendedmaterialproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpixeltexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensionalexponents",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcevaporatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementcomponent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementpart",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementproxy",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingelementproxytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcbuildingstorey",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablecarrierfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowsegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablecarriersegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccablesegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccalendardate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpoint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesianpoint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator2dnonuniform",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccartesiantransformationoperator3dnonuniform",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccenterlineprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfeatureelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfeatureelementsubtraction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcchamferedgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcchillertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccircle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccircleprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccirclehollowprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationitemrelationship",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcclassificationnotation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadplanarforce",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspaceheatertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelementquantity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurrencyrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrampflight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconversionbasedunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcextrudedareasolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectorder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationnotationfacet",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternalreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclassificationreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctopologicalrepresentationitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectedfaceset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcclosedshell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoiltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolourspecification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolourrgb",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolumn",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccolumntype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccomplexproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositecurvesegment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompositeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmovingdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccompressortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccondensertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconditioncriterion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectiongeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectioncurvegeometry",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcconnectionpointgeometry",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcconnectionpointeccentricity",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconstraintaggregationrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensionpair",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbooleanclippingresult",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionportgeometry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconnectionsurfacegeometry",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcconstraint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralloadtemperature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesconstraint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcingbar",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccenterlineprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcushapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboundingbox",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwindowstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcblobtexture",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmembertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclightfixturetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowstoragedevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctopologyrepresentation",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreldefinesbyproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreloverridesproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstairflighttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccircleprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsweptdisksolid",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedsymbol",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcregulartimeseries",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralplanaractionvarying",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvalvetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcunitassignment",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcconnectioncurvegeometry",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorganization",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvirtualelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitycount",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructuralcurveconnection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairterminaltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowtreatmentdevicetype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroof",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsectionproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctimeseriesvalue",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstogroup",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectrictimecontroltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpile",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccostschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrampflighttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcderivedprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccostitem",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcevaporativecoolertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcchillertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmateriallayer",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcboxedhalfspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccurtainwalltype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgeometricrepresentationsubcontext",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdimensioncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcplane",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectioncurve",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdampertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylerefraction",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcribplateprofileproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcwaterproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmechanicalfastener",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductsilencertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociatesdocument",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreinforcementbarproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclaborresource",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfantype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcenergyproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcprojectionelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelinteractionrequirements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccranerailfshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcapprovalrelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproject",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelvoidselement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmetric",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalcircuit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifclshapeprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelsequence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcflowtreatmentdevice",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvertexpoint",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcannotationtextoccurrence",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfiltertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcquantitytime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcedgeloop",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccirclehollowprofiledef",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcairterminalboxtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstructureddimensioncallout",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricalbaseproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablecarriersegmenttype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcappliedvaluerelationship",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcductfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcexternallydefinedhatchstyle",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassociateslibrary",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrectangulartrimmedsurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcproductdefinitionshape",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcstairflight",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcslab",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcpipefittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcspace",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcdateandtime",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcobjective",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcvirtualgridintersection",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcbuildingelementproxytype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstoprocess",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcalarmtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccablecarrierfittingtype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcroundededgefeature",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctelecomaddress",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsporttoelement",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelassignstasks",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfacesurface",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcreloccupiesspaces",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator2d",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcgridaxis",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifctendonanchor",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcfluidflowproperties",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcworkschedule",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfaceofrevolution",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcsurfacestylelighting",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcelectricheatertype",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcmeasurewithunit",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcorientededge",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifccartesiantransformationoperator2dnonuniform",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectswithrealizingelements",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelconnectsports",&STEP::ObjectHelper::Construct ) -, SchemaEntry("ifcrelfillselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintaggregationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintclassificationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstraintrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionequipmentresource",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcconstructionmaterialresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconstructionproductresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcnamedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontextdependentunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccontrollertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcconversionbasedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccooledbeamtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoolingtowertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoordinateduniversaltimeoffset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccostitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccostschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccostvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccovering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccoveringtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccranerailashapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccranerailfshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccrewresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsolidmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccsgsolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurrencyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurtainwall",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurtainwalltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurveboundedplane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefontandscaling",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifccurvestylefontpattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdampertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdateandtime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcderivedunitelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiameterdimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingcalloutrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncalloutrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcterminatorsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensioncurveterminator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensionpair",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdimensionalexponents",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdirection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementcomponent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiscreteaccessory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementcomponenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdiscreteaccessorytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionflowelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionchamberelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionchamberelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributioncontrolelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcport",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdistributionport",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentelectronicformat",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentinformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentinformationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdocumentreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertydefinition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertysetdefinition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorliningproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorpanelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdoorstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefineditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedcolour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedcolour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedcurvefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedcurvefont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcdraughtingpredefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductfittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductsegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowtreatmentdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcductsilencertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgecurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcedgeloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricappliancetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowcontroller",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricdistributionpoint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowstoragedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricflowstoragedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricgeneratortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricheatertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricmotortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectrictimecontroltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalbaseproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsystem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalcircuit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelectricalelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementassembly",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcelementarysurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcellipse",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcellipseprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenergyconversiondevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcenvironmentalimpactvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcequipmentelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcequipmentstandard",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcevaporativecoolertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcevaporatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcextendedmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedhatchstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedsurfacestyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcexternallydefinedtextfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcextrudedareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacebasedsurfacemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacebound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfaceouterbound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacesurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmanifoldsolidbrep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacetedbrep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfacetedbrepwithvoids",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfailureconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfantype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfastener",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfastenertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfeatureelementaddition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastylehatching",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyletilesymbolwithstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfillareastyletiles",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfiltertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfiresuppressionterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowfitting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowinstrumenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmetertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowmovingdevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowsegment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowstoragedevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowterminal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcflowtreatmentdevice",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfluidflowproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfooting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfuelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnishingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnishingelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurniturestandard",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcfurnituretype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgasterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeneralmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeneralprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometriccurveset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentationcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricrepresentationcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgeometricrepresentationsubcontext",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgrid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgridaxis",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcobjectplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcgridplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcheatexchangertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchumidifiertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifchygroscopicmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcimagetexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcinventory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcirregulartimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcirregulartimeseriesvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcjunctionboxtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclaborresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclamptype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclibraryinformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclibraryreference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightdistributiondata",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightfixturetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightintensitydistribution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourceambient",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcedirectional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcegoniometric",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcepositional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclightsourcespot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclineardimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclocalplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifclocaltime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmappeditem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterial",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialclassificationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmaterialdefinitionrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayerset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallayersetusage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmateriallist",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmeasurewithunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalconcretematerialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalfastener",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalfastenertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmechanicalsteelmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmembertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmetric",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmonetaryunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmotorconnectiontype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprocess",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctask",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcmove",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcobjective",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoccupant",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoffsetcurve2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoffsetcurve3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifconedirectionrepeatfactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopenshell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopeningelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcopticalmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorderaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorganization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorganizationrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcorientededge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcoutlettype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcownerhistory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpath",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcperformancehistory",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpermeablecoveringproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpermit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcperson",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpersonandorganization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalcomplexquantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcphysicalsimplequantity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpile",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpipefittingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpipesegmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpixeltexture",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplanarextent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplanarbox",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcplatetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpointoncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpointonsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolyloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolygonalboundedhalfspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpolyline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpostaladdress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefineddimensionsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedpointmarkersymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpredefinedterminatorsymbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationlayerassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationlayerwithstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpresentationstyleassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprocedure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductdefinitionshape",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproductsofcombustionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproject",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectorder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectorderrecord",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectioncurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprojectionelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsimpleproperty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyboundedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyconstraintrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertydependencyrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyenumeratedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyenumeration",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertylistvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyreferencevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertyset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertysinglevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpropertytablevalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcprotectivedevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcproxy",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcpumptype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityarea",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitycount",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitylength",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantitytime",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityvolume",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcquantityweight",&STEP::ObjectHelper::Construct ) , SchemaEntry("ifcradiusdimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrailing",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrailingtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcramp",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrampflight",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrampflighttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrationalbeziercurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangleprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectanglehollowprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangularpyramid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrectangulartrimmedsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreferencesvaluedocument",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcregulartimeseries",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcementbarproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcementdefinitionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingbar",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreinforcingmesh",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldecomposes",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelaggregates",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassigns",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstocontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstasks",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstogroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoprocess",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoproduct",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoprojectorder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassignstoresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociates",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesappliedvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesapproval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesclassification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesconstraint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesdocument",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociateslibrary",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesmaterial",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelassociatesprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnects",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectselements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectspathelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsporttoelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsports",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralactivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectsstructuralmember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectswitheccentricity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelconnectswithrealizingelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcontainedinspatialstructure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcoversbldgelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelcoversspaces",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefines",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefinesbyproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreldefinesbytype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelfillselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelflowcontrolelements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelinteractionrequirements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelnests",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreloccupiesspaces",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcreloverridesproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelprojectselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelreferencedinspatialstructure",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelschedulescostitems",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelsequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelservicesbuildings",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelspaceboundary",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelvoidselement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrelaxation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrepresentationmap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrevolvedareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcribplateprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrightcircularcone",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcrightcircularcylinder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroof",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroundededgefeature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcroundedrectangleprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsiunit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsanitaryterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcscheduletimecontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionreinforcementproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsectionedspine",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsensortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcservicelife",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcservicelifefactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshapeaspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshapemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshaperepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcshellbasedsurfacemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsite",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslab",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslabtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcslippageconnectioncondition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsoundproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsoundvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspace",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspaceheatertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspaceprogram",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspacethermalloadproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspatialstructureelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcspacetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsphere",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstackterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstair",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstairflight",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstairflighttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralactivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralanalysismodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralitem",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurveconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralmember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurvemember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralcurvemembervarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructurallinearaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructurallinearactionvarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralload",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadstatic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadlinearforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadplanarforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingledisplacement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingledisplacementdistortion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingleforce",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadsingleforcewarping",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralloadtemperature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralplanaraction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralplanaractionvarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralpointaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralpointconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralreaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralpointreaction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralresultgroup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsteelprofileproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsurfaceconnection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsurfacemember",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructuralsurfacemembervarying",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstructureddimensioncallout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstylemodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcstyledrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsubcontractresource",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsubedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacecurvesweptareasolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptsurface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfaceoflinearextrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfaceofrevolution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylelighting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylerefraction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestyleshading",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylerendering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsurfacestylewithtextures",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsweptdisksolid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcswitchingdevicetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsymbolstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcsystemfurnitureelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctablerow",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctanktype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctelecomaddress",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctendon",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctendonanchor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextliteral",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextliteralwithextent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylefontmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylefordefinedfont",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstyletextmodel",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctextstylewithboxcharacteristics",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturecoordinate",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturecoordinategenerator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturemap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctexturevertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcthermalmaterialproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesreferencerelationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctimeseriesvalue",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctopologyrepresentation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctransformertype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctransportelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctransportelementtype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctrapeziumprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctrimmedcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctubebundletype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifctwodirectionrepeatfactor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcushapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcunitassignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcunitaryequipmenttype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvalvetype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvector",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexbasedtexturemap",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexloop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvertexpoint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvibrationisolatortype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvirtualelement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcvirtualgridintersection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwall",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwallstandardcase",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwalltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwasteterminaltype",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwaterproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindow",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowliningproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowpanelproperties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcwindowstyle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkcontrol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkplan",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifcworkschedule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifczshapeprofiledef",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ifczone",&STEP::ObjectHelper::Construct ) }; } @@ -1059,46 +1059,49 @@ template <> size_t GenericFill(const DB& db, const LIST& return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologicalRepresentationItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationItem* in) { size_t base = GenericFill(db,params,static_cast(in)); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurveSegment* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurve* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcCompositeCurveSegment"); } do { // convert the 'Transition' argument + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCompositeCurve"); } do { // convert the 'Segments' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Transition, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurveSegment to be a `IfcTransitionCode`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Segments, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurve to be a `LIST [1:?] OF IfcCompositeCurveSegment`")); } } while(0); - do { // convert the 'SameSense' argument + do { // convert the 'SelfIntersect' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SameSense, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurveSegment to be a `BOOLEAN`")); } - } while(0); - do { // convert the 'ParentCurve' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ParentCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCompositeCurveSegment to be a `IfcCurve`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->SelfIntersect, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurve to be a `LOGICAL`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, Ifc2DCompositeCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoot* in) { size_t base = 0; @@ -1150,6 +1153,146 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcO return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcControl* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActionRequest* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTypeObject* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTypeProduct* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcActuatorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowControllerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalBoxType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirToAirHeatRecoveryType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAlarmType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDraughtingCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveDirectedCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAngularDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcProduct* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1170,69 +1313,10 @@ template <> size_t GenericFill(const DB& db, const LIST& params, Ifc return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralItem* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotation* in) { size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyleAssignment* in) -{ - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyleAssignment"); } do { // convert the 'Styles' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Styles, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyleAssignment to be a `SET [1:?] OF IfcPresentationStyleSelect`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcElement"); } do { // convert the 'Tag' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Tag, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcElement to be a `IfcIdentifier`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcBuildingElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWall* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProxy* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcAnnotation"); } return base; } // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledItem* in) @@ -1268,6 +1352,41 @@ template <> size_t GenericFill(const DB& db, const LIST return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationCurveOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillArea* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillAreaOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurfaceOccurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSymbolOccurrence* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1275,347 +1394,191 @@ template <> size_t GenericFill(const DB& db, cons return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTerminatorSymbol* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationTextOccurrence* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveTerminator* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTypeObject* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTypeProduct* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementSubtraction* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElementSubtraction"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpeningElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcOpeningElement"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyle* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProfileDef* in) { size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyle"); } do { // convert the 'Name' argument + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProfileDef"); } do { // convert the 'ProfileType' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->ProfileType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProfileDef to be a `IfcProfileTypeEnum`")); } + } while(0); + do { // convert the 'ProfileName' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyle to be a `IfcLabel`")); } + try { GenericConvert( in->ProfileName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProfileDef to be a `IfcLabel`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyle* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryClosedProfileDef* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcSurfaceStyle"); } do { // convert the 'Side' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryClosedProfileDef"); } do { // convert the 'OuterCurve' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Side, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSurfaceStyle to be a `IfcSurfaceSide`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->OuterCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryClosedProfileDef to be a `IfcCurve`")); } } while(0); - do { // convert the 'Styles' argument + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryOpenProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryOpenProfileDef"); } do { // convert the 'Curve' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Styles, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSurfaceStyle to be a `SET [1:5] OF IfcSurfaceStyleElementSelect`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Curve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryOpenProfileDef to be a `IfcBoundedCurve`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTileSymbolWithStyle* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryProfileDefWithVoids* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelationship* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRelationship"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelConnects* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRelConnects"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCartesianTransformationOperator"); } do { // convert the 'Axis1' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcArbitraryProfileDefWithVoids"); } do { // convert the 'InnerCurves' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis1, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCartesianTransformationOperator to be a `IfcDirection`")); } - } while(0); - do { // convert the 'Axis2' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCartesianTransformationOperator to be a `IfcDirection`")); } - } while(0); - do { // convert the 'LocalOrigin' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->LocalOrigin, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCartesianTransformationOperator to be a `IfcCartesianPoint`")); } - } while(0); - do { // convert the 'Scale' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Scale, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCartesianTransformationOperator to be a `REAL`")); } + try { GenericConvert( in->InnerCurves, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcArbitraryProfileDefWithVoids to be a `SET [1:?] OF IfcCurve`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCartesianTransformationOperator3D"); } do { // convert the 'Axis3' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis3, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCartesianTransformationOperator3D to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionFlowElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSanitaryTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricGeneratorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcResource* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGroup* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionResource* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsset* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcControl* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcParameterizedProfileDef* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcParameterizedProfileDef"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcParameterizedProfileDef to be a `IfcAxis2Placement2D`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcIShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcIShapeProfileDef"); } do { // convert the 'OverallWidth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->OverallWidth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'OverallDepth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->OverallDepth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'WebThickness' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->WebThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'FlangeThickness' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->FlangeThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'FilletRadius' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->FilletRadius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsymmetricIShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentStandard* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricApplianceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureStandard* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDefinedSymbol* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlacement* in) { size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlacement"); } do { // convert the 'Location' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Location, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPlacement to be a `IfcCartesianPoint`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourSpecification* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis1Placement* in) { - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcColourSpecification"); } do { // convert the 'Name' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis1Placement"); } do { // convert the 'Axis' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcColourSpecification to be a `IfcLabel`")); } + try { GenericConvert( in->Axis, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis1Placement to be a `IfcDirection`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurve* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement2D* in) { - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLine* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLine"); } do { // convert the 'Pnt' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis2Placement2D"); } do { // convert the 'RefDirection' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Pnt, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLine to be a `IfcCartesianPoint`")); } - } while(0); - do { // convert the 'Dir' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Dir, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLine to be a `IfcVector`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProperty* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProperty"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProperty to be a `IfcIdentifier`")); } - } while(0); - do { // convert the 'Description' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Description, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProperty to be a `IfcText`")); } + try { GenericConvert( in->RefDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement2D to be a `IfcDirection`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcComplexProperty* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement3D* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcComplexProperty"); } do { // convert the 'UsageName' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcAxis2Placement3D"); } do { // convert the 'Axis' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UsageName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcComplexProperty to be a `IfcIdentifier`")); } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Axis, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement3D to be a `IfcDirection`")); } } while(0); - do { // convert the 'HasProperties' argument + do { // convert the 'RefDirection' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->HasProperties, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcComplexProperty to be a `SET [1:?] OF IfcProperty`")); } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcAxis2Placement3D to be a `IfcDirection`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCovering* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcBSplineCurve* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1652,54 +1615,286 @@ template <> size_t GenericFill(const DB& db, const LIST& params return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcNamedUnit* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElement* in) { - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcNamedUnit"); } do { // convert the 'Dimensions' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcElement"); } do { // convert the 'Tag' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Dimensions, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcNamedUnit to be a `IfcDimensionalExponents`")); } - } while(0); - do { // convert the 'UnitType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->UnitType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcNamedUnit to be a `IfcUnitEnum`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Tag, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcElement to be a `IfcIdentifier`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubContractResource* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcBuildingElement"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeam* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcObjectPlacement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementType* in) { - size_t base = 0; - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGridPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyDefinition* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeamType* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyDefinition"); } return base; + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySetDefinition* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBezierCurve* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySetDefinition"); } return base; + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgPrimitive3D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBlock* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoilerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanResult* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanResult"); } do { // convert the 'Operator' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Operator, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBooleanResult to be a `IfcBooleanOperator`")); } + } while(0); + do { // convert the 'FirstOperand' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->FirstOperand, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBooleanResult to be a `IfcBooleanOperand`")); } + } while(0); + do { // convert the 'SecondOperand' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->SecondOperand, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBooleanResult to be a `IfcBooleanOperand`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanClippingResult* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanClippingResult"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundingBox* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcBoundingBox"); } do { // convert the 'Corner' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Corner, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBoundingBox to be a `IfcCartesianPoint`")); } + } while(0); + do { // convert the 'XDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->XDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'YDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->YDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'ZDim' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ZDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHalfSpaceSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcHalfSpaceSolid"); } do { // convert the 'BaseSurface' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->BaseSurface, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcHalfSpaceSolid to be a `IfcSurface`")); } + } while(0); + do { // convert the 'AgreementFlag' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->AgreementFlag, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcHalfSpaceSolid to be a `BOOLEAN`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoxedHalfSpace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcSpatialStructureElement"); } do { // convert the 'LongName' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->LongName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcSpatialStructureElement to be a `IfcLabel`")); } + } while(0); + do { // convert the 'CompositionType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->CompositionType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcSpatialStructureElement to be a `IfcElementCompositionEnum`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuilding* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to IfcBuilding"); } do { // convert the 'ElevationOfRefHeight' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationOfRefHeight, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcBuilding to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'ElevationOfTerrain' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationOfTerrain, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcBuilding to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'BuildingAddress' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->BuildingAddress, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcBuilding to be a `IfcPostalAddress`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementComponent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementPart* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxy* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxyType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingStorey* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; } // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcPoint* in) @@ -1719,239 +1914,214 @@ template <> size_t GenericFill(const DB& db, const LIST& para return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBound* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCartesianTransformationOperator"); } do { // convert the 'Axis1' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Axis1, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCartesianTransformationOperator to be a `IfcDirection`")); } + } while(0); + do { // convert the 'Axis2' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Axis2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCartesianTransformationOperator to be a `IfcDirection`")); } + } while(0); + do { // convert the 'LocalOrigin' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->LocalOrigin, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCartesianTransformationOperator to be a `IfcCartesianPoint`")); } + } while(0); + do { // convert the 'Scale' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Scale, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCartesianTransformationOperator to be a `REAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2DnonUniform* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3D* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCartesianTransformationOperator3D"); } do { // convert the 'Axis3' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Axis3, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCartesianTransformationOperator3D to be a `IfcDirection`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3DnonUniform* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcCartesianTransformationOperator3DnonUniform"); } do { // convert the 'Scale2' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Scale2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } + } while(0); + do { // convert the 'Scale3' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Scale3, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCenterLineProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElement"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementSubtraction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcFeatureElementSubtraction"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcChamferEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcChillerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConic* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConic"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConic to be a `IfcAxis2Placement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCircle"); } do { // convert the 'Radius' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Radius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCircle to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCircleProfileDef"); } do { // convert the 'Radius' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Radius, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCircleProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleHollowProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCircleHollowProfileDef"); } do { // convert the 'WallThickness' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->WallThickness, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCircleHollowProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologicalRepresentationItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConnectedFaceSet* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceBound"); } do { // convert the 'Bound' argument + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConnectedFaceSet"); } do { // convert the 'CfsFaces' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Bound, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBound to be a `IfcLoop`")); } - } while(0); - do { // convert the 'Orientation' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->Orientation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcFaceBound to be a `BOOLEAN`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->CfsFaces, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConnectedFaceSet to be a `SET [1:?] OF IfcFace`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeCurve* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcClosedShell* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcClosedShell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoilType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOneDirectionRepeatFactor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTwoDirectionRepeatFactor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceAmbient* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlacement"); } do { // convert the 'Location' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Location, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPlacement to be a `IfcCartesianPoint`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis1Placement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis1Placement"); } do { // convert the 'Axis' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis1Placement to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurfaceOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowControllerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMeterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationCurveOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProfileDef* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourSpecification* in) { size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProfileDef"); } do { // convert the 'ProfileType' argument + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcColourSpecification"); } do { // convert the 'Name' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->ProfileType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProfileDef to be a `IfcProfileTypeEnum`")); } - } while(0); - do { // convert the 'ProfileName' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ProfileName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProfileDef to be a `IfcLabel`")); } + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcColourSpecification to be a `IfcLabel`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubedge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTankType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementComponent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementPart* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentation* in) -{ - size_t base = 0; - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRepresentation"); } do { // convert the 'ContextOfItems' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->ContextOfItems, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentation to be a `IfcRepresentationContext`")); } - } while(0); - do { // convert the 'RepresentationIdentifier' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RepresentationIdentifier, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentation to be a `IfcLabel`")); } - } while(0); - do { // convert the 'RepresentationType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RepresentationType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRepresentation to be a `IfcLabel`")); } - } while(0); - do { // convert the 'Items' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } - try { GenericConvert( in->Items, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRepresentation to be a `SET [1:?] OF IfcRepresentationItem`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailing* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyleModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcColourRgb* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -1973,150 +2143,79 @@ template <> size_t GenericFill(const DB& db, const LIST& params, I return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponentType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumn* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessoryType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVibrationIsolatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcess* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcedure* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementAddition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeFeature* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrimmedCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcTrimmedCurve"); } do { // convert the 'BasisCurve' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->BasisCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcTrimmedCurve to be a `IfcCurve`")); } - } while(0); - do { // convert the 'Trim1' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Trim1, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } - } while(0); - do { // convert the 'Trim2' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Trim2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } - } while(0); - do { // convert the 'SenseAgreement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SenseAgreement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcTrimmedCurve to be a `BOOLEAN`")); } - } while(0); - do { // convert the 'MasterRepresentation' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MasterRepresentation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcTrimmedCurve to be a `IfcTrimmingPreference`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteral* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcParameterizedProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcParameterizedProfileDef"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcParameterizedProfileDef to be a `IfcAxis2Placement2D`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailAShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponent* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgPrimitive3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBlock* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumnType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointConnection* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProperty* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcProperty"); } do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcProperty to be a `IfcIdentifier`")); } + } while(0); + do { // convert the 'Description' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcProperty to be a `IfcText`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcComplexProperty* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcComplexProperty"); } do { // convert the 'UsageName' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->UsageName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcComplexProperty to be a `IfcIdentifier`")); } + } while(0); + do { // convert the 'HasProperties' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->HasProperties, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcComplexProperty to be a `SET [1:?] OF IfcProperty`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurveSegment* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcCompositeCurveSegment"); } do { // convert the 'Transition' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Transition, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurveSegment to be a `IfcTransitionCode`")); } + } while(0); + do { // convert the 'SameSense' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SameSense, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurveSegment to be a `BOOLEAN`")); } + } while(0); + do { // convert the 'ParentCurve' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ParentCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcCompositeCurveSegment to be a `IfcCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -2128,55 +2227,117 @@ template <> size_t GenericFill(const DB& db, const LIST return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPumpType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompressorType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMember* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondenserType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMemberVarying* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondition* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConditionCriterion* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingMesh* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcResource* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarExtent* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionResource* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarBox* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionEquipmentResource* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionMaterialResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionProductResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcNamedUnit* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcNamedUnit"); } do { // convert the 'Dimensions' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Dimensions, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcNamedUnit to be a `IfcDimensionalExponents`")); } + } while(0); + do { // convert the 'UnitType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->UnitType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcNamedUnit to be a `IfcUnitEnum`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcContextDependentUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcControllerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcConversionBasedUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcConversionBasedUnit"); } do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcConversionBasedUnit to be a `IfcLabel`")); } + } while(0); + do { // convert the 'ConversionFactor' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ConversionFactor, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcConversionBasedUnit to be a `IfcMeasureWithUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcCooledBeamType* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -2184,141 +2345,197 @@ template <> size_t GenericFill(const DB& db, const LIST& para return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrderRecord* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelContainedInSpatialStructure* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelContainedInSpatialStructure"); } do { // convert the 'RelatedElements' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedElements, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelContainedInSpatialStructure to be a `SET [1:?] OF IfcProduct`")); } - } while(0); - do { // convert the 'RelatingStructure' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingStructure, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelContainedInSpatialStructure to be a `IfcSpatialStructureElement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSimpleProperty* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSimpleProperty"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyListValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyListValue"); } do { // convert the 'ListValues' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ListValues, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertyListValue to be a `LIST [1:?] OF IfcValue`")); } - } while(0); - do { // convert the 'Unit' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Unit, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertyListValue to be a `IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcSpatialStructureElement"); } do { // convert the 'LongName' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LongName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcSpatialStructureElement to be a `IfcLabel`")); } - } while(0); - do { // convert the 'CompositionType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->CompositionType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcSpatialStructureElement to be a `IfcElementCompositionEnum`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingStorey* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitaryEquipmentType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoolingTowerType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOutletType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostItem* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastenerType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostSchedule* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGroup* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCovering* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAnalysisModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlabType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoveringType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailAShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailFShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCrewResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSolidModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWall* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWallType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurveBoundedPlane* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyle* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyle"); } do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyle to be a `IfcLabel`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDamperType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDefinedSymbol* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDerivedProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiameterDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTerminatorSymbol* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveTerminator* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDirection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcDirection"); } do { // convert the 'DirectionRatios' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->DirectionRatios, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcDirection to be a `LIST [2:3] OF REAL`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementComponentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessoryType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionElement* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -2333,28 +2550,342 @@ template <> size_t GenericFill(const DB& db, const L return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTShapeProfileDef* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPort* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionPort* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to IfcDoor"); } do { // convert the 'OverallHeight' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->OverallHeight, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'OverallWidth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->OverallWidth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyDefinition* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyDefinition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySetDefinition* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertySetDefinition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoorStyle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctFittingType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSegmentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSilencerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLoop* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeLoop* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricApplianceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowController* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricDistributionPoint* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricFlowStorageDeviceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricGeneratorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricHeaterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricMotorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricTimeControlType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalCircuit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementAssembly* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementQuantity* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcElementQuantity"); } do { // convert the 'MethodOfMeasurement' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->MethodOfMeasurement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcElementQuantity to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Quantities' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Quantities, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcElementQuantity to be a `SET [1:?] OF IfcPhysicalQuantity`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementarySurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcElementarySurface"); } do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcElementarySurface to be a `IfcAxis2Placement3D`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipse* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcEllipse"); } do { // convert the 'SemiAxis1' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SemiAxis1, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } + } while(0); + do { // convert the 'SemiAxis2' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SemiAxis2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipseProfileDef* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyline* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDevice* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyline"); } do { // convert the 'Points' argument + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentStandard* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporativeCoolerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporatorType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSweptAreaSolid"); } do { // convert the 'SweptArea' argument boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Points, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyline to be a `LIST [2:?] OF IfcCartesianPoint`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->SweptArea, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptAreaSolid to be a `IfcProfileDef`")); } + } while(0); + do { // convert the 'Position' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptAreaSolid to be a `IfcAxis2Placement3D`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDraughtingCallout* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcExtrudedAreaSolid* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcExtrudedAreaSolid"); } do { // convert the 'ExtrudedDirection' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ExtrudedDirection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcExtrudedAreaSolid to be a `IfcDirection`")); } + } while(0); + do { // convert the 'Depth' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Depth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcExtrudedAreaSolid to be a `IfcPositiveLengthMeasure`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- @@ -2370,177 +2901,304 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcFac return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMemberVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMotorConnectionType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirToAirHeatRecoveryType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlateType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSolidModel* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBasedSurfaceModel* in) { size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcFaceBasedSurfaceModel"); } do { // convert the 'FbsmFaces' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->FbsmFaces, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBasedSurfaceModel to be a `SET [1:?] OF IfcConnectedFaceSet`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCsgSolid* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBound* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceBound"); } do { // convert the 'Bound' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Bound, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBound to be a `IfcLoop`")); } + } while(0); + do { // convert the 'Orientation' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->Orientation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcFaceBound to be a `BOOLEAN`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceOuterBound* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceOuterBound"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcManifoldSolidBrep* in) { size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastenerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDecomposes* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDecomposes"); } do { // convert the 'RelatingObject' argument + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcManifoldSolidBrep"); } do { // convert the 'Outer' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatingObject, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDecomposes to be a `IfcObjectDefinition`")); } - } while(0); - do { // convert the 'RelatedObjects' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->RelatedObjects, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDecomposes to be a `SET [1:?] OF IfcObjectDefinition`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->Outer, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcManifoldSolidBrep to be a `IfcClosedShell`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrep* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrepWithVoids* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFanType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastener* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastenerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFeatureElementAddition* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleHatching* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTileSymbolWithStyle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTiles* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFilterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFireSuppressionTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFitting* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowInstrumentType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMeterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegment* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminal* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDevice* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFooting* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElement* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumnType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElementType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularPyramid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActionRequest* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureStandard* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralActivity* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralReaction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGasTerminalType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointReaction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricSet* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricCurveSet* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearAction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationContext* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearActionVarying* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCrewResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcChamferEdgeFeature* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompositeCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCompositeCurve"); } do { // convert the 'Segments' argument + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationContext"); } do { // convert the 'ContextIdentifier' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Segments, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcCompositeCurve to be a `LIST [1:?] OF IfcCompositeCurveSegment`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ContextIdentifier, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationContext to be a `IfcLabel`")); } } while(0); - do { // convert the 'SelfIntersect' argument + do { // convert the 'ContextType' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->SelfIntersect, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCompositeCurve to be a `LOGICAL`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ContextType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationContext to be a `IfcLabel`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, Ifc2DCompositeCurve* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationContext* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcGeometricRepresentationContext"); } do { // convert the 'CoordinateSpaceDimension' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->CoordinateSpaceDimension, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcGeometricRepresentationContext to be a `IfcDimensionCount`")); } + } while(0); + do { // convert the 'Precision' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Precision, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcGeometricRepresentationContext to be a `REAL`")); } + } while(0); + do { // convert the 'WorldCoordinateSystem' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->WorldCoordinateSystem, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcGeometricRepresentationContext to be a `IfcAxis2Placement`")); } + } while(0); + do { // convert the 'TrueNorth' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->TrueNorth, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcGeometricRepresentationContext to be a `IfcDirection`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationSubContext* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -2552,41 +3210,57 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcGri return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendon* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcObjectPlacement* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcGridPlacement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleProfileDef* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHeatExchangerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcHumidifierType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcInventory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcJunctionBoxType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLShapeProfileDef* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRectangleProfileDef"); } do { // convert the 'XDim' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->XDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'YDim' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->YDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedRectangleProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeamType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLaborResource* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -2598,6 +3272,34 @@ template <> size_t GenericFill(const DB& db, const LIST& params, If return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightFixtureType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceAmbient* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceDirectional* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceGoniometric* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -2605,6 +3307,76 @@ template <> size_t GenericFill(const DB& db, const LI return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourcePositional* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceSpot* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLine* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLine"); } do { // convert the 'Pnt' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Pnt, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLine to be a `IfcCartesianPoint`")); } + } while(0); + do { // convert the 'Dir' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Dir, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLine to be a `IfcVector`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLinearDimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcLocalPlacement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLocalPlacement"); } do { // convert the 'PlacementRelTo' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->PlacementRelTo, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLocalPlacement to be a `IfcObjectPlacement`")); } + } while(0); + do { // convert the 'RelativePlacement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelativePlacement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLocalPlacement to be a `IfcAxis2Placement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMappedItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMappedItem"); } do { // convert the 'MappingSource' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingSource, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMappedItem to be a `IfcRepresentationMap`")); } + } while(0); + do { // convert the 'MappingTarget' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingTarget, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMappedItem to be a `IfcCartesianTransformationOperator`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductRepresentation* in) { size_t base = 0; @@ -2638,88 +3410,64 @@ template <> size_t GenericFill(const DB& db return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPermit* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMeasureWithUnit* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMeasureWithUnit"); } do { // convert the 'ValueComponent' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ValueComponent, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMeasureWithUnit to be a `IfcValue`")); } + } while(0); + do { // convert the 'UnitComponent' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->UnitComponent, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMeasureWithUnit to be a `IfcUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastener* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcContextDependentUnit* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastenerType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowMovingDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcColumn* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMember* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMemberType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProtectiveDeviceType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcMotorConnectionType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegment* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcess* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCompressorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrapeziumProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefines* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRelDefines"); } do { // convert the 'RelatedObjects' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatedObjects, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDefines to be a `SET [1:?] OF IfcObject`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcTask* in) { size_t base = GenericFill(db,params,static_cast(in)); @@ -2734,212 +3482,45 @@ template <> size_t GenericFill(const DB& db, const LIST& params, IfcMov return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceDirectional* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOccupant* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondenserType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConic* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve2D* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConic"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConic to be a `IfcAxis2Placement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipse* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcEllipse"); } do { // convert the 'SemiAxis1' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SemiAxis1, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'SemiAxis2' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SemiAxis2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcEllipse to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoorStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionControlElementType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve3D* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSensorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillAreaOccurrence* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWall* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnitureType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcControllerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFitting* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationContext* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationContext"); } do { // convert the 'ContextIdentifier' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ContextIdentifier, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationContext to be a `IfcLabel`")); } - } while(0); - do { // convert the 'ContextType' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ContextType, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationContext to be a `IfcLabel`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationMap* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationMap"); } do { // convert the 'MappingOrigin' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingOrigin, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationMap to be a `IfcAxis2Placement`")); } - } while(0); - do { // convert the 'MappedRepresentation' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappedRepresentation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationMap to be a `IfcRepresentation`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDirection* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOneDirectionRepeatFactor* in) { size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcDirection"); } do { // convert the 'DirectionRatios' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->DirectionRatios, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcDirection to be a `LIST [2:3] OF REAL`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurveDirectedCallout* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAngularDimension* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpenShell* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkControl* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpeningElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkPlan* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPort* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionPort* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcOpeningElement"); } return base; } // ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrderAction* in) @@ -2949,58 +3530,106 @@ template <> size_t GenericFill(const DB& db, const LIST& params, return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBeam* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrientedEdge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcOutletType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPath* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPerformanceHistory* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPermit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPile* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcManifoldSolidBrep* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeFittingType* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcManifoldSolidBrep"); } do { // convert the 'Outer' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Outer, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcManifoldSolidBrep to be a `IfcClosedShell`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrep* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleWithTextures* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeSegmentType* in) { - size_t base = 0; - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleWithTextures"); } do { // convert the 'Textures' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Textures, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleWithTextures to be a `LIST [1:?] OF IfcSurfaceTexture`")); } - } while(0); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryClosedProfileDef* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarExtent* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryClosedProfileDef"); } do { // convert the 'OuterCurve' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->OuterCurve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryClosedProfileDef to be a `IfcCurve`")); } - } while(0); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHumidifierType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlanarBox* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlane* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlane"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlate* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlateType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPointOnSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -3016,159 +3645,166 @@ template <> size_t GenericFill(const DB& db, const LIST& params, If return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowFittingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolygonalBoundedHalfSpace* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleTiles* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertex* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationFillArea* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlate* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCone* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundedSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLoadGroup* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationContext* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcGeometricRepresentationContext"); } do { // convert the 'CoordinateSpaceDimension' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPolygonalBoundedHalfSpace"); } do { // convert the 'Position' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->CoordinateSpaceDimension, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcGeometricRepresentationContext to be a `IfcDimensionCount`")); } + try { GenericConvert( in->Position, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPolygonalBoundedHalfSpace to be a `IfcAxis2Placement3D`")); } } while(0); - do { // convert the 'Precision' argument + do { // convert the 'PolygonalBoundary' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->PolygonalBoundary, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPolygonalBoundedHalfSpace to be a `IfcBoundedCurve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolyline* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPolyline"); } do { // convert the 'Points' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Points, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPolyline to be a `LIST [2:?] OF IfcCartesianPoint`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPresentationStyleAssignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPresentationStyleAssignment"); } do { // convert the 'Styles' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcPresentationStyleAssignment to be a `SET [1:?] OF IfcPresentationStyleSelect`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProcedure* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductDefinitionShape* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProject* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcProject"); } do { // convert the 'LongName' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Precision, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcGeometricRepresentationContext to be a `REAL`")); } + try { GenericConvert( in->LongName, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProject to be a `IfcLabel`")); } } while(0); - do { // convert the 'WorldCoordinateSystem' argument + do { // convert the 'Phase' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->WorldCoordinateSystem, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcGeometricRepresentationContext to be a `IfcAxis2Placement`")); } - } while(0); - do { // convert the 'TrueNorth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->TrueNorth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcGeometricRepresentationContext to be a `IfcDirection`")); } + try { GenericConvert( in->Phase, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProject to be a `IfcLabel`")); } + } while(0); + do { // convert the 'RepresentationContexts' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RepresentationContexts, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcProject to be a `SET [1:?] OF IfcRepresentationContext`")); } + } while(0); + do { // convert the 'UnitsInContext' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->UnitsInContext, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcProject to be a `IfcUnitAssignment`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTubeBundleType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrder* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarAction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrderRecord* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHeatExchangerType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionCurve* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceOuterBound* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcFaceOuterBound"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSphere* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourcePositional* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSimpleProperty* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSimpleProperty"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyBoundedValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointAction* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyEnumeratedValue* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowSegmentType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyListValue* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPropertyListValue"); } do { // convert the 'ListValues' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->ListValues, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPropertyListValue to be a `LIST [1:?] OF IfcValue`")); } + } while(0); + do { // convert the 'Unit' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Unit, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPropertyListValue to be a `IfcUnit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyReferenceValue* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFireSuppressionTerminalType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySet* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcPropertySet"); } do { // convert the 'HasProperties' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->HasProperties, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcPropertySet to be a `SET [1:?] OF IfcProperty`")); } + } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- @@ -3190,155 +3826,302 @@ template <> size_t GenericFill(const DB& db, const LIST& return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceBasedSurfaceModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcFaceBasedSurfaceModel"); } do { // convert the 'FbsmFaces' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->FbsmFaces, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcFaceBasedSurfaceModel to be a `SET [1:?] OF IfcConnectedFaceSet`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcAxis2Placement3D"); } do { // convert the 'Axis' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Axis, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement3D to be a `IfcDirection`")); } - } while(0); - do { // convert the 'RefDirection' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcAxis2Placement3D to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralResultGroup* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcHalfSpaceSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcHalfSpaceSolid"); } do { // convert the 'BaseSurface' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->BaseSurface, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcHalfSpaceSolid to be a `IfcSurface`")); } - } while(0); - do { // convert the 'AgreementFlag' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->AgreementFlag, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcHalfSpaceSolid to be a `BOOLEAN`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGasTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMember* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertySet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcPropertySet"); } do { // convert the 'HasProperties' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->HasProperties, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcPropertySet to be a `SET [1:?] OF IfcProperty`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCondition* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyEnumeratedValue* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyTableValue* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElementType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProtectiveDeviceType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteralWithExtent* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcProxy* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowController* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcPumpType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricDistributionPoint* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRadiusDimension* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailing* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsset* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRailingType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptAreaSolid* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRamp* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcSweptAreaSolid"); } do { // convert the 'SweptArea' argument + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlight* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlightType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRationalBezierCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRectangleProfileDef"); } do { // convert the 'XDim' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->SweptArea, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSweptAreaSolid to be a `IfcProfileDef`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->XDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } } while(0); - do { // convert the 'Position' argument + do { // convert the 'YDim' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSweptAreaSolid to be a `IfcAxis2Placement3D`")); } + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->YDim, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRectangleProfileDef to be a `IfcPositiveLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleHollowProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularPyramid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularTrimmedSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingBar* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingMesh* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelationship* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRelationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDecomposes* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDecomposes"); } do { // convert the 'RelatingObject' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatingObject, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDecomposes to be a `IfcObjectDefinition`")); } + } while(0); + do { // convert the 'RelatedObjects' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->RelatedObjects, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDecomposes to be a `SET [1:?] OF IfcObjectDefinition`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelAggregates* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelAggregates"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelConnects* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRelConnects"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelContainedInSpatialStructure* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelContainedInSpatialStructure"); } do { // convert the 'RelatedElements' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedElements, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelContainedInSpatialStructure to be a `SET [1:?] OF IfcProduct`")); } + } while(0); + do { // convert the 'RelatingStructure' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingStructure, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelContainedInSpatialStructure to be a `IfcSpatialStructureElement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefines* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcRelDefines"); } do { // convert the 'RelatedObjects' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatedObjects, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelDefines to be a `SET [1:?] OF IfcObject`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefinesByProperties* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDefinesByProperties"); } do { // convert the 'RelatingPropertyDefinition' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->RelatingPropertyDefinition, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDefinesByProperties to be a `IfcPropertySetDefinition`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelFillsElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelFillsElement"); } do { // convert the 'RelatingOpeningElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingOpeningElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelFillsElement to be a `IfcOpeningElement`")); } + } while(0); + do { // convert the 'RelatedBuildingElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedBuildingElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelFillsElement to be a `IfcElement`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelOverridesProperties* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelVoidsElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelVoidsElement"); } do { // convert the 'RelatingBuildingElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatingBuildingElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelVoidsElement to be a `IfcElement`")); } + } while(0); + do { // convert the 'RelatedOpeningElement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->RelatedOpeningElement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelVoidsElement to be a `IfcFeatureElementSubtraction`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentation* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcRepresentation"); } do { // convert the 'ContextOfItems' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->ContextOfItems, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentation to be a `IfcRepresentationContext`")); } + } while(0); + do { // convert the 'RepresentationIdentifier' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RepresentationIdentifier, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentation to be a `IfcLabel`")); } + } while(0); + do { // convert the 'RepresentationType' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RepresentationType, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcRepresentation to be a `IfcLabel`")); } + } while(0); + do { // convert the 'Items' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->Items, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcRepresentation to be a `SET [1:?] OF IfcRepresentationItem`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRepresentationMap* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcRepresentationMap"); } do { // convert the 'MappingOrigin' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappingOrigin, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcRepresentationMap to be a `IfcAxis2Placement`")); } + } while(0); + do { // convert the 'MappedRepresentation' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MappedRepresentation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcRepresentationMap to be a `IfcRepresentation`")); } } while(0); return base; } @@ -3359,20 +4142,481 @@ template <> size_t GenericFill(const DB& db, const LIST& p return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowInstrumentType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCone* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCylinder* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoof* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedEdgeFeature* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedRectangleProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSIUnit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcSIUnit"); } do { // convert the 'Prefix' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->Prefix, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSIUnit to be a `IfcSIPrefix`")); } + } while(0); + do { // convert the 'Name' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSIUnit to be a `IfcSIUnitName`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSanitaryTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcScheduleTimeControl* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSectionedSpine* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSensorType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEnergyConversionDevice* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcServiceLife* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShapeRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcShellBasedSurfaceModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcShellBasedSurfaceModel"); } do { // convert the 'SbsmBoundary' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SbsmBoundary, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcShellBasedSurfaceModel to be a `SET [1:?] OF IfcShell`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSite* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to IfcSite"); } do { // convert the 'RefLatitude' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefLatitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } + } while(0); + do { // convert the 'RefLongitude' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefLongitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } + } while(0); + do { // convert the 'RefElevation' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->RefElevation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcSite to be a `IfcLengthMeasure`")); } + } while(0); + do { // convert the 'LandTitleNumber' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->LandTitleNumber, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to IfcSite to be a `IfcLabel`")); } + } while(0); + do { // convert the 'SiteAddress' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->SiteAddress, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to IfcSite to be a `IfcPostalAddress`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlab* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlabType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpace* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to IfcSpace"); } do { // convert the 'InteriorOrExteriorSpace' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->InteriorOrExteriorSpace, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSpace to be a `IfcInternalOrExternalEnum`")); } + } while(0); + do { // convert the 'ElevationWithFlooring' argument + boost::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->ElevationWithFlooring, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSpace to be a `IfcLengthMeasure`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceHeaterType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceProgram* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpatialStructureElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSphere* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStackTerminalType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStair* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlight* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlightType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralActivity* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralAnalysisModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralItem* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralMember* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMember* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveMemberVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLinearActionVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralLoadGroup* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarActionVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointAction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralReaction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPointReaction* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralResultGroup* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceConnection* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMember* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralSurfaceMemberVarying* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuredDimensionCallout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyleModel* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcStyledRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubContractResource* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSubedge* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceCurveSweptAreaSolid* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptSurface* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfLinearExtrusion* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfRevolution* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyle* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcSurfaceStyle"); } do { // convert the 'Side' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Side, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcSurfaceStyle to be a `IfcSurfaceSide`")); } + } while(0); + do { // convert the 'Styles' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSurfaceStyle to be a `SET [1:5] OF IfcSurfaceStyleElementSelect`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleShading* in) { size_t base = 0; @@ -3438,1040 +4682,13 @@ template <> size_t GenericFill(const DB& db, const LIS return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoilerType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceStyleWithTextures* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxy* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLocalPlacement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcLocalPlacement"); } do { // convert the 'PlacementRelTo' argument + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcSurfaceStyleWithTextures"); } do { // convert the 'Textures' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->PlacementRelTo, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcLocalPlacement to be a `IfcObjectPlacement`")); } - } while(0); - do { // convert the 'RelativePlacement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelativePlacement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcLocalPlacement to be a `IfcAxis2Placement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcZone* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStair* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallStandardCase* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiameterDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcJunctionBoxType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator3DnonUniform* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcCartesianTransformationOperator3DnonUniform"); } do { // convert the 'Scale2' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Scale2, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } - } while(0); - do { // convert the 'Scale3' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Scale3, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcCartesianTransformationOperator3DnonUniform to be a `REAL`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcInventory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConditionCriterion* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConnectedFaceSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcConnectedFaceSet"); } do { // convert the 'CfsFaces' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->CfsFaces, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcConnectedFaceSet to be a `SET [1:?] OF IfcFace`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOpenShell* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDoor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to IfcDoor"); } do { // convert the 'OverallHeight' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->OverallHeight, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'OverallWidth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->OverallWidth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcDoor to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBezierCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRationalBezierCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryProfileDefWithVoids* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcArbitraryProfileDefWithVoids"); } do { // convert the 'InnerCurves' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->InnerCurves, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcArbitraryProfileDefWithVoids to be a `SET [1:?] OF IfcCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanResult* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanResult"); } do { // convert the 'Operator' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Operator, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBooleanResult to be a `IfcBooleanOperator`")); } - } while(0); - do { // convert the 'FirstOperand' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->FirstOperand, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBooleanResult to be a `IfcBooleanOperand`")); } - } while(0); - do { // convert the 'SecondOperand' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->SecondOperand, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBooleanResult to be a `IfcBooleanOperand`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStackTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcIShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to IfcIShapeProfileDef"); } do { // convert the 'OverallWidth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->OverallWidth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'OverallDepth' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } - try { GenericConvert( in->OverallDepth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'WebThickness' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } - try { GenericConvert( in->WebThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'FlangeThickness' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } - try { GenericConvert( in->FlangeThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'FilletRadius' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4]=true; break; } - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->FilletRadius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcIShapeProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAsymmetricIShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEquipmentElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcClosedShell* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcClosedShell"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEllipseProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyBoundedValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoveringType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActuatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve2D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to IfcAnnotation"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDistributionChamberElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOffsetCurve3D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFooting* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMappedItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMappedItem"); } do { // convert the 'MappingSource' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingSource, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMappedItem to be a `IfcRepresentationMap`")); } - } while(0); - do { // convert the 'MappingTarget' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->MappingTarget, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMappedItem to be a `IfcCartesianTransformationOperator`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransformerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRightCircularCylinder* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceProgram* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcZShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangleHollowProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricCurveSet* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcArbitraryOpenProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcArbitraryOpenProfileDef"); } do { // convert the 'Curve' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Curve, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcArbitraryOpenProfileDef to be a `IfcBoundedCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFacetedBrepWithVoids* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVector* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcVector"); } do { // convert the 'Orientation' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Orientation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcVector to be a `IfcDirection`")); } - } while(0); - do { // convert the 'Magnitude' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Magnitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcVector to be a `IfcLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcServiceLife* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurveBoundedPlane* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcCircle"); } do { // convert the 'Radius' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Radius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcCircle to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceCurveSweptAreaSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionEquipmentResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSectionedSpine* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyReferenceValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSite* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to IfcSite"); } do { // convert the 'RefLatitude' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefLatitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } - } while(0); - do { // convert the 'RefLongitude' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefLongitude, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSite to be a `IfcCompoundPlaneAngleMeasure`")); } - } while(0); - do { // convert the 'RefElevation' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefElevation, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcSite to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'LandTitleNumber' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LandTitleNumber, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to IfcSite to be a `IfcLabel`")); } - } while(0); - do { // convert the 'SiteAddress' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->SiteAddress, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to IfcSite to be a `IfcPostalAddress`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPerformanceHistory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPropertyTableValue* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPolygonalBoundedHalfSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcPolygonalBoundedHalfSpace"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcPolygonalBoundedHalfSpace to be a `IfcAxis2Placement3D`")); } - } while(0); - do { // convert the 'PolygonalBoundary' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->PolygonalBoundary, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcPolygonalBoundedHalfSpace to be a `IfcBoundedCurve`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAxis2Placement2D* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcAxis2Placement2D"); } do { // convert the 'RefDirection' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->RefDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcAxis2Placement2D to be a `IfcDirection`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFillAreaStyleHatching* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFastener* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcScheduleTimeControl* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricMotorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTimeSeriesSchedule* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTerminal* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoilType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFurnishingElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWasteTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindow* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricFlowStorageDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelAggregates* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelAggregates"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRamp* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLinearDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementarySurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcElementarySurface"); } do { // convert the 'Position' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Position, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcElementarySurface to be a `IfcAxis2Placement3D`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionProductResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPath* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcActor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOccupant* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSwitchingDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSweptSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfLinearExtrusion* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcShellBasedSurfaceModel* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcShellBasedSurfaceModel"); } do { // convert the 'SbsmBoundary' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->SbsmBoundary, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcShellBasedSurfaceModel to be a `SET [1:?] OF IfcShell`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuilding* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to IfcBuilding"); } do { // convert the 'ElevationOfRefHeight' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationOfRefHeight, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcBuilding to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'ElevationOfTerrain' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationOfTerrain, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcBuilding to be a `IfcLengthMeasure`")); } - } while(0); - do { // convert the 'BuildingAddress' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->BuildingAddress, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to IfcBuilding to be a `IfcPostalAddress`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSIUnit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcSIUnit"); } do { // convert the 'Prefix' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Prefix, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcSIUnit to be a `IfcSIPrefix`")); } - } while(0); - do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcSIUnit to be a `IfcSIUnitName`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDiscreteAccessory* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystemFurnitureElementType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementAssembly* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCoolingTowerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightSourceSpot* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporatorType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpaceHeaterType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElementQuantity* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcElementQuantity"); } do { // convert the 'MethodOfMeasurement' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->MethodOfMeasurement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcElementQuantity to be a `IfcLabel`")); } - } while(0); - do { // convert the 'Quantities' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Quantities, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcElementQuantity to be a `SET [1:?] OF IfcPhysicalQuantity`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlight* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConversionBasedUnit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcConversionBasedUnit"); } do { // convert the 'Name' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Name, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcConversionBasedUnit to be a `IfcLabel`")); } - } while(0); - do { // convert the 'ConversionFactor' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ConversionFactor, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcConversionBasedUnit to be a `IfcMeasureWithUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcExtrudedAreaSolid* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcExtrudedAreaSolid"); } do { // convert the 'ExtrudedDirection' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ExtrudedDirection, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcExtrudedAreaSolid to be a `IfcDirection`")); } - } while(0); - do { // convert the 'Depth' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Depth, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcExtrudedAreaSolid to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectOrder* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBooleanClippingResult* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to IfcBooleanClippingResult"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcReinforcingBar* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCenterLineProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcUShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoundingBox* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcBoundingBox"); } do { // convert the 'Corner' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->Corner, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcBoundingBox to be a `IfcCartesianPoint`")); } - } while(0); - do { // convert the 'XDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->XDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'YDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->YDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - do { // convert the 'ZDim' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ZDim, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcBoundingBox to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindowStyle* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMemberType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLightFixtureType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowStorageDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologyRepresentation* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelDefinesByProperties* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelDefinesByProperties"); } do { // convert the 'RelatingPropertyDefinition' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->RelatingPropertyDefinition, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelDefinesByProperties to be a `IfcPropertySetDefinition`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelOverridesProperties* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlightType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to IfcCircleProfileDef"); } do { // convert the 'Radius' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } - try { GenericConvert( in->Radius, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcCircleProfileDef to be a `IfcPositiveLengthMeasure`")); } + try { GenericConvert( in->Textures, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcSurfaceStyleWithTextures to be a `LIST [1:?] OF IfcSurfaceTexture`")); } } while(0); return base; } @@ -4508,16 +4725,152 @@ template <> size_t GenericFill(const DB& db, const LIST& para return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralPlanarActionVarying* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSwitchingDeviceType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcValveType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcSystemFurnitureElementType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTankType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendon* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendonAnchor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteral* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTextLiteralWithExtent* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTimeSeriesSchedule* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTopologyRepresentation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransformerType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElement* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTransportElementType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrapeziumProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTrimmedCurve* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcTrimmedCurve"); } do { // convert the 'BasisCurve' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->BasisCurve, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcTrimmedCurve to be a `IfcCurve`")); } + } while(0); + do { // convert the 'Trim1' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Trim1, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } + } while(0); + do { // convert the 'Trim2' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->Trim2, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to IfcTrimmedCurve to be a `SET [1:2] OF IfcTrimmingSelect`")); } + } while(0); + do { // convert the 'SenseAgreement' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->SenseAgreement, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to IfcTrimmedCurve to be a `BOOLEAN`")); } + } while(0); + do { // convert the 'MasterRepresentation' argument + boost::shared_ptr arg = params[base++]; + try { GenericConvert( in->MasterRepresentation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcTrimmedCurve to be a `IfcTrimmingPreference`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTubeBundleType* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcTwoDirectionRepeatFactor* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); +// this data structure is not used yet, so there is no code generated to fill its members + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, IfcUShapeProfileDef* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -4533,248 +4886,46 @@ template <> size_t GenericFill(const DB& db, const LIST& para return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcVirtualElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuralCurveConnection* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDeviceType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoof* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricTimeControlType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPile* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostSchedule* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRampFlightType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDerivedProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCostItem* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEvaporativeCoolerType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcUnitaryEquipmentType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcChillerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBoxedHalfSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCurtainWallType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcGeometricRepresentationSubContext* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDimensionCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPlane* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to IfcPlane"); } return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionCurve* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDamperType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcValveType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMechanicalFastener* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVector* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctSilencerType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLaborResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFanType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProjectionElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCraneRailFShapeProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProject* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to IfcProject"); } do { // convert the 'LongName' argument + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcVector"); } do { // convert the 'Orientation' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->LongName, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcProject to be a `IfcLabel`")); } + try { GenericConvert( in->Orientation, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcVector to be a `IfcDirection`")); } } while(0); - do { // convert the 'Phase' argument + do { // convert the 'Magnitude' argument boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->Phase, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to IfcProject to be a `IfcLabel`")); } - } while(0); - do { // convert the 'RepresentationContexts' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RepresentationContexts, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to IfcProject to be a `SET [1:?] OF IfcRepresentationContext`")); } - } while(0); - do { // convert the 'UnitsInContext' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UnitsInContext, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to IfcProject to be a `IfcUnitAssignment`")); } + try { GenericConvert( in->Magnitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcVector to be a `IfcLengthMeasure`")); } } while(0); return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelVoidsElement* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertex* in) { - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelVoidsElement"); } do { // convert the 'RelatingBuildingElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingBuildingElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelVoidsElement to be a `IfcElement`")); } - } while(0); - do { // convert the 'RelatedOpeningElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedOpeningElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelVoidsElement to be a `IfcFeatureElementSubtraction`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricalCircuit* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcLShapeProfileDef* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVertexLoop* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFlowTreatmentDevice* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -4786,163 +4937,72 @@ template <> size_t GenericFill(const DB& db, const LIST& params, return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAnnotationTextOccurrence* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVibrationIsolatorType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFilterType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcVirtualElement* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcEdgeLoop* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCircleHollowProfileDef* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to IfcCircleHollowProfileDef"); } do { // convert the 'WallThickness' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->WallThickness, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcCircleHollowProfileDef to be a `IfcPositiveLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAirTerminalBoxType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStructuredDimensionCallout* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierSegmentType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcDuctFittingType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRectangularTrimmedSurface* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcProductDefinitionShape* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcStairFlight* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWall* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSlab* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallStandardCase* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcPipeFittingType* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSpace* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to IfcSpace"); } do { // convert the 'InteriorOrExteriorSpace' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->InteriorOrExteriorSpace, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to IfcSpace to be a `IfcInternalOrExternalEnum`")); } - } while(0); - do { // convert the 'ElevationWithFlooring' argument - boost::shared_ptr arg = params[base++]; - if (dynamic_cast(&*arg)) break; - try { GenericConvert( in->ElevationWithFlooring, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to IfcSpace to be a `IfcLengthMeasure`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcBuildingElementProxyType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWallType* in) { size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcAlarmType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWasteTerminalType* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCableCarrierFittingType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindow* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRoundedEdgeFeature* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWindowStyle* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcFaceSurface* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkControl* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2D* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcWorkPlan* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcTendonAnchor* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } @@ -4954,76 +5014,16 @@ template <> size_t GenericFill(const DB& db, const LIST& params return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcSurfaceOfRevolution* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcZShapeProfileDef* in) { - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } // ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcElectricHeaterType* in) +template <> size_t GenericFill(const DB& db, const LIST& params, IfcZone* in) { - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcMeasureWithUnit* in) -{ - size_t base = 0; - if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to IfcMeasureWithUnit"); } do { // convert the 'ValueComponent' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->ValueComponent, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to IfcMeasureWithUnit to be a `IfcValue`")); } - } while(0); - do { // convert the 'UnitComponent' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->UnitComponent, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to IfcMeasureWithUnit to be a `IfcUnit`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcOrientedEdge* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcCartesianTransformationOperator2DnonUniform* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRelFillsElement* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); - if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to IfcRelFillsElement"); } do { // convert the 'RelatingOpeningElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatingOpeningElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to IfcRelFillsElement to be a `IfcOpeningElement`")); } - } while(0); - do { // convert the 'RelatedBuildingElement' argument - boost::shared_ptr arg = params[base++]; - try { GenericConvert( in->RelatedBuildingElement, arg, db ); break; } - catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to IfcRelFillsElement to be a `IfcElement`")); } - } while(0); - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcConstructionMaterialResource* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); -// this data structure is not used yet, so there is no code generated to fill its members - return base; -} -// ----------------------------------------------------------------------------------------------------------- -template <> size_t GenericFill(const DB& db, const LIST& params, IfcRadiusDimension* in) -{ - size_t base = GenericFill(db,params,static_cast(in)); + size_t base = GenericFill(db,params,static_cast(in)); // this data structure is not used yet, so there is no code generated to fill its members return base; } diff --git a/code/IFCReaderGen.h b/code/IFCReaderGen.h index f87cf2b45..642a05f27 100644 --- a/code/IFCReaderGen.h +++ b/code/IFCReaderGen.h @@ -61,658 +61,658 @@ namespace IFC { // ****************************************************************************** - // C++ wrapper type for IfcSIPrefix - typedef ENUMERATION IfcSIPrefix; - // C++ wrapper type for IfcColour - typedef SELECT IfcColour; - // C++ wrapper type for IfcEvaporativeCoolerTypeEnum - typedef ENUMERATION IfcEvaporativeCoolerTypeEnum; - // C++ wrapper type for IfcMetricValueSelect - typedef SELECT IfcMetricValueSelect; - // C++ wrapper type for IfcCurtainWallTypeEnum - typedef ENUMERATION IfcCurtainWallTypeEnum; - // C++ wrapper type for IfcVolumetricFlowRateMeasure - typedef REAL IfcVolumetricFlowRateMeasure; - // C++ wrapper type for IfcPHMeasure - typedef REAL IfcPHMeasure; - // C++ wrapper type for IfcTimeStamp - typedef INTEGER IfcTimeStamp; - // C++ wrapper type for IfcSoundPressureMeasure - typedef REAL IfcSoundPressureMeasure; - // C++ wrapper type for IfcArithmeticOperatorEnum - typedef ENUMERATION IfcArithmeticOperatorEnum; - // C++ wrapper type for IfcOutletTypeEnum - typedef ENUMERATION IfcOutletTypeEnum; - // C++ wrapper type for IfcLampTypeEnum - typedef ENUMERATION IfcLampTypeEnum; - // C++ wrapper type for IfcObjectReferenceSelect - typedef SELECT IfcObjectReferenceSelect; - // C++ wrapper type for IfcDateTimeSelect - typedef SELECT IfcDateTimeSelect; - // C++ wrapper type for IfcElectricGeneratorTypeEnum - typedef ENUMERATION IfcElectricGeneratorTypeEnum; - // C++ wrapper type for IfcMoistureDiffusivityMeasure - typedef REAL IfcMoistureDiffusivityMeasure; - // C++ wrapper type for IfcCompoundPlaneAngleMeasure - typedef ListOf< INTEGER, 3, 3 > IfcCompoundPlaneAngleMeasure; - // C++ wrapper type for IfcDerivedUnitEnum - typedef ENUMERATION IfcDerivedUnitEnum; - // C++ wrapper type for IfcRotationalStiffnessMeasure - typedef REAL IfcRotationalStiffnessMeasure; - // C++ wrapper type for IfcPipeFittingTypeEnum - typedef ENUMERATION IfcPipeFittingTypeEnum; - // C++ wrapper type for IfcShearModulusMeasure - typedef REAL IfcShearModulusMeasure; - // C++ wrapper type for IfcContextDependentMeasure - typedef REAL IfcContextDependentMeasure; - // C++ wrapper type for IfcLightFixtureTypeEnum - typedef ENUMERATION IfcLightFixtureTypeEnum; - // C++ wrapper type for IfcResourceConsumptionEnum - typedef ENUMERATION IfcResourceConsumptionEnum; - // C++ wrapper type for IfcDistributionChamberElementTypeEnum - typedef ENUMERATION IfcDistributionChamberElementTypeEnum; - // C++ wrapper type for IfcPlaneAngleMeasure - typedef REAL IfcPlaneAngleMeasure; - // C++ wrapper type for IfcSlabTypeEnum - typedef ENUMERATION IfcSlabTypeEnum; - // C++ wrapper type for IfcCharacterStyleSelect - typedef SELECT IfcCharacterStyleSelect; - // C++ wrapper type for IfcDimensionExtentUsage - typedef ENUMERATION IfcDimensionExtentUsage; - // C++ wrapper type for IfcDynamicViscosityMeasure - typedef REAL IfcDynamicViscosityMeasure; - // C++ wrapper type for IfcPropertySourceEnum - typedef ENUMERATION IfcPropertySourceEnum; - // C++ wrapper type for IfcConstraintEnum - typedef ENUMERATION IfcConstraintEnum; - // C++ wrapper type for IfcLayerSetDirectionEnum - typedef ENUMERATION IfcLayerSetDirectionEnum; - // C++ wrapper type for IfcFontVariant - typedef STRING IfcFontVariant; - // C++ wrapper type for IfcModulusOfElasticityMeasure - typedef REAL IfcModulusOfElasticityMeasure; - // C++ wrapper type for IfcDoorPanelPositionEnum - typedef ENUMERATION IfcDoorPanelPositionEnum; - // C++ wrapper type for IfcWindowStyleConstructionEnum - typedef ENUMERATION IfcWindowStyleConstructionEnum; - // C++ wrapper type for IfcAmountOfSubstanceMeasure - typedef REAL IfcAmountOfSubstanceMeasure; - // C++ wrapper type for IfcCurvatureMeasure - typedef REAL IfcCurvatureMeasure; - // C++ wrapper type for IfcCableCarrierFittingTypeEnum - typedef ENUMERATION IfcCableCarrierFittingTypeEnum; - // C++ wrapper type for IfcMinuteInHour - typedef INTEGER IfcMinuteInHour; - // C++ wrapper type for IfcPressureMeasure - typedef REAL IfcPressureMeasure; - // C++ wrapper type for IfcElectricConductanceMeasure - typedef REAL IfcElectricConductanceMeasure; - // C++ wrapper type for IfcIsothermalMoistureCapacityMeasure - typedef REAL IfcIsothermalMoistureCapacityMeasure; - // C++ wrapper type for IfcFanTypeEnum - typedef ENUMERATION IfcFanTypeEnum; - // C++ wrapper type for IfcCurveOrEdgeCurve - typedef SELECT IfcCurveOrEdgeCurve; - // C++ wrapper type for IfcPipeSegmentTypeEnum - typedef ENUMERATION IfcPipeSegmentTypeEnum; - // C++ wrapper type for IfcEvaporatorTypeEnum - typedef ENUMERATION IfcEvaporatorTypeEnum; - // C++ wrapper type for IfcElectricCapacitanceMeasure - typedef REAL IfcElectricCapacitanceMeasure; - // C++ wrapper type for IfcElementAssemblyTypeEnum - typedef ENUMERATION IfcElementAssemblyTypeEnum; - // C++ wrapper type for IfcElectricCurrentMeasure - typedef REAL IfcElectricCurrentMeasure; - // C++ wrapper type for IfcThermalAdmittanceMeasure - typedef REAL IfcThermalAdmittanceMeasure; - // C++ wrapper type for IfcLibrarySelect - typedef SELECT IfcLibrarySelect; - // C++ wrapper type for IfcSanitaryTerminalTypeEnum - typedef ENUMERATION IfcSanitaryTerminalTypeEnum; - // C++ wrapper type for IfcValue - typedef SELECT IfcValue; - // C++ wrapper type for IfcRoleEnum - typedef ENUMERATION IfcRoleEnum; - // C++ wrapper type for IfcModulusOfRotationalSubgradeReactionMeasure - typedef REAL IfcModulusOfRotationalSubgradeReactionMeasure; - // C++ wrapper type for IfcWindowStyleOperationEnum - typedef ENUMERATION IfcWindowStyleOperationEnum; - // C++ wrapper type for IfcDayInMonthNumber - typedef INTEGER IfcDayInMonthNumber; - // C++ wrapper type for IfcDirectionSenseEnum - typedef ENUMERATION IfcDirectionSenseEnum; - // C++ wrapper type for IfcMotorConnectionTypeEnum - typedef ENUMERATION IfcMotorConnectionTypeEnum; - // C++ wrapper type for IfcMassDensityMeasure - typedef REAL IfcMassDensityMeasure; - // C++ wrapper type for IfcSpaceTypeEnum - typedef ENUMERATION IfcSpaceTypeEnum; - // C++ wrapper type for IfcTextAlignment - typedef STRING IfcTextAlignment; // C++ wrapper type for IfcAbsorbedDoseMeasure typedef REAL IfcAbsorbedDoseMeasure; - // C++ wrapper type for IfcObjectiveEnum - typedef ENUMERATION IfcObjectiveEnum; - // C++ wrapper type for IfcSoundScaleEnum - typedef ENUMERATION IfcSoundScaleEnum; - // C++ wrapper type for IfcIlluminanceMeasure - typedef REAL IfcIlluminanceMeasure; - // C++ wrapper type for IfcDoseEquivalentMeasure - typedef REAL IfcDoseEquivalentMeasure; - // C++ wrapper type for IfcPowerMeasure - typedef REAL IfcPowerMeasure; - // C++ wrapper type for IfcElectricVoltageMeasure - typedef REAL IfcElectricVoltageMeasure; - // C++ wrapper type for IfcFootingTypeEnum - typedef ENUMERATION IfcFootingTypeEnum; - // C++ wrapper type for IfcFontStyle - typedef STRING IfcFontStyle; - // C++ wrapper type for IfcShell - typedef SELECT IfcShell; - // C++ wrapper type for IfcPermeableCoveringOperationEnum - typedef ENUMERATION IfcPermeableCoveringOperationEnum; - // C++ wrapper type for IfcWarpingMomentMeasure - typedef REAL IfcWarpingMomentMeasure; - // C++ wrapper type for IfcSectionalAreaIntegralMeasure - typedef REAL IfcSectionalAreaIntegralMeasure; - // C++ wrapper type for IfcModulusOfSubgradeReactionMeasure - typedef REAL IfcModulusOfSubgradeReactionMeasure; - // C++ wrapper type for IfcRotationalFrequencyMeasure - typedef REAL IfcRotationalFrequencyMeasure; - // C++ wrapper type for IfcFillAreaStyleTileShapeSelect - typedef SELECT IfcFillAreaStyleTileShapeSelect; - // C++ wrapper type for IfcLoadGroupTypeEnum - typedef ENUMERATION IfcLoadGroupTypeEnum; - // C++ wrapper type for IfcSolidAngleMeasure - typedef REAL IfcSolidAngleMeasure; - // C++ wrapper type for IfcColourOrFactor - typedef SELECT IfcColourOrFactor; - // C++ wrapper type for IfcHourInDay - typedef INTEGER IfcHourInDay; - // C++ wrapper type for IfcLinearStiffnessMeasure - typedef REAL IfcLinearStiffnessMeasure; - // C++ wrapper type for IfcTimeMeasure - typedef REAL IfcTimeMeasure; - // C++ wrapper type for IfcBoxAlignment - typedef STRING IfcBoxAlignment; - // C++ wrapper type for IfcElectricFlowStorageDeviceTypeEnum - typedef ENUMERATION IfcElectricFlowStorageDeviceTypeEnum; - // C++ wrapper type for IfcOrientationSelect - typedef SELECT IfcOrientationSelect; - // C++ wrapper type for IfcSecondInMinute - typedef REAL IfcSecondInMinute; - // C++ wrapper type for IfcWorkControlTypeEnum - typedef ENUMERATION IfcWorkControlTypeEnum; - // C++ wrapper type for IfcHeatFluxDensityMeasure - typedef REAL IfcHeatFluxDensityMeasure; - // C++ wrapper type for IfcSizeSelect - typedef SELECT IfcSizeSelect; - // C++ wrapper type for IfcDimensionCount - typedef INTEGER IfcDimensionCount; - // C++ wrapper type for IfcValveTypeEnum - typedef ENUMERATION IfcValveTypeEnum; - // C++ wrapper type for IfcTransportElementTypeEnum - typedef ENUMERATION IfcTransportElementTypeEnum; - // C++ wrapper type for IfcInductanceMeasure - typedef REAL IfcInductanceMeasure; - // C++ wrapper type for IfcYearNumber - typedef INTEGER IfcYearNumber; - // C++ wrapper type for IfcDoorStyleConstructionEnum - typedef ENUMERATION IfcDoorStyleConstructionEnum; - // C++ wrapper type for IfcThermalExpansionCoefficientMeasure - typedef REAL IfcThermalExpansionCoefficientMeasure; - // C++ wrapper type for IfcCompressorTypeEnum - typedef ENUMERATION IfcCompressorTypeEnum; - // C++ wrapper type for IfcAxis2Placement - typedef SELECT IfcAxis2Placement; - // C++ wrapper type for IfcSwitchingDeviceTypeEnum - typedef ENUMERATION IfcSwitchingDeviceTypeEnum; - // C++ wrapper type for IfcDocumentConfidentialityEnum - typedef ENUMERATION IfcDocumentConfidentialityEnum; - // C++ wrapper type for IfcGasTerminalTypeEnum - typedef ENUMERATION IfcGasTerminalTypeEnum; - // C++ wrapper type for IfcServiceLifeTypeEnum - typedef ENUMERATION IfcServiceLifeTypeEnum; - // C++ wrapper type for IfcIntegerCountRateMeasure - typedef INTEGER IfcIntegerCountRateMeasure; - // C++ wrapper type for IfcDocumentStatusEnum - typedef ENUMERATION IfcDocumentStatusEnum; - // C++ wrapper type for IfcSpaceHeaterTypeEnum - typedef ENUMERATION IfcSpaceHeaterTypeEnum; - // C++ wrapper type for IfcWasteTerminalTypeEnum - typedef ENUMERATION IfcWasteTerminalTypeEnum; - // C++ wrapper type for IfcAirTerminalTypeEnum - typedef ENUMERATION IfcAirTerminalTypeEnum; - // C++ wrapper type for IfcProjectedOrTrueLengthEnum - typedef ENUMERATION IfcProjectedOrTrueLengthEnum; - // C++ wrapper type for IfcDuctFittingTypeEnum - typedef ENUMERATION IfcDuctFittingTypeEnum; - // C++ wrapper type for IfcLabel - typedef STRING IfcLabel; - // C++ wrapper type for IfcTextFontSelect - typedef SELECT IfcTextFontSelect; - // C++ wrapper type for IfcAnalysisTheoryTypeEnum - typedef ENUMERATION IfcAnalysisTheoryTypeEnum; - // C++ wrapper type for IfcProjectOrderRecordTypeEnum - typedef ENUMERATION IfcProjectOrderRecordTypeEnum; - // C++ wrapper type for IfcUnit - typedef SELECT IfcUnit; - // C++ wrapper type for IfcWindowPanelPositionEnum - typedef ENUMERATION IfcWindowPanelPositionEnum; - // C++ wrapper type for IfcSymbolStyleSelect - typedef SELECT IfcSymbolStyleSelect; - // C++ wrapper type for IfcWallTypeEnum - typedef ENUMERATION IfcWallTypeEnum; - // C++ wrapper type for IfcLightEmissionSourceEnum - typedef ENUMERATION IfcLightEmissionSourceEnum; - // C++ wrapper type for IfcModulusOfLinearSubgradeReactionMeasure - typedef REAL IfcModulusOfLinearSubgradeReactionMeasure; - // C++ wrapper type for IfcSpecularRoughness - typedef REAL IfcSpecularRoughness; - // C++ wrapper type for IfcTendonTypeEnum - typedef ENUMERATION IfcTendonTypeEnum; - // C++ wrapper type for IfcElectricMotorTypeEnum - typedef ENUMERATION IfcElectricMotorTypeEnum; - // C++ wrapper type for IfcCurveStyleFontSelect - typedef SELECT IfcCurveStyleFontSelect; - // C++ wrapper type for IfcPlanarForceMeasure - typedef REAL IfcPlanarForceMeasure; - // C++ wrapper type for IfcCoilTypeEnum - typedef ENUMERATION IfcCoilTypeEnum; - // C++ wrapper type for IfcSimpleValue - typedef SELECT IfcSimpleValue; - // C++ wrapper type for IfcLogicalOperatorEnum - typedef ENUMERATION IfcLogicalOperatorEnum; - // C++ wrapper type for IfcTransformerTypeEnum - typedef ENUMERATION IfcTransformerTypeEnum; - // C++ wrapper type for IfcVaporPermeabilityMeasure - typedef REAL IfcVaporPermeabilityMeasure; - // C++ wrapper type for IfcMassFlowRateMeasure - typedef REAL IfcMassFlowRateMeasure; - // C++ wrapper type for IfcBooleanOperator - typedef ENUMERATION IfcBooleanOperator; - // C++ wrapper type for IfcRadioActivityMeasure - typedef REAL IfcRadioActivityMeasure; - // C++ wrapper type for IfcSurfaceSide - typedef ENUMERATION IfcSurfaceSide; - // C++ wrapper type for IfcRibPlateDirectionEnum - typedef ENUMERATION IfcRibPlateDirectionEnum; - // C++ wrapper type for IfcGeometricSetSelect - typedef SELECT IfcGeometricSetSelect; - // C++ wrapper type for IfcVolumeMeasure - typedef REAL IfcVolumeMeasure; - // C++ wrapper type for IfcDoorPanelOperationEnum - typedef ENUMERATION IfcDoorPanelOperationEnum; - // C++ wrapper type for IfcElectricHeaterTypeEnum - typedef ENUMERATION IfcElectricHeaterTypeEnum; - // C++ wrapper type for IfcMagneticFluxMeasure - typedef REAL IfcMagneticFluxMeasure; - // C++ wrapper type for IfcThermalTransmittanceMeasure - typedef REAL IfcThermalTransmittanceMeasure; - // C++ wrapper type for IfcStructuralCurveTypeEnum - typedef ENUMERATION IfcStructuralCurveTypeEnum; - // C++ wrapper type for IfcMonetaryMeasure - typedef REAL IfcMonetaryMeasure; - // C++ wrapper type for IfcAssemblyPlaceEnum - typedef ENUMERATION IfcAssemblyPlaceEnum; - // C++ wrapper type for IfcReinforcingBarSurfaceEnum - typedef ENUMERATION IfcReinforcingBarSurfaceEnum; - // C++ wrapper type for IfcPointOrVertexPoint - typedef SELECT IfcPointOrVertexPoint; - // C++ wrapper type for IfcSpecificHeatCapacityMeasure - typedef REAL IfcSpecificHeatCapacityMeasure; - // C++ wrapper type for IfcChangeActionEnum - typedef ENUMERATION IfcChangeActionEnum; - // C++ wrapper type for IfcElectricDistributionPointFunctionEnum - typedef ENUMERATION IfcElectricDistributionPointFunctionEnum; - // C++ wrapper type for IfcBuildingElementProxyTypeEnum - typedef ENUMERATION IfcBuildingElementProxyTypeEnum; - // C++ wrapper type for IfcSequenceEnum - typedef ENUMERATION IfcSequenceEnum; - // C++ wrapper type for IfcAheadOrBehind - typedef ENUMERATION IfcAheadOrBehind; - // C++ wrapper type for IfcProjectOrderTypeEnum - typedef ENUMERATION IfcProjectOrderTypeEnum; - // C++ wrapper type for IfcTextStyleSelect - typedef SELECT IfcTextStyleSelect; - // C++ wrapper type for IfcCooledBeamTypeEnum - typedef ENUMERATION IfcCooledBeamTypeEnum; - // C++ wrapper type for IfcConnectionTypeEnum - typedef ENUMERATION IfcConnectionTypeEnum; - // C++ wrapper type for IfcSensorTypeEnum - typedef ENUMERATION IfcSensorTypeEnum; - // C++ wrapper type for IfcTrimmingPreference - typedef ENUMERATION IfcTrimmingPreference; - // C++ wrapper type for IfcStructuralSurfaceTypeEnum - typedef ENUMERATION IfcStructuralSurfaceTypeEnum; - // C++ wrapper type for IfcCostScheduleTypeEnum - typedef ENUMERATION IfcCostScheduleTypeEnum; - // C++ wrapper type for IfcSoundPowerMeasure - typedef REAL IfcSoundPowerMeasure; - // C++ wrapper type for IfcStairFlightTypeEnum - typedef ENUMERATION IfcStairFlightTypeEnum; - // C++ wrapper type for IfcDuctSegmentTypeEnum - typedef ENUMERATION IfcDuctSegmentTypeEnum; - // C++ wrapper type for IfcServiceLifeFactorTypeEnum - typedef ENUMERATION IfcServiceLifeFactorTypeEnum; - // C++ wrapper type for IfcBSplineCurveForm - typedef ENUMERATION IfcBSplineCurveForm; - // C++ wrapper type for IfcLuminousIntensityMeasure - typedef REAL IfcLuminousIntensityMeasure; - // C++ wrapper type for IfcCoolingTowerTypeEnum - typedef ENUMERATION IfcCoolingTowerTypeEnum; - // C++ wrapper type for IfcUnitEnum - typedef ENUMERATION IfcUnitEnum; - // C++ wrapper type for IfcPositivePlaneAngleMeasure - typedef REAL IfcPositivePlaneAngleMeasure; - // C++ wrapper type for IfcLightDistributionDataSourceSelect - typedef SELECT IfcLightDistributionDataSourceSelect; - // C++ wrapper type for IfcKinematicViscosityMeasure - typedef REAL IfcKinematicViscosityMeasure; - // C++ wrapper type for IfcDamperTypeEnum - typedef ENUMERATION IfcDamperTypeEnum; - // C++ wrapper type for IfcVectorOrDirection - typedef SELECT IfcVectorOrDirection; - // C++ wrapper type for IfcJunctionBoxTypeEnum - typedef ENUMERATION IfcJunctionBoxTypeEnum; - // C++ wrapper type for IfcActorSelect - typedef SELECT IfcActorSelect; - // C++ wrapper type for IfcElectricApplianceTypeEnum - typedef ENUMERATION IfcElectricApplianceTypeEnum; - // C++ wrapper type for IfcThermodynamicTemperatureMeasure - typedef REAL IfcThermodynamicTemperatureMeasure; - // C++ wrapper type for IfcMomentOfInertiaMeasure - typedef REAL IfcMomentOfInertiaMeasure; - // C++ wrapper type for IfcMonthInYearNumber - typedef INTEGER IfcMonthInYearNumber; - // C++ wrapper type for IfcStairTypeEnum - typedef ENUMERATION IfcStairTypeEnum; - // C++ wrapper type for IfcProtectiveDeviceTypeEnum - typedef ENUMERATION IfcProtectiveDeviceTypeEnum; - // C++ wrapper type for IfcTextDecoration - typedef STRING IfcTextDecoration; - // C++ wrapper type for IfcUnitaryEquipmentTypeEnum - typedef ENUMERATION IfcUnitaryEquipmentTypeEnum; - // C++ wrapper type for IfcElementCompositionEnum - typedef ENUMERATION IfcElementCompositionEnum; - // C++ wrapper type for IfcCurveFontOrScaledCurveFontSelect - typedef SELECT IfcCurveFontOrScaledCurveFontSelect; - // C++ wrapper type for IfcDescriptiveMeasure - typedef STRING IfcDescriptiveMeasure; - // C++ wrapper type for IfcProfileTypeEnum - typedef ENUMERATION IfcProfileTypeEnum; - // C++ wrapper type for IfcDoorStyleOperationEnum - typedef ENUMERATION IfcDoorStyleOperationEnum; - // C++ wrapper type for IfcTorqueMeasure - typedef REAL IfcTorqueMeasure; - // C++ wrapper type for IfcDaylightSavingHour - typedef INTEGER IfcDaylightSavingHour; - // C++ wrapper type for IfcRotationalMassMeasure - typedef REAL IfcRotationalMassMeasure; - // C++ wrapper type for IfcNullStyle - typedef ENUMERATION IfcNullStyle; - // C++ wrapper type for IfcFireSuppressionTerminalTypeEnum - typedef ENUMERATION IfcFireSuppressionTerminalTypeEnum; - // C++ wrapper type for IfcHeatingValueMeasure - typedef REAL IfcHeatingValueMeasure; - // C++ wrapper type for IfcRampFlightTypeEnum - typedef ENUMERATION IfcRampFlightTypeEnum; - // C++ wrapper type for IfcSpecularHighlightSelect - typedef SELECT IfcSpecularHighlightSelect; - // C++ wrapper type for IfcThermalLoadTypeEnum - typedef ENUMERATION IfcThermalLoadTypeEnum; - // C++ wrapper type for IfcVibrationIsolatorTypeEnum - typedef ENUMERATION IfcVibrationIsolatorTypeEnum; - // C++ wrapper type for IfcFillStyleSelect - typedef SELECT IfcFillStyleSelect; - // C++ wrapper type for IfcObjectTypeEnum - typedef ENUMERATION IfcObjectTypeEnum; - // C++ wrapper type for IfcHatchLineDistanceSelect - typedef SELECT IfcHatchLineDistanceSelect; - // C++ wrapper type for IfcPresentableText - typedef STRING IfcPresentableText; - // C++ wrapper type for IfcAnalysisModelTypeEnum - typedef ENUMERATION IfcAnalysisModelTypeEnum; - // C++ wrapper type for IfcAngularVelocityMeasure - typedef REAL IfcAngularVelocityMeasure; // C++ wrapper type for IfcAccelerationMeasure typedef REAL IfcAccelerationMeasure; - // C++ wrapper type for IfcThermalLoadSourceEnum - typedef ENUMERATION IfcThermalLoadSourceEnum; - // C++ wrapper type for IfcFlowDirectionEnum - typedef ENUMERATION IfcFlowDirectionEnum; - // C++ wrapper type for IfcTankTypeEnum - typedef ENUMERATION IfcTankTypeEnum; - // C++ wrapper type for IfcSurfaceTextureEnum - typedef ENUMERATION IfcSurfaceTextureEnum; - // C++ wrapper type for IfcTimeSeriesDataTypeEnum - typedef ENUMERATION IfcTimeSeriesDataTypeEnum; - // C++ wrapper type for IfcPhysicalOrVirtualEnum - typedef ENUMERATION IfcPhysicalOrVirtualEnum; - // C++ wrapper type for IfcDraughtingCalloutElement - typedef SELECT IfcDraughtingCalloutElement; - // C++ wrapper type for IfcDocumentSelect - typedef SELECT IfcDocumentSelect; - // C++ wrapper type for IfcThermalResistanceMeasure - typedef REAL IfcThermalResistanceMeasure; + // C++ wrapper type for IfcAmountOfSubstanceMeasure + typedef REAL IfcAmountOfSubstanceMeasure; + // C++ wrapper type for IfcAngularVelocityMeasure + typedef REAL IfcAngularVelocityMeasure; + // C++ wrapper type for IfcAreaMeasure + typedef REAL IfcAreaMeasure; + // C++ wrapper type for IfcBoolean + typedef BOOLEAN IfcBoolean; + // C++ wrapper type for IfcBoxAlignment + typedef STRING IfcBoxAlignment; + // C++ wrapper type for IfcCompoundPlaneAngleMeasure + typedef ListOf< INTEGER, 3, 3 > IfcCompoundPlaneAngleMeasure; + // C++ wrapper type for IfcContextDependentMeasure + typedef REAL IfcContextDependentMeasure; + // C++ wrapper type for IfcCountMeasure + typedef NUMBER IfcCountMeasure; + // C++ wrapper type for IfcCurvatureMeasure + typedef REAL IfcCurvatureMeasure; + // C++ wrapper type for IfcDayInMonthNumber + typedef INTEGER IfcDayInMonthNumber; + // C++ wrapper type for IfcDaylightSavingHour + typedef INTEGER IfcDaylightSavingHour; + // C++ wrapper type for IfcDescriptiveMeasure + typedef STRING IfcDescriptiveMeasure; + // C++ wrapper type for IfcDimensionCount + typedef INTEGER IfcDimensionCount; + // C++ wrapper type for IfcDoseEquivalentMeasure + typedef REAL IfcDoseEquivalentMeasure; + // C++ wrapper type for IfcDynamicViscosityMeasure + typedef REAL IfcDynamicViscosityMeasure; + // C++ wrapper type for IfcElectricCapacitanceMeasure + typedef REAL IfcElectricCapacitanceMeasure; + // C++ wrapper type for IfcElectricChargeMeasure + typedef REAL IfcElectricChargeMeasure; + // C++ wrapper type for IfcElectricConductanceMeasure + typedef REAL IfcElectricConductanceMeasure; + // C++ wrapper type for IfcElectricCurrentMeasure + typedef REAL IfcElectricCurrentMeasure; + // C++ wrapper type for IfcElectricResistanceMeasure + typedef REAL IfcElectricResistanceMeasure; + // C++ wrapper type for IfcElectricVoltageMeasure + typedef REAL IfcElectricVoltageMeasure; + // C++ wrapper type for IfcEnergyMeasure + typedef REAL IfcEnergyMeasure; + // C++ wrapper type for IfcFontStyle + typedef STRING IfcFontStyle; + // C++ wrapper type for IfcFontVariant + typedef STRING IfcFontVariant; + // C++ wrapper type for IfcFontWeight + typedef STRING IfcFontWeight; + // C++ wrapper type for IfcForceMeasure + typedef REAL IfcForceMeasure; + // C++ wrapper type for IfcFrequencyMeasure + typedef REAL IfcFrequencyMeasure; + // C++ wrapper type for IfcGloballyUniqueId + typedef STRING IfcGloballyUniqueId; + // C++ wrapper type for IfcHeatFluxDensityMeasure + typedef REAL IfcHeatFluxDensityMeasure; + // C++ wrapper type for IfcHeatingValueMeasure + typedef REAL IfcHeatingValueMeasure; + // C++ wrapper type for IfcHourInDay + typedef INTEGER IfcHourInDay; + // C++ wrapper type for IfcIdentifier + typedef STRING IfcIdentifier; + // C++ wrapper type for IfcIlluminanceMeasure + typedef REAL IfcIlluminanceMeasure; + // C++ wrapper type for IfcInductanceMeasure + typedef REAL IfcInductanceMeasure; + // C++ wrapper type for IfcInteger + typedef INTEGER IfcInteger; + // C++ wrapper type for IfcIntegerCountRateMeasure + typedef INTEGER IfcIntegerCountRateMeasure; + // C++ wrapper type for IfcIonConcentrationMeasure + typedef REAL IfcIonConcentrationMeasure; + // C++ wrapper type for IfcIsothermalMoistureCapacityMeasure + typedef REAL IfcIsothermalMoistureCapacityMeasure; + // C++ wrapper type for IfcKinematicViscosityMeasure + typedef REAL IfcKinematicViscosityMeasure; + // C++ wrapper type for IfcLabel + typedef STRING IfcLabel; + // C++ wrapper type for IfcLengthMeasure + typedef REAL IfcLengthMeasure; + // C++ wrapper type for IfcLinearForceMeasure + typedef REAL IfcLinearForceMeasure; + // C++ wrapper type for IfcLinearMomentMeasure + typedef REAL IfcLinearMomentMeasure; + // C++ wrapper type for IfcLinearStiffnessMeasure + typedef REAL IfcLinearStiffnessMeasure; + // C++ wrapper type for IfcLinearVelocityMeasure + typedef REAL IfcLinearVelocityMeasure; + // C++ wrapper type for IfcLogical + typedef LOGICAL IfcLogical; + // C++ wrapper type for IfcLuminousFluxMeasure + typedef REAL IfcLuminousFluxMeasure; + // C++ wrapper type for IfcLuminousIntensityDistributionMeasure + typedef REAL IfcLuminousIntensityDistributionMeasure; + // C++ wrapper type for IfcLuminousIntensityMeasure + typedef REAL IfcLuminousIntensityMeasure; + // C++ wrapper type for IfcMagneticFluxDensityMeasure + typedef REAL IfcMagneticFluxDensityMeasure; + // C++ wrapper type for IfcMagneticFluxMeasure + typedef REAL IfcMagneticFluxMeasure; + // C++ wrapper type for IfcMassDensityMeasure + typedef REAL IfcMassDensityMeasure; + // C++ wrapper type for IfcMassFlowRateMeasure + typedef REAL IfcMassFlowRateMeasure; + // C++ wrapper type for IfcMassMeasure + typedef REAL IfcMassMeasure; + // C++ wrapper type for IfcMassPerLengthMeasure + typedef REAL IfcMassPerLengthMeasure; + // C++ wrapper type for IfcMinuteInHour + typedef INTEGER IfcMinuteInHour; + // C++ wrapper type for IfcModulusOfElasticityMeasure + typedef REAL IfcModulusOfElasticityMeasure; + // C++ wrapper type for IfcModulusOfLinearSubgradeReactionMeasure + typedef REAL IfcModulusOfLinearSubgradeReactionMeasure; + // C++ wrapper type for IfcModulusOfRotationalSubgradeReactionMeasure + typedef REAL IfcModulusOfRotationalSubgradeReactionMeasure; + // C++ wrapper type for IfcModulusOfSubgradeReactionMeasure + typedef REAL IfcModulusOfSubgradeReactionMeasure; + // C++ wrapper type for IfcMoistureDiffusivityMeasure + typedef REAL IfcMoistureDiffusivityMeasure; + // C++ wrapper type for IfcMolecularWeightMeasure + typedef REAL IfcMolecularWeightMeasure; + // C++ wrapper type for IfcMomentOfInertiaMeasure + typedef REAL IfcMomentOfInertiaMeasure; + // C++ wrapper type for IfcMonetaryMeasure + typedef REAL IfcMonetaryMeasure; + // C++ wrapper type for IfcMonthInYearNumber + typedef INTEGER IfcMonthInYearNumber; + // C++ wrapper type for IfcNormalisedRatioMeasure + typedef REAL IfcNormalisedRatioMeasure; + // C++ wrapper type for IfcNumericMeasure + typedef NUMBER IfcNumericMeasure; + // C++ wrapper type for IfcPHMeasure + typedef REAL IfcPHMeasure; + // C++ wrapper type for IfcParameterValue + typedef REAL IfcParameterValue; + // C++ wrapper type for IfcPlanarForceMeasure + typedef REAL IfcPlanarForceMeasure; + // C++ wrapper type for IfcPlaneAngleMeasure + typedef REAL IfcPlaneAngleMeasure; + // C++ wrapper type for IfcPositiveLengthMeasure + typedef REAL IfcPositiveLengthMeasure; + // C++ wrapper type for IfcPositivePlaneAngleMeasure + typedef REAL IfcPositivePlaneAngleMeasure; + // C++ wrapper type for IfcPositiveRatioMeasure + typedef REAL IfcPositiveRatioMeasure; + // C++ wrapper type for IfcPowerMeasure + typedef REAL IfcPowerMeasure; + // C++ wrapper type for IfcPresentableText + typedef STRING IfcPresentableText; + // C++ wrapper type for IfcPressureMeasure + typedef REAL IfcPressureMeasure; + // C++ wrapper type for IfcRadioActivityMeasure + typedef REAL IfcRadioActivityMeasure; + // C++ wrapper type for IfcRatioMeasure + typedef REAL IfcRatioMeasure; + // C++ wrapper type for IfcReal + typedef REAL IfcReal; + // C++ wrapper type for IfcRotationalFrequencyMeasure + typedef REAL IfcRotationalFrequencyMeasure; + // C++ wrapper type for IfcRotationalMassMeasure + typedef REAL IfcRotationalMassMeasure; + // C++ wrapper type for IfcRotationalStiffnessMeasure + typedef REAL IfcRotationalStiffnessMeasure; + // C++ wrapper type for IfcSecondInMinute + typedef REAL IfcSecondInMinute; + // C++ wrapper type for IfcSectionModulusMeasure + typedef REAL IfcSectionModulusMeasure; + // C++ wrapper type for IfcSectionalAreaIntegralMeasure + typedef REAL IfcSectionalAreaIntegralMeasure; + // C++ wrapper type for IfcShearModulusMeasure + typedef REAL IfcShearModulusMeasure; + // C++ wrapper type for IfcSolidAngleMeasure + typedef REAL IfcSolidAngleMeasure; + // C++ wrapper type for IfcSoundPowerMeasure + typedef REAL IfcSoundPowerMeasure; + // C++ wrapper type for IfcSoundPressureMeasure + typedef REAL IfcSoundPressureMeasure; + // C++ wrapper type for IfcSpecificHeatCapacityMeasure + typedef REAL IfcSpecificHeatCapacityMeasure; + // C++ wrapper type for IfcSpecularExponent + typedef REAL IfcSpecularExponent; + // C++ wrapper type for IfcSpecularRoughness + typedef REAL IfcSpecularRoughness; // C++ wrapper type for IfcTemperatureGradientMeasure typedef REAL IfcTemperatureGradientMeasure; + // C++ wrapper type for IfcText + typedef STRING IfcText; + // C++ wrapper type for IfcTextAlignment + typedef STRING IfcTextAlignment; + // C++ wrapper type for IfcTextDecoration + typedef STRING IfcTextDecoration; + // C++ wrapper type for IfcTextFontName + typedef STRING IfcTextFontName; + // C++ wrapper type for IfcTextTransformation + typedef STRING IfcTextTransformation; + // C++ wrapper type for IfcThermalAdmittanceMeasure + typedef REAL IfcThermalAdmittanceMeasure; + // C++ wrapper type for IfcThermalConductivityMeasure + typedef REAL IfcThermalConductivityMeasure; + // C++ wrapper type for IfcThermalExpansionCoefficientMeasure + typedef REAL IfcThermalExpansionCoefficientMeasure; + // C++ wrapper type for IfcThermalResistanceMeasure + typedef REAL IfcThermalResistanceMeasure; + // C++ wrapper type for IfcThermalTransmittanceMeasure + typedef REAL IfcThermalTransmittanceMeasure; + // C++ wrapper type for IfcThermodynamicTemperatureMeasure + typedef REAL IfcThermodynamicTemperatureMeasure; + // C++ wrapper type for IfcTimeMeasure + typedef REAL IfcTimeMeasure; + // C++ wrapper type for IfcTimeStamp + typedef INTEGER IfcTimeStamp; + // C++ wrapper type for IfcTorqueMeasure + typedef REAL IfcTorqueMeasure; + // C++ wrapper type for IfcVaporPermeabilityMeasure + typedef REAL IfcVaporPermeabilityMeasure; + // C++ wrapper type for IfcVolumeMeasure + typedef REAL IfcVolumeMeasure; + // C++ wrapper type for IfcVolumetricFlowRateMeasure + typedef REAL IfcVolumetricFlowRateMeasure; + // C++ wrapper type for IfcWarpingConstantMeasure + typedef REAL IfcWarpingConstantMeasure; + // C++ wrapper type for IfcWarpingMomentMeasure + typedef REAL IfcWarpingMomentMeasure; + // C++ wrapper type for IfcYearNumber + typedef INTEGER IfcYearNumber; + // C++ wrapper type for IfcActionSourceTypeEnum + typedef ENUMERATION IfcActionSourceTypeEnum; + // C++ wrapper type for IfcActionTypeEnum + typedef ENUMERATION IfcActionTypeEnum; + // C++ wrapper type for IfcActuatorTypeEnum + typedef ENUMERATION IfcActuatorTypeEnum; + // C++ wrapper type for IfcAddressTypeEnum + typedef ENUMERATION IfcAddressTypeEnum; + // C++ wrapper type for IfcAheadOrBehind + typedef ENUMERATION IfcAheadOrBehind; + // C++ wrapper type for IfcAirTerminalBoxTypeEnum + typedef ENUMERATION IfcAirTerminalBoxTypeEnum; + // C++ wrapper type for IfcAirTerminalTypeEnum + typedef ENUMERATION IfcAirTerminalTypeEnum; + // C++ wrapper type for IfcAirToAirHeatRecoveryTypeEnum + typedef ENUMERATION IfcAirToAirHeatRecoveryTypeEnum; + // C++ wrapper type for IfcAlarmTypeEnum + typedef ENUMERATION IfcAlarmTypeEnum; + // C++ wrapper type for IfcAnalysisModelTypeEnum + typedef ENUMERATION IfcAnalysisModelTypeEnum; + // C++ wrapper type for IfcAnalysisTheoryTypeEnum + typedef ENUMERATION IfcAnalysisTheoryTypeEnum; + // C++ wrapper type for IfcArithmeticOperatorEnum + typedef ENUMERATION IfcArithmeticOperatorEnum; + // C++ wrapper type for IfcAssemblyPlaceEnum + typedef ENUMERATION IfcAssemblyPlaceEnum; + // C++ wrapper type for IfcBSplineCurveForm + typedef ENUMERATION IfcBSplineCurveForm; + // C++ wrapper type for IfcBeamTypeEnum + typedef ENUMERATION IfcBeamTypeEnum; + // C++ wrapper type for IfcBenchmarkEnum + typedef ENUMERATION IfcBenchmarkEnum; + // C++ wrapper type for IfcBoilerTypeEnum + typedef ENUMERATION IfcBoilerTypeEnum; + // C++ wrapper type for IfcBooleanOperator + typedef ENUMERATION IfcBooleanOperator; + // C++ wrapper type for IfcBuildingElementProxyTypeEnum + typedef ENUMERATION IfcBuildingElementProxyTypeEnum; + // C++ wrapper type for IfcCableCarrierFittingTypeEnum + typedef ENUMERATION IfcCableCarrierFittingTypeEnum; + // C++ wrapper type for IfcCableCarrierSegmentTypeEnum + typedef ENUMERATION IfcCableCarrierSegmentTypeEnum; + // C++ wrapper type for IfcCableSegmentTypeEnum + typedef ENUMERATION IfcCableSegmentTypeEnum; + // C++ wrapper type for IfcChangeActionEnum + typedef ENUMERATION IfcChangeActionEnum; + // C++ wrapper type for IfcChillerTypeEnum + typedef ENUMERATION IfcChillerTypeEnum; + // C++ wrapper type for IfcCoilTypeEnum + typedef ENUMERATION IfcCoilTypeEnum; + // C++ wrapper type for IfcColumnTypeEnum + typedef ENUMERATION IfcColumnTypeEnum; + // C++ wrapper type for IfcCompressorTypeEnum + typedef ENUMERATION IfcCompressorTypeEnum; + // C++ wrapper type for IfcCondenserTypeEnum + typedef ENUMERATION IfcCondenserTypeEnum; + // C++ wrapper type for IfcConnectionTypeEnum + typedef ENUMERATION IfcConnectionTypeEnum; + // C++ wrapper type for IfcConstraintEnum + typedef ENUMERATION IfcConstraintEnum; + // C++ wrapper type for IfcControllerTypeEnum + typedef ENUMERATION IfcControllerTypeEnum; + // C++ wrapper type for IfcCooledBeamTypeEnum + typedef ENUMERATION IfcCooledBeamTypeEnum; + // C++ wrapper type for IfcCoolingTowerTypeEnum + typedef ENUMERATION IfcCoolingTowerTypeEnum; + // C++ wrapper type for IfcCostScheduleTypeEnum + typedef ENUMERATION IfcCostScheduleTypeEnum; + // C++ wrapper type for IfcCoveringTypeEnum + typedef ENUMERATION IfcCoveringTypeEnum; + // C++ wrapper type for IfcCurrencyEnum + typedef ENUMERATION IfcCurrencyEnum; + // C++ wrapper type for IfcCurtainWallTypeEnum + typedef ENUMERATION IfcCurtainWallTypeEnum; + // C++ wrapper type for IfcDamperTypeEnum + typedef ENUMERATION IfcDamperTypeEnum; + // C++ wrapper type for IfcDataOriginEnum + typedef ENUMERATION IfcDataOriginEnum; + // C++ wrapper type for IfcDerivedUnitEnum + typedef ENUMERATION IfcDerivedUnitEnum; + // C++ wrapper type for IfcDimensionExtentUsage + typedef ENUMERATION IfcDimensionExtentUsage; + // C++ wrapper type for IfcDirectionSenseEnum + typedef ENUMERATION IfcDirectionSenseEnum; + // C++ wrapper type for IfcDistributionChamberElementTypeEnum + typedef ENUMERATION IfcDistributionChamberElementTypeEnum; + // C++ wrapper type for IfcDocumentConfidentialityEnum + typedef ENUMERATION IfcDocumentConfidentialityEnum; + // C++ wrapper type for IfcDocumentStatusEnum + typedef ENUMERATION IfcDocumentStatusEnum; + // C++ wrapper type for IfcDoorPanelOperationEnum + typedef ENUMERATION IfcDoorPanelOperationEnum; + // C++ wrapper type for IfcDoorPanelPositionEnum + typedef ENUMERATION IfcDoorPanelPositionEnum; + // C++ wrapper type for IfcDoorStyleConstructionEnum + typedef ENUMERATION IfcDoorStyleConstructionEnum; + // C++ wrapper type for IfcDoorStyleOperationEnum + typedef ENUMERATION IfcDoorStyleOperationEnum; + // C++ wrapper type for IfcDuctFittingTypeEnum + typedef ENUMERATION IfcDuctFittingTypeEnum; + // C++ wrapper type for IfcDuctSegmentTypeEnum + typedef ENUMERATION IfcDuctSegmentTypeEnum; + // C++ wrapper type for IfcDuctSilencerTypeEnum + typedef ENUMERATION IfcDuctSilencerTypeEnum; + // C++ wrapper type for IfcElectricApplianceTypeEnum + typedef ENUMERATION IfcElectricApplianceTypeEnum; + // C++ wrapper type for IfcElectricCurrentEnum + typedef ENUMERATION IfcElectricCurrentEnum; + // C++ wrapper type for IfcElectricDistributionPointFunctionEnum + typedef ENUMERATION IfcElectricDistributionPointFunctionEnum; + // C++ wrapper type for IfcElectricFlowStorageDeviceTypeEnum + typedef ENUMERATION IfcElectricFlowStorageDeviceTypeEnum; + // C++ wrapper type for IfcElectricGeneratorTypeEnum + typedef ENUMERATION IfcElectricGeneratorTypeEnum; + // C++ wrapper type for IfcElectricHeaterTypeEnum + typedef ENUMERATION IfcElectricHeaterTypeEnum; + // C++ wrapper type for IfcElectricMotorTypeEnum + typedef ENUMERATION IfcElectricMotorTypeEnum; + // C++ wrapper type for IfcElectricTimeControlTypeEnum + typedef ENUMERATION IfcElectricTimeControlTypeEnum; + // C++ wrapper type for IfcElementAssemblyTypeEnum + typedef ENUMERATION IfcElementAssemblyTypeEnum; + // C++ wrapper type for IfcElementCompositionEnum + typedef ENUMERATION IfcElementCompositionEnum; + // C++ wrapper type for IfcEnergySequenceEnum + typedef ENUMERATION IfcEnergySequenceEnum; + // C++ wrapper type for IfcEnvironmentalImpactCategoryEnum + typedef ENUMERATION IfcEnvironmentalImpactCategoryEnum; + // C++ wrapper type for IfcEvaporativeCoolerTypeEnum + typedef ENUMERATION IfcEvaporativeCoolerTypeEnum; + // C++ wrapper type for IfcEvaporatorTypeEnum + typedef ENUMERATION IfcEvaporatorTypeEnum; + // C++ wrapper type for IfcFanTypeEnum + typedef ENUMERATION IfcFanTypeEnum; + // C++ wrapper type for IfcFilterTypeEnum + typedef ENUMERATION IfcFilterTypeEnum; + // C++ wrapper type for IfcFireSuppressionTerminalTypeEnum + typedef ENUMERATION IfcFireSuppressionTerminalTypeEnum; + // C++ wrapper type for IfcFlowDirectionEnum + typedef ENUMERATION IfcFlowDirectionEnum; + // C++ wrapper type for IfcFlowInstrumentTypeEnum + typedef ENUMERATION IfcFlowInstrumentTypeEnum; + // C++ wrapper type for IfcFlowMeterTypeEnum + typedef ENUMERATION IfcFlowMeterTypeEnum; + // C++ wrapper type for IfcFootingTypeEnum + typedef ENUMERATION IfcFootingTypeEnum; + // C++ wrapper type for IfcGasTerminalTypeEnum + typedef ENUMERATION IfcGasTerminalTypeEnum; // C++ wrapper type for IfcGeometricProjectionEnum typedef ENUMERATION IfcGeometricProjectionEnum; // C++ wrapper type for IfcGlobalOrLocalEnum typedef ENUMERATION IfcGlobalOrLocalEnum; - // C++ wrapper type for IfcAreaMeasure - typedef REAL IfcAreaMeasure; - // C++ wrapper type for IfcCsgSelect - typedef SELECT IfcCsgSelect; - // C++ wrapper type for IfcOccupantTypeEnum - typedef ENUMERATION IfcOccupantTypeEnum; - // C++ wrapper type for IfcEnergySequenceEnum - typedef ENUMERATION IfcEnergySequenceEnum; - // C++ wrapper type for IfcFlowMeterTypeEnum - typedef ENUMERATION IfcFlowMeterTypeEnum; - // C++ wrapper type for IfcSectionModulusMeasure - typedef REAL IfcSectionModulusMeasure; - // C++ wrapper type for IfcAirTerminalBoxTypeEnum - typedef ENUMERATION IfcAirTerminalBoxTypeEnum; - // C++ wrapper type for IfcIdentifier - typedef STRING IfcIdentifier; - // C++ wrapper type for IfcInteger - typedef INTEGER IfcInteger; - // C++ wrapper type for IfcProcedureTypeEnum - typedef ENUMERATION IfcProcedureTypeEnum; - // C++ wrapper type for IfcBenchmarkEnum - typedef ENUMERATION IfcBenchmarkEnum; - // C++ wrapper type for IfcWindowPanelOperationEnum - typedef ENUMERATION IfcWindowPanelOperationEnum; - // C++ wrapper type for IfcTrimmingSelect - typedef SELECT IfcTrimmingSelect; - // C++ wrapper type for IfcReal - typedef REAL IfcReal; - // C++ wrapper type for IfcSurfaceStyleElementSelect - typedef SELECT IfcSurfaceStyleElementSelect; - // C++ wrapper type for IfcAirToAirHeatRecoveryTypeEnum - typedef ENUMERATION IfcAirToAirHeatRecoveryTypeEnum; - // C++ wrapper type for IfcNormalisedRatioMeasure - typedef REAL IfcNormalisedRatioMeasure; - // C++ wrapper type for IfcCableSegmentTypeEnum - typedef ENUMERATION IfcCableSegmentTypeEnum; - // C++ wrapper type for IfcBeamTypeEnum - typedef ENUMERATION IfcBeamTypeEnum; - // C++ wrapper type for IfcBooleanOperand - typedef SELECT IfcBooleanOperand; - // C++ wrapper type for IfcFrequencyMeasure - typedef REAL IfcFrequencyMeasure; - // C++ wrapper type for IfcDataOriginEnum - typedef ENUMERATION IfcDataOriginEnum; - // C++ wrapper type for IfcAlarmTypeEnum - typedef ENUMERATION IfcAlarmTypeEnum; - // C++ wrapper type for IfcMassMeasure - typedef REAL IfcMassMeasure; - // C++ wrapper type for IfcStateEnum - typedef ENUMERATION IfcStateEnum; - // C++ wrapper type for IfcStackTerminalTypeEnum - typedef ENUMERATION IfcStackTerminalTypeEnum; - // C++ wrapper type for IfcReinforcingBarRoleEnum - typedef ENUMERATION IfcReinforcingBarRoleEnum; - // C++ wrapper type for IfcElectricTimeControlTypeEnum - typedef ENUMERATION IfcElectricTimeControlTypeEnum; - // C++ wrapper type for IfcInternalOrExternalEnum - typedef ENUMERATION IfcInternalOrExternalEnum; - // C++ wrapper type for IfcDuctSilencerTypeEnum - typedef ENUMERATION IfcDuctSilencerTypeEnum; - // C++ wrapper type for IfcConditionCriterionSelect - typedef SELECT IfcConditionCriterionSelect; - // C++ wrapper type for IfcHumidifierTypeEnum - typedef ENUMERATION IfcHumidifierTypeEnum; - // C++ wrapper type for IfcForceMeasure - typedef REAL IfcForceMeasure; - // C++ wrapper type for IfcMemberTypeEnum - typedef ENUMERATION IfcMemberTypeEnum; - // C++ wrapper type for IfcIonConcentrationMeasure - typedef REAL IfcIonConcentrationMeasure; - // C++ wrapper type for IfcChillerTypeEnum - typedef ENUMERATION IfcChillerTypeEnum; - // C++ wrapper type for IfcMassPerLengthMeasure - typedef REAL IfcMassPerLengthMeasure; - // C++ wrapper type for IfcTimeSeriesScheduleTypeEnum - typedef ENUMERATION IfcTimeSeriesScheduleTypeEnum; - // C++ wrapper type for IfcFilterTypeEnum - typedef ENUMERATION IfcFilterTypeEnum; - // C++ wrapper type for IfcLogical - typedef LOGICAL IfcLogical; - // C++ wrapper type for IfcInventoryTypeEnum - typedef ENUMERATION IfcInventoryTypeEnum; - // C++ wrapper type for IfcClassificationNotationSelect - typedef SELECT IfcClassificationNotationSelect; - // C++ wrapper type for IfcAddressTypeEnum - typedef ENUMERATION IfcAddressTypeEnum; - // C++ wrapper type for IfcPositiveLengthMeasure - typedef REAL IfcPositiveLengthMeasure; - // C++ wrapper type for IfcRatioMeasure - typedef REAL IfcRatioMeasure; - // C++ wrapper type for IfcRampTypeEnum - typedef ENUMERATION IfcRampTypeEnum; - // C++ wrapper type for IfcMaterialSelect - typedef SELECT IfcMaterialSelect; - // C++ wrapper type for IfcCoveringTypeEnum - typedef ENUMERATION IfcCoveringTypeEnum; - // C++ wrapper type for IfcPileTypeEnum - typedef ENUMERATION IfcPileTypeEnum; - // C++ wrapper type for IfcTransitionCode - typedef ENUMERATION IfcTransitionCode; - // C++ wrapper type for IfcParameterValue - typedef REAL IfcParameterValue; - // C++ wrapper type for IfcCondenserTypeEnum - typedef ENUMERATION IfcCondenserTypeEnum; - // C++ wrapper type for IfcTextPath - typedef ENUMERATION IfcTextPath; - // C++ wrapper type for IfcElectricCurrentEnum - typedef ENUMERATION IfcElectricCurrentEnum; - // C++ wrapper type for IfcColumnTypeEnum - typedef ENUMERATION IfcColumnTypeEnum; - // C++ wrapper type for IfcLuminousFluxMeasure - typedef REAL IfcLuminousFluxMeasure; - // C++ wrapper type for IfcPlateTypeEnum - typedef ENUMERATION IfcPlateTypeEnum; - // C++ wrapper type for IfcPileConstructionEnum - typedef ENUMERATION IfcPileConstructionEnum; - // C++ wrapper type for IfcActionSourceTypeEnum - typedef ENUMERATION IfcActionSourceTypeEnum; - // C++ wrapper type for IfcMagneticFluxDensityMeasure - typedef REAL IfcMagneticFluxDensityMeasure; - // C++ wrapper type for IfcSurfaceOrFaceSurface - typedef SELECT IfcSurfaceOrFaceSurface; - // C++ wrapper type for IfcPresentationStyleSelect - typedef SELECT IfcPresentationStyleSelect; - // C++ wrapper type for IfcGloballyUniqueId - typedef STRING IfcGloballyUniqueId; - // C++ wrapper type for IfcLinearMomentMeasure - typedef REAL IfcLinearMomentMeasure; // C++ wrapper type for IfcHeatExchangerTypeEnum typedef ENUMERATION IfcHeatExchangerTypeEnum; - // C++ wrapper type for IfcPumpTypeEnum - typedef ENUMERATION IfcPumpTypeEnum; - // C++ wrapper type for IfcSpecularExponent - typedef REAL IfcSpecularExponent; - // C++ wrapper type for IfcElectricResistanceMeasure - typedef REAL IfcElectricResistanceMeasure; - // C++ wrapper type for IfcThermalConductivityMeasure - typedef REAL IfcThermalConductivityMeasure; - // C++ wrapper type for IfcReflectanceMethodEnum - typedef ENUMERATION IfcReflectanceMethodEnum; - // C++ wrapper type for IfcTubeBundleTypeEnum - typedef ENUMERATION IfcTubeBundleTypeEnum; - // C++ wrapper type for IfcActuatorTypeEnum - typedef ENUMERATION IfcActuatorTypeEnum; - // C++ wrapper type for IfcControllerTypeEnum - typedef ENUMERATION IfcControllerTypeEnum; + // C++ wrapper type for IfcHumidifierTypeEnum + typedef ENUMERATION IfcHumidifierTypeEnum; + // C++ wrapper type for IfcInternalOrExternalEnum + typedef ENUMERATION IfcInternalOrExternalEnum; + // C++ wrapper type for IfcInventoryTypeEnum + typedef ENUMERATION IfcInventoryTypeEnum; + // C++ wrapper type for IfcJunctionBoxTypeEnum + typedef ENUMERATION IfcJunctionBoxTypeEnum; + // C++ wrapper type for IfcLampTypeEnum + typedef ENUMERATION IfcLampTypeEnum; + // C++ wrapper type for IfcLayerSetDirectionEnum + typedef ENUMERATION IfcLayerSetDirectionEnum; // C++ wrapper type for IfcLightDistributionCurveEnum typedef ENUMERATION IfcLightDistributionCurveEnum; - // C++ wrapper type for IfcPositiveRatioMeasure - typedef REAL IfcPositiveRatioMeasure; - // C++ wrapper type for IfcElectricChargeMeasure - typedef REAL IfcElectricChargeMeasure; - // C++ wrapper type for IfcNumericMeasure - typedef NUMBER IfcNumericMeasure; - // C++ wrapper type for IfcStructuralActivityAssignmentSelect - typedef SELECT IfcStructuralActivityAssignmentSelect; - // C++ wrapper type for IfcLuminousIntensityDistributionMeasure - typedef REAL IfcLuminousIntensityDistributionMeasure; - // C++ wrapper type for IfcMolecularWeightMeasure - typedef REAL IfcMolecularWeightMeasure; - // C++ wrapper type for IfcLayeredItem - typedef SELECT IfcLayeredItem; - // C++ wrapper type for IfcLengthMeasure - typedef REAL IfcLengthMeasure; - // C++ wrapper type for IfcWarpingConstantMeasure - typedef REAL IfcWarpingConstantMeasure; - // C++ wrapper type for IfcBoilerTypeEnum - typedef ENUMERATION IfcBoilerTypeEnum; - // C++ wrapper type for IfcCableCarrierSegmentTypeEnum - typedef ENUMERATION IfcCableCarrierSegmentTypeEnum; - // C++ wrapper type for IfcFontWeight - typedef STRING IfcFontWeight; - // C++ wrapper type for IfcTextFontName - typedef STRING IfcTextFontName; - // C++ wrapper type for IfcEnvironmentalImpactCategoryEnum - typedef ENUMERATION IfcEnvironmentalImpactCategoryEnum; - // C++ wrapper type for IfcActionTypeEnum - typedef ENUMERATION IfcActionTypeEnum; - // C++ wrapper type for IfcDefinedSymbolSelect - typedef SELECT IfcDefinedSymbolSelect; - // C++ wrapper type for IfcTextTransformation - typedef STRING IfcTextTransformation; - // C++ wrapper type for IfcAppliedValueSelect - typedef SELECT IfcAppliedValueSelect; - // C++ wrapper type for IfcEnergyMeasure - typedef REAL IfcEnergyMeasure; - // C++ wrapper type for IfcFlowInstrumentTypeEnum - typedef ENUMERATION IfcFlowInstrumentTypeEnum; - // C++ wrapper type for IfcCountMeasure - typedef NUMBER IfcCountMeasure; - // C++ wrapper type for IfcCurrencyEnum - typedef ENUMERATION IfcCurrencyEnum; - // C++ wrapper type for IfcSectionTypeEnum - typedef ENUMERATION IfcSectionTypeEnum; - // C++ wrapper type for IfcLinearForceMeasure - typedef REAL IfcLinearForceMeasure; - // C++ wrapper type for IfcDerivedMeasureValue - typedef SELECT IfcDerivedMeasureValue; + // C++ wrapper type for IfcLightEmissionSourceEnum + typedef ENUMERATION IfcLightEmissionSourceEnum; + // C++ wrapper type for IfcLightFixtureTypeEnum + typedef ENUMERATION IfcLightFixtureTypeEnum; + // C++ wrapper type for IfcLoadGroupTypeEnum + typedef ENUMERATION IfcLoadGroupTypeEnum; + // C++ wrapper type for IfcLogicalOperatorEnum + typedef ENUMERATION IfcLogicalOperatorEnum; + // C++ wrapper type for IfcMemberTypeEnum + typedef ENUMERATION IfcMemberTypeEnum; + // C++ wrapper type for IfcMotorConnectionTypeEnum + typedef ENUMERATION IfcMotorConnectionTypeEnum; + // C++ wrapper type for IfcNullStyle + typedef ENUMERATION IfcNullStyle; + // C++ wrapper type for IfcObjectTypeEnum + typedef ENUMERATION IfcObjectTypeEnum; + // C++ wrapper type for IfcObjectiveEnum + typedef ENUMERATION IfcObjectiveEnum; + // C++ wrapper type for IfcOccupantTypeEnum + typedef ENUMERATION IfcOccupantTypeEnum; + // C++ wrapper type for IfcOutletTypeEnum + typedef ENUMERATION IfcOutletTypeEnum; + // C++ wrapper type for IfcPermeableCoveringOperationEnum + typedef ENUMERATION IfcPermeableCoveringOperationEnum; + // C++ wrapper type for IfcPhysicalOrVirtualEnum + typedef ENUMERATION IfcPhysicalOrVirtualEnum; + // C++ wrapper type for IfcPileConstructionEnum + typedef ENUMERATION IfcPileConstructionEnum; + // C++ wrapper type for IfcPileTypeEnum + typedef ENUMERATION IfcPileTypeEnum; + // C++ wrapper type for IfcPipeFittingTypeEnum + typedef ENUMERATION IfcPipeFittingTypeEnum; + // C++ wrapper type for IfcPipeSegmentTypeEnum + typedef ENUMERATION IfcPipeSegmentTypeEnum; + // C++ wrapper type for IfcPlateTypeEnum + typedef ENUMERATION IfcPlateTypeEnum; + // C++ wrapper type for IfcProcedureTypeEnum + typedef ENUMERATION IfcProcedureTypeEnum; + // C++ wrapper type for IfcProfileTypeEnum + typedef ENUMERATION IfcProfileTypeEnum; + // C++ wrapper type for IfcProjectOrderRecordTypeEnum + typedef ENUMERATION IfcProjectOrderRecordTypeEnum; + // C++ wrapper type for IfcProjectOrderTypeEnum + typedef ENUMERATION IfcProjectOrderTypeEnum; + // C++ wrapper type for IfcProjectedOrTrueLengthEnum + typedef ENUMERATION IfcProjectedOrTrueLengthEnum; + // C++ wrapper type for IfcPropertySourceEnum + typedef ENUMERATION IfcPropertySourceEnum; + // C++ wrapper type for IfcProtectiveDeviceTypeEnum + typedef ENUMERATION IfcProtectiveDeviceTypeEnum; + // C++ wrapper type for IfcPumpTypeEnum + typedef ENUMERATION IfcPumpTypeEnum; // C++ wrapper type for IfcRailingTypeEnum typedef ENUMERATION IfcRailingTypeEnum; - // C++ wrapper type for IfcSIUnitName - typedef ENUMERATION IfcSIUnitName; - // C++ wrapper type for IfcMeasureValue - typedef SELECT IfcMeasureValue; + // C++ wrapper type for IfcRampFlightTypeEnum + typedef ENUMERATION IfcRampFlightTypeEnum; + // C++ wrapper type for IfcRampTypeEnum + typedef ENUMERATION IfcRampTypeEnum; + // C++ wrapper type for IfcReflectanceMethodEnum + typedef ENUMERATION IfcReflectanceMethodEnum; + // C++ wrapper type for IfcReinforcingBarRoleEnum + typedef ENUMERATION IfcReinforcingBarRoleEnum; + // C++ wrapper type for IfcReinforcingBarSurfaceEnum + typedef ENUMERATION IfcReinforcingBarSurfaceEnum; + // C++ wrapper type for IfcResourceConsumptionEnum + typedef ENUMERATION IfcResourceConsumptionEnum; + // C++ wrapper type for IfcRibPlateDirectionEnum + typedef ENUMERATION IfcRibPlateDirectionEnum; + // C++ wrapper type for IfcRoleEnum + typedef ENUMERATION IfcRoleEnum; // C++ wrapper type for IfcRoofTypeEnum typedef ENUMERATION IfcRoofTypeEnum; - // C++ wrapper type for IfcText - typedef STRING IfcText; - // C++ wrapper type for IfcLinearVelocityMeasure - typedef REAL IfcLinearVelocityMeasure; - // C++ wrapper type for IfcBoolean - typedef BOOLEAN IfcBoolean; + // C++ wrapper type for IfcSIPrefix + typedef ENUMERATION IfcSIPrefix; + // C++ wrapper type for IfcSIUnitName + typedef ENUMERATION IfcSIUnitName; + // C++ wrapper type for IfcSanitaryTerminalTypeEnum + typedef ENUMERATION IfcSanitaryTerminalTypeEnum; + // C++ wrapper type for IfcSectionTypeEnum + typedef ENUMERATION IfcSectionTypeEnum; + // C++ wrapper type for IfcSensorTypeEnum + typedef ENUMERATION IfcSensorTypeEnum; + // C++ wrapper type for IfcSequenceEnum + typedef ENUMERATION IfcSequenceEnum; + // C++ wrapper type for IfcServiceLifeFactorTypeEnum + typedef ENUMERATION IfcServiceLifeFactorTypeEnum; + // C++ wrapper type for IfcServiceLifeTypeEnum + typedef ENUMERATION IfcServiceLifeTypeEnum; + // C++ wrapper type for IfcSlabTypeEnum + typedef ENUMERATION IfcSlabTypeEnum; + // C++ wrapper type for IfcSoundScaleEnum + typedef ENUMERATION IfcSoundScaleEnum; + // C++ wrapper type for IfcSpaceHeaterTypeEnum + typedef ENUMERATION IfcSpaceHeaterTypeEnum; + // C++ wrapper type for IfcSpaceTypeEnum + typedef ENUMERATION IfcSpaceTypeEnum; + // C++ wrapper type for IfcStackTerminalTypeEnum + typedef ENUMERATION IfcStackTerminalTypeEnum; + // C++ wrapper type for IfcStairFlightTypeEnum + typedef ENUMERATION IfcStairFlightTypeEnum; + // C++ wrapper type for IfcStairTypeEnum + typedef ENUMERATION IfcStairTypeEnum; + // C++ wrapper type for IfcStateEnum + typedef ENUMERATION IfcStateEnum; + // C++ wrapper type for IfcStructuralCurveTypeEnum + typedef ENUMERATION IfcStructuralCurveTypeEnum; + // C++ wrapper type for IfcStructuralSurfaceTypeEnum + typedef ENUMERATION IfcStructuralSurfaceTypeEnum; + // C++ wrapper type for IfcSurfaceSide + typedef ENUMERATION IfcSurfaceSide; + // C++ wrapper type for IfcSurfaceTextureEnum + typedef ENUMERATION IfcSurfaceTextureEnum; + // C++ wrapper type for IfcSwitchingDeviceTypeEnum + typedef ENUMERATION IfcSwitchingDeviceTypeEnum; + // C++ wrapper type for IfcTankTypeEnum + typedef ENUMERATION IfcTankTypeEnum; + // C++ wrapper type for IfcTendonTypeEnum + typedef ENUMERATION IfcTendonTypeEnum; + // C++ wrapper type for IfcTextPath + typedef ENUMERATION IfcTextPath; + // C++ wrapper type for IfcThermalLoadSourceEnum + typedef ENUMERATION IfcThermalLoadSourceEnum; + // C++ wrapper type for IfcThermalLoadTypeEnum + typedef ENUMERATION IfcThermalLoadTypeEnum; + // C++ wrapper type for IfcTimeSeriesDataTypeEnum + typedef ENUMERATION IfcTimeSeriesDataTypeEnum; + // C++ wrapper type for IfcTimeSeriesScheduleTypeEnum + typedef ENUMERATION IfcTimeSeriesScheduleTypeEnum; + // C++ wrapper type for IfcTransformerTypeEnum + typedef ENUMERATION IfcTransformerTypeEnum; + // C++ wrapper type for IfcTransitionCode + typedef ENUMERATION IfcTransitionCode; + // C++ wrapper type for IfcTransportElementTypeEnum + typedef ENUMERATION IfcTransportElementTypeEnum; + // C++ wrapper type for IfcTrimmingPreference + typedef ENUMERATION IfcTrimmingPreference; + // C++ wrapper type for IfcTubeBundleTypeEnum + typedef ENUMERATION IfcTubeBundleTypeEnum; + // C++ wrapper type for IfcUnitEnum + typedef ENUMERATION IfcUnitEnum; + // C++ wrapper type for IfcUnitaryEquipmentTypeEnum + typedef ENUMERATION IfcUnitaryEquipmentTypeEnum; + // C++ wrapper type for IfcValveTypeEnum + typedef ENUMERATION IfcValveTypeEnum; + // C++ wrapper type for IfcVibrationIsolatorTypeEnum + typedef ENUMERATION IfcVibrationIsolatorTypeEnum; + // C++ wrapper type for IfcWallTypeEnum + typedef ENUMERATION IfcWallTypeEnum; + // C++ wrapper type for IfcWasteTerminalTypeEnum + typedef ENUMERATION IfcWasteTerminalTypeEnum; + // C++ wrapper type for IfcWindowPanelOperationEnum + typedef ENUMERATION IfcWindowPanelOperationEnum; + // C++ wrapper type for IfcWindowPanelPositionEnum + typedef ENUMERATION IfcWindowPanelPositionEnum; + // C++ wrapper type for IfcWindowStyleConstructionEnum + typedef ENUMERATION IfcWindowStyleConstructionEnum; + // C++ wrapper type for IfcWindowStyleOperationEnum + typedef ENUMERATION IfcWindowStyleOperationEnum; + // C++ wrapper type for IfcWorkControlTypeEnum + typedef ENUMERATION IfcWorkControlTypeEnum; + // C++ wrapper type for IfcActorSelect + typedef SELECT IfcActorSelect; + // C++ wrapper type for IfcAppliedValueSelect + typedef SELECT IfcAppliedValueSelect; + // C++ wrapper type for IfcAxis2Placement + typedef SELECT IfcAxis2Placement; + // C++ wrapper type for IfcBooleanOperand + typedef SELECT IfcBooleanOperand; + // C++ wrapper type for IfcCharacterStyleSelect + typedef SELECT IfcCharacterStyleSelect; + // C++ wrapper type for IfcClassificationNotationSelect + typedef SELECT IfcClassificationNotationSelect; + // C++ wrapper type for IfcColour + typedef SELECT IfcColour; + // C++ wrapper type for IfcColourOrFactor + typedef SELECT IfcColourOrFactor; + // C++ wrapper type for IfcConditionCriterionSelect + typedef SELECT IfcConditionCriterionSelect; + // C++ wrapper type for IfcCsgSelect + typedef SELECT IfcCsgSelect; + // C++ wrapper type for IfcCurveFontOrScaledCurveFontSelect + typedef SELECT IfcCurveFontOrScaledCurveFontSelect; + // C++ wrapper type for IfcCurveOrEdgeCurve + typedef SELECT IfcCurveOrEdgeCurve; + // C++ wrapper type for IfcCurveStyleFontSelect + typedef SELECT IfcCurveStyleFontSelect; + // C++ wrapper type for IfcDateTimeSelect + typedef SELECT IfcDateTimeSelect; + // C++ wrapper type for IfcDefinedSymbolSelect + typedef SELECT IfcDefinedSymbolSelect; + // C++ wrapper type for IfcDerivedMeasureValue + typedef SELECT IfcDerivedMeasureValue; + // C++ wrapper type for IfcDocumentSelect + typedef SELECT IfcDocumentSelect; + // C++ wrapper type for IfcDraughtingCalloutElement + typedef SELECT IfcDraughtingCalloutElement; + // C++ wrapper type for IfcFillAreaStyleTileShapeSelect + typedef SELECT IfcFillAreaStyleTileShapeSelect; + // C++ wrapper type for IfcFillStyleSelect + typedef SELECT IfcFillStyleSelect; + // C++ wrapper type for IfcGeometricSetSelect + typedef SELECT IfcGeometricSetSelect; + // C++ wrapper type for IfcHatchLineDistanceSelect + typedef SELECT IfcHatchLineDistanceSelect; + // C++ wrapper type for IfcLayeredItem + typedef SELECT IfcLayeredItem; + // C++ wrapper type for IfcLibrarySelect + typedef SELECT IfcLibrarySelect; + // C++ wrapper type for IfcLightDistributionDataSourceSelect + typedef SELECT IfcLightDistributionDataSourceSelect; + // C++ wrapper type for IfcMaterialSelect + typedef SELECT IfcMaterialSelect; + // C++ wrapper type for IfcMeasureValue + typedef SELECT IfcMeasureValue; + // C++ wrapper type for IfcMetricValueSelect + typedef SELECT IfcMetricValueSelect; + // C++ wrapper type for IfcObjectReferenceSelect + typedef SELECT IfcObjectReferenceSelect; + // C++ wrapper type for IfcOrientationSelect + typedef SELECT IfcOrientationSelect; + // C++ wrapper type for IfcPointOrVertexPoint + typedef SELECT IfcPointOrVertexPoint; + // C++ wrapper type for IfcPresentationStyleSelect + typedef SELECT IfcPresentationStyleSelect; + // C++ wrapper type for IfcShell + typedef SELECT IfcShell; + // C++ wrapper type for IfcSimpleValue + typedef SELECT IfcSimpleValue; + // C++ wrapper type for IfcSizeSelect + typedef SELECT IfcSizeSelect; + // C++ wrapper type for IfcSpecularHighlightSelect + typedef SELECT IfcSpecularHighlightSelect; + // C++ wrapper type for IfcStructuralActivityAssignmentSelect + typedef SELECT IfcStructuralActivityAssignmentSelect; + // C++ wrapper type for IfcSurfaceOrFaceSurface + typedef SELECT IfcSurfaceOrFaceSurface; + // C++ wrapper type for IfcSurfaceStyleElementSelect + typedef SELECT IfcSurfaceStyleElementSelect; + // C++ wrapper type for IfcSymbolStyleSelect + typedef SELECT IfcSymbolStyleSelect; + // C++ wrapper type for IfcTextFontSelect + typedef SELECT IfcTextFontSelect; + // C++ wrapper type for IfcTextStyleSelect + typedef SELECT IfcTextStyleSelect; + // C++ wrapper type for IfcTrimmingSelect + typedef SELECT IfcTrimmingSelect; + // C++ wrapper type for IfcUnit + typedef SELECT IfcUnit; + // C++ wrapper type for IfcValue + typedef SELECT IfcValue; + // C++ wrapper type for IfcVectorOrDirection + typedef SELECT IfcVectorOrDirection; // ****************************************************************************** @@ -720,658 +720,658 @@ namespace IFC { // ****************************************************************************** struct IfcRepresentationItem; - struct IfcTopologicalRepresentationItem; - struct IfcEdge; - typedef NotImplemented IfcExternalReference; // (not currently used by Assimp) - typedef NotImplemented IfcDocumentReference; // (not currently used by Assimp) struct IfcGeometricRepresentationItem; - struct IfcCompositeCurveSegment; + struct IfcCurve; + struct IfcBoundedCurve; + struct IfcCompositeCurve; + struct Ifc2DCompositeCurve; struct IfcRoot; struct IfcObjectDefinition; struct IfcObject; - struct IfcProduct; - struct IfcStructuralItem; - struct IfcStructuralConnection; - struct IfcStructuralSurfaceConnection; - typedef NotImplemented IfcApprovalActorRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcVertexBasedTextureMap; // (not currently used by Assimp) - struct IfcPresentationStyleAssignment; - struct IfcElement; - struct IfcBuildingElement; - struct IfcCurtainWall; - typedef NotImplemented IfcTextureCoordinate; // (not currently used by Assimp) - typedef NotImplemented IfcTextureCoordinateGenerator; // (not currently used by Assimp) - struct IfcProxy; - typedef NotImplemented IfcPreDefinedItem; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedTextFont; // (not currently used by Assimp) - typedef NotImplemented IfcTextStyleFontModel; // (not currently used by Assimp) - struct IfcStyledItem; - struct IfcAnnotationOccurrence; - struct IfcAnnotationSymbolOccurrence; - struct IfcTerminatorSymbol; - struct IfcDimensionCurveTerminator; + struct IfcControl; + struct IfcActionRequest; + struct IfcActor; + typedef NotImplemented IfcActorRole; // (not currently used by Assimp) struct IfcTypeObject; struct IfcTypeProduct; struct IfcElementType; struct IfcDistributionElementType; - struct IfcFeatureElement; - struct IfcFeatureElementSubtraction; - struct IfcOpeningElement; - struct IfcPresentationStyle; - struct IfcSurfaceStyle; - struct IfcFillAreaStyleTileSymbolWithStyle; - typedef NotImplemented IfcApplication; // (not currently used by Assimp) - struct IfcRelationship; - struct IfcRelConnects; - typedef NotImplemented IfcRelConnectsStructuralElement; // (not currently used by Assimp) - struct IfcStructuralMember; - struct IfcStructuralSurfaceMember; - typedef NotImplemented IfcMaterialList; // (not currently used by Assimp) - struct IfcCartesianTransformationOperator; - struct IfcCartesianTransformationOperator3D; - struct IfcDistributionFlowElementType; - struct IfcFlowTerminalType; - struct IfcSanitaryTerminalType; - struct IfcEnergyConversionDeviceType; - struct IfcElectricGeneratorType; - struct IfcResource; - struct IfcConstructionResource; - struct IfcControl; - struct IfcEquipmentStandard; - typedef NotImplemented IfcMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcMechanicalMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcMechanicalSteelMaterialProperties; // (not currently used by Assimp) - struct IfcElectricApplianceType; - typedef NotImplemented IfcHygroscopicMaterialProperties; // (not currently used by Assimp) - struct IfcFurnitureStandard; - typedef NotImplemented IfcIrregularTimeSeriesValue; // (not currently used by Assimp) - struct IfcDefinedSymbol; - struct IfcColourSpecification; - struct IfcCurve; - struct IfcLine; - struct IfcLoop; - typedef NotImplemented IfcRelaxation; // (not currently used by Assimp) - struct IfcProperty; - struct IfcComplexProperty; - struct IfcCovering; - struct IfcBoundedCurve; - struct IfcBSplineCurve; - struct IfcNamedUnit; - struct IfcSubContractResource; - typedef NotImplemented IfcClassificationItem; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralConnectionCondition; // (not currently used by Assimp) - struct IfcObjectPlacement; - struct IfcGridPlacement; - typedef NotImplemented IfcFailureConnectionCondition; // (not currently used by Assimp) - typedef NotImplemented IfcPhysicalQuantity; // (not currently used by Assimp) - typedef NotImplemented IfcPhysicalSimpleQuantity; // (not currently used by Assimp) - struct IfcPropertyDefinition; - struct IfcPropertySetDefinition; - typedef NotImplemented IfcWindowLiningProperties; // (not currently used by Assimp) - struct IfcPoint; - struct IfcCartesianPoint; - struct IfcFaceBound; - typedef NotImplemented IfcBoundaryCondition; // (not currently used by Assimp) - typedef NotImplemented IfcBoundaryFaceCondition; // (not currently used by Assimp) - struct IfcEdgeCurve; - typedef NotImplemented IfcLibraryInformation; // (not currently used by Assimp) - struct IfcOneDirectionRepeatFactor; - struct IfcTwoDirectionRepeatFactor; - typedef NotImplemented IfcRelConnectsElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelConnectsPathElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssigns; // (not currently used by Assimp) - typedef NotImplemented IfcPropertyConstraintRelationship; // (not currently used by Assimp) - struct IfcLightSource; - struct IfcLightSourceAmbient; - struct IfcPlacement; - struct IfcAxis1Placement; - struct IfcAnnotationSurfaceOccurrence; - struct IfcFlowControllerType; - struct IfcFlowMeterType; - struct IfcAnnotationCurveOccurrence; - typedef NotImplemented IfcLocalTime; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociates; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesApproval; // (not currently used by Assimp) - struct IfcProfileDef; - struct IfcCompositeProfileDef; - struct IfcSubedge; - struct IfcFlowStorageDeviceType; - struct IfcTankType; - typedef NotImplemented IfcRelAssignsToActor; // (not currently used by Assimp) - struct IfcBuildingElementComponent; - struct IfcBuildingElementPart; - struct IfcRepresentation; - struct IfcShapeModel; - struct IfcShapeRepresentation; - struct IfcRailing; - typedef NotImplemented IfcStructuralLoad; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadStatic; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleForce; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleForceWarping; // (not currently used by Assimp) - struct IfcStyleModel; - struct IfcStyledRepresentation; - struct IfcColourRgb; - struct IfcElementComponentType; - struct IfcDiscreteAccessoryType; - struct IfcVibrationIsolatorType; - struct IfcProcess; - struct IfcProcedure; - struct IfcFeatureElementAddition; - struct IfcEdgeFeature; - struct IfcTrimmedCurve; - typedef NotImplemented IfcFillAreaStyle; // (not currently used by Assimp) - typedef NotImplemented IfcRelCoversBldgElements; // (not currently used by Assimp) - struct IfcTextLiteral; - struct IfcParameterizedProfileDef; - struct IfcCraneRailAShapeProfileDef; - struct IfcElementComponent; - struct IfcCsgPrimitive3D; - struct IfcBlock; - struct IfcBuildingElementType; - struct IfcRailingType; - struct IfcStructuralPointConnection; - struct IfcFlowMovingDeviceType; - struct IfcPumpType; - struct IfcStructuralCurveMember; - struct IfcStructuralCurveMemberVarying; - struct IfcReinforcingElement; - struct IfcReinforcingMesh; - struct IfcPlanarExtent; - struct IfcPlanarBox; - struct IfcCooledBeamType; - typedef NotImplemented IfcQuantityArea; // (not currently used by Assimp) - typedef NotImplemented IfcDraughtingCalloutRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcDimensionCalloutRelationship; // (not currently used by Assimp) - struct IfcProjectOrderRecord; - struct IfcPointOnSurface; - struct IfcPointOnCurve; - struct IfcRelContainedInSpatialStructure; - struct IfcSimpleProperty; - struct IfcPropertyListValue; - struct IfcSpatialStructureElement; - struct IfcBuildingStorey; - struct IfcUnitaryEquipmentType; - struct IfcOutletType; - struct IfcFastenerType; - struct IfcGroup; - struct IfcSystem; - struct IfcStructuralAnalysisModel; - struct IfcSlabType; - typedef NotImplemented IfcRelAssignsToProduct; // (not currently used by Assimp) - typedef NotImplemented IfcClassification; // (not currently used by Assimp) - struct IfcDistributionElement; - struct IfcDistributionFlowElement; - struct IfcTShapeProfileDef; - struct IfcPolyline; - typedef NotImplemented IfcQuantityVolume; // (not currently used by Assimp) - struct IfcDraughtingCallout; - struct IfcFace; - typedef NotImplemented IfcAddress; // (not currently used by Assimp) - struct IfcStructuralSurfaceMemberVarying; - struct IfcMotorConnectionType; - struct IfcAirToAirHeatRecoveryType; - struct IfcPlateType; - struct IfcSolidModel; - struct IfcCsgSolid; - struct IfcMechanicalFastenerType; - struct IfcRelDecomposes; - struct IfcElectricalElement; - struct IfcColumnType; - struct IfcRectangularPyramid; - struct IfcActionRequest; - struct IfcStructuralActivity; - struct IfcStructuralReaction; - struct IfcStructuralPointReaction; - typedef NotImplemented IfcPropertyDependencyRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedSymbol; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedTerminatorSymbol; // (not currently used by Assimp) - struct IfcStructuralAction; - struct IfcStructuralLinearAction; - struct IfcStructuralLinearActionVarying; - struct IfcCrewResource; - struct IfcChamferEdgeFeature; - typedef NotImplemented IfcPreDefinedColour; // (not currently used by Assimp) - typedef NotImplemented IfcDraughtingPreDefinedColour; // (not currently used by Assimp) - typedef NotImplemented IfcConstraintRelationship; // (not currently used by Assimp) - struct IfcCompositeCurve; - struct Ifc2DCompositeCurve; - struct IfcGrid; - struct IfcTendon; - struct IfcRectangleProfileDef; - struct IfcRoundedRectangleProfileDef; - struct IfcBeamType; - struct IfcLampType; - typedef NotImplemented IfcTimeSeriesReferenceRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcSurfaceTexture; // (not currently used by Assimp) - typedef NotImplemented IfcImageTexture; // (not currently used by Assimp) - struct IfcLightSourceGoniometric; - struct IfcProductRepresentation; - struct IfcMaterialDefinitionRepresentation; - struct IfcPermit; - typedef NotImplemented IfcGeneralMaterialProperties; // (not currently used by Assimp) - struct IfcContextDependentUnit; - struct IfcFlowMovingDevice; - struct IfcColumn; - typedef NotImplemented IfcRelAssignsToControl; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsToProjectOrder; // (not currently used by Assimp) - struct IfcDistributionControlElement; - struct IfcProtectiveDeviceType; - typedef NotImplemented IfcTextureMap; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsToResource; // (not currently used by Assimp) - struct IfcFlowSegment; - struct IfcCompressorType; - typedef NotImplemented IfcProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcGeneralProfileProperties; // (not currently used by Assimp) - struct IfcCShapeProfileDef; - typedef NotImplemented IfcAppliedValue; // (not currently used by Assimp) - struct IfcTrapeziumProfileDef; - struct IfcRelDefines; - typedef NotImplemented IfcRelDefinesByType; // (not currently used by Assimp) - struct IfcTask; - struct IfcMove; - typedef NotImplemented IfcBoundaryEdgeCondition; // (not currently used by Assimp) - struct IfcLightSourceDirectional; - struct IfcCondenserType; - typedef NotImplemented IfcTableRow; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesAppliedValue; // (not currently used by Assimp) - struct IfcConic; - struct IfcEllipse; - typedef NotImplemented IfcRelAssociatesClassification; // (not currently used by Assimp) - typedef NotImplemented IfcProductsOfCombustionProperties; // (not currently used by Assimp) - struct IfcDoorStyle; struct IfcDistributionControlElementType; - struct IfcSensorType; - struct IfcAnnotationFillAreaOccurrence; - struct IfcWall; - typedef NotImplemented IfcRelProjectsElement; // (not currently used by Assimp) - typedef NotImplemented IfcQuantityWeight; // (not currently used by Assimp) - struct IfcFurnishingElementType; - struct IfcFurnitureType; - struct IfcControllerType; - struct IfcFlowFitting; - typedef NotImplemented IfcRelConnectsStructuralActivity; // (not currently used by Assimp) - typedef NotImplemented IfcRelNests; // (not currently used by Assimp) - typedef NotImplemented IfcCalendarDate; // (not currently used by Assimp) - typedef NotImplemented IfcLightDistributionData; // (not currently used by Assimp) - typedef NotImplemented IfcPhysicalComplexQuantity; // (not currently used by Assimp) - typedef NotImplemented IfcDocumentElectronicFormat; // (not currently used by Assimp) - struct IfcRepresentationContext; - typedef NotImplemented IfcDerivedUnitElement; // (not currently used by Assimp) - typedef NotImplemented IfcWindowPanelProperties; // (not currently used by Assimp) - struct IfcRepresentationMap; - typedef NotImplemented IfcRelConnectsStructuralMember; // (not currently used by Assimp) - typedef NotImplemented IfcMaterialClassificationRelationship; // (not currently used by Assimp) - struct IfcDirection; + struct IfcActuatorType; + typedef NotImplemented IfcAddress; // (not currently used by Assimp) + struct IfcDistributionFlowElementType; + struct IfcFlowControllerType; + struct IfcAirTerminalBoxType; + struct IfcFlowTerminalType; + struct IfcAirTerminalType; + struct IfcEnergyConversionDeviceType; + struct IfcAirToAirHeatRecoveryType; + struct IfcAlarmType; + struct IfcDraughtingCallout; struct IfcDimensionCurveDirectedCallout; struct IfcAngularDimension; - struct IfcWorkControl; - struct IfcWorkPlan; - struct IfcSpatialStructureElementType; - struct IfcSpaceType; - typedef NotImplemented IfcSlippageConnectionCondition; // (not currently used by Assimp) - struct IfcPort; - struct IfcDistributionPort; - struct IfcOrderAction; - typedef NotImplemented IfcDoorPanelProperties; // (not currently used by Assimp) - struct IfcBeam; - typedef NotImplemented IfcSectionReinforcementProperties; // (not currently used by Assimp) - struct IfcManifoldSolidBrep; - struct IfcFacetedBrep; - typedef NotImplemented IfcOpticalMaterialProperties; // (not currently used by Assimp) - struct IfcSurfaceStyleWithTextures; - typedef NotImplemented IfcRelConnectsWithEccentricity; // (not currently used by Assimp) - struct IfcArbitraryClosedProfileDef; - struct IfcHumidifierType; - struct IfcPolyLoop; - struct IfcFlowFittingType; - struct IfcFillAreaStyleTiles; - typedef NotImplemented IfcTextureVertex; // (not currently used by Assimp) - struct IfcVertex; + struct IfcProduct; + struct IfcAnnotation; + struct IfcStyledItem; + struct IfcAnnotationOccurrence; + struct IfcAnnotationCurveOccurrence; struct IfcAnnotationFillArea; - struct IfcPlate; - struct IfcRightCircularCone; - struct IfcSurface; - struct IfcBoundedSurface; - typedef NotImplemented IfcLibraryReference; // (not currently used by Assimp) - typedef NotImplemented IfcConstraintClassificationRelationship; // (not currently used by Assimp) - struct IfcStructuralLoadGroup; - struct IfcGeometricRepresentationContext; - struct IfcTubeBundleType; - struct IfcStructuralPlanarAction; - typedef NotImplemented IfcBoundaryNodeCondition; // (not currently used by Assimp) - struct IfcHeatExchangerType; - typedef NotImplemented IfcRelSchedulesCostItems; // (not currently used by Assimp) - struct IfcFaceOuterBound; - struct IfcSphere; - struct IfcLightSourcePositional; - struct IfcStructuralPointAction; - struct IfcFlowSegmentType; - struct IfcFireSuppressionTerminalType; - struct IfcPropertySingleValue; - typedef NotImplemented IfcSpaceThermalLoadProperties; // (not currently used by Assimp) - typedef NotImplemented IfcPerson; // (not currently used by Assimp) - typedef NotImplemented IfcTextStyleForDefinedFont; // (not currently used by Assimp) - struct IfcFaceBasedSurfaceModel; - struct IfcAxis2Placement3D; - struct IfcStructuralResultGroup; - typedef NotImplemented IfcCurveStyleFont; // (not currently used by Assimp) - struct IfcHalfSpaceSolid; - struct IfcGasTerminalType; - typedef NotImplemented IfcSoundValue; // (not currently used by Assimp) - typedef NotImplemented IfcDocumentInformation; // (not currently used by Assimp) - struct IfcMember; - typedef NotImplemented IfcMaterialLayerSetUsage; // (not currently used by Assimp) - struct IfcPropertySet; - struct IfcCondition; - struct IfcPropertyEnumeratedValue; - typedef NotImplemented IfcTextStyle; // (not currently used by Assimp) - typedef NotImplemented IfcPermeableCoveringProperties; // (not currently used by Assimp) - typedef NotImplemented IfcLightIntensityDistribution; // (not currently used by Assimp) - struct IfcDistributionChamberElementType; - struct IfcTextLiteralWithExtent; - struct IfcFlowController; - struct IfcElectricDistributionPoint; - struct IfcTransportElement; - struct IfcAsset; - typedef NotImplemented IfcPersonAndOrganization; // (not currently used by Assimp) - struct IfcSweptAreaSolid; - struct IfcRevolvedAreaSolid; - struct IfcFlowInstrumentType; - struct IfcEnergyConversionDevice; - typedef NotImplemented IfcSoundProperties; // (not currently used by Assimp) - struct IfcSurfaceStyleShading; - struct IfcSurfaceStyleRendering; - struct IfcBoilerType; - struct IfcBuildingElementProxy; - struct IfcLocalPlacement; - struct IfcZone; - struct IfcStair; - struct IfcWallStandardCase; - struct IfcDiameterDimension; - struct IfcDuctSegmentType; - typedef NotImplemented IfcTimeSeries; // (not currently used by Assimp) - typedef NotImplemented IfcIrregularTimeSeries; // (not currently used by Assimp) - struct IfcJunctionBoxType; - struct IfcCartesianTransformationOperator3DnonUniform; + struct IfcAnnotationFillAreaOccurrence; + struct IfcAnnotationSurface; + struct IfcAnnotationSurfaceOccurrence; + struct IfcAnnotationSymbolOccurrence; + struct IfcAnnotationTextOccurrence; + typedef NotImplemented IfcApplication; // (not currently used by Assimp) + typedef NotImplemented IfcAppliedValue; // (not currently used by Assimp) + typedef NotImplemented IfcAppliedValueRelationship; // (not currently used by Assimp) typedef NotImplemented IfcApproval; // (not currently used by Assimp) - typedef NotImplemented IfcCurveStyleFontAndScaling; // (not currently used by Assimp) - struct IfcInventory; - typedef NotImplemented IfcQuantityLength; // (not currently used by Assimp) - struct IfcConditionCriterion; - struct IfcConnectedFaceSet; - struct IfcOpenShell; - typedef NotImplemented IfcStructuralProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralSteelProfileProperties; // (not currently used by Assimp) - struct IfcDoor; - struct IfcBezierCurve; - struct IfcRationalBezierCurve; + typedef NotImplemented IfcApprovalActorRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcApprovalPropertyRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcApprovalRelationship; // (not currently used by Assimp) + struct IfcProfileDef; + struct IfcArbitraryClosedProfileDef; + struct IfcArbitraryOpenProfileDef; struct IfcArbitraryProfileDefWithVoids; - typedef NotImplemented IfcMaterial; // (not currently used by Assimp) - struct IfcBooleanResult; - struct IfcStackTerminalType; - typedef NotImplemented IfcPreDefinedDimensionSymbol; // (not currently used by Assimp) + struct IfcGroup; + struct IfcAsset; + struct IfcParameterizedProfileDef; struct IfcIShapeProfileDef; struct IfcAsymmetricIShapeProfileDef; - struct IfcEquipmentElement; - typedef NotImplemented IfcClassificationReference; // (not currently used by Assimp) - typedef NotImplemented IfcPreDefinedCurveFont; // (not currently used by Assimp) - typedef NotImplemented IfcShapeAspect; // (not currently used by Assimp) - typedef NotImplemented IfcClassificationNotationFacet; // (not currently used by Assimp) - typedef NotImplemented IfcDoorLiningProperties; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadSingleDisplacement; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesMaterial; // (not currently used by Assimp) - typedef NotImplemented IfcBoundaryNodeConditionWarping; // (not currently used by Assimp) - typedef NotImplemented IfcCoordinatedUniversalTimeOffset; // (not currently used by Assimp) - struct IfcClosedShell; - typedef NotImplemented IfcMechanicalConcreteMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcMaterialLayerSet; // (not currently used by Assimp) - struct IfcEllipseProfileDef; - struct IfcPropertyBoundedValue; - struct IfcCoveringType; - typedef NotImplemented IfcRelCoversSpaces; // (not currently used by Assimp) - typedef NotImplemented IfcClassificationItemRelationship; // (not currently used by Assimp) - struct IfcActuatorType; - struct IfcOffsetCurve2D; - typedef NotImplemented IfcConnectionGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcConnectionSurfaceGeometry; // (not currently used by Assimp) - struct IfcAnnotation; - struct IfcDistributionChamberElement; - typedef NotImplemented IfcCurveStyleFontPattern; // (not currently used by Assimp) - struct IfcOffsetCurve3D; - struct IfcFooting; - struct IfcMappedItem; - typedef NotImplemented IfcPostalAddress; // (not currently used by Assimp) - typedef NotImplemented IfcRelSpaceBoundary; // (not currently used by Assimp) - struct IfcTransformerType; - struct IfcRightCircularCylinder; - struct IfcSpaceProgram; - typedef NotImplemented IfcThermalMaterialProperties; // (not currently used by Assimp) - struct IfcAnnotationSurface; - struct IfcZShapeProfileDef; - struct IfcRectangleHollowProfileDef; - struct IfcGeometricSet; - struct IfcGeometricCurveSet; - struct IfcArbitraryOpenProfileDef; - typedef NotImplemented IfcDocumentInformationRelationship; // (not currently used by Assimp) - struct IfcFacetedBrepWithVoids; - struct IfcVector; - typedef NotImplemented IfcExternallyDefinedSurfaceStyle; // (not currently used by Assimp) - struct IfcServiceLife; - struct IfcCurveBoundedPlane; - struct IfcCircle; - typedef NotImplemented IfcFuelProperties; // (not currently used by Assimp) - struct IfcVertexLoop; - typedef NotImplemented IfcServiceLifeFactor; // (not currently used by Assimp) - typedef NotImplemented IfcPropertyEnumeration; // (not currently used by Assimp) - struct IfcSurfaceCurveSweptAreaSolid; - struct IfcConstructionEquipmentResource; - struct IfcSectionedSpine; - typedef NotImplemented IfcReferencesValueDocument; // (not currently used by Assimp) - struct IfcPropertyReferenceValue; - typedef NotImplemented IfcRelServicesBuildings; // (not currently used by Assimp) - struct IfcSite; - struct IfcPerformanceHistory; - typedef NotImplemented IfcExternallyDefinedTextFont; // (not currently used by Assimp) - struct IfcPropertyTableValue; - typedef NotImplemented IfcEnvironmentalImpactValue; // (not currently used by Assimp) - typedef NotImplemented IfcCurveStyle; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesProfileProperties; // (not currently used by Assimp) - struct IfcTransportElementType; - struct IfcPolygonalBoundedHalfSpace; - typedef NotImplemented IfcConnectionPortGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcRelFlowControlElements; // (not currently used by Assimp) - typedef NotImplemented IfcApprovalPropertyRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcRelReferencedInSpatialStructure; // (not currently used by Assimp) + struct IfcPlacement; + struct IfcAxis1Placement; struct IfcAxis2Placement2D; - struct IfcFillAreaStyleHatching; - struct IfcFastener; - struct IfcScheduleTimeControl; - struct IfcElectricMotorType; - struct IfcTimeSeriesSchedule; - typedef NotImplemented IfcTable; // (not currently used by Assimp) - struct IfcPipeSegmentType; - struct IfcFlowTerminal; - typedef NotImplemented IfcReinforcementDefinitionProperties; // (not currently used by Assimp) - struct IfcWallType; - struct IfcCoilType; - typedef NotImplemented IfcStructuralLoadSingleDisplacementDistortion; // (not currently used by Assimp) - struct IfcFurnishingElement; - typedef NotImplemented IfcTextStyleWithBoxCharacteristics; // (not currently used by Assimp) - struct IfcWasteTerminalType; - struct IfcWindow; - typedef NotImplemented IfcActorRole; // (not currently used by Assimp) - struct IfcElectricFlowStorageDeviceType; - struct IfcRelAggregates; - typedef NotImplemented IfcDerivedUnit; // (not currently used by Assimp) - struct IfcRamp; - typedef NotImplemented IfcDraughtingPreDefinedCurveFont; // (not currently used by Assimp) - struct IfcLinearDimension; - struct IfcElementarySurface; - struct IfcConstructionProductResource; - struct IfcCableSegmentType; - typedef NotImplemented IfcDraughtingPreDefinedTextFont; // (not currently used by Assimp) - struct IfcPath; - typedef NotImplemented IfcTextStyleTextModel; // (not currently used by Assimp) - typedef NotImplemented IfcOrganizationRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcMonetaryUnit; // (not currently used by Assimp) - struct IfcActor; - struct IfcOccupant; - struct IfcSwitchingDeviceType; - struct IfcSweptSurface; - struct IfcSurfaceOfLinearExtrusion; - struct IfcShellBasedSurfaceModel; - typedef NotImplemented IfcSymbolStyle; // (not currently used by Assimp) + struct IfcAxis2Placement3D; + struct IfcBSplineCurve; + struct IfcElement; + struct IfcBuildingElement; + struct IfcBeam; + struct IfcBuildingElementType; + struct IfcBeamType; + struct IfcBezierCurve; + typedef NotImplemented IfcSurfaceTexture; // (not currently used by Assimp) + typedef NotImplemented IfcBlobTexture; // (not currently used by Assimp) + struct IfcCsgPrimitive3D; + struct IfcBlock; + struct IfcBoilerType; + struct IfcBooleanResult; + struct IfcBooleanClippingResult; + typedef NotImplemented IfcBoundaryCondition; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryEdgeCondition; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryFaceCondition; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryNodeCondition; // (not currently used by Assimp) + typedef NotImplemented IfcBoundaryNodeConditionWarping; // (not currently used by Assimp) + struct IfcSurface; + struct IfcBoundedSurface; + struct IfcBoundingBox; + struct IfcHalfSpaceSolid; + struct IfcBoxedHalfSpace; + struct IfcSpatialStructureElement; struct IfcBuilding; - struct IfcSIUnit; - struct IfcDiscreteAccessory; - typedef NotImplemented IfcPreDefinedPointMarkerSymbol; // (not currently used by Assimp) - typedef NotImplemented IfcCostValue; // (not currently used by Assimp) - typedef NotImplemented IfcOwnerHistory; // (not currently used by Assimp) - struct IfcSystemFurnitureElementType; - struct IfcElementAssembly; - struct IfcCoolingTowerType; - typedef NotImplemented IfcStructuralLoadLinearForce; // (not currently used by Assimp) - typedef NotImplemented IfcPresentationLayerAssignment; // (not currently used by Assimp) - typedef NotImplemented IfcPresentationLayerWithStyle; // (not currently used by Assimp) - struct IfcLightSourceSpot; - typedef NotImplemented IfcExtendedMaterialProperties; // (not currently used by Assimp) - typedef NotImplemented IfcPixelTexture; // (not currently used by Assimp) - typedef NotImplemented IfcDimensionalExponents; // (not currently used by Assimp) - struct IfcEvaporatorType; + struct IfcBuildingElementComponent; + struct IfcBuildingElementPart; + struct IfcBuildingElementProxy; + struct IfcBuildingElementProxyType; + struct IfcBuildingStorey; + struct IfcCShapeProfileDef; + struct IfcFlowFittingType; + struct IfcCableCarrierFittingType; + struct IfcFlowSegmentType; + struct IfcCableCarrierSegmentType; + struct IfcCableSegmentType; + typedef NotImplemented IfcCalendarDate; // (not currently used by Assimp) + struct IfcPoint; + struct IfcCartesianPoint; + struct IfcCartesianTransformationOperator; + struct IfcCartesianTransformationOperator2D; + struct IfcCartesianTransformationOperator2DnonUniform; + struct IfcCartesianTransformationOperator3D; + struct IfcCartesianTransformationOperator3DnonUniform; + struct IfcCenterLineProfileDef; + struct IfcFeatureElement; + struct IfcFeatureElementSubtraction; + struct IfcEdgeFeature; + struct IfcChamferEdgeFeature; + struct IfcChillerType; + struct IfcConic; + struct IfcCircle; + struct IfcCircleProfileDef; + struct IfcCircleHollowProfileDef; + typedef NotImplemented IfcClassification; // (not currently used by Assimp) + typedef NotImplemented IfcClassificationItem; // (not currently used by Assimp) + typedef NotImplemented IfcClassificationItemRelationship; // (not currently used by Assimp) typedef NotImplemented IfcClassificationNotation; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadPlanarForce; // (not currently used by Assimp) - struct IfcSpaceHeaterType; - struct IfcElementQuantity; - typedef NotImplemented IfcCurrencyRelationship; // (not currently used by Assimp) - struct IfcRampFlight; - struct IfcConversionBasedUnit; - struct IfcExtrudedAreaSolid; - struct IfcProjectOrder; + typedef NotImplemented IfcClassificationNotationFacet; // (not currently used by Assimp) + typedef NotImplemented IfcExternalReference; // (not currently used by Assimp) + typedef NotImplemented IfcClassificationReference; // (not currently used by Assimp) + struct IfcTopologicalRepresentationItem; + struct IfcConnectedFaceSet; + struct IfcClosedShell; + struct IfcCoilType; + struct IfcColourSpecification; + struct IfcColourRgb; + struct IfcColumn; + struct IfcColumnType; + struct IfcProperty; + struct IfcComplexProperty; + struct IfcCompositeCurveSegment; + struct IfcCompositeProfileDef; + struct IfcFlowMovingDeviceType; + struct IfcCompressorType; + struct IfcCondenserType; + struct IfcCondition; + struct IfcConditionCriterion; + typedef NotImplemented IfcConnectionGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcConnectionCurveGeometry; // (not currently used by Assimp) typedef NotImplemented IfcConnectionPointGeometry; // (not currently used by Assimp) typedef NotImplemented IfcConnectionPointEccentricity; // (not currently used by Assimp) - typedef NotImplemented IfcConstraintAggregationRelationship; // (not currently used by Assimp) - typedef NotImplemented IfcDimensionPair; // (not currently used by Assimp) - struct IfcBooleanClippingResult; + typedef NotImplemented IfcConnectionPortGeometry; // (not currently used by Assimp) + typedef NotImplemented IfcConnectionSurfaceGeometry; // (not currently used by Assimp) typedef NotImplemented IfcConstraint; // (not currently used by Assimp) - typedef NotImplemented IfcStructuralLoadTemperature; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesConstraint; // (not currently used by Assimp) - struct IfcReinforcingBar; - struct IfcCenterLineProfileDef; - struct IfcUShapeProfileDef; - struct IfcBoundingBox; - struct IfcWindowStyle; - typedef NotImplemented IfcBlobTexture; // (not currently used by Assimp) - struct IfcMemberType; - struct IfcLightFixtureType; - struct IfcFlowStorageDevice; - struct IfcTopologyRepresentation; - struct IfcRelDefinesByProperties; - struct IfcRelOverridesProperties; - struct IfcStairFlightType; - struct IfcCircleProfileDef; - struct IfcSweptDiskSolid; - typedef NotImplemented IfcExternallyDefinedSymbol; // (not currently used by Assimp) - typedef NotImplemented IfcRegularTimeSeries; // (not currently used by Assimp) - struct IfcStructuralPlanarActionVarying; - struct IfcValveType; - struct IfcUnitAssignment; - typedef NotImplemented IfcConnectionCurveGeometry; // (not currently used by Assimp) - typedef NotImplemented IfcOrganization; // (not currently used by Assimp) - struct IfcVirtualElement; - typedef NotImplemented IfcQuantityCount; // (not currently used by Assimp) - struct IfcStructuralCurveConnection; - struct IfcAirTerminalType; - struct IfcFlowTreatmentDeviceType; - struct IfcRoof; - typedef NotImplemented IfcSectionProperties; // (not currently used by Assimp) - typedef NotImplemented IfcTimeSeriesValue; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsToGroup; // (not currently used by Assimp) - struct IfcElectricTimeControlType; - struct IfcPile; - struct IfcCostSchedule; - struct IfcRampFlightType; - struct IfcDerivedProfileDef; - struct IfcCostItem; - struct IfcEvaporativeCoolerType; - struct IfcChillerType; - typedef NotImplemented IfcMaterialLayer; // (not currently used by Assimp) - struct IfcBoxedHalfSpace; - struct IfcCurtainWallType; - struct IfcGeometricRepresentationSubContext; - struct IfcDimensionCurve; - struct IfcPlane; - struct IfcProjectionCurve; - struct IfcDamperType; - typedef NotImplemented IfcSurfaceStyleRefraction; // (not currently used by Assimp) - typedef NotImplemented IfcRibPlateProfileProperties; // (not currently used by Assimp) - typedef NotImplemented IfcWaterProperties; // (not currently used by Assimp) - struct IfcMechanicalFastener; - struct IfcDuctSilencerType; - typedef NotImplemented IfcRelAssociatesDocument; // (not currently used by Assimp) - typedef NotImplemented IfcReinforcementBarProperties; // (not currently used by Assimp) - struct IfcLaborResource; - struct IfcFanType; - typedef NotImplemented IfcEnergyProperties; // (not currently used by Assimp) - struct IfcProjectionElement; - typedef NotImplemented IfcRelInteractionRequirements; // (not currently used by Assimp) - struct IfcCraneRailFShapeProfileDef; - typedef NotImplemented IfcApprovalRelationship; // (not currently used by Assimp) - struct IfcProject; - struct IfcRelVoidsElement; - typedef NotImplemented IfcMetric; // (not currently used by Assimp) - struct IfcElectricalCircuit; - struct IfcLShapeProfileDef; - typedef NotImplemented IfcRelSequence; // (not currently used by Assimp) - struct IfcFlowTreatmentDevice; - struct IfcVertexPoint; - struct IfcAnnotationTextOccurrence; - struct IfcFilterType; - typedef NotImplemented IfcQuantityTime; // (not currently used by Assimp) - struct IfcEdgeLoop; - struct IfcCircleHollowProfileDef; - struct IfcAirTerminalBoxType; - struct IfcStructuredDimensionCallout; - typedef NotImplemented IfcElectricalBaseProperties; // (not currently used by Assimp) - struct IfcCableCarrierSegmentType; - typedef NotImplemented IfcAppliedValueRelationship; // (not currently used by Assimp) - struct IfcDuctFittingType; - typedef NotImplemented IfcExternallyDefinedHatchStyle; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssociatesLibrary; // (not currently used by Assimp) - struct IfcRectangularTrimmedSurface; - struct IfcProductDefinitionShape; - struct IfcStairFlight; - struct IfcSlab; - struct IfcPipeFittingType; - struct IfcSpace; - typedef NotImplemented IfcDateAndTime; // (not currently used by Assimp) - typedef NotImplemented IfcObjective; // (not currently used by Assimp) - typedef NotImplemented IfcVirtualGridIntersection; // (not currently used by Assimp) - struct IfcBuildingElementProxyType; - typedef NotImplemented IfcRelAssignsToProcess; // (not currently used by Assimp) - struct IfcAlarmType; - struct IfcCableCarrierFittingType; - struct IfcRoundedEdgeFeature; - typedef NotImplemented IfcTelecomAddress; // (not currently used by Assimp) - typedef NotImplemented IfcRelConnectsPortToElement; // (not currently used by Assimp) - typedef NotImplemented IfcRelAssignsTasks; // (not currently used by Assimp) - struct IfcFaceSurface; - typedef NotImplemented IfcRelOccupiesSpaces; // (not currently used by Assimp) - struct IfcCartesianTransformationOperator2D; - typedef NotImplemented IfcGridAxis; // (not currently used by Assimp) - struct IfcTendonAnchor; - typedef NotImplemented IfcFluidFlowProperties; // (not currently used by Assimp) - struct IfcWorkSchedule; - struct IfcSurfaceOfRevolution; - typedef NotImplemented IfcSurfaceStyleLighting; // (not currently used by Assimp) - struct IfcElectricHeaterType; - struct IfcMeasureWithUnit; - struct IfcOrientedEdge; - struct IfcCartesianTransformationOperator2DnonUniform; - typedef NotImplemented IfcRelConnectsWithRealizingElements; // (not currently used by Assimp) - typedef NotImplemented IfcRelConnectsPorts; // (not currently used by Assimp) - struct IfcRelFillsElement; + typedef NotImplemented IfcConstraintAggregationRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcConstraintClassificationRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcConstraintRelationship; // (not currently used by Assimp) + struct IfcResource; + struct IfcConstructionResource; + struct IfcConstructionEquipmentResource; struct IfcConstructionMaterialResource; + struct IfcConstructionProductResource; + struct IfcNamedUnit; + struct IfcContextDependentUnit; + struct IfcControllerType; + struct IfcConversionBasedUnit; + struct IfcCooledBeamType; + struct IfcCoolingTowerType; + typedef NotImplemented IfcCoordinatedUniversalTimeOffset; // (not currently used by Assimp) + struct IfcCostItem; + struct IfcCostSchedule; + typedef NotImplemented IfcCostValue; // (not currently used by Assimp) + struct IfcCovering; + struct IfcCoveringType; + struct IfcCraneRailAShapeProfileDef; + struct IfcCraneRailFShapeProfileDef; + struct IfcCrewResource; + struct IfcSolidModel; + struct IfcCsgSolid; + typedef NotImplemented IfcCurrencyRelationship; // (not currently used by Assimp) + struct IfcCurtainWall; + struct IfcCurtainWallType; + struct IfcCurveBoundedPlane; + struct IfcPresentationStyle; + typedef NotImplemented IfcCurveStyle; // (not currently used by Assimp) + typedef NotImplemented IfcCurveStyleFont; // (not currently used by Assimp) + typedef NotImplemented IfcCurveStyleFontAndScaling; // (not currently used by Assimp) + typedef NotImplemented IfcCurveStyleFontPattern; // (not currently used by Assimp) + struct IfcDamperType; + typedef NotImplemented IfcDateAndTime; // (not currently used by Assimp) + struct IfcDefinedSymbol; + struct IfcDerivedProfileDef; + typedef NotImplemented IfcDerivedUnit; // (not currently used by Assimp) + typedef NotImplemented IfcDerivedUnitElement; // (not currently used by Assimp) + struct IfcDiameterDimension; + typedef NotImplemented IfcDraughtingCalloutRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcDimensionCalloutRelationship; // (not currently used by Assimp) + struct IfcDimensionCurve; + struct IfcTerminatorSymbol; + struct IfcDimensionCurveTerminator; + typedef NotImplemented IfcDimensionPair; // (not currently used by Assimp) + typedef NotImplemented IfcDimensionalExponents; // (not currently used by Assimp) + struct IfcDirection; + struct IfcElementComponent; + struct IfcDiscreteAccessory; + struct IfcElementComponentType; + struct IfcDiscreteAccessoryType; + struct IfcDistributionElement; + struct IfcDistributionFlowElement; + struct IfcDistributionChamberElement; + struct IfcDistributionChamberElementType; + struct IfcDistributionControlElement; + struct IfcPort; + struct IfcDistributionPort; + typedef NotImplemented IfcDocumentElectronicFormat; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentInformation; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentInformationRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcDocumentReference; // (not currently used by Assimp) + struct IfcDoor; + struct IfcPropertyDefinition; + struct IfcPropertySetDefinition; + typedef NotImplemented IfcDoorLiningProperties; // (not currently used by Assimp) + typedef NotImplemented IfcDoorPanelProperties; // (not currently used by Assimp) + struct IfcDoorStyle; + typedef NotImplemented IfcPreDefinedItem; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedColour; // (not currently used by Assimp) + typedef NotImplemented IfcDraughtingPreDefinedColour; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedCurveFont; // (not currently used by Assimp) + typedef NotImplemented IfcDraughtingPreDefinedCurveFont; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedTextFont; // (not currently used by Assimp) + typedef NotImplemented IfcDraughtingPreDefinedTextFont; // (not currently used by Assimp) + struct IfcDuctFittingType; + struct IfcDuctSegmentType; + struct IfcFlowTreatmentDeviceType; + struct IfcDuctSilencerType; + struct IfcEdge; + struct IfcEdgeCurve; + struct IfcLoop; + struct IfcEdgeLoop; + struct IfcElectricApplianceType; + struct IfcFlowController; + struct IfcElectricDistributionPoint; + struct IfcFlowStorageDeviceType; + struct IfcElectricFlowStorageDeviceType; + struct IfcElectricGeneratorType; + struct IfcElectricHeaterType; + struct IfcElectricMotorType; + struct IfcElectricTimeControlType; + typedef NotImplemented IfcEnergyProperties; // (not currently used by Assimp) + typedef NotImplemented IfcElectricalBaseProperties; // (not currently used by Assimp) + struct IfcSystem; + struct IfcElectricalCircuit; + struct IfcElectricalElement; + struct IfcElementAssembly; + struct IfcElementQuantity; + struct IfcElementarySurface; + struct IfcEllipse; + struct IfcEllipseProfileDef; + struct IfcEnergyConversionDevice; + typedef NotImplemented IfcEnvironmentalImpactValue; // (not currently used by Assimp) + struct IfcEquipmentElement; + struct IfcEquipmentStandard; + struct IfcEvaporativeCoolerType; + struct IfcEvaporatorType; + typedef NotImplemented IfcMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcExtendedMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcExternallyDefinedHatchStyle; // (not currently used by Assimp) + typedef NotImplemented IfcExternallyDefinedSurfaceStyle; // (not currently used by Assimp) + typedef NotImplemented IfcExternallyDefinedSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcExternallyDefinedTextFont; // (not currently used by Assimp) + struct IfcSweptAreaSolid; + struct IfcExtrudedAreaSolid; + struct IfcFace; + struct IfcFaceBasedSurfaceModel; + struct IfcFaceBound; + struct IfcFaceOuterBound; + struct IfcFaceSurface; + struct IfcManifoldSolidBrep; + struct IfcFacetedBrep; + struct IfcFacetedBrepWithVoids; + typedef NotImplemented IfcStructuralConnectionCondition; // (not currently used by Assimp) + typedef NotImplemented IfcFailureConnectionCondition; // (not currently used by Assimp) + struct IfcFanType; + struct IfcFastener; + struct IfcFastenerType; + struct IfcFeatureElementAddition; + typedef NotImplemented IfcFillAreaStyle; // (not currently used by Assimp) + struct IfcFillAreaStyleHatching; + struct IfcFillAreaStyleTileSymbolWithStyle; + struct IfcFillAreaStyleTiles; + struct IfcFilterType; + struct IfcFireSuppressionTerminalType; + struct IfcFlowFitting; + struct IfcFlowInstrumentType; + struct IfcFlowMeterType; + struct IfcFlowMovingDevice; + struct IfcFlowSegment; + struct IfcFlowStorageDevice; + struct IfcFlowTerminal; + struct IfcFlowTreatmentDevice; + typedef NotImplemented IfcFluidFlowProperties; // (not currently used by Assimp) + struct IfcFooting; + typedef NotImplemented IfcFuelProperties; // (not currently used by Assimp) + struct IfcFurnishingElement; + struct IfcFurnishingElementType; + struct IfcFurnitureStandard; + struct IfcFurnitureType; + struct IfcGasTerminalType; + typedef NotImplemented IfcGeneralMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcProfileProperties; // (not currently used by Assimp) + typedef NotImplemented IfcGeneralProfileProperties; // (not currently used by Assimp) + struct IfcGeometricSet; + struct IfcGeometricCurveSet; + struct IfcRepresentationContext; + struct IfcGeometricRepresentationContext; + struct IfcGeometricRepresentationSubContext; + struct IfcGrid; + typedef NotImplemented IfcGridAxis; // (not currently used by Assimp) + struct IfcObjectPlacement; + struct IfcGridPlacement; + struct IfcHeatExchangerType; + struct IfcHumidifierType; + typedef NotImplemented IfcHygroscopicMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcImageTexture; // (not currently used by Assimp) + struct IfcInventory; + typedef NotImplemented IfcTimeSeries; // (not currently used by Assimp) + typedef NotImplemented IfcIrregularTimeSeries; // (not currently used by Assimp) + typedef NotImplemented IfcIrregularTimeSeriesValue; // (not currently used by Assimp) + struct IfcJunctionBoxType; + struct IfcLShapeProfileDef; + struct IfcLaborResource; + struct IfcLampType; + typedef NotImplemented IfcLibraryInformation; // (not currently used by Assimp) + typedef NotImplemented IfcLibraryReference; // (not currently used by Assimp) + typedef NotImplemented IfcLightDistributionData; // (not currently used by Assimp) + struct IfcLightFixtureType; + typedef NotImplemented IfcLightIntensityDistribution; // (not currently used by Assimp) + struct IfcLightSource; + struct IfcLightSourceAmbient; + struct IfcLightSourceDirectional; + struct IfcLightSourceGoniometric; + struct IfcLightSourcePositional; + struct IfcLightSourceSpot; + struct IfcLine; + struct IfcLinearDimension; + struct IfcLocalPlacement; + typedef NotImplemented IfcLocalTime; // (not currently used by Assimp) + struct IfcMappedItem; + typedef NotImplemented IfcMaterial; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialClassificationRelationship; // (not currently used by Assimp) + struct IfcProductRepresentation; + struct IfcMaterialDefinitionRepresentation; + typedef NotImplemented IfcMaterialLayer; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialLayerSet; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialLayerSetUsage; // (not currently used by Assimp) + typedef NotImplemented IfcMaterialList; // (not currently used by Assimp) + struct IfcMeasureWithUnit; + typedef NotImplemented IfcMechanicalMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcMechanicalConcreteMaterialProperties; // (not currently used by Assimp) + struct IfcMechanicalFastener; + struct IfcMechanicalFastenerType; + typedef NotImplemented IfcMechanicalSteelMaterialProperties; // (not currently used by Assimp) + struct IfcMember; + struct IfcMemberType; + typedef NotImplemented IfcMetric; // (not currently used by Assimp) + typedef NotImplemented IfcMonetaryUnit; // (not currently used by Assimp) + struct IfcMotorConnectionType; + struct IfcProcess; + struct IfcTask; + struct IfcMove; + typedef NotImplemented IfcObjective; // (not currently used by Assimp) + struct IfcOccupant; + struct IfcOffsetCurve2D; + struct IfcOffsetCurve3D; + struct IfcOneDirectionRepeatFactor; + struct IfcOpenShell; + struct IfcOpeningElement; + typedef NotImplemented IfcOpticalMaterialProperties; // (not currently used by Assimp) + struct IfcOrderAction; + typedef NotImplemented IfcOrganization; // (not currently used by Assimp) + typedef NotImplemented IfcOrganizationRelationship; // (not currently used by Assimp) + struct IfcOrientedEdge; + struct IfcOutletType; + typedef NotImplemented IfcOwnerHistory; // (not currently used by Assimp) + struct IfcPath; + struct IfcPerformanceHistory; + typedef NotImplemented IfcPermeableCoveringProperties; // (not currently used by Assimp) + struct IfcPermit; + typedef NotImplemented IfcPerson; // (not currently used by Assimp) + typedef NotImplemented IfcPersonAndOrganization; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalQuantity; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalComplexQuantity; // (not currently used by Assimp) + typedef NotImplemented IfcPhysicalSimpleQuantity; // (not currently used by Assimp) + struct IfcPile; + struct IfcPipeFittingType; + struct IfcPipeSegmentType; + typedef NotImplemented IfcPixelTexture; // (not currently used by Assimp) + struct IfcPlanarExtent; + struct IfcPlanarBox; + struct IfcPlane; + struct IfcPlate; + struct IfcPlateType; + struct IfcPointOnCurve; + struct IfcPointOnSurface; + struct IfcPolyLoop; + struct IfcPolygonalBoundedHalfSpace; + struct IfcPolyline; + typedef NotImplemented IfcPostalAddress; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedDimensionSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedPointMarkerSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcPreDefinedTerminatorSymbol; // (not currently used by Assimp) + typedef NotImplemented IfcPresentationLayerAssignment; // (not currently used by Assimp) + typedef NotImplemented IfcPresentationLayerWithStyle; // (not currently used by Assimp) + struct IfcPresentationStyleAssignment; + struct IfcProcedure; + struct IfcProductDefinitionShape; + typedef NotImplemented IfcProductsOfCombustionProperties; // (not currently used by Assimp) + struct IfcProject; + struct IfcProjectOrder; + struct IfcProjectOrderRecord; + struct IfcProjectionCurve; + struct IfcProjectionElement; + struct IfcSimpleProperty; + struct IfcPropertyBoundedValue; + typedef NotImplemented IfcPropertyConstraintRelationship; // (not currently used by Assimp) + typedef NotImplemented IfcPropertyDependencyRelationship; // (not currently used by Assimp) + struct IfcPropertyEnumeratedValue; + typedef NotImplemented IfcPropertyEnumeration; // (not currently used by Assimp) + struct IfcPropertyListValue; + struct IfcPropertyReferenceValue; + struct IfcPropertySet; + struct IfcPropertySingleValue; + struct IfcPropertyTableValue; + struct IfcProtectiveDeviceType; + struct IfcProxy; + struct IfcPumpType; + typedef NotImplemented IfcQuantityArea; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityCount; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityLength; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityTime; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityVolume; // (not currently used by Assimp) + typedef NotImplemented IfcQuantityWeight; // (not currently used by Assimp) struct IfcRadiusDimension; + struct IfcRailing; + struct IfcRailingType; + struct IfcRamp; + struct IfcRampFlight; + struct IfcRampFlightType; + struct IfcRationalBezierCurve; + struct IfcRectangleProfileDef; + struct IfcRectangleHollowProfileDef; + struct IfcRectangularPyramid; + struct IfcRectangularTrimmedSurface; + typedef NotImplemented IfcReferencesValueDocument; // (not currently used by Assimp) + typedef NotImplemented IfcRegularTimeSeries; // (not currently used by Assimp) + typedef NotImplemented IfcReinforcementBarProperties; // (not currently used by Assimp) + typedef NotImplemented IfcReinforcementDefinitionProperties; // (not currently used by Assimp) + struct IfcReinforcingElement; + struct IfcReinforcingBar; + struct IfcReinforcingMesh; + struct IfcRelationship; + struct IfcRelDecomposes; + struct IfcRelAggregates; + typedef NotImplemented IfcRelAssigns; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToControl; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsTasks; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToActor; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToGroup; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToProcess; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToProduct; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToProjectOrder; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssignsToResource; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociates; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesAppliedValue; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesApproval; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesClassification; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesConstraint; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesDocument; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesLibrary; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesMaterial; // (not currently used by Assimp) + typedef NotImplemented IfcRelAssociatesProfileProperties; // (not currently used by Assimp) + struct IfcRelConnects; + typedef NotImplemented IfcRelConnectsElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPathElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPortToElement; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsPorts; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsStructuralActivity; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsStructuralElement; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsStructuralMember; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsWithEccentricity; // (not currently used by Assimp) + typedef NotImplemented IfcRelConnectsWithRealizingElements; // (not currently used by Assimp) + struct IfcRelContainedInSpatialStructure; + typedef NotImplemented IfcRelCoversBldgElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelCoversSpaces; // (not currently used by Assimp) + struct IfcRelDefines; + struct IfcRelDefinesByProperties; + typedef NotImplemented IfcRelDefinesByType; // (not currently used by Assimp) + struct IfcRelFillsElement; + typedef NotImplemented IfcRelFlowControlElements; // (not currently used by Assimp) + typedef NotImplemented IfcRelInteractionRequirements; // (not currently used by Assimp) + typedef NotImplemented IfcRelNests; // (not currently used by Assimp) + typedef NotImplemented IfcRelOccupiesSpaces; // (not currently used by Assimp) + struct IfcRelOverridesProperties; + typedef NotImplemented IfcRelProjectsElement; // (not currently used by Assimp) + typedef NotImplemented IfcRelReferencedInSpatialStructure; // (not currently used by Assimp) + typedef NotImplemented IfcRelSchedulesCostItems; // (not currently used by Assimp) + typedef NotImplemented IfcRelSequence; // (not currently used by Assimp) + typedef NotImplemented IfcRelServicesBuildings; // (not currently used by Assimp) + typedef NotImplemented IfcRelSpaceBoundary; // (not currently used by Assimp) + struct IfcRelVoidsElement; + typedef NotImplemented IfcRelaxation; // (not currently used by Assimp) + struct IfcRepresentation; + struct IfcRepresentationMap; + struct IfcRevolvedAreaSolid; + typedef NotImplemented IfcRibPlateProfileProperties; // (not currently used by Assimp) + struct IfcRightCircularCone; + struct IfcRightCircularCylinder; + struct IfcRoof; + struct IfcRoundedEdgeFeature; + struct IfcRoundedRectangleProfileDef; + struct IfcSIUnit; + struct IfcSanitaryTerminalType; + struct IfcScheduleTimeControl; + typedef NotImplemented IfcSectionProperties; // (not currently used by Assimp) + typedef NotImplemented IfcSectionReinforcementProperties; // (not currently used by Assimp) + struct IfcSectionedSpine; + struct IfcSensorType; + struct IfcServiceLife; + typedef NotImplemented IfcServiceLifeFactor; // (not currently used by Assimp) + typedef NotImplemented IfcShapeAspect; // (not currently used by Assimp) + struct IfcShapeModel; + struct IfcShapeRepresentation; + struct IfcShellBasedSurfaceModel; + struct IfcSite; + struct IfcSlab; + struct IfcSlabType; + typedef NotImplemented IfcSlippageConnectionCondition; // (not currently used by Assimp) + typedef NotImplemented IfcSoundProperties; // (not currently used by Assimp) + typedef NotImplemented IfcSoundValue; // (not currently used by Assimp) + struct IfcSpace; + struct IfcSpaceHeaterType; + struct IfcSpaceProgram; + typedef NotImplemented IfcSpaceThermalLoadProperties; // (not currently used by Assimp) + struct IfcSpatialStructureElementType; + struct IfcSpaceType; + struct IfcSphere; + struct IfcStackTerminalType; + struct IfcStair; + struct IfcStairFlight; + struct IfcStairFlightType; + struct IfcStructuralActivity; + struct IfcStructuralAction; + struct IfcStructuralAnalysisModel; + struct IfcStructuralItem; + struct IfcStructuralConnection; + struct IfcStructuralCurveConnection; + struct IfcStructuralMember; + struct IfcStructuralCurveMember; + struct IfcStructuralCurveMemberVarying; + struct IfcStructuralLinearAction; + struct IfcStructuralLinearActionVarying; + typedef NotImplemented IfcStructuralLoad; // (not currently used by Assimp) + struct IfcStructuralLoadGroup; + typedef NotImplemented IfcStructuralLoadStatic; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadLinearForce; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadPlanarForce; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleDisplacement; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleDisplacementDistortion; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleForce; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadSingleForceWarping; // (not currently used by Assimp) + typedef NotImplemented IfcStructuralLoadTemperature; // (not currently used by Assimp) + struct IfcStructuralPlanarAction; + struct IfcStructuralPlanarActionVarying; + struct IfcStructuralPointAction; + struct IfcStructuralPointConnection; + struct IfcStructuralReaction; + struct IfcStructuralPointReaction; + typedef NotImplemented IfcStructuralProfileProperties; // (not currently used by Assimp) + struct IfcStructuralResultGroup; + typedef NotImplemented IfcStructuralSteelProfileProperties; // (not currently used by Assimp) + struct IfcStructuralSurfaceConnection; + struct IfcStructuralSurfaceMember; + struct IfcStructuralSurfaceMemberVarying; + struct IfcStructuredDimensionCallout; + struct IfcStyleModel; + struct IfcStyledRepresentation; + struct IfcSubContractResource; + struct IfcSubedge; + struct IfcSurfaceCurveSweptAreaSolid; + struct IfcSweptSurface; + struct IfcSurfaceOfLinearExtrusion; + struct IfcSurfaceOfRevolution; + struct IfcSurfaceStyle; + typedef NotImplemented IfcSurfaceStyleLighting; // (not currently used by Assimp) + typedef NotImplemented IfcSurfaceStyleRefraction; // (not currently used by Assimp) + struct IfcSurfaceStyleShading; + struct IfcSurfaceStyleRendering; + struct IfcSurfaceStyleWithTextures; + struct IfcSweptDiskSolid; + struct IfcSwitchingDeviceType; + typedef NotImplemented IfcSymbolStyle; // (not currently used by Assimp) + struct IfcSystemFurnitureElementType; + struct IfcTShapeProfileDef; + typedef NotImplemented IfcTable; // (not currently used by Assimp) + typedef NotImplemented IfcTableRow; // (not currently used by Assimp) + struct IfcTankType; + typedef NotImplemented IfcTelecomAddress; // (not currently used by Assimp) + struct IfcTendon; + struct IfcTendonAnchor; + struct IfcTextLiteral; + struct IfcTextLiteralWithExtent; + typedef NotImplemented IfcTextStyle; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleFontModel; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleForDefinedFont; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleTextModel; // (not currently used by Assimp) + typedef NotImplemented IfcTextStyleWithBoxCharacteristics; // (not currently used by Assimp) + typedef NotImplemented IfcTextureCoordinate; // (not currently used by Assimp) + typedef NotImplemented IfcTextureCoordinateGenerator; // (not currently used by Assimp) + typedef NotImplemented IfcTextureMap; // (not currently used by Assimp) + typedef NotImplemented IfcTextureVertex; // (not currently used by Assimp) + typedef NotImplemented IfcThermalMaterialProperties; // (not currently used by Assimp) + typedef NotImplemented IfcTimeSeriesReferenceRelationship; // (not currently used by Assimp) + struct IfcTimeSeriesSchedule; + typedef NotImplemented IfcTimeSeriesValue; // (not currently used by Assimp) + struct IfcTopologyRepresentation; + struct IfcTransformerType; + struct IfcTransportElement; + struct IfcTransportElementType; + struct IfcTrapeziumProfileDef; + struct IfcTrimmedCurve; + struct IfcTubeBundleType; + struct IfcTwoDirectionRepeatFactor; + struct IfcUShapeProfileDef; + struct IfcUnitAssignment; + struct IfcUnitaryEquipmentType; + struct IfcValveType; + struct IfcVector; + struct IfcVertex; + typedef NotImplemented IfcVertexBasedTextureMap; // (not currently used by Assimp) + struct IfcVertexLoop; + struct IfcVertexPoint; + struct IfcVibrationIsolatorType; + struct IfcVirtualElement; + typedef NotImplemented IfcVirtualGridIntersection; // (not currently used by Assimp) + struct IfcWall; + struct IfcWallStandardCase; + struct IfcWallType; + struct IfcWasteTerminalType; + typedef NotImplemented IfcWaterProperties; // (not currently used by Assimp) + struct IfcWindow; + typedef NotImplemented IfcWindowLiningProperties; // (not currently used by Assimp) + typedef NotImplemented IfcWindowPanelProperties; // (not currently used by Assimp) + struct IfcWindowStyle; + struct IfcWorkControl; + struct IfcWorkPlan; + struct IfcWorkSchedule; + struct IfcZShapeProfileDef; + struct IfcZone; @@ -1380,27 +1380,30 @@ namespace IFC { }; - // C++ wrapper for IfcTopologicalRepresentationItem - struct IfcTopologicalRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcTopologicalRepresentationItem() : Object("IfcTopologicalRepresentationItem") {} - - }; - - // C++ wrapper for IfcEdge - struct IfcEdge : IfcTopologicalRepresentationItem, ObjectHelper { IfcEdge() : Object("IfcEdge") {} - Lazy< IfcVertex > EdgeStart; - Lazy< IfcVertex > EdgeEnd; - }; - // C++ wrapper for IfcGeometricRepresentationItem struct IfcGeometricRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcGeometricRepresentationItem() : Object("IfcGeometricRepresentationItem") {} }; - // C++ wrapper for IfcCompositeCurveSegment - struct IfcCompositeCurveSegment : IfcGeometricRepresentationItem, ObjectHelper { IfcCompositeCurveSegment() : Object("IfcCompositeCurveSegment") {} - IfcTransitionCode::Out Transition; - BOOLEAN::Out SameSense; - Lazy< IfcCurve > ParentCurve; + // C++ wrapper for IfcCurve + struct IfcCurve : IfcGeometricRepresentationItem, ObjectHelper { IfcCurve() : Object("IfcCurve") {} + + }; + + // C++ wrapper for IfcBoundedCurve + struct IfcBoundedCurve : IfcCurve, ObjectHelper { IfcBoundedCurve() : Object("IfcBoundedCurve") {} + + }; + + // C++ wrapper for IfcCompositeCurve + struct IfcCompositeCurve : IfcBoundedCurve, ObjectHelper { IfcCompositeCurve() : Object("IfcCompositeCurve") {} + ListOf< Lazy< IfcCompositeCurveSegment >, 1, 0 > Segments; + LOGICAL::Out SelfIntersect; + }; + + // C++ wrapper for Ifc2DCompositeCurve + struct Ifc2DCompositeCurve : IfcCompositeCurve, ObjectHelper { Ifc2DCompositeCurve() : Object("Ifc2DCompositeCurve") {} + }; // C++ wrapper for IfcRoot @@ -1421,78 +1424,19 @@ namespace IFC { Maybe< IfcLabel::Out > ObjectType; }; - // C++ wrapper for IfcProduct - struct IfcProduct : IfcObject, ObjectHelper { IfcProduct() : Object("IfcProduct") {} - Maybe< Lazy< IfcObjectPlacement > > ObjectPlacement; - Maybe< Lazy< IfcProductRepresentation > > Representation; - }; - - // C++ wrapper for IfcStructuralItem - struct IfcStructuralItem : IfcProduct, ObjectHelper { IfcStructuralItem() : Object("IfcStructuralItem") {} + // C++ wrapper for IfcControl + struct IfcControl : IfcObject, ObjectHelper { IfcControl() : Object("IfcControl") {} }; - // C++ wrapper for IfcStructuralConnection - struct IfcStructuralConnection : IfcStructuralItem, ObjectHelper { IfcStructuralConnection() : Object("IfcStructuralConnection") {} - Maybe< Lazy< NotImplemented > > AppliedCondition; + // C++ wrapper for IfcActionRequest + struct IfcActionRequest : IfcControl, ObjectHelper { IfcActionRequest() : Object("IfcActionRequest") {} + IfcIdentifier::Out RequestID; }; - // C++ wrapper for IfcStructuralSurfaceConnection - struct IfcStructuralSurfaceConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralSurfaceConnection() : Object("IfcStructuralSurfaceConnection") {} - - }; - - // C++ wrapper for IfcPresentationStyleAssignment - struct IfcPresentationStyleAssignment : ObjectHelper { IfcPresentationStyleAssignment() : Object("IfcPresentationStyleAssignment") {} - ListOf< IfcPresentationStyleSelect, 1, 0 >::Out Styles; - }; - - // C++ wrapper for IfcElement - struct IfcElement : IfcProduct, ObjectHelper { IfcElement() : Object("IfcElement") {} - Maybe< IfcIdentifier::Out > Tag; - }; - - // C++ wrapper for IfcBuildingElement - struct IfcBuildingElement : IfcElement, ObjectHelper { IfcBuildingElement() : Object("IfcBuildingElement") {} - - }; - - // C++ wrapper for IfcCurtainWall - struct IfcCurtainWall : IfcBuildingElement, ObjectHelper { IfcCurtainWall() : Object("IfcCurtainWall") {} - - }; - - // C++ wrapper for IfcProxy - struct IfcProxy : IfcProduct, ObjectHelper { IfcProxy() : Object("IfcProxy") {} - IfcObjectTypeEnum::Out ProxyType; - Maybe< IfcLabel::Out > Tag; - }; - - // C++ wrapper for IfcStyledItem - struct IfcStyledItem : IfcRepresentationItem, ObjectHelper { IfcStyledItem() : Object("IfcStyledItem") {} - Maybe< Lazy< IfcRepresentationItem > > Item; - ListOf< Lazy< IfcPresentationStyleAssignment >, 1, 0 > Styles; - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcAnnotationOccurrence - struct IfcAnnotationOccurrence : IfcStyledItem, ObjectHelper { IfcAnnotationOccurrence() : Object("IfcAnnotationOccurrence") {} - - }; - - // C++ wrapper for IfcAnnotationSymbolOccurrence - struct IfcAnnotationSymbolOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSymbolOccurrence() : Object("IfcAnnotationSymbolOccurrence") {} - - }; - - // C++ wrapper for IfcTerminatorSymbol - struct IfcTerminatorSymbol : IfcAnnotationSymbolOccurrence, ObjectHelper { IfcTerminatorSymbol() : Object("IfcTerminatorSymbol") {} - Lazy< IfcAnnotationCurveOccurrence > AnnotatedCurve; - }; - - // C++ wrapper for IfcDimensionCurveTerminator - struct IfcDimensionCurveTerminator : IfcTerminatorSymbol, ObjectHelper { IfcDimensionCurveTerminator() : Object("IfcDimensionCurveTerminator") {} - IfcDimensionExtentUsage::Out Role; + // C++ wrapper for IfcActor + struct IfcActor : IfcObject, ObjectHelper { IfcActor() : Object("IfcActor") {} + IfcActorSelect::Out TheActor; }; // C++ wrapper for IfcTypeObject @@ -1517,69 +1461,14 @@ namespace IFC { }; - // C++ wrapper for IfcFeatureElement - struct IfcFeatureElement : IfcElement, ObjectHelper { IfcFeatureElement() : Object("IfcFeatureElement") {} + // C++ wrapper for IfcDistributionControlElementType + struct IfcDistributionControlElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionControlElementType() : Object("IfcDistributionControlElementType") {} }; - // C++ wrapper for IfcFeatureElementSubtraction - struct IfcFeatureElementSubtraction : IfcFeatureElement, ObjectHelper { IfcFeatureElementSubtraction() : Object("IfcFeatureElementSubtraction") {} - - }; - - // C++ wrapper for IfcOpeningElement - struct IfcOpeningElement : IfcFeatureElementSubtraction, ObjectHelper { IfcOpeningElement() : Object("IfcOpeningElement") {} - - }; - - // C++ wrapper for IfcPresentationStyle - struct IfcPresentationStyle : ObjectHelper { IfcPresentationStyle() : Object("IfcPresentationStyle") {} - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcSurfaceStyle - struct IfcSurfaceStyle : IfcPresentationStyle, ObjectHelper { IfcSurfaceStyle() : Object("IfcSurfaceStyle") {} - IfcSurfaceSide::Out Side; - ListOf< IfcSurfaceStyleElementSelect, 1, 5 >::Out Styles; - }; - - // C++ wrapper for IfcFillAreaStyleTileSymbolWithStyle - struct IfcFillAreaStyleTileSymbolWithStyle : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTileSymbolWithStyle() : Object("IfcFillAreaStyleTileSymbolWithStyle") {} - Lazy< IfcAnnotationSymbolOccurrence > Symbol; - }; - - // C++ wrapper for IfcRelationship - struct IfcRelationship : IfcRoot, ObjectHelper { IfcRelationship() : Object("IfcRelationship") {} - - }; - - // C++ wrapper for IfcRelConnects - struct IfcRelConnects : IfcRelationship, ObjectHelper { IfcRelConnects() : Object("IfcRelConnects") {} - - }; - - // C++ wrapper for IfcStructuralMember - struct IfcStructuralMember : IfcStructuralItem, ObjectHelper { IfcStructuralMember() : Object("IfcStructuralMember") {} - - }; - - // C++ wrapper for IfcStructuralSurfaceMember - struct IfcStructuralSurfaceMember : IfcStructuralMember, ObjectHelper { IfcStructuralSurfaceMember() : Object("IfcStructuralSurfaceMember") {} - IfcStructuralSurfaceTypeEnum::Out PredefinedType; - Maybe< IfcPositiveLengthMeasure::Out > Thickness; - }; - - // C++ wrapper for IfcCartesianTransformationOperator - struct IfcCartesianTransformationOperator : IfcGeometricRepresentationItem, ObjectHelper { IfcCartesianTransformationOperator() : Object("IfcCartesianTransformationOperator") {} - Maybe< Lazy< IfcDirection > > Axis1; - Maybe< Lazy< IfcDirection > > Axis2; - Lazy< IfcCartesianPoint > LocalOrigin; - Maybe< REAL::Out > Scale; - }; - - // C++ wrapper for IfcCartesianTransformationOperator3D - struct IfcCartesianTransformationOperator3D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator3D() : Object("IfcCartesianTransformationOperator3D") {} - Maybe< Lazy< IfcDirection > > Axis3; + // C++ wrapper for IfcActuatorType + struct IfcActuatorType : IfcDistributionControlElementType, ObjectHelper { IfcActuatorType() : Object("IfcActuatorType") {} + IfcActuatorTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcDistributionFlowElementType @@ -1587,594 +1476,29 @@ namespace IFC { }; - // C++ wrapper for IfcFlowTerminalType - struct IfcFlowTerminalType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTerminalType() : Object("IfcFlowTerminalType") {} - - }; - - // C++ wrapper for IfcSanitaryTerminalType - struct IfcSanitaryTerminalType : IfcFlowTerminalType, ObjectHelper { IfcSanitaryTerminalType() : Object("IfcSanitaryTerminalType") {} - IfcSanitaryTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEnergyConversionDeviceType - struct IfcEnergyConversionDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcEnergyConversionDeviceType() : Object("IfcEnergyConversionDeviceType") {} - - }; - - // C++ wrapper for IfcElectricGeneratorType - struct IfcElectricGeneratorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricGeneratorType() : Object("IfcElectricGeneratorType") {} - IfcElectricGeneratorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcResource - struct IfcResource : IfcObject, ObjectHelper { IfcResource() : Object("IfcResource") {} - - }; - - // C++ wrapper for IfcConstructionResource - struct IfcConstructionResource : IfcResource, ObjectHelper { IfcConstructionResource() : Object("IfcConstructionResource") {} - Maybe< IfcIdentifier::Out > ResourceIdentifier; - Maybe< IfcLabel::Out > ResourceGroup; - Maybe< IfcResourceConsumptionEnum::Out > ResourceConsumption; - Maybe< Lazy< IfcMeasureWithUnit > > BaseQuantity; - }; - - // C++ wrapper for IfcControl - struct IfcControl : IfcObject, ObjectHelper { IfcControl() : Object("IfcControl") {} - - }; - - // C++ wrapper for IfcEquipmentStandard - struct IfcEquipmentStandard : IfcControl, ObjectHelper { IfcEquipmentStandard() : Object("IfcEquipmentStandard") {} - - }; - - // C++ wrapper for IfcElectricApplianceType - struct IfcElectricApplianceType : IfcFlowTerminalType, ObjectHelper { IfcElectricApplianceType() : Object("IfcElectricApplianceType") {} - IfcElectricApplianceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFurnitureStandard - struct IfcFurnitureStandard : IfcControl, ObjectHelper { IfcFurnitureStandard() : Object("IfcFurnitureStandard") {} - - }; - - // C++ wrapper for IfcDefinedSymbol - struct IfcDefinedSymbol : IfcGeometricRepresentationItem, ObjectHelper { IfcDefinedSymbol() : Object("IfcDefinedSymbol") {} - IfcDefinedSymbolSelect::Out Definition; - Lazy< IfcCartesianTransformationOperator2D > Target; - }; - - // C++ wrapper for IfcColourSpecification - struct IfcColourSpecification : ObjectHelper { IfcColourSpecification() : Object("IfcColourSpecification") {} - Maybe< IfcLabel::Out > Name; - }; - - // C++ wrapper for IfcCurve - struct IfcCurve : IfcGeometricRepresentationItem, ObjectHelper { IfcCurve() : Object("IfcCurve") {} - - }; - - // C++ wrapper for IfcLine - struct IfcLine : IfcCurve, ObjectHelper { IfcLine() : Object("IfcLine") {} - Lazy< IfcCartesianPoint > Pnt; - Lazy< IfcVector > Dir; - }; - - // C++ wrapper for IfcLoop - struct IfcLoop : IfcTopologicalRepresentationItem, ObjectHelper { IfcLoop() : Object("IfcLoop") {} - - }; - - // C++ wrapper for IfcProperty - struct IfcProperty : ObjectHelper { IfcProperty() : Object("IfcProperty") {} - IfcIdentifier::Out Name; - Maybe< IfcText::Out > Description; - }; - - // C++ wrapper for IfcComplexProperty - struct IfcComplexProperty : IfcProperty, ObjectHelper { IfcComplexProperty() : Object("IfcComplexProperty") {} - IfcIdentifier::Out UsageName; - ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; - }; - - // C++ wrapper for IfcCovering - struct IfcCovering : IfcBuildingElement, ObjectHelper { IfcCovering() : Object("IfcCovering") {} - Maybe< IfcCoveringTypeEnum::Out > PredefinedType; - }; - - // C++ wrapper for IfcBoundedCurve - struct IfcBoundedCurve : IfcCurve, ObjectHelper { IfcBoundedCurve() : Object("IfcBoundedCurve") {} - - }; - - // C++ wrapper for IfcBSplineCurve - struct IfcBSplineCurve : IfcBoundedCurve, ObjectHelper { IfcBSplineCurve() : Object("IfcBSplineCurve") {} - INTEGER::Out Degree; - ListOf< Lazy< IfcCartesianPoint >, 2, 0 > ControlPointsList; - IfcBSplineCurveForm::Out CurveForm; - LOGICAL::Out ClosedCurve; - LOGICAL::Out SelfIntersect; - }; - - // C++ wrapper for IfcNamedUnit - struct IfcNamedUnit : ObjectHelper { IfcNamedUnit() : Object("IfcNamedUnit") {} - Lazy< NotImplemented > Dimensions; - IfcUnitEnum::Out UnitType; - }; - - // C++ wrapper for IfcSubContractResource - struct IfcSubContractResource : IfcConstructionResource, ObjectHelper { IfcSubContractResource() : Object("IfcSubContractResource") {} - Maybe< IfcActorSelect::Out > SubContractor; - Maybe< IfcText::Out > JobDescription; - }; - - // C++ wrapper for IfcObjectPlacement - struct IfcObjectPlacement : ObjectHelper { IfcObjectPlacement() : Object("IfcObjectPlacement") {} - - }; - - // C++ wrapper for IfcGridPlacement - struct IfcGridPlacement : IfcObjectPlacement, ObjectHelper { IfcGridPlacement() : Object("IfcGridPlacement") {} - Lazy< NotImplemented > PlacementLocation; - Maybe< Lazy< NotImplemented > > PlacementRefDirection; - }; - - // C++ wrapper for IfcPropertyDefinition - struct IfcPropertyDefinition : IfcRoot, ObjectHelper { IfcPropertyDefinition() : Object("IfcPropertyDefinition") {} - - }; - - // C++ wrapper for IfcPropertySetDefinition - struct IfcPropertySetDefinition : IfcPropertyDefinition, ObjectHelper { IfcPropertySetDefinition() : Object("IfcPropertySetDefinition") {} - - }; - - // C++ wrapper for IfcPoint - struct IfcPoint : IfcGeometricRepresentationItem, ObjectHelper { IfcPoint() : Object("IfcPoint") {} - - }; - - // C++ wrapper for IfcCartesianPoint - struct IfcCartesianPoint : IfcPoint, ObjectHelper { IfcCartesianPoint() : Object("IfcCartesianPoint") {} - ListOf< IfcLengthMeasure, 1, 3 >::Out Coordinates; - }; - - // C++ wrapper for IfcFaceBound - struct IfcFaceBound : IfcTopologicalRepresentationItem, ObjectHelper { IfcFaceBound() : Object("IfcFaceBound") {} - Lazy< IfcLoop > Bound; - BOOLEAN::Out Orientation; - }; - - // C++ wrapper for IfcEdgeCurve - struct IfcEdgeCurve : IfcEdge, ObjectHelper { IfcEdgeCurve() : Object("IfcEdgeCurve") {} - Lazy< IfcCurve > EdgeGeometry; - BOOLEAN::Out SameSense; - }; - - // C++ wrapper for IfcOneDirectionRepeatFactor - struct IfcOneDirectionRepeatFactor : IfcGeometricRepresentationItem, ObjectHelper { IfcOneDirectionRepeatFactor() : Object("IfcOneDirectionRepeatFactor") {} - Lazy< IfcVector > RepeatFactor; - }; - - // C++ wrapper for IfcTwoDirectionRepeatFactor - struct IfcTwoDirectionRepeatFactor : IfcOneDirectionRepeatFactor, ObjectHelper { IfcTwoDirectionRepeatFactor() : Object("IfcTwoDirectionRepeatFactor") {} - Lazy< IfcVector > SecondRepeatFactor; - }; - - // C++ wrapper for IfcLightSource - struct IfcLightSource : IfcGeometricRepresentationItem, ObjectHelper { IfcLightSource() : Object("IfcLightSource") {} - Maybe< IfcLabel::Out > Name; - Lazy< IfcColourRgb > LightColour; - Maybe< IfcNormalisedRatioMeasure::Out > AmbientIntensity; - Maybe< IfcNormalisedRatioMeasure::Out > Intensity; - }; - - // C++ wrapper for IfcLightSourceAmbient - struct IfcLightSourceAmbient : IfcLightSource, ObjectHelper { IfcLightSourceAmbient() : Object("IfcLightSourceAmbient") {} - - }; - - // C++ wrapper for IfcPlacement - struct IfcPlacement : IfcGeometricRepresentationItem, ObjectHelper { IfcPlacement() : Object("IfcPlacement") {} - Lazy< IfcCartesianPoint > Location; - }; - - // C++ wrapper for IfcAxis1Placement - struct IfcAxis1Placement : IfcPlacement, ObjectHelper { IfcAxis1Placement() : Object("IfcAxis1Placement") {} - Maybe< Lazy< IfcDirection > > Axis; - }; - - // C++ wrapper for IfcAnnotationSurfaceOccurrence - struct IfcAnnotationSurfaceOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSurfaceOccurrence() : Object("IfcAnnotationSurfaceOccurrence") {} - - }; - // C++ wrapper for IfcFlowControllerType struct IfcFlowControllerType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowControllerType() : Object("IfcFlowControllerType") {} }; - // C++ wrapper for IfcFlowMeterType - struct IfcFlowMeterType : IfcFlowControllerType, ObjectHelper { IfcFlowMeterType() : Object("IfcFlowMeterType") {} - IfcFlowMeterTypeEnum::Out PredefinedType; + // C++ wrapper for IfcAirTerminalBoxType + struct IfcAirTerminalBoxType : IfcFlowControllerType, ObjectHelper { IfcAirTerminalBoxType() : Object("IfcAirTerminalBoxType") {} + IfcAirTerminalBoxTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcAnnotationCurveOccurrence - struct IfcAnnotationCurveOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationCurveOccurrence() : Object("IfcAnnotationCurveOccurrence") {} + // C++ wrapper for IfcFlowTerminalType + struct IfcFlowTerminalType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTerminalType() : Object("IfcFlowTerminalType") {} }; - // C++ wrapper for IfcProfileDef - struct IfcProfileDef : ObjectHelper { IfcProfileDef() : Object("IfcProfileDef") {} - IfcProfileTypeEnum::Out ProfileType; - Maybe< IfcLabel::Out > ProfileName; + // C++ wrapper for IfcAirTerminalType + struct IfcAirTerminalType : IfcFlowTerminalType, ObjectHelper { IfcAirTerminalType() : Object("IfcAirTerminalType") {} + IfcAirTerminalTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcCompositeProfileDef - struct IfcCompositeProfileDef : IfcProfileDef, ObjectHelper { IfcCompositeProfileDef() : Object("IfcCompositeProfileDef") {} - ListOf< Lazy< IfcProfileDef >, 2, 0 > Profiles; - Maybe< IfcLabel::Out > Label; - }; + // C++ wrapper for IfcEnergyConversionDeviceType + struct IfcEnergyConversionDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcEnergyConversionDeviceType() : Object("IfcEnergyConversionDeviceType") {} - // C++ wrapper for IfcSubedge - struct IfcSubedge : IfcEdge, ObjectHelper { IfcSubedge() : Object("IfcSubedge") {} - Lazy< IfcEdge > ParentEdge; - }; - - // C++ wrapper for IfcFlowStorageDeviceType - struct IfcFlowStorageDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowStorageDeviceType() : Object("IfcFlowStorageDeviceType") {} - - }; - - // C++ wrapper for IfcTankType - struct IfcTankType : IfcFlowStorageDeviceType, ObjectHelper { IfcTankType() : Object("IfcTankType") {} - IfcTankTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcBuildingElementComponent - struct IfcBuildingElementComponent : IfcBuildingElement, ObjectHelper { IfcBuildingElementComponent() : Object("IfcBuildingElementComponent") {} - - }; - - // C++ wrapper for IfcBuildingElementPart - struct IfcBuildingElementPart : IfcBuildingElementComponent, ObjectHelper { IfcBuildingElementPart() : Object("IfcBuildingElementPart") {} - - }; - - // C++ wrapper for IfcRepresentation - struct IfcRepresentation : ObjectHelper { IfcRepresentation() : Object("IfcRepresentation") {} - Lazy< IfcRepresentationContext > ContextOfItems; - Maybe< IfcLabel::Out > RepresentationIdentifier; - Maybe< IfcLabel::Out > RepresentationType; - ListOf< Lazy< IfcRepresentationItem >, 1, 0 > Items; - }; - - // C++ wrapper for IfcShapeModel - struct IfcShapeModel : IfcRepresentation, ObjectHelper { IfcShapeModel() : Object("IfcShapeModel") {} - - }; - - // C++ wrapper for IfcShapeRepresentation - struct IfcShapeRepresentation : IfcShapeModel, ObjectHelper { IfcShapeRepresentation() : Object("IfcShapeRepresentation") {} - - }; - - // C++ wrapper for IfcRailing - struct IfcRailing : IfcBuildingElement, ObjectHelper { IfcRailing() : Object("IfcRailing") {} - Maybe< IfcRailingTypeEnum::Out > PredefinedType; - }; - - // C++ wrapper for IfcStyleModel - struct IfcStyleModel : IfcRepresentation, ObjectHelper { IfcStyleModel() : Object("IfcStyleModel") {} - - }; - - // C++ wrapper for IfcStyledRepresentation - struct IfcStyledRepresentation : IfcStyleModel, ObjectHelper { IfcStyledRepresentation() : Object("IfcStyledRepresentation") {} - - }; - - // C++ wrapper for IfcColourRgb - struct IfcColourRgb : IfcColourSpecification, ObjectHelper { IfcColourRgb() : Object("IfcColourRgb") {} - IfcNormalisedRatioMeasure::Out Red; - IfcNormalisedRatioMeasure::Out Green; - IfcNormalisedRatioMeasure::Out Blue; - }; - - // C++ wrapper for IfcElementComponentType - struct IfcElementComponentType : IfcElementType, ObjectHelper { IfcElementComponentType() : Object("IfcElementComponentType") {} - - }; - - // C++ wrapper for IfcDiscreteAccessoryType - struct IfcDiscreteAccessoryType : IfcElementComponentType, ObjectHelper { IfcDiscreteAccessoryType() : Object("IfcDiscreteAccessoryType") {} - - }; - - // C++ wrapper for IfcVibrationIsolatorType - struct IfcVibrationIsolatorType : IfcDiscreteAccessoryType, ObjectHelper { IfcVibrationIsolatorType() : Object("IfcVibrationIsolatorType") {} - IfcVibrationIsolatorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProcess - struct IfcProcess : IfcObject, ObjectHelper { IfcProcess() : Object("IfcProcess") {} - - }; - - // C++ wrapper for IfcProcedure - struct IfcProcedure : IfcProcess, ObjectHelper { IfcProcedure() : Object("IfcProcedure") {} - IfcIdentifier::Out ProcedureID; - IfcProcedureTypeEnum::Out ProcedureType; - Maybe< IfcLabel::Out > UserDefinedProcedureType; - }; - - // C++ wrapper for IfcFeatureElementAddition - struct IfcFeatureElementAddition : IfcFeatureElement, ObjectHelper { IfcFeatureElementAddition() : Object("IfcFeatureElementAddition") {} - - }; - - // C++ wrapper for IfcEdgeFeature - struct IfcEdgeFeature : IfcFeatureElementSubtraction, ObjectHelper { IfcEdgeFeature() : Object("IfcEdgeFeature") {} - Maybe< IfcPositiveLengthMeasure::Out > FeatureLength; - }; - - // C++ wrapper for IfcTrimmedCurve - struct IfcTrimmedCurve : IfcBoundedCurve, ObjectHelper { IfcTrimmedCurve() : Object("IfcTrimmedCurve") {} - Lazy< IfcCurve > BasisCurve; - ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim1; - ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim2; - BOOLEAN::Out SenseAgreement; - IfcTrimmingPreference::Out MasterRepresentation; - }; - - // C++ wrapper for IfcTextLiteral - struct IfcTextLiteral : IfcGeometricRepresentationItem, ObjectHelper { IfcTextLiteral() : Object("IfcTextLiteral") {} - IfcPresentableText::Out Literal; - IfcAxis2Placement::Out Placement; - IfcTextPath::Out Path; - }; - - // C++ wrapper for IfcParameterizedProfileDef - struct IfcParameterizedProfileDef : IfcProfileDef, ObjectHelper { IfcParameterizedProfileDef() : Object("IfcParameterizedProfileDef") {} - Lazy< IfcAxis2Placement2D > Position; - }; - - // C++ wrapper for IfcCraneRailAShapeProfileDef - struct IfcCraneRailAShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCraneRailAShapeProfileDef() : Object("IfcCraneRailAShapeProfileDef") {} - IfcPositiveLengthMeasure::Out OverallHeight; - IfcPositiveLengthMeasure::Out BaseWidth2; - Maybe< IfcPositiveLengthMeasure::Out > Radius; - IfcPositiveLengthMeasure::Out HeadWidth; - IfcPositiveLengthMeasure::Out HeadDepth2; - IfcPositiveLengthMeasure::Out HeadDepth3; - IfcPositiveLengthMeasure::Out WebThickness; - IfcPositiveLengthMeasure::Out BaseWidth4; - IfcPositiveLengthMeasure::Out BaseDepth1; - IfcPositiveLengthMeasure::Out BaseDepth2; - IfcPositiveLengthMeasure::Out BaseDepth3; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; - }; - - // C++ wrapper for IfcElementComponent - struct IfcElementComponent : IfcElement, ObjectHelper { IfcElementComponent() : Object("IfcElementComponent") {} - - }; - - // C++ wrapper for IfcCsgPrimitive3D - struct IfcCsgPrimitive3D : IfcGeometricRepresentationItem, ObjectHelper { IfcCsgPrimitive3D() : Object("IfcCsgPrimitive3D") {} - Lazy< IfcAxis2Placement3D > Position; - }; - - // C++ wrapper for IfcBlock - struct IfcBlock : IfcCsgPrimitive3D, ObjectHelper { IfcBlock() : Object("IfcBlock") {} - IfcPositiveLengthMeasure::Out XLength; - IfcPositiveLengthMeasure::Out YLength; - IfcPositiveLengthMeasure::Out ZLength; - }; - - // C++ wrapper for IfcBuildingElementType - struct IfcBuildingElementType : IfcElementType, ObjectHelper { IfcBuildingElementType() : Object("IfcBuildingElementType") {} - - }; - - // C++ wrapper for IfcRailingType - struct IfcRailingType : IfcBuildingElementType, ObjectHelper { IfcRailingType() : Object("IfcRailingType") {} - IfcRailingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcStructuralPointConnection - struct IfcStructuralPointConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralPointConnection() : Object("IfcStructuralPointConnection") {} - - }; - - // C++ wrapper for IfcFlowMovingDeviceType - struct IfcFlowMovingDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowMovingDeviceType() : Object("IfcFlowMovingDeviceType") {} - - }; - - // C++ wrapper for IfcPumpType - struct IfcPumpType : IfcFlowMovingDeviceType, ObjectHelper { IfcPumpType() : Object("IfcPumpType") {} - IfcPumpTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcStructuralCurveMember - struct IfcStructuralCurveMember : IfcStructuralMember, ObjectHelper { IfcStructuralCurveMember() : Object("IfcStructuralCurveMember") {} - IfcStructuralCurveTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcStructuralCurveMemberVarying - struct IfcStructuralCurveMemberVarying : IfcStructuralCurveMember, ObjectHelper { IfcStructuralCurveMemberVarying() : Object("IfcStructuralCurveMemberVarying") {} - - }; - - // C++ wrapper for IfcReinforcingElement - struct IfcReinforcingElement : IfcBuildingElementComponent, ObjectHelper { IfcReinforcingElement() : Object("IfcReinforcingElement") {} - Maybe< IfcLabel::Out > SteelGrade; - }; - - // C++ wrapper for IfcReinforcingMesh - struct IfcReinforcingMesh : IfcReinforcingElement, ObjectHelper { IfcReinforcingMesh() : Object("IfcReinforcingMesh") {} - Maybe< IfcPositiveLengthMeasure::Out > MeshLength; - Maybe< IfcPositiveLengthMeasure::Out > MeshWidth; - IfcPositiveLengthMeasure::Out LongitudinalBarNominalDiameter; - IfcPositiveLengthMeasure::Out TransverseBarNominalDiameter; - IfcAreaMeasure::Out LongitudinalBarCrossSectionArea; - IfcAreaMeasure::Out TransverseBarCrossSectionArea; - IfcPositiveLengthMeasure::Out LongitudinalBarSpacing; - IfcPositiveLengthMeasure::Out TransverseBarSpacing; - }; - - // C++ wrapper for IfcPlanarExtent - struct IfcPlanarExtent : IfcGeometricRepresentationItem, ObjectHelper { IfcPlanarExtent() : Object("IfcPlanarExtent") {} - IfcLengthMeasure::Out SizeInX; - IfcLengthMeasure::Out SizeInY; - }; - - // C++ wrapper for IfcPlanarBox - struct IfcPlanarBox : IfcPlanarExtent, ObjectHelper { IfcPlanarBox() : Object("IfcPlanarBox") {} - IfcAxis2Placement::Out Placement; - }; - - // C++ wrapper for IfcCooledBeamType - struct IfcCooledBeamType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCooledBeamType() : Object("IfcCooledBeamType") {} - IfcCooledBeamTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProjectOrderRecord - struct IfcProjectOrderRecord : IfcControl, ObjectHelper { IfcProjectOrderRecord() : Object("IfcProjectOrderRecord") {} - ListOf< Lazy< NotImplemented >, 1, 0 > Records; - IfcProjectOrderRecordTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPointOnSurface - struct IfcPointOnSurface : IfcPoint, ObjectHelper { IfcPointOnSurface() : Object("IfcPointOnSurface") {} - Lazy< IfcSurface > BasisSurface; - IfcParameterValue::Out PointParameterU; - IfcParameterValue::Out PointParameterV; - }; - - // C++ wrapper for IfcPointOnCurve - struct IfcPointOnCurve : IfcPoint, ObjectHelper { IfcPointOnCurve() : Object("IfcPointOnCurve") {} - Lazy< IfcCurve > BasisCurve; - IfcParameterValue::Out PointParameter; - }; - - // C++ wrapper for IfcRelContainedInSpatialStructure - struct IfcRelContainedInSpatialStructure : IfcRelConnects, ObjectHelper { IfcRelContainedInSpatialStructure() : Object("IfcRelContainedInSpatialStructure") {} - ListOf< Lazy< IfcProduct >, 1, 0 > RelatedElements; - Lazy< IfcSpatialStructureElement > RelatingStructure; - }; - - // C++ wrapper for IfcSimpleProperty - struct IfcSimpleProperty : IfcProperty, ObjectHelper { IfcSimpleProperty() : Object("IfcSimpleProperty") {} - - }; - - // C++ wrapper for IfcPropertyListValue - struct IfcPropertyListValue : IfcSimpleProperty, ObjectHelper { IfcPropertyListValue() : Object("IfcPropertyListValue") {} - ListOf< IfcValue, 1, 0 >::Out ListValues; - Maybe< IfcUnit::Out > Unit; - }; - - // C++ wrapper for IfcSpatialStructureElement - struct IfcSpatialStructureElement : IfcProduct, ObjectHelper { IfcSpatialStructureElement() : Object("IfcSpatialStructureElement") {} - Maybe< IfcLabel::Out > LongName; - IfcElementCompositionEnum::Out CompositionType; - }; - - // C++ wrapper for IfcBuildingStorey - struct IfcBuildingStorey : IfcSpatialStructureElement, ObjectHelper { IfcBuildingStorey() : Object("IfcBuildingStorey") {} - Maybe< IfcLengthMeasure::Out > Elevation; - }; - - // C++ wrapper for IfcUnitaryEquipmentType - struct IfcUnitaryEquipmentType : IfcEnergyConversionDeviceType, ObjectHelper { IfcUnitaryEquipmentType() : Object("IfcUnitaryEquipmentType") {} - IfcUnitaryEquipmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcOutletType - struct IfcOutletType : IfcFlowTerminalType, ObjectHelper { IfcOutletType() : Object("IfcOutletType") {} - IfcOutletTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFastenerType - struct IfcFastenerType : IfcElementComponentType, ObjectHelper { IfcFastenerType() : Object("IfcFastenerType") {} - - }; - - // C++ wrapper for IfcGroup - struct IfcGroup : IfcObject, ObjectHelper { IfcGroup() : Object("IfcGroup") {} - - }; - - // C++ wrapper for IfcSystem - struct IfcSystem : IfcGroup, ObjectHelper { IfcSystem() : Object("IfcSystem") {} - - }; - - // C++ wrapper for IfcStructuralAnalysisModel - struct IfcStructuralAnalysisModel : IfcSystem, ObjectHelper { IfcStructuralAnalysisModel() : Object("IfcStructuralAnalysisModel") {} - IfcAnalysisModelTypeEnum::Out PredefinedType; - Maybe< Lazy< IfcAxis2Placement3D > > OrientationOf2DPlane; - Maybe< ListOf< Lazy< IfcStructuralLoadGroup >, 1, 0 > > LoadedBy; - Maybe< ListOf< Lazy< IfcStructuralResultGroup >, 1, 0 > > HasResults; - }; - - // C++ wrapper for IfcSlabType - struct IfcSlabType : IfcBuildingElementType, ObjectHelper { IfcSlabType() : Object("IfcSlabType") {} - IfcSlabTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDistributionElement - struct IfcDistributionElement : IfcElement, ObjectHelper { IfcDistributionElement() : Object("IfcDistributionElement") {} - - }; - - // C++ wrapper for IfcDistributionFlowElement - struct IfcDistributionFlowElement : IfcDistributionElement, ObjectHelper { IfcDistributionFlowElement() : Object("IfcDistributionFlowElement") {} - - }; - - // C++ wrapper for IfcTShapeProfileDef - struct IfcTShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTShapeProfileDef() : Object("IfcTShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - IfcPositiveLengthMeasure::Out FlangeWidth; - IfcPositiveLengthMeasure::Out WebThickness; - IfcPositiveLengthMeasure::Out FlangeThickness; - Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > FlangeEdgeRadius; - Maybe< IfcPositiveLengthMeasure::Out > WebEdgeRadius; - Maybe< IfcPlaneAngleMeasure::Out > WebSlope; - Maybe< IfcPlaneAngleMeasure::Out > FlangeSlope; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; - }; - - // C++ wrapper for IfcPolyline - struct IfcPolyline : IfcBoundedCurve, ObjectHelper { IfcPolyline() : Object("IfcPolyline") {} - ListOf< Lazy< IfcCartesianPoint >, 2, 0 > Points; - }; - - // C++ wrapper for IfcDraughtingCallout - struct IfcDraughtingCallout : IfcGeometricRepresentationItem, ObjectHelper { IfcDraughtingCallout() : Object("IfcDraughtingCallout") {} - ListOf< IfcDraughtingCalloutElement, 1, 0 >::Out Contents; - }; - - // C++ wrapper for IfcFace - struct IfcFace : IfcTopologicalRepresentationItem, ObjectHelper { IfcFace() : Object("IfcFace") {} - ListOf< Lazy< IfcFaceBound >, 1, 0 > Bounds; - }; - - // C++ wrapper for IfcStructuralSurfaceMemberVarying - struct IfcStructuralSurfaceMemberVarying : IfcStructuralSurfaceMember, ObjectHelper { IfcStructuralSurfaceMemberVarying() : Object("IfcStructuralSurfaceMemberVarying") {} - ListOf< IfcPositiveLengthMeasure, 2, 0 >::Out SubsequentThickness; - Lazy< NotImplemented > VaryingThicknessLocation; - }; - - // C++ wrapper for IfcMotorConnectionType - struct IfcMotorConnectionType : IfcEnergyConversionDeviceType, ObjectHelper { IfcMotorConnectionType() : Object("IfcMotorConnectionType") {} - IfcMotorConnectionTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcAirToAirHeatRecoveryType @@ -2182,335 +1506,14 @@ namespace IFC { IfcAirToAirHeatRecoveryTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPlateType - struct IfcPlateType : IfcBuildingElementType, ObjectHelper { IfcPlateType() : Object("IfcPlateType") {} - IfcPlateTypeEnum::Out PredefinedType; + // C++ wrapper for IfcAlarmType + struct IfcAlarmType : IfcDistributionControlElementType, ObjectHelper { IfcAlarmType() : Object("IfcAlarmType") {} + IfcAlarmTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcSolidModel - struct IfcSolidModel : IfcGeometricRepresentationItem, ObjectHelper { IfcSolidModel() : Object("IfcSolidModel") {} - - }; - - // C++ wrapper for IfcCsgSolid - struct IfcCsgSolid : IfcSolidModel, ObjectHelper { IfcCsgSolid() : Object("IfcCsgSolid") {} - IfcCsgSelect::Out TreeRootExpression; - }; - - // C++ wrapper for IfcMechanicalFastenerType - struct IfcMechanicalFastenerType : IfcFastenerType, ObjectHelper { IfcMechanicalFastenerType() : Object("IfcMechanicalFastenerType") {} - - }; - - // C++ wrapper for IfcRelDecomposes - struct IfcRelDecomposes : IfcRelationship, ObjectHelper { IfcRelDecomposes() : Object("IfcRelDecomposes") {} - Lazy< IfcObjectDefinition > RelatingObject; - ListOf< Lazy< IfcObjectDefinition >, 1, 0 > RelatedObjects; - }; - - // C++ wrapper for IfcElectricalElement - struct IfcElectricalElement : IfcElement, ObjectHelper { IfcElectricalElement() : Object("IfcElectricalElement") {} - - }; - - // C++ wrapper for IfcColumnType - struct IfcColumnType : IfcBuildingElementType, ObjectHelper { IfcColumnType() : Object("IfcColumnType") {} - IfcColumnTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRectangularPyramid - struct IfcRectangularPyramid : IfcCsgPrimitive3D, ObjectHelper { IfcRectangularPyramid() : Object("IfcRectangularPyramid") {} - IfcPositiveLengthMeasure::Out XLength; - IfcPositiveLengthMeasure::Out YLength; - IfcPositiveLengthMeasure::Out Height; - }; - - // C++ wrapper for IfcActionRequest - struct IfcActionRequest : IfcControl, ObjectHelper { IfcActionRequest() : Object("IfcActionRequest") {} - IfcIdentifier::Out RequestID; - }; - - // C++ wrapper for IfcStructuralActivity - struct IfcStructuralActivity : IfcProduct, ObjectHelper { IfcStructuralActivity() : Object("IfcStructuralActivity") {} - Lazy< NotImplemented > AppliedLoad; - IfcGlobalOrLocalEnum::Out GlobalOrLocal; - }; - - // C++ wrapper for IfcStructuralReaction - struct IfcStructuralReaction : IfcStructuralActivity, ObjectHelper { IfcStructuralReaction() : Object("IfcStructuralReaction") {} - - }; - - // C++ wrapper for IfcStructuralPointReaction - struct IfcStructuralPointReaction : IfcStructuralReaction, ObjectHelper { IfcStructuralPointReaction() : Object("IfcStructuralPointReaction") {} - - }; - - // C++ wrapper for IfcStructuralAction - struct IfcStructuralAction : IfcStructuralActivity, ObjectHelper { IfcStructuralAction() : Object("IfcStructuralAction") {} - BOOLEAN::Out DestabilizingLoad; - Maybe< Lazy< IfcStructuralReaction > > CausedBy; - }; - - // C++ wrapper for IfcStructuralLinearAction - struct IfcStructuralLinearAction : IfcStructuralAction, ObjectHelper { IfcStructuralLinearAction() : Object("IfcStructuralLinearAction") {} - IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; - }; - - // C++ wrapper for IfcStructuralLinearActionVarying - struct IfcStructuralLinearActionVarying : IfcStructuralLinearAction, ObjectHelper { IfcStructuralLinearActionVarying() : Object("IfcStructuralLinearActionVarying") {} - Lazy< NotImplemented > VaryingAppliedLoadLocation; - ListOf< Lazy< NotImplemented >, 1, 0 > SubsequentAppliedLoads; - }; - - // C++ wrapper for IfcCrewResource - struct IfcCrewResource : IfcConstructionResource, ObjectHelper { IfcCrewResource() : Object("IfcCrewResource") {} - - }; - - // C++ wrapper for IfcChamferEdgeFeature - struct IfcChamferEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcChamferEdgeFeature() : Object("IfcChamferEdgeFeature") {} - Maybe< IfcPositiveLengthMeasure::Out > Width; - Maybe< IfcPositiveLengthMeasure::Out > Height; - }; - - // C++ wrapper for IfcCompositeCurve - struct IfcCompositeCurve : IfcBoundedCurve, ObjectHelper { IfcCompositeCurve() : Object("IfcCompositeCurve") {} - ListOf< Lazy< IfcCompositeCurveSegment >, 1, 0 > Segments; - LOGICAL::Out SelfIntersect; - }; - - // C++ wrapper for Ifc2DCompositeCurve - struct Ifc2DCompositeCurve : IfcCompositeCurve, ObjectHelper { Ifc2DCompositeCurve() : Object("Ifc2DCompositeCurve") {} - - }; - - // C++ wrapper for IfcGrid - struct IfcGrid : IfcProduct, ObjectHelper { IfcGrid() : Object("IfcGrid") {} - ListOf< Lazy< NotImplemented >, 1, 0 > UAxes; - ListOf< Lazy< NotImplemented >, 1, 0 > VAxes; - Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > WAxes; - }; - - // C++ wrapper for IfcTendon - struct IfcTendon : IfcReinforcingElement, ObjectHelper { IfcTendon() : Object("IfcTendon") {} - IfcTendonTypeEnum::Out PredefinedType; - IfcPositiveLengthMeasure::Out NominalDiameter; - IfcAreaMeasure::Out CrossSectionArea; - Maybe< IfcForceMeasure::Out > TensionForce; - Maybe< IfcPressureMeasure::Out > PreStress; - Maybe< IfcNormalisedRatioMeasure::Out > FrictionCoefficient; - Maybe< IfcPositiveLengthMeasure::Out > AnchorageSlip; - Maybe< IfcPositiveLengthMeasure::Out > MinCurvatureRadius; - }; - - // C++ wrapper for IfcRectangleProfileDef - struct IfcRectangleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcRectangleProfileDef() : Object("IfcRectangleProfileDef") {} - IfcPositiveLengthMeasure::Out XDim; - IfcPositiveLengthMeasure::Out YDim; - }; - - // C++ wrapper for IfcRoundedRectangleProfileDef - struct IfcRoundedRectangleProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRoundedRectangleProfileDef() : Object("IfcRoundedRectangleProfileDef") {} - IfcPositiveLengthMeasure::Out RoundingRadius; - }; - - // C++ wrapper for IfcBeamType - struct IfcBeamType : IfcBuildingElementType, ObjectHelper { IfcBeamType() : Object("IfcBeamType") {} - IfcBeamTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLampType - struct IfcLampType : IfcFlowTerminalType, ObjectHelper { IfcLampType() : Object("IfcLampType") {} - IfcLampTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLightSourceGoniometric - struct IfcLightSourceGoniometric : IfcLightSource, ObjectHelper { IfcLightSourceGoniometric() : Object("IfcLightSourceGoniometric") {} - Lazy< IfcAxis2Placement3D > Position; - Maybe< Lazy< IfcColourRgb > > ColourAppearance; - IfcThermodynamicTemperatureMeasure::Out ColourTemperature; - IfcLuminousFluxMeasure::Out LuminousFlux; - IfcLightEmissionSourceEnum::Out LightEmissionSource; - IfcLightDistributionDataSourceSelect::Out LightDistributionDataSource; - }; - - // C++ wrapper for IfcProductRepresentation - struct IfcProductRepresentation : ObjectHelper { IfcProductRepresentation() : Object("IfcProductRepresentation") {} - Maybe< IfcLabel::Out > Name; - Maybe< IfcText::Out > Description; - ListOf< Lazy< IfcRepresentation >, 1, 0 > Representations; - }; - - // C++ wrapper for IfcMaterialDefinitionRepresentation - struct IfcMaterialDefinitionRepresentation : IfcProductRepresentation, ObjectHelper { IfcMaterialDefinitionRepresentation() : Object("IfcMaterialDefinitionRepresentation") {} - Lazy< NotImplemented > RepresentedMaterial; - }; - - // C++ wrapper for IfcPermit - struct IfcPermit : IfcControl, ObjectHelper { IfcPermit() : Object("IfcPermit") {} - IfcIdentifier::Out PermitID; - }; - - // C++ wrapper for IfcContextDependentUnit - struct IfcContextDependentUnit : IfcNamedUnit, ObjectHelper { IfcContextDependentUnit() : Object("IfcContextDependentUnit") {} - IfcLabel::Out Name; - }; - - // C++ wrapper for IfcFlowMovingDevice - struct IfcFlowMovingDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowMovingDevice() : Object("IfcFlowMovingDevice") {} - - }; - - // C++ wrapper for IfcColumn - struct IfcColumn : IfcBuildingElement, ObjectHelper { IfcColumn() : Object("IfcColumn") {} - - }; - - // C++ wrapper for IfcDistributionControlElement - struct IfcDistributionControlElement : IfcDistributionElement, ObjectHelper { IfcDistributionControlElement() : Object("IfcDistributionControlElement") {} - Maybe< IfcIdentifier::Out > ControlElementId; - }; - - // C++ wrapper for IfcProtectiveDeviceType - struct IfcProtectiveDeviceType : IfcFlowControllerType, ObjectHelper { IfcProtectiveDeviceType() : Object("IfcProtectiveDeviceType") {} - IfcProtectiveDeviceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowSegment - struct IfcFlowSegment : IfcDistributionFlowElement, ObjectHelper { IfcFlowSegment() : Object("IfcFlowSegment") {} - - }; - - // C++ wrapper for IfcCompressorType - struct IfcCompressorType : IfcFlowMovingDeviceType, ObjectHelper { IfcCompressorType() : Object("IfcCompressorType") {} - IfcCompressorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCShapeProfileDef - struct IfcCShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCShapeProfileDef() : Object("IfcCShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - IfcPositiveLengthMeasure::Out Width; - IfcPositiveLengthMeasure::Out WallThickness; - IfcPositiveLengthMeasure::Out Girth; - Maybe< IfcPositiveLengthMeasure::Out > InternalFilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; - }; - - // C++ wrapper for IfcTrapeziumProfileDef - struct IfcTrapeziumProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTrapeziumProfileDef() : Object("IfcTrapeziumProfileDef") {} - IfcPositiveLengthMeasure::Out BottomXDim; - IfcPositiveLengthMeasure::Out TopXDim; - IfcPositiveLengthMeasure::Out YDim; - IfcLengthMeasure::Out TopXOffset; - }; - - // C++ wrapper for IfcRelDefines - struct IfcRelDefines : IfcRelationship, ObjectHelper { IfcRelDefines() : Object("IfcRelDefines") {} - ListOf< Lazy< IfcObject >, 1, 0 > RelatedObjects; - }; - - // C++ wrapper for IfcTask - struct IfcTask : IfcProcess, ObjectHelper { IfcTask() : Object("IfcTask") {} - IfcIdentifier::Out TaskId; - Maybe< IfcLabel::Out > Status; - Maybe< IfcLabel::Out > WorkMethod; - BOOLEAN::Out IsMilestone; - Maybe< INTEGER::Out > Priority; - }; - - // C++ wrapper for IfcMove - struct IfcMove : IfcTask, ObjectHelper { IfcMove() : Object("IfcMove") {} - Lazy< IfcSpatialStructureElement > MoveFrom; - Lazy< IfcSpatialStructureElement > MoveTo; - Maybe< ListOf< IfcText, 1, 0 >::Out > PunchList; - }; - - // C++ wrapper for IfcLightSourceDirectional - struct IfcLightSourceDirectional : IfcLightSource, ObjectHelper { IfcLightSourceDirectional() : Object("IfcLightSourceDirectional") {} - Lazy< IfcDirection > Orientation; - }; - - // C++ wrapper for IfcCondenserType - struct IfcCondenserType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCondenserType() : Object("IfcCondenserType") {} - IfcCondenserTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcConic - struct IfcConic : IfcCurve, ObjectHelper { IfcConic() : Object("IfcConic") {} - IfcAxis2Placement::Out Position; - }; - - // C++ wrapper for IfcEllipse - struct IfcEllipse : IfcConic, ObjectHelper { IfcEllipse() : Object("IfcEllipse") {} - IfcPositiveLengthMeasure::Out SemiAxis1; - IfcPositiveLengthMeasure::Out SemiAxis2; - }; - - // C++ wrapper for IfcDoorStyle - struct IfcDoorStyle : IfcTypeProduct, ObjectHelper { IfcDoorStyle() : Object("IfcDoorStyle") {} - IfcDoorStyleOperationEnum::Out OperationType; - IfcDoorStyleConstructionEnum::Out ConstructionType; - BOOLEAN::Out ParameterTakesPrecedence; - BOOLEAN::Out Sizeable; - }; - - // C++ wrapper for IfcDistributionControlElementType - struct IfcDistributionControlElementType : IfcDistributionElementType, ObjectHelper { IfcDistributionControlElementType() : Object("IfcDistributionControlElementType") {} - - }; - - // C++ wrapper for IfcSensorType - struct IfcSensorType : IfcDistributionControlElementType, ObjectHelper { IfcSensorType() : Object("IfcSensorType") {} - IfcSensorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcAnnotationFillAreaOccurrence - struct IfcAnnotationFillAreaOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationFillAreaOccurrence() : Object("IfcAnnotationFillAreaOccurrence") {} - Maybe< Lazy< IfcPoint > > FillStyleTarget; - Maybe< IfcGlobalOrLocalEnum::Out > GlobalOrLocal; - }; - - // C++ wrapper for IfcWall - struct IfcWall : IfcBuildingElement, ObjectHelper { IfcWall() : Object("IfcWall") {} - - }; - - // C++ wrapper for IfcFurnishingElementType - struct IfcFurnishingElementType : IfcElementType, ObjectHelper { IfcFurnishingElementType() : Object("IfcFurnishingElementType") {} - - }; - - // C++ wrapper for IfcFurnitureType - struct IfcFurnitureType : IfcFurnishingElementType, ObjectHelper { IfcFurnitureType() : Object("IfcFurnitureType") {} - IfcAssemblyPlaceEnum::Out AssemblyPlace; - }; - - // C++ wrapper for IfcControllerType - struct IfcControllerType : IfcDistributionControlElementType, ObjectHelper { IfcControllerType() : Object("IfcControllerType") {} - IfcControllerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowFitting - struct IfcFlowFitting : IfcDistributionFlowElement, ObjectHelper { IfcFlowFitting() : Object("IfcFlowFitting") {} - - }; - - // C++ wrapper for IfcRepresentationContext - struct IfcRepresentationContext : ObjectHelper { IfcRepresentationContext() : Object("IfcRepresentationContext") {} - Maybe< IfcLabel::Out > ContextIdentifier; - Maybe< IfcLabel::Out > ContextType; - }; - - // C++ wrapper for IfcRepresentationMap - struct IfcRepresentationMap : ObjectHelper { IfcRepresentationMap() : Object("IfcRepresentationMap") {} - IfcAxis2Placement::Out MappingOrigin; - Lazy< IfcRepresentation > MappedRepresentation; - }; - - // C++ wrapper for IfcDirection - struct IfcDirection : IfcGeometricRepresentationItem, ObjectHelper { IfcDirection() : Object("IfcDirection") {} - ListOf< REAL, 2, 3 >::Out DirectionRatios; + // C++ wrapper for IfcDraughtingCallout + struct IfcDraughtingCallout : IfcGeometricRepresentationItem, ObjectHelper { IfcDraughtingCallout() : Object("IfcDraughtingCallout") {} + ListOf< IfcDraughtingCalloutElement, 1, 0 >::Out Contents; }; // C++ wrapper for IfcDimensionCurveDirectedCallout @@ -2523,99 +1526,31 @@ namespace IFC { }; - // C++ wrapper for IfcWorkControl - struct IfcWorkControl : IfcControl, ObjectHelper { IfcWorkControl() : Object("IfcWorkControl") {} - IfcIdentifier::Out Identifier; - IfcDateTimeSelect::Out CreationDate; - Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > Creators; - Maybe< IfcLabel::Out > Purpose; - Maybe< IfcTimeMeasure::Out > Duration; - Maybe< IfcTimeMeasure::Out > TotalFloat; - IfcDateTimeSelect::Out StartTime; - Maybe< IfcDateTimeSelect::Out > FinishTime; - Maybe< IfcWorkControlTypeEnum::Out > WorkControlType; - Maybe< IfcLabel::Out > UserDefinedControlType; + // C++ wrapper for IfcProduct + struct IfcProduct : IfcObject, ObjectHelper { IfcProduct() : Object("IfcProduct") {} + Maybe< Lazy< IfcObjectPlacement > > ObjectPlacement; + Maybe< Lazy< IfcProductRepresentation > > Representation; }; - // C++ wrapper for IfcWorkPlan - struct IfcWorkPlan : IfcWorkControl, ObjectHelper { IfcWorkPlan() : Object("IfcWorkPlan") {} + // C++ wrapper for IfcAnnotation + struct IfcAnnotation : IfcProduct, ObjectHelper { IfcAnnotation() : Object("IfcAnnotation") {} }; - // C++ wrapper for IfcSpatialStructureElementType - struct IfcSpatialStructureElementType : IfcElementType, ObjectHelper { IfcSpatialStructureElementType() : Object("IfcSpatialStructureElementType") {} + // C++ wrapper for IfcStyledItem + struct IfcStyledItem : IfcRepresentationItem, ObjectHelper { IfcStyledItem() : Object("IfcStyledItem") {} + Maybe< Lazy< IfcRepresentationItem > > Item; + ListOf< Lazy< IfcPresentationStyleAssignment >, 1, 0 > Styles; + Maybe< IfcLabel::Out > Name; + }; + + // C++ wrapper for IfcAnnotationOccurrence + struct IfcAnnotationOccurrence : IfcStyledItem, ObjectHelper { IfcAnnotationOccurrence() : Object("IfcAnnotationOccurrence") {} }; - // C++ wrapper for IfcSpaceType - struct IfcSpaceType : IfcSpatialStructureElementType, ObjectHelper { IfcSpaceType() : Object("IfcSpaceType") {} - IfcSpaceTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPort - struct IfcPort : IfcProduct, ObjectHelper { IfcPort() : Object("IfcPort") {} - - }; - - // C++ wrapper for IfcDistributionPort - struct IfcDistributionPort : IfcPort, ObjectHelper { IfcDistributionPort() : Object("IfcDistributionPort") {} - Maybe< IfcFlowDirectionEnum::Out > FlowDirection; - }; - - // C++ wrapper for IfcOrderAction - struct IfcOrderAction : IfcTask, ObjectHelper { IfcOrderAction() : Object("IfcOrderAction") {} - IfcIdentifier::Out ActionID; - }; - - // C++ wrapper for IfcBeam - struct IfcBeam : IfcBuildingElement, ObjectHelper { IfcBeam() : Object("IfcBeam") {} - - }; - - // C++ wrapper for IfcManifoldSolidBrep - struct IfcManifoldSolidBrep : IfcSolidModel, ObjectHelper { IfcManifoldSolidBrep() : Object("IfcManifoldSolidBrep") {} - Lazy< IfcClosedShell > Outer; - }; - - // C++ wrapper for IfcFacetedBrep - struct IfcFacetedBrep : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrep() : Object("IfcFacetedBrep") {} - - }; - - // C++ wrapper for IfcSurfaceStyleWithTextures - struct IfcSurfaceStyleWithTextures : ObjectHelper { IfcSurfaceStyleWithTextures() : Object("IfcSurfaceStyleWithTextures") {} - ListOf< Lazy< NotImplemented >, 1, 0 > Textures; - }; - - // C++ wrapper for IfcArbitraryClosedProfileDef - struct IfcArbitraryClosedProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryClosedProfileDef() : Object("IfcArbitraryClosedProfileDef") {} - Lazy< IfcCurve > OuterCurve; - }; - - // C++ wrapper for IfcHumidifierType - struct IfcHumidifierType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHumidifierType() : Object("IfcHumidifierType") {} - IfcHumidifierTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPolyLoop - struct IfcPolyLoop : IfcLoop, ObjectHelper { IfcPolyLoop() : Object("IfcPolyLoop") {} - ListOf< Lazy< IfcCartesianPoint >, 3, 0 > Polygon; - }; - - // C++ wrapper for IfcFlowFittingType - struct IfcFlowFittingType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowFittingType() : Object("IfcFlowFittingType") {} - - }; - - // C++ wrapper for IfcFillAreaStyleTiles - struct IfcFillAreaStyleTiles : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTiles() : Object("IfcFillAreaStyleTiles") {} - Lazy< IfcOneDirectionRepeatFactor > TilingPattern; - ListOf< IfcFillAreaStyleTileShapeSelect, 1, 0 >::Out Tiles; - IfcPositiveRatioMeasure::Out TilingScale; - }; - - // C++ wrapper for IfcVertex - struct IfcVertex : IfcTopologicalRepresentationItem, ObjectHelper { IfcVertex() : Object("IfcVertex") {} + // C++ wrapper for IfcAnnotationCurveOccurrence + struct IfcAnnotationCurveOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationCurveOccurrence() : Object("IfcAnnotationCurveOccurrence") {} }; @@ -2625,176 +1560,57 @@ namespace IFC { Maybe< ListOf< Lazy< IfcCurve >, 1, 0 > > InnerBoundaries; }; - // C++ wrapper for IfcPlate - struct IfcPlate : IfcBuildingElement, ObjectHelper { IfcPlate() : Object("IfcPlate") {} + // C++ wrapper for IfcAnnotationFillAreaOccurrence + struct IfcAnnotationFillAreaOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationFillAreaOccurrence() : Object("IfcAnnotationFillAreaOccurrence") {} + Maybe< Lazy< IfcPoint > > FillStyleTarget; + Maybe< IfcGlobalOrLocalEnum::Out > GlobalOrLocal; + }; + + // C++ wrapper for IfcAnnotationSurface + struct IfcAnnotationSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationSurface() : Object("IfcAnnotationSurface") {} + Lazy< IfcGeometricRepresentationItem > Item; + Maybe< Lazy< NotImplemented > > TextureCoordinates; + }; + + // C++ wrapper for IfcAnnotationSurfaceOccurrence + struct IfcAnnotationSurfaceOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSurfaceOccurrence() : Object("IfcAnnotationSurfaceOccurrence") {} }; - // C++ wrapper for IfcRightCircularCone - struct IfcRightCircularCone : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCone() : Object("IfcRightCircularCone") {} - IfcPositiveLengthMeasure::Out Height; - IfcPositiveLengthMeasure::Out BottomRadius; - }; - - // C++ wrapper for IfcSurface - struct IfcSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcSurface() : Object("IfcSurface") {} + // C++ wrapper for IfcAnnotationSymbolOccurrence + struct IfcAnnotationSymbolOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationSymbolOccurrence() : Object("IfcAnnotationSymbolOccurrence") {} }; - // C++ wrapper for IfcBoundedSurface - struct IfcBoundedSurface : IfcSurface, ObjectHelper { IfcBoundedSurface() : Object("IfcBoundedSurface") {} + // C++ wrapper for IfcAnnotationTextOccurrence + struct IfcAnnotationTextOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationTextOccurrence() : Object("IfcAnnotationTextOccurrence") {} }; - // C++ wrapper for IfcStructuralLoadGroup - struct IfcStructuralLoadGroup : IfcGroup, ObjectHelper { IfcStructuralLoadGroup() : Object("IfcStructuralLoadGroup") {} - IfcLoadGroupTypeEnum::Out PredefinedType; - IfcActionTypeEnum::Out ActionType; - IfcActionSourceTypeEnum::Out ActionSource; - Maybe< IfcPositiveRatioMeasure::Out > Coefficient; - Maybe< IfcLabel::Out > Purpose; + // C++ wrapper for IfcProfileDef + struct IfcProfileDef : ObjectHelper { IfcProfileDef() : Object("IfcProfileDef") {} + IfcProfileTypeEnum::Out ProfileType; + Maybe< IfcLabel::Out > ProfileName; }; - // C++ wrapper for IfcGeometricRepresentationContext - struct IfcGeometricRepresentationContext : IfcRepresentationContext, ObjectHelper { IfcGeometricRepresentationContext() : Object("IfcGeometricRepresentationContext") {} - IfcDimensionCount::Out CoordinateSpaceDimension; - Maybe< REAL::Out > Precision; - IfcAxis2Placement::Out WorldCoordinateSystem; - Maybe< Lazy< IfcDirection > > TrueNorth; + // C++ wrapper for IfcArbitraryClosedProfileDef + struct IfcArbitraryClosedProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryClosedProfileDef() : Object("IfcArbitraryClosedProfileDef") {} + Lazy< IfcCurve > OuterCurve; }; - // C++ wrapper for IfcTubeBundleType - struct IfcTubeBundleType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTubeBundleType() : Object("IfcTubeBundleType") {} - IfcTubeBundleTypeEnum::Out PredefinedType; + // C++ wrapper for IfcArbitraryOpenProfileDef + struct IfcArbitraryOpenProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryOpenProfileDef() : Object("IfcArbitraryOpenProfileDef") {} + Lazy< IfcBoundedCurve > Curve; }; - // C++ wrapper for IfcStructuralPlanarAction - struct IfcStructuralPlanarAction : IfcStructuralAction, ObjectHelper { IfcStructuralPlanarAction() : Object("IfcStructuralPlanarAction") {} - IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; + // C++ wrapper for IfcArbitraryProfileDefWithVoids + struct IfcArbitraryProfileDefWithVoids : IfcArbitraryClosedProfileDef, ObjectHelper { IfcArbitraryProfileDefWithVoids() : Object("IfcArbitraryProfileDefWithVoids") {} + ListOf< Lazy< IfcCurve >, 1, 0 > InnerCurves; }; - // C++ wrapper for IfcHeatExchangerType - struct IfcHeatExchangerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHeatExchangerType() : Object("IfcHeatExchangerType") {} - IfcHeatExchangerTypeEnum::Out PredefinedType; - }; + // C++ wrapper for IfcGroup + struct IfcGroup : IfcObject, ObjectHelper { IfcGroup() : Object("IfcGroup") {} - // C++ wrapper for IfcFaceOuterBound - struct IfcFaceOuterBound : IfcFaceBound, ObjectHelper { IfcFaceOuterBound() : Object("IfcFaceOuterBound") {} - - }; - - // C++ wrapper for IfcSphere - struct IfcSphere : IfcCsgPrimitive3D, ObjectHelper { IfcSphere() : Object("IfcSphere") {} - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcLightSourcePositional - struct IfcLightSourcePositional : IfcLightSource, ObjectHelper { IfcLightSourcePositional() : Object("IfcLightSourcePositional") {} - Lazy< IfcCartesianPoint > Position; - IfcPositiveLengthMeasure::Out Radius; - IfcReal::Out ConstantAttenuation; - IfcReal::Out DistanceAttenuation; - IfcReal::Out QuadricAttenuation; - }; - - // C++ wrapper for IfcStructuralPointAction - struct IfcStructuralPointAction : IfcStructuralAction, ObjectHelper { IfcStructuralPointAction() : Object("IfcStructuralPointAction") {} - - }; - - // C++ wrapper for IfcFlowSegmentType - struct IfcFlowSegmentType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowSegmentType() : Object("IfcFlowSegmentType") {} - - }; - - // C++ wrapper for IfcFireSuppressionTerminalType - struct IfcFireSuppressionTerminalType : IfcFlowTerminalType, ObjectHelper { IfcFireSuppressionTerminalType() : Object("IfcFireSuppressionTerminalType") {} - IfcFireSuppressionTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPropertySingleValue - struct IfcPropertySingleValue : IfcSimpleProperty, ObjectHelper { IfcPropertySingleValue() : Object("IfcPropertySingleValue") {} - Maybe< IfcValue::Out > NominalValue; - Maybe< IfcUnit::Out > Unit; - }; - - // C++ wrapper for IfcFaceBasedSurfaceModel - struct IfcFaceBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcFaceBasedSurfaceModel() : Object("IfcFaceBasedSurfaceModel") {} - ListOf< Lazy< IfcConnectedFaceSet >, 1, 0 > FbsmFaces; - }; - - // C++ wrapper for IfcAxis2Placement3D - struct IfcAxis2Placement3D : IfcPlacement, ObjectHelper { IfcAxis2Placement3D() : Object("IfcAxis2Placement3D") {} - Maybe< Lazy< IfcDirection > > Axis; - Maybe< Lazy< IfcDirection > > RefDirection; - }; - - // C++ wrapper for IfcStructuralResultGroup - struct IfcStructuralResultGroup : IfcGroup, ObjectHelper { IfcStructuralResultGroup() : Object("IfcStructuralResultGroup") {} - IfcAnalysisTheoryTypeEnum::Out TheoryType; - Maybe< Lazy< IfcStructuralLoadGroup > > ResultForLoadGroup; - BOOLEAN::Out IsLinear; - }; - - // C++ wrapper for IfcHalfSpaceSolid - struct IfcHalfSpaceSolid : IfcGeometricRepresentationItem, ObjectHelper { IfcHalfSpaceSolid() : Object("IfcHalfSpaceSolid") {} - Lazy< IfcSurface > BaseSurface; - BOOLEAN::Out AgreementFlag; - }; - - // C++ wrapper for IfcGasTerminalType - struct IfcGasTerminalType : IfcFlowTerminalType, ObjectHelper { IfcGasTerminalType() : Object("IfcGasTerminalType") {} - IfcGasTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMember - struct IfcMember : IfcBuildingElement, ObjectHelper { IfcMember() : Object("IfcMember") {} - - }; - - // C++ wrapper for IfcPropertySet - struct IfcPropertySet : IfcPropertySetDefinition, ObjectHelper { IfcPropertySet() : Object("IfcPropertySet") {} - ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; - }; - - // C++ wrapper for IfcCondition - struct IfcCondition : IfcGroup, ObjectHelper { IfcCondition() : Object("IfcCondition") {} - - }; - - // C++ wrapper for IfcPropertyEnumeratedValue - struct IfcPropertyEnumeratedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyEnumeratedValue() : Object("IfcPropertyEnumeratedValue") {} - ListOf< IfcValue, 1, 0 >::Out EnumerationValues; - Maybe< Lazy< NotImplemented > > EnumerationReference; - }; - - // C++ wrapper for IfcDistributionChamberElementType - struct IfcDistributionChamberElementType : IfcDistributionFlowElementType, ObjectHelper { IfcDistributionChamberElementType() : Object("IfcDistributionChamberElementType") {} - IfcDistributionChamberElementTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcTextLiteralWithExtent - struct IfcTextLiteralWithExtent : IfcTextLiteral, ObjectHelper { IfcTextLiteralWithExtent() : Object("IfcTextLiteralWithExtent") {} - Lazy< IfcPlanarExtent > Extent; - IfcBoxAlignment::Out BoxAlignment; - }; - - // C++ wrapper for IfcFlowController - struct IfcFlowController : IfcDistributionFlowElement, ObjectHelper { IfcFlowController() : Object("IfcFlowController") {} - - }; - - // C++ wrapper for IfcElectricDistributionPoint - struct IfcElectricDistributionPoint : IfcFlowController, ObjectHelper { IfcElectricDistributionPoint() : Object("IfcElectricDistributionPoint") {} - IfcElectricDistributionPointFunctionEnum::Out DistributionPointFunction; - Maybe< IfcLabel::Out > UserDefinedFunction; - }; - - // C++ wrapper for IfcTransportElement - struct IfcTransportElement : IfcElement, ObjectHelper { IfcTransportElement() : Object("IfcTransportElement") {} - Maybe< IfcTransportElementTypeEnum::Out > OperationType; - Maybe< IfcMassMeasure::Out > CapacityByWeight; - Maybe< IfcCountMeasure::Out > CapacityByNumber; }; // C++ wrapper for IfcAsset @@ -2810,154 +1626,9 @@ namespace IFC { Lazy< NotImplemented > DepreciatedValue; }; - // C++ wrapper for IfcSweptAreaSolid - struct IfcSweptAreaSolid : IfcSolidModel, ObjectHelper { IfcSweptAreaSolid() : Object("IfcSweptAreaSolid") {} - Lazy< IfcProfileDef > SweptArea; - Lazy< IfcAxis2Placement3D > Position; - }; - - // C++ wrapper for IfcRevolvedAreaSolid - struct IfcRevolvedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcRevolvedAreaSolid() : Object("IfcRevolvedAreaSolid") {} - Lazy< IfcAxis1Placement > Axis; - IfcPlaneAngleMeasure::Out Angle; - }; - - // C++ wrapper for IfcFlowInstrumentType - struct IfcFlowInstrumentType : IfcDistributionControlElementType, ObjectHelper { IfcFlowInstrumentType() : Object("IfcFlowInstrumentType") {} - IfcFlowInstrumentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEnergyConversionDevice - struct IfcEnergyConversionDevice : IfcDistributionFlowElement, ObjectHelper { IfcEnergyConversionDevice() : Object("IfcEnergyConversionDevice") {} - - }; - - // C++ wrapper for IfcSurfaceStyleShading - struct IfcSurfaceStyleShading : ObjectHelper { IfcSurfaceStyleShading() : Object("IfcSurfaceStyleShading") {} - Lazy< IfcColourRgb > SurfaceColour; - }; - - // C++ wrapper for IfcSurfaceStyleRendering - struct IfcSurfaceStyleRendering : IfcSurfaceStyleShading, ObjectHelper { IfcSurfaceStyleRendering() : Object("IfcSurfaceStyleRendering") {} - Maybe< IfcNormalisedRatioMeasure::Out > Transparency; - Maybe< IfcColourOrFactor::Out > DiffuseColour; - Maybe< IfcColourOrFactor::Out > TransmissionColour; - Maybe< IfcColourOrFactor::Out > DiffuseTransmissionColour; - Maybe< IfcColourOrFactor::Out > ReflectionColour; - Maybe< IfcColourOrFactor::Out > SpecularColour; - Maybe< IfcSpecularHighlightSelect::Out > SpecularHighlight; - IfcReflectanceMethodEnum::Out ReflectanceMethod; - }; - - // C++ wrapper for IfcBoilerType - struct IfcBoilerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcBoilerType() : Object("IfcBoilerType") {} - IfcBoilerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcBuildingElementProxy - struct IfcBuildingElementProxy : IfcBuildingElement, ObjectHelper { IfcBuildingElementProxy() : Object("IfcBuildingElementProxy") {} - Maybe< IfcElementCompositionEnum::Out > CompositionType; - }; - - // C++ wrapper for IfcLocalPlacement - struct IfcLocalPlacement : IfcObjectPlacement, ObjectHelper { IfcLocalPlacement() : Object("IfcLocalPlacement") {} - Maybe< Lazy< IfcObjectPlacement > > PlacementRelTo; - IfcAxis2Placement::Out RelativePlacement; - }; - - // C++ wrapper for IfcZone - struct IfcZone : IfcGroup, ObjectHelper { IfcZone() : Object("IfcZone") {} - - }; - - // C++ wrapper for IfcStair - struct IfcStair : IfcBuildingElement, ObjectHelper { IfcStair() : Object("IfcStair") {} - IfcStairTypeEnum::Out ShapeType; - }; - - // C++ wrapper for IfcWallStandardCase - struct IfcWallStandardCase : IfcWall, ObjectHelper { IfcWallStandardCase() : Object("IfcWallStandardCase") {} - - }; - - // C++ wrapper for IfcDiameterDimension - struct IfcDiameterDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcDiameterDimension() : Object("IfcDiameterDimension") {} - - }; - - // C++ wrapper for IfcDuctSegmentType - struct IfcDuctSegmentType : IfcFlowSegmentType, ObjectHelper { IfcDuctSegmentType() : Object("IfcDuctSegmentType") {} - IfcDuctSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcJunctionBoxType - struct IfcJunctionBoxType : IfcFlowFittingType, ObjectHelper { IfcJunctionBoxType() : Object("IfcJunctionBoxType") {} - IfcJunctionBoxTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCartesianTransformationOperator3DnonUniform - struct IfcCartesianTransformationOperator3DnonUniform : IfcCartesianTransformationOperator3D, ObjectHelper { IfcCartesianTransformationOperator3DnonUniform() : Object("IfcCartesianTransformationOperator3DnonUniform") {} - Maybe< REAL::Out > Scale2; - Maybe< REAL::Out > Scale3; - }; - - // C++ wrapper for IfcInventory - struct IfcInventory : IfcGroup, ObjectHelper { IfcInventory() : Object("IfcInventory") {} - IfcInventoryTypeEnum::Out InventoryType; - IfcActorSelect::Out Jurisdiction; - ListOf< Lazy< NotImplemented >, 1, 0 > ResponsiblePersons; - Lazy< NotImplemented > LastUpdateDate; - Maybe< Lazy< NotImplemented > > CurrentValue; - Maybe< Lazy< NotImplemented > > OriginalValue; - }; - - // C++ wrapper for IfcConditionCriterion - struct IfcConditionCriterion : IfcControl, ObjectHelper { IfcConditionCriterion() : Object("IfcConditionCriterion") {} - IfcConditionCriterionSelect::Out Criterion; - IfcDateTimeSelect::Out CriterionDateTime; - }; - - // C++ wrapper for IfcConnectedFaceSet - struct IfcConnectedFaceSet : IfcTopologicalRepresentationItem, ObjectHelper { IfcConnectedFaceSet() : Object("IfcConnectedFaceSet") {} - ListOf< Lazy< IfcFace >, 1, 0 > CfsFaces; - }; - - // C++ wrapper for IfcOpenShell - struct IfcOpenShell : IfcConnectedFaceSet, ObjectHelper { IfcOpenShell() : Object("IfcOpenShell") {} - - }; - - // C++ wrapper for IfcDoor - struct IfcDoor : IfcBuildingElement, ObjectHelper { IfcDoor() : Object("IfcDoor") {} - Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; - Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; - }; - - // C++ wrapper for IfcBezierCurve - struct IfcBezierCurve : IfcBSplineCurve, ObjectHelper { IfcBezierCurve() : Object("IfcBezierCurve") {} - - }; - - // C++ wrapper for IfcRationalBezierCurve - struct IfcRationalBezierCurve : IfcBezierCurve, ObjectHelper { IfcRationalBezierCurve() : Object("IfcRationalBezierCurve") {} - ListOf< REAL, 2, 0 >::Out WeightsData; - }; - - // C++ wrapper for IfcArbitraryProfileDefWithVoids - struct IfcArbitraryProfileDefWithVoids : IfcArbitraryClosedProfileDef, ObjectHelper { IfcArbitraryProfileDefWithVoids() : Object("IfcArbitraryProfileDefWithVoids") {} - ListOf< Lazy< IfcCurve >, 1, 0 > InnerCurves; - }; - - // C++ wrapper for IfcBooleanResult - struct IfcBooleanResult : IfcGeometricRepresentationItem, ObjectHelper { IfcBooleanResult() : Object("IfcBooleanResult") {} - IfcBooleanOperator::Out Operator; - IfcBooleanOperand::Out FirstOperand; - IfcBooleanOperand::Out SecondOperand; - }; - - // C++ wrapper for IfcStackTerminalType - struct IfcStackTerminalType : IfcFlowTerminalType, ObjectHelper { IfcStackTerminalType() : Object("IfcStackTerminalType") {} - IfcStackTerminalTypeEnum::Out PredefinedType; + // C++ wrapper for IfcParameterizedProfileDef + struct IfcParameterizedProfileDef : IfcProfileDef, ObjectHelper { IfcParameterizedProfileDef() : Object("IfcParameterizedProfileDef") {} + Lazy< IfcAxis2Placement2D > Position; }; // C++ wrapper for IfcIShapeProfileDef @@ -2977,9 +1648,295 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcEquipmentElement - struct IfcEquipmentElement : IfcElement, ObjectHelper { IfcEquipmentElement() : Object("IfcEquipmentElement") {} + // C++ wrapper for IfcPlacement + struct IfcPlacement : IfcGeometricRepresentationItem, ObjectHelper { IfcPlacement() : Object("IfcPlacement") {} + Lazy< IfcCartesianPoint > Location; + }; + // C++ wrapper for IfcAxis1Placement + struct IfcAxis1Placement : IfcPlacement, ObjectHelper { IfcAxis1Placement() : Object("IfcAxis1Placement") {} + Maybe< Lazy< IfcDirection > > Axis; + }; + + // C++ wrapper for IfcAxis2Placement2D + struct IfcAxis2Placement2D : IfcPlacement, ObjectHelper { IfcAxis2Placement2D() : Object("IfcAxis2Placement2D") {} + Maybe< Lazy< IfcDirection > > RefDirection; + }; + + // C++ wrapper for IfcAxis2Placement3D + struct IfcAxis2Placement3D : IfcPlacement, ObjectHelper { IfcAxis2Placement3D() : Object("IfcAxis2Placement3D") {} + Maybe< Lazy< IfcDirection > > Axis; + Maybe< Lazy< IfcDirection > > RefDirection; + }; + + // C++ wrapper for IfcBSplineCurve + struct IfcBSplineCurve : IfcBoundedCurve, ObjectHelper { IfcBSplineCurve() : Object("IfcBSplineCurve") {} + INTEGER::Out Degree; + ListOf< Lazy< IfcCartesianPoint >, 2, 0 > ControlPointsList; + IfcBSplineCurveForm::Out CurveForm; + LOGICAL::Out ClosedCurve; + LOGICAL::Out SelfIntersect; + }; + + // C++ wrapper for IfcElement + struct IfcElement : IfcProduct, ObjectHelper { IfcElement() : Object("IfcElement") {} + Maybe< IfcIdentifier::Out > Tag; + }; + + // C++ wrapper for IfcBuildingElement + struct IfcBuildingElement : IfcElement, ObjectHelper { IfcBuildingElement() : Object("IfcBuildingElement") {} + + }; + + // C++ wrapper for IfcBeam + struct IfcBeam : IfcBuildingElement, ObjectHelper { IfcBeam() : Object("IfcBeam") {} + + }; + + // C++ wrapper for IfcBuildingElementType + struct IfcBuildingElementType : IfcElementType, ObjectHelper { IfcBuildingElementType() : Object("IfcBuildingElementType") {} + + }; + + // C++ wrapper for IfcBeamType + struct IfcBeamType : IfcBuildingElementType, ObjectHelper { IfcBeamType() : Object("IfcBeamType") {} + IfcBeamTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcBezierCurve + struct IfcBezierCurve : IfcBSplineCurve, ObjectHelper { IfcBezierCurve() : Object("IfcBezierCurve") {} + + }; + + // C++ wrapper for IfcCsgPrimitive3D + struct IfcCsgPrimitive3D : IfcGeometricRepresentationItem, ObjectHelper { IfcCsgPrimitive3D() : Object("IfcCsgPrimitive3D") {} + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcBlock + struct IfcBlock : IfcCsgPrimitive3D, ObjectHelper { IfcBlock() : Object("IfcBlock") {} + IfcPositiveLengthMeasure::Out XLength; + IfcPositiveLengthMeasure::Out YLength; + IfcPositiveLengthMeasure::Out ZLength; + }; + + // C++ wrapper for IfcBoilerType + struct IfcBoilerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcBoilerType() : Object("IfcBoilerType") {} + IfcBoilerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcBooleanResult + struct IfcBooleanResult : IfcGeometricRepresentationItem, ObjectHelper { IfcBooleanResult() : Object("IfcBooleanResult") {} + IfcBooleanOperator::Out Operator; + IfcBooleanOperand::Out FirstOperand; + IfcBooleanOperand::Out SecondOperand; + }; + + // C++ wrapper for IfcBooleanClippingResult + struct IfcBooleanClippingResult : IfcBooleanResult, ObjectHelper { IfcBooleanClippingResult() : Object("IfcBooleanClippingResult") {} + + }; + + // C++ wrapper for IfcSurface + struct IfcSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcSurface() : Object("IfcSurface") {} + + }; + + // C++ wrapper for IfcBoundedSurface + struct IfcBoundedSurface : IfcSurface, ObjectHelper { IfcBoundedSurface() : Object("IfcBoundedSurface") {} + + }; + + // C++ wrapper for IfcBoundingBox + struct IfcBoundingBox : IfcGeometricRepresentationItem, ObjectHelper { IfcBoundingBox() : Object("IfcBoundingBox") {} + Lazy< IfcCartesianPoint > Corner; + IfcPositiveLengthMeasure::Out XDim; + IfcPositiveLengthMeasure::Out YDim; + IfcPositiveLengthMeasure::Out ZDim; + }; + + // C++ wrapper for IfcHalfSpaceSolid + struct IfcHalfSpaceSolid : IfcGeometricRepresentationItem, ObjectHelper { IfcHalfSpaceSolid() : Object("IfcHalfSpaceSolid") {} + Lazy< IfcSurface > BaseSurface; + BOOLEAN::Out AgreementFlag; + }; + + // C++ wrapper for IfcBoxedHalfSpace + struct IfcBoxedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcBoxedHalfSpace() : Object("IfcBoxedHalfSpace") {} + Lazy< IfcBoundingBox > Enclosure; + }; + + // C++ wrapper for IfcSpatialStructureElement + struct IfcSpatialStructureElement : IfcProduct, ObjectHelper { IfcSpatialStructureElement() : Object("IfcSpatialStructureElement") {} + Maybe< IfcLabel::Out > LongName; + IfcElementCompositionEnum::Out CompositionType; + }; + + // C++ wrapper for IfcBuilding + struct IfcBuilding : IfcSpatialStructureElement, ObjectHelper { IfcBuilding() : Object("IfcBuilding") {} + Maybe< IfcLengthMeasure::Out > ElevationOfRefHeight; + Maybe< IfcLengthMeasure::Out > ElevationOfTerrain; + Maybe< Lazy< NotImplemented > > BuildingAddress; + }; + + // C++ wrapper for IfcBuildingElementComponent + struct IfcBuildingElementComponent : IfcBuildingElement, ObjectHelper { IfcBuildingElementComponent() : Object("IfcBuildingElementComponent") {} + + }; + + // C++ wrapper for IfcBuildingElementPart + struct IfcBuildingElementPart : IfcBuildingElementComponent, ObjectHelper { IfcBuildingElementPart() : Object("IfcBuildingElementPart") {} + + }; + + // C++ wrapper for IfcBuildingElementProxy + struct IfcBuildingElementProxy : IfcBuildingElement, ObjectHelper { IfcBuildingElementProxy() : Object("IfcBuildingElementProxy") {} + Maybe< IfcElementCompositionEnum::Out > CompositionType; + }; + + // C++ wrapper for IfcBuildingElementProxyType + struct IfcBuildingElementProxyType : IfcBuildingElementType, ObjectHelper { IfcBuildingElementProxyType() : Object("IfcBuildingElementProxyType") {} + IfcBuildingElementProxyTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcBuildingStorey + struct IfcBuildingStorey : IfcSpatialStructureElement, ObjectHelper { IfcBuildingStorey() : Object("IfcBuildingStorey") {} + Maybe< IfcLengthMeasure::Out > Elevation; + }; + + // C++ wrapper for IfcCShapeProfileDef + struct IfcCShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCShapeProfileDef() : Object("IfcCShapeProfileDef") {} + IfcPositiveLengthMeasure::Out Depth; + IfcPositiveLengthMeasure::Out Width; + IfcPositiveLengthMeasure::Out WallThickness; + IfcPositiveLengthMeasure::Out Girth; + Maybe< IfcPositiveLengthMeasure::Out > InternalFilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; + }; + + // C++ wrapper for IfcFlowFittingType + struct IfcFlowFittingType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowFittingType() : Object("IfcFlowFittingType") {} + + }; + + // C++ wrapper for IfcCableCarrierFittingType + struct IfcCableCarrierFittingType : IfcFlowFittingType, ObjectHelper { IfcCableCarrierFittingType() : Object("IfcCableCarrierFittingType") {} + IfcCableCarrierFittingTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowSegmentType + struct IfcFlowSegmentType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowSegmentType() : Object("IfcFlowSegmentType") {} + + }; + + // C++ wrapper for IfcCableCarrierSegmentType + struct IfcCableCarrierSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableCarrierSegmentType() : Object("IfcCableCarrierSegmentType") {} + IfcCableCarrierSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCableSegmentType + struct IfcCableSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableSegmentType() : Object("IfcCableSegmentType") {} + IfcCableSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPoint + struct IfcPoint : IfcGeometricRepresentationItem, ObjectHelper { IfcPoint() : Object("IfcPoint") {} + + }; + + // C++ wrapper for IfcCartesianPoint + struct IfcCartesianPoint : IfcPoint, ObjectHelper { IfcCartesianPoint() : Object("IfcCartesianPoint") {} + ListOf< IfcLengthMeasure, 1, 3 >::Out Coordinates; + }; + + // C++ wrapper for IfcCartesianTransformationOperator + struct IfcCartesianTransformationOperator : IfcGeometricRepresentationItem, ObjectHelper { IfcCartesianTransformationOperator() : Object("IfcCartesianTransformationOperator") {} + Maybe< Lazy< IfcDirection > > Axis1; + Maybe< Lazy< IfcDirection > > Axis2; + Lazy< IfcCartesianPoint > LocalOrigin; + Maybe< REAL::Out > Scale; + }; + + // C++ wrapper for IfcCartesianTransformationOperator2D + struct IfcCartesianTransformationOperator2D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator2D() : Object("IfcCartesianTransformationOperator2D") {} + + }; + + // C++ wrapper for IfcCartesianTransformationOperator2DnonUniform + struct IfcCartesianTransformationOperator2DnonUniform : IfcCartesianTransformationOperator2D, ObjectHelper { IfcCartesianTransformationOperator2DnonUniform() : Object("IfcCartesianTransformationOperator2DnonUniform") {} + Maybe< REAL::Out > Scale2; + }; + + // C++ wrapper for IfcCartesianTransformationOperator3D + struct IfcCartesianTransformationOperator3D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator3D() : Object("IfcCartesianTransformationOperator3D") {} + Maybe< Lazy< IfcDirection > > Axis3; + }; + + // C++ wrapper for IfcCartesianTransformationOperator3DnonUniform + struct IfcCartesianTransformationOperator3DnonUniform : IfcCartesianTransformationOperator3D, ObjectHelper { IfcCartesianTransformationOperator3DnonUniform() : Object("IfcCartesianTransformationOperator3DnonUniform") {} + Maybe< REAL::Out > Scale2; + Maybe< REAL::Out > Scale3; + }; + + // C++ wrapper for IfcCenterLineProfileDef + struct IfcCenterLineProfileDef : IfcArbitraryOpenProfileDef, ObjectHelper { IfcCenterLineProfileDef() : Object("IfcCenterLineProfileDef") {} + IfcPositiveLengthMeasure::Out Thickness; + }; + + // C++ wrapper for IfcFeatureElement + struct IfcFeatureElement : IfcElement, ObjectHelper { IfcFeatureElement() : Object("IfcFeatureElement") {} + + }; + + // C++ wrapper for IfcFeatureElementSubtraction + struct IfcFeatureElementSubtraction : IfcFeatureElement, ObjectHelper { IfcFeatureElementSubtraction() : Object("IfcFeatureElementSubtraction") {} + + }; + + // C++ wrapper for IfcEdgeFeature + struct IfcEdgeFeature : IfcFeatureElementSubtraction, ObjectHelper { IfcEdgeFeature() : Object("IfcEdgeFeature") {} + Maybe< IfcPositiveLengthMeasure::Out > FeatureLength; + }; + + // C++ wrapper for IfcChamferEdgeFeature + struct IfcChamferEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcChamferEdgeFeature() : Object("IfcChamferEdgeFeature") {} + Maybe< IfcPositiveLengthMeasure::Out > Width; + Maybe< IfcPositiveLengthMeasure::Out > Height; + }; + + // C++ wrapper for IfcChillerType + struct IfcChillerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcChillerType() : Object("IfcChillerType") {} + IfcChillerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcConic + struct IfcConic : IfcCurve, ObjectHelper { IfcConic() : Object("IfcConic") {} + IfcAxis2Placement::Out Position; + }; + + // C++ wrapper for IfcCircle + struct IfcCircle : IfcConic, ObjectHelper { IfcCircle() : Object("IfcCircle") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcCircleProfileDef + struct IfcCircleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCircleProfileDef() : Object("IfcCircleProfileDef") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcCircleHollowProfileDef + struct IfcCircleHollowProfileDef : IfcCircleProfileDef, ObjectHelper { IfcCircleHollowProfileDef() : Object("IfcCircleHollowProfileDef") {} + IfcPositiveLengthMeasure::Out WallThickness; + }; + + // C++ wrapper for IfcTopologicalRepresentationItem + struct IfcTopologicalRepresentationItem : IfcRepresentationItem, ObjectHelper { IfcTopologicalRepresentationItem() : Object("IfcTopologicalRepresentationItem") {} + + }; + + // C++ wrapper for IfcConnectedFaceSet + struct IfcConnectedFaceSet : IfcTopologicalRepresentationItem, ObjectHelper { IfcConnectedFaceSet() : Object("IfcConnectedFaceSet") {} + ListOf< Lazy< IfcFace >, 1, 0 > CfsFaces; }; // C++ wrapper for IfcClosedShell @@ -2987,17 +1944,165 @@ namespace IFC { }; - // C++ wrapper for IfcEllipseProfileDef - struct IfcEllipseProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcEllipseProfileDef() : Object("IfcEllipseProfileDef") {} - IfcPositiveLengthMeasure::Out SemiAxis1; - IfcPositiveLengthMeasure::Out SemiAxis2; + // C++ wrapper for IfcCoilType + struct IfcCoilType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoilType() : Object("IfcCoilType") {} + IfcCoilTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPropertyBoundedValue - struct IfcPropertyBoundedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyBoundedValue() : Object("IfcPropertyBoundedValue") {} - Maybe< IfcValue::Out > UpperBoundValue; - Maybe< IfcValue::Out > LowerBoundValue; - Maybe< IfcUnit::Out > Unit; + // C++ wrapper for IfcColourSpecification + struct IfcColourSpecification : ObjectHelper { IfcColourSpecification() : Object("IfcColourSpecification") {} + Maybe< IfcLabel::Out > Name; + }; + + // C++ wrapper for IfcColourRgb + struct IfcColourRgb : IfcColourSpecification, ObjectHelper { IfcColourRgb() : Object("IfcColourRgb") {} + IfcNormalisedRatioMeasure::Out Red; + IfcNormalisedRatioMeasure::Out Green; + IfcNormalisedRatioMeasure::Out Blue; + }; + + // C++ wrapper for IfcColumn + struct IfcColumn : IfcBuildingElement, ObjectHelper { IfcColumn() : Object("IfcColumn") {} + + }; + + // C++ wrapper for IfcColumnType + struct IfcColumnType : IfcBuildingElementType, ObjectHelper { IfcColumnType() : Object("IfcColumnType") {} + IfcColumnTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProperty + struct IfcProperty : ObjectHelper { IfcProperty() : Object("IfcProperty") {} + IfcIdentifier::Out Name; + Maybe< IfcText::Out > Description; + }; + + // C++ wrapper for IfcComplexProperty + struct IfcComplexProperty : IfcProperty, ObjectHelper { IfcComplexProperty() : Object("IfcComplexProperty") {} + IfcIdentifier::Out UsageName; + ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; + }; + + // C++ wrapper for IfcCompositeCurveSegment + struct IfcCompositeCurveSegment : IfcGeometricRepresentationItem, ObjectHelper { IfcCompositeCurveSegment() : Object("IfcCompositeCurveSegment") {} + IfcTransitionCode::Out Transition; + BOOLEAN::Out SameSense; + Lazy< IfcCurve > ParentCurve; + }; + + // C++ wrapper for IfcCompositeProfileDef + struct IfcCompositeProfileDef : IfcProfileDef, ObjectHelper { IfcCompositeProfileDef() : Object("IfcCompositeProfileDef") {} + ListOf< Lazy< IfcProfileDef >, 2, 0 > Profiles; + Maybe< IfcLabel::Out > Label; + }; + + // C++ wrapper for IfcFlowMovingDeviceType + struct IfcFlowMovingDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowMovingDeviceType() : Object("IfcFlowMovingDeviceType") {} + + }; + + // C++ wrapper for IfcCompressorType + struct IfcCompressorType : IfcFlowMovingDeviceType, ObjectHelper { IfcCompressorType() : Object("IfcCompressorType") {} + IfcCompressorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCondenserType + struct IfcCondenserType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCondenserType() : Object("IfcCondenserType") {} + IfcCondenserTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCondition + struct IfcCondition : IfcGroup, ObjectHelper { IfcCondition() : Object("IfcCondition") {} + + }; + + // C++ wrapper for IfcConditionCriterion + struct IfcConditionCriterion : IfcControl, ObjectHelper { IfcConditionCriterion() : Object("IfcConditionCriterion") {} + IfcConditionCriterionSelect::Out Criterion; + IfcDateTimeSelect::Out CriterionDateTime; + }; + + // C++ wrapper for IfcResource + struct IfcResource : IfcObject, ObjectHelper { IfcResource() : Object("IfcResource") {} + + }; + + // C++ wrapper for IfcConstructionResource + struct IfcConstructionResource : IfcResource, ObjectHelper { IfcConstructionResource() : Object("IfcConstructionResource") {} + Maybe< IfcIdentifier::Out > ResourceIdentifier; + Maybe< IfcLabel::Out > ResourceGroup; + Maybe< IfcResourceConsumptionEnum::Out > ResourceConsumption; + Maybe< Lazy< IfcMeasureWithUnit > > BaseQuantity; + }; + + // C++ wrapper for IfcConstructionEquipmentResource + struct IfcConstructionEquipmentResource : IfcConstructionResource, ObjectHelper { IfcConstructionEquipmentResource() : Object("IfcConstructionEquipmentResource") {} + + }; + + // C++ wrapper for IfcConstructionMaterialResource + struct IfcConstructionMaterialResource : IfcConstructionResource, ObjectHelper { IfcConstructionMaterialResource() : Object("IfcConstructionMaterialResource") {} + Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > Suppliers; + Maybe< IfcRatioMeasure::Out > UsageRatio; + }; + + // C++ wrapper for IfcConstructionProductResource + struct IfcConstructionProductResource : IfcConstructionResource, ObjectHelper { IfcConstructionProductResource() : Object("IfcConstructionProductResource") {} + + }; + + // C++ wrapper for IfcNamedUnit + struct IfcNamedUnit : ObjectHelper { IfcNamedUnit() : Object("IfcNamedUnit") {} + Lazy< NotImplemented > Dimensions; + IfcUnitEnum::Out UnitType; + }; + + // C++ wrapper for IfcContextDependentUnit + struct IfcContextDependentUnit : IfcNamedUnit, ObjectHelper { IfcContextDependentUnit() : Object("IfcContextDependentUnit") {} + IfcLabel::Out Name; + }; + + // C++ wrapper for IfcControllerType + struct IfcControllerType : IfcDistributionControlElementType, ObjectHelper { IfcControllerType() : Object("IfcControllerType") {} + IfcControllerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcConversionBasedUnit + struct IfcConversionBasedUnit : IfcNamedUnit, ObjectHelper { IfcConversionBasedUnit() : Object("IfcConversionBasedUnit") {} + IfcLabel::Out Name; + Lazy< IfcMeasureWithUnit > ConversionFactor; + }; + + // C++ wrapper for IfcCooledBeamType + struct IfcCooledBeamType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCooledBeamType() : Object("IfcCooledBeamType") {} + IfcCooledBeamTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCoolingTowerType + struct IfcCoolingTowerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoolingTowerType() : Object("IfcCoolingTowerType") {} + IfcCoolingTowerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCostItem + struct IfcCostItem : IfcControl, ObjectHelper { IfcCostItem() : Object("IfcCostItem") {} + + }; + + // C++ wrapper for IfcCostSchedule + struct IfcCostSchedule : IfcControl, ObjectHelper { IfcCostSchedule() : Object("IfcCostSchedule") {} + Maybe< IfcActorSelect::Out > SubmittedBy; + Maybe< IfcActorSelect::Out > PreparedBy; + Maybe< IfcDateTimeSelect::Out > SubmittedOn; + Maybe< IfcLabel::Out > Status; + Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > TargetUsers; + Maybe< IfcDateTimeSelect::Out > UpdateDate; + IfcIdentifier::Out ID; + IfcCostScheduleTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCovering + struct IfcCovering : IfcBuildingElement, ObjectHelper { IfcCovering() : Object("IfcCovering") {} + Maybe< IfcCoveringTypeEnum::Out > PredefinedType; }; // C++ wrapper for IfcCoveringType @@ -3005,20 +2110,142 @@ namespace IFC { IfcCoveringTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcActuatorType - struct IfcActuatorType : IfcDistributionControlElementType, ObjectHelper { IfcActuatorType() : Object("IfcActuatorType") {} - IfcActuatorTypeEnum::Out PredefinedType; + // C++ wrapper for IfcCraneRailAShapeProfileDef + struct IfcCraneRailAShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCraneRailAShapeProfileDef() : Object("IfcCraneRailAShapeProfileDef") {} + IfcPositiveLengthMeasure::Out OverallHeight; + IfcPositiveLengthMeasure::Out BaseWidth2; + Maybe< IfcPositiveLengthMeasure::Out > Radius; + IfcPositiveLengthMeasure::Out HeadWidth; + IfcPositiveLengthMeasure::Out HeadDepth2; + IfcPositiveLengthMeasure::Out HeadDepth3; + IfcPositiveLengthMeasure::Out WebThickness; + IfcPositiveLengthMeasure::Out BaseWidth4; + IfcPositiveLengthMeasure::Out BaseDepth1; + IfcPositiveLengthMeasure::Out BaseDepth2; + IfcPositiveLengthMeasure::Out BaseDepth3; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcOffsetCurve2D - struct IfcOffsetCurve2D : IfcCurve, ObjectHelper { IfcOffsetCurve2D() : Object("IfcOffsetCurve2D") {} - Lazy< IfcCurve > BasisCurve; - IfcLengthMeasure::Out Distance; - LOGICAL::Out SelfIntersect; + // C++ wrapper for IfcCraneRailFShapeProfileDef + struct IfcCraneRailFShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCraneRailFShapeProfileDef() : Object("IfcCraneRailFShapeProfileDef") {} + IfcPositiveLengthMeasure::Out OverallHeight; + IfcPositiveLengthMeasure::Out HeadWidth; + Maybe< IfcPositiveLengthMeasure::Out > Radius; + IfcPositiveLengthMeasure::Out HeadDepth2; + IfcPositiveLengthMeasure::Out HeadDepth3; + IfcPositiveLengthMeasure::Out WebThickness; + IfcPositiveLengthMeasure::Out BaseDepth1; + IfcPositiveLengthMeasure::Out BaseDepth2; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcAnnotation - struct IfcAnnotation : IfcProduct, ObjectHelper { IfcAnnotation() : Object("IfcAnnotation") {} + // C++ wrapper for IfcCrewResource + struct IfcCrewResource : IfcConstructionResource, ObjectHelper { IfcCrewResource() : Object("IfcCrewResource") {} + + }; + + // C++ wrapper for IfcSolidModel + struct IfcSolidModel : IfcGeometricRepresentationItem, ObjectHelper { IfcSolidModel() : Object("IfcSolidModel") {} + + }; + + // C++ wrapper for IfcCsgSolid + struct IfcCsgSolid : IfcSolidModel, ObjectHelper { IfcCsgSolid() : Object("IfcCsgSolid") {} + IfcCsgSelect::Out TreeRootExpression; + }; + + // C++ wrapper for IfcCurtainWall + struct IfcCurtainWall : IfcBuildingElement, ObjectHelper { IfcCurtainWall() : Object("IfcCurtainWall") {} + + }; + + // C++ wrapper for IfcCurtainWallType + struct IfcCurtainWallType : IfcBuildingElementType, ObjectHelper { IfcCurtainWallType() : Object("IfcCurtainWallType") {} + IfcCurtainWallTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcCurveBoundedPlane + struct IfcCurveBoundedPlane : IfcBoundedSurface, ObjectHelper { IfcCurveBoundedPlane() : Object("IfcCurveBoundedPlane") {} + Lazy< IfcPlane > BasisSurface; + Lazy< IfcCurve > OuterBoundary; + ListOf< Lazy< IfcCurve >, 0, 0 > InnerBoundaries; + }; + + // C++ wrapper for IfcPresentationStyle + struct IfcPresentationStyle : ObjectHelper { IfcPresentationStyle() : Object("IfcPresentationStyle") {} + Maybe< IfcLabel::Out > Name; + }; + + // C++ wrapper for IfcDamperType + struct IfcDamperType : IfcFlowControllerType, ObjectHelper { IfcDamperType() : Object("IfcDamperType") {} + IfcDamperTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcDefinedSymbol + struct IfcDefinedSymbol : IfcGeometricRepresentationItem, ObjectHelper { IfcDefinedSymbol() : Object("IfcDefinedSymbol") {} + IfcDefinedSymbolSelect::Out Definition; + Lazy< IfcCartesianTransformationOperator2D > Target; + }; + + // C++ wrapper for IfcDerivedProfileDef + struct IfcDerivedProfileDef : IfcProfileDef, ObjectHelper { IfcDerivedProfileDef() : Object("IfcDerivedProfileDef") {} + Lazy< IfcProfileDef > ParentProfile; + Lazy< IfcCartesianTransformationOperator2D > Operator; + Maybe< IfcLabel::Out > Label; + }; + + // C++ wrapper for IfcDiameterDimension + struct IfcDiameterDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcDiameterDimension() : Object("IfcDiameterDimension") {} + + }; + + // C++ wrapper for IfcDimensionCurve + struct IfcDimensionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcDimensionCurve() : Object("IfcDimensionCurve") {} + + }; + + // C++ wrapper for IfcTerminatorSymbol + struct IfcTerminatorSymbol : IfcAnnotationSymbolOccurrence, ObjectHelper { IfcTerminatorSymbol() : Object("IfcTerminatorSymbol") {} + Lazy< IfcAnnotationCurveOccurrence > AnnotatedCurve; + }; + + // C++ wrapper for IfcDimensionCurveTerminator + struct IfcDimensionCurveTerminator : IfcTerminatorSymbol, ObjectHelper { IfcDimensionCurveTerminator() : Object("IfcDimensionCurveTerminator") {} + IfcDimensionExtentUsage::Out Role; + }; + + // C++ wrapper for IfcDirection + struct IfcDirection : IfcGeometricRepresentationItem, ObjectHelper { IfcDirection() : Object("IfcDirection") {} + ListOf< REAL, 2, 3 >::Out DirectionRatios; + }; + + // C++ wrapper for IfcElementComponent + struct IfcElementComponent : IfcElement, ObjectHelper { IfcElementComponent() : Object("IfcElementComponent") {} + + }; + + // C++ wrapper for IfcDiscreteAccessory + struct IfcDiscreteAccessory : IfcElementComponent, ObjectHelper { IfcDiscreteAccessory() : Object("IfcDiscreteAccessory") {} + + }; + + // C++ wrapper for IfcElementComponentType + struct IfcElementComponentType : IfcElementType, ObjectHelper { IfcElementComponentType() : Object("IfcElementComponentType") {} + + }; + + // C++ wrapper for IfcDiscreteAccessoryType + struct IfcDiscreteAccessoryType : IfcElementComponentType, ObjectHelper { IfcDiscreteAccessoryType() : Object("IfcDiscreteAccessoryType") {} + + }; + + // C++ wrapper for IfcDistributionElement + struct IfcDistributionElement : IfcElement, ObjectHelper { IfcDistributionElement() : Object("IfcDistributionElement") {} + + }; + + // C++ wrapper for IfcDistributionFlowElement + struct IfcDistributionFlowElement : IfcDistributionElement, ObjectHelper { IfcDistributionFlowElement() : Object("IfcDistributionFlowElement") {} }; @@ -3027,12 +2254,350 @@ namespace IFC { }; - // C++ wrapper for IfcOffsetCurve3D - struct IfcOffsetCurve3D : IfcCurve, ObjectHelper { IfcOffsetCurve3D() : Object("IfcOffsetCurve3D") {} - Lazy< IfcCurve > BasisCurve; - IfcLengthMeasure::Out Distance; - LOGICAL::Out SelfIntersect; - Lazy< IfcDirection > RefDirection; + // C++ wrapper for IfcDistributionChamberElementType + struct IfcDistributionChamberElementType : IfcDistributionFlowElementType, ObjectHelper { IfcDistributionChamberElementType() : Object("IfcDistributionChamberElementType") {} + IfcDistributionChamberElementTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcDistributionControlElement + struct IfcDistributionControlElement : IfcDistributionElement, ObjectHelper { IfcDistributionControlElement() : Object("IfcDistributionControlElement") {} + Maybe< IfcIdentifier::Out > ControlElementId; + }; + + // C++ wrapper for IfcPort + struct IfcPort : IfcProduct, ObjectHelper { IfcPort() : Object("IfcPort") {} + + }; + + // C++ wrapper for IfcDistributionPort + struct IfcDistributionPort : IfcPort, ObjectHelper { IfcDistributionPort() : Object("IfcDistributionPort") {} + Maybe< IfcFlowDirectionEnum::Out > FlowDirection; + }; + + // C++ wrapper for IfcDoor + struct IfcDoor : IfcBuildingElement, ObjectHelper { IfcDoor() : Object("IfcDoor") {} + Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; + Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; + }; + + // C++ wrapper for IfcPropertyDefinition + struct IfcPropertyDefinition : IfcRoot, ObjectHelper { IfcPropertyDefinition() : Object("IfcPropertyDefinition") {} + + }; + + // C++ wrapper for IfcPropertySetDefinition + struct IfcPropertySetDefinition : IfcPropertyDefinition, ObjectHelper { IfcPropertySetDefinition() : Object("IfcPropertySetDefinition") {} + + }; + + // C++ wrapper for IfcDoorStyle + struct IfcDoorStyle : IfcTypeProduct, ObjectHelper { IfcDoorStyle() : Object("IfcDoorStyle") {} + IfcDoorStyleOperationEnum::Out OperationType; + IfcDoorStyleConstructionEnum::Out ConstructionType; + BOOLEAN::Out ParameterTakesPrecedence; + BOOLEAN::Out Sizeable; + }; + + // C++ wrapper for IfcDuctFittingType + struct IfcDuctFittingType : IfcFlowFittingType, ObjectHelper { IfcDuctFittingType() : Object("IfcDuctFittingType") {} + IfcDuctFittingTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcDuctSegmentType + struct IfcDuctSegmentType : IfcFlowSegmentType, ObjectHelper { IfcDuctSegmentType() : Object("IfcDuctSegmentType") {} + IfcDuctSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowTreatmentDeviceType + struct IfcFlowTreatmentDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTreatmentDeviceType() : Object("IfcFlowTreatmentDeviceType") {} + + }; + + // C++ wrapper for IfcDuctSilencerType + struct IfcDuctSilencerType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcDuctSilencerType() : Object("IfcDuctSilencerType") {} + IfcDuctSilencerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcEdge + struct IfcEdge : IfcTopologicalRepresentationItem, ObjectHelper { IfcEdge() : Object("IfcEdge") {} + Lazy< IfcVertex > EdgeStart; + Lazy< IfcVertex > EdgeEnd; + }; + + // C++ wrapper for IfcEdgeCurve + struct IfcEdgeCurve : IfcEdge, ObjectHelper { IfcEdgeCurve() : Object("IfcEdgeCurve") {} + Lazy< IfcCurve > EdgeGeometry; + BOOLEAN::Out SameSense; + }; + + // C++ wrapper for IfcLoop + struct IfcLoop : IfcTopologicalRepresentationItem, ObjectHelper { IfcLoop() : Object("IfcLoop") {} + + }; + + // C++ wrapper for IfcEdgeLoop + struct IfcEdgeLoop : IfcLoop, ObjectHelper { IfcEdgeLoop() : Object("IfcEdgeLoop") {} + ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; + }; + + // C++ wrapper for IfcElectricApplianceType + struct IfcElectricApplianceType : IfcFlowTerminalType, ObjectHelper { IfcElectricApplianceType() : Object("IfcElectricApplianceType") {} + IfcElectricApplianceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowController + struct IfcFlowController : IfcDistributionFlowElement, ObjectHelper { IfcFlowController() : Object("IfcFlowController") {} + + }; + + // C++ wrapper for IfcElectricDistributionPoint + struct IfcElectricDistributionPoint : IfcFlowController, ObjectHelper { IfcElectricDistributionPoint() : Object("IfcElectricDistributionPoint") {} + IfcElectricDistributionPointFunctionEnum::Out DistributionPointFunction; + Maybe< IfcLabel::Out > UserDefinedFunction; + }; + + // C++ wrapper for IfcFlowStorageDeviceType + struct IfcFlowStorageDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowStorageDeviceType() : Object("IfcFlowStorageDeviceType") {} + + }; + + // C++ wrapper for IfcElectricFlowStorageDeviceType + struct IfcElectricFlowStorageDeviceType : IfcFlowStorageDeviceType, ObjectHelper { IfcElectricFlowStorageDeviceType() : Object("IfcElectricFlowStorageDeviceType") {} + IfcElectricFlowStorageDeviceTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcElectricGeneratorType + struct IfcElectricGeneratorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricGeneratorType() : Object("IfcElectricGeneratorType") {} + IfcElectricGeneratorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcElectricHeaterType + struct IfcElectricHeaterType : IfcFlowTerminalType, ObjectHelper { IfcElectricHeaterType() : Object("IfcElectricHeaterType") {} + IfcElectricHeaterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcElectricMotorType + struct IfcElectricMotorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricMotorType() : Object("IfcElectricMotorType") {} + IfcElectricMotorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcElectricTimeControlType + struct IfcElectricTimeControlType : IfcFlowControllerType, ObjectHelper { IfcElectricTimeControlType() : Object("IfcElectricTimeControlType") {} + IfcElectricTimeControlTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSystem + struct IfcSystem : IfcGroup, ObjectHelper { IfcSystem() : Object("IfcSystem") {} + + }; + + // C++ wrapper for IfcElectricalCircuit + struct IfcElectricalCircuit : IfcSystem, ObjectHelper { IfcElectricalCircuit() : Object("IfcElectricalCircuit") {} + + }; + + // C++ wrapper for IfcElectricalElement + struct IfcElectricalElement : IfcElement, ObjectHelper { IfcElectricalElement() : Object("IfcElectricalElement") {} + + }; + + // C++ wrapper for IfcElementAssembly + struct IfcElementAssembly : IfcElement, ObjectHelper { IfcElementAssembly() : Object("IfcElementAssembly") {} + Maybe< IfcAssemblyPlaceEnum::Out > AssemblyPlace; + IfcElementAssemblyTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcElementQuantity + struct IfcElementQuantity : IfcPropertySetDefinition, ObjectHelper { IfcElementQuantity() : Object("IfcElementQuantity") {} + Maybe< IfcLabel::Out > MethodOfMeasurement; + ListOf< Lazy< NotImplemented >, 1, 0 > Quantities; + }; + + // C++ wrapper for IfcElementarySurface + struct IfcElementarySurface : IfcSurface, ObjectHelper { IfcElementarySurface() : Object("IfcElementarySurface") {} + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcEllipse + struct IfcEllipse : IfcConic, ObjectHelper { IfcEllipse() : Object("IfcEllipse") {} + IfcPositiveLengthMeasure::Out SemiAxis1; + IfcPositiveLengthMeasure::Out SemiAxis2; + }; + + // C++ wrapper for IfcEllipseProfileDef + struct IfcEllipseProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcEllipseProfileDef() : Object("IfcEllipseProfileDef") {} + IfcPositiveLengthMeasure::Out SemiAxis1; + IfcPositiveLengthMeasure::Out SemiAxis2; + }; + + // C++ wrapper for IfcEnergyConversionDevice + struct IfcEnergyConversionDevice : IfcDistributionFlowElement, ObjectHelper { IfcEnergyConversionDevice() : Object("IfcEnergyConversionDevice") {} + + }; + + // C++ wrapper for IfcEquipmentElement + struct IfcEquipmentElement : IfcElement, ObjectHelper { IfcEquipmentElement() : Object("IfcEquipmentElement") {} + + }; + + // C++ wrapper for IfcEquipmentStandard + struct IfcEquipmentStandard : IfcControl, ObjectHelper { IfcEquipmentStandard() : Object("IfcEquipmentStandard") {} + + }; + + // C++ wrapper for IfcEvaporativeCoolerType + struct IfcEvaporativeCoolerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporativeCoolerType() : Object("IfcEvaporativeCoolerType") {} + IfcEvaporativeCoolerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcEvaporatorType + struct IfcEvaporatorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporatorType() : Object("IfcEvaporatorType") {} + IfcEvaporatorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSweptAreaSolid + struct IfcSweptAreaSolid : IfcSolidModel, ObjectHelper { IfcSweptAreaSolid() : Object("IfcSweptAreaSolid") {} + Lazy< IfcProfileDef > SweptArea; + Lazy< IfcAxis2Placement3D > Position; + }; + + // C++ wrapper for IfcExtrudedAreaSolid + struct IfcExtrudedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcExtrudedAreaSolid() : Object("IfcExtrudedAreaSolid") {} + Lazy< IfcDirection > ExtrudedDirection; + IfcPositiveLengthMeasure::Out Depth; + }; + + // C++ wrapper for IfcFace + struct IfcFace : IfcTopologicalRepresentationItem, ObjectHelper { IfcFace() : Object("IfcFace") {} + ListOf< Lazy< IfcFaceBound >, 1, 0 > Bounds; + }; + + // C++ wrapper for IfcFaceBasedSurfaceModel + struct IfcFaceBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcFaceBasedSurfaceModel() : Object("IfcFaceBasedSurfaceModel") {} + ListOf< Lazy< IfcConnectedFaceSet >, 1, 0 > FbsmFaces; + }; + + // C++ wrapper for IfcFaceBound + struct IfcFaceBound : IfcTopologicalRepresentationItem, ObjectHelper { IfcFaceBound() : Object("IfcFaceBound") {} + Lazy< IfcLoop > Bound; + BOOLEAN::Out Orientation; + }; + + // C++ wrapper for IfcFaceOuterBound + struct IfcFaceOuterBound : IfcFaceBound, ObjectHelper { IfcFaceOuterBound() : Object("IfcFaceOuterBound") {} + + }; + + // C++ wrapper for IfcFaceSurface + struct IfcFaceSurface : IfcFace, ObjectHelper { IfcFaceSurface() : Object("IfcFaceSurface") {} + Lazy< IfcSurface > FaceSurface; + BOOLEAN::Out SameSense; + }; + + // C++ wrapper for IfcManifoldSolidBrep + struct IfcManifoldSolidBrep : IfcSolidModel, ObjectHelper { IfcManifoldSolidBrep() : Object("IfcManifoldSolidBrep") {} + Lazy< IfcClosedShell > Outer; + }; + + // C++ wrapper for IfcFacetedBrep + struct IfcFacetedBrep : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrep() : Object("IfcFacetedBrep") {} + + }; + + // C++ wrapper for IfcFacetedBrepWithVoids + struct IfcFacetedBrepWithVoids : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrepWithVoids() : Object("IfcFacetedBrepWithVoids") {} + ListOf< Lazy< IfcClosedShell >, 1, 0 > Voids; + }; + + // C++ wrapper for IfcFanType + struct IfcFanType : IfcFlowMovingDeviceType, ObjectHelper { IfcFanType() : Object("IfcFanType") {} + IfcFanTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFastener + struct IfcFastener : IfcElementComponent, ObjectHelper { IfcFastener() : Object("IfcFastener") {} + + }; + + // C++ wrapper for IfcFastenerType + struct IfcFastenerType : IfcElementComponentType, ObjectHelper { IfcFastenerType() : Object("IfcFastenerType") {} + + }; + + // C++ wrapper for IfcFeatureElementAddition + struct IfcFeatureElementAddition : IfcFeatureElement, ObjectHelper { IfcFeatureElementAddition() : Object("IfcFeatureElementAddition") {} + + }; + + // C++ wrapper for IfcFillAreaStyleHatching + struct IfcFillAreaStyleHatching : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleHatching() : Object("IfcFillAreaStyleHatching") {} + Lazy< NotImplemented > HatchLineAppearance; + IfcHatchLineDistanceSelect::Out StartOfNextHatchLine; + Maybe< Lazy< IfcCartesianPoint > > PointOfReferenceHatchLine; + Maybe< Lazy< IfcCartesianPoint > > PatternStart; + IfcPlaneAngleMeasure::Out HatchLineAngle; + }; + + // C++ wrapper for IfcFillAreaStyleTileSymbolWithStyle + struct IfcFillAreaStyleTileSymbolWithStyle : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTileSymbolWithStyle() : Object("IfcFillAreaStyleTileSymbolWithStyle") {} + Lazy< IfcAnnotationSymbolOccurrence > Symbol; + }; + + // C++ wrapper for IfcFillAreaStyleTiles + struct IfcFillAreaStyleTiles : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleTiles() : Object("IfcFillAreaStyleTiles") {} + Lazy< IfcOneDirectionRepeatFactor > TilingPattern; + ListOf< IfcFillAreaStyleTileShapeSelect, 1, 0 >::Out Tiles; + IfcPositiveRatioMeasure::Out TilingScale; + }; + + // C++ wrapper for IfcFilterType + struct IfcFilterType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcFilterType() : Object("IfcFilterType") {} + IfcFilterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFireSuppressionTerminalType + struct IfcFireSuppressionTerminalType : IfcFlowTerminalType, ObjectHelper { IfcFireSuppressionTerminalType() : Object("IfcFireSuppressionTerminalType") {} + IfcFireSuppressionTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowFitting + struct IfcFlowFitting : IfcDistributionFlowElement, ObjectHelper { IfcFlowFitting() : Object("IfcFlowFitting") {} + + }; + + // C++ wrapper for IfcFlowInstrumentType + struct IfcFlowInstrumentType : IfcDistributionControlElementType, ObjectHelper { IfcFlowInstrumentType() : Object("IfcFlowInstrumentType") {} + IfcFlowInstrumentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowMeterType + struct IfcFlowMeterType : IfcFlowControllerType, ObjectHelper { IfcFlowMeterType() : Object("IfcFlowMeterType") {} + IfcFlowMeterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcFlowMovingDevice + struct IfcFlowMovingDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowMovingDevice() : Object("IfcFlowMovingDevice") {} + + }; + + // C++ wrapper for IfcFlowSegment + struct IfcFlowSegment : IfcDistributionFlowElement, ObjectHelper { IfcFlowSegment() : Object("IfcFlowSegment") {} + + }; + + // C++ wrapper for IfcFlowStorageDevice + struct IfcFlowStorageDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowStorageDevice() : Object("IfcFlowStorageDevice") {} + + }; + + // C++ wrapper for IfcFlowTerminal + struct IfcFlowTerminal : IfcDistributionFlowElement, ObjectHelper { IfcFlowTerminal() : Object("IfcFlowTerminal") {} + + }; + + // C++ wrapper for IfcFlowTreatmentDevice + struct IfcFlowTreatmentDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowTreatmentDevice() : Object("IfcFlowTreatmentDevice") {} + }; // C++ wrapper for IfcFooting @@ -3040,53 +2605,29 @@ namespace IFC { IfcFootingTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcMappedItem - struct IfcMappedItem : IfcRepresentationItem, ObjectHelper { IfcMappedItem() : Object("IfcMappedItem") {} - Lazy< IfcRepresentationMap > MappingSource; - Lazy< IfcCartesianTransformationOperator > MappingTarget; + // C++ wrapper for IfcFurnishingElement + struct IfcFurnishingElement : IfcElement, ObjectHelper { IfcFurnishingElement() : Object("IfcFurnishingElement") {} + }; - // C++ wrapper for IfcTransformerType - struct IfcTransformerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTransformerType() : Object("IfcTransformerType") {} - IfcTransformerTypeEnum::Out PredefinedType; + // C++ wrapper for IfcFurnishingElementType + struct IfcFurnishingElementType : IfcElementType, ObjectHelper { IfcFurnishingElementType() : Object("IfcFurnishingElementType") {} + }; - // C++ wrapper for IfcRightCircularCylinder - struct IfcRightCircularCylinder : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCylinder() : Object("IfcRightCircularCylinder") {} - IfcPositiveLengthMeasure::Out Height; - IfcPositiveLengthMeasure::Out Radius; + // C++ wrapper for IfcFurnitureStandard + struct IfcFurnitureStandard : IfcControl, ObjectHelper { IfcFurnitureStandard() : Object("IfcFurnitureStandard") {} + }; - // C++ wrapper for IfcSpaceProgram - struct IfcSpaceProgram : IfcControl, ObjectHelper { IfcSpaceProgram() : Object("IfcSpaceProgram") {} - IfcIdentifier::Out SpaceProgramIdentifier; - Maybe< IfcAreaMeasure::Out > MaxRequiredArea; - Maybe< IfcAreaMeasure::Out > MinRequiredArea; - Maybe< Lazy< IfcSpatialStructureElement > > RequestedLocation; - IfcAreaMeasure::Out StandardRequiredArea; + // C++ wrapper for IfcFurnitureType + struct IfcFurnitureType : IfcFurnishingElementType, ObjectHelper { IfcFurnitureType() : Object("IfcFurnitureType") {} + IfcAssemblyPlaceEnum::Out AssemblyPlace; }; - // C++ wrapper for IfcAnnotationSurface - struct IfcAnnotationSurface : IfcGeometricRepresentationItem, ObjectHelper { IfcAnnotationSurface() : Object("IfcAnnotationSurface") {} - Lazy< IfcGeometricRepresentationItem > Item; - Maybe< Lazy< NotImplemented > > TextureCoordinates; - }; - - // C++ wrapper for IfcZShapeProfileDef - struct IfcZShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcZShapeProfileDef() : Object("IfcZShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - IfcPositiveLengthMeasure::Out FlangeWidth; - IfcPositiveLengthMeasure::Out WebThickness; - IfcPositiveLengthMeasure::Out FlangeThickness; - Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; - }; - - // C++ wrapper for IfcRectangleHollowProfileDef - struct IfcRectangleHollowProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRectangleHollowProfileDef() : Object("IfcRectangleHollowProfileDef") {} - IfcPositiveLengthMeasure::Out WallThickness; - Maybe< IfcPositiveLengthMeasure::Out > InnerFilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > OuterFilletRadius; + // C++ wrapper for IfcGasTerminalType + struct IfcGasTerminalType : IfcFlowTerminalType, ObjectHelper { IfcGasTerminalType() : Object("IfcGasTerminalType") {} + IfcGasTerminalTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcGeometricSet @@ -3099,63 +2640,438 @@ namespace IFC { }; - // C++ wrapper for IfcArbitraryOpenProfileDef - struct IfcArbitraryOpenProfileDef : IfcProfileDef, ObjectHelper { IfcArbitraryOpenProfileDef() : Object("IfcArbitraryOpenProfileDef") {} - Lazy< IfcBoundedCurve > Curve; + // C++ wrapper for IfcRepresentationContext + struct IfcRepresentationContext : ObjectHelper { IfcRepresentationContext() : Object("IfcRepresentationContext") {} + Maybe< IfcLabel::Out > ContextIdentifier; + Maybe< IfcLabel::Out > ContextType; }; - // C++ wrapper for IfcFacetedBrepWithVoids - struct IfcFacetedBrepWithVoids : IfcManifoldSolidBrep, ObjectHelper { IfcFacetedBrepWithVoids() : Object("IfcFacetedBrepWithVoids") {} - ListOf< Lazy< IfcClosedShell >, 1, 0 > Voids; + // C++ wrapper for IfcGeometricRepresentationContext + struct IfcGeometricRepresentationContext : IfcRepresentationContext, ObjectHelper { IfcGeometricRepresentationContext() : Object("IfcGeometricRepresentationContext") {} + IfcDimensionCount::Out CoordinateSpaceDimension; + Maybe< REAL::Out > Precision; + IfcAxis2Placement::Out WorldCoordinateSystem; + Maybe< Lazy< IfcDirection > > TrueNorth; }; - // C++ wrapper for IfcVector - struct IfcVector : IfcGeometricRepresentationItem, ObjectHelper { IfcVector() : Object("IfcVector") {} + // C++ wrapper for IfcGeometricRepresentationSubContext + struct IfcGeometricRepresentationSubContext : IfcGeometricRepresentationContext, ObjectHelper { IfcGeometricRepresentationSubContext() : Object("IfcGeometricRepresentationSubContext") {} + Lazy< IfcGeometricRepresentationContext > ParentContext; + Maybe< IfcPositiveRatioMeasure::Out > TargetScale; + IfcGeometricProjectionEnum::Out TargetView; + Maybe< IfcLabel::Out > UserDefinedTargetView; + }; + + // C++ wrapper for IfcGrid + struct IfcGrid : IfcProduct, ObjectHelper { IfcGrid() : Object("IfcGrid") {} + ListOf< Lazy< NotImplemented >, 1, 0 > UAxes; + ListOf< Lazy< NotImplemented >, 1, 0 > VAxes; + Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > WAxes; + }; + + // C++ wrapper for IfcObjectPlacement + struct IfcObjectPlacement : ObjectHelper { IfcObjectPlacement() : Object("IfcObjectPlacement") {} + + }; + + // C++ wrapper for IfcGridPlacement + struct IfcGridPlacement : IfcObjectPlacement, ObjectHelper { IfcGridPlacement() : Object("IfcGridPlacement") {} + Lazy< NotImplemented > PlacementLocation; + Maybe< Lazy< NotImplemented > > PlacementRefDirection; + }; + + // C++ wrapper for IfcHeatExchangerType + struct IfcHeatExchangerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHeatExchangerType() : Object("IfcHeatExchangerType") {} + IfcHeatExchangerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcHumidifierType + struct IfcHumidifierType : IfcEnergyConversionDeviceType, ObjectHelper { IfcHumidifierType() : Object("IfcHumidifierType") {} + IfcHumidifierTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcInventory + struct IfcInventory : IfcGroup, ObjectHelper { IfcInventory() : Object("IfcInventory") {} + IfcInventoryTypeEnum::Out InventoryType; + IfcActorSelect::Out Jurisdiction; + ListOf< Lazy< NotImplemented >, 1, 0 > ResponsiblePersons; + Lazy< NotImplemented > LastUpdateDate; + Maybe< Lazy< NotImplemented > > CurrentValue; + Maybe< Lazy< NotImplemented > > OriginalValue; + }; + + // C++ wrapper for IfcJunctionBoxType + struct IfcJunctionBoxType : IfcFlowFittingType, ObjectHelper { IfcJunctionBoxType() : Object("IfcJunctionBoxType") {} + IfcJunctionBoxTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLShapeProfileDef + struct IfcLShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcLShapeProfileDef() : Object("IfcLShapeProfileDef") {} + IfcPositiveLengthMeasure::Out Depth; + Maybe< IfcPositiveLengthMeasure::Out > Width; + IfcPositiveLengthMeasure::Out Thickness; + Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; + Maybe< IfcPlaneAngleMeasure::Out > LegSlope; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; + }; + + // C++ wrapper for IfcLaborResource + struct IfcLaborResource : IfcConstructionResource, ObjectHelper { IfcLaborResource() : Object("IfcLaborResource") {} + Maybe< IfcText::Out > SkillSet; + }; + + // C++ wrapper for IfcLampType + struct IfcLampType : IfcFlowTerminalType, ObjectHelper { IfcLampType() : Object("IfcLampType") {} + IfcLampTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLightFixtureType + struct IfcLightFixtureType : IfcFlowTerminalType, ObjectHelper { IfcLightFixtureType() : Object("IfcLightFixtureType") {} + IfcLightFixtureTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcLightSource + struct IfcLightSource : IfcGeometricRepresentationItem, ObjectHelper { IfcLightSource() : Object("IfcLightSource") {} + Maybe< IfcLabel::Out > Name; + Lazy< IfcColourRgb > LightColour; + Maybe< IfcNormalisedRatioMeasure::Out > AmbientIntensity; + Maybe< IfcNormalisedRatioMeasure::Out > Intensity; + }; + + // C++ wrapper for IfcLightSourceAmbient + struct IfcLightSourceAmbient : IfcLightSource, ObjectHelper { IfcLightSourceAmbient() : Object("IfcLightSourceAmbient") {} + + }; + + // C++ wrapper for IfcLightSourceDirectional + struct IfcLightSourceDirectional : IfcLightSource, ObjectHelper { IfcLightSourceDirectional() : Object("IfcLightSourceDirectional") {} Lazy< IfcDirection > Orientation; - IfcLengthMeasure::Out Magnitude; }; - // C++ wrapper for IfcServiceLife - struct IfcServiceLife : IfcControl, ObjectHelper { IfcServiceLife() : Object("IfcServiceLife") {} - IfcServiceLifeTypeEnum::Out ServiceLifeType; - IfcTimeMeasure::Out ServiceLifeDuration; + // C++ wrapper for IfcLightSourceGoniometric + struct IfcLightSourceGoniometric : IfcLightSource, ObjectHelper { IfcLightSourceGoniometric() : Object("IfcLightSourceGoniometric") {} + Lazy< IfcAxis2Placement3D > Position; + Maybe< Lazy< IfcColourRgb > > ColourAppearance; + IfcThermodynamicTemperatureMeasure::Out ColourTemperature; + IfcLuminousFluxMeasure::Out LuminousFlux; + IfcLightEmissionSourceEnum::Out LightEmissionSource; + IfcLightDistributionDataSourceSelect::Out LightDistributionDataSource; }; - // C++ wrapper for IfcCurveBoundedPlane - struct IfcCurveBoundedPlane : IfcBoundedSurface, ObjectHelper { IfcCurveBoundedPlane() : Object("IfcCurveBoundedPlane") {} - Lazy< IfcPlane > BasisSurface; - Lazy< IfcCurve > OuterBoundary; - ListOf< Lazy< IfcCurve >, 0, 0 > InnerBoundaries; - }; - - // C++ wrapper for IfcCircle - struct IfcCircle : IfcConic, ObjectHelper { IfcCircle() : Object("IfcCircle") {} + // C++ wrapper for IfcLightSourcePositional + struct IfcLightSourcePositional : IfcLightSource, ObjectHelper { IfcLightSourcePositional() : Object("IfcLightSourcePositional") {} + Lazy< IfcCartesianPoint > Position; IfcPositiveLengthMeasure::Out Radius; + IfcReal::Out ConstantAttenuation; + IfcReal::Out DistanceAttenuation; + IfcReal::Out QuadricAttenuation; }; - // C++ wrapper for IfcVertexLoop - struct IfcVertexLoop : IfcLoop, ObjectHelper { IfcVertexLoop() : Object("IfcVertexLoop") {} - Lazy< IfcVertex > LoopVertex; + // C++ wrapper for IfcLightSourceSpot + struct IfcLightSourceSpot : IfcLightSourcePositional, ObjectHelper { IfcLightSourceSpot() : Object("IfcLightSourceSpot") {} + Lazy< IfcDirection > Orientation; + Maybe< IfcReal::Out > ConcentrationExponent; + IfcPositivePlaneAngleMeasure::Out SpreadAngle; + IfcPositivePlaneAngleMeasure::Out BeamWidthAngle; }; - // C++ wrapper for IfcSurfaceCurveSweptAreaSolid - struct IfcSurfaceCurveSweptAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcSurfaceCurveSweptAreaSolid() : Object("IfcSurfaceCurveSweptAreaSolid") {} - Lazy< IfcCurve > Directrix; - IfcParameterValue::Out StartParam; - IfcParameterValue::Out EndParam; - Lazy< IfcSurface > ReferenceSurface; + // C++ wrapper for IfcLine + struct IfcLine : IfcCurve, ObjectHelper { IfcLine() : Object("IfcLine") {} + Lazy< IfcCartesianPoint > Pnt; + Lazy< IfcVector > Dir; }; - // C++ wrapper for IfcConstructionEquipmentResource - struct IfcConstructionEquipmentResource : IfcConstructionResource, ObjectHelper { IfcConstructionEquipmentResource() : Object("IfcConstructionEquipmentResource") {} + // C++ wrapper for IfcLinearDimension + struct IfcLinearDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcLinearDimension() : Object("IfcLinearDimension") {} }; - // C++ wrapper for IfcSectionedSpine - struct IfcSectionedSpine : IfcGeometricRepresentationItem, ObjectHelper { IfcSectionedSpine() : Object("IfcSectionedSpine") {} - Lazy< IfcCompositeCurve > SpineCurve; - ListOf< Lazy< IfcProfileDef >, 2, 0 > CrossSections; - ListOf< Lazy< IfcAxis2Placement3D >, 2, 0 > CrossSectionPositions; + // C++ wrapper for IfcLocalPlacement + struct IfcLocalPlacement : IfcObjectPlacement, ObjectHelper { IfcLocalPlacement() : Object("IfcLocalPlacement") {} + Maybe< Lazy< IfcObjectPlacement > > PlacementRelTo; + IfcAxis2Placement::Out RelativePlacement; + }; + + // C++ wrapper for IfcMappedItem + struct IfcMappedItem : IfcRepresentationItem, ObjectHelper { IfcMappedItem() : Object("IfcMappedItem") {} + Lazy< IfcRepresentationMap > MappingSource; + Lazy< IfcCartesianTransformationOperator > MappingTarget; + }; + + // C++ wrapper for IfcProductRepresentation + struct IfcProductRepresentation : ObjectHelper { IfcProductRepresentation() : Object("IfcProductRepresentation") {} + Maybe< IfcLabel::Out > Name; + Maybe< IfcText::Out > Description; + ListOf< Lazy< IfcRepresentation >, 1, 0 > Representations; + }; + + // C++ wrapper for IfcMaterialDefinitionRepresentation + struct IfcMaterialDefinitionRepresentation : IfcProductRepresentation, ObjectHelper { IfcMaterialDefinitionRepresentation() : Object("IfcMaterialDefinitionRepresentation") {} + Lazy< NotImplemented > RepresentedMaterial; + }; + + // C++ wrapper for IfcMeasureWithUnit + struct IfcMeasureWithUnit : ObjectHelper { IfcMeasureWithUnit() : Object("IfcMeasureWithUnit") {} + IfcValue::Out ValueComponent; + IfcUnit::Out UnitComponent; + }; + + // C++ wrapper for IfcMechanicalFastener + struct IfcMechanicalFastener : IfcFastener, ObjectHelper { IfcMechanicalFastener() : Object("IfcMechanicalFastener") {} + Maybe< IfcPositiveLengthMeasure::Out > NominalDiameter; + Maybe< IfcPositiveLengthMeasure::Out > NominalLength; + }; + + // C++ wrapper for IfcMechanicalFastenerType + struct IfcMechanicalFastenerType : IfcFastenerType, ObjectHelper { IfcMechanicalFastenerType() : Object("IfcMechanicalFastenerType") {} + + }; + + // C++ wrapper for IfcMember + struct IfcMember : IfcBuildingElement, ObjectHelper { IfcMember() : Object("IfcMember") {} + + }; + + // C++ wrapper for IfcMemberType + struct IfcMemberType : IfcBuildingElementType, ObjectHelper { IfcMemberType() : Object("IfcMemberType") {} + IfcMemberTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcMotorConnectionType + struct IfcMotorConnectionType : IfcEnergyConversionDeviceType, ObjectHelper { IfcMotorConnectionType() : Object("IfcMotorConnectionType") {} + IfcMotorConnectionTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProcess + struct IfcProcess : IfcObject, ObjectHelper { IfcProcess() : Object("IfcProcess") {} + + }; + + // C++ wrapper for IfcTask + struct IfcTask : IfcProcess, ObjectHelper { IfcTask() : Object("IfcTask") {} + IfcIdentifier::Out TaskId; + Maybe< IfcLabel::Out > Status; + Maybe< IfcLabel::Out > WorkMethod; + BOOLEAN::Out IsMilestone; + Maybe< INTEGER::Out > Priority; + }; + + // C++ wrapper for IfcMove + struct IfcMove : IfcTask, ObjectHelper { IfcMove() : Object("IfcMove") {} + Lazy< IfcSpatialStructureElement > MoveFrom; + Lazy< IfcSpatialStructureElement > MoveTo; + Maybe< ListOf< IfcText, 1, 0 >::Out > PunchList; + }; + + // C++ wrapper for IfcOccupant + struct IfcOccupant : IfcActor, ObjectHelper { IfcOccupant() : Object("IfcOccupant") {} + IfcOccupantTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcOffsetCurve2D + struct IfcOffsetCurve2D : IfcCurve, ObjectHelper { IfcOffsetCurve2D() : Object("IfcOffsetCurve2D") {} + Lazy< IfcCurve > BasisCurve; + IfcLengthMeasure::Out Distance; + LOGICAL::Out SelfIntersect; + }; + + // C++ wrapper for IfcOffsetCurve3D + struct IfcOffsetCurve3D : IfcCurve, ObjectHelper { IfcOffsetCurve3D() : Object("IfcOffsetCurve3D") {} + Lazy< IfcCurve > BasisCurve; + IfcLengthMeasure::Out Distance; + LOGICAL::Out SelfIntersect; + Lazy< IfcDirection > RefDirection; + }; + + // C++ wrapper for IfcOneDirectionRepeatFactor + struct IfcOneDirectionRepeatFactor : IfcGeometricRepresentationItem, ObjectHelper { IfcOneDirectionRepeatFactor() : Object("IfcOneDirectionRepeatFactor") {} + Lazy< IfcVector > RepeatFactor; + }; + + // C++ wrapper for IfcOpenShell + struct IfcOpenShell : IfcConnectedFaceSet, ObjectHelper { IfcOpenShell() : Object("IfcOpenShell") {} + + }; + + // C++ wrapper for IfcOpeningElement + struct IfcOpeningElement : IfcFeatureElementSubtraction, ObjectHelper { IfcOpeningElement() : Object("IfcOpeningElement") {} + + }; + + // C++ wrapper for IfcOrderAction + struct IfcOrderAction : IfcTask, ObjectHelper { IfcOrderAction() : Object("IfcOrderAction") {} + IfcIdentifier::Out ActionID; + }; + + // C++ wrapper for IfcOrientedEdge + struct IfcOrientedEdge : IfcEdge, ObjectHelper { IfcOrientedEdge() : Object("IfcOrientedEdge") {} + Lazy< IfcEdge > EdgeElement; + BOOLEAN::Out Orientation; + }; + + // C++ wrapper for IfcOutletType + struct IfcOutletType : IfcFlowTerminalType, ObjectHelper { IfcOutletType() : Object("IfcOutletType") {} + IfcOutletTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPath + struct IfcPath : IfcTopologicalRepresentationItem, ObjectHelper { IfcPath() : Object("IfcPath") {} + ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; + }; + + // C++ wrapper for IfcPerformanceHistory + struct IfcPerformanceHistory : IfcControl, ObjectHelper { IfcPerformanceHistory() : Object("IfcPerformanceHistory") {} + IfcLabel::Out LifeCyclePhase; + }; + + // C++ wrapper for IfcPermit + struct IfcPermit : IfcControl, ObjectHelper { IfcPermit() : Object("IfcPermit") {} + IfcIdentifier::Out PermitID; + }; + + // C++ wrapper for IfcPile + struct IfcPile : IfcBuildingElement, ObjectHelper { IfcPile() : Object("IfcPile") {} + IfcPileTypeEnum::Out PredefinedType; + Maybe< IfcPileConstructionEnum::Out > ConstructionType; + }; + + // C++ wrapper for IfcPipeFittingType + struct IfcPipeFittingType : IfcFlowFittingType, ObjectHelper { IfcPipeFittingType() : Object("IfcPipeFittingType") {} + IfcPipeFittingTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPipeSegmentType + struct IfcPipeSegmentType : IfcFlowSegmentType, ObjectHelper { IfcPipeSegmentType() : Object("IfcPipeSegmentType") {} + IfcPipeSegmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPlanarExtent + struct IfcPlanarExtent : IfcGeometricRepresentationItem, ObjectHelper { IfcPlanarExtent() : Object("IfcPlanarExtent") {} + IfcLengthMeasure::Out SizeInX; + IfcLengthMeasure::Out SizeInY; + }; + + // C++ wrapper for IfcPlanarBox + struct IfcPlanarBox : IfcPlanarExtent, ObjectHelper { IfcPlanarBox() : Object("IfcPlanarBox") {} + IfcAxis2Placement::Out Placement; + }; + + // C++ wrapper for IfcPlane + struct IfcPlane : IfcElementarySurface, ObjectHelper { IfcPlane() : Object("IfcPlane") {} + + }; + + // C++ wrapper for IfcPlate + struct IfcPlate : IfcBuildingElement, ObjectHelper { IfcPlate() : Object("IfcPlate") {} + + }; + + // C++ wrapper for IfcPlateType + struct IfcPlateType : IfcBuildingElementType, ObjectHelper { IfcPlateType() : Object("IfcPlateType") {} + IfcPlateTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcPointOnCurve + struct IfcPointOnCurve : IfcPoint, ObjectHelper { IfcPointOnCurve() : Object("IfcPointOnCurve") {} + Lazy< IfcCurve > BasisCurve; + IfcParameterValue::Out PointParameter; + }; + + // C++ wrapper for IfcPointOnSurface + struct IfcPointOnSurface : IfcPoint, ObjectHelper { IfcPointOnSurface() : Object("IfcPointOnSurface") {} + Lazy< IfcSurface > BasisSurface; + IfcParameterValue::Out PointParameterU; + IfcParameterValue::Out PointParameterV; + }; + + // C++ wrapper for IfcPolyLoop + struct IfcPolyLoop : IfcLoop, ObjectHelper { IfcPolyLoop() : Object("IfcPolyLoop") {} + ListOf< Lazy< IfcCartesianPoint >, 3, 0 > Polygon; + }; + + // C++ wrapper for IfcPolygonalBoundedHalfSpace + struct IfcPolygonalBoundedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcPolygonalBoundedHalfSpace() : Object("IfcPolygonalBoundedHalfSpace") {} + Lazy< IfcAxis2Placement3D > Position; + Lazy< IfcBoundedCurve > PolygonalBoundary; + }; + + // C++ wrapper for IfcPolyline + struct IfcPolyline : IfcBoundedCurve, ObjectHelper { IfcPolyline() : Object("IfcPolyline") {} + ListOf< Lazy< IfcCartesianPoint >, 2, 0 > Points; + }; + + // C++ wrapper for IfcPresentationStyleAssignment + struct IfcPresentationStyleAssignment : ObjectHelper { IfcPresentationStyleAssignment() : Object("IfcPresentationStyleAssignment") {} + ListOf< IfcPresentationStyleSelect, 1, 0 >::Out Styles; + }; + + // C++ wrapper for IfcProcedure + struct IfcProcedure : IfcProcess, ObjectHelper { IfcProcedure() : Object("IfcProcedure") {} + IfcIdentifier::Out ProcedureID; + IfcProcedureTypeEnum::Out ProcedureType; + Maybe< IfcLabel::Out > UserDefinedProcedureType; + }; + + // C++ wrapper for IfcProductDefinitionShape + struct IfcProductDefinitionShape : IfcProductRepresentation, ObjectHelper { IfcProductDefinitionShape() : Object("IfcProductDefinitionShape") {} + + }; + + // C++ wrapper for IfcProject + struct IfcProject : IfcObject, ObjectHelper { IfcProject() : Object("IfcProject") {} + Maybe< IfcLabel::Out > LongName; + Maybe< IfcLabel::Out > Phase; + ListOf< Lazy< IfcRepresentationContext >, 1, 0 > RepresentationContexts; + Lazy< IfcUnitAssignment > UnitsInContext; + }; + + // C++ wrapper for IfcProjectOrder + struct IfcProjectOrder : IfcControl, ObjectHelper { IfcProjectOrder() : Object("IfcProjectOrder") {} + IfcIdentifier::Out ID; + IfcProjectOrderTypeEnum::Out PredefinedType; + Maybe< IfcLabel::Out > Status; + }; + + // C++ wrapper for IfcProjectOrderRecord + struct IfcProjectOrderRecord : IfcControl, ObjectHelper { IfcProjectOrderRecord() : Object("IfcProjectOrderRecord") {} + ListOf< Lazy< NotImplemented >, 1, 0 > Records; + IfcProjectOrderRecordTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcProjectionCurve + struct IfcProjectionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcProjectionCurve() : Object("IfcProjectionCurve") {} + + }; + + // C++ wrapper for IfcProjectionElement + struct IfcProjectionElement : IfcFeatureElementAddition, ObjectHelper { IfcProjectionElement() : Object("IfcProjectionElement") {} + + }; + + // C++ wrapper for IfcSimpleProperty + struct IfcSimpleProperty : IfcProperty, ObjectHelper { IfcSimpleProperty() : Object("IfcSimpleProperty") {} + + }; + + // C++ wrapper for IfcPropertyBoundedValue + struct IfcPropertyBoundedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyBoundedValue() : Object("IfcPropertyBoundedValue") {} + Maybe< IfcValue::Out > UpperBoundValue; + Maybe< IfcValue::Out > LowerBoundValue; + Maybe< IfcUnit::Out > Unit; + }; + + // C++ wrapper for IfcPropertyEnumeratedValue + struct IfcPropertyEnumeratedValue : IfcSimpleProperty, ObjectHelper { IfcPropertyEnumeratedValue() : Object("IfcPropertyEnumeratedValue") {} + ListOf< IfcValue, 1, 0 >::Out EnumerationValues; + Maybe< Lazy< NotImplemented > > EnumerationReference; + }; + + // C++ wrapper for IfcPropertyListValue + struct IfcPropertyListValue : IfcSimpleProperty, ObjectHelper { IfcPropertyListValue() : Object("IfcPropertyListValue") {} + ListOf< IfcValue, 1, 0 >::Out ListValues; + Maybe< IfcUnit::Out > Unit; }; // C++ wrapper for IfcPropertyReferenceValue @@ -3164,18 +3080,15 @@ namespace IFC { IfcObjectReferenceSelect::Out PropertyReference; }; - // C++ wrapper for IfcSite - struct IfcSite : IfcSpatialStructureElement, ObjectHelper { IfcSite() : Object("IfcSite") {} - Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLatitude; - Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLongitude; - Maybe< IfcLengthMeasure::Out > RefElevation; - Maybe< IfcLabel::Out > LandTitleNumber; - Maybe< Lazy< NotImplemented > > SiteAddress; + // C++ wrapper for IfcPropertySet + struct IfcPropertySet : IfcPropertySetDefinition, ObjectHelper { IfcPropertySet() : Object("IfcPropertySet") {} + ListOf< Lazy< IfcProperty >, 1, 0 > HasProperties; }; - // C++ wrapper for IfcPerformanceHistory - struct IfcPerformanceHistory : IfcControl, ObjectHelper { IfcPerformanceHistory() : Object("IfcPerformanceHistory") {} - IfcLabel::Out LifeCyclePhase; + // C++ wrapper for IfcPropertySingleValue + struct IfcPropertySingleValue : IfcSimpleProperty, ObjectHelper { IfcPropertySingleValue() : Object("IfcPropertySingleValue") {} + Maybe< IfcValue::Out > NominalValue; + Maybe< IfcUnit::Out > Unit; }; // C++ wrapper for IfcPropertyTableValue @@ -3187,34 +3100,224 @@ namespace IFC { Maybe< IfcUnit::Out > DefinedUnit; }; - // C++ wrapper for IfcTransportElementType - struct IfcTransportElementType : IfcElementType, ObjectHelper { IfcTransportElementType() : Object("IfcTransportElementType") {} - IfcTransportElementTypeEnum::Out PredefinedType; + // C++ wrapper for IfcProtectiveDeviceType + struct IfcProtectiveDeviceType : IfcFlowControllerType, ObjectHelper { IfcProtectiveDeviceType() : Object("IfcProtectiveDeviceType") {} + IfcProtectiveDeviceTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPolygonalBoundedHalfSpace - struct IfcPolygonalBoundedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcPolygonalBoundedHalfSpace() : Object("IfcPolygonalBoundedHalfSpace") {} - Lazy< IfcAxis2Placement3D > Position; - Lazy< IfcBoundedCurve > PolygonalBoundary; + // C++ wrapper for IfcProxy + struct IfcProxy : IfcProduct, ObjectHelper { IfcProxy() : Object("IfcProxy") {} + IfcObjectTypeEnum::Out ProxyType; + Maybe< IfcLabel::Out > Tag; }; - // C++ wrapper for IfcAxis2Placement2D - struct IfcAxis2Placement2D : IfcPlacement, ObjectHelper { IfcAxis2Placement2D() : Object("IfcAxis2Placement2D") {} - Maybe< Lazy< IfcDirection > > RefDirection; + // C++ wrapper for IfcPumpType + struct IfcPumpType : IfcFlowMovingDeviceType, ObjectHelper { IfcPumpType() : Object("IfcPumpType") {} + IfcPumpTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcFillAreaStyleHatching - struct IfcFillAreaStyleHatching : IfcGeometricRepresentationItem, ObjectHelper { IfcFillAreaStyleHatching() : Object("IfcFillAreaStyleHatching") {} - Lazy< NotImplemented > HatchLineAppearance; - IfcHatchLineDistanceSelect::Out StartOfNextHatchLine; - Maybe< Lazy< IfcCartesianPoint > > PointOfReferenceHatchLine; - Maybe< Lazy< IfcCartesianPoint > > PatternStart; - IfcPlaneAngleMeasure::Out HatchLineAngle; + // C++ wrapper for IfcRadiusDimension + struct IfcRadiusDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcRadiusDimension() : Object("IfcRadiusDimension") {} + }; - // C++ wrapper for IfcFastener - struct IfcFastener : IfcElementComponent, ObjectHelper { IfcFastener() : Object("IfcFastener") {} + // C++ wrapper for IfcRailing + struct IfcRailing : IfcBuildingElement, ObjectHelper { IfcRailing() : Object("IfcRailing") {} + Maybe< IfcRailingTypeEnum::Out > PredefinedType; + }; + // C++ wrapper for IfcRailingType + struct IfcRailingType : IfcBuildingElementType, ObjectHelper { IfcRailingType() : Object("IfcRailingType") {} + IfcRailingTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcRamp + struct IfcRamp : IfcBuildingElement, ObjectHelper { IfcRamp() : Object("IfcRamp") {} + IfcRampTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcRampFlight + struct IfcRampFlight : IfcBuildingElement, ObjectHelper { IfcRampFlight() : Object("IfcRampFlight") {} + + }; + + // C++ wrapper for IfcRampFlightType + struct IfcRampFlightType : IfcBuildingElementType, ObjectHelper { IfcRampFlightType() : Object("IfcRampFlightType") {} + IfcRampFlightTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcRationalBezierCurve + struct IfcRationalBezierCurve : IfcBezierCurve, ObjectHelper { IfcRationalBezierCurve() : Object("IfcRationalBezierCurve") {} + ListOf< REAL, 2, 0 >::Out WeightsData; + }; + + // C++ wrapper for IfcRectangleProfileDef + struct IfcRectangleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcRectangleProfileDef() : Object("IfcRectangleProfileDef") {} + IfcPositiveLengthMeasure::Out XDim; + IfcPositiveLengthMeasure::Out YDim; + }; + + // C++ wrapper for IfcRectangleHollowProfileDef + struct IfcRectangleHollowProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRectangleHollowProfileDef() : Object("IfcRectangleHollowProfileDef") {} + IfcPositiveLengthMeasure::Out WallThickness; + Maybe< IfcPositiveLengthMeasure::Out > InnerFilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > OuterFilletRadius; + }; + + // C++ wrapper for IfcRectangularPyramid + struct IfcRectangularPyramid : IfcCsgPrimitive3D, ObjectHelper { IfcRectangularPyramid() : Object("IfcRectangularPyramid") {} + IfcPositiveLengthMeasure::Out XLength; + IfcPositiveLengthMeasure::Out YLength; + IfcPositiveLengthMeasure::Out Height; + }; + + // C++ wrapper for IfcRectangularTrimmedSurface + struct IfcRectangularTrimmedSurface : IfcBoundedSurface, ObjectHelper { IfcRectangularTrimmedSurface() : Object("IfcRectangularTrimmedSurface") {} + Lazy< IfcSurface > BasisSurface; + IfcParameterValue::Out U1; + IfcParameterValue::Out V1; + IfcParameterValue::Out U2; + IfcParameterValue::Out V2; + BOOLEAN::Out Usense; + BOOLEAN::Out Vsense; + }; + + // C++ wrapper for IfcReinforcingElement + struct IfcReinforcingElement : IfcBuildingElementComponent, ObjectHelper { IfcReinforcingElement() : Object("IfcReinforcingElement") {} + Maybe< IfcLabel::Out > SteelGrade; + }; + + // C++ wrapper for IfcReinforcingBar + struct IfcReinforcingBar : IfcReinforcingElement, ObjectHelper { IfcReinforcingBar() : Object("IfcReinforcingBar") {} + IfcPositiveLengthMeasure::Out NominalDiameter; + IfcAreaMeasure::Out CrossSectionArea; + Maybe< IfcPositiveLengthMeasure::Out > BarLength; + IfcReinforcingBarRoleEnum::Out BarRole; + Maybe< IfcReinforcingBarSurfaceEnum::Out > BarSurface; + }; + + // C++ wrapper for IfcReinforcingMesh + struct IfcReinforcingMesh : IfcReinforcingElement, ObjectHelper { IfcReinforcingMesh() : Object("IfcReinforcingMesh") {} + Maybe< IfcPositiveLengthMeasure::Out > MeshLength; + Maybe< IfcPositiveLengthMeasure::Out > MeshWidth; + IfcPositiveLengthMeasure::Out LongitudinalBarNominalDiameter; + IfcPositiveLengthMeasure::Out TransverseBarNominalDiameter; + IfcAreaMeasure::Out LongitudinalBarCrossSectionArea; + IfcAreaMeasure::Out TransverseBarCrossSectionArea; + IfcPositiveLengthMeasure::Out LongitudinalBarSpacing; + IfcPositiveLengthMeasure::Out TransverseBarSpacing; + }; + + // C++ wrapper for IfcRelationship + struct IfcRelationship : IfcRoot, ObjectHelper { IfcRelationship() : Object("IfcRelationship") {} + + }; + + // C++ wrapper for IfcRelDecomposes + struct IfcRelDecomposes : IfcRelationship, ObjectHelper { IfcRelDecomposes() : Object("IfcRelDecomposes") {} + Lazy< IfcObjectDefinition > RelatingObject; + ListOf< Lazy< IfcObjectDefinition >, 1, 0 > RelatedObjects; + }; + + // C++ wrapper for IfcRelAggregates + struct IfcRelAggregates : IfcRelDecomposes, ObjectHelper { IfcRelAggregates() : Object("IfcRelAggregates") {} + + }; + + // C++ wrapper for IfcRelConnects + struct IfcRelConnects : IfcRelationship, ObjectHelper { IfcRelConnects() : Object("IfcRelConnects") {} + + }; + + // C++ wrapper for IfcRelContainedInSpatialStructure + struct IfcRelContainedInSpatialStructure : IfcRelConnects, ObjectHelper { IfcRelContainedInSpatialStructure() : Object("IfcRelContainedInSpatialStructure") {} + ListOf< Lazy< IfcProduct >, 1, 0 > RelatedElements; + Lazy< IfcSpatialStructureElement > RelatingStructure; + }; + + // C++ wrapper for IfcRelDefines + struct IfcRelDefines : IfcRelationship, ObjectHelper { IfcRelDefines() : Object("IfcRelDefines") {} + ListOf< Lazy< IfcObject >, 1, 0 > RelatedObjects; + }; + + // C++ wrapper for IfcRelDefinesByProperties + struct IfcRelDefinesByProperties : IfcRelDefines, ObjectHelper { IfcRelDefinesByProperties() : Object("IfcRelDefinesByProperties") {} + Lazy< IfcPropertySetDefinition > RelatingPropertyDefinition; + }; + + // C++ wrapper for IfcRelFillsElement + struct IfcRelFillsElement : IfcRelConnects, ObjectHelper { IfcRelFillsElement() : Object("IfcRelFillsElement") {} + Lazy< IfcOpeningElement > RelatingOpeningElement; + Lazy< IfcElement > RelatedBuildingElement; + }; + + // C++ wrapper for IfcRelOverridesProperties + struct IfcRelOverridesProperties : IfcRelDefinesByProperties, ObjectHelper { IfcRelOverridesProperties() : Object("IfcRelOverridesProperties") {} + ListOf< Lazy< IfcProperty >, 1, 0 > OverridingProperties; + }; + + // C++ wrapper for IfcRelVoidsElement + struct IfcRelVoidsElement : IfcRelConnects, ObjectHelper { IfcRelVoidsElement() : Object("IfcRelVoidsElement") {} + Lazy< IfcElement > RelatingBuildingElement; + Lazy< IfcFeatureElementSubtraction > RelatedOpeningElement; + }; + + // C++ wrapper for IfcRepresentation + struct IfcRepresentation : ObjectHelper { IfcRepresentation() : Object("IfcRepresentation") {} + Lazy< IfcRepresentationContext > ContextOfItems; + Maybe< IfcLabel::Out > RepresentationIdentifier; + Maybe< IfcLabel::Out > RepresentationType; + ListOf< Lazy< IfcRepresentationItem >, 1, 0 > Items; + }; + + // C++ wrapper for IfcRepresentationMap + struct IfcRepresentationMap : ObjectHelper { IfcRepresentationMap() : Object("IfcRepresentationMap") {} + IfcAxis2Placement::Out MappingOrigin; + Lazy< IfcRepresentation > MappedRepresentation; + }; + + // C++ wrapper for IfcRevolvedAreaSolid + struct IfcRevolvedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcRevolvedAreaSolid() : Object("IfcRevolvedAreaSolid") {} + Lazy< IfcAxis1Placement > Axis; + IfcPlaneAngleMeasure::Out Angle; + }; + + // C++ wrapper for IfcRightCircularCone + struct IfcRightCircularCone : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCone() : Object("IfcRightCircularCone") {} + IfcPositiveLengthMeasure::Out Height; + IfcPositiveLengthMeasure::Out BottomRadius; + }; + + // C++ wrapper for IfcRightCircularCylinder + struct IfcRightCircularCylinder : IfcCsgPrimitive3D, ObjectHelper { IfcRightCircularCylinder() : Object("IfcRightCircularCylinder") {} + IfcPositiveLengthMeasure::Out Height; + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcRoof + struct IfcRoof : IfcBuildingElement, ObjectHelper { IfcRoof() : Object("IfcRoof") {} + IfcRoofTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcRoundedEdgeFeature + struct IfcRoundedEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcRoundedEdgeFeature() : Object("IfcRoundedEdgeFeature") {} + Maybe< IfcPositiveLengthMeasure::Out > Radius; + }; + + // C++ wrapper for IfcRoundedRectangleProfileDef + struct IfcRoundedRectangleProfileDef : IfcRectangleProfileDef, ObjectHelper { IfcRoundedRectangleProfileDef() : Object("IfcRoundedRectangleProfileDef") {} + IfcPositiveLengthMeasure::Out RoundingRadius; + }; + + // C++ wrapper for IfcSIUnit + struct IfcSIUnit : IfcNamedUnit, ObjectHelper { IfcSIUnit() : Object("IfcSIUnit") {} + Maybe< IfcSIPrefix::Out > Prefix; + IfcSIUnitName::Out Name; + }; + + // C++ wrapper for IfcSanitaryTerminalType + struct IfcSanitaryTerminalType : IfcFlowTerminalType, ObjectHelper { IfcSanitaryTerminalType() : Object("IfcSanitaryTerminalType") {} + IfcSanitaryTerminalTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcScheduleTimeControl @@ -3239,107 +3342,273 @@ namespace IFC { Maybe< IfcPositiveRatioMeasure::Out > Completion; }; - // C++ wrapper for IfcElectricMotorType - struct IfcElectricMotorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcElectricMotorType() : Object("IfcElectricMotorType") {} - IfcElectricMotorTypeEnum::Out PredefinedType; + // C++ wrapper for IfcSectionedSpine + struct IfcSectionedSpine : IfcGeometricRepresentationItem, ObjectHelper { IfcSectionedSpine() : Object("IfcSectionedSpine") {} + Lazy< IfcCompositeCurve > SpineCurve; + ListOf< Lazy< IfcProfileDef >, 2, 0 > CrossSections; + ListOf< Lazy< IfcAxis2Placement3D >, 2, 0 > CrossSectionPositions; }; - // C++ wrapper for IfcTimeSeriesSchedule - struct IfcTimeSeriesSchedule : IfcControl, ObjectHelper { IfcTimeSeriesSchedule() : Object("IfcTimeSeriesSchedule") {} - Maybe< ListOf< IfcDateTimeSelect, 1, 0 >::Out > ApplicableDates; - IfcTimeSeriesScheduleTypeEnum::Out TimeSeriesScheduleType; - Lazy< NotImplemented > TimeSeries; + // C++ wrapper for IfcSensorType + struct IfcSensorType : IfcDistributionControlElementType, ObjectHelper { IfcSensorType() : Object("IfcSensorType") {} + IfcSensorTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcPipeSegmentType - struct IfcPipeSegmentType : IfcFlowSegmentType, ObjectHelper { IfcPipeSegmentType() : Object("IfcPipeSegmentType") {} - IfcPipeSegmentTypeEnum::Out PredefinedType; + // C++ wrapper for IfcServiceLife + struct IfcServiceLife : IfcControl, ObjectHelper { IfcServiceLife() : Object("IfcServiceLife") {} + IfcServiceLifeTypeEnum::Out ServiceLifeType; + IfcTimeMeasure::Out ServiceLifeDuration; }; - // C++ wrapper for IfcFlowTerminal - struct IfcFlowTerminal : IfcDistributionFlowElement, ObjectHelper { IfcFlowTerminal() : Object("IfcFlowTerminal") {} + // C++ wrapper for IfcShapeModel + struct IfcShapeModel : IfcRepresentation, ObjectHelper { IfcShapeModel() : Object("IfcShapeModel") {} }; - // C++ wrapper for IfcWallType - struct IfcWallType : IfcBuildingElementType, ObjectHelper { IfcWallType() : Object("IfcWallType") {} - IfcWallTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCoilType - struct IfcCoilType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoilType() : Object("IfcCoilType") {} - IfcCoilTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFurnishingElement - struct IfcFurnishingElement : IfcElement, ObjectHelper { IfcFurnishingElement() : Object("IfcFurnishingElement") {} + // C++ wrapper for IfcShapeRepresentation + struct IfcShapeRepresentation : IfcShapeModel, ObjectHelper { IfcShapeRepresentation() : Object("IfcShapeRepresentation") {} }; - // C++ wrapper for IfcWasteTerminalType - struct IfcWasteTerminalType : IfcFlowTerminalType, ObjectHelper { IfcWasteTerminalType() : Object("IfcWasteTerminalType") {} - IfcWasteTerminalTypeEnum::Out PredefinedType; + // C++ wrapper for IfcShellBasedSurfaceModel + struct IfcShellBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcShellBasedSurfaceModel() : Object("IfcShellBasedSurfaceModel") {} + ListOf< IfcShell, 1, 0 >::Out SbsmBoundary; }; - // C++ wrapper for IfcWindow - struct IfcWindow : IfcBuildingElement, ObjectHelper { IfcWindow() : Object("IfcWindow") {} - Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; - Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; + // C++ wrapper for IfcSite + struct IfcSite : IfcSpatialStructureElement, ObjectHelper { IfcSite() : Object("IfcSite") {} + Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLatitude; + Maybe< IfcCompoundPlaneAngleMeasure::Out > RefLongitude; + Maybe< IfcLengthMeasure::Out > RefElevation; + Maybe< IfcLabel::Out > LandTitleNumber; + Maybe< Lazy< NotImplemented > > SiteAddress; }; - // C++ wrapper for IfcElectricFlowStorageDeviceType - struct IfcElectricFlowStorageDeviceType : IfcFlowStorageDeviceType, ObjectHelper { IfcElectricFlowStorageDeviceType() : Object("IfcElectricFlowStorageDeviceType") {} - IfcElectricFlowStorageDeviceTypeEnum::Out PredefinedType; + // C++ wrapper for IfcSlab + struct IfcSlab : IfcBuildingElement, ObjectHelper { IfcSlab() : Object("IfcSlab") {} + Maybe< IfcSlabTypeEnum::Out > PredefinedType; }; - // C++ wrapper for IfcRelAggregates - struct IfcRelAggregates : IfcRelDecomposes, ObjectHelper { IfcRelAggregates() : Object("IfcRelAggregates") {} + // C++ wrapper for IfcSlabType + struct IfcSlabType : IfcBuildingElementType, ObjectHelper { IfcSlabType() : Object("IfcSlabType") {} + IfcSlabTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSpace + struct IfcSpace : IfcSpatialStructureElement, ObjectHelper { IfcSpace() : Object("IfcSpace") {} + IfcInternalOrExternalEnum::Out InteriorOrExteriorSpace; + Maybe< IfcLengthMeasure::Out > ElevationWithFlooring; + }; + + // C++ wrapper for IfcSpaceHeaterType + struct IfcSpaceHeaterType : IfcEnergyConversionDeviceType, ObjectHelper { IfcSpaceHeaterType() : Object("IfcSpaceHeaterType") {} + IfcSpaceHeaterTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcSpaceProgram + struct IfcSpaceProgram : IfcControl, ObjectHelper { IfcSpaceProgram() : Object("IfcSpaceProgram") {} + IfcIdentifier::Out SpaceProgramIdentifier; + Maybe< IfcAreaMeasure::Out > MaxRequiredArea; + Maybe< IfcAreaMeasure::Out > MinRequiredArea; + Maybe< Lazy< IfcSpatialStructureElement > > RequestedLocation; + IfcAreaMeasure::Out StandardRequiredArea; + }; + + // C++ wrapper for IfcSpatialStructureElementType + struct IfcSpatialStructureElementType : IfcElementType, ObjectHelper { IfcSpatialStructureElementType() : Object("IfcSpatialStructureElementType") {} }; - // C++ wrapper for IfcRamp - struct IfcRamp : IfcBuildingElement, ObjectHelper { IfcRamp() : Object("IfcRamp") {} - IfcRampTypeEnum::Out ShapeType; + // C++ wrapper for IfcSpaceType + struct IfcSpaceType : IfcSpatialStructureElementType, ObjectHelper { IfcSpaceType() : Object("IfcSpaceType") {} + IfcSpaceTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcLinearDimension - struct IfcLinearDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcLinearDimension() : Object("IfcLinearDimension") {} + // C++ wrapper for IfcSphere + struct IfcSphere : IfcCsgPrimitive3D, ObjectHelper { IfcSphere() : Object("IfcSphere") {} + IfcPositiveLengthMeasure::Out Radius; + }; + + // C++ wrapper for IfcStackTerminalType + struct IfcStackTerminalType : IfcFlowTerminalType, ObjectHelper { IfcStackTerminalType() : Object("IfcStackTerminalType") {} + IfcStackTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcStair + struct IfcStair : IfcBuildingElement, ObjectHelper { IfcStair() : Object("IfcStair") {} + IfcStairTypeEnum::Out ShapeType; + }; + + // C++ wrapper for IfcStairFlight + struct IfcStairFlight : IfcBuildingElement, ObjectHelper { IfcStairFlight() : Object("IfcStairFlight") {} + Maybe< INTEGER::Out > NumberOfRiser; + Maybe< INTEGER::Out > NumberOfTreads; + Maybe< IfcPositiveLengthMeasure::Out > RiserHeight; + Maybe< IfcPositiveLengthMeasure::Out > TreadLength; + }; + + // C++ wrapper for IfcStairFlightType + struct IfcStairFlightType : IfcBuildingElementType, ObjectHelper { IfcStairFlightType() : Object("IfcStairFlightType") {} + IfcStairFlightTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcStructuralActivity + struct IfcStructuralActivity : IfcProduct, ObjectHelper { IfcStructuralActivity() : Object("IfcStructuralActivity") {} + Lazy< NotImplemented > AppliedLoad; + IfcGlobalOrLocalEnum::Out GlobalOrLocal; + }; + + // C++ wrapper for IfcStructuralAction + struct IfcStructuralAction : IfcStructuralActivity, ObjectHelper { IfcStructuralAction() : Object("IfcStructuralAction") {} + BOOLEAN::Out DestabilizingLoad; + Maybe< Lazy< IfcStructuralReaction > > CausedBy; + }; + + // C++ wrapper for IfcStructuralAnalysisModel + struct IfcStructuralAnalysisModel : IfcSystem, ObjectHelper { IfcStructuralAnalysisModel() : Object("IfcStructuralAnalysisModel") {} + IfcAnalysisModelTypeEnum::Out PredefinedType; + Maybe< Lazy< IfcAxis2Placement3D > > OrientationOf2DPlane; + Maybe< ListOf< Lazy< IfcStructuralLoadGroup >, 1, 0 > > LoadedBy; + Maybe< ListOf< Lazy< IfcStructuralResultGroup >, 1, 0 > > HasResults; + }; + + // C++ wrapper for IfcStructuralItem + struct IfcStructuralItem : IfcProduct, ObjectHelper { IfcStructuralItem() : Object("IfcStructuralItem") {} }; - // C++ wrapper for IfcElementarySurface - struct IfcElementarySurface : IfcSurface, ObjectHelper { IfcElementarySurface() : Object("IfcElementarySurface") {} - Lazy< IfcAxis2Placement3D > Position; + // C++ wrapper for IfcStructuralConnection + struct IfcStructuralConnection : IfcStructuralItem, ObjectHelper { IfcStructuralConnection() : Object("IfcStructuralConnection") {} + Maybe< Lazy< NotImplemented > > AppliedCondition; }; - // C++ wrapper for IfcConstructionProductResource - struct IfcConstructionProductResource : IfcConstructionResource, ObjectHelper { IfcConstructionProductResource() : Object("IfcConstructionProductResource") {} + // C++ wrapper for IfcStructuralCurveConnection + struct IfcStructuralCurveConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralCurveConnection() : Object("IfcStructuralCurveConnection") {} }; - // C++ wrapper for IfcCableSegmentType - struct IfcCableSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableSegmentType() : Object("IfcCableSegmentType") {} - IfcCableSegmentTypeEnum::Out PredefinedType; + // C++ wrapper for IfcStructuralMember + struct IfcStructuralMember : IfcStructuralItem, ObjectHelper { IfcStructuralMember() : Object("IfcStructuralMember") {} + }; - // C++ wrapper for IfcPath - struct IfcPath : IfcTopologicalRepresentationItem, ObjectHelper { IfcPath() : Object("IfcPath") {} - ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; + // C++ wrapper for IfcStructuralCurveMember + struct IfcStructuralCurveMember : IfcStructuralMember, ObjectHelper { IfcStructuralCurveMember() : Object("IfcStructuralCurveMember") {} + IfcStructuralCurveTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcActor - struct IfcActor : IfcObject, ObjectHelper { IfcActor() : Object("IfcActor") {} - IfcActorSelect::Out TheActor; + // C++ wrapper for IfcStructuralCurveMemberVarying + struct IfcStructuralCurveMemberVarying : IfcStructuralCurveMember, ObjectHelper { IfcStructuralCurveMemberVarying() : Object("IfcStructuralCurveMemberVarying") {} + }; - // C++ wrapper for IfcOccupant - struct IfcOccupant : IfcActor, ObjectHelper { IfcOccupant() : Object("IfcOccupant") {} - IfcOccupantTypeEnum::Out PredefinedType; + // C++ wrapper for IfcStructuralLinearAction + struct IfcStructuralLinearAction : IfcStructuralAction, ObjectHelper { IfcStructuralLinearAction() : Object("IfcStructuralLinearAction") {} + IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; }; - // C++ wrapper for IfcSwitchingDeviceType - struct IfcSwitchingDeviceType : IfcFlowControllerType, ObjectHelper { IfcSwitchingDeviceType() : Object("IfcSwitchingDeviceType") {} - IfcSwitchingDeviceTypeEnum::Out PredefinedType; + // C++ wrapper for IfcStructuralLinearActionVarying + struct IfcStructuralLinearActionVarying : IfcStructuralLinearAction, ObjectHelper { IfcStructuralLinearActionVarying() : Object("IfcStructuralLinearActionVarying") {} + Lazy< NotImplemented > VaryingAppliedLoadLocation; + ListOf< Lazy< NotImplemented >, 1, 0 > SubsequentAppliedLoads; + }; + + // C++ wrapper for IfcStructuralLoadGroup + struct IfcStructuralLoadGroup : IfcGroup, ObjectHelper { IfcStructuralLoadGroup() : Object("IfcStructuralLoadGroup") {} + IfcLoadGroupTypeEnum::Out PredefinedType; + IfcActionTypeEnum::Out ActionType; + IfcActionSourceTypeEnum::Out ActionSource; + Maybe< IfcPositiveRatioMeasure::Out > Coefficient; + Maybe< IfcLabel::Out > Purpose; + }; + + // C++ wrapper for IfcStructuralPlanarAction + struct IfcStructuralPlanarAction : IfcStructuralAction, ObjectHelper { IfcStructuralPlanarAction() : Object("IfcStructuralPlanarAction") {} + IfcProjectedOrTrueLengthEnum::Out ProjectedOrTrue; + }; + + // C++ wrapper for IfcStructuralPlanarActionVarying + struct IfcStructuralPlanarActionVarying : IfcStructuralPlanarAction, ObjectHelper { IfcStructuralPlanarActionVarying() : Object("IfcStructuralPlanarActionVarying") {} + Lazy< NotImplemented > VaryingAppliedLoadLocation; + ListOf< Lazy< NotImplemented >, 2, 0 > SubsequentAppliedLoads; + }; + + // C++ wrapper for IfcStructuralPointAction + struct IfcStructuralPointAction : IfcStructuralAction, ObjectHelper { IfcStructuralPointAction() : Object("IfcStructuralPointAction") {} + + }; + + // C++ wrapper for IfcStructuralPointConnection + struct IfcStructuralPointConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralPointConnection() : Object("IfcStructuralPointConnection") {} + + }; + + // C++ wrapper for IfcStructuralReaction + struct IfcStructuralReaction : IfcStructuralActivity, ObjectHelper { IfcStructuralReaction() : Object("IfcStructuralReaction") {} + + }; + + // C++ wrapper for IfcStructuralPointReaction + struct IfcStructuralPointReaction : IfcStructuralReaction, ObjectHelper { IfcStructuralPointReaction() : Object("IfcStructuralPointReaction") {} + + }; + + // C++ wrapper for IfcStructuralResultGroup + struct IfcStructuralResultGroup : IfcGroup, ObjectHelper { IfcStructuralResultGroup() : Object("IfcStructuralResultGroup") {} + IfcAnalysisTheoryTypeEnum::Out TheoryType; + Maybe< Lazy< IfcStructuralLoadGroup > > ResultForLoadGroup; + BOOLEAN::Out IsLinear; + }; + + // C++ wrapper for IfcStructuralSurfaceConnection + struct IfcStructuralSurfaceConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralSurfaceConnection() : Object("IfcStructuralSurfaceConnection") {} + + }; + + // C++ wrapper for IfcStructuralSurfaceMember + struct IfcStructuralSurfaceMember : IfcStructuralMember, ObjectHelper { IfcStructuralSurfaceMember() : Object("IfcStructuralSurfaceMember") {} + IfcStructuralSurfaceTypeEnum::Out PredefinedType; + Maybe< IfcPositiveLengthMeasure::Out > Thickness; + }; + + // C++ wrapper for IfcStructuralSurfaceMemberVarying + struct IfcStructuralSurfaceMemberVarying : IfcStructuralSurfaceMember, ObjectHelper { IfcStructuralSurfaceMemberVarying() : Object("IfcStructuralSurfaceMemberVarying") {} + ListOf< IfcPositiveLengthMeasure, 2, 0 >::Out SubsequentThickness; + Lazy< NotImplemented > VaryingThicknessLocation; + }; + + // C++ wrapper for IfcStructuredDimensionCallout + struct IfcStructuredDimensionCallout : IfcDraughtingCallout, ObjectHelper { IfcStructuredDimensionCallout() : Object("IfcStructuredDimensionCallout") {} + + }; + + // C++ wrapper for IfcStyleModel + struct IfcStyleModel : IfcRepresentation, ObjectHelper { IfcStyleModel() : Object("IfcStyleModel") {} + + }; + + // C++ wrapper for IfcStyledRepresentation + struct IfcStyledRepresentation : IfcStyleModel, ObjectHelper { IfcStyledRepresentation() : Object("IfcStyledRepresentation") {} + + }; + + // C++ wrapper for IfcSubContractResource + struct IfcSubContractResource : IfcConstructionResource, ObjectHelper { IfcSubContractResource() : Object("IfcSubContractResource") {} + Maybe< IfcActorSelect::Out > SubContractor; + Maybe< IfcText::Out > JobDescription; + }; + + // C++ wrapper for IfcSubedge + struct IfcSubedge : IfcEdge, ObjectHelper { IfcSubedge() : Object("IfcSubedge") {} + Lazy< IfcEdge > ParentEdge; + }; + + // C++ wrapper for IfcSurfaceCurveSweptAreaSolid + struct IfcSurfaceCurveSweptAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcSurfaceCurveSweptAreaSolid() : Object("IfcSurfaceCurveSweptAreaSolid") {} + Lazy< IfcCurve > Directrix; + IfcParameterValue::Out StartParam; + IfcParameterValue::Out EndParam; + Lazy< IfcSurface > ReferenceSurface; }; // C++ wrapper for IfcSweptSurface @@ -3354,27 +3623,51 @@ namespace IFC { IfcLengthMeasure::Out Depth; }; - // C++ wrapper for IfcShellBasedSurfaceModel - struct IfcShellBasedSurfaceModel : IfcGeometricRepresentationItem, ObjectHelper { IfcShellBasedSurfaceModel() : Object("IfcShellBasedSurfaceModel") {} - ListOf< IfcShell, 1, 0 >::Out SbsmBoundary; + // C++ wrapper for IfcSurfaceOfRevolution + struct IfcSurfaceOfRevolution : IfcSweptSurface, ObjectHelper { IfcSurfaceOfRevolution() : Object("IfcSurfaceOfRevolution") {} + Lazy< IfcAxis1Placement > AxisPosition; }; - // C++ wrapper for IfcBuilding - struct IfcBuilding : IfcSpatialStructureElement, ObjectHelper { IfcBuilding() : Object("IfcBuilding") {} - Maybe< IfcLengthMeasure::Out > ElevationOfRefHeight; - Maybe< IfcLengthMeasure::Out > ElevationOfTerrain; - Maybe< Lazy< NotImplemented > > BuildingAddress; + // C++ wrapper for IfcSurfaceStyle + struct IfcSurfaceStyle : IfcPresentationStyle, ObjectHelper { IfcSurfaceStyle() : Object("IfcSurfaceStyle") {} + IfcSurfaceSide::Out Side; + ListOf< IfcSurfaceStyleElementSelect, 1, 5 >::Out Styles; }; - // C++ wrapper for IfcSIUnit - struct IfcSIUnit : IfcNamedUnit, ObjectHelper { IfcSIUnit() : Object("IfcSIUnit") {} - Maybe< IfcSIPrefix::Out > Prefix; - IfcSIUnitName::Out Name; + // C++ wrapper for IfcSurfaceStyleShading + struct IfcSurfaceStyleShading : ObjectHelper { IfcSurfaceStyleShading() : Object("IfcSurfaceStyleShading") {} + Lazy< IfcColourRgb > SurfaceColour; }; - // C++ wrapper for IfcDiscreteAccessory - struct IfcDiscreteAccessory : IfcElementComponent, ObjectHelper { IfcDiscreteAccessory() : Object("IfcDiscreteAccessory") {} + // C++ wrapper for IfcSurfaceStyleRendering + struct IfcSurfaceStyleRendering : IfcSurfaceStyleShading, ObjectHelper { IfcSurfaceStyleRendering() : Object("IfcSurfaceStyleRendering") {} + Maybe< IfcNormalisedRatioMeasure::Out > Transparency; + Maybe< IfcColourOrFactor::Out > DiffuseColour; + Maybe< IfcColourOrFactor::Out > TransmissionColour; + Maybe< IfcColourOrFactor::Out > DiffuseTransmissionColour; + Maybe< IfcColourOrFactor::Out > ReflectionColour; + Maybe< IfcColourOrFactor::Out > SpecularColour; + Maybe< IfcSpecularHighlightSelect::Out > SpecularHighlight; + IfcReflectanceMethodEnum::Out ReflectanceMethod; + }; + // C++ wrapper for IfcSurfaceStyleWithTextures + struct IfcSurfaceStyleWithTextures : ObjectHelper { IfcSurfaceStyleWithTextures() : Object("IfcSurfaceStyleWithTextures") {} + ListOf< Lazy< NotImplemented >, 1, 0 > Textures; + }; + + // C++ wrapper for IfcSweptDiskSolid + struct IfcSweptDiskSolid : IfcSolidModel, ObjectHelper { IfcSweptDiskSolid() : Object("IfcSweptDiskSolid") {} + Lazy< IfcCurve > Directrix; + IfcPositiveLengthMeasure::Out Radius; + Maybe< IfcPositiveLengthMeasure::Out > InnerRadius; + IfcParameterValue::Out StartParam; + IfcParameterValue::Out EndParam; + }; + + // C++ wrapper for IfcSwitchingDeviceType + struct IfcSwitchingDeviceType : IfcFlowControllerType, ObjectHelper { IfcSwitchingDeviceType() : Object("IfcSwitchingDeviceType") {} + IfcSwitchingDeviceTypeEnum::Out PredefinedType; }; // C++ wrapper for IfcSystemFurnitureElementType @@ -3382,82 +3675,109 @@ namespace IFC { }; - // C++ wrapper for IfcElementAssembly - struct IfcElementAssembly : IfcElement, ObjectHelper { IfcElementAssembly() : Object("IfcElementAssembly") {} - Maybe< IfcAssemblyPlaceEnum::Out > AssemblyPlace; - IfcElementAssemblyTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCoolingTowerType - struct IfcCoolingTowerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcCoolingTowerType() : Object("IfcCoolingTowerType") {} - IfcCoolingTowerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLightSourceSpot - struct IfcLightSourceSpot : IfcLightSourcePositional, ObjectHelper { IfcLightSourceSpot() : Object("IfcLightSourceSpot") {} - Lazy< IfcDirection > Orientation; - Maybe< IfcReal::Out > ConcentrationExponent; - IfcPositivePlaneAngleMeasure::Out SpreadAngle; - IfcPositivePlaneAngleMeasure::Out BeamWidthAngle; - }; - - // C++ wrapper for IfcEvaporatorType - struct IfcEvaporatorType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporatorType() : Object("IfcEvaporatorType") {} - IfcEvaporatorTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSpaceHeaterType - struct IfcSpaceHeaterType : IfcEnergyConversionDeviceType, ObjectHelper { IfcSpaceHeaterType() : Object("IfcSpaceHeaterType") {} - IfcSpaceHeaterTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcElementQuantity - struct IfcElementQuantity : IfcPropertySetDefinition, ObjectHelper { IfcElementQuantity() : Object("IfcElementQuantity") {} - Maybe< IfcLabel::Out > MethodOfMeasurement; - ListOf< Lazy< NotImplemented >, 1, 0 > Quantities; - }; - - // C++ wrapper for IfcRampFlight - struct IfcRampFlight : IfcBuildingElement, ObjectHelper { IfcRampFlight() : Object("IfcRampFlight") {} - - }; - - // C++ wrapper for IfcConversionBasedUnit - struct IfcConversionBasedUnit : IfcNamedUnit, ObjectHelper { IfcConversionBasedUnit() : Object("IfcConversionBasedUnit") {} - IfcLabel::Out Name; - Lazy< IfcMeasureWithUnit > ConversionFactor; - }; - - // C++ wrapper for IfcExtrudedAreaSolid - struct IfcExtrudedAreaSolid : IfcSweptAreaSolid, ObjectHelper { IfcExtrudedAreaSolid() : Object("IfcExtrudedAreaSolid") {} - Lazy< IfcDirection > ExtrudedDirection; + // C++ wrapper for IfcTShapeProfileDef + struct IfcTShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTShapeProfileDef() : Object("IfcTShapeProfileDef") {} IfcPositiveLengthMeasure::Out Depth; + IfcPositiveLengthMeasure::Out FlangeWidth; + IfcPositiveLengthMeasure::Out WebThickness; + IfcPositiveLengthMeasure::Out FlangeThickness; + Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > FlangeEdgeRadius; + Maybe< IfcPositiveLengthMeasure::Out > WebEdgeRadius; + Maybe< IfcPlaneAngleMeasure::Out > WebSlope; + Maybe< IfcPlaneAngleMeasure::Out > FlangeSlope; + Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; }; - // C++ wrapper for IfcProjectOrder - struct IfcProjectOrder : IfcControl, ObjectHelper { IfcProjectOrder() : Object("IfcProjectOrder") {} - IfcIdentifier::Out ID; - IfcProjectOrderTypeEnum::Out PredefinedType; - Maybe< IfcLabel::Out > Status; + // C++ wrapper for IfcTankType + struct IfcTankType : IfcFlowStorageDeviceType, ObjectHelper { IfcTankType() : Object("IfcTankType") {} + IfcTankTypeEnum::Out PredefinedType; }; - // C++ wrapper for IfcBooleanClippingResult - struct IfcBooleanClippingResult : IfcBooleanResult, ObjectHelper { IfcBooleanClippingResult() : Object("IfcBooleanClippingResult") {} - - }; - - // C++ wrapper for IfcReinforcingBar - struct IfcReinforcingBar : IfcReinforcingElement, ObjectHelper { IfcReinforcingBar() : Object("IfcReinforcingBar") {} + // C++ wrapper for IfcTendon + struct IfcTendon : IfcReinforcingElement, ObjectHelper { IfcTendon() : Object("IfcTendon") {} + IfcTendonTypeEnum::Out PredefinedType; IfcPositiveLengthMeasure::Out NominalDiameter; IfcAreaMeasure::Out CrossSectionArea; - Maybe< IfcPositiveLengthMeasure::Out > BarLength; - IfcReinforcingBarRoleEnum::Out BarRole; - Maybe< IfcReinforcingBarSurfaceEnum::Out > BarSurface; + Maybe< IfcForceMeasure::Out > TensionForce; + Maybe< IfcPressureMeasure::Out > PreStress; + Maybe< IfcNormalisedRatioMeasure::Out > FrictionCoefficient; + Maybe< IfcPositiveLengthMeasure::Out > AnchorageSlip; + Maybe< IfcPositiveLengthMeasure::Out > MinCurvatureRadius; }; - // C++ wrapper for IfcCenterLineProfileDef - struct IfcCenterLineProfileDef : IfcArbitraryOpenProfileDef, ObjectHelper { IfcCenterLineProfileDef() : Object("IfcCenterLineProfileDef") {} - IfcPositiveLengthMeasure::Out Thickness; + // C++ wrapper for IfcTendonAnchor + struct IfcTendonAnchor : IfcReinforcingElement, ObjectHelper { IfcTendonAnchor() : Object("IfcTendonAnchor") {} + + }; + + // C++ wrapper for IfcTextLiteral + struct IfcTextLiteral : IfcGeometricRepresentationItem, ObjectHelper { IfcTextLiteral() : Object("IfcTextLiteral") {} + IfcPresentableText::Out Literal; + IfcAxis2Placement::Out Placement; + IfcTextPath::Out Path; + }; + + // C++ wrapper for IfcTextLiteralWithExtent + struct IfcTextLiteralWithExtent : IfcTextLiteral, ObjectHelper { IfcTextLiteralWithExtent() : Object("IfcTextLiteralWithExtent") {} + Lazy< IfcPlanarExtent > Extent; + IfcBoxAlignment::Out BoxAlignment; + }; + + // C++ wrapper for IfcTimeSeriesSchedule + struct IfcTimeSeriesSchedule : IfcControl, ObjectHelper { IfcTimeSeriesSchedule() : Object("IfcTimeSeriesSchedule") {} + Maybe< ListOf< IfcDateTimeSelect, 1, 0 >::Out > ApplicableDates; + IfcTimeSeriesScheduleTypeEnum::Out TimeSeriesScheduleType; + Lazy< NotImplemented > TimeSeries; + }; + + // C++ wrapper for IfcTopologyRepresentation + struct IfcTopologyRepresentation : IfcShapeModel, ObjectHelper { IfcTopologyRepresentation() : Object("IfcTopologyRepresentation") {} + + }; + + // C++ wrapper for IfcTransformerType + struct IfcTransformerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTransformerType() : Object("IfcTransformerType") {} + IfcTransformerTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcTransportElement + struct IfcTransportElement : IfcElement, ObjectHelper { IfcTransportElement() : Object("IfcTransportElement") {} + Maybe< IfcTransportElementTypeEnum::Out > OperationType; + Maybe< IfcMassMeasure::Out > CapacityByWeight; + Maybe< IfcCountMeasure::Out > CapacityByNumber; + }; + + // C++ wrapper for IfcTransportElementType + struct IfcTransportElementType : IfcElementType, ObjectHelper { IfcTransportElementType() : Object("IfcTransportElementType") {} + IfcTransportElementTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcTrapeziumProfileDef + struct IfcTrapeziumProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcTrapeziumProfileDef() : Object("IfcTrapeziumProfileDef") {} + IfcPositiveLengthMeasure::Out BottomXDim; + IfcPositiveLengthMeasure::Out TopXDim; + IfcPositiveLengthMeasure::Out YDim; + IfcLengthMeasure::Out TopXOffset; + }; + + // C++ wrapper for IfcTrimmedCurve + struct IfcTrimmedCurve : IfcBoundedCurve, ObjectHelper { IfcTrimmedCurve() : Object("IfcTrimmedCurve") {} + Lazy< IfcCurve > BasisCurve; + ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim1; + ListOf< IfcTrimmingSelect, 1, 2 >::Out Trim2; + BOOLEAN::Out SenseAgreement; + IfcTrimmingPreference::Out MasterRepresentation; + }; + + // C++ wrapper for IfcTubeBundleType + struct IfcTubeBundleType : IfcEnergyConversionDeviceType, ObjectHelper { IfcTubeBundleType() : Object("IfcTubeBundleType") {} + IfcTubeBundleTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcTwoDirectionRepeatFactor + struct IfcTwoDirectionRepeatFactor : IfcOneDirectionRepeatFactor, ObjectHelper { IfcTwoDirectionRepeatFactor() : Object("IfcTwoDirectionRepeatFactor") {} + Lazy< IfcVector > SecondRepeatFactor; }; // C++ wrapper for IfcUShapeProfileDef @@ -3472,12 +3792,76 @@ namespace IFC { Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; }; - // C++ wrapper for IfcBoundingBox - struct IfcBoundingBox : IfcGeometricRepresentationItem, ObjectHelper { IfcBoundingBox() : Object("IfcBoundingBox") {} - Lazy< IfcCartesianPoint > Corner; - IfcPositiveLengthMeasure::Out XDim; - IfcPositiveLengthMeasure::Out YDim; - IfcPositiveLengthMeasure::Out ZDim; + // C++ wrapper for IfcUnitAssignment + struct IfcUnitAssignment : ObjectHelper { IfcUnitAssignment() : Object("IfcUnitAssignment") {} + ListOf< IfcUnit, 1, 0 >::Out Units; + }; + + // C++ wrapper for IfcUnitaryEquipmentType + struct IfcUnitaryEquipmentType : IfcEnergyConversionDeviceType, ObjectHelper { IfcUnitaryEquipmentType() : Object("IfcUnitaryEquipmentType") {} + IfcUnitaryEquipmentTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcValveType + struct IfcValveType : IfcFlowControllerType, ObjectHelper { IfcValveType() : Object("IfcValveType") {} + IfcValveTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcVector + struct IfcVector : IfcGeometricRepresentationItem, ObjectHelper { IfcVector() : Object("IfcVector") {} + Lazy< IfcDirection > Orientation; + IfcLengthMeasure::Out Magnitude; + }; + + // C++ wrapper for IfcVertex + struct IfcVertex : IfcTopologicalRepresentationItem, ObjectHelper { IfcVertex() : Object("IfcVertex") {} + + }; + + // C++ wrapper for IfcVertexLoop + struct IfcVertexLoop : IfcLoop, ObjectHelper { IfcVertexLoop() : Object("IfcVertexLoop") {} + Lazy< IfcVertex > LoopVertex; + }; + + // C++ wrapper for IfcVertexPoint + struct IfcVertexPoint : IfcVertex, ObjectHelper { IfcVertexPoint() : Object("IfcVertexPoint") {} + Lazy< IfcPoint > VertexGeometry; + }; + + // C++ wrapper for IfcVibrationIsolatorType + struct IfcVibrationIsolatorType : IfcDiscreteAccessoryType, ObjectHelper { IfcVibrationIsolatorType() : Object("IfcVibrationIsolatorType") {} + IfcVibrationIsolatorTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcVirtualElement + struct IfcVirtualElement : IfcElement, ObjectHelper { IfcVirtualElement() : Object("IfcVirtualElement") {} + + }; + + // C++ wrapper for IfcWall + struct IfcWall : IfcBuildingElement, ObjectHelper { IfcWall() : Object("IfcWall") {} + + }; + + // C++ wrapper for IfcWallStandardCase + struct IfcWallStandardCase : IfcWall, ObjectHelper { IfcWallStandardCase() : Object("IfcWallStandardCase") {} + + }; + + // C++ wrapper for IfcWallType + struct IfcWallType : IfcBuildingElementType, ObjectHelper { IfcWallType() : Object("IfcWallType") {} + IfcWallTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcWasteTerminalType + struct IfcWasteTerminalType : IfcFlowTerminalType, ObjectHelper { IfcWasteTerminalType() : Object("IfcWasteTerminalType") {} + IfcWasteTerminalTypeEnum::Out PredefinedType; + }; + + // C++ wrapper for IfcWindow + struct IfcWindow : IfcBuildingElement, ObjectHelper { IfcWindow() : Object("IfcWindow") {} + Maybe< IfcPositiveLengthMeasure::Out > OverallHeight; + Maybe< IfcPositiveLengthMeasure::Out > OverallWidth; }; // C++ wrapper for IfcWindowStyle @@ -3488,377 +3872,22 @@ namespace IFC { BOOLEAN::Out Sizeable; }; - // C++ wrapper for IfcMemberType - struct IfcMemberType : IfcBuildingElementType, ObjectHelper { IfcMemberType() : Object("IfcMemberType") {} - IfcMemberTypeEnum::Out PredefinedType; + // C++ wrapper for IfcWorkControl + struct IfcWorkControl : IfcControl, ObjectHelper { IfcWorkControl() : Object("IfcWorkControl") {} + IfcIdentifier::Out Identifier; + IfcDateTimeSelect::Out CreationDate; + Maybe< ListOf< Lazy< NotImplemented >, 1, 0 > > Creators; + Maybe< IfcLabel::Out > Purpose; + Maybe< IfcTimeMeasure::Out > Duration; + Maybe< IfcTimeMeasure::Out > TotalFloat; + IfcDateTimeSelect::Out StartTime; + Maybe< IfcDateTimeSelect::Out > FinishTime; + Maybe< IfcWorkControlTypeEnum::Out > WorkControlType; + Maybe< IfcLabel::Out > UserDefinedControlType; }; - // C++ wrapper for IfcLightFixtureType - struct IfcLightFixtureType : IfcFlowTerminalType, ObjectHelper { IfcLightFixtureType() : Object("IfcLightFixtureType") {} - IfcLightFixtureTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowStorageDevice - struct IfcFlowStorageDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowStorageDevice() : Object("IfcFlowStorageDevice") {} - - }; - - // C++ wrapper for IfcTopologyRepresentation - struct IfcTopologyRepresentation : IfcShapeModel, ObjectHelper { IfcTopologyRepresentation() : Object("IfcTopologyRepresentation") {} - - }; - - // C++ wrapper for IfcRelDefinesByProperties - struct IfcRelDefinesByProperties : IfcRelDefines, ObjectHelper { IfcRelDefinesByProperties() : Object("IfcRelDefinesByProperties") {} - Lazy< IfcPropertySetDefinition > RelatingPropertyDefinition; - }; - - // C++ wrapper for IfcRelOverridesProperties - struct IfcRelOverridesProperties : IfcRelDefinesByProperties, ObjectHelper { IfcRelOverridesProperties() : Object("IfcRelOverridesProperties") {} - ListOf< Lazy< IfcProperty >, 1, 0 > OverridingProperties; - }; - - // C++ wrapper for IfcStairFlightType - struct IfcStairFlightType : IfcBuildingElementType, ObjectHelper { IfcStairFlightType() : Object("IfcStairFlightType") {} - IfcStairFlightTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCircleProfileDef - struct IfcCircleProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCircleProfileDef() : Object("IfcCircleProfileDef") {} - IfcPositiveLengthMeasure::Out Radius; - }; - - // C++ wrapper for IfcSweptDiskSolid - struct IfcSweptDiskSolid : IfcSolidModel, ObjectHelper { IfcSweptDiskSolid() : Object("IfcSweptDiskSolid") {} - Lazy< IfcCurve > Directrix; - IfcPositiveLengthMeasure::Out Radius; - Maybe< IfcPositiveLengthMeasure::Out > InnerRadius; - IfcParameterValue::Out StartParam; - IfcParameterValue::Out EndParam; - }; - - // C++ wrapper for IfcStructuralPlanarActionVarying - struct IfcStructuralPlanarActionVarying : IfcStructuralPlanarAction, ObjectHelper { IfcStructuralPlanarActionVarying() : Object("IfcStructuralPlanarActionVarying") {} - Lazy< NotImplemented > VaryingAppliedLoadLocation; - ListOf< Lazy< NotImplemented >, 2, 0 > SubsequentAppliedLoads; - }; - - // C++ wrapper for IfcValveType - struct IfcValveType : IfcFlowControllerType, ObjectHelper { IfcValveType() : Object("IfcValveType") {} - IfcValveTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcUnitAssignment - struct IfcUnitAssignment : ObjectHelper { IfcUnitAssignment() : Object("IfcUnitAssignment") {} - ListOf< IfcUnit, 1, 0 >::Out Units; - }; - - // C++ wrapper for IfcVirtualElement - struct IfcVirtualElement : IfcElement, ObjectHelper { IfcVirtualElement() : Object("IfcVirtualElement") {} - - }; - - // C++ wrapper for IfcStructuralCurveConnection - struct IfcStructuralCurveConnection : IfcStructuralConnection, ObjectHelper { IfcStructuralCurveConnection() : Object("IfcStructuralCurveConnection") {} - - }; - - // C++ wrapper for IfcAirTerminalType - struct IfcAirTerminalType : IfcFlowTerminalType, ObjectHelper { IfcAirTerminalType() : Object("IfcAirTerminalType") {} - IfcAirTerminalTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcFlowTreatmentDeviceType - struct IfcFlowTreatmentDeviceType : IfcDistributionFlowElementType, ObjectHelper { IfcFlowTreatmentDeviceType() : Object("IfcFlowTreatmentDeviceType") {} - - }; - - // C++ wrapper for IfcRoof - struct IfcRoof : IfcBuildingElement, ObjectHelper { IfcRoof() : Object("IfcRoof") {} - IfcRoofTypeEnum::Out ShapeType; - }; - - // C++ wrapper for IfcElectricTimeControlType - struct IfcElectricTimeControlType : IfcFlowControllerType, ObjectHelper { IfcElectricTimeControlType() : Object("IfcElectricTimeControlType") {} - IfcElectricTimeControlTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcPile - struct IfcPile : IfcBuildingElement, ObjectHelper { IfcPile() : Object("IfcPile") {} - IfcPileTypeEnum::Out PredefinedType; - Maybe< IfcPileConstructionEnum::Out > ConstructionType; - }; - - // C++ wrapper for IfcCostSchedule - struct IfcCostSchedule : IfcControl, ObjectHelper { IfcCostSchedule() : Object("IfcCostSchedule") {} - Maybe< IfcActorSelect::Out > SubmittedBy; - Maybe< IfcActorSelect::Out > PreparedBy; - Maybe< IfcDateTimeSelect::Out > SubmittedOn; - Maybe< IfcLabel::Out > Status; - Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > TargetUsers; - Maybe< IfcDateTimeSelect::Out > UpdateDate; - IfcIdentifier::Out ID; - IfcCostScheduleTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRampFlightType - struct IfcRampFlightType : IfcBuildingElementType, ObjectHelper { IfcRampFlightType() : Object("IfcRampFlightType") {} - IfcRampFlightTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDerivedProfileDef - struct IfcDerivedProfileDef : IfcProfileDef, ObjectHelper { IfcDerivedProfileDef() : Object("IfcDerivedProfileDef") {} - Lazy< IfcProfileDef > ParentProfile; - Lazy< IfcCartesianTransformationOperator2D > Operator; - Maybe< IfcLabel::Out > Label; - }; - - // C++ wrapper for IfcCostItem - struct IfcCostItem : IfcControl, ObjectHelper { IfcCostItem() : Object("IfcCostItem") {} - - }; - - // C++ wrapper for IfcEvaporativeCoolerType - struct IfcEvaporativeCoolerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcEvaporativeCoolerType() : Object("IfcEvaporativeCoolerType") {} - IfcEvaporativeCoolerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcChillerType - struct IfcChillerType : IfcEnergyConversionDeviceType, ObjectHelper { IfcChillerType() : Object("IfcChillerType") {} - IfcChillerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcBoxedHalfSpace - struct IfcBoxedHalfSpace : IfcHalfSpaceSolid, ObjectHelper { IfcBoxedHalfSpace() : Object("IfcBoxedHalfSpace") {} - Lazy< IfcBoundingBox > Enclosure; - }; - - // C++ wrapper for IfcCurtainWallType - struct IfcCurtainWallType : IfcBuildingElementType, ObjectHelper { IfcCurtainWallType() : Object("IfcCurtainWallType") {} - IfcCurtainWallTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcGeometricRepresentationSubContext - struct IfcGeometricRepresentationSubContext : IfcGeometricRepresentationContext, ObjectHelper { IfcGeometricRepresentationSubContext() : Object("IfcGeometricRepresentationSubContext") {} - Lazy< IfcGeometricRepresentationContext > ParentContext; - Maybe< IfcPositiveRatioMeasure::Out > TargetScale; - IfcGeometricProjectionEnum::Out TargetView; - Maybe< IfcLabel::Out > UserDefinedTargetView; - }; - - // C++ wrapper for IfcDimensionCurve - struct IfcDimensionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcDimensionCurve() : Object("IfcDimensionCurve") {} - - }; - - // C++ wrapper for IfcPlane - struct IfcPlane : IfcElementarySurface, ObjectHelper { IfcPlane() : Object("IfcPlane") {} - - }; - - // C++ wrapper for IfcProjectionCurve - struct IfcProjectionCurve : IfcAnnotationCurveOccurrence, ObjectHelper { IfcProjectionCurve() : Object("IfcProjectionCurve") {} - - }; - - // C++ wrapper for IfcDamperType - struct IfcDamperType : IfcFlowControllerType, ObjectHelper { IfcDamperType() : Object("IfcDamperType") {} - IfcDamperTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMechanicalFastener - struct IfcMechanicalFastener : IfcFastener, ObjectHelper { IfcMechanicalFastener() : Object("IfcMechanicalFastener") {} - Maybe< IfcPositiveLengthMeasure::Out > NominalDiameter; - Maybe< IfcPositiveLengthMeasure::Out > NominalLength; - }; - - // C++ wrapper for IfcDuctSilencerType - struct IfcDuctSilencerType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcDuctSilencerType() : Object("IfcDuctSilencerType") {} - IfcDuctSilencerTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcLaborResource - struct IfcLaborResource : IfcConstructionResource, ObjectHelper { IfcLaborResource() : Object("IfcLaborResource") {} - Maybe< IfcText::Out > SkillSet; - }; - - // C++ wrapper for IfcFanType - struct IfcFanType : IfcFlowMovingDeviceType, ObjectHelper { IfcFanType() : Object("IfcFanType") {} - IfcFanTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcProjectionElement - struct IfcProjectionElement : IfcFeatureElementAddition, ObjectHelper { IfcProjectionElement() : Object("IfcProjectionElement") {} - - }; - - // C++ wrapper for IfcCraneRailFShapeProfileDef - struct IfcCraneRailFShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcCraneRailFShapeProfileDef() : Object("IfcCraneRailFShapeProfileDef") {} - IfcPositiveLengthMeasure::Out OverallHeight; - IfcPositiveLengthMeasure::Out HeadWidth; - Maybe< IfcPositiveLengthMeasure::Out > Radius; - IfcPositiveLengthMeasure::Out HeadDepth2; - IfcPositiveLengthMeasure::Out HeadDepth3; - IfcPositiveLengthMeasure::Out WebThickness; - IfcPositiveLengthMeasure::Out BaseDepth1; - IfcPositiveLengthMeasure::Out BaseDepth2; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; - }; - - // C++ wrapper for IfcProject - struct IfcProject : IfcObject, ObjectHelper { IfcProject() : Object("IfcProject") {} - Maybe< IfcLabel::Out > LongName; - Maybe< IfcLabel::Out > Phase; - ListOf< Lazy< IfcRepresentationContext >, 1, 0 > RepresentationContexts; - Lazy< IfcUnitAssignment > UnitsInContext; - }; - - // C++ wrapper for IfcRelVoidsElement - struct IfcRelVoidsElement : IfcRelConnects, ObjectHelper { IfcRelVoidsElement() : Object("IfcRelVoidsElement") {} - Lazy< IfcElement > RelatingBuildingElement; - Lazy< IfcFeatureElementSubtraction > RelatedOpeningElement; - }; - - // C++ wrapper for IfcElectricalCircuit - struct IfcElectricalCircuit : IfcSystem, ObjectHelper { IfcElectricalCircuit() : Object("IfcElectricalCircuit") {} - - }; - - // C++ wrapper for IfcLShapeProfileDef - struct IfcLShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcLShapeProfileDef() : Object("IfcLShapeProfileDef") {} - IfcPositiveLengthMeasure::Out Depth; - Maybe< IfcPositiveLengthMeasure::Out > Width; - IfcPositiveLengthMeasure::Out Thickness; - Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; - Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; - Maybe< IfcPlaneAngleMeasure::Out > LegSlope; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInX; - Maybe< IfcPositiveLengthMeasure::Out > CentreOfGravityInY; - }; - - // C++ wrapper for IfcFlowTreatmentDevice - struct IfcFlowTreatmentDevice : IfcDistributionFlowElement, ObjectHelper { IfcFlowTreatmentDevice() : Object("IfcFlowTreatmentDevice") {} - - }; - - // C++ wrapper for IfcVertexPoint - struct IfcVertexPoint : IfcVertex, ObjectHelper { IfcVertexPoint() : Object("IfcVertexPoint") {} - Lazy< IfcPoint > VertexGeometry; - }; - - // C++ wrapper for IfcAnnotationTextOccurrence - struct IfcAnnotationTextOccurrence : IfcAnnotationOccurrence, ObjectHelper { IfcAnnotationTextOccurrence() : Object("IfcAnnotationTextOccurrence") {} - - }; - - // C++ wrapper for IfcFilterType - struct IfcFilterType : IfcFlowTreatmentDeviceType, ObjectHelper { IfcFilterType() : Object("IfcFilterType") {} - IfcFilterTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcEdgeLoop - struct IfcEdgeLoop : IfcLoop, ObjectHelper { IfcEdgeLoop() : Object("IfcEdgeLoop") {} - ListOf< Lazy< IfcOrientedEdge >, 1, 0 > EdgeList; - }; - - // C++ wrapper for IfcCircleHollowProfileDef - struct IfcCircleHollowProfileDef : IfcCircleProfileDef, ObjectHelper { IfcCircleHollowProfileDef() : Object("IfcCircleHollowProfileDef") {} - IfcPositiveLengthMeasure::Out WallThickness; - }; - - // C++ wrapper for IfcAirTerminalBoxType - struct IfcAirTerminalBoxType : IfcFlowControllerType, ObjectHelper { IfcAirTerminalBoxType() : Object("IfcAirTerminalBoxType") {} - IfcAirTerminalBoxTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcStructuredDimensionCallout - struct IfcStructuredDimensionCallout : IfcDraughtingCallout, ObjectHelper { IfcStructuredDimensionCallout() : Object("IfcStructuredDimensionCallout") {} - - }; - - // C++ wrapper for IfcCableCarrierSegmentType - struct IfcCableCarrierSegmentType : IfcFlowSegmentType, ObjectHelper { IfcCableCarrierSegmentType() : Object("IfcCableCarrierSegmentType") {} - IfcCableCarrierSegmentTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcDuctFittingType - struct IfcDuctFittingType : IfcFlowFittingType, ObjectHelper { IfcDuctFittingType() : Object("IfcDuctFittingType") {} - IfcDuctFittingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRectangularTrimmedSurface - struct IfcRectangularTrimmedSurface : IfcBoundedSurface, ObjectHelper { IfcRectangularTrimmedSurface() : Object("IfcRectangularTrimmedSurface") {} - Lazy< IfcSurface > BasisSurface; - IfcParameterValue::Out U1; - IfcParameterValue::Out V1; - IfcParameterValue::Out U2; - IfcParameterValue::Out V2; - BOOLEAN::Out Usense; - BOOLEAN::Out Vsense; - }; - - // C++ wrapper for IfcProductDefinitionShape - struct IfcProductDefinitionShape : IfcProductRepresentation, ObjectHelper { IfcProductDefinitionShape() : Object("IfcProductDefinitionShape") {} - - }; - - // C++ wrapper for IfcStairFlight - struct IfcStairFlight : IfcBuildingElement, ObjectHelper { IfcStairFlight() : Object("IfcStairFlight") {} - Maybe< INTEGER::Out > NumberOfRiser; - Maybe< INTEGER::Out > NumberOfTreads; - Maybe< IfcPositiveLengthMeasure::Out > RiserHeight; - Maybe< IfcPositiveLengthMeasure::Out > TreadLength; - }; - - // C++ wrapper for IfcSlab - struct IfcSlab : IfcBuildingElement, ObjectHelper { IfcSlab() : Object("IfcSlab") {} - Maybe< IfcSlabTypeEnum::Out > PredefinedType; - }; - - // C++ wrapper for IfcPipeFittingType - struct IfcPipeFittingType : IfcFlowFittingType, ObjectHelper { IfcPipeFittingType() : Object("IfcPipeFittingType") {} - IfcPipeFittingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcSpace - struct IfcSpace : IfcSpatialStructureElement, ObjectHelper { IfcSpace() : Object("IfcSpace") {} - IfcInternalOrExternalEnum::Out InteriorOrExteriorSpace; - Maybe< IfcLengthMeasure::Out > ElevationWithFlooring; - }; - - // C++ wrapper for IfcBuildingElementProxyType - struct IfcBuildingElementProxyType : IfcBuildingElementType, ObjectHelper { IfcBuildingElementProxyType() : Object("IfcBuildingElementProxyType") {} - IfcBuildingElementProxyTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcAlarmType - struct IfcAlarmType : IfcDistributionControlElementType, ObjectHelper { IfcAlarmType() : Object("IfcAlarmType") {} - IfcAlarmTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcCableCarrierFittingType - struct IfcCableCarrierFittingType : IfcFlowFittingType, ObjectHelper { IfcCableCarrierFittingType() : Object("IfcCableCarrierFittingType") {} - IfcCableCarrierFittingTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcRoundedEdgeFeature - struct IfcRoundedEdgeFeature : IfcEdgeFeature, ObjectHelper { IfcRoundedEdgeFeature() : Object("IfcRoundedEdgeFeature") {} - Maybe< IfcPositiveLengthMeasure::Out > Radius; - }; - - // C++ wrapper for IfcFaceSurface - struct IfcFaceSurface : IfcFace, ObjectHelper { IfcFaceSurface() : Object("IfcFaceSurface") {} - Lazy< IfcSurface > FaceSurface; - BOOLEAN::Out SameSense; - }; - - // C++ wrapper for IfcCartesianTransformationOperator2D - struct IfcCartesianTransformationOperator2D : IfcCartesianTransformationOperator, ObjectHelper { IfcCartesianTransformationOperator2D() : Object("IfcCartesianTransformationOperator2D") {} - - }; - - // C++ wrapper for IfcTendonAnchor - struct IfcTendonAnchor : IfcReinforcingElement, ObjectHelper { IfcTendonAnchor() : Object("IfcTendonAnchor") {} + // C++ wrapper for IfcWorkPlan + struct IfcWorkPlan : IfcWorkControl, ObjectHelper { IfcWorkPlan() : Object("IfcWorkPlan") {} }; @@ -3867,47 +3896,18 @@ namespace IFC { }; - // C++ wrapper for IfcSurfaceOfRevolution - struct IfcSurfaceOfRevolution : IfcSweptSurface, ObjectHelper { IfcSurfaceOfRevolution() : Object("IfcSurfaceOfRevolution") {} - Lazy< IfcAxis1Placement > AxisPosition; + // C++ wrapper for IfcZShapeProfileDef + struct IfcZShapeProfileDef : IfcParameterizedProfileDef, ObjectHelper { IfcZShapeProfileDef() : Object("IfcZShapeProfileDef") {} + IfcPositiveLengthMeasure::Out Depth; + IfcPositiveLengthMeasure::Out FlangeWidth; + IfcPositiveLengthMeasure::Out WebThickness; + IfcPositiveLengthMeasure::Out FlangeThickness; + Maybe< IfcPositiveLengthMeasure::Out > FilletRadius; + Maybe< IfcPositiveLengthMeasure::Out > EdgeRadius; }; - // C++ wrapper for IfcElectricHeaterType - struct IfcElectricHeaterType : IfcFlowTerminalType, ObjectHelper { IfcElectricHeaterType() : Object("IfcElectricHeaterType") {} - IfcElectricHeaterTypeEnum::Out PredefinedType; - }; - - // C++ wrapper for IfcMeasureWithUnit - struct IfcMeasureWithUnit : ObjectHelper { IfcMeasureWithUnit() : Object("IfcMeasureWithUnit") {} - IfcValue::Out ValueComponent; - IfcUnit::Out UnitComponent; - }; - - // C++ wrapper for IfcOrientedEdge - struct IfcOrientedEdge : IfcEdge, ObjectHelper { IfcOrientedEdge() : Object("IfcOrientedEdge") {} - Lazy< IfcEdge > EdgeElement; - BOOLEAN::Out Orientation; - }; - - // C++ wrapper for IfcCartesianTransformationOperator2DnonUniform - struct IfcCartesianTransformationOperator2DnonUniform : IfcCartesianTransformationOperator2D, ObjectHelper { IfcCartesianTransformationOperator2DnonUniform() : Object("IfcCartesianTransformationOperator2DnonUniform") {} - Maybe< REAL::Out > Scale2; - }; - - // C++ wrapper for IfcRelFillsElement - struct IfcRelFillsElement : IfcRelConnects, ObjectHelper { IfcRelFillsElement() : Object("IfcRelFillsElement") {} - Lazy< IfcOpeningElement > RelatingOpeningElement; - Lazy< IfcElement > RelatedBuildingElement; - }; - - // C++ wrapper for IfcConstructionMaterialResource - struct IfcConstructionMaterialResource : IfcConstructionResource, ObjectHelper { IfcConstructionMaterialResource() : Object("IfcConstructionMaterialResource") {} - Maybe< ListOf< IfcActorSelect, 1, 0 >::Out > Suppliers; - Maybe< IfcRatioMeasure::Out > UsageRatio; - }; - - // C++ wrapper for IfcRadiusDimension - struct IfcRadiusDimension : IfcDimensionCurveDirectedCallout, ObjectHelper { IfcRadiusDimension() : Object("IfcRadiusDimension") {} + // C++ wrapper for IfcZone + struct IfcZone : IfcGroup, ObjectHelper { IfcZone() : Object("IfcZone") {} }; @@ -3923,441 +3923,441 @@ namespace STEP { #define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) DECL_CONV_STUB(IfcRepresentationItem); - DECL_CONV_STUB(IfcTopologicalRepresentationItem); - DECL_CONV_STUB(IfcEdge); DECL_CONV_STUB(IfcGeometricRepresentationItem); - DECL_CONV_STUB(IfcCompositeCurveSegment); + DECL_CONV_STUB(IfcCurve); + DECL_CONV_STUB(IfcBoundedCurve); + DECL_CONV_STUB(IfcCompositeCurve); + DECL_CONV_STUB(Ifc2DCompositeCurve); DECL_CONV_STUB(IfcRoot); DECL_CONV_STUB(IfcObjectDefinition); DECL_CONV_STUB(IfcObject); - DECL_CONV_STUB(IfcProduct); - DECL_CONV_STUB(IfcStructuralItem); - DECL_CONV_STUB(IfcStructuralConnection); - DECL_CONV_STUB(IfcStructuralSurfaceConnection); - DECL_CONV_STUB(IfcPresentationStyleAssignment); - DECL_CONV_STUB(IfcElement); - DECL_CONV_STUB(IfcBuildingElement); - DECL_CONV_STUB(IfcCurtainWall); - DECL_CONV_STUB(IfcProxy); - DECL_CONV_STUB(IfcStyledItem); - DECL_CONV_STUB(IfcAnnotationOccurrence); - DECL_CONV_STUB(IfcAnnotationSymbolOccurrence); - DECL_CONV_STUB(IfcTerminatorSymbol); - DECL_CONV_STUB(IfcDimensionCurveTerminator); + DECL_CONV_STUB(IfcControl); + DECL_CONV_STUB(IfcActionRequest); + DECL_CONV_STUB(IfcActor); DECL_CONV_STUB(IfcTypeObject); DECL_CONV_STUB(IfcTypeProduct); DECL_CONV_STUB(IfcElementType); DECL_CONV_STUB(IfcDistributionElementType); - DECL_CONV_STUB(IfcFeatureElement); - DECL_CONV_STUB(IfcFeatureElementSubtraction); - DECL_CONV_STUB(IfcOpeningElement); - DECL_CONV_STUB(IfcPresentationStyle); - DECL_CONV_STUB(IfcSurfaceStyle); - DECL_CONV_STUB(IfcFillAreaStyleTileSymbolWithStyle); - DECL_CONV_STUB(IfcRelationship); - DECL_CONV_STUB(IfcRelConnects); - DECL_CONV_STUB(IfcStructuralMember); - DECL_CONV_STUB(IfcStructuralSurfaceMember); - DECL_CONV_STUB(IfcCartesianTransformationOperator); - DECL_CONV_STUB(IfcCartesianTransformationOperator3D); - DECL_CONV_STUB(IfcDistributionFlowElementType); - DECL_CONV_STUB(IfcFlowTerminalType); - DECL_CONV_STUB(IfcSanitaryTerminalType); - DECL_CONV_STUB(IfcEnergyConversionDeviceType); - DECL_CONV_STUB(IfcElectricGeneratorType); - DECL_CONV_STUB(IfcResource); - DECL_CONV_STUB(IfcConstructionResource); - DECL_CONV_STUB(IfcControl); - DECL_CONV_STUB(IfcEquipmentStandard); - DECL_CONV_STUB(IfcElectricApplianceType); - DECL_CONV_STUB(IfcFurnitureStandard); - DECL_CONV_STUB(IfcDefinedSymbol); - DECL_CONV_STUB(IfcColourSpecification); - DECL_CONV_STUB(IfcCurve); - DECL_CONV_STUB(IfcLine); - DECL_CONV_STUB(IfcLoop); - DECL_CONV_STUB(IfcProperty); - DECL_CONV_STUB(IfcComplexProperty); - DECL_CONV_STUB(IfcCovering); - DECL_CONV_STUB(IfcBoundedCurve); - DECL_CONV_STUB(IfcBSplineCurve); - DECL_CONV_STUB(IfcNamedUnit); - DECL_CONV_STUB(IfcSubContractResource); - DECL_CONV_STUB(IfcObjectPlacement); - DECL_CONV_STUB(IfcGridPlacement); - DECL_CONV_STUB(IfcPropertyDefinition); - DECL_CONV_STUB(IfcPropertySetDefinition); - DECL_CONV_STUB(IfcPoint); - DECL_CONV_STUB(IfcCartesianPoint); - DECL_CONV_STUB(IfcFaceBound); - DECL_CONV_STUB(IfcEdgeCurve); - DECL_CONV_STUB(IfcOneDirectionRepeatFactor); - DECL_CONV_STUB(IfcTwoDirectionRepeatFactor); - DECL_CONV_STUB(IfcLightSource); - DECL_CONV_STUB(IfcLightSourceAmbient); - DECL_CONV_STUB(IfcPlacement); - DECL_CONV_STUB(IfcAxis1Placement); - DECL_CONV_STUB(IfcAnnotationSurfaceOccurrence); - DECL_CONV_STUB(IfcFlowControllerType); - DECL_CONV_STUB(IfcFlowMeterType); - DECL_CONV_STUB(IfcAnnotationCurveOccurrence); - DECL_CONV_STUB(IfcProfileDef); - DECL_CONV_STUB(IfcCompositeProfileDef); - DECL_CONV_STUB(IfcSubedge); - DECL_CONV_STUB(IfcFlowStorageDeviceType); - DECL_CONV_STUB(IfcTankType); - DECL_CONV_STUB(IfcBuildingElementComponent); - DECL_CONV_STUB(IfcBuildingElementPart); - DECL_CONV_STUB(IfcRepresentation); - DECL_CONV_STUB(IfcShapeModel); - DECL_CONV_STUB(IfcShapeRepresentation); - DECL_CONV_STUB(IfcRailing); - DECL_CONV_STUB(IfcStyleModel); - DECL_CONV_STUB(IfcStyledRepresentation); - DECL_CONV_STUB(IfcColourRgb); - DECL_CONV_STUB(IfcElementComponentType); - DECL_CONV_STUB(IfcDiscreteAccessoryType); - DECL_CONV_STUB(IfcVibrationIsolatorType); - DECL_CONV_STUB(IfcProcess); - DECL_CONV_STUB(IfcProcedure); - DECL_CONV_STUB(IfcFeatureElementAddition); - DECL_CONV_STUB(IfcEdgeFeature); - DECL_CONV_STUB(IfcTrimmedCurve); - DECL_CONV_STUB(IfcTextLiteral); - DECL_CONV_STUB(IfcParameterizedProfileDef); - DECL_CONV_STUB(IfcCraneRailAShapeProfileDef); - DECL_CONV_STUB(IfcElementComponent); - DECL_CONV_STUB(IfcCsgPrimitive3D); - DECL_CONV_STUB(IfcBlock); - DECL_CONV_STUB(IfcBuildingElementType); - DECL_CONV_STUB(IfcRailingType); - DECL_CONV_STUB(IfcStructuralPointConnection); - DECL_CONV_STUB(IfcFlowMovingDeviceType); - DECL_CONV_STUB(IfcPumpType); - DECL_CONV_STUB(IfcStructuralCurveMember); - DECL_CONV_STUB(IfcStructuralCurveMemberVarying); - DECL_CONV_STUB(IfcReinforcingElement); - DECL_CONV_STUB(IfcReinforcingMesh); - DECL_CONV_STUB(IfcPlanarExtent); - DECL_CONV_STUB(IfcPlanarBox); - DECL_CONV_STUB(IfcCooledBeamType); - DECL_CONV_STUB(IfcProjectOrderRecord); - DECL_CONV_STUB(IfcPointOnSurface); - DECL_CONV_STUB(IfcPointOnCurve); - DECL_CONV_STUB(IfcRelContainedInSpatialStructure); - DECL_CONV_STUB(IfcSimpleProperty); - DECL_CONV_STUB(IfcPropertyListValue); - DECL_CONV_STUB(IfcSpatialStructureElement); - DECL_CONV_STUB(IfcBuildingStorey); - DECL_CONV_STUB(IfcUnitaryEquipmentType); - DECL_CONV_STUB(IfcOutletType); - DECL_CONV_STUB(IfcFastenerType); - DECL_CONV_STUB(IfcGroup); - DECL_CONV_STUB(IfcSystem); - DECL_CONV_STUB(IfcStructuralAnalysisModel); - DECL_CONV_STUB(IfcSlabType); - DECL_CONV_STUB(IfcDistributionElement); - DECL_CONV_STUB(IfcDistributionFlowElement); - DECL_CONV_STUB(IfcTShapeProfileDef); - DECL_CONV_STUB(IfcPolyline); - DECL_CONV_STUB(IfcDraughtingCallout); - DECL_CONV_STUB(IfcFace); - DECL_CONV_STUB(IfcStructuralSurfaceMemberVarying); - DECL_CONV_STUB(IfcMotorConnectionType); - DECL_CONV_STUB(IfcAirToAirHeatRecoveryType); - DECL_CONV_STUB(IfcPlateType); - DECL_CONV_STUB(IfcSolidModel); - DECL_CONV_STUB(IfcCsgSolid); - DECL_CONV_STUB(IfcMechanicalFastenerType); - DECL_CONV_STUB(IfcRelDecomposes); - DECL_CONV_STUB(IfcElectricalElement); - DECL_CONV_STUB(IfcColumnType); - DECL_CONV_STUB(IfcRectangularPyramid); - DECL_CONV_STUB(IfcActionRequest); - DECL_CONV_STUB(IfcStructuralActivity); - DECL_CONV_STUB(IfcStructuralReaction); - DECL_CONV_STUB(IfcStructuralPointReaction); - DECL_CONV_STUB(IfcStructuralAction); - DECL_CONV_STUB(IfcStructuralLinearAction); - DECL_CONV_STUB(IfcStructuralLinearActionVarying); - DECL_CONV_STUB(IfcCrewResource); - DECL_CONV_STUB(IfcChamferEdgeFeature); - DECL_CONV_STUB(IfcCompositeCurve); - DECL_CONV_STUB(Ifc2DCompositeCurve); - DECL_CONV_STUB(IfcGrid); - DECL_CONV_STUB(IfcTendon); - DECL_CONV_STUB(IfcRectangleProfileDef); - DECL_CONV_STUB(IfcRoundedRectangleProfileDef); - DECL_CONV_STUB(IfcBeamType); - DECL_CONV_STUB(IfcLampType); - DECL_CONV_STUB(IfcLightSourceGoniometric); - DECL_CONV_STUB(IfcProductRepresentation); - DECL_CONV_STUB(IfcMaterialDefinitionRepresentation); - DECL_CONV_STUB(IfcPermit); - DECL_CONV_STUB(IfcContextDependentUnit); - DECL_CONV_STUB(IfcFlowMovingDevice); - DECL_CONV_STUB(IfcColumn); - DECL_CONV_STUB(IfcDistributionControlElement); - DECL_CONV_STUB(IfcProtectiveDeviceType); - DECL_CONV_STUB(IfcFlowSegment); - DECL_CONV_STUB(IfcCompressorType); - DECL_CONV_STUB(IfcCShapeProfileDef); - DECL_CONV_STUB(IfcTrapeziumProfileDef); - DECL_CONV_STUB(IfcRelDefines); - DECL_CONV_STUB(IfcTask); - DECL_CONV_STUB(IfcMove); - DECL_CONV_STUB(IfcLightSourceDirectional); - DECL_CONV_STUB(IfcCondenserType); - DECL_CONV_STUB(IfcConic); - DECL_CONV_STUB(IfcEllipse); - DECL_CONV_STUB(IfcDoorStyle); DECL_CONV_STUB(IfcDistributionControlElementType); - DECL_CONV_STUB(IfcSensorType); - DECL_CONV_STUB(IfcAnnotationFillAreaOccurrence); - DECL_CONV_STUB(IfcWall); - DECL_CONV_STUB(IfcFurnishingElementType); - DECL_CONV_STUB(IfcFurnitureType); - DECL_CONV_STUB(IfcControllerType); - DECL_CONV_STUB(IfcFlowFitting); - DECL_CONV_STUB(IfcRepresentationContext); - DECL_CONV_STUB(IfcRepresentationMap); - DECL_CONV_STUB(IfcDirection); + DECL_CONV_STUB(IfcActuatorType); + DECL_CONV_STUB(IfcDistributionFlowElementType); + DECL_CONV_STUB(IfcFlowControllerType); + DECL_CONV_STUB(IfcAirTerminalBoxType); + DECL_CONV_STUB(IfcFlowTerminalType); + DECL_CONV_STUB(IfcAirTerminalType); + DECL_CONV_STUB(IfcEnergyConversionDeviceType); + DECL_CONV_STUB(IfcAirToAirHeatRecoveryType); + DECL_CONV_STUB(IfcAlarmType); + DECL_CONV_STUB(IfcDraughtingCallout); DECL_CONV_STUB(IfcDimensionCurveDirectedCallout); DECL_CONV_STUB(IfcAngularDimension); - DECL_CONV_STUB(IfcWorkControl); - DECL_CONV_STUB(IfcWorkPlan); - DECL_CONV_STUB(IfcSpatialStructureElementType); - DECL_CONV_STUB(IfcSpaceType); - DECL_CONV_STUB(IfcPort); - DECL_CONV_STUB(IfcDistributionPort); - DECL_CONV_STUB(IfcOrderAction); - DECL_CONV_STUB(IfcBeam); - DECL_CONV_STUB(IfcManifoldSolidBrep); - DECL_CONV_STUB(IfcFacetedBrep); - DECL_CONV_STUB(IfcSurfaceStyleWithTextures); - DECL_CONV_STUB(IfcArbitraryClosedProfileDef); - DECL_CONV_STUB(IfcHumidifierType); - DECL_CONV_STUB(IfcPolyLoop); - DECL_CONV_STUB(IfcFlowFittingType); - DECL_CONV_STUB(IfcFillAreaStyleTiles); - DECL_CONV_STUB(IfcVertex); + DECL_CONV_STUB(IfcProduct); + DECL_CONV_STUB(IfcAnnotation); + DECL_CONV_STUB(IfcStyledItem); + DECL_CONV_STUB(IfcAnnotationOccurrence); + DECL_CONV_STUB(IfcAnnotationCurveOccurrence); DECL_CONV_STUB(IfcAnnotationFillArea); - DECL_CONV_STUB(IfcPlate); - DECL_CONV_STUB(IfcRightCircularCone); - DECL_CONV_STUB(IfcSurface); - DECL_CONV_STUB(IfcBoundedSurface); - DECL_CONV_STUB(IfcStructuralLoadGroup); - DECL_CONV_STUB(IfcGeometricRepresentationContext); - DECL_CONV_STUB(IfcTubeBundleType); - DECL_CONV_STUB(IfcStructuralPlanarAction); - DECL_CONV_STUB(IfcHeatExchangerType); - DECL_CONV_STUB(IfcFaceOuterBound); - DECL_CONV_STUB(IfcSphere); - DECL_CONV_STUB(IfcLightSourcePositional); - DECL_CONV_STUB(IfcStructuralPointAction); - DECL_CONV_STUB(IfcFlowSegmentType); - DECL_CONV_STUB(IfcFireSuppressionTerminalType); - DECL_CONV_STUB(IfcPropertySingleValue); - DECL_CONV_STUB(IfcFaceBasedSurfaceModel); - DECL_CONV_STUB(IfcAxis2Placement3D); - DECL_CONV_STUB(IfcStructuralResultGroup); - DECL_CONV_STUB(IfcHalfSpaceSolid); - DECL_CONV_STUB(IfcGasTerminalType); - DECL_CONV_STUB(IfcMember); - DECL_CONV_STUB(IfcPropertySet); - DECL_CONV_STUB(IfcCondition); - DECL_CONV_STUB(IfcPropertyEnumeratedValue); - DECL_CONV_STUB(IfcDistributionChamberElementType); - DECL_CONV_STUB(IfcTextLiteralWithExtent); - DECL_CONV_STUB(IfcFlowController); - DECL_CONV_STUB(IfcElectricDistributionPoint); - DECL_CONV_STUB(IfcTransportElement); - DECL_CONV_STUB(IfcAsset); - DECL_CONV_STUB(IfcSweptAreaSolid); - DECL_CONV_STUB(IfcRevolvedAreaSolid); - DECL_CONV_STUB(IfcFlowInstrumentType); - DECL_CONV_STUB(IfcEnergyConversionDevice); - DECL_CONV_STUB(IfcSurfaceStyleShading); - DECL_CONV_STUB(IfcSurfaceStyleRendering); - DECL_CONV_STUB(IfcBoilerType); - DECL_CONV_STUB(IfcBuildingElementProxy); - DECL_CONV_STUB(IfcLocalPlacement); - DECL_CONV_STUB(IfcZone); - DECL_CONV_STUB(IfcStair); - DECL_CONV_STUB(IfcWallStandardCase); - DECL_CONV_STUB(IfcDiameterDimension); - DECL_CONV_STUB(IfcDuctSegmentType); - DECL_CONV_STUB(IfcJunctionBoxType); - DECL_CONV_STUB(IfcCartesianTransformationOperator3DnonUniform); - DECL_CONV_STUB(IfcInventory); - DECL_CONV_STUB(IfcConditionCriterion); - DECL_CONV_STUB(IfcConnectedFaceSet); - DECL_CONV_STUB(IfcOpenShell); - DECL_CONV_STUB(IfcDoor); - DECL_CONV_STUB(IfcBezierCurve); - DECL_CONV_STUB(IfcRationalBezierCurve); + DECL_CONV_STUB(IfcAnnotationFillAreaOccurrence); + DECL_CONV_STUB(IfcAnnotationSurface); + DECL_CONV_STUB(IfcAnnotationSurfaceOccurrence); + DECL_CONV_STUB(IfcAnnotationSymbolOccurrence); + DECL_CONV_STUB(IfcAnnotationTextOccurrence); + DECL_CONV_STUB(IfcProfileDef); + DECL_CONV_STUB(IfcArbitraryClosedProfileDef); + DECL_CONV_STUB(IfcArbitraryOpenProfileDef); DECL_CONV_STUB(IfcArbitraryProfileDefWithVoids); - DECL_CONV_STUB(IfcBooleanResult); - DECL_CONV_STUB(IfcStackTerminalType); + DECL_CONV_STUB(IfcGroup); + DECL_CONV_STUB(IfcAsset); + DECL_CONV_STUB(IfcParameterizedProfileDef); DECL_CONV_STUB(IfcIShapeProfileDef); DECL_CONV_STUB(IfcAsymmetricIShapeProfileDef); - DECL_CONV_STUB(IfcEquipmentElement); + DECL_CONV_STUB(IfcPlacement); + DECL_CONV_STUB(IfcAxis1Placement); + DECL_CONV_STUB(IfcAxis2Placement2D); + DECL_CONV_STUB(IfcAxis2Placement3D); + DECL_CONV_STUB(IfcBSplineCurve); + DECL_CONV_STUB(IfcElement); + DECL_CONV_STUB(IfcBuildingElement); + DECL_CONV_STUB(IfcBeam); + DECL_CONV_STUB(IfcBuildingElementType); + DECL_CONV_STUB(IfcBeamType); + DECL_CONV_STUB(IfcBezierCurve); + DECL_CONV_STUB(IfcCsgPrimitive3D); + DECL_CONV_STUB(IfcBlock); + DECL_CONV_STUB(IfcBoilerType); + DECL_CONV_STUB(IfcBooleanResult); + DECL_CONV_STUB(IfcBooleanClippingResult); + DECL_CONV_STUB(IfcSurface); + DECL_CONV_STUB(IfcBoundedSurface); + DECL_CONV_STUB(IfcBoundingBox); + DECL_CONV_STUB(IfcHalfSpaceSolid); + DECL_CONV_STUB(IfcBoxedHalfSpace); + DECL_CONV_STUB(IfcSpatialStructureElement); + DECL_CONV_STUB(IfcBuilding); + DECL_CONV_STUB(IfcBuildingElementComponent); + DECL_CONV_STUB(IfcBuildingElementPart); + DECL_CONV_STUB(IfcBuildingElementProxy); + DECL_CONV_STUB(IfcBuildingElementProxyType); + DECL_CONV_STUB(IfcBuildingStorey); + DECL_CONV_STUB(IfcCShapeProfileDef); + DECL_CONV_STUB(IfcFlowFittingType); + DECL_CONV_STUB(IfcCableCarrierFittingType); + DECL_CONV_STUB(IfcFlowSegmentType); + DECL_CONV_STUB(IfcCableCarrierSegmentType); + DECL_CONV_STUB(IfcCableSegmentType); + DECL_CONV_STUB(IfcPoint); + DECL_CONV_STUB(IfcCartesianPoint); + DECL_CONV_STUB(IfcCartesianTransformationOperator); + DECL_CONV_STUB(IfcCartesianTransformationOperator2D); + DECL_CONV_STUB(IfcCartesianTransformationOperator2DnonUniform); + DECL_CONV_STUB(IfcCartesianTransformationOperator3D); + DECL_CONV_STUB(IfcCartesianTransformationOperator3DnonUniform); + DECL_CONV_STUB(IfcCenterLineProfileDef); + DECL_CONV_STUB(IfcFeatureElement); + DECL_CONV_STUB(IfcFeatureElementSubtraction); + DECL_CONV_STUB(IfcEdgeFeature); + DECL_CONV_STUB(IfcChamferEdgeFeature); + DECL_CONV_STUB(IfcChillerType); + DECL_CONV_STUB(IfcConic); + DECL_CONV_STUB(IfcCircle); + DECL_CONV_STUB(IfcCircleProfileDef); + DECL_CONV_STUB(IfcCircleHollowProfileDef); + DECL_CONV_STUB(IfcTopologicalRepresentationItem); + DECL_CONV_STUB(IfcConnectedFaceSet); DECL_CONV_STUB(IfcClosedShell); - DECL_CONV_STUB(IfcEllipseProfileDef); - DECL_CONV_STUB(IfcPropertyBoundedValue); + DECL_CONV_STUB(IfcCoilType); + DECL_CONV_STUB(IfcColourSpecification); + DECL_CONV_STUB(IfcColourRgb); + DECL_CONV_STUB(IfcColumn); + DECL_CONV_STUB(IfcColumnType); + DECL_CONV_STUB(IfcProperty); + DECL_CONV_STUB(IfcComplexProperty); + DECL_CONV_STUB(IfcCompositeCurveSegment); + DECL_CONV_STUB(IfcCompositeProfileDef); + DECL_CONV_STUB(IfcFlowMovingDeviceType); + DECL_CONV_STUB(IfcCompressorType); + DECL_CONV_STUB(IfcCondenserType); + DECL_CONV_STUB(IfcCondition); + DECL_CONV_STUB(IfcConditionCriterion); + DECL_CONV_STUB(IfcResource); + DECL_CONV_STUB(IfcConstructionResource); + DECL_CONV_STUB(IfcConstructionEquipmentResource); + DECL_CONV_STUB(IfcConstructionMaterialResource); + DECL_CONV_STUB(IfcConstructionProductResource); + DECL_CONV_STUB(IfcNamedUnit); + DECL_CONV_STUB(IfcContextDependentUnit); + DECL_CONV_STUB(IfcControllerType); + DECL_CONV_STUB(IfcConversionBasedUnit); + DECL_CONV_STUB(IfcCooledBeamType); + DECL_CONV_STUB(IfcCoolingTowerType); + DECL_CONV_STUB(IfcCostItem); + DECL_CONV_STUB(IfcCostSchedule); + DECL_CONV_STUB(IfcCovering); DECL_CONV_STUB(IfcCoveringType); - DECL_CONV_STUB(IfcActuatorType); - DECL_CONV_STUB(IfcOffsetCurve2D); - DECL_CONV_STUB(IfcAnnotation); + DECL_CONV_STUB(IfcCraneRailAShapeProfileDef); + DECL_CONV_STUB(IfcCraneRailFShapeProfileDef); + DECL_CONV_STUB(IfcCrewResource); + DECL_CONV_STUB(IfcSolidModel); + DECL_CONV_STUB(IfcCsgSolid); + DECL_CONV_STUB(IfcCurtainWall); + DECL_CONV_STUB(IfcCurtainWallType); + DECL_CONV_STUB(IfcCurveBoundedPlane); + DECL_CONV_STUB(IfcPresentationStyle); + DECL_CONV_STUB(IfcDamperType); + DECL_CONV_STUB(IfcDefinedSymbol); + DECL_CONV_STUB(IfcDerivedProfileDef); + DECL_CONV_STUB(IfcDiameterDimension); + DECL_CONV_STUB(IfcDimensionCurve); + DECL_CONV_STUB(IfcTerminatorSymbol); + DECL_CONV_STUB(IfcDimensionCurveTerminator); + DECL_CONV_STUB(IfcDirection); + DECL_CONV_STUB(IfcElementComponent); + DECL_CONV_STUB(IfcDiscreteAccessory); + DECL_CONV_STUB(IfcElementComponentType); + DECL_CONV_STUB(IfcDiscreteAccessoryType); + DECL_CONV_STUB(IfcDistributionElement); + DECL_CONV_STUB(IfcDistributionFlowElement); DECL_CONV_STUB(IfcDistributionChamberElement); - DECL_CONV_STUB(IfcOffsetCurve3D); + DECL_CONV_STUB(IfcDistributionChamberElementType); + DECL_CONV_STUB(IfcDistributionControlElement); + DECL_CONV_STUB(IfcPort); + DECL_CONV_STUB(IfcDistributionPort); + DECL_CONV_STUB(IfcDoor); + DECL_CONV_STUB(IfcPropertyDefinition); + DECL_CONV_STUB(IfcPropertySetDefinition); + DECL_CONV_STUB(IfcDoorStyle); + DECL_CONV_STUB(IfcDuctFittingType); + DECL_CONV_STUB(IfcDuctSegmentType); + DECL_CONV_STUB(IfcFlowTreatmentDeviceType); + DECL_CONV_STUB(IfcDuctSilencerType); + DECL_CONV_STUB(IfcEdge); + DECL_CONV_STUB(IfcEdgeCurve); + DECL_CONV_STUB(IfcLoop); + DECL_CONV_STUB(IfcEdgeLoop); + DECL_CONV_STUB(IfcElectricApplianceType); + DECL_CONV_STUB(IfcFlowController); + DECL_CONV_STUB(IfcElectricDistributionPoint); + DECL_CONV_STUB(IfcFlowStorageDeviceType); + DECL_CONV_STUB(IfcElectricFlowStorageDeviceType); + DECL_CONV_STUB(IfcElectricGeneratorType); + DECL_CONV_STUB(IfcElectricHeaterType); + DECL_CONV_STUB(IfcElectricMotorType); + DECL_CONV_STUB(IfcElectricTimeControlType); + DECL_CONV_STUB(IfcSystem); + DECL_CONV_STUB(IfcElectricalCircuit); + DECL_CONV_STUB(IfcElectricalElement); + DECL_CONV_STUB(IfcElementAssembly); + DECL_CONV_STUB(IfcElementQuantity); + DECL_CONV_STUB(IfcElementarySurface); + DECL_CONV_STUB(IfcEllipse); + DECL_CONV_STUB(IfcEllipseProfileDef); + DECL_CONV_STUB(IfcEnergyConversionDevice); + DECL_CONV_STUB(IfcEquipmentElement); + DECL_CONV_STUB(IfcEquipmentStandard); + DECL_CONV_STUB(IfcEvaporativeCoolerType); + DECL_CONV_STUB(IfcEvaporatorType); + DECL_CONV_STUB(IfcSweptAreaSolid); + DECL_CONV_STUB(IfcExtrudedAreaSolid); + DECL_CONV_STUB(IfcFace); + DECL_CONV_STUB(IfcFaceBasedSurfaceModel); + DECL_CONV_STUB(IfcFaceBound); + DECL_CONV_STUB(IfcFaceOuterBound); + DECL_CONV_STUB(IfcFaceSurface); + DECL_CONV_STUB(IfcManifoldSolidBrep); + DECL_CONV_STUB(IfcFacetedBrep); + DECL_CONV_STUB(IfcFacetedBrepWithVoids); + DECL_CONV_STUB(IfcFanType); + DECL_CONV_STUB(IfcFastener); + DECL_CONV_STUB(IfcFastenerType); + DECL_CONV_STUB(IfcFeatureElementAddition); + DECL_CONV_STUB(IfcFillAreaStyleHatching); + DECL_CONV_STUB(IfcFillAreaStyleTileSymbolWithStyle); + DECL_CONV_STUB(IfcFillAreaStyleTiles); + DECL_CONV_STUB(IfcFilterType); + DECL_CONV_STUB(IfcFireSuppressionTerminalType); + DECL_CONV_STUB(IfcFlowFitting); + DECL_CONV_STUB(IfcFlowInstrumentType); + DECL_CONV_STUB(IfcFlowMeterType); + DECL_CONV_STUB(IfcFlowMovingDevice); + DECL_CONV_STUB(IfcFlowSegment); + DECL_CONV_STUB(IfcFlowStorageDevice); + DECL_CONV_STUB(IfcFlowTerminal); + DECL_CONV_STUB(IfcFlowTreatmentDevice); DECL_CONV_STUB(IfcFooting); - DECL_CONV_STUB(IfcMappedItem); - DECL_CONV_STUB(IfcTransformerType); - DECL_CONV_STUB(IfcRightCircularCylinder); - DECL_CONV_STUB(IfcSpaceProgram); - DECL_CONV_STUB(IfcAnnotationSurface); - DECL_CONV_STUB(IfcZShapeProfileDef); - DECL_CONV_STUB(IfcRectangleHollowProfileDef); + DECL_CONV_STUB(IfcFurnishingElement); + DECL_CONV_STUB(IfcFurnishingElementType); + DECL_CONV_STUB(IfcFurnitureStandard); + DECL_CONV_STUB(IfcFurnitureType); + DECL_CONV_STUB(IfcGasTerminalType); DECL_CONV_STUB(IfcGeometricSet); DECL_CONV_STUB(IfcGeometricCurveSet); - DECL_CONV_STUB(IfcArbitraryOpenProfileDef); - DECL_CONV_STUB(IfcFacetedBrepWithVoids); - DECL_CONV_STUB(IfcVector); - DECL_CONV_STUB(IfcServiceLife); - DECL_CONV_STUB(IfcCurveBoundedPlane); - DECL_CONV_STUB(IfcCircle); - DECL_CONV_STUB(IfcVertexLoop); - DECL_CONV_STUB(IfcSurfaceCurveSweptAreaSolid); - DECL_CONV_STUB(IfcConstructionEquipmentResource); - DECL_CONV_STUB(IfcSectionedSpine); - DECL_CONV_STUB(IfcPropertyReferenceValue); - DECL_CONV_STUB(IfcSite); - DECL_CONV_STUB(IfcPerformanceHistory); - DECL_CONV_STUB(IfcPropertyTableValue); - DECL_CONV_STUB(IfcTransportElementType); - DECL_CONV_STUB(IfcPolygonalBoundedHalfSpace); - DECL_CONV_STUB(IfcAxis2Placement2D); - DECL_CONV_STUB(IfcFillAreaStyleHatching); - DECL_CONV_STUB(IfcFastener); - DECL_CONV_STUB(IfcScheduleTimeControl); - DECL_CONV_STUB(IfcElectricMotorType); - DECL_CONV_STUB(IfcTimeSeriesSchedule); - DECL_CONV_STUB(IfcPipeSegmentType); - DECL_CONV_STUB(IfcFlowTerminal); - DECL_CONV_STUB(IfcWallType); - DECL_CONV_STUB(IfcCoilType); - DECL_CONV_STUB(IfcFurnishingElement); - DECL_CONV_STUB(IfcWasteTerminalType); - DECL_CONV_STUB(IfcWindow); - DECL_CONV_STUB(IfcElectricFlowStorageDeviceType); - DECL_CONV_STUB(IfcRelAggregates); - DECL_CONV_STUB(IfcRamp); + DECL_CONV_STUB(IfcRepresentationContext); + DECL_CONV_STUB(IfcGeometricRepresentationContext); + DECL_CONV_STUB(IfcGeometricRepresentationSubContext); + DECL_CONV_STUB(IfcGrid); + DECL_CONV_STUB(IfcObjectPlacement); + DECL_CONV_STUB(IfcGridPlacement); + DECL_CONV_STUB(IfcHeatExchangerType); + DECL_CONV_STUB(IfcHumidifierType); + DECL_CONV_STUB(IfcInventory); + DECL_CONV_STUB(IfcJunctionBoxType); + DECL_CONV_STUB(IfcLShapeProfileDef); + DECL_CONV_STUB(IfcLaborResource); + DECL_CONV_STUB(IfcLampType); + DECL_CONV_STUB(IfcLightFixtureType); + DECL_CONV_STUB(IfcLightSource); + DECL_CONV_STUB(IfcLightSourceAmbient); + DECL_CONV_STUB(IfcLightSourceDirectional); + DECL_CONV_STUB(IfcLightSourceGoniometric); + DECL_CONV_STUB(IfcLightSourcePositional); + DECL_CONV_STUB(IfcLightSourceSpot); + DECL_CONV_STUB(IfcLine); DECL_CONV_STUB(IfcLinearDimension); - DECL_CONV_STUB(IfcElementarySurface); - DECL_CONV_STUB(IfcConstructionProductResource); - DECL_CONV_STUB(IfcCableSegmentType); - DECL_CONV_STUB(IfcPath); - DECL_CONV_STUB(IfcActor); + DECL_CONV_STUB(IfcLocalPlacement); + DECL_CONV_STUB(IfcMappedItem); + DECL_CONV_STUB(IfcProductRepresentation); + DECL_CONV_STUB(IfcMaterialDefinitionRepresentation); + DECL_CONV_STUB(IfcMeasureWithUnit); + DECL_CONV_STUB(IfcMechanicalFastener); + DECL_CONV_STUB(IfcMechanicalFastenerType); + DECL_CONV_STUB(IfcMember); + DECL_CONV_STUB(IfcMemberType); + DECL_CONV_STUB(IfcMotorConnectionType); + DECL_CONV_STUB(IfcProcess); + DECL_CONV_STUB(IfcTask); + DECL_CONV_STUB(IfcMove); DECL_CONV_STUB(IfcOccupant); - DECL_CONV_STUB(IfcSwitchingDeviceType); + DECL_CONV_STUB(IfcOffsetCurve2D); + DECL_CONV_STUB(IfcOffsetCurve3D); + DECL_CONV_STUB(IfcOneDirectionRepeatFactor); + DECL_CONV_STUB(IfcOpenShell); + DECL_CONV_STUB(IfcOpeningElement); + DECL_CONV_STUB(IfcOrderAction); + DECL_CONV_STUB(IfcOrientedEdge); + DECL_CONV_STUB(IfcOutletType); + DECL_CONV_STUB(IfcPath); + DECL_CONV_STUB(IfcPerformanceHistory); + DECL_CONV_STUB(IfcPermit); + DECL_CONV_STUB(IfcPile); + DECL_CONV_STUB(IfcPipeFittingType); + DECL_CONV_STUB(IfcPipeSegmentType); + DECL_CONV_STUB(IfcPlanarExtent); + DECL_CONV_STUB(IfcPlanarBox); + DECL_CONV_STUB(IfcPlane); + DECL_CONV_STUB(IfcPlate); + DECL_CONV_STUB(IfcPlateType); + DECL_CONV_STUB(IfcPointOnCurve); + DECL_CONV_STUB(IfcPointOnSurface); + DECL_CONV_STUB(IfcPolyLoop); + DECL_CONV_STUB(IfcPolygonalBoundedHalfSpace); + DECL_CONV_STUB(IfcPolyline); + DECL_CONV_STUB(IfcPresentationStyleAssignment); + DECL_CONV_STUB(IfcProcedure); + DECL_CONV_STUB(IfcProductDefinitionShape); + DECL_CONV_STUB(IfcProject); + DECL_CONV_STUB(IfcProjectOrder); + DECL_CONV_STUB(IfcProjectOrderRecord); + DECL_CONV_STUB(IfcProjectionCurve); + DECL_CONV_STUB(IfcProjectionElement); + DECL_CONV_STUB(IfcSimpleProperty); + DECL_CONV_STUB(IfcPropertyBoundedValue); + DECL_CONV_STUB(IfcPropertyEnumeratedValue); + DECL_CONV_STUB(IfcPropertyListValue); + DECL_CONV_STUB(IfcPropertyReferenceValue); + DECL_CONV_STUB(IfcPropertySet); + DECL_CONV_STUB(IfcPropertySingleValue); + DECL_CONV_STUB(IfcPropertyTableValue); + DECL_CONV_STUB(IfcProtectiveDeviceType); + DECL_CONV_STUB(IfcProxy); + DECL_CONV_STUB(IfcPumpType); + DECL_CONV_STUB(IfcRadiusDimension); + DECL_CONV_STUB(IfcRailing); + DECL_CONV_STUB(IfcRailingType); + DECL_CONV_STUB(IfcRamp); + DECL_CONV_STUB(IfcRampFlight); + DECL_CONV_STUB(IfcRampFlightType); + DECL_CONV_STUB(IfcRationalBezierCurve); + DECL_CONV_STUB(IfcRectangleProfileDef); + DECL_CONV_STUB(IfcRectangleHollowProfileDef); + DECL_CONV_STUB(IfcRectangularPyramid); + DECL_CONV_STUB(IfcRectangularTrimmedSurface); + DECL_CONV_STUB(IfcReinforcingElement); + DECL_CONV_STUB(IfcReinforcingBar); + DECL_CONV_STUB(IfcReinforcingMesh); + DECL_CONV_STUB(IfcRelationship); + DECL_CONV_STUB(IfcRelDecomposes); + DECL_CONV_STUB(IfcRelAggregates); + DECL_CONV_STUB(IfcRelConnects); + DECL_CONV_STUB(IfcRelContainedInSpatialStructure); + DECL_CONV_STUB(IfcRelDefines); + DECL_CONV_STUB(IfcRelDefinesByProperties); + DECL_CONV_STUB(IfcRelFillsElement); + DECL_CONV_STUB(IfcRelOverridesProperties); + DECL_CONV_STUB(IfcRelVoidsElement); + DECL_CONV_STUB(IfcRepresentation); + DECL_CONV_STUB(IfcRepresentationMap); + DECL_CONV_STUB(IfcRevolvedAreaSolid); + DECL_CONV_STUB(IfcRightCircularCone); + DECL_CONV_STUB(IfcRightCircularCylinder); + DECL_CONV_STUB(IfcRoof); + DECL_CONV_STUB(IfcRoundedEdgeFeature); + DECL_CONV_STUB(IfcRoundedRectangleProfileDef); + DECL_CONV_STUB(IfcSIUnit); + DECL_CONV_STUB(IfcSanitaryTerminalType); + DECL_CONV_STUB(IfcScheduleTimeControl); + DECL_CONV_STUB(IfcSectionedSpine); + DECL_CONV_STUB(IfcSensorType); + DECL_CONV_STUB(IfcServiceLife); + DECL_CONV_STUB(IfcShapeModel); + DECL_CONV_STUB(IfcShapeRepresentation); + DECL_CONV_STUB(IfcShellBasedSurfaceModel); + DECL_CONV_STUB(IfcSite); + DECL_CONV_STUB(IfcSlab); + DECL_CONV_STUB(IfcSlabType); + DECL_CONV_STUB(IfcSpace); + DECL_CONV_STUB(IfcSpaceHeaterType); + DECL_CONV_STUB(IfcSpaceProgram); + DECL_CONV_STUB(IfcSpatialStructureElementType); + DECL_CONV_STUB(IfcSpaceType); + DECL_CONV_STUB(IfcSphere); + DECL_CONV_STUB(IfcStackTerminalType); + DECL_CONV_STUB(IfcStair); + DECL_CONV_STUB(IfcStairFlight); + DECL_CONV_STUB(IfcStairFlightType); + DECL_CONV_STUB(IfcStructuralActivity); + DECL_CONV_STUB(IfcStructuralAction); + DECL_CONV_STUB(IfcStructuralAnalysisModel); + DECL_CONV_STUB(IfcStructuralItem); + DECL_CONV_STUB(IfcStructuralConnection); + DECL_CONV_STUB(IfcStructuralCurveConnection); + DECL_CONV_STUB(IfcStructuralMember); + DECL_CONV_STUB(IfcStructuralCurveMember); + DECL_CONV_STUB(IfcStructuralCurveMemberVarying); + DECL_CONV_STUB(IfcStructuralLinearAction); + DECL_CONV_STUB(IfcStructuralLinearActionVarying); + DECL_CONV_STUB(IfcStructuralLoadGroup); + DECL_CONV_STUB(IfcStructuralPlanarAction); + DECL_CONV_STUB(IfcStructuralPlanarActionVarying); + DECL_CONV_STUB(IfcStructuralPointAction); + DECL_CONV_STUB(IfcStructuralPointConnection); + DECL_CONV_STUB(IfcStructuralReaction); + DECL_CONV_STUB(IfcStructuralPointReaction); + DECL_CONV_STUB(IfcStructuralResultGroup); + DECL_CONV_STUB(IfcStructuralSurfaceConnection); + DECL_CONV_STUB(IfcStructuralSurfaceMember); + DECL_CONV_STUB(IfcStructuralSurfaceMemberVarying); + DECL_CONV_STUB(IfcStructuredDimensionCallout); + DECL_CONV_STUB(IfcStyleModel); + DECL_CONV_STUB(IfcStyledRepresentation); + DECL_CONV_STUB(IfcSubContractResource); + DECL_CONV_STUB(IfcSubedge); + DECL_CONV_STUB(IfcSurfaceCurveSweptAreaSolid); DECL_CONV_STUB(IfcSweptSurface); DECL_CONV_STUB(IfcSurfaceOfLinearExtrusion); - DECL_CONV_STUB(IfcShellBasedSurfaceModel); - DECL_CONV_STUB(IfcBuilding); - DECL_CONV_STUB(IfcSIUnit); - DECL_CONV_STUB(IfcDiscreteAccessory); - DECL_CONV_STUB(IfcSystemFurnitureElementType); - DECL_CONV_STUB(IfcElementAssembly); - DECL_CONV_STUB(IfcCoolingTowerType); - DECL_CONV_STUB(IfcLightSourceSpot); - DECL_CONV_STUB(IfcEvaporatorType); - DECL_CONV_STUB(IfcSpaceHeaterType); - DECL_CONV_STUB(IfcElementQuantity); - DECL_CONV_STUB(IfcRampFlight); - DECL_CONV_STUB(IfcConversionBasedUnit); - DECL_CONV_STUB(IfcExtrudedAreaSolid); - DECL_CONV_STUB(IfcProjectOrder); - DECL_CONV_STUB(IfcBooleanClippingResult); - DECL_CONV_STUB(IfcReinforcingBar); - DECL_CONV_STUB(IfcCenterLineProfileDef); - DECL_CONV_STUB(IfcUShapeProfileDef); - DECL_CONV_STUB(IfcBoundingBox); - DECL_CONV_STUB(IfcWindowStyle); - DECL_CONV_STUB(IfcMemberType); - DECL_CONV_STUB(IfcLightFixtureType); - DECL_CONV_STUB(IfcFlowStorageDevice); - DECL_CONV_STUB(IfcTopologyRepresentation); - DECL_CONV_STUB(IfcRelDefinesByProperties); - DECL_CONV_STUB(IfcRelOverridesProperties); - DECL_CONV_STUB(IfcStairFlightType); - DECL_CONV_STUB(IfcCircleProfileDef); - DECL_CONV_STUB(IfcSweptDiskSolid); - DECL_CONV_STUB(IfcStructuralPlanarActionVarying); - DECL_CONV_STUB(IfcValveType); - DECL_CONV_STUB(IfcUnitAssignment); - DECL_CONV_STUB(IfcVirtualElement); - DECL_CONV_STUB(IfcStructuralCurveConnection); - DECL_CONV_STUB(IfcAirTerminalType); - DECL_CONV_STUB(IfcFlowTreatmentDeviceType); - DECL_CONV_STUB(IfcRoof); - DECL_CONV_STUB(IfcElectricTimeControlType); - DECL_CONV_STUB(IfcPile); - DECL_CONV_STUB(IfcCostSchedule); - DECL_CONV_STUB(IfcRampFlightType); - DECL_CONV_STUB(IfcDerivedProfileDef); - DECL_CONV_STUB(IfcCostItem); - DECL_CONV_STUB(IfcEvaporativeCoolerType); - DECL_CONV_STUB(IfcChillerType); - DECL_CONV_STUB(IfcBoxedHalfSpace); - DECL_CONV_STUB(IfcCurtainWallType); - DECL_CONV_STUB(IfcGeometricRepresentationSubContext); - DECL_CONV_STUB(IfcDimensionCurve); - DECL_CONV_STUB(IfcPlane); - DECL_CONV_STUB(IfcProjectionCurve); - DECL_CONV_STUB(IfcDamperType); - DECL_CONV_STUB(IfcMechanicalFastener); - DECL_CONV_STUB(IfcDuctSilencerType); - DECL_CONV_STUB(IfcLaborResource); - DECL_CONV_STUB(IfcFanType); - DECL_CONV_STUB(IfcProjectionElement); - DECL_CONV_STUB(IfcCraneRailFShapeProfileDef); - DECL_CONV_STUB(IfcProject); - DECL_CONV_STUB(IfcRelVoidsElement); - DECL_CONV_STUB(IfcElectricalCircuit); - DECL_CONV_STUB(IfcLShapeProfileDef); - DECL_CONV_STUB(IfcFlowTreatmentDevice); - DECL_CONV_STUB(IfcVertexPoint); - DECL_CONV_STUB(IfcAnnotationTextOccurrence); - DECL_CONV_STUB(IfcFilterType); - DECL_CONV_STUB(IfcEdgeLoop); - DECL_CONV_STUB(IfcCircleHollowProfileDef); - DECL_CONV_STUB(IfcAirTerminalBoxType); - DECL_CONV_STUB(IfcStructuredDimensionCallout); - DECL_CONV_STUB(IfcCableCarrierSegmentType); - DECL_CONV_STUB(IfcDuctFittingType); - DECL_CONV_STUB(IfcRectangularTrimmedSurface); - DECL_CONV_STUB(IfcProductDefinitionShape); - DECL_CONV_STUB(IfcStairFlight); - DECL_CONV_STUB(IfcSlab); - DECL_CONV_STUB(IfcPipeFittingType); - DECL_CONV_STUB(IfcSpace); - DECL_CONV_STUB(IfcBuildingElementProxyType); - DECL_CONV_STUB(IfcAlarmType); - DECL_CONV_STUB(IfcCableCarrierFittingType); - DECL_CONV_STUB(IfcRoundedEdgeFeature); - DECL_CONV_STUB(IfcFaceSurface); - DECL_CONV_STUB(IfcCartesianTransformationOperator2D); - DECL_CONV_STUB(IfcTendonAnchor); - DECL_CONV_STUB(IfcWorkSchedule); DECL_CONV_STUB(IfcSurfaceOfRevolution); - DECL_CONV_STUB(IfcElectricHeaterType); - DECL_CONV_STUB(IfcMeasureWithUnit); - DECL_CONV_STUB(IfcOrientedEdge); - DECL_CONV_STUB(IfcCartesianTransformationOperator2DnonUniform); - DECL_CONV_STUB(IfcRelFillsElement); - DECL_CONV_STUB(IfcConstructionMaterialResource); - DECL_CONV_STUB(IfcRadiusDimension); + DECL_CONV_STUB(IfcSurfaceStyle); + DECL_CONV_STUB(IfcSurfaceStyleShading); + DECL_CONV_STUB(IfcSurfaceStyleRendering); + DECL_CONV_STUB(IfcSurfaceStyleWithTextures); + DECL_CONV_STUB(IfcSweptDiskSolid); + DECL_CONV_STUB(IfcSwitchingDeviceType); + DECL_CONV_STUB(IfcSystemFurnitureElementType); + DECL_CONV_STUB(IfcTShapeProfileDef); + DECL_CONV_STUB(IfcTankType); + DECL_CONV_STUB(IfcTendon); + DECL_CONV_STUB(IfcTendonAnchor); + DECL_CONV_STUB(IfcTextLiteral); + DECL_CONV_STUB(IfcTextLiteralWithExtent); + DECL_CONV_STUB(IfcTimeSeriesSchedule); + DECL_CONV_STUB(IfcTopologyRepresentation); + DECL_CONV_STUB(IfcTransformerType); + DECL_CONV_STUB(IfcTransportElement); + DECL_CONV_STUB(IfcTransportElementType); + DECL_CONV_STUB(IfcTrapeziumProfileDef); + DECL_CONV_STUB(IfcTrimmedCurve); + DECL_CONV_STUB(IfcTubeBundleType); + DECL_CONV_STUB(IfcTwoDirectionRepeatFactor); + DECL_CONV_STUB(IfcUShapeProfileDef); + DECL_CONV_STUB(IfcUnitAssignment); + DECL_CONV_STUB(IfcUnitaryEquipmentType); + DECL_CONV_STUB(IfcValveType); + DECL_CONV_STUB(IfcVector); + DECL_CONV_STUB(IfcVertex); + DECL_CONV_STUB(IfcVertexLoop); + DECL_CONV_STUB(IfcVertexPoint); + DECL_CONV_STUB(IfcVibrationIsolatorType); + DECL_CONV_STUB(IfcVirtualElement); + DECL_CONV_STUB(IfcWall); + DECL_CONV_STUB(IfcWallStandardCase); + DECL_CONV_STUB(IfcWallType); + DECL_CONV_STUB(IfcWasteTerminalType); + DECL_CONV_STUB(IfcWindow); + DECL_CONV_STUB(IfcWindowStyle); + DECL_CONV_STUB(IfcWorkControl); + DECL_CONV_STUB(IfcWorkPlan); + DECL_CONV_STUB(IfcWorkSchedule); + DECL_CONV_STUB(IfcZShapeProfileDef); + DECL_CONV_STUB(IfcZone); #undef DECL_CONV_STUB From 0cee21ce3c049c48658c914a103f6efcca215006 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 13 Apr 2015 21:52:09 +0200 Subject: [PATCH 56/85] COB: code cleanup. --- code/COBLoader.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/COBLoader.cpp b/code/COBLoader.cpp index ce9ceeb7e..0b90067c5 100644 --- a/code/COBLoader.cpp +++ b/code/COBLoader.cpp @@ -148,13 +148,17 @@ void COBImporter::InternReadFile( const std::string& pFile, } DefaultLogger::get()->info("File format tag: "+std::string(head+9,6)); - void (COBImporter::* load)(Scene&,StreamReaderLE*)= head[15]=='A'?&COBImporter::ReadAsciiFile:&COBImporter::ReadBinaryFile; if (head[16]!='L') { ThrowException("File is big-endian, which is not supported"); } // load data into intermediate structures - (this->*load)(scene,stream.get()); + if (head[15]=='A') { + ReadAsciiFile(scene, stream.get()); + } + else { + ReadBinaryFile(scene, stream.get()); + } if(scene.nodes.empty()) { ThrowException("No nodes loaded"); } From 5a8d5605a58b24c3ff609ee4f34ae5820227abb3 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 13 Apr 2015 22:10:26 +0200 Subject: [PATCH 57/85] Update README for regression test suite. --- test/regression/README | 98 +++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 50 deletions(-) diff --git a/test/regression/README b/test/regression/README index d0e42e442..907d1ecf7 100644 --- a/test/regression/README +++ b/test/regression/README @@ -3,83 +3,81 @@ Assimp Regression Test Suite 1) How does it work? --------------------------------------------------------------------------------- -run.py checks all model in the /test/models folder and compares the result -against a regression database provided by us (db.zip). If the test passes -successfully, Assimp definitely WORKS perfectly on your system. A few failures -are totally fine as well (see sections 7+). You need to worry if a huge -majority of all files in a particular format or post-processing configuration -fails - this might be a sign of a recent regression in assimp's codebase. +run.py checks all model in the /test/models* folders and compares the result +against a regression database provided with assimp (db.zip). A few failures +are totally fine (see sections 7+). You need to worry if a huge +majority of all files in a particular format (or post-processing configuration) +fails as this might be a sign of a recent regression in assimp's codebase or +gross incompatibility with your system or compiler. 2) What do I need? --------------------------------------------------------------------------------- - - you need Python installed - 3.x !! - - you need to build tools/assimp_cmd as described in the INSTALL file ( - make && make install on unixes,release-dll target with msvc). + - You need Python installed (2.7+, 3.x). On Windows, run the scripts using "py". + - You need to build the assimp command line tool (ASSIMP_BUILD_ASSIMP_TOOLS + CMake build flag). Both run.py and gen_db.py take the full path to the binary + as first command line parameter. 3) How to add more test files? --------------------------------------------------------------------------------- Use the following procedure: - - verify the correctness of your assimp build - run the regression suite. - DO NOT continue if one or more tests fail. - - add your additional test files to /test/models/, where - is the file type (typically the file extension) - - rebuild the regression database using gen_db.py - - run the regression suite again - all tests should pass, including - those for the new files. + - Verify the correctness of your assimp build - run the regression suite. + DO NOT continue if more tests fail than usual. + - Add your additional test files to /test/models/, where + is the file type (typically the file extension). + - If you test file does not meet the BSD license requirements, add it to + /test/models-nonbsd/ so people know to be careful with it. + - Rebuild the regression database: + "gen_db.py -ixyz" where .xyz is the file extension of the new file. + - Run the regression suite again. There should be no new failures and the new + file should not be among the failures. + - Include the db.zip file with your Pull Request. Travis CI enforces a passing + regression suite (with offenders whitelisted as a last resort). - - contributors: commit the db.zip plus your additional test files to - the SVN repository. - -4) I made a change/fix/.. to a loader, how to update the database? +4) I made a change/fix/patch to a loader, how to update the database? --------------------------------------------------------------------------------- - - rebuild the regression database using gen_db.py - - run the suite - all tests should pass now. If they do not, don't continue - - - contributors: commit the db.zip to the SVN repository + - Rebuild the regression database using "gen_db.py -ixyz" + where .xyz is the file extension for which the loader was patched. + - Run the regression suite again. There should be no new failures and the new + file should not be among the failures. + - Include the db.zip file with your Pull Request. Travis CI enforces a passing + regression suite (with offenders whitelisted as a last resort). -5) How to add my whole model repository to the suite? +5) How to add my whole model repository to the database? --------------------------------------------------------------------------------- Edit the reg_settings.py file and add the path to your repository to -<>. Then, rebuild the suite. +<>. Then, rebuild the database. -6) So what is actually verified? +6) So what is actually tested? --------------------------------------------------------------------------------- -The regression database includes mini dumps of the aiScene data structure - +The regression database includes mini dumps of the aiScene data structure, i.e. the scene hierarchy plus the sizes of all data arrays MUST match. Floating-point -data buffers, such as vertex positions, are handled less strictly: min,max and -average values are stored with lower precision. This takes hardware- or +data buffers, such as vertex positions are handled less strictly: min, max and +average values are stored with low precision. This takes hardware- or compiler-specific differences in floating-point computations into account. Generally, almost all significant regressions will be detected while the number of false positives is relatively low. 7) The test suite fails, what do do? --------------------------------------------------------------------------------- -Get back to ../results and check out regression_suite_failures.txt -It contains a list of all files which failed the test ... they're copied to -../results/tmp. Both an EXPECTED and an ACTUAL file is produced per test. -The output of `assimp cmpdump` is written to regressions_suite_output.txt. -To quickly find all all reports pertaining to tests which failed, I'd -recommend grepping for 'but' because its a constituent of all error messages -produced by assimp_cmd :) Error reports contain detailed information -regarding the point of failure inside the data structure, the values of -the two corresponding fields that were found to be different from EXPECTED -and ACTUAL, respectively, ... this should offer you enough information to start -debugging. +Get back to /test/results and look at regression_suite_failures.txt. +It contains a list of all files which failed the test. Failing dumps are copied to +root>/test/results/tmp. Both an EXPECTED and an ACTUAL file is produced per test. +The output of "assimp cmpdump" is written to regressions_suite_output.txt. Grep +for the file name in question and locate the log for the failed comparison. It +contains a full trace of which scene elements have been compared before, which +makes it reasonably easy to locate the offending field. 8) fp:fast vs fp:precise fails the test suite (same for gcc equivalents) --------------------------------------------------------------------------------- As mentioned above, floating-point inaccuracies between differently optimized builds are not considered regressions and all float comparisons done by the test -suite involve an epsilon. Changing floating-point optimizations can, however, - lead to *real* changes in the output data structure, such as different number -of vertices or faces, ... this violates one of our primary targets, that is -produce reliable and portable output. We're working hard on removing these -issues, but at the moment you have to live with few of them. - -Currently, the regression database is build on Windows using MSVC8 with -fp:precise. This leads to a small number of failures with fp:fast and -virtally every build with gcc. Be patient, it will be fixed. +suite involve an epsilon to accomodate. However compiler settings that allow +compilers to perform non-IEEE754 compliant optimizations can cause arbitrary +failures in the test suite. Even if the compiler is configured to be IEE754 +comformant, there is lots of code in assimp that leaves the compiler a choice +and different compilers make different choices (for example the precision of +float intermediaries is implementation-specified). From fb45e4d51249611cb880db14c6f778027743d4a8 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Tue, 14 Apr 2015 10:22:33 +0200 Subject: [PATCH 58/85] Make command line parameters in gen_db script more predictable. --- test/regression/gen_db.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/test/regression/gen_db.py b/test/regression/gen_db.py index 4005fe161..ab4e31c72 100644 --- a/test/regression/gen_db.py +++ b/test/regression/gen_db.py @@ -69,6 +69,9 @@ configs for an IDE, make sure to build the assimp_cmd project. -i,--include: List of file extensions to update dumps for. If omitted, all file extensions are updated except those in `exclude`. + Example: -ixyz,abc + -i.xyz,.abc + --include=xyz,abc -e,--exclude: Merged with settings.exclude_extensions to produce a list of all file extensions to ignore. If dumps exist, @@ -78,8 +81,6 @@ configs for an IDE, make sure to build the assimp_cmd project. Dont' change anything. -n,--nozip: Don't pack to ZIP archive. Keep all dumps in individual files. - -(lists of file extensions are comma delimited, i.e. `3ds,lwo,x`) """ # ------------------------------------------------------------------------------- @@ -172,30 +173,32 @@ def gen_db(ext_list,outfile): # ------------------------------------------------------------------------------- if __name__ == "__main__": - assimp_bin_path = sys.argv[1] if len(sys.argv) > 1 else 'assimp' - def clean(f): f = f.strip("* \'") return "."+f if f[:1] != '.' else f - if len(sys.argv)>1 and (sys.argv[1] == "--help" or sys.argv[1] == "-h"): + if len(sys.argv) <= 1 or sys.argv[1] == "--help" or sys.argv[1] == "-h": print(usage) sys.exit(0) + assimp_bin_path = sys.argv[1] ext_list, preview, nozip = None, False, False - for m in sys.argv[1:]: + for m in sys.argv[2:]: if m[:10]=="--exclude=": settings.exclude_extensions += map(clean, m[10:].split(",")) - elif m[:3]=="-e=": - settings.exclude_extensions += map(clean, m[3:].split(",")) + elif m[:2]=="-e": + settings.exclude_extensions += map(clean, m[2:].split(",")) elif m[:10]=="--include=": ext_list = m[10:].split(",") - elif m[:3]=="-i=": - ext_list = m[3:].split(",") + elif m[:2]=="-i": + ext_list = m[2:].split(",") elif m=="-p" or m == "--preview": preview = True elif m=="-n" or m == "--nozip": nozip = True + else: + print("Unrecognized parameter: " + m) + sys.exit(-1) outfile = open(os.path.join("..", "results", "gen_regression_db_output.txt"), "w") if ext_list is None: @@ -206,9 +209,8 @@ if __name__ == "__main__": # todo: Fix for multi dot extensions like .skeleton.xml ext_list = list(filter(lambda f: not f in settings.exclude_extensions, map(clean, ext_list))) - - if preview: - print(','.join(ext_list)) + print('File extensions processed: ' + ', '.join(ext_list)) + if preview: sys.exit(1) extract_zip() From 072e39470bce5499789f9f63d0dfd92ca0469554 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Tue, 14 Apr 2015 10:31:15 +0200 Subject: [PATCH 59/85] Disable WINDOWS builds. - Currently, the mingw linker crashes linking unit.exe - Significant increase in build time for testing an exotic platform - Mingw crosscompile on linux. Assimp does not have many system dependencies so I feel we can omit this. - Confusion since 2 build combinations appear in Travis but are disabled. --- .travis.yml | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 20b7a058a..f988cb12d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ before_install: - sudo apt-get update -qq - sudo apt-get install cmake python3 - - if [ $WINDOWS ]; then sudo apt-get install -qq gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 wine ; fi - if [ $LINUX ]; then sudo apt-get install -qq freeglut3-dev libxmu-dev libxi-dev ; fi - echo -e "#ifndef A_R_H_INC\n#define A_R_H_INC\n#define GitVersion ${TRAVIS_JOB_ID}\n#define GitBranch \"${TRAVIS_BRANCH}\"\n#endif // A_R_H_INC" > revision.h @@ -17,10 +16,6 @@ env: - LINUX=1 TRAVIS_NO_EXPORT=NO - LINUX=1 SHARED_BUILD=ON - LINUX=1 SHARED_BUILD=OFF - - WINDOWS=1 TRAVIS_NO_EXPORT=YES - - WINDOWS=1 TRAVIS_NO_EXPORT=NO - - WINDOWS=1 SHARED_BUILD=ON - - WINDOWS=1 SHARED_BUILD=OFF - ANDROID=1 language: cpp @@ -34,17 +29,7 @@ install: script: - if [ $ANDROID ]; then - ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; - elif [ $WINDOWS -a $CC = "gcc" ]; then - sudo sh -c "wget http://source.winehq.org/git/wine.git/commitdiff_plain/86781a6a524fa336f893ffd0a87373ffd306913c?hp=076edfe9d4b6cd39b6cf41b9f1d3e18688cc8673 -O - | patch -p 1 -d /usr/x86_64-w64-mingw32" ; - sudo sh -c "wget https://www.winehq.org/pipermail/wine-patches/2012-February/111438.html -O - | patch -p 1 -d /usr/x86_64-w64-mingw32" ; - cmake -G "Unix Makefiles" -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD -DCMAKE_TOOLCHAIN_FILE=cmake-modules/MinGW_x86_64.cmake ; - cmake --build . ; - make install ; - elif [ $WINDOWS ]; then - echo "Skip compile with non-gcc setting." ; - elif [ $RESERVED ]; then - echo "Reserved condition" ; + ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ; else cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD ; make ; @@ -56,6 +41,6 @@ script: chmod 755 run.py ; ./run.py ; echo "==========================================================" ; - echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)" ; + echo "REGRESSION TEST FAILURES (results/run_regression_suite_failures.csv)" ; cat ../results/run_regression_suite_failures.csv; fi From 1899de6ea9f53cdcc30b93253f8ecebe7a749409 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 14 Apr 2015 12:03:51 +0200 Subject: [PATCH 60/85] remove dead code. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 8454ae1f2..9dd2197a7 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -769,7 +769,6 @@ void OpenGEXImporter::resolveReferences() { if( m_mesh2refMap.end() != it ) { unsigned int meshIdx = m_mesh2refMap[ name ]; node->mMeshes[ i ] = meshIdx; - //node->mNumMeshes++; } } } else if( RefInfo::MaterialRef == currentRefInfo->m_type ) { From 14e65f53252d1c4dc12a17980466c53f8a1f3c60 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 14 Apr 2015 12:04:39 +0200 Subject: [PATCH 61/85] openddl-parser: latest greatest: fix invalid handling of float values stored a hexadecimal literals. Signed-off-by: Kim Kulling --- contrib/openddlparser/code/OpenDDLParser.cpp | 14 ++++--- contrib/openddlparser/code/Value.cpp | 41 +++++++++++++++++++ .../include/openddlparser/OpenDDLCommon.h | 40 ++++++++++++++++++ .../openddlparser/OpenDDLParserUtils.h | 7 ++-- .../include/openddlparser/Value.h | 14 +++++-- 5 files changed, 105 insertions(+), 11 deletions(-) diff --git a/contrib/openddlparser/code/OpenDDLParser.cpp b/contrib/openddlparser/code/OpenDDLParser.cpp index 104471965..c1b36620c 100644 --- a/contrib/openddlparser/code/OpenDDLParser.cpp +++ b/contrib/openddlparser/code/OpenDDLParser.cpp @@ -46,6 +46,7 @@ namespace Grammar { static const char *BoolTrue = "true"; static const char *BoolFalse = "false"; static const char *RefToken = "ref"; + static const char *CommaSeparator = ","; static const char* PrimitiveTypeToken[ Value::ddl_types_max ] = { "bool", @@ -752,13 +753,16 @@ char *OpenDDLParser::parseHexaLiteral( char *in, char *end, Value **data ) { int value( 0 ); while( pos > 0 ) { + int v = hex2Decimal( *start ); pos--; - value += hex2Decimal( *start ) * static_cast( pow( 16.0, pos ) ); + value = ( value << 4 ) | v; start++; } - *data = ValueAllocator::allocPrimData( Value::ddl_int32 ); - (*data)->setInt32( value ); + *data = ValueAllocator::allocPrimData( Value::ddl_unsigned_int64 ); + if( ddl_nullptr != *data ) { + ( *data )->setUnsignedInt64( value ); + } return in; } @@ -856,7 +860,7 @@ char *OpenDDLParser::parseDataList( char *in, char *end, Value **data, size_t &n return in; } -DataArrayList *createDataArrayList( Value *currentValue, size_t numValues ) { +static DataArrayList *createDataArrayList( Value *currentValue, size_t numValues ) { DataArrayList *dataList = new DataArrayList; dataList->m_dataList = currentValue; dataList->m_numItems = numValues; @@ -892,7 +896,7 @@ char *OpenDDLParser::parseDataArrayList( char *in, char *end, DataArrayList **da } } } - } while( ',' == *in && in != end ); + } while( Grammar::CommaSeparator[ 0 ] == *in && in != end ); in = lookForNextToken( in, end ); in++; } diff --git a/contrib/openddlparser/code/Value.cpp b/contrib/openddlparser/code/Value.cpp index 5e88d6572..c815d52a2 100644 --- a/contrib/openddlparser/code/Value.cpp +++ b/contrib/openddlparser/code/Value.cpp @@ -88,6 +88,47 @@ int64 Value::getInt64() { return ( int64 ) ( *m_data ); } +void Value::setUnsignedInt8( uint8 value ) { + assert( ddl_unsigned_int8 == m_type ); + ::memcpy( m_data, &value, m_size ); +} + +uint8 Value::getUnsignedInt8() const { + assert( ddl_unsigned_int8 == m_type ); + return ( uint8 ) ( *m_data ); +} + +void Value::setUnsignedInt16( uint16 value ) { + assert( ddl_unsigned_int16 == m_type ); + ::memcpy( m_data, &value, m_size ); + +} +uint16 Value::getUnsignedInt16() const { + assert( ddl_unsigned_int16 == m_type ); + return ( uint8 ) ( *m_data ); + +} + +void Value::setUnsignedInt32( uint32 value ) { + assert( ddl_unsigned_int32 == m_type ); + ::memcpy( m_data, &value, m_size ); +} + +uint32 Value::getUnsignedInt32() const { + assert( ddl_unsigned_int32 == m_type ); + return ( uint8 ) ( *m_data ); +} + +void Value::setUnsignedInt64( uint64 value ) { + assert( ddl_unsigned_int64 == m_type ); + ::memcpy( m_data, &value, m_size ); +} + +uint64 Value::getUnsignedInt64() const { + assert( ddl_unsigned_int64 == m_type ); + return ( uint64 ) ( *m_data ); +} + void Value::setFloat( float value ) { assert( ddl_float == m_type ); ::memcpy( m_data, &value, m_size ); diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h b/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h index 40e54ea4b..a42fbcf59 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h @@ -67,12 +67,52 @@ typedef char int8; typedef short int16; typedef int int32; typedef long int64; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; +typedef unsigned long uint64; enum NameType { GlobalName, LocalName }; +struct Token { +public: + Token( const char *token ) + : m_token( token ) + , m_size( 0 ){ + if( ddl_nullptr != token ) { + m_size = strlen( m_token ); + } + } + + ~Token() { + // empty + } + + size_t length() const { + return m_size; + } + + bool operator == ( const Token &rhs ) const { + if( m_size != rhs.m_size ) { + return false; + } + + const int res( strncmp( m_token, rhs.m_token, m_size ) ); + return ( res == 0 ); + } + +private: + Token(); + Token( const Token & ); + Token &operator = ( const Token & ); + +private: + const char *m_token; + size_t m_size; +}; struct Name { NameType m_type; Identifier *m_id; diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h index a8d21b710..a4c0f2180 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h @@ -227,17 +227,18 @@ static T *getNextSeparator( T *in, T *end ) { return in; } -static const int ErrorHex2Decimal = 9999; +static const int ErrorHex2Decimal = 9999999; inline int hex2Decimal( char in ) { if( isNumeric( in ) ) { - return (int) in-48; + return ( in - 48 ); } + char hexCodeLower( 'a' ), hexCodeUpper( 'A' ); for( int i = 0; i<16; i++ ) { if( in == hexCodeLower + i || in == hexCodeUpper + i ) { - return i+10; + return ( i+10 ); } } diff --git a/contrib/openddlparser/include/openddlparser/Value.h b/contrib/openddlparser/include/openddlparser/Value.h index 48eb6e771..a11b823a3 100644 --- a/contrib/openddlparser/include/openddlparser/Value.h +++ b/contrib/openddlparser/include/openddlparser/Value.h @@ -66,11 +66,19 @@ public: void setInt8( int8 value ); int8 getInt8(); void setInt16( int16 value ); - int16 getInt16(); + int16 getInt16(); void setInt32( int32 value ); - int32 getInt32(); + int32 getInt32(); void setInt64( int64 value ); - int64 getInt64(); + int64 getInt64(); + void setUnsignedInt8( uint8 value ); + uint8 getUnsignedInt8() const; + void setUnsignedInt16( uint16 value ); + uint16 getUnsignedInt16() const; + void setUnsignedInt32( uint32 value ); + uint32 getUnsignedInt32() const; + void setUnsignedInt64( uint64 value ); + uint64 getUnsignedInt64() const; void setFloat( float value ); float getFloat() const; void setDouble( double value ); From 7e9c48e1aec60fa185baf163414d4471d1f42b91 Mon Sep 17 00:00:00 2001 From: abma Date: Wed, 15 Apr 2015 21:06:40 +0200 Subject: [PATCH 62/85] add option ASSIMP_HEADERCHECK (defaults to off): when enabled it adds the target "headercheck" to verify if all headers compile --- test/CMakeLists.txt | 2 ++ test/headercheck/.gitignore | 1 + test/headercheck/CMakeLists.txt | 37 +++++++++++++++++++++++++++++ test/headercheck/headercheck.cpp.in | 6 +++++ 4 files changed, 46 insertions(+) create mode 100644 test/headercheck/.gitignore create mode 100644 test/headercheck/CMakeLists.txt create mode 100644 test/headercheck/headercheck.cpp.in diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3a8bbe82d..00614bb2a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -59,3 +59,5 @@ target_link_libraries( unit assimp debug ${GTEST_DEBUG_LIBRARIES} optimized ${GTEST_RELEASE_LIBRARIES} ) +add_subdirectory(headercheck) + diff --git a/test/headercheck/.gitignore b/test/headercheck/.gitignore new file mode 100644 index 000000000..879a87fd5 --- /dev/null +++ b/test/headercheck/.gitignore @@ -0,0 +1 @@ +src-generated/ diff --git a/test/headercheck/CMakeLists.txt b/test/headercheck/CMakeLists.txt new file mode 100644 index 000000000..273608542 --- /dev/null +++ b/test/headercheck/CMakeLists.txt @@ -0,0 +1,37 @@ +# This file is part of the Spring engine (GPL v2 or later), see LICENSE.html + +OPTION(ASSIMP_HEADERCHECK "adds the target headercheck which compiles every header file, default disabled because it adds many targets" OFF) +if(ASSIMP_HEADERCHECK) +include_directories( + ${Assimp_SOURCE_DIR}/code/BoostWorkaround + ) + +FILE(GLOB_RECURSE headers + ${Assimp_SOURCE_DIR}/code/*.h + ) + +set(headerchecklibs "") + +FOREACH( HEADER ${headers} ) + + #pseudo unique name + string(REPLACE "${Spring_SOURCE_DIR}" "" PLIST "${HEADER}") + string(REPLACE "/" ";" PLIST "${PLIST}") + SET(TEST_NAME "headercheck_") + + foreach(name ${PLIST}) + SET(TEST_NAME "${TEST_NAME}_${name}") + endforeach() + + SET(TEST_FILE ${CMAKE_CURRENT_BINARY_DIR}/src-generated/${TEST_NAME}.cpp) + + # create test file + configure_file( headercheck.cpp.in ${TEST_FILE} ) + # add library + add_library( ${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_FILE} ) + list(APPEND headerchecklibs ${TEST_NAME}) +ENDFOREACH( HEADER ) + +add_custom_target(headercheck DEPENDS ${headerchecklibs}) + +endif() diff --git a/test/headercheck/headercheck.cpp.in b/test/headercheck/headercheck.cpp.in new file mode 100644 index 000000000..af1985617 --- /dev/null +++ b/test/headercheck/headercheck.cpp.in @@ -0,0 +1,6 @@ +#include "@HEADER@" + +int main(int,char**) +{ + return 0; +} \ No newline at end of file From 470ad98281329ddef687cd381e47c3b19239b003 Mon Sep 17 00:00:00 2001 From: abma Date: Wed, 15 Apr 2015 21:22:26 +0200 Subject: [PATCH 63/85] fix "headercheck": part of https://github.com/assimp/assimp/issues/534 --- code/3DSExporter.h | 4 ++++ code/3DSHelper.h | 6 ++++++ code/3DSLoader.h | 4 +++- code/ACLoader.h | 6 ++++++ code/AssbinLoader.h | 11 +++++++++++ code/B3DImporter.h | 5 +++++ code/BVHLoader.h | 2 ++ code/BaseImporter.h | 4 +++- code/Bitmap.h | 5 +++++ code/BlenderDNA.h | 5 +++++ code/BlenderDNA.inl | 2 ++ code/BlenderIntermediate.h | 5 +++++ code/BlenderLoader.h | 7 +++++++ code/BlenderScene.h | 2 ++ code/BlenderSceneGen.h | 3 +++ code/BlobIOSystem.h | 9 +++++++++ code/BoostWorkaround/boost/format.hpp | 1 + code/BoostWorkaround/boost/shared_ptr.hpp | 3 +++ code/BoostWorkaround/boost/timer.hpp | 3 ++- code/ByteSwap.h | 1 + code/C4DImporter.h | 3 +++ code/CInterfaceIOWrapper.h | 2 ++ code/COBLoader.h | 4 ++++ code/COBScene.h | 3 +++ code/CSMLoader.h | 3 +++ code/ColladaExporter.h | 6 ++++++ code/ColladaHelper.h | 10 ++++++++++ code/ColladaLoader.h | 6 ++++++ code/ColladaParser.h | 2 ++ code/ComputeUVMappingProcess.h | 3 +++ code/ConvertToLHProcess.h | 2 ++ code/DXFHelper.h | 3 +++ code/DefaultIOStream.h | 5 +++++ code/Exceptional.h | 1 + code/FBXConverter.h | 2 ++ code/FBXDocument.h | 13 ++++++++++++- code/FBXDocumentUtil.h | 8 ++++++++ code/FBXParser.h | 3 ++- code/FBXProperties.h | 2 ++ code/FBXTokenizer.h | 4 +++- code/FileLogStream.h | 1 + code/FileSystemFilter.h | 2 ++ code/FindInvalidDataProcess.h | 1 + code/GenericProperty.h | 3 +++ code/HMPFileData.h | 1 + code/HalfLifeFileData.h | 3 +-- code/Hash.h | 3 +++ code/IFCUtil.h | 4 ++++ code/IRRLoader.h | 2 ++ code/IRRShared.h | 2 ++ code/Importer.h | 11 ++++++++++- code/JoinVerticesProcess.h | 1 + code/LWOAnimation.h | 6 ++++++ code/LWOLoader.h | 2 ++ code/LWSLoader.h | 6 ++++++ code/LogAux.h | 2 ++ code/MD2FileData.h | 1 + code/MD2Loader.h | 3 ++- code/MD3FileData.h | 1 + code/MD3Loader.h | 8 ++++++-- code/MD4FileData.h | 8 ++++---- code/MD5Loader.h | 2 ++ code/MD5Parser.h | 2 ++ code/MDCFileData.h | 2 +- code/MDLFileData.h | 7 +++++++ code/MDLLoader.h | 5 +++-- code/MS3DLoader.h | 3 +++ code/MakeVerboseFormat.h | 2 ++ code/MaterialSystem.h | 4 ++++ code/MemoryIOWrapper.h | 6 ++++++ code/NDOLoader.h | 12 ++++++++++++ code/NFFLoader.h | 3 ++- code/ObjExporter.h | 4 ++++ code/ObjFileData.h | 0 code/ObjFileImporter.h | 1 + code/ObjFileParser.h | 3 +++ code/ObjTools.h | 1 + code/OgreParsingUtils.h | 3 +++ code/OptimizeGraph.h | 1 + code/OptimizeMeshes.h | 3 +++ code/ParsingUtils.h | 1 + code/PlyExporter.h | 1 + code/PlyLoader.h | 6 ++++-- code/PlyParser.h | 1 + code/PolyTools.h | 3 +++ code/PretransformVertices.h | 3 +++ code/ProcessHelper.h | 7 +++++++ code/Profiler.h | 3 ++- code/Q3BSPFileData.h | 2 ++ code/Q3BSPFileImporter.h | 4 ++++ code/Q3DLoader.h | 1 + code/RemoveComments.h | 1 + code/SGSpatialSort.h | 3 ++- code/STEPFile.h | 8 ++++++++ code/STLExporter.h | 1 + code/SceneCombiner.h | 19 +++++++++++++++++++ code/ScenePreprocessor.h | 7 +++++++ code/ScenePrivate.h | 1 + code/SkeletonMeshBuilder.h | 1 + code/SmoothingGroups.h | 4 ++++ code/StandardShapes.h | 2 ++ code/StreamReader.h | 3 +++ code/StreamWriter.h | 4 ++++ code/StringComparison.h | 3 +++ code/Subdivision.h | 4 ++++ code/TargetAnimation.h | 2 ++ code/TextureTransform.h | 4 ++++ code/UnrealLoader.h | 2 ++ code/ValidateDataStructure.h | 3 +++ code/Vertex.h | 3 +++ code/VertexTriangleAdjacency.h | 2 ++ code/XFileExporter.h | 4 ++++ code/XFileHelper.h | 1 + code/XGLLoader.h | 6 ++++++ code/fast_atof.h | 5 ++++- code/irrXMLWrapper.h | 3 +++ code/qnan.h | 4 ++++ include/assimp/matrix4x4.h | 1 + 118 files changed, 416 insertions(+), 25 deletions(-) mode change 100755 => 100644 code/ObjFileData.h diff --git a/code/3DSExporter.h b/code/3DSExporter.h index 9742abb0c..c662bb0f0 100644 --- a/code/3DSExporter.h +++ b/code/3DSExporter.h @@ -45,11 +45,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_3DSEXPORTER_H_INC #include +#include #include "StreamWriter.h" +#include "./../include/assimp/material.h" struct aiScene; struct aiNode; +struct aiMaterial; +struct aiMesh; namespace Assimp { diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 28b31c2b6..aa916fb13 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -46,6 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SpatialSort.h" #include "SmoothingGroups.h" +#include "qnan.h" +#include "./../include/assimp/material.h" +#include "./../include/assimp/camera.h" +#include "./../include/assimp/light.h" +#include "./../include/assimp/anim.h" +#include //sprintf namespace Assimp { namespace D3DS { diff --git a/code/3DSLoader.h b/code/3DSLoader.h index 2b1dd26f8..3b02eae2e 100644 --- a/code/3DSLoader.h +++ b/code/3DSLoader.h @@ -50,8 +50,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_3DS_IMPORTER -struct aiNode; #include "3DSHelper.h" +#include "StreamReader.h" + +struct aiNode; namespace Assimp { diff --git a/code/ACLoader.h b/code/ACLoader.h index 2724053e4..20fa000ca 100644 --- a/code/ACLoader.h +++ b/code/ACLoader.h @@ -49,6 +49,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" +class aiNode; +class aiMesh; +class aiMaterial; +class aiLight; + + namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/AssbinLoader.h b/code/AssbinLoader.h index f4e6e059a..1bcd2711b 100644 --- a/code/AssbinLoader.h +++ b/code/AssbinLoader.h @@ -48,6 +48,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" +class aiMesh; +class aiNode; +class aiBone; +class aiMaterial; +class aiMaterialProperty; +class aiNodeAnim; +class aiAnimation; +class aiTexture; +class aiLight; +class aiCamera; + #ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER namespace Assimp { diff --git a/code/B3DImporter.h b/code/B3DImporter.h index d27a8c3a0..ed7375685 100644 --- a/code/B3DImporter.h +++ b/code/B3DImporter.h @@ -47,10 +47,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/types.h" #include "../include/assimp/mesh.h" #include "../include/assimp/material.h" +#include "BaseImporter.h" #include #include +struct aiNodeAnim; +struct aiNode; +struct aiAnimation; + namespace Assimp{ class B3DImporter : public BaseImporter{ diff --git a/code/BVHLoader.h b/code/BVHLoader.h index 64e67e9f1..3d36b2d75 100644 --- a/code/BVHLoader.h +++ b/code/BVHLoader.h @@ -49,6 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" +struct aiNode; + namespace Assimp { diff --git a/code/BaseImporter.h b/code/BaseImporter.h index c12ff256e..82b369850 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -47,7 +47,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include "./../include/assimp/types.h" +#include +#include "../include/assimp/types.h" +#include "../include/assimp/ProgressHandler.hpp" struct aiScene; diff --git a/code/Bitmap.h b/code/Bitmap.h index 36f80363e..68873613f 100644 --- a/code/Bitmap.h +++ b/code/Bitmap.h @@ -48,6 +48,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_BITMAP_H_INC #define AI_BITMAP_H_INC +#include +#include +struct aiTexture; +struct IOStream; + namespace Assimp { class Bitmap { diff --git a/code/BlenderDNA.h b/code/BlenderDNA.h index 7cc2708e4..b61ee19ce 100644 --- a/code/BlenderDNA.h +++ b/code/BlenderDNA.h @@ -47,6 +47,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "TinyFormatter.h" +#include "StreamReader.h" +#include "../include/assimp/DefaultLogger.hpp" +#include +#include + // enable verbose log output. really verbose, so be careful. #ifdef ASSIMP_BUILD_DEBUG diff --git a/code/BlenderDNA.inl b/code/BlenderDNA.inl index af3e6c993..b43b0adb2 100644 --- a/code/BlenderDNA.inl +++ b/code/BlenderDNA.inl @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_BLEND_DNA_INL #define INCLUDED_AI_BLEND_DNA_INL +#include + namespace Assimp { namespace Blender { diff --git a/code/BlenderIntermediate.h b/code/BlenderIntermediate.h index 4804d9251..2880ba3fe 100644 --- a/code/BlenderIntermediate.h +++ b/code/BlenderIntermediate.h @@ -49,6 +49,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BlenderDNA.h" #include "BlenderScene.h" #include "BlenderSceneGen.h" +#include +#include +#include "./../include/assimp/material.h" + +struct aiTexture; #define for_each(x,y) BOOST_FOREACH(x,y) diff --git a/code/BlenderLoader.h b/code/BlenderLoader.h index 4b44d2c7d..07ae84df5 100644 --- a/code/BlenderLoader.h +++ b/code/BlenderLoader.h @@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "LogAux.h" +#include + +struct aiNode; +struct aiMesh; +struct aiLight; +struct aiCamera; +struct aiMaterial; namespace Assimp { diff --git a/code/BlenderScene.h b/code/BlenderScene.h index 24f5007dc..7d92918ee 100644 --- a/code/BlenderScene.h +++ b/code/BlenderScene.h @@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_BLEND_SCENE_H #define INCLUDED_AI_BLEND_SCENE_H +#include "BlenderDNA.h" + namespace Assimp { namespace Blender { diff --git a/code/BlenderSceneGen.h b/code/BlenderSceneGen.h index 9e2f4b3ac..71019d136 100644 --- a/code/BlenderSceneGen.h +++ b/code/BlenderSceneGen.h @@ -44,6 +44,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_BLEND_SCENEGEN_H #define INCLUDED_AI_BLEND_SCENEGEN_H +#include "BlenderDNA.h" +#include "BlenderScene.h" + namespace Assimp { namespace Blender { diff --git a/code/BlobIOSystem.h b/code/BlobIOSystem.h index cd48b8826..4ba8afcd3 100644 --- a/code/BlobIOSystem.h +++ b/code/BlobIOSystem.h @@ -45,6 +45,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_BLOBIOSYSTEM_H_INCLUDED #define AI_BLOBIOSYSTEM_H_INCLUDED +#include "./../include/assimp/IOStream.hpp" +#include "./../include/assimp/cexport.h" +#include "./../include/assimp/IOSystem.hpp" +#include "./../include/assimp/DefaultLogger.hpp" +#include +#include +#include +#include + namespace Assimp { class BlobIOSystem; diff --git a/code/BoostWorkaround/boost/format.hpp b/code/BoostWorkaround/boost/format.hpp index 855d3ef81..e65499a6a 100644 --- a/code/BoostWorkaround/boost/format.hpp +++ b/code/BoostWorkaround/boost/format.hpp @@ -13,6 +13,7 @@ #include #include +#include namespace boost { diff --git a/code/BoostWorkaround/boost/shared_ptr.hpp b/code/BoostWorkaround/boost/shared_ptr.hpp index 590e2ce87..d3d91f3fe 100644 --- a/code/BoostWorkaround/boost/shared_ptr.hpp +++ b/code/BoostWorkaround/boost/shared_ptr.hpp @@ -6,6 +6,9 @@ // ------------------------------ // Internal stub + +#include //NULL +#include //std::swap namespace boost { namespace detail { class controller { diff --git a/code/BoostWorkaround/boost/timer.hpp b/code/BoostWorkaround/boost/timer.hpp index 0fc826620..edc32378e 100644 --- a/code/BoostWorkaround/boost/timer.hpp +++ b/code/BoostWorkaround/boost/timer.hpp @@ -19,6 +19,7 @@ //#include #include +#include //#include # ifdef BOOST_NO_STDC_NAMESPACE @@ -69,4 +70,4 @@ class timer } // namespace boost -#endif // BOOST_TIMER_HPP \ No newline at end of file +#endif // BOOST_TIMER_HPP diff --git a/code/ByteSwap.h b/code/ByteSwap.h index 4be039599..53af1580c 100644 --- a/code/ByteSwap.h +++ b/code/ByteSwap.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/ai_assert.h" #include "../include/assimp/types.h" +#include #if _MSC_VER >= 1400 #include diff --git a/code/C4DImporter.h b/code/C4DImporter.h index 3c8526eb2..cff52fdbc 100644 --- a/code/C4DImporter.h +++ b/code/C4DImporter.h @@ -48,6 +48,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LogAux.h" #include +struct aiNode; +struct aiMesh; +struct aiMaterial; struct aiImporterDesc; diff --git a/code/CInterfaceIOWrapper.h b/code/CInterfaceIOWrapper.h index 8508e4f54..1c0eb2faf 100644 --- a/code/CInterfaceIOWrapper.h +++ b/code/CInterfaceIOWrapper.h @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_CIOSYSTEM_H_INCLUDED #include "../include/assimp/cfileio.h" +#include "../include/assimp/IOStream.hpp" +#include "../include/assimp/IOSystem.hpp" namespace Assimp { diff --git a/code/COBLoader.h b/code/COBLoader.h index 1982801c4..095233afa 100644 --- a/code/COBLoader.h +++ b/code/COBLoader.h @@ -45,6 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_COB_LOADER_H #include "BaseImporter.h" +#include "StreamReader.h" + +struct aiNode; + namespace Assimp { class LineSplitter; diff --git a/code/COBScene.h b/code/COBScene.h index 251d2a6d2..0adb3bb39 100644 --- a/code/COBScene.h +++ b/code/COBScene.h @@ -45,7 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_COB_SCENE_H #include +#include + #include "BaseImporter.h" +#include "./../include/assimp/material.h" namespace Assimp { namespace COB { diff --git a/code/CSMLoader.h b/code/CSMLoader.h index d3fae27c1..79c73b75e 100644 --- a/code/CSMLoader.h +++ b/code/CSMLoader.h @@ -43,6 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef INCLUDED_AI_CSM_LOADER_H #define INCLUDED_AI_CSM_LOADER_H + +#include "BaseImporter.h" + namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/ColladaExporter.h b/code/ColladaExporter.h index 47b8405e0..9456508ce 100644 --- a/code/ColladaExporter.h +++ b/code/ColladaExporter.h @@ -45,7 +45,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_COLLADAEXPORTER_H_INC #include "../include/assimp/ai_assert.h" +#include "../include/assimp/material.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/Exporter.hpp" #include +#include +#include +#include struct aiScene; struct aiNode; diff --git a/code/ColladaHelper.h b/code/ColladaHelper.h index f249a28d5..10040d55f 100644 --- a/code/ColladaHelper.h +++ b/code/ColladaHelper.h @@ -43,6 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_COLLADAHELPER_H_INC #define AI_COLLADAHELPER_H_INC +#include +#include +#include +#include +#include "../include/assimp/types.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/material.h" + +struct aiMaterial; + namespace Assimp { namespace Collada { diff --git a/code/ColladaLoader.h b/code/ColladaLoader.h index 392c8f359..e268bf086 100644 --- a/code/ColladaLoader.h +++ b/code/ColladaLoader.h @@ -46,6 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "ColladaParser.h" +struct aiNode; +struct aiCamera; +struct aiLight; +struct aiTexture; +struct aiAnimation; + namespace Assimp { diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 553f9caf4..57beeb4a5 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -47,6 +47,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "irrXMLWrapper.h" #include "ColladaHelper.h" +#include "../include/assimp/ai_assert.h" +#include namespace Assimp { diff --git a/code/ComputeUVMappingProcess.h b/code/ComputeUVMappingProcess.h index 99db239d5..c7498773e 100644 --- a/code/ComputeUVMappingProcess.h +++ b/code/ComputeUVMappingProcess.h @@ -45,8 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "../include/assimp/mesh.h" +#include "../include/assimp/material.h" +#include "../include/assimp/types.h" class ComputeUVMappingTest; + namespace Assimp { diff --git a/code/ConvertToLHProcess.h b/code/ConvertToLHProcess.h index c11491294..5230cd0c1 100644 --- a/code/ConvertToLHProcess.h +++ b/code/ConvertToLHProcess.h @@ -54,6 +54,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. struct aiMesh; struct aiNodeAnim; +struct aiNode; +struct aiMaterial; namespace Assimp { diff --git a/code/DXFHelper.h b/code/DXFHelper.h index 2b5cd00fe..f7966517a 100644 --- a/code/DXFHelper.h +++ b/code/DXFHelper.h @@ -48,6 +48,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LineSplitter.h" #include "TinyFormatter.h" #include "StreamReader.h" +#include "fast_atof.h" +#include +#include "../include/assimp/DefaultLogger.hpp" namespace Assimp { namespace DXF { diff --git a/code/DefaultIOStream.h b/code/DefaultIOStream.h index 3ab0669be..5adb21e1d 100644 --- a/code/DefaultIOStream.h +++ b/code/DefaultIOStream.h @@ -44,6 +44,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/assimp/IOStream.hpp" +#include "../include/assimp/importerdesc.h" + +#if (!defined SIZE_MAX) +# define SIZE_MAX (~((size_t)0)) +#endif namespace Assimp { diff --git a/code/Exceptional.h b/code/Exceptional.h index 75a2fc04a..fd705f504 100644 --- a/code/Exceptional.h +++ b/code/Exceptional.h @@ -42,6 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_EXCEPTIONAL_H #include +#include "DefaultIOStream.h" using std::runtime_error; #ifdef _MSC_VER diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 0585bf5cf..b6250451d 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_CONVERTER_H #define INCLUDED_AI_FBX_CONVERTER_H +class aiScene; + namespace Assimp { namespace FBX { diff --git a/code/FBXDocument.h b/code/FBXDocument.h index b4099550b..9008a9c3a 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -47,8 +47,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include +#include +#include +#include "../include/assimp/ai_assert.h" +#include "../include/assimp/vector3.h" +#include "../include/assimp/vector2.h" +#include "../include/assimp/color4.h" +#include "../include/assimp/mesh.h" #include "FBXProperties.h" +#include "FBXParser.h" + +#define _AI_CONCAT(a,b) a ## b +#define AI_CONCAT(a,b) _AI_CONCAT(a,b) namespace Assimp { namespace FBX { diff --git a/code/FBXDocumentUtil.h b/code/FBXDocumentUtil.h index 6f150b6d5..07588a523 100644 --- a/code/FBXDocumentUtil.h +++ b/code/FBXDocumentUtil.h @@ -44,6 +44,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_DOCUMENT_UTIL_H #define INCLUDED_AI_FBX_DOCUMENT_UTIL_H +#include "../include/assimp/defs.h" +#include +#include +#include "FBXDocument.h" + +struct Token; +struct Element; + namespace Assimp { namespace FBX { namespace Util { diff --git a/code/FBXParser.h b/code/FBXParser.h index e6fa25d22..6d27de210 100644 --- a/code/FBXParser.h +++ b/code/FBXParser.h @@ -48,9 +48,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include - +#include #include "LogAux.h" #include "FBXCompileConfig.h" diff --git a/code/FBXProperties.h b/code/FBXProperties.h index bcbdc8a30..739d8b382 100644 --- a/code/FBXProperties.h +++ b/code/FBXProperties.h @@ -46,6 +46,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include "FBXCompileConfig.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXTokenizer.h b/code/FBXTokenizer.h index 0a4339a50..9510163c6 100644 --- a/code/FBXTokenizer.h +++ b/code/FBXTokenizer.h @@ -45,8 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_FBX_TOKENIZER_H #include - #include "FBXCompileConfig.h" +#include "../include/assimp/ai_assert.h" +#include +#include namespace Assimp { namespace FBX { diff --git a/code/FileLogStream.h b/code/FileLogStream.h index 3dda412ed..79151c489 100644 --- a/code/FileLogStream.h +++ b/code/FileLogStream.h @@ -3,6 +3,7 @@ #include "../include/assimp/LogStream.hpp" #include "../include/assimp/IOStream.hpp" +#include "DefaultIOSystem.h" namespace Assimp { diff --git a/code/FileSystemFilter.h b/code/FileSystemFilter.h index 517009028..a2ad85160 100644 --- a/code/FileSystemFilter.h +++ b/code/FileSystemFilter.h @@ -46,8 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_FILESYSTEMFILTER_H_INC #include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" #include "fast_atof.h" #include "ParsingUtils.h" + namespace Assimp { inline bool IsHex(char s) { diff --git a/code/FindInvalidDataProcess.h b/code/FindInvalidDataProcess.h index 8b47a65a8..c06560c1e 100644 --- a/code/FindInvalidDataProcess.h +++ b/code/FindInvalidDataProcess.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "../include/assimp/types.h" +#include "../include/assimp/anim.h" struct aiMesh; class FindInvalidDataProcessTest; diff --git a/code/GenericProperty.h b/code/GenericProperty.h index 32d846850..058371c3d 100644 --- a/code/GenericProperty.h +++ b/code/GenericProperty.h @@ -42,7 +42,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_GENERIC_PROPERTY_H_INCLUDED #include "./../include/assimp/Importer.hpp" +#include "./../include/assimp/ai_assert.h" #include "Hash.h" +#include + // ------------------------------------------------------------------------------------------------ template diff --git a/code/HMPFileData.h b/code/HMPFileData.h index ba0f3ac36..658672878 100644 --- a/code/HMPFileData.h +++ b/code/HMPFileData.h @@ -45,6 +45,7 @@ namespace Assimp { namespace HMP { #include "./../include/assimp/Compiler/pushpack1.h" +#include // to make it easier for us, we test the magic word against both "endianesses" #define AI_HMP_MAGIC_NUMBER_BE_4 AI_MAKE_MAGIC("HMP4") diff --git a/code/HalfLifeFileData.h b/code/HalfLifeFileData.h index 6eeaf41b8..dbb8df4d7 100644 --- a/code/HalfLifeFileData.h +++ b/code/HalfLifeFileData.h @@ -49,9 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MDLFILEHELPER2_H_INC #define AI_MDLFILEHELPER2_H_INC -#include "./../include/assimp/Compiler/pushpack1.h" - #include "MDLFileData.h" +#include "./../include/assimp/Compiler/pushpack1.h" namespace Assimp { namespace MDL { diff --git a/code/Hash.h b/code/Hash.h index 08c707ad1..d0c608d79 100644 --- a/code/Hash.h +++ b/code/Hash.h @@ -41,6 +41,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_HASH_H_INCLUDED #define AI_HASH_H_INCLUDED +#include +#include + // ------------------------------------------------------------------------------------------------ // Hashing function taken from // http://www.azillionmonkeys.com/qed/hash.html diff --git a/code/IFCUtil.h b/code/IFCUtil.h index 8d329c5d6..1a1e26f37 100644 --- a/code/IFCUtil.h +++ b/code/IFCUtil.h @@ -47,6 +47,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCReaderGen.h" #include "IFCLoader.h" +#include "STEPFile.h" + +struct aiMaterial; +struct aiNode; namespace Assimp { namespace IFC { diff --git a/code/IRRLoader.h b/code/IRRLoader.h index 673c83074..b98967245 100644 --- a/code/IRRLoader.h +++ b/code/IRRLoader.h @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IRRShared.h" #include "SceneCombiner.h" +#include "Importer.h" +#include "../include/assimp/anim.h" namespace Assimp { diff --git a/code/IRRShared.h b/code/IRRShared.h index 20b0984de..55745dadd 100644 --- a/code/IRRShared.h +++ b/code/IRRShared.h @@ -9,6 +9,8 @@ #include "irrXMLWrapper.h" #include "BaseImporter.h" +#include +class aiMaterial; namespace Assimp { diff --git a/code/Importer.h b/code/Importer.h index c61d32456..a7e556f1d 100644 --- a/code/Importer.h +++ b/code/Importer.h @@ -42,8 +42,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_IMPORTER_H #define INCLUDED_AI_IMPORTER_H -namespace Assimp { +#include +#include +#include +#include "../include/assimp/matrix4x4.h" +class aiScene; +class SharedPostProcessInfo; + +namespace Assimp { + class ProgressHandler; + class IOSystem; class BaseImporter; class BaseProcess; diff --git a/code/JoinVerticesProcess.h b/code/JoinVerticesProcess.h index 1413ad2dc..960f8a534 100644 --- a/code/JoinVerticesProcess.h +++ b/code/JoinVerticesProcess.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "../include/assimp/types.h" +struct aiMesh; namespace Assimp { diff --git a/code/LWOAnimation.h b/code/LWOAnimation.h index 89095c63f..4612ca690 100644 --- a/code/LWOAnimation.h +++ b/code/LWOAnimation.h @@ -47,6 +47,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_LWO_ANIMATION_INCLUDED #define AI_LWO_ANIMATION_INCLUDED +#include "../include/assimp/anim.h" +#include +#include + +struct aiNodeAnim; + namespace Assimp { namespace LWO { diff --git a/code/LWOLoader.h b/code/LWOLoader.h index e06cdc796..c61ca6917 100644 --- a/code/LWOLoader.h +++ b/code/LWOLoader.h @@ -43,6 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_LWOLOADER_H_INCLUDED #include "../include/assimp/types.h" +#include "../include/assimp/material.h" #include "../include/assimp/DefaultLogger.hpp" #include "LWOFileData.h" @@ -50,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. struct aiTexture; struct aiNode; +struct aiMaterial; namespace Assimp { using namespace LWO; diff --git a/code/LWSLoader.h b/code/LWSLoader.h index 7cca75b3a..15ecc2b4b 100644 --- a/code/LWSLoader.h +++ b/code/LWSLoader.h @@ -46,6 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LWOFileData.h" #include "SceneCombiner.h" +#include "BaseImporter.h" + +struct IOSystem; +struct aiImporterDesc; +struct Importer; +struct BatchLoader; namespace Assimp { namespace LWS { diff --git a/code/LogAux.h b/code/LogAux.h index 58a605215..c10e9690c 100644 --- a/code/LogAux.h +++ b/code/LogAux.h @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_LOGAUX_H #include "TinyFormatter.h" +#include "Exceptional.h" +#include "../include/assimp/DefaultLogger.hpp" namespace Assimp { diff --git a/code/MD2FileData.h b/code/MD2FileData.h index f1cbf8e4e..c0b486f37 100644 --- a/code/MD2FileData.h +++ b/code/MD2FileData.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/types.h" #include "../include/assimp/mesh.h" #include "../include/assimp/anim.h" +#include #include "./../include/assimp/Compiler/pushpack1.h" diff --git a/code/MD2Loader.h b/code/MD2Loader.h index f78112056..9a60e67fa 100644 --- a/code/MD2Loader.h +++ b/code/MD2Loader.h @@ -46,9 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" +#include "ByteSwap.h" -struct aiNode; #include "MD2FileData.h" +struct aiNode; namespace Assimp { diff --git a/code/MD3FileData.h b/code/MD3FileData.h index b89110030..6ab97c635 100644 --- a/code/MD3FileData.h +++ b/code/MD3FileData.h @@ -49,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "../include/assimp/types.h" #include "../include/assimp/mesh.h" diff --git a/code/MD3Loader.h b/code/MD3Loader.h index 155c9ce37..feca9e16f 100644 --- a/code/MD3Loader.h +++ b/code/MD3Loader.h @@ -46,10 +46,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "ByteSwap.h" - +#include "MD3FileData.h" +#include "StringComparison.h" #include "../include/assimp/types.h" -#include "MD3FileData.h" +#include + +struct aiMaterial; + namespace Assimp { diff --git a/code/MD4FileData.h b/code/MD4FileData.h index bd28bf016..97254d12b 100644 --- a/code/MD4FileData.h +++ b/code/MD4FileData.h @@ -46,9 +46,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include "../include/aiTypes.h" -#include "../include/aiMesh.h" -#include "../include/aiAnim.h" +#include "../include/assimp/types.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/anim.h" #if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) # pragma pack(push,1) @@ -215,4 +215,4 @@ struct Frame }; }; -#endif // !! AI_MD4FILEHELPER_H_INC \ No newline at end of file +#endif // !! AI_MD4FILEHELPER_H_INC diff --git a/code/MD5Loader.h b/code/MD5Loader.h index f7aa63c79..709a85ba2 100644 --- a/code/MD5Loader.h +++ b/code/MD5Loader.h @@ -50,6 +50,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "MD5Parser.h" #include "../include/assimp/types.h" +struct aiNode; +struct aiNodeAnim; namespace Assimp { diff --git a/code/MD5Parser.h b/code/MD5Parser.h index 31b0e2038..54def7216 100644 --- a/code/MD5Parser.h +++ b/code/MD5Parser.h @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/types.h" #include "ParsingUtils.h" +#include +#include struct aiFace; diff --git a/code/MDCFileData.h b/code/MDCFileData.h index d3f7c33c0..cf55f9362 100644 --- a/code/MDCFileData.h +++ b/code/MDCFileData.h @@ -54,7 +54,7 @@ http://themdcfile.planetwolfenstein.gamespy.com/MDC_File_Format.pdf #include "../include/assimp/anim.h" #include "./../include/assimp/Compiler/pushpack1.h" - +#include namespace Assimp { namespace MDC { diff --git a/code/MDLFileData.h b/code/MDLFileData.h index fd7754e0a..366d8b1b2 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -52,7 +52,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MDLFILEHELPER_H_INC #define AI_MDLFILEHELPER_H_INC +#include "ByteSwap.h" +#include "./../include/assimp/anim.h" +#include "./../include/assimp/mesh.h" #include "./../include/assimp/Compiler/pushpack1.h" +#include +#include + +class aiMaterial; namespace Assimp { namespace MDL { diff --git a/code/MDLLoader.h b/code/MDLLoader.h index 81706736d..401858f9e 100644 --- a/code/MDLLoader.h +++ b/code/MDLLoader.h @@ -47,11 +47,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_MDLLOADER_H_INCLUDED #include "BaseImporter.h" - -struct aiNode; #include "MDLFileData.h" #include "HalfLifeFileData.h" +struct aiNode; +struct aiTexture; + namespace Assimp { diff --git a/code/MS3DLoader.h b/code/MS3DLoader.h index d060808d6..34f648bcd 100644 --- a/code/MS3DLoader.h +++ b/code/MS3DLoader.h @@ -45,6 +45,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_MS3DLOADER_H_INCLUDED #include "BaseImporter.h" +#include "StreamReader.h" +struct aiNode; + namespace Assimp { // ---------------------------------------------------------------------------------------------- diff --git a/code/MakeVerboseFormat.h b/code/MakeVerboseFormat.h index ebb71cce7..73fcd22a3 100644 --- a/code/MakeVerboseFormat.h +++ b/code/MakeVerboseFormat.h @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_MAKEVERBOSEFORMAT_H_INC #include "BaseProcess.h" +struct aiMesh; + namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/MaterialSystem.h b/code/MaterialSystem.h index 32fdb9237..d9a54a75e 100644 --- a/code/MaterialSystem.h +++ b/code/MaterialSystem.h @@ -45,6 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MATERIALSYSTEM_H_INC #define AI_MATERIALSYSTEM_H_INC +#include + +struct aiMaterial; + namespace Assimp { // ------------------------------------------------------------------------------ diff --git a/code/MemoryIOWrapper.h b/code/MemoryIOWrapper.h index ccb255fed..f2e40ff8f 100644 --- a/code/MemoryIOWrapper.h +++ b/code/MemoryIOWrapper.h @@ -42,6 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Handy IOStream/IOSystem implemetation to read directly from a memory buffer */ #ifndef AI_MEMORYIOSTREAM_H_INC #define AI_MEMORYIOSTREAM_H_INC + +#include "../include/assimp/IOStream.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/ai_assert.h" +#include + namespace Assimp { #define AI_MEMORYIO_MAGIC_FILENAME "$$$___magic___$$$" #define AI_MEMORYIO_MAGIC_FILENAME_LENGTH 17 diff --git a/code/NDOLoader.h b/code/NDOLoader.h index 9922df42d..3c569f217 100644 --- a/code/NDOLoader.h +++ b/code/NDOLoader.h @@ -43,6 +43,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef INCLUDED_AI_NDO_LOADER_H #define INCLUDED_AI_NDO_LOADER_H + +#include "../include/assimp/vector3.h" +#include "BaseImporter.h" +#include +#include +#include + +class IOSystem; +class Importer; +struct aiImporterDesc; +struct aiScene; + namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/NFFLoader.h b/code/NFFLoader.h index ecc3d7ab4..06a5607a0 100644 --- a/code/NFFLoader.h +++ b/code/NFFLoader.h @@ -45,9 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_NFFLOADER_H_INCLUDED #include "BaseImporter.h" +#include "../include/assimp/types.h" +#include "../include/assimp/material.h" #include -#include "../include/assimp/types.h" namespace Assimp { diff --git a/code/ObjExporter.h b/code/ObjExporter.h index e1ec7a9a6..5c864a0bd 100644 --- a/code/ObjExporter.h +++ b/code/ObjExporter.h @@ -44,10 +44,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_OBJEXPORTER_H_INC #define AI_OBJEXPORTER_H_INC +#include "../include/assimp/types.h" #include +#include +#include struct aiScene; struct aiNode; +struct aiMesh; namespace Assimp { diff --git a/code/ObjFileData.h b/code/ObjFileData.h old mode 100755 new mode 100644 diff --git a/code/ObjFileImporter.h b/code/ObjFileImporter.h index 716cf65d1..049f00fda 100644 --- a/code/ObjFileImporter.h +++ b/code/ObjFileImporter.h @@ -43,6 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define OBJ_FILE_IMPORTER_H_INC #include "BaseImporter.h" +#include "../include/assimp/material.h" #include struct aiMesh; diff --git a/code/ObjFileParser.h b/code/ObjFileParser.h index 500e8d0f9..1bb23d240 100644 --- a/code/ObjFileParser.h +++ b/code/ObjFileParser.h @@ -43,6 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include "../include/assimp/vector2.h" +#include "../include/assimp/vector3.h" +#include "../include/assimp/mesh.h" namespace Assimp { diff --git a/code/ObjTools.h b/code/ObjTools.h index a785d41a4..652f7f865 100644 --- a/code/ObjTools.h +++ b/code/ObjTools.h @@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast_atof.h" #include "ParsingUtils.h" +#include namespace Assimp { diff --git a/code/OgreParsingUtils.h b/code/OgreParsingUtils.h index d3a7aa8bf..173a8589e 100644 --- a/code/OgreParsingUtils.h +++ b/code/OgreParsingUtils.h @@ -45,6 +45,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include +#include +#include +#include namespace Assimp { diff --git a/code/OptimizeGraph.h b/code/OptimizeGraph.h index 78bdeefe4..876383ab8 100644 --- a/code/OptimizeGraph.h +++ b/code/OptimizeGraph.h @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "ProcessHelper.h" #include "../include/assimp/types.h" +#include struct aiMesh; class OptimizeGraphProcessTest; diff --git a/code/OptimizeMeshes.h b/code/OptimizeMeshes.h index 5e67b0548..88e81629c 100644 --- a/code/OptimizeMeshes.h +++ b/code/OptimizeMeshes.h @@ -46,9 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "../include/assimp/types.h" +#include struct aiMesh; +struct aiNode; class OptimizeMeshesProcessTest; + namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/ParsingUtils.h b/code/ParsingUtils.h index 25495fd51..66ccf9311 100644 --- a/code/ParsingUtils.h +++ b/code/ParsingUtils.h @@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_PARSING_UTILS_H_INC #include "StringComparison.h" +#include "../include/assimp/defs.h" namespace Assimp { diff --git a/code/PlyExporter.h b/code/PlyExporter.h index 522821b1a..ec20903d7 100644 --- a/code/PlyExporter.h +++ b/code/PlyExporter.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. struct aiScene; struct aiNode; +struct aiMesh; namespace Assimp { diff --git a/code/PlyLoader.h b/code/PlyLoader.h index d00c7926a..7592c8bd5 100644 --- a/code/PlyLoader.h +++ b/code/PlyLoader.h @@ -46,10 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" +#include "PlyParser.h" +#include struct aiNode; - -#include "PlyParser.h" +struct aiMaterial; +struct aiMesh; namespace Assimp { diff --git a/code/PlyParser.h b/code/PlyParser.h index 47ea1c265..8a9273f53 100644 --- a/code/PlyParser.h +++ b/code/PlyParser.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" +#include namespace Assimp diff --git a/code/PolyTools.h b/code/PolyTools.h index 8fbf9c4d9..cbf684e9f 100644 --- a/code/PolyTools.h +++ b/code/PolyTools.h @@ -43,6 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_POLYTOOLS_H_INCLUDED #define AI_POLYTOOLS_H_INCLUDED +#include "../include/assimp/material.h" +#include "../include/assimp/ai_assert.h" + namespace Assimp { // ------------------------------------------------------------------------------- diff --git a/code/PretransformVertices.h b/code/PretransformVertices.h index f69875587..45c5376d4 100644 --- a/code/PretransformVertices.h +++ b/code/PretransformVertices.h @@ -47,7 +47,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseProcess.h" #include "../include/assimp/mesh.h" +#include +#include +struct aiNode; class PretransformVerticesTest; namespace Assimp { diff --git a/code/ProcessHelper.h b/code/ProcessHelper.h index 1c95c61f3..4dc80972a 100644 --- a/code/ProcessHelper.h +++ b/code/ProcessHelper.h @@ -42,11 +42,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_PROCESS_HELPER_H_INCLUDED #include "../include/assimp/postprocess.h" +#include "../include/assimp/anim.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/material.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" #include "SpatialSort.h" #include "BaseProcess.h" #include "ParsingUtils.h" +#include + // ------------------------------------------------------------------------------- // Some extensions to std namespace. Mainly std::min and std::max for all // flat data types in the aiScene. They're used to quickly determine the diff --git a/code/Profiler.h b/code/Profiler.h index a0dda9f61..72e0ab3a4 100644 --- a/code/Profiler.h +++ b/code/Profiler.h @@ -45,10 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_PROFILER_H #include "boost/timer.hpp" - #include "../include/assimp/DefaultLogger.hpp" #include "TinyFormatter.h" +#include + namespace Assimp { namespace Profiling { diff --git a/code/Q3BSPFileData.h b/code/Q3BSPFileData.h index 452f83122..da025aa97 100644 --- a/code/Q3BSPFileData.h +++ b/code/Q3BSPFileData.h @@ -41,6 +41,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ASSIMP_Q3BSPFILEDATA_H_INC #include +#include //memset +#include namespace Assimp { namespace Q3BSP { diff --git a/code/Q3BSPFileImporter.h b/code/Q3BSPFileImporter.h index 6d0e8287a..7d8a96782 100644 --- a/code/Q3BSPFileImporter.h +++ b/code/Q3BSPFileImporter.h @@ -43,6 +43,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" struct aiMesh; +struct aiNode; +struct aiFace; +struct aiMaterial; +struct aiTexture; namespace Assimp { diff --git a/code/Q3DLoader.h b/code/Q3DLoader.h index 55fda7303..16e7c3e00 100644 --- a/code/Q3DLoader.h +++ b/code/Q3DLoader.h @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" #include +#include namespace Assimp { diff --git a/code/RemoveComments.h b/code/RemoveComments.h index fd372618b..7f89e1ebb 100644 --- a/code/RemoveComments.h +++ b/code/RemoveComments.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_REMOVE_COMMENTS_H_INC #include "../include/assimp/ai_assert.h" +#include "../include/assimp/defs.h" namespace Assimp { diff --git a/code/SGSpatialSort.h b/code/SGSpatialSort.h index c14fa7361..39e5207d4 100644 --- a/code/SGSpatialSort.h +++ b/code/SGSpatialSort.h @@ -43,8 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_D3DSSPATIALSORT_H_INC #define AI_D3DSSPATIALSORT_H_INC -#include #include "../include/assimp/types.h" +#include +#include namespace Assimp { diff --git a/code/STEPFile.h b/code/STEPFile.h index 510e051ae..0ce9da7dc 100644 --- a/code/STEPFile.h +++ b/code/STEPFile.h @@ -42,9 +42,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_STEPFILE_H #include +#include +#include #include #include #include +#include +#include +#include + +#include "FBXDocument.h" //ObjectMap::value_type +#include "../include/assimp/DefaultLogger.hpp" // #if _MSC_VER > 1500 || (defined __GNUC___) diff --git a/code/STLExporter.h b/code/STLExporter.h index 0ed60d812..3284650c3 100644 --- a/code/STLExporter.h +++ b/code/STLExporter.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. struct aiScene; struct aiNode; +struct aiMesh; namespace Assimp { diff --git a/code/SceneCombiner.h b/code/SceneCombiner.h index 0c4cfc2ee..71e1ba647 100644 --- a/code/SceneCombiner.h +++ b/code/SceneCombiner.h @@ -45,6 +45,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_SCENE_COMBINER_H_INC #include "../include/assimp/ai_assert.h" +#include "../include/assimp/types.h" +#include +#include +#include +#include +#include +#include "../include/assimp/Compiler/pstdint.h" + +struct aiScene; +struct aiNode; +struct aiMaterial; +struct aiTexture; +struct aiCamera; +struct aiLight; +struct aiMetadata; +struct aiBone; +struct aiMesh; +struct aiAnimation; +struct aiNodeAnim; namespace Assimp { diff --git a/code/ScenePreprocessor.h b/code/ScenePreprocessor.h index 062c069b7..5133b625b 100644 --- a/code/ScenePreprocessor.h +++ b/code/ScenePreprocessor.h @@ -43,6 +43,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_SCENE_PREPROCESSOR_H_INC #define AI_SCENE_PREPROCESSOR_H_INC +#include "../include/assimp/defs.h" +#include + +struct aiScene; +struct aiAnimation; +struct aiMesh; + class ScenePreprocessorTest; namespace Assimp { diff --git a/code/ScenePrivate.h b/code/ScenePrivate.h index 8e9fde7ac..9bbdd64bd 100644 --- a/code/ScenePrivate.h +++ b/code/ScenePrivate.h @@ -43,6 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_SCENEPRIVATE_H_INCLUDED #define AI_SCENEPRIVATE_H_INCLUDED +#include "../include/assimp/scene.h" namespace Assimp { diff --git a/code/SkeletonMeshBuilder.h b/code/SkeletonMeshBuilder.h index 80b49b0cc..4c9343e67 100644 --- a/code/SkeletonMeshBuilder.h +++ b/code/SkeletonMeshBuilder.h @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/assimp/mesh.h" +struct aiMaterial; struct aiScene; struct aiNode; diff --git a/code/SmoothingGroups.h b/code/SmoothingGroups.h index 41311f73d..48f8ca1c7 100644 --- a/code/SmoothingGroups.h +++ b/code/SmoothingGroups.h @@ -44,6 +44,10 @@ http://www.jalix.org/ressources/graphics/3DS/_unofficials/3ds-unofficial.txt */ #ifndef AI_SMOOTHINGGROUPS_H_INC #define AI_SMOOTHINGGROUPS_H_INC +#include "../include/assimp/vector3.h" +#include +#include + // --------------------------------------------------------------------------- /** Helper structure representing a face with smoothing groups assigned */ struct FaceWithSmoothingGroup diff --git a/code/StandardShapes.h b/code/StandardShapes.h index 577f45bd2..0e1cf6c1e 100644 --- a/code/StandardShapes.h +++ b/code/StandardShapes.h @@ -44,8 +44,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_STANDARD_SHAPES_H_INC #define AI_STANDARD_SHAPES_H_INC +#include "../include/assimp/vector3.h" #include +struct aiMesh; namespace Assimp { diff --git a/code/StreamReader.h b/code/StreamReader.h index 8301d1b27..428fe084a 100644 --- a/code/StreamReader.h +++ b/code/StreamReader.h @@ -46,6 +46,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_STREAMREADER_H_INCLUDED #include "ByteSwap.h" +#include "Exceptional.h" +#include +#include "../include/assimp/IOStream.hpp" namespace Assimp { diff --git a/code/StreamWriter.h b/code/StreamWriter.h index afa8d2489..522999365 100644 --- a/code/StreamWriter.h +++ b/code/StreamWriter.h @@ -46,6 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_STREAMWRITER_H_INCLUDED #include "ByteSwap.h" +#include "../include/assimp/IOStream.hpp" + +#include +#include namespace Assimp { diff --git a/code/StringComparison.h b/code/StringComparison.h index a85a41804..9d15a542c 100644 --- a/code/StringComparison.h +++ b/code/StringComparison.h @@ -51,6 +51,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_STRING_WORKERS_H #include "../include/assimp/ai_assert.h" +#include +#include +#include namespace Assimp { diff --git a/code/Subdivision.h b/code/Subdivision.h index 5d019f521..e6d1ce6ff 100644 --- a/code/Subdivision.h +++ b/code/Subdivision.h @@ -41,6 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Defines a helper class to evaluate subdivision surfaces.*/ #ifndef AI_SUBDISIVION_H_INC #define AI_SUBDISIVION_H_INC + +#include +struct aiMesh; + namespace Assimp { // ------------------------------------------------------------------------------ diff --git a/code/TargetAnimation.h b/code/TargetAnimation.h index 3b21e8755..9803cdf3a 100644 --- a/code/TargetAnimation.h +++ b/code/TargetAnimation.h @@ -43,6 +43,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_TARGET_ANIMATION_H_INC #define AI_TARGET_ANIMATION_H_INC +#include "../include/assimp/anim.h" +#include namespace Assimp { diff --git a/code/TextureTransform.h b/code/TextureTransform.h index 2da237cf5..bceba5445 100644 --- a/code/TextureTransform.h +++ b/code/TextureTransform.h @@ -45,7 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "BaseProcess.h" +#include "../include/assimp/material.h" +#include + struct aiNode; +struct aiMaterial; namespace Assimp { diff --git a/code/UnrealLoader.h b/code/UnrealLoader.h index 1dd4d8823..11dd6eff2 100644 --- a/code/UnrealLoader.h +++ b/code/UnrealLoader.h @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_3D_LOADER_H #include "BaseImporter.h" +#include + namespace Assimp { namespace Unreal { diff --git a/code/ValidateDataStructure.h b/code/ValidateDataStructure.h index 4a3ec86d2..f5667dbb2 100644 --- a/code/ValidateDataStructure.h +++ b/code/ValidateDataStructure.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_VALIDATEPROCESS_H_INC #include "../include/assimp/types.h" +#include "../include/assimp/material.h" #include "BaseProcess.h" struct aiBone; @@ -55,6 +56,8 @@ struct aiTexture; struct aiMaterial; struct aiNode; struct aiString; +struct aiCamera; +struct aiLight; namespace Assimp { diff --git a/code/Vertex.h b/code/Vertex.h index a29211d53..9f96f0ca5 100644 --- a/code/Vertex.h +++ b/code/Vertex.h @@ -48,6 +48,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_VERTEX_H_INC #define AI_VERTEX_H_INC +#include "../include/assimp/vector3.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/ai_assert.h" #include namespace Assimp { diff --git a/code/VertexTriangleAdjacency.h b/code/VertexTriangleAdjacency.h index d2341e973..69c4c142f 100644 --- a/code/VertexTriangleAdjacency.h +++ b/code/VertexTriangleAdjacency.h @@ -47,6 +47,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/ai_assert.h" struct aiMesh; +struct aiFace; + namespace Assimp { // -------------------------------------------------------------------------------------------- diff --git a/code/XFileExporter.h b/code/XFileExporter.h index fa4e6d38e..39932951c 100644 --- a/code/XFileExporter.h +++ b/code/XFileExporter.h @@ -47,10 +47,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_XFILEEXPORTER_H_INC #include "../include/assimp/ai_assert.h" +#include "../include/assimp/matrix4x4.h" #include struct aiScene; struct aiNode; +struct aiMesh; +struct aiString; +struct IOSystem; namespace Assimp { diff --git a/code/XFileHelper.h b/code/XFileHelper.h index 62ce3f220..1b80b9d67 100644 --- a/code/XFileHelper.h +++ b/code/XFileHelper.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #include "../include/assimp/types.h" #include "../include/assimp/quaternion.h" diff --git a/code/XGLLoader.h b/code/XGLLoader.h index e9675af01..4857c8ff9 100644 --- a/code/XGLLoader.h +++ b/code/XGLLoader.h @@ -47,6 +47,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "irrXMLWrapper.h" #include "LogAux.h" +#include + +struct aiMesh; +struct aiMaterial; +struct aiLight; +struct aiNode; namespace Assimp { diff --git a/code/fast_atof.h b/code/fast_atof.h index bc6c96d1a..dfa1f1dde 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -15,10 +15,13 @@ #ifndef __FAST_A_TO_F_H_INCLUDED__ #define __FAST_A_TO_F_H_INCLUDED__ -#include +#include #include +#include +#include #include "StringComparison.h" +#include "../include/assimp/Compiler/pstdint.h" namespace Assimp { diff --git a/code/irrXMLWrapper.h b/code/irrXMLWrapper.h index 134c2f8dd..896805f73 100644 --- a/code/irrXMLWrapper.h +++ b/code/irrXMLWrapper.h @@ -44,6 +44,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // some long includes .... #include "./../contrib/irrXML/irrXML.h" #include "./../include/assimp/IOStream.hpp" +#include "BaseImporter.h" +#include + namespace Assimp { // --------------------------------------------------------------------------------- diff --git a/code/qnan.h b/code/qnan.h index 68d49a645..1642454f1 100644 --- a/code/qnan.h +++ b/code/qnan.h @@ -52,6 +52,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_QNAN_H_INCLUDED #define AI_QNAN_H_INCLUDED +#include "../include/assimp/defs.h" +#include +#include + // --------------------------------------------------------------------------- /** Data structure to represent the bit pattern of a 32 Bit * IEEE 754 floating-point number. */ diff --git a/include/assimp/matrix4x4.h b/include/assimp/matrix4x4.h index 33f5a15b1..4a1414821 100644 --- a/include/assimp/matrix4x4.h +++ b/include/assimp/matrix4x4.h @@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MATRIX4X4_H_INC #define AI_MATRIX4X4_H_INC +#include "vector3.h" #include "./Compiler/pushpack1.h" #ifdef __cplusplus From 83777da98bfe271121bee5dc2a9594e2cd7fa33f Mon Sep 17 00:00:00 2001 From: abma Date: Wed, 15 Apr 2015 21:22:39 +0200 Subject: [PATCH 64/85] fix run.py permissions --- test/regression/run.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 test/regression/run.py diff --git a/test/regression/run.py b/test/regression/run.py old mode 100644 new mode 100755 From bf4913b5c97e615d0f888aa2c3916533050a698d Mon Sep 17 00:00:00 2001 From: abma Date: Thu, 16 Apr 2015 01:00:17 +0200 Subject: [PATCH 65/85] remove AssimpPCH.h: fixes #534 --- code/3DSConverter.cpp | 8 +- code/3DSExporter.cpp | 5 +- code/3DSLoader.cpp | 9 +- code/ACLoader.cpp | 14 ++- code/ASELoader.cpp | 7 +- code/ASEParser.cpp | 3 +- code/AssbinExporter.cpp | 5 +- code/AssbinLoader.cpp | 6 +- code/Assimp.cpp | 12 ++- code/AssimpCExport.cpp | 8 +- code/AssimpPCH.h | 162 ---------------------------- code/AssxmlExporter.cpp | 4 +- code/B3DImporter.cpp | 10 +- code/BVHLoader.cpp | 9 +- code/BaseImporter.cpp | 14 ++- code/BaseImporter.h | 10 +- code/BaseProcess.cpp | 4 +- code/Bitmap.cpp | 4 +- code/Bitmap.h | 2 +- code/BlenderBMesh.cpp | 1 - code/BlenderDNA.cpp | 5 +- code/BlenderLoader.cpp | 4 +- code/BlenderModifier.cpp | 8 +- code/BlenderScene.cpp | 2 +- code/BlenderTessellator.cpp | 1 - code/C4DImporter.cpp | 2 +- code/CMakeLists.txt | 7 +- code/COBLoader.cpp | 10 +- code/CSMLoader.cpp | 11 +- code/CalcTangentsProcess.cpp | 5 +- code/ColladaExporter.cpp | 12 ++- code/ColladaLoader.cpp | 10 +- code/ColladaParser.cpp | 10 +- code/ComputeUVMappingProcess.cpp | 4 +- code/ConvertToLHProcess.cpp | 7 +- code/DXFLoader.cpp | 6 +- code/DeboneProcess.cpp | 5 +- code/DefaultIOStream.cpp | 11 +- code/DefaultIOSystem.cpp | 13 ++- code/DefaultLogger.cpp | 8 +- code/Exporter.cpp | 20 ++-- code/FBXAnimation.cpp | 2 +- code/FBXBinaryTokenizer.cpp | 5 +- code/FBXConverter.cpp | 9 +- code/FBXDeformer.cpp | 2 +- code/FBXDocument.cpp | 3 +- code/FBXDocumentUtil.cpp | 2 +- code/FBXImporter.cpp | 2 +- code/FBXMaterial.cpp | 2 +- code/FBXMeshGeometry.cpp | 2 +- code/FBXModel.cpp | 2 +- code/FBXNodeAttribute.cpp | 1 - code/FBXParser.cpp | 3 +- code/FBXProperties.cpp | 2 +- code/FBXTokenizer.cpp | 2 +- code/FBXUtil.cpp | 1 - code/FindDegenerates.cpp | 5 +- code/FindInstancesProcess.cpp | 6 +- code/FindInvalidDataProcess.cpp | 7 +- code/FixNormalsStep.cpp | 9 +- code/GenFaceNormalsProcess.cpp | 9 +- code/GenVertexNormalsProcess.cpp | 6 +- code/HMPLoader.cpp | 8 +- code/IFCBoolean.cpp | 1 - code/IFCCurve.cpp | 2 +- code/IFCGeometry.cpp | 5 +- code/IFCLoader.cpp | 5 +- code/IFCMaterial.cpp | 3 +- code/IFCOpenings.cpp | 1 - code/IFCProfile.cpp | 2 +- code/IFCReaderGen.cpp | 2 +- code/IFCUtil.cpp | 2 +- code/IFCUtil.h | 6 +- code/IRRLoader.cpp | 12 ++- code/IRRMeshLoader.cpp | 12 ++- code/IRRShared.cpp | 5 +- code/Importer.cpp | 13 ++- code/Importer.h | 2 +- code/ImporterRegistry.cpp | 2 - code/ImproveCacheLocality.cpp | 9 +- code/JoinVerticesProcess.cpp | 6 +- code/LWOAnimation.cpp | 2 +- code/LWOBLoader.cpp | 2 +- code/LWOLoader.cpp | 9 +- code/LWOMaterial.cpp | 6 +- code/LWSLoader.cpp | 7 +- code/LWSLoader.h | 7 +- code/LimitBoneWeightsProcess.cpp | 7 +- code/MD2Loader.cpp | 11 +- code/MD3Loader.cpp | 10 +- code/MD5Loader.cpp | 11 +- code/MD5Parser.cpp | 8 +- code/MDCLoader.cpp | 10 +- code/MDLLoader.cpp | 12 ++- code/MDLMaterialLoader.cpp | 10 +- code/MS3DLoader.cpp | 9 +- code/Macros.h | 49 +++++++++ code/MakeVerboseFormat.cpp | 4 +- code/MaterialSystem.cpp | 7 +- code/NDOLoader.cpp | 7 +- code/NFFLoader.cpp | 10 +- code/OFFLoader.cpp | 8 +- code/ObjExporter.cpp | 12 ++- code/ObjFileImporter.cpp | 10 +- code/ObjFileMtlImporter.cpp | 7 +- code/ObjFileParser.cpp | 9 +- code/OgreBinarySerializer.cpp | 2 + code/OgreBinarySerializer.h | 1 + code/OgreImporter.cpp | 6 +- code/OgreImporter.h | 2 + code/OgreMaterial.cpp | 11 +- code/OgreStructs.cpp | 4 + code/OgreStructs.h | 12 ++- code/OgreXmlSerializer.cpp | 2 + code/OptimizeGraph.cpp | 9 +- code/OptimizeMeshes.cpp | 8 +- code/PlyExporter.cpp | 9 +- code/PlyLoader.cpp | 8 +- code/PlyParser.cpp | 7 +- code/PostStepRegistry.cpp | 1 - code/PretransformVertices.cpp | 5 +- code/ProcessHelper.cpp | 2 +- code/Q3BSPFileImporter.cpp | 13 ++- code/Q3BSPFileParser.cpp | 6 +- code/Q3BSPZipArchive.cpp | 6 +- code/Q3DLoader.cpp | 7 +- code/RawLoader.cpp | 9 +- code/RemoveComments.cpp | 1 - code/RemoveRedundantMaterials.cpp | 5 +- code/RemoveVCProcess.cpp | 6 +- code/SGSpatialSort.cpp | 1 - code/SMDLoader.cpp | 10 +- code/STEPFileEncoding.cpp | 2 +- code/STEPFileReader.cpp | 5 +- code/STLExporter.cpp | 9 +- code/STLLoader.cpp | 9 +- code/SceneCombiner.cpp | 5 +- code/ScenePreprocessor.cpp | 5 +- code/SkeletonMeshBuilder.cpp | 1 - code/SortByPTypeProcess.cpp | 5 +- code/SpatialSort.cpp | 5 +- code/SplitByBoneCountProcess.cpp | 9 +- code/SplitLargeMeshes.cpp | 2 +- code/StandardShapes.cpp | 6 +- code/Subdivision.cpp | 5 +- code/TargetAnimation.cpp | 4 +- code/TerragenLoader.cpp | 10 +- code/TextureTransform.cpp | 8 +- code/TriangulateProcess.cpp | 5 +- code/UnrealLoader.cpp | 8 +- code/ValidateDataStructure.cpp | 3 +- code/{AssimpPCH.cpp => Version.cpp} | 15 +-- code/VertexTriangleAdjacency.cpp | 6 +- code/XFileExporter.cpp | 11 +- code/XFileExporter.h | 5 +- code/XFileImporter.cpp | 10 +- code/XFileParser.cpp | 10 +- code/XGLLoader.cpp | 8 +- code/XGLLoader.h | 13 +-- contrib/irrXML/irrXML.cpp | 1 - include/assimp/version.h | 2 + test/CMakeLists.txt | 3 +- test/unit/Main.cpp | 3 +- test/unit/UnitTestPCH.cpp | 3 - test/unit/UnitTestPCH.h | 2 +- test/unit/utFindInvalidData.cpp | 3 +- test/unit/utImporter.cpp | 4 +- tools/assimp_cmd/CompareDump.cpp | 8 +- tools/assimp_cmd/Main.h | 1 - tools/assimp_cmd/WriteDumb.cpp | 3 +- 170 files changed, 780 insertions(+), 472 deletions(-) delete mode 100644 code/AssimpPCH.h create mode 100644 code/Macros.h rename code/{AssimpPCH.cpp => Version.cpp} (90%) delete mode 100644 test/unit/UnitTestPCH.cpp diff --git a/code/3DSConverter.cpp b/code/3DSConverter.cpp index ef3788f99..b33eec57f 100644 --- a/code/3DSConverter.cpp +++ b/code/3DSConverter.cpp @@ -41,12 +41,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the 3ds importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_3DS_IMPORTER // internal headers #include "3DSLoader.h" -#include "TargetAnimation.h" +#include "TargetAnimation.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "StringComparison.h" +#include using namespace Assimp; diff --git a/code/3DSExporter.cpp b/code/3DSExporter.cpp index 1b870181c..deb5575eb 100644 --- a/code/3DSExporter.cpp +++ b/code/3DSExporter.cpp @@ -38,7 +38,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_3DS_EXPORTER @@ -47,6 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "3DSLoader.h" #include "SceneCombiner.h" #include "SplitLargeMeshes.h" +#include "StringComparison.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include using namespace Assimp; namespace Assimp { diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index 6a51fb84f..914648ae8 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -45,11 +45,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * http://www.the-labs.com/Blender/3DS-details.html */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_3DS_IMPORTER // internal headers -#include "3DSLoader.h" +#include "3DSLoader.h" +#include "Macros.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "StringComparison.h" using namespace Assimp; diff --git a/code/ACLoader.cpp b/code/ACLoader.cpp index fc00316bf..58d31bf5d 100644 --- a/code/ACLoader.cpp +++ b/code/ACLoader.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the AC3D importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_AC_IMPORTER @@ -50,7 +50,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ACLoader.h" #include "ParsingUtils.h" #include "fast_atof.h" -#include "Subdivision.h" +#include "Subdivision.h" +#include "Importer.h" +#include "BaseImporter.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/light.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/config.h" +#include "../include/assimp/IOSystem.hpp" +#include using namespace Assimp; diff --git a/code/ASELoader.cpp b/code/ASELoader.cpp index f84978509..3a78e066f 100644 --- a/code/ASELoader.cpp +++ b/code/ASELoader.cpp @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the ASE importer class */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_ASE_IMPORTER // internal headers @@ -51,6 +50,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StringComparison.h" #include "SkeletonMeshBuilder.h" #include "TargetAnimation.h" +#include "../include/assimp/Importer.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + // utilities #include "fast_atof.h" diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index 98dd30457..7e16c43ed 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the ASE parser class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_ASE_IMPORTER // internal headers @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ASELoader.h" #include "MaterialSystem.h" #include "fast_atof.h" +#include "../include/assimp/DefaultLogger.hpp" using namespace Assimp; using namespace Assimp::ASE; diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index 6b4da3e30..f306e812a 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -40,10 +40,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file AssbinExporter.cpp * ASSBIN exporter main code */ -#include "AssimpPCH.h" #include "assbin_chunks.h" #include "./../include/assimp/version.h" +#include "../include/assimp/IOStream.hpp" +#include "../include/assimp/IOSystem.hpp" #include "ProcessHelper.h" +#include "Exceptional.h" +#include #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index bb73e10b3..6818929fb 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -45,13 +45,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * see assbin_chunks.h */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER // internal headers #include "AssbinLoader.h" #include "assbin_chunks.h" #include "MemoryIOWrapper.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/anim.h" +#include "../include/assimp/scene.h" +#include + #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include #else diff --git a/code/Assimp.cpp b/code/Assimp.cpp index 89b62d110..a8a22314c 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -42,13 +42,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Plain-C API */ -#include "AssimpPCH.h" #include "../include/assimp/cimport.h" +#include "../include/assimp/LogStream.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/importerdesc.h" +#include "../include/assimp/scene.h" #include "GenericProperty.h" #include "CInterfaceIOWrapper.h" -#include "../include/assimp/importerdesc.h" -#include "Importer.h" +#include "Importer.h" +#include "Exceptional.h" +#include "ScenePrivate.h" +#include "BaseImporter.h" +#include // ------------------------------------------------------------------------------------------------ #ifndef ASSIMP_BUILD_SINGLETHREADED diff --git a/code/AssimpCExport.cpp b/code/AssimpCExport.cpp index 70a5177da..47fa8d9f8 100644 --- a/code/AssimpCExport.cpp +++ b/code/AssimpCExport.cpp @@ -43,11 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Assimp C export interface. See Exporter.cpp for some notes. */ -#include "AssimpPCH.h" - #ifndef ASSIMP_BUILD_NO_EXPORT -#include "CInterfaceIOWrapper.h" -#include "SceneCombiner.h" +#include "CInterfaceIOWrapper.h" +#include "SceneCombiner.h" +#include "ScenePrivate.h" +#include "../include/assimp/Exporter.hpp" using namespace Assimp; diff --git a/code/AssimpPCH.h b/code/AssimpPCH.h deleted file mode 100644 index 548d13175..000000000 --- a/code/AssimpPCH.h +++ /dev/null @@ -1,162 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (assimp) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2012, assimp team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -/** @file AssimpPCH.h - * PCH master include. Every unit in Assimp has to include it. - */ - -#ifndef ASSIMP_PCH_INCLUDED -#define ASSIMP_PCH_INCLUDED -#define ASSIMP_INTERNAL_BUILD - -// ---------------------------------------------------------------------------------------- -/* General compile config taken from defs.h. It is important that the user compiles - * using exactly the same settings in defs.h. Settings in AssimpPCH.h may differ, - * they won't affect the public API. - */ -#include "../include/assimp/defs.h" - -// Include our stdint.h replacement header for MSVC, take the global header for gcc/mingw -#if defined( _MSC_VER) && (_MSC_VER < 1600) -# include "../include/assimp/Compiler/pstdint.h" -#else -# include -#endif - -/* Undefine the min/max macros defined by some platform headers (namely Windows.h) to - * avoid obvious conflicts with std::min() and std::max(). - */ -#undef min -#undef max - -/* Concatenate two tokens after evaluating them - */ -#define _AI_CONCAT(a,b) a ## b -#define AI_CONCAT(a,b) _AI_CONCAT(a,b) - -/* Helper macro to set a pointer to NULL in debug builds - */ -#if (defined ASSIMP_BUILD_DEBUG) -# define AI_DEBUG_INVALIDATE_PTR(x) x = NULL; -#else -# define AI_DEBUG_INVALIDATE_PTR(x) -#endif - -/* Beginning with MSVC8 some C string manipulation functions are mapped to their _safe_ - * counterparts (e.g. _itoa_s). This avoids a lot of trouble with deprecation warnings. - */ -#if _MSC_VER >= 1400 && !(defined _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES) -# define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 -#endif - -/* size_t to unsigned int, possible loss of data. The compiler is right with his warning - * but this loss of data won't be a problem for us. So shut up, little boy. - */ -#ifdef _MSC_VER -# pragma warning (disable : 4267) -#endif - -// ---------------------------------------------------------------------------------------- -/* Actually that's not required for MSVC. It is included somewhere in the deeper parts of - * the MSVC STL but it's necessary for proper build with STLport. - */ -#include - -// Runtime/STL headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Boost headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Public ASSIMP headers -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/IOStream.hpp" -#include "../include/assimp/IOSystem.hpp" -#include "../include/assimp/scene.h" -#include "../include/assimp/importerdesc.h" -#include "../include/assimp/postprocess.h" -#include "../include/assimp/Importer.hpp" -#include "../include/assimp/Exporter.hpp" - -// Internal utility headers -#include "BaseImporter.h" -#include "StringComparison.h" -#include "StreamReader.h" -#include "qnan.h" -#include "ScenePrivate.h" - - -// We need those constants, workaround for any platforms where nobody defined them yet -#if (!defined SIZE_MAX) -# define SIZE_MAX (~((size_t)0)) -#endif - -#if (!defined UINT_MAX) -# define UINT_MAX (~((unsigned int)0)) -#endif - - -#endif // !! ASSIMP_PCH_INCLUDED diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index c2e3f1833..3071f7c1b 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -41,9 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ASSXML exporter main code */ #include -#include "AssimpPCH.h" #include "./../include/assimp/version.h" #include "ProcessHelper.h" +#include "../include/assimp/IOStream.hpp" +#include "../include/assimp/IOSystem.hpp" #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include @@ -52,6 +53,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #include +#include #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER diff --git a/code/B3DImporter.cpp b/code/B3DImporter.cpp index aa862a1fe..a2f8b5593 100644 --- a/code/B3DImporter.cpp +++ b/code/B3DImporter.cpp @@ -43,13 +43,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the b3d importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_B3D_IMPORTER // internal headers #include "B3DImporter.h" #include "TextureTransform.h" -#include "ConvertToLHProcess.h" +#include "ConvertToLHProcess.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/anim.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; using namespace std; diff --git a/code/BVHLoader.cpp b/code/BVHLoader.cpp index 6f512eaf2..94472debf 100644 --- a/code/BVHLoader.cpp +++ b/code/BVHLoader.cpp @@ -40,12 +40,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_BVH_IMPORTER #include "BVHLoader.h" #include "fast_atof.h" -#include "SkeletonMeshBuilder.h" +#include "SkeletonMeshBuilder.h" +#include "../include/assimp/Importer.hpp" +#include +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" using namespace Assimp; diff --git a/code/BaseImporter.cpp b/code/BaseImporter.cpp index b43c1c40f..aae15f3e5 100644 --- a/code/BaseImporter.cpp +++ b/code/BaseImporter.cpp @@ -43,11 +43,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of BaseImporter */ -#include "AssimpPCH.h" #include "BaseImporter.h" #include "FileSystemFilter.h" - -#include "Importer.h" +#include "Importer.h" +#include "ByteSwap.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/postprocess.h" +#include +#include +#include +#include +#include + using namespace Assimp; diff --git a/code/BaseImporter.h b/code/BaseImporter.h index 82b369850..06b013f5e 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -49,18 +49,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "../include/assimp/types.h" -#include "../include/assimp/ProgressHandler.hpp" +#include "../include/assimp/ProgressHandler.hpp" struct aiScene; namespace Assimp { - -class IOSystem; + class Importer; -class BaseImporter; +class IOSystem; class BaseProcess; class SharedPostProcessInfo; -class IOStream; +class IOStream; + // utility to do char4 to uint32 in a portable manner #define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \ diff --git a/code/BaseProcess.cpp b/code/BaseProcess.cpp index a1261d7a1..379324c58 100644 --- a/code/BaseProcess.cpp +++ b/code/BaseProcess.cpp @@ -41,10 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of BaseProcess */ -#include "AssimpPCH.h" #include "BaseImporter.h" #include "BaseProcess.h" - +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" #include "Importer.h" using namespace Assimp; diff --git a/code/Bitmap.cpp b/code/Bitmap.cpp index 30b5744ad..6e62939d8 100644 --- a/code/Bitmap.cpp +++ b/code/Bitmap.cpp @@ -45,9 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Used for file formats which embed their textures into the model file. */ -#include "AssimpPCH.h" #include "Bitmap.h" +#include "../include/assimp/texture.h" +#include "../include/assimp/IOStream.hpp" +#include "ByteSwap.h" namespace Assimp { diff --git a/code/Bitmap.h b/code/Bitmap.h index 68873613f..38e3f864c 100644 --- a/code/Bitmap.h +++ b/code/Bitmap.h @@ -51,10 +51,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include struct aiTexture; -struct IOStream; namespace Assimp { +struct IOStream; class Bitmap { protected: diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index 4dbf1d104..c41b46301 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Conversion of Blender's new BMesh stuff */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER diff --git a/code/BlenderDNA.cpp b/code/BlenderDNA.cpp index 16e639ecf..3e443383e 100644 --- a/code/BlenderDNA.cpp +++ b/code/BlenderDNA.cpp @@ -42,12 +42,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Blender `DNA`, that is its own * serialized set of data structures. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER #include "BlenderDNA.h" #include "StreamReader.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include using namespace Assimp; using namespace Assimp::Blender; diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index dc88ab840..320c0c58b 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file BlenderLoader.cpp * @brief Implementation of the Blender3D importer class. */ -#include "AssimpPCH.h" + //#define ASSIMP_BUILD_NO_COMPRESSED_BLEND // Uncomment this to disable support for (gzip)compressed .BLEND files @@ -52,6 +52,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BlenderIntermediate.h" #include "BlenderModifier.h" #include "BlenderBMesh.h" +#include "../include/assimp/scene.h" +#include "StringComparison.h" #include "StreamReader.h" #include "MemoryIOWrapper.h" diff --git a/code/BlenderModifier.cpp b/code/BlenderModifier.cpp index 74410d0a0..fb35b0c5b 100644 --- a/code/BlenderModifier.cpp +++ b/code/BlenderModifier.cpp @@ -41,12 +41,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file BlenderModifier.cpp * @brief Implementation of some blender modifiers (i.e subdivision, mirror). */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER #include "BlenderModifier.h" #include "SceneCombiner.h" -#include "Subdivision.h" +#include "Subdivision.h" +#include "../include/assimp/scene.h" +#include +#include +#include #include diff --git a/code/BlenderScene.cpp b/code/BlenderScene.cpp index 16f889c72..fa05076c8 100644 --- a/code/BlenderScene.cpp +++ b/code/BlenderScene.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file BlenderScene.cpp * @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER #include "BlenderDNA.h" diff --git a/code/BlenderTessellator.cpp b/code/BlenderTessellator.cpp index 98ccbad6a..b8e6f3f39 100644 --- a/code/BlenderTessellator.cpp +++ b/code/BlenderTessellator.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief A simple tessellation wrapper */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER diff --git a/code/C4DImporter.cpp b/code/C4DImporter.cpp index 167e6800c..937dcc71b 100644 --- a/code/C4DImporter.cpp +++ b/code/C4DImporter.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file C4DImporter.cpp * @brief Implementation of the Cinema4D importer class. */ -#include "AssimpPCH.h" + // no #ifdefing here, Cinema4D support is carried out in a branch of assimp // where it is turned on in the CMake settings. diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index e571789a2..5713c55f3 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -145,6 +145,7 @@ SET( Common_SRCS Bitmap.cpp Bitmap.h XMLTools.h + Version.cpp ) SOURCE_GROUP(Common FILES ${Common_SRCS}) @@ -720,10 +721,6 @@ SET( assimp_src ${PUBLIC_HEADERS} ${COMPILER_HEADERS} - # Old precompiled header - # (removed because the precompiled header is not updated when visual studio switch configuration which leads to failed compilation. - # Moreover it's a drag to recompile assimp entirely each time a modification is made to one of the included header, which is definitely counter-productive.) - AssimpPCH.cpp ) IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) @@ -731,8 +728,6 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) INCLUDE_DIRECTORIES(${C4D_INCLUDES}) ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) -#ADD_MSVC_PRECOMPILED_HEADER("AssimpPCH.h" "AssimpPCH.cpp" assimp_src) - ADD_LIBRARY( assimp ${assimp_src} ) TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES}) diff --git a/code/COBLoader.cpp b/code/COBLoader.cpp index ce9ceeb7e..c8590c5fc 100644 --- a/code/COBLoader.cpp +++ b/code/COBLoader.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file COBLoader.cpp * @brief Implementation of the TrueSpace COB/SCN importer class. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_COB_IMPORTER #include "COBLoader.h" @@ -52,7 +52,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast_atof.h" #include "LineSplitter.h" -#include "TinyFormatter.h" +#include "TinyFormatter.h" +#include +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; using namespace Assimp::COB; diff --git a/code/CSMLoader.cpp b/code/CSMLoader.cpp index 643eb75ed..7310068a7 100644 --- a/code/CSMLoader.cpp +++ b/code/CSMLoader.cpp @@ -43,14 +43,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Implementation of the CSM importer class. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_CSM_IMPORTER #include "CSMLoader.h" #include "SkeletonMeshBuilder.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include "../include/assimp/Importer.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/anim.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/CalcTangentsProcess.cpp b/code/CalcTangentsProcess.cpp index 10e70ba13..60c7e1d18 100644 --- a/code/CalcTangentsProcess.cpp +++ b/code/CalcTangentsProcess.cpp @@ -43,12 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * tangents and bitangents for all imported meshes */ -#include "AssimpPCH.h" - // internal headers #include "CalcTangentsProcess.h" #include "ProcessHelper.h" -#include "TinyFormatter.h" +#include "TinyFormatter.h" +#include "qnan.h" using namespace Assimp; diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index db76e38a9..353504f4a 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -38,7 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER @@ -46,9 +46,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Bitmap.h" #include "fast_atof.h" -#include "SceneCombiner.h" +#include "SceneCombiner.h" #include "XMLTools.h" - +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/Exporter.hpp" +#include "../include/assimp/scene.h" + +#include "Exceptional.h" + +#include #include #include diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 5771bc7af..b6e1d84ea 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -41,10 +41,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the Collada loader */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER #include "../include/assimp/anim.h" +#include "../include/assimp/scene.h" #include "ColladaLoader.h" #include "ColladaParser.h" @@ -52,7 +53,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include "SkeletonMeshBuilder.h" -#include "time.h" +#include "time.h" +#include +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/Importer.hpp" +#include + using namespace Assimp; diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index b7b5a7908..bbcc234de 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -43,12 +43,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Collada parser helper */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER #include "ColladaParser.h" #include "fast_atof.h" -#include "ParsingUtils.h" +#include "ParsingUtils.h" +#include +#include +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/light.h" + using namespace Assimp; using namespace Assimp::Collada; diff --git a/code/ComputeUVMappingProcess.cpp b/code/ComputeUVMappingProcess.cpp index 2f037edb1..172268b66 100644 --- a/code/ComputeUVMappingProcess.cpp +++ b/code/ComputeUVMappingProcess.cpp @@ -41,9 +41,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file GenUVCoords step */ -#include "AssimpPCH.h" #include "ComputeUVMappingProcess.h" -#include "ProcessHelper.h" +#include "ProcessHelper.h" +#include "Exceptional.h" using namespace Assimp; diff --git a/code/ConvertToLHProcess.cpp b/code/ConvertToLHProcess.cpp index 4f5b40840..6f66bff2c 100644 --- a/code/ConvertToLHProcess.cpp +++ b/code/ConvertToLHProcess.cpp @@ -47,8 +47,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * better location. */ -#include "AssimpPCH.h" -#include "ConvertToLHProcess.h" + +#include "ConvertToLHProcess.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/DefaultLogger.hpp" using namespace Assimp; diff --git a/code/DXFLoader.cpp b/code/DXFLoader.cpp index db443a772..f2c58406f 100644 --- a/code/DXFLoader.cpp +++ b/code/DXFLoader.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the DXF importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_DXF_IMPORTER #include "DXFLoader.h" @@ -52,6 +52,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast_atof.h" #include "DXFHelper.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include +#include using namespace Assimp; diff --git a/code/DeboneProcess.cpp b/code/DeboneProcess.cpp index e22e2fb00..025a2ca76 100644 --- a/code/DeboneProcess.cpp +++ b/code/DeboneProcess.cpp @@ -41,11 +41,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /// @file DeboneProcess.cpp /** Implementation of the DeboneProcess post processing step */ -#include "AssimpPCH.h" + // internal headers of the post-processing framework #include "ProcessHelper.h" -#include "DeboneProcess.h" +#include "DeboneProcess.h" +#include using namespace Assimp; diff --git a/code/DefaultIOStream.cpp b/code/DefaultIOStream.cpp index 1553bd8c1..e75138a8b 100644 --- a/code/DefaultIOStream.cpp +++ b/code/DefaultIOStream.cpp @@ -42,11 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Default File I/O implementation for #Importer */ -#include "AssimpPCH.h" - -#include "DefaultIOStream.h" -#include -#include + +#include "../include/assimp/ai_assert.h" +#include "DefaultIOStream.h" +#include +#include +#include using namespace Assimp; diff --git a/code/DefaultIOSystem.cpp b/code/DefaultIOSystem.cpp index df932bee7..58a84aafa 100644 --- a/code/DefaultIOSystem.cpp +++ b/code/DefaultIOSystem.cpp @@ -39,12 +39,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ /** @file Default implementation of IOSystem using the standard C file functions */ - -#include "AssimpPCH.h" - -#include + #include "DefaultIOSystem.h" -#include "DefaultIOStream.h" +#include "DefaultIOStream.h" +#include "StringComparison.h" + +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/ai_assert.h" +#include + #ifdef __unix__ #include diff --git a/code/DefaultLogger.cpp b/code/DefaultLogger.cpp index 1b9167c55..b78b2abd6 100644 --- a/code/DefaultLogger.cpp +++ b/code/DefaultLogger.cpp @@ -43,13 +43,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of DefaultLogger (and Logger) */ -#include "AssimpPCH.h" #include "DefaultIOSystem.h" // Default log streams #include "Win32DebugLogStream.h" #include "StdOStreamLogStream.h" -#include "FileLogStream.h" +#include "FileLogStream.h" +#include "../include/assimp/NullLogger.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/ai_assert.h" +#include +#include #ifndef ASSIMP_BUILD_SINGLETHREADED # include diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 238430fa6..5306049c3 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -50,19 +50,25 @@ description strings. Here we implement only the C++ interface (Assimp::Exporter). */ -#include "AssimpPCH.h" - #ifndef ASSIMP_BUILD_NO_EXPORT #include "DefaultIOSystem.h" -#include "BlobIOSystem.h" -#include "SceneCombiner.h" -#include "BaseProcess.h" -#include "Importer.h" // need this for GetPostProcessingStepInstanceList() +#include "BlobIOSystem.h" +#include "SceneCombiner.h" +#include "BaseProcess.h" +#include "Importer.h" // need this for GetPostProcessingStepInstanceList() #include "JoinVerticesProcess.h" #include "MakeVerboseFormat.h" -#include "ConvertToLHProcess.h" +#include "ConvertToLHProcess.h" +#include "Exceptional.h" +#include "ScenePrivate.h" +#include +#include "../include/assimp/Exporter.hpp" +#include "../include/assimp/mesh.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/scene.h" +#include namespace Assimp { diff --git a/code/FBXAnimation.cpp b/code/FBXAnimation.cpp index 3bf60acd4..dd8d9551d 100644 --- a/code/FBXAnimation.cpp +++ b/code/FBXAnimation.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Assimp::FBX::AnimationCurve, Assimp::FBX::AnimationCurveNode, * Assimp::FBX::AnimationLayer, Assimp::FBX::AnimationStack */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index 9d5e6ac7e..528a8919a 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -42,12 +42,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * we emit tokens so the parser needs almost no special handling * for binary files. */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER #include "FBXTokenizer.h" #include "FBXUtil.h" +#include "../include/assimp/defs.h" +#include +#include "Exceptional.h" +#include "ByteSwap.h" namespace Assimp { namespace FBX { diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 7bd15736f..e116d01dc 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -41,20 +41,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXConverter.cpp * @brief Implementation of the FBX DOM -> aiScene converter */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER #include #include #include - +#include #include "FBXParser.h" #include "FBXConverter.h" #include "FBXDocument.h" #include "FBXUtil.h" #include "FBXProperties.h" #include "FBXImporter.h" +#include "../include/assimp/scene.h" +#include +#include + namespace Assimp { namespace FBX { @@ -1209,7 +1212,7 @@ private: // ------------------------------------------------------------------------------------------------ /** - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into - * account when determining which weights to include. + * account when determining which weights to include. * - outputVertStartIndices is only used when a material index is specified, it gives for * each output vertex the DOM index it maps to. */ void ConvertWeights(aiMesh* out, const Model& model, const MeshGeometry& geo, diff --git a/code/FBXDeformer.cpp b/code/FBXDeformer.cpp index 22e8aa25b..d7b8d35e4 100644 --- a/code/FBXDeformer.cpp +++ b/code/FBXDeformer.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXNoteAttribute.cpp * @brief Assimp::FBX::NodeAttribute (and subclasses) implementation */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index fc27c8874..849842449 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXDocument.cpp * @brief Implementation of the FBX DOM classes */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -54,6 +53,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include +#include namespace Assimp { namespace FBX { diff --git a/code/FBXDocumentUtil.cpp b/code/FBXDocumentUtil.cpp index 5efbcb2b7..04c48bb6e 100644 --- a/code/FBXDocumentUtil.cpp +++ b/code/FBXDocumentUtil.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXDocumentUtil.cpp * @brief Implementation of the FBX DOM utility functions declared in FBXDocumentUtil.h */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -50,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXUtil.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 9ecea6365..621868487 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXImporter.cpp * @brief Implementation of the FBX importer. */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -59,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "MemoryIOWrapper.h" +#include "../include/assimp/Importer.hpp" namespace Assimp { template<> const std::string LogFunctions::log_prefix = "FBX: "; diff --git a/code/FBXMaterial.cpp b/code/FBXMaterial.cpp index fffa14fd3..576f4b3dd 100644 --- a/code/FBXMaterial.cpp +++ b/code/FBXMaterial.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXMaterial.cpp * @brief Assimp::FBX::Material and Assimp::FBX::Texture implementation */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXMeshGeometry.cpp b/code/FBXMeshGeometry.cpp index ebc75f48e..0fedfbcf6 100644 --- a/code/FBXMeshGeometry.cpp +++ b/code/FBXMeshGeometry.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXMeshGeometry.cpp * @brief Assimp::FBX::MeshGeometry implementation */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImporter.h" #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" +#include namespace Assimp { diff --git a/code/FBXModel.cpp b/code/FBXModel.cpp index d6d329801..3391aa82a 100644 --- a/code/FBXModel.cpp +++ b/code/FBXModel.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXModel.cpp * @brief Assimp::FBX::Model implementation */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXNodeAttribute.cpp b/code/FBXNodeAttribute.cpp index 1b7314666..69052c491 100644 --- a/code/FBXNodeAttribute.cpp +++ b/code/FBXNodeAttribute.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXNoteAttribute.cpp * @brief Assimp::FBX::NodeAttribute (and subclasses) implementation */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index 62f8d9c0c..8d3ea7db9 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXParser.cpp * @brief Implementation of the FBX parser and the rudimentary DOM that we use */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -59,6 +58,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include "fast_atof.h" +#include +#include "ByteSwap.h" using namespace Assimp; using namespace Assimp::FBX; diff --git a/code/FBXProperties.cpp b/code/FBXProperties.cpp index 13b354442..ffbe22fb0 100644 --- a/code/FBXProperties.cpp +++ b/code/FBXProperties.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXProperties.cpp * @brief Implementation of the FBX dynamic properties system */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -50,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXDocument.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" +#include namespace Assimp { namespace FBX { diff --git a/code/FBXTokenizer.cpp b/code/FBXTokenizer.cpp index 88ac1257d..fa7613b68 100644 --- a/code/FBXTokenizer.cpp +++ b/code/FBXTokenizer.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXTokenizer.cpp * @brief Implementation of the FBX broadphase lexer */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER @@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXTokenizer.h" #include "FBXUtil.h" +#include "Exceptional.h" namespace Assimp { namespace FBX { diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index aaf311d03..6fbd273e3 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file FBXUtil.cpp * @brief Implementation of internal FBX utility functions */ -#include "AssimpPCH.h" #include "FBXUtil.h" #include "FBXTokenizer.h" diff --git a/code/FindDegenerates.cpp b/code/FindDegenerates.cpp index bfa32487d..11b91f1cf 100644 --- a/code/FindDegenerates.cpp +++ b/code/FindDegenerates.cpp @@ -43,11 +43,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the FindDegenerates post-process step. */ -#include "AssimpPCH.h" + // internal headers #include "ProcessHelper.h" -#include "FindDegenerates.h" +#include "FindDegenerates.h" +#include "Exceptional.h" using namespace Assimp; diff --git a/code/FindInstancesProcess.cpp b/code/FindInstancesProcess.cpp index 3b8578142..117051a4a 100644 --- a/code/FindInstancesProcess.cpp +++ b/code/FindInstancesProcess.cpp @@ -43,8 +43,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the aiProcess_FindInstances postprocessing step */ -#include "AssimpPCH.h" -#include "FindInstancesProcess.h" + +#include "FindInstancesProcess.h" +#include +#include using namespace Assimp; diff --git a/code/FindInvalidDataProcess.cpp b/code/FindInvalidDataProcess.cpp index 4e7be4258..450c5f873 100644 --- a/code/FindInvalidDataProcess.cpp +++ b/code/FindInvalidDataProcess.cpp @@ -42,13 +42,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Defines a post processing step to search an importer's output for data that is obviously invalid */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_FINDINVALIDDATA_PROCESS // internal headers #include "FindInvalidDataProcess.h" -#include "ProcessHelper.h" +#include "ProcessHelper.h" +#include "Macros.h" +#include "Exceptional.h" +#include "qnan.h" using namespace Assimp; diff --git a/code/FixNormalsStep.cpp b/code/FixNormalsStep.cpp index 19e5dece3..d3d53ac15 100644 --- a/code/FixNormalsStep.cpp +++ b/code/FixNormalsStep.cpp @@ -43,10 +43,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * all normals in meshes with infacing normals. */ -#include "AssimpPCH.h" - // internal headers -#include "FixNormalsStep.h" +#include "FixNormalsStep.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/scene.h" +#include + using namespace Assimp; diff --git a/code/GenFaceNormalsProcess.cpp b/code/GenFaceNormalsProcess.cpp index fb081e5a3..18e31e948 100644 --- a/code/GenFaceNormalsProcess.cpp +++ b/code/GenFaceNormalsProcess.cpp @@ -43,8 +43,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * normals for all imported faces. */ -#include "AssimpPCH.h" -#include "GenFaceNormalsProcess.h" + +#include "GenFaceNormalsProcess.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "Exceptional.h" +#include "qnan.h" using namespace Assimp; diff --git a/code/GenVertexNormalsProcess.cpp b/code/GenVertexNormalsProcess.cpp index 09b446fa3..5de11e0b0 100644 --- a/code/GenVertexNormalsProcess.cpp +++ b/code/GenVertexNormalsProcess.cpp @@ -43,11 +43,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * normals for all imported faces. */ -#include "AssimpPCH.h" + // internal headers #include "GenVertexNormalsProcess.h" -#include "ProcessHelper.h" +#include "ProcessHelper.h" +#include "Exceptional.h" +#include "qnan.h" using namespace Assimp; diff --git a/code/HMPLoader.cpp b/code/HMPLoader.cpp index f5eb31bff..e35c518e4 100644 --- a/code/HMPLoader.cpp +++ b/code/HMPLoader.cpp @@ -41,12 +41,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the MDL importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_HMP_IMPORTER // internal headers #include "HMPLoader.h" -#include "MD2FileData.h" +#include "MD2FileData.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" using namespace Assimp; diff --git a/code/IFCBoolean.cpp b/code/IFCBoolean.cpp index c1b43695c..2bc7e9717 100644 --- a/code/IFCBoolean.cpp +++ b/code/IFCBoolean.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implements a subset of Ifc boolean operations */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" diff --git a/code/IFCCurve.cpp b/code/IFCCurve.cpp index ffe52dfd2..905e30694 100644 --- a/code/IFCCurve.cpp +++ b/code/IFCCurve.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Read profile and curves entities from IFC files */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp index d0a55ad5b..a0e0d6b13 100644 --- a/code/IFCGeometry.cpp +++ b/code/IFCGeometry.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Geometry conversion and synthesis for IFC */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" @@ -50,7 +50,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ProcessHelper.h" #include "../contrib/poly2tri/poly2tri/poly2tri.h" -#include "../contrib/clipper/clipper.hpp" +#include "../contrib/clipper/clipper.hpp" +#include #include diff --git a/code/IFCLoader.cpp b/code/IFCLoader.cpp index b6e6e0289..5d5e38a86 100644 --- a/code/IFCLoader.cpp +++ b/code/IFCLoader.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file IFCLoad.cpp * @brief Implementation of the Industry Foundation Classes loader. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER @@ -60,6 +60,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "MemoryIOWrapper.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/Importer.hpp" + namespace Assimp { template<> const std::string LogFunctions::log_prefix = "IFC: "; diff --git a/code/IFCMaterial.cpp b/code/IFCMaterial.cpp index 5b9bab00d..72a8aa78a 100644 --- a/code/IFCMaterial.cpp +++ b/code/IFCMaterial.cpp @@ -42,11 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of conversion routines to convert IFC materials to aiMaterial */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" #include +#include "../include/assimp/material.h" namespace Assimp { namespace IFC { diff --git a/code/IFCOpenings.cpp b/code/IFCOpenings.cpp index c47f8254a..9eaca8756 100644 --- a/code/IFCOpenings.cpp +++ b/code/IFCOpenings.cpp @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * holes for windows and doors into walls. */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" diff --git a/code/IFCProfile.cpp b/code/IFCProfile.cpp index 495852be4..42d090d9d 100644 --- a/code/IFCProfile.cpp +++ b/code/IFCProfile.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Read profile and curves entities from IFC files */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCUtil.h" diff --git a/code/IFCReaderGen.cpp b/code/IFCReaderGen.cpp index 00ff4aa35..021e157fe 100644 --- a/code/IFCReaderGen.cpp +++ b/code/IFCReaderGen.cpp @@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCReaderGen.h" diff --git a/code/IFCUtil.cpp b/code/IFCUtil.cpp index 6fcda33c7..600d705b1 100644 --- a/code/IFCUtil.cpp +++ b/code/IFCUtil.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of conversion routines for some common Ifc helper entities. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER diff --git a/code/IFCUtil.h b/code/IFCUtil.h index 1a1e26f37..7e1f01591 100644 --- a/code/IFCUtil.h +++ b/code/IFCUtil.h @@ -47,9 +47,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCReaderGen.h" #include "IFCLoader.h" -#include "STEPFile.h" +#include "STEPFile.h" +#include "../include/assimp/mesh.h" +#include "../include/assimp/material.h" + -struct aiMaterial; struct aiNode; namespace Assimp { diff --git a/code/IRRLoader.cpp b/code/IRRLoader.cpp index 36ee9cfcc..b082168c1 100644 --- a/code/IRRLoader.cpp +++ b/code/IRRLoader.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Irr importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IRR_IMPORTER @@ -57,7 +57,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Importer.h" // We need boost::common_factor to compute the lcm/gcd of a number -#include +#include +#include +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/mesh.h" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/postprocess.h" + using namespace Assimp; using namespace irr; diff --git a/code/IRRMeshLoader.cpp b/code/IRRMeshLoader.cpp index 1ee472a1c..ab9c0cb38 100644 --- a/code/IRRMeshLoader.cpp +++ b/code/IRRMeshLoader.cpp @@ -41,13 +41,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the IrrMesh importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_IRRMESH_IMPORTER #include "IRRMeshLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/mesh.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" +#include "Macros.h" + using namespace Assimp; using namespace irr; diff --git a/code/IRRShared.cpp b/code/IRRShared.cpp index f03239398..0e86b0586 100644 --- a/code/IRRShared.cpp +++ b/code/IRRShared.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Shared utilities for the IRR and IRRMESH loaders */ -#include "AssimpPCH.h" + //This section should be excluded only if both the Irrlicht AND the Irrlicht Mesh importers were omitted. #if !(defined(ASSIMP_BUILD_NO_IRR_IMPORTER) && defined(ASSIMP_BUILD_NO_IRRMESH_IMPORTER)) @@ -51,6 +51,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IRRShared.h" #include "ParsingUtils.h" #include "fast_atof.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/material.h" + using namespace Assimp; using namespace irr; diff --git a/code/Importer.cpp b/code/Importer.cpp index a9173cddc..9f3efb4ca 100644 --- a/code/Importer.cpp +++ b/code/Importer.cpp @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the CPP-API class #Importer */ -#include "AssimpPCH.h" #include "../include/assimp/version.h" // ------------------------------------------------------------------------------------------------ @@ -61,7 +60,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ------------------------------------------------------------------------------------------------ // Internal headers // ------------------------------------------------------------------------------------------------ -#include "Importer.h" +#include "Importer.h" +#include "BaseImporter.h" #include "BaseProcess.h" #include "DefaultIOStream.h" @@ -69,10 +69,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "DefaultProgressHandler.h" #include "GenericProperty.h" #include "ProcessHelper.h" -#include "ScenePreprocessor.h" +#include "ScenePreprocessor.h" +#include "ScenePrivate.h" #include "MemoryIOWrapper.h" #include "Profiler.h" -#include "TinyFormatter.h" +#include "TinyFormatter.h" +#include "Exceptional.h" +#include "Profiler.h" +#include +#include #ifndef ASSIMP_BUILD_NO_VALIDATEDS_PROCESS # include "ValidateDataStructure.h" diff --git a/code/Importer.h b/code/Importer.h index a7e556f1d..9d24d23a3 100644 --- a/code/Importer.h +++ b/code/Importer.h @@ -48,13 +48,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/matrix4x4.h" class aiScene; -class SharedPostProcessInfo; namespace Assimp { class ProgressHandler; class IOSystem; class BaseImporter; class BaseProcess; + class SharedPostProcessInfo; //! @cond never diff --git a/code/ImporterRegistry.cpp b/code/ImporterRegistry.cpp index 42b684a5a..2bd56fa1a 100644 --- a/code/ImporterRegistry.cpp +++ b/code/ImporterRegistry.cpp @@ -46,8 +46,6 @@ directly (unless you are adding new loaders), instead use the corresponding preprocessor flag to selectively disable formats. */ -#include "AssimpPCH.h" - // ------------------------------------------------------------------------------------------------ // Importers // (include_new_importers_here) diff --git a/code/ImproveCacheLocality.cpp b/code/ImproveCacheLocality.cpp index 59f8f3898..81617cc49 100644 --- a/code/ImproveCacheLocality.cpp +++ b/code/ImproveCacheLocality.cpp @@ -46,11 +46,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * .. although overdraw rduction isn't implemented yet ... */ -#include "AssimpPCH.h" + // internal headers #include "ImproveCacheLocality.h" -#include "VertexTriangleAdjacency.h" +#include "VertexTriangleAdjacency.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include +#include using namespace Assimp; diff --git a/code/JoinVerticesProcess.cpp b/code/JoinVerticesProcess.cpp index 817d1870c..1dbe6dd39 100644 --- a/code/JoinVerticesProcess.cpp +++ b/code/JoinVerticesProcess.cpp @@ -43,13 +43,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * for all imported meshes */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_JOINVERTICES_PROCESS #include "JoinVerticesProcess.h" #include "ProcessHelper.h" #include "Vertex.h" -#include "TinyFormatter.h" +#include "TinyFormatter.h" +#include +#include using namespace Assimp; // ------------------------------------------------------------------------------------------------ diff --git a/code/LWOAnimation.cpp b/code/LWOAnimation.cpp index f9308baef..27ea3e4dc 100644 --- a/code/LWOAnimation.cpp +++ b/code/LWOAnimation.cpp @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * implementation of LightWave envelopes of which I know. */ -#include "AssimpPCH.h" + #if (!defined ASSIMP_BUILD_NO_LWO_IMPORTER) && (!defined ASSIMP_BUILD_NO_LWS_IMPORTER) #include diff --git a/code/LWOBLoader.cpp b/code/LWOBLoader.cpp index 6c9b0560a..02f38182e 100644 --- a/code/LWOBLoader.cpp +++ b/code/LWOBLoader.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the LWO importer class for the older LWOB file formats, including materials */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_LWO_IMPORTER // Internal headers diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index 5dda7de9b..52d32eb16 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the LWO importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_LWO_IMPORTER // internal headers @@ -52,7 +52,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SGSpatialSort.h" #include "ByteSwap.h" #include "ProcessHelper.h" -#include "ConvertToLHProcess.h" +#include "ConvertToLHProcess.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include +#include + using namespace Assimp; diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index 0e8c5661c..b6cb4e460 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -42,12 +42,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the material oart of the LWO importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_LWO_IMPORTER // internal headers #include "LWOLoader.h" -#include "ByteSwap.h" +#include "ByteSwap.h" +#include + using namespace Assimp; diff --git a/code/LWSLoader.cpp b/code/LWSLoader.cpp index bfd4b395c..cb0daf2e9 100644 --- a/code/LWSLoader.cpp +++ b/code/LWSLoader.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the LWS importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_LWS_IMPORTER #include "LWSLoader.h" @@ -55,6 +55,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SkeletonMeshBuilder.h" #include "ConvertToLHProcess.h" #include "Importer.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/IOSystem.hpp" +#include + using namespace Assimp; diff --git a/code/LWSLoader.h b/code/LWSLoader.h index 15ecc2b4b..996c4c705 100644 --- a/code/LWSLoader.h +++ b/code/LWSLoader.h @@ -48,12 +48,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SceneCombiner.h" #include "BaseImporter.h" -struct IOSystem; struct aiImporterDesc; -struct Importer; -struct BatchLoader; namespace Assimp { + struct BatchLoader; + struct Importer; + struct IOSystem; + namespace LWS { // --------------------------------------------------------------------------- diff --git a/code/LimitBoneWeightsProcess.cpp b/code/LimitBoneWeightsProcess.cpp index f7a83a970..3f46dd100 100644 --- a/code/LimitBoneWeightsProcess.cpp +++ b/code/LimitBoneWeightsProcess.cpp @@ -40,9 +40,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** Implementation of the LimitBoneWeightsProcess post processing step */ -#include "AssimpPCH.h" -#include "LimitBoneWeightsProcess.h" +#include "LimitBoneWeightsProcess.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" +#include using namespace Assimp; diff --git a/code/MD2Loader.cpp b/code/MD2Loader.cpp index 3ecaa1f8b..52fbbddae 100644 --- a/code/MD2Loader.cpp +++ b/code/MD2Loader.cpp @@ -39,13 +39,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MD2_IMPORTER /** @file Implementation of the MD2 importer class */ #include "MD2Loader.h" #include "ByteSwap.h" -#include "MD2NormalTable.h" // shouldn't be included by other units +#include "MD2NormalTable.h" // shouldn't be included by other units +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/Importer.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" + + using namespace Assimp; using namespace Assimp::MD2; diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 49cecd1bf..39f9c2712 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * http://www.heppler.com/shader/shader/ */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MD3_IMPORTER #include "MD3Loader.h" @@ -57,7 +57,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "GenericProperty.h" #include "RemoveComments.h" #include "ParsingUtils.h" -#include "Importer.h" +#include "Importer.h" +#include "../include/assimp/DefaultLogger.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/MD5Loader.cpp b/code/MD5Loader.cpp index 858cdcacf..a34338ac8 100644 --- a/code/MD5Loader.cpp +++ b/code/MD5Loader.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the MD5 importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MD5_IMPORTER // internal headers @@ -51,7 +51,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "MD5Loader.h" #include "StringComparison.h" #include "fast_atof.h" -#include "SkeletonMeshBuilder.h" +#include "SkeletonMeshBuilder.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/scene.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" + + using namespace Assimp; diff --git a/code/MD5Parser.cpp b/code/MD5Parser.cpp index 2ca348b64..6be956593 100644 --- a/code/MD5Parser.cpp +++ b/code/MD5Parser.cpp @@ -42,14 +42,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file MD5Parser.cpp * @brief Implementation of the MD5 parser class */ -#include "AssimpPCH.h" + // internal headers #include "MD5Loader.h" #include "MaterialSystem.h" #include "fast_atof.h" #include "ParsingUtils.h" -#include "StringComparison.h" +#include "StringComparison.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/mesh.h" + + using namespace Assimp; using namespace Assimp::MD5; diff --git a/code/MDCLoader.cpp b/code/MDCLoader.cpp index f8b0cb8c2..b5ac51a5d 100644 --- a/code/MDCLoader.cpp +++ b/code/MDCLoader.cpp @@ -41,13 +41,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the MDC importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MDC_IMPORTER // internal headers #include "MDCLoader.h" #include "MD3FileData.h" -#include "MDCNormalTable.h" // shouldn't be included by other units +#include "MDCNormalTable.h" // shouldn't be included by other units +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/Importer.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; using namespace Assimp::MDC; diff --git a/code/MDLLoader.cpp b/code/MDLLoader.cpp index 1ce0347ef..b2de6bfe5 100644 --- a/code/MDLLoader.cpp +++ b/code/MDLLoader.cpp @@ -45,12 +45,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // internal headers -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MDL_IMPORTER #include "MDLLoader.h" #include "MDLDefaultColorMap.h" -#include "MD2FileData.h" +#include "MD2FileData.h" +#include "../include/assimp/Importer.hpp" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "Macros.h" +#include "qnan.h" + using namespace Assimp; diff --git a/code/MDLMaterialLoader.cpp b/code/MDLMaterialLoader.cpp index dfa438b3a..c02dd22f6 100644 --- a/code/MDLMaterialLoader.cpp +++ b/code/MDLMaterialLoader.cpp @@ -41,12 +41,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the material part of the MDL importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MDL_IMPORTER // internal headers #include "MDLLoader.h" -#include "MDLDefaultColorMap.h" +#include "MDLDefaultColorMap.h" +#include "../include/assimp/texture.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "qnan.h" +#include "../include/assimp/scene.h" + using namespace Assimp; static aiTexel* const bad_texel = reinterpret_cast(SIZE_MAX); diff --git a/code/MS3DLoader.cpp b/code/MS3DLoader.cpp index 455446bce..341ee6674 100644 --- a/code/MS3DLoader.cpp +++ b/code/MS3DLoader.cpp @@ -44,12 +44,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Written against http://chumbalum.swissquake.ch/ms3d/ms3dspec.txt */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_MS3D_IMPORTER // internal headers #include "MS3DLoader.h" -#include "StreamReader.h" +#include "StreamReader.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/IOSystem.hpp" + + using namespace Assimp; static const aiImporterDesc desc = { diff --git a/code/Macros.h b/code/Macros.h new file mode 100644 index 000000000..dfe0c20b4 --- /dev/null +++ b/code/Macros.h @@ -0,0 +1,49 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/* Helper macro to set a pointer to NULL in debug builds + */ +#if (defined ASSIMP_BUILD_DEBUG) +# define AI_DEBUG_INVALIDATE_PTR(x) x = NULL; +#else +# define AI_DEBUG_INVALIDATE_PTR(x) +#endif + diff --git a/code/MakeVerboseFormat.cpp b/code/MakeVerboseFormat.cpp index b85f04f86..19d0bdb10 100644 --- a/code/MakeVerboseFormat.cpp +++ b/code/MakeVerboseFormat.cpp @@ -41,8 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the post processing step "MakeVerboseFormat" */ -#include "AssimpPCH.h" + #include "MakeVerboseFormat.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" using namespace Assimp; diff --git a/code/MaterialSystem.cpp b/code/MaterialSystem.cpp index 1921c7f78..b2366b9fb 100644 --- a/code/MaterialSystem.cpp +++ b/code/MaterialSystem.cpp @@ -42,12 +42,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the material system of the library */ -#include "AssimpPCH.h" + #include "Hash.h" #include "fast_atof.h" #include "ParsingUtils.h" #include "MaterialSystem.h" +#include "../include/assimp/types.h" +#include "../include/assimp/material.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "Macros.h" + using namespace Assimp; diff --git a/code/NDOLoader.cpp b/code/NDOLoader.cpp index a8862d181..1704763b3 100644 --- a/code/NDOLoader.cpp +++ b/code/NDOLoader.cpp @@ -43,9 +43,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Implementation of the NDO importer class. */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_NDO_IMPORTER #include "NDOLoader.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "StreamReader.h" +#include using namespace Assimp; #define for_each BOOST_FOREACH diff --git a/code/NFFLoader.cpp b/code/NFFLoader.cpp index 968c79b5d..f180ba988 100644 --- a/code/NFFLoader.cpp +++ b/code/NFFLoader.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the STL importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_NFF_IMPORTER // internal headers @@ -49,7 +49,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include "StandardShapes.h" #include "fast_atof.h" -#include "RemoveComments.h" +#include "RemoveComments.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" +#include "qnan.h" + using namespace Assimp; diff --git a/code/OFFLoader.cpp b/code/OFFLoader.cpp index ca440a458..aeb44fa67 100644 --- a/code/OFFLoader.cpp +++ b/code/OFFLoader.cpp @@ -43,13 +43,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the OFF importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OFF_IMPORTER // internal headers #include "OFFLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" using namespace Assimp; diff --git a/code/ObjExporter.cpp b/code/ObjExporter.cpp index 7ebb55b3e..2fa4e7e40 100644 --- a/code/ObjExporter.cpp +++ b/code/ObjExporter.cpp @@ -38,13 +38,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_OBJ_EXPORTER #include "ObjExporter.h" -#include "../include/assimp/version.h" +#include "../include/assimp/version.h" +#include "../include/assimp/IOSystem.hpp" +#include +#include "Exceptional.h" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" +#include "StringComparison.h" +#include + using namespace Assimp; namespace Assimp { diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index b44ca4f05..0b208533b 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -39,13 +39,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OBJ_IMPORTER #include "DefaultIOSystem.h" #include "ObjFileImporter.h" #include "ObjFileParser.h" -#include "ObjFileData.h" +#include "ObjFileData.h" +#include +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/ai_assert.h" +#include "../include/assimp/DefaultLogger.hpp" + static const aiImporterDesc desc = { "Wavefront Object Importer", diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index 56229b7b0..91703e6d6 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -39,14 +39,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OBJ_IMPORTER #include "ObjFileMtlImporter.h" #include "ObjTools.h" #include "ObjFileData.h" #include "fast_atof.h" -#include "ParsingUtils.h" +#include "ParsingUtils.h" +#include "../include/assimp/material.h" +#include "../include/assimp/DefaultLogger.hpp" + namespace Assimp { diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index 34bb01e0a..7b8a6b4b7 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -39,7 +39,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OBJ_IMPORTER #include "ObjFileParser.h" @@ -48,7 +48,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ObjFileData.h" #include "ParsingUtils.h" #include "../include/assimp/types.h" -#include "DefaultIOSystem.h" +#include "DefaultIOSystem.h" +#include "BaseImporter.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/material.h" +#include "../include/assimp/Importer.hpp" + namespace Assimp { diff --git a/code/OgreBinarySerializer.cpp b/code/OgreBinarySerializer.cpp index 2908ca056..6b1ffe257 100644 --- a/code/OgreBinarySerializer.cpp +++ b/code/OgreBinarySerializer.cpp @@ -43,6 +43,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "OgreParsingUtils.h" #include "TinyFormatter.h" +#include "../include/assimp/DefaultLogger.hpp" + #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER diff --git a/code/OgreBinarySerializer.h b/code/OgreBinarySerializer.h index 1080b226a..138951f14 100644 --- a/code/OgreBinarySerializer.h +++ b/code/OgreBinarySerializer.h @@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER #include "OgreStructs.h" +#include "StreamReader.h" namespace Assimp { diff --git a/code/OgreImporter.cpp b/code/OgreImporter.cpp index fbb50cfc3..eca9d531d 100644 --- a/code/OgreImporter.cpp +++ b/code/OgreImporter.cpp @@ -40,11 +40,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER -#include "AssimpPCH.h" + #include "OgreImporter.h" #include "OgreBinarySerializer.h" -#include "OgreXmlSerializer.h" +#include "OgreXmlSerializer.h" +#include "../include/assimp/Importer.hpp" +#include static const aiImporterDesc desc = { "Ogre3D Mesh Importer", diff --git a/code/OgreImporter.h b/code/OgreImporter.h index 892696407..1b4b608f6 100644 --- a/code/OgreImporter.h +++ b/code/OgreImporter.h @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "OgreStructs.h" #include "OgreParsingUtils.h" +#include "../include/assimp/material.h" + namespace Assimp { namespace Ogre diff --git a/code/OgreMaterial.cpp b/code/OgreMaterial.cpp index 4ef4b44ec..cf8951549 100644 --- a/code/OgreMaterial.cpp +++ b/code/OgreMaterial.cpp @@ -38,17 +38,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER #include "OgreImporter.h" -#include "TinyFormatter.h" - +#include "TinyFormatter.h" +#include "../include/assimp/material.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" #include "fast_atof.h" #include -#include +#include +#include using namespace std; diff --git a/code/OgreStructs.cpp b/code/OgreStructs.cpp index 2009214cc..1e466d061 100644 --- a/code/OgreStructs.cpp +++ b/code/OgreStructs.cpp @@ -42,6 +42,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "OgreStructs.h" #include "TinyFormatter.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "Exceptional.h" + namespace Assimp { diff --git a/code/OgreStructs.h b/code/OgreStructs.h index 75cadf4b7..ce41ca732 100644 --- a/code/OgreStructs.h +++ b/code/OgreStructs.h @@ -43,8 +43,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER -#include "AssimpPCH.h" #include "MemoryIOWrapper.h" +#include +#include "../include/assimp/mesh.h" +#include +#include +#include + +struct aiNodeAnim; +struct aiAnimation; +struct aiNode; +struct aiMaterial; +struct aiScene; /** @note Parts of this implementation, for example enums, deserialization constants and logic has been copied directly with minor modifications from the MIT licensed Ogre3D code base. diff --git a/code/OgreXmlSerializer.cpp b/code/OgreXmlSerializer.cpp index ffda7967e..f72cc6e5c 100644 --- a/code/OgreXmlSerializer.cpp +++ b/code/OgreXmlSerializer.cpp @@ -43,6 +43,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "OgreParsingUtils.h" #include "TinyFormatter.h" +#include "../include/assimp/DefaultLogger.hpp" +#include #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER diff --git a/code/OptimizeGraph.cpp b/code/OptimizeGraph.cpp index fbb824c68..d418655bf 100644 --- a/code/OptimizeGraph.cpp +++ b/code/OptimizeGraph.cpp @@ -43,13 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the aiProcess_OptimizGraph step */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OPTIMIZEGRAPH_PROCESS -using namespace Assimp; #include "OptimizeGraph.h" #include "ProcessHelper.h" -#include "SceneCombiner.h" +#include "SceneCombiner.h" +#include "Exceptional.h" +#include + +using namespace Assimp; #define AI_RESERVED_NODE_NAME "$Reserved_And_Evil" diff --git a/code/OptimizeMeshes.cpp b/code/OptimizeMeshes.cpp index f19d110b1..cbd5ea693 100644 --- a/code/OptimizeMeshes.cpp +++ b/code/OptimizeMeshes.cpp @@ -43,14 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the aiProcess_OptimizeMeshes step */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_OPTIMIZEMESHES_PROCESS -using namespace Assimp; #include "OptimizeMeshes.h" #include "ProcessHelper.h" -#include "SceneCombiner.h" +#include "SceneCombiner.h" +#include "Exceptional.h" + +using namespace Assimp; static const unsigned int NotSet = 0xffffffff; static const unsigned int DeadBeef = 0xdeadbeef; diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index a214d1371..5375055d4 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -38,12 +38,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #if !defined(ASSIMP_BUILD_NO_EXPORT) && !defined(ASSIMP_BUILD_NO_PLY_EXPORTER) #include "PlyExporter.h" -#include "../include/assimp/version.h" +#include "../include/assimp/version.h" +#include "../include/assimp/IOSystem.hpp" +#include +#include "Exceptional.h" +#include "../include/assimp/scene.h" + using namespace Assimp; namespace Assimp { diff --git a/code/PlyLoader.cpp b/code/PlyLoader.cpp index d61c4e5a7..773c6f60e 100644 --- a/code/PlyLoader.cpp +++ b/code/PlyLoader.cpp @@ -43,11 +43,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the PLY importer class */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_PLY_IMPORTER // internal headers -#include "PlyLoader.h" +#include "PlyLoader.h" +#include "Macros.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/PlyParser.cpp b/code/PlyParser.cpp index 7b869ecd0..c11af1a0a 100644 --- a/code/PlyParser.cpp +++ b/code/PlyParser.cpp @@ -41,11 +41,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the PLY parser class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_PLY_IMPORTER #include "PlyLoader.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "ByteSwap.h" + using namespace Assimp; diff --git a/code/PostStepRegistry.cpp b/code/PostStepRegistry.cpp index 5593a7f41..c4d96b3b0 100644 --- a/code/PostStepRegistry.cpp +++ b/code/PostStepRegistry.cpp @@ -46,7 +46,6 @@ directly (unless you are adding new steps), instead use the corresponding preprocessor flag to selectively disable steps. */ -#include "AssimpPCH.h" #include "ProcessHelper.h" #ifndef ASSIMP_BUILD_NO_CALCTANGENTS_PROCESS diff --git a/code/PretransformVertices.cpp b/code/PretransformVertices.cpp index 007897c93..1c7a9a4e0 100644 --- a/code/PretransformVertices.cpp +++ b/code/PretransformVertices.cpp @@ -43,10 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the "PretransformVertices" post processing step */ -#include "AssimpPCH.h" + #include "PretransformVertices.h" #include "ProcessHelper.h" -#include "SceneCombiner.h" +#include "SceneCombiner.h" +#include "Exceptional.h" using namespace Assimp; diff --git a/code/ProcessHelper.cpp b/code/ProcessHelper.cpp index 9250b239e..70e883df4 100644 --- a/code/ProcessHelper.cpp +++ b/code/ProcessHelper.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /// @file ProcessHelper.cpp /** Implement shared utility functions for postprocessing steps */ -#include "AssimpPCH.h" + #include "ProcessHelper.h" diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index 2c87d2a82..8d8ebecb3 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -37,10 +37,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER -//#include +//#include #include "DefaultIOSystem.h" #include "Q3BSPFileImporter.h" #include "Q3BSPZipArchive.h" @@ -54,9 +54,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #include "../include/assimp/types.h" -#include "../include/assimp/mesh.h" -#include - +#include "../include/assimp/mesh.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/ai_assert.h" +#include +#include +#include "StringComparison.h" static const aiImporterDesc desc = { "Quake III BSP Importer", diff --git a/code/Q3BSPFileParser.cpp b/code/Q3BSPFileParser.cpp index 600a20f2b..0aa182037 100644 --- a/code/Q3BSPFileParser.cpp +++ b/code/Q3BSPFileParser.cpp @@ -37,7 +37,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER @@ -45,7 +45,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "DefaultIOSystem.h" #include "Q3BSPFileData.h" #include "Q3BSPZipArchive.h" -#include +#include +#include "../include/assimp/ai_assert.h" + namespace Assimp { diff --git a/code/Q3BSPZipArchive.cpp b/code/Q3BSPZipArchive.cpp index e683e63f8..ebbf77206 100644 --- a/code/Q3BSPZipArchive.cpp +++ b/code/Q3BSPZipArchive.cpp @@ -38,13 +38,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER #include "Q3BSPZipArchive.h" #include -#include +#include +#include "../include/assimp/ai_assert.h" + namespace Assimp { namespace Q3BSP { diff --git a/code/Q3DLoader.cpp b/code/Q3DLoader.cpp index 9fc3a80c2..393bd99fb 100644 --- a/code/Q3DLoader.cpp +++ b/code/Q3DLoader.cpp @@ -43,13 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Q3D importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_Q3D_IMPORTER // internal headers #include "Q3DLoader.h" #include "StreamReader.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" using namespace Assimp; diff --git a/code/RawLoader.cpp b/code/RawLoader.cpp index be6736307..b14ad2884 100644 --- a/code/RawLoader.cpp +++ b/code/RawLoader.cpp @@ -43,13 +43,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the RAW importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_RAW_IMPORTER // internal headers #include "RawLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/RemoveComments.cpp b/code/RemoveComments.cpp index a04624412..c92f8ea36 100644 --- a/code/RemoveComments.cpp +++ b/code/RemoveComments.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Defines the CommentRemover utility class */ -#include "AssimpPCH.h" #include "RemoveComments.h" #include "ParsingUtils.h" diff --git a/code/RemoveRedundantMaterials.cpp b/code/RemoveRedundantMaterials.cpp index b5052877b..2c760db0c 100644 --- a/code/RemoveRedundantMaterials.cpp +++ b/code/RemoveRedundantMaterials.cpp @@ -43,11 +43,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // internal headers -#include "AssimpPCH.h" + #include "RemoveRedundantMaterials.h" #include "ParsingUtils.h" #include "ProcessHelper.h" -#include "MaterialSystem.h" +#include "MaterialSystem.h" +#include using namespace Assimp; diff --git a/code/RemoveVCProcess.cpp b/code/RemoveVCProcess.cpp index 2643dea14..2b551bacf 100644 --- a/code/RemoveVCProcess.cpp +++ b/code/RemoveVCProcess.cpp @@ -42,8 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * any parts of the mesh structure from the imported data. */ -#include "AssimpPCH.h" + #include "RemoveVCProcess.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/SGSpatialSort.cpp b/code/SGSpatialSort.cpp index 2edf55697..9489b8b63 100644 --- a/code/SGSpatialSort.cpp +++ b/code/SGSpatialSort.cpp @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. vertices close to a given position. Special implementation for the 3ds loader handling smooth groups correctly */ -#include "AssimpPCH.h" #include "SGSpatialSort.h" using namespace Assimp; diff --git a/code/SMDLoader.cpp b/code/SMDLoader.cpp index 2bc73abec..31c8c4fda 100644 --- a/code/SMDLoader.cpp +++ b/code/SMDLoader.cpp @@ -43,13 +43,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the SMD importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_SMD_IMPORTER // internal headers #include "SMDLoader.h" #include "fast_atof.h" -#include "SkeletonMeshBuilder.h" +#include "SkeletonMeshBuilder.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/IOSystem.hpp" +#include +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; diff --git a/code/STEPFileEncoding.cpp b/code/STEPFileEncoding.cpp index e56a1ba42..3d2ab4933 100644 --- a/code/STEPFileEncoding.cpp +++ b/code/STEPFileEncoding.cpp @@ -41,11 +41,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file STEPFileEncoding.cpp * @brief STEP character handling, string unescaping */ -#include "AssimpPCH.h" #include "STEPFileEncoding.h" #include "fast_atof.h" #include "../contrib/ConvertUTF/ConvertUTF.h" +#include using namespace Assimp; diff --git a/code/STEPFileReader.cpp b/code/STEPFileReader.cpp index 96db1d433..113ab50a1 100644 --- a/code/STEPFileReader.cpp +++ b/code/STEPFileReader.cpp @@ -42,11 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the STEP file parser, which fills a * STEP::DB with data read from a file. */ -#include "AssimpPCH.h" + #include "STEPFileReader.h" #include "STEPFileEncoding.h" #include "TinyFormatter.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include using namespace Assimp; diff --git a/code/STLExporter.cpp b/code/STLExporter.cpp index e3df2fbff..e4e923b93 100644 --- a/code/STLExporter.cpp +++ b/code/STLExporter.cpp @@ -38,12 +38,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" + #if !defined(ASSIMP_BUILD_NO_EXPORT) && !defined(ASSIMP_BUILD_NO_STL_EXPORTER) #include "STLExporter.h" -#include "../include/assimp/version.h" +#include "../include/assimp/version.h" +#include "../include/assimp/IOSystem.hpp" +#include +#include "Exceptional.h" +#include "../include/assimp/scene.h" +#include "ByteSwap.h" using namespace Assimp; namespace Assimp { diff --git a/code/STLLoader.cpp b/code/STLLoader.cpp index 987de89d0..425c00c7d 100644 --- a/code/STLLoader.cpp +++ b/code/STLLoader.cpp @@ -41,13 +41,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the STL importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_STL_IMPORTER // internal headers #include "STLLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; diff --git a/code/SceneCombiner.cpp b/code/SceneCombiner.cpp index f9face9b1..ad631548c 100644 --- a/code/SceneCombiner.cpp +++ b/code/SceneCombiner.cpp @@ -49,11 +49,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OptimizeGraph step. */ // ---------------------------------------------------------------------------- -#include "AssimpPCH.h" #include "SceneCombiner.h" #include "fast_atof.h" #include "Hash.h" #include "time.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" +#include +#include "ScenePrivate.h" namespace Assimp { diff --git a/code/ScenePreprocessor.cpp b/code/ScenePreprocessor.cpp index feb515679..d51ef29e1 100644 --- a/code/ScenePreprocessor.cpp +++ b/code/ScenePreprocessor.cpp @@ -38,8 +38,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" #include "ScenePreprocessor.h" +#include "../include/assimp/ai_assert.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; diff --git a/code/SkeletonMeshBuilder.cpp b/code/SkeletonMeshBuilder.cpp index bca9792fd..3332cf259 100644 --- a/code/SkeletonMeshBuilder.cpp +++ b/code/SkeletonMeshBuilder.cpp @@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of a little class to construct a dummy mesh for a skeleton */ -#include "AssimpPCH.h" #include "../include/assimp/scene.h" #include "SkeletonMeshBuilder.h" diff --git a/code/SortByPTypeProcess.cpp b/code/SortByPTypeProcess.cpp index 51e9066ea..096b3fcf1 100644 --- a/code/SortByPTypeProcess.cpp +++ b/code/SortByPTypeProcess.cpp @@ -43,11 +43,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SortByPTypeProcess post-process steps. */ -#include "AssimpPCH.h" + // internal headers #include "ProcessHelper.h" -#include "SortByPTypeProcess.h" +#include "SortByPTypeProcess.h" +#include "Exceptional.h" using namespace Assimp; diff --git a/code/SpatialSort.cpp b/code/SpatialSort.cpp index 085862300..497548fa3 100644 --- a/code/SpatialSort.cpp +++ b/code/SpatialSort.cpp @@ -41,8 +41,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the helper class to quickly find vertices close to a given position */ -#include "AssimpPCH.h" -#include "SpatialSort.h" +#include "SpatialSort.h" +#include +#include "../include/assimp/ai_assert.h" using namespace Assimp; diff --git a/code/SplitByBoneCountProcess.cpp b/code/SplitByBoneCountProcess.cpp index 1bbbded20..dc868e3dd 100644 --- a/code/SplitByBoneCountProcess.cpp +++ b/code/SplitByBoneCountProcess.cpp @@ -42,12 +42,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /// @file SplitByBoneCountProcess.cpp /// Implementation of the SplitByBoneCount postprocessing step -#include "AssimpPCH.h" - // internal headers of the post-processing framework -#include "SplitByBoneCountProcess.h" +#include "SplitByBoneCountProcess.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/DefaultLogger.hpp" -#include +#include +#include using namespace Assimp; diff --git a/code/SplitLargeMeshes.cpp b/code/SplitLargeMeshes.cpp index d8c14ccb4..b8c917c37 100644 --- a/code/SplitLargeMeshes.cpp +++ b/code/SplitLargeMeshes.cpp @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the SplitLargeMeshes postprocessing step */ -#include "AssimpPCH.h" + // internal headers of the post-processing framework #include "SplitLargeMeshes.h" diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index 7b42abd78..a8af6d0c7 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -45,8 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * http://geometrictools.com/Documentation/PlatonicSolids.pdf. */ -#include "AssimpPCH.h" -#include "StandardShapes.h" +#include "StandardShapes.h" +#include "StringComparison.h" +#include +#include "../include/assimp/mesh.h" namespace Assimp { diff --git a/code/Subdivision.cpp b/code/Subdivision.cpp index 03200818c..0cb10bdb1 100644 --- a/code/Subdivision.cpp +++ b/code/Subdivision.cpp @@ -38,13 +38,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" - #include "Subdivision.h" #include "SceneCombiner.h" #include "SpatialSort.h" #include "ProcessHelper.h" -#include "Vertex.h" +#include "Vertex.h" +#include using namespace Assimp; void mydummy() {} diff --git a/code/TargetAnimation.cpp b/code/TargetAnimation.cpp index 82c4ae2ca..9f8db3a4d 100644 --- a/code/TargetAnimation.cpp +++ b/code/TargetAnimation.cpp @@ -38,9 +38,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" #include "TargetAnimation.h" -#include +#include +#include "../include/assimp/ai_assert.h" using namespace Assimp; diff --git a/code/TerragenLoader.cpp b/code/TerragenLoader.cpp index fc4ac64b8..458b8490d 100644 --- a/code/TerragenLoader.cpp +++ b/code/TerragenLoader.cpp @@ -41,10 +41,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the Terragen importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_TERRAGEN_IMPORTER -#include "TerragenLoader.h" +#include "TerragenLoader.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "StreamReader.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; diff --git a/code/TextureTransform.cpp b/code/TextureTransform.cpp index ca4f4ce73..b40f9250f 100644 --- a/code/TextureTransform.cpp +++ b/code/TextureTransform.cpp @@ -41,8 +41,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file A helper class that processes texture transformations */ -#include "AssimpPCH.h" -#include "TextureTransform.h" + +#include "TextureTransform.h" +#include "../include/assimp/postprocess.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/scene.h" + using namespace Assimp; diff --git a/code/TriangulateProcess.cpp b/code/TriangulateProcess.cpp index f34bcb3c5..cbe287c10 100644 --- a/code/TriangulateProcess.cpp +++ b/code/TriangulateProcess.cpp @@ -58,12 +58,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * a file */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_TRIANGULATE_PROCESS #include "TriangulateProcess.h" #include "ProcessHelper.h" -#include "PolyTools.h" +#include "PolyTools.h" +#include //#define AI_BUILD_TRIANGULATE_COLOR_FACE_WINDING //#define AI_BUILD_TRIANGULATE_DEBUG_POLYS diff --git a/code/UnrealLoader.cpp b/code/UnrealLoader.cpp index 599803610..6115693c4 100644 --- a/code/UnrealLoader.cpp +++ b/code/UnrealLoader.cpp @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * http://local.wasp.uwa.edu.au/~pbourke/dataformats/unreal/ */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_3D_IMPORTER @@ -54,7 +54,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "ParsingUtils.h" #include "fast_atof.h" -#include "ConvertToLHProcess.h" +#include "ConvertToLHProcess.h" +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include using namespace Assimp; diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index 937d3830e..98d16be5e 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -44,13 +44,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * the data structure returned by Assimp. */ -#include "AssimpPCH.h" + // internal headers #include "ValidateDataStructure.h" #include "BaseImporter.h" #include "fast_atof.h" #include "ProcessHelper.h" +#include // CRT headers #include diff --git a/code/AssimpPCH.cpp b/code/Version.cpp similarity index 90% rename from code/AssimpPCH.cpp rename to code/Version.cpp index 62df955de..75b5dbc72 100644 --- a/code/AssimpPCH.cpp +++ b/code/Version.cpp @@ -1,8 +1,9 @@ // Actually just a dummy, used by the compiler to build the precompiled header. -#include "AssimpPCH.h" #include "./../include/assimp/version.h" +#include "./../include/assimp/scene.h" +#include "ScenePrivate.h" static const unsigned int MajorVersion = 3; static const unsigned int MinorVersion = 1; @@ -100,32 +101,32 @@ ASSIMP_API aiScene::~aiScene() // To make sure we won't crash if the data is invalid it's // much better to check whether both mNumXXX and mXXX are // valid instead of relying on just one of them. - if (mNumMeshes && mMeshes) + if (mNumMeshes && mMeshes) for( unsigned int a = 0; a < mNumMeshes; a++) delete mMeshes[a]; delete [] mMeshes; - if (mNumMaterials && mMaterials) + if (mNumMaterials && mMaterials) for( unsigned int a = 0; a < mNumMaterials; a++) delete mMaterials[a]; delete [] mMaterials; - if (mNumAnimations && mAnimations) + if (mNumAnimations && mAnimations) for( unsigned int a = 0; a < mNumAnimations; a++) delete mAnimations[a]; delete [] mAnimations; - if (mNumTextures && mTextures) + if (mNumTextures && mTextures) for( unsigned int a = 0; a < mNumTextures; a++) delete mTextures[a]; delete [] mTextures; - if (mNumLights && mLights) + if (mNumLights && mLights) for( unsigned int a = 0; a < mNumLights; a++) delete mLights[a]; delete [] mLights; - if (mNumCameras && mCameras) + if (mNumCameras && mCameras) for( unsigned int a = 0; a < mNumCameras; a++) delete mCameras[a]; delete [] mCameras; diff --git a/code/VertexTriangleAdjacency.cpp b/code/VertexTriangleAdjacency.cpp index 79e2a2e0d..8ede90122 100644 --- a/code/VertexTriangleAdjacency.cpp +++ b/code/VertexTriangleAdjacency.cpp @@ -42,10 +42,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the VertexTriangleAdjacency helper class */ -#include "AssimpPCH.h" - // internal headers -#include "VertexTriangleAdjacency.h" +#include "VertexTriangleAdjacency.h" +#include "../include/assimp/mesh.h" + using namespace Assimp; diff --git a/code/XFileExporter.cpp b/code/XFileExporter.cpp index 2cd3c4d37..9cd8a9e99 100644 --- a/code/XFileExporter.cpp +++ b/code/XFileExporter.cpp @@ -39,18 +39,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_XFILE_EXPORTER #include "XFileExporter.h" #include "ConvertToLHProcess.h" #include "Bitmap.h" +#include "BaseImporter.h" #include "fast_atof.h" -#include "SceneCombiner.h" +#include "SceneCombiner.h" #include #include +#include +#include "../include/assimp/IOSystem.hpp" +#include "Exceptional.h" +#include "../include/assimp/scene.h" +#include "../include/assimp/light.h" + + using namespace Assimp; diff --git a/code/XFileExporter.h b/code/XFileExporter.h index 39932951c..9dd679e21 100644 --- a/code/XFileExporter.h +++ b/code/XFileExporter.h @@ -54,10 +54,11 @@ struct aiScene; struct aiNode; struct aiMesh; struct aiString; + +namespace Assimp +{ struct IOSystem; -namespace Assimp -{ /// Helper class to export a given scene to a X-file. /// Note: an xFile uses a left hand system. Assimp used a right hand system (OpenGL), therefore we have to transform everything diff --git a/code/XFileImporter.cpp b/code/XFileImporter.cpp index 6f16d7451..0a57f18b1 100644 --- a/code/XFileImporter.cpp +++ b/code/XFileImporter.cpp @@ -42,12 +42,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the XFile importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_X_IMPORTER #include "XFileImporter.h" #include "XFileParser.h" -#include "ConvertToLHProcess.h" +#include "ConvertToLHProcess.h" +#include "../include/assimp/IOSystem.hpp" +#include +#include "../include/assimp/scene.h" +#include "../include/assimp/DefaultLogger.hpp" +#include + using namespace Assimp; diff --git a/code/XFileParser.cpp b/code/XFileParser.cpp index 96fb89cae..c2a888870 100644 --- a/code/XFileParser.cpp +++ b/code/XFileParser.cpp @@ -41,12 +41,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the XFile parser helper class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_X_IMPORTER #include "XFileParser.h" #include "XFileHelper.h" -#include "fast_atof.h" +#include "fast_atof.h" +#include "Exceptional.h" +#include +#include +#include "ByteSwap.h" +#include "../include/assimp/DefaultLogger.hpp" + using namespace Assimp; using namespace Assimp::XFile; diff --git a/code/XGLLoader.cpp b/code/XGLLoader.cpp index b00c9a5f2..ca7cb1934 100644 --- a/code/XGLLoader.cpp +++ b/code/XGLLoader.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the XGL/ZGL importer class */ -#include "AssimpPCH.h" + #ifndef ASSIMP_BUILD_NO_XGL_IMPORTER #include "XGLLoader.h" @@ -49,7 +49,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast_atof.h" #include "StreamReader.h" -#include "MemoryIOWrapper.h" +#include "MemoryIOWrapper.h" +#include +#include "../include/assimp/mesh.h" +#include "../include/assimp/scene.h" + using namespace Assimp; using namespace irr; diff --git a/code/XGLLoader.h b/code/XGLLoader.h index 4857c8ff9..40148ab97 100644 --- a/code/XGLLoader.h +++ b/code/XGLLoader.h @@ -47,12 +47,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "irrXMLWrapper.h" #include "LogAux.h" -#include - -struct aiMesh; -struct aiMaterial; -struct aiLight; -struct aiNode; +#include +#include "../include/assimp/material.h" +#include "../include/assimp/Importer.hpp" +#include "../include/assimp/mesh.h" +#include "../include/assimp/light.h" + +struct aiNode; namespace Assimp { diff --git a/contrib/irrXML/irrXML.cpp b/contrib/irrXML/irrXML.cpp index 0840f7d16..eaaf2a264 100644 --- a/contrib/irrXML/irrXML.cpp +++ b/contrib/irrXML/irrXML.cpp @@ -5,7 +5,6 @@ // Need to include Assimp, too. We're using Assimp's version of fast_atof // so we need stdint.h. But no PCH. -#include "./../../code/AssimpPCH.h" #include "irrXML.h" #include "irrString.h" diff --git a/include/assimp/version.h b/include/assimp/version.h index 7d2bbdb31..d35a8914d 100644 --- a/include/assimp/version.h +++ b/include/assimp/version.h @@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef INCLUDED_AI_VERSION_H #define INCLUDED_AI_VERSION_H + +#include "defs.h" #ifdef __cplusplus extern "C" { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 00614bb2a..f4b67bad6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -47,8 +47,7 @@ SOURCE_GROUP( tests FILES ${TEST_SRCS} ) add_executable( unit unit/CCompilerTest.c unit/Main.cpp - unit/UnitTestPCH.cpp - unit/UnitTestPCH.h + ../code/Version.cpp ${TEST_SRCS} ) diff --git a/test/unit/Main.cpp b/test/unit/Main.cpp index 4c9b52cb6..92c953594 100644 --- a/test/unit/Main.cpp +++ b/test/unit/Main.cpp @@ -1,4 +1,5 @@ -#include "UnitTestPCH.h" +#include "UnitTestPCH.h" +#include "../../include/assimp/DefaultLogger.hpp" #include #include diff --git a/test/unit/UnitTestPCH.cpp b/test/unit/UnitTestPCH.cpp deleted file mode 100644 index 873454c2e..000000000 --- a/test/unit/UnitTestPCH.cpp +++ /dev/null @@ -1,3 +0,0 @@ - -// Unit used to build the precompiled header -#include "UnitTestPCH.h" \ No newline at end of file diff --git a/test/unit/UnitTestPCH.h b/test/unit/UnitTestPCH.h index b57f523f0..48be8b9cc 100644 --- a/test/unit/UnitTestPCH.h +++ b/test/unit/UnitTestPCH.h @@ -5,7 +5,7 @@ // #endif // We need to be sure to have the same STL settings as Assimp -#include + #include #include diff --git a/test/unit/utFindInvalidData.cpp b/test/unit/utFindInvalidData.cpp index 5c94ae6e7..a8a439b26 100644 --- a/test/unit/utFindInvalidData.cpp +++ b/test/unit/utFindInvalidData.cpp @@ -1,6 +1,7 @@ #include "UnitTestPCH.h" -#include +#include +#include "../../include/assimp/mesh.h" using namespace std; diff --git a/test/unit/utImporter.cpp b/test/unit/utImporter.cpp index d55791c81..44a7e1b0b 100644 --- a/test/unit/utImporter.cpp +++ b/test/unit/utImporter.cpp @@ -1,5 +1,7 @@ #include "UnitTestPCH.h" - + +#include "../../include/assimp/postprocess.h" +#include "../../include/assimp/scene.h" #include #include diff --git a/tools/assimp_cmd/CompareDump.cpp b/tools/assimp_cmd/CompareDump.cpp index 33db0eb3d..7445d8c78 100644 --- a/tools/assimp_cmd/CompareDump.cpp +++ b/tools/assimp_cmd/CompareDump.cpp @@ -54,7 +54,13 @@ const char* AICMD_MSG_CMPDUMP_HELP = #include "../../code/assbin_chunks.h" //////////////////////////////////////////////////////////////////////////////////////////////////// -#include "generic_inserter.hpp" +#include "generic_inserter.hpp" +#include +#include +#include +#include +#include +#include "../../include/assimp/ai_assert.h" // get << for aiString template diff --git a/tools/assimp_cmd/Main.h b/tools/assimp_cmd/Main.h index 4a45c9f4f..01bd74530 100644 --- a/tools/assimp_cmd/Main.h +++ b/tools/assimp_cmd/Main.h @@ -63,7 +63,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include #endif -#include <../code/AssimpPCH.h> /* to get stdint.h */ #ifdef ASSIMP_BUILD_NO_OWN_ZLIB #include #else diff --git a/tools/assimp_cmd/WriteDumb.cpp b/tools/assimp_cmd/WriteDumb.cpp index 185d4c4dc..bcaf03c46 100644 --- a/tools/assimp_cmd/WriteDumb.cpp +++ b/tools/assimp_cmd/WriteDumb.cpp @@ -57,7 +57,8 @@ const char* AICMD_MSG_DUMP_HELP = "\t -cfull Fires almost all post processing steps \n" ; -#include "../../code/assbin_chunks.h" +#include "../../code/assbin_chunks.h" +#include FILE* out = NULL; bool shortened = false; From 611778045dc69efe2253d4ddc599f69b993d37e8 Mon Sep 17 00:00:00 2001 From: abma Date: Thu, 16 Apr 2015 02:55:41 +0200 Subject: [PATCH 66/85] fix for upstream changes --- code/3DSConverter.cpp | 1 + code/3DSExporter.cpp | 1 + code/ACLoader.h | 8 +++---- code/AssbinExporter.cpp | 5 ++-- code/AssxmlExporter.cpp | 5 ++-- code/BaseImporter.cpp | 1 + code/Bitmap.h | 2 +- code/BlenderLoader.cpp | 2 ++ code/ColladaLoader.cpp | 2 ++ code/DefaultIOStream.h | 5 +--- code/Defines.h | 49 ++++++++++++++++++++++++++++++++++++++ code/IFCBoolean.cpp | 1 + code/IFCUtil.cpp | 1 + code/Importer.cpp | 1 + code/Importer.h | 2 +- code/MD3Loader.cpp | 2 ++ code/MDLMaterialLoader.cpp | 3 ++- code/ObjExporter.cpp | 1 + code/OgreParsingUtils.h | 1 + code/OpenGEXImporter.cpp | 3 ++- code/OpenGEXImporter.h | 3 +++ code/PlyExporter.cpp | 5 ++-- code/STLExporter.cpp | 3 ++- code/SceneCombiner.h | 2 +- code/StandardShapes.cpp | 1 + code/StreamReader.h | 1 + code/StringComparison.h | 1 + code/XFileExporter.cpp | 2 +- code/XFileExporter.h | 1 + code/XFileHelper.h | 1 + code/XFileImporter.cpp | 3 +++ code/XGLLoader.cpp | 2 ++ 32 files changed, 100 insertions(+), 21 deletions(-) create mode 100644 code/Defines.h diff --git a/code/3DSConverter.cpp b/code/3DSConverter.cpp index b33eec57f..d5a83461c 100644 --- a/code/3DSConverter.cpp +++ b/code/3DSConverter.cpp @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/DefaultLogger.hpp" #include "StringComparison.h" #include +#include using namespace Assimp; diff --git a/code/3DSExporter.cpp b/code/3DSExporter.cpp index ad2d6a963..b16a3b2c7 100644 --- a/code/3DSExporter.cpp +++ b/code/3DSExporter.cpp @@ -49,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StringComparison.h" #include "../include/assimp/IOSystem.hpp" #include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/Exporter.hpp" #include using namespace Assimp; diff --git a/code/ACLoader.h b/code/ACLoader.h index 20fa000ca..0f713dc99 100644 --- a/code/ACLoader.h +++ b/code/ACLoader.h @@ -49,10 +49,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" -class aiNode; -class aiMesh; -class aiMaterial; -class aiLight; +struct aiNode; +struct aiMesh; +struct aiMaterial; +struct aiLight; namespace Assimp { diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index 2b9ce53bc..9ab21def9 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -41,9 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ASSBIN exporter main code */ #include "assbin_chunks.h" -#include "./../include/assimp/version.h" +#include "../include/assimp/version.h" #include "../include/assimp/IOStream.hpp" -#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/Exporter.hpp" #include "ProcessHelper.h" #include "Exceptional.h" #include diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 7279fa398..7bab7b1fe 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -43,8 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "./../include/assimp/version.h" #include "ProcessHelper.h" -#include "../include/assimp/IOStream.hpp" -#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/IOStream.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/Exporter.hpp" #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include diff --git a/code/BaseImporter.cpp b/code/BaseImporter.cpp index aae15f3e5..3eb0826ae 100644 --- a/code/BaseImporter.cpp +++ b/code/BaseImporter.cpp @@ -55,6 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include using namespace Assimp; diff --git a/code/Bitmap.h b/code/Bitmap.h index 38e3f864c..582f39565 100644 --- a/code/Bitmap.h +++ b/code/Bitmap.h @@ -54,7 +54,7 @@ struct aiTexture; namespace Assimp { -struct IOStream; +class IOStream; class Bitmap { protected: diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index 5ae668d79..ae7df0b64 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -57,6 +57,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "MemoryIOWrapper.h" +#include + // zlib is needed for compressed blend files #ifndef ASSIMP_BUILD_NO_COMPRESSED_BLEND diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index a51adcbc9..2f59e161a 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -52,12 +52,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "fast_atof.h" #include "ParsingUtils.h" #include "SkeletonMeshBuilder.h" +#include "Defines.h" #include "time.h" #include #include "../include/assimp/DefaultLogger.hpp" #include "../include/assimp/Importer.hpp" #include +#include "Defines.h" using namespace Assimp; diff --git a/code/DefaultIOStream.h b/code/DefaultIOStream.h index 5adb21e1d..694527d81 100644 --- a/code/DefaultIOStream.h +++ b/code/DefaultIOStream.h @@ -45,10 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/assimp/IOStream.hpp" #include "../include/assimp/importerdesc.h" - -#if (!defined SIZE_MAX) -# define SIZE_MAX (~((size_t)0)) -#endif +#include "Defines.h" namespace Assimp { diff --git a/code/Defines.h b/code/Defines.h new file mode 100644 index 000000000..e1e444378 --- /dev/null +++ b/code/Defines.h @@ -0,0 +1,49 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +// We need those constants, workaround for any platforms where nobody defined them yet +#if (!defined SIZE_MAX) +# define SIZE_MAX (~((size_t)0)) +#endif + +#if (!defined UINT_MAX) +# define UINT_MAX (~((unsigned int)0)) +#endif + diff --git a/code/IFCBoolean.cpp b/code/IFCBoolean.cpp index 2bc7e9717..c5307121a 100644 --- a/code/IFCBoolean.cpp +++ b/code/IFCBoolean.cpp @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCUtil.h" #include "PolyTools.h" #include "ProcessHelper.h" +#include "Defines.h" #include #include diff --git a/code/IFCUtil.cpp b/code/IFCUtil.cpp index 9fb070325..dfaf19427 100644 --- a/code/IFCUtil.cpp +++ b/code/IFCUtil.cpp @@ -49,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCUtil.h" #include "PolyTools.h" #include "ProcessHelper.h" +#include "Defines.h" namespace Assimp { namespace IFC { diff --git a/code/Importer.cpp b/code/Importer.cpp index 9f3efb4ca..9c9bdbf8d 100644 --- a/code/Importer.cpp +++ b/code/Importer.cpp @@ -78,6 +78,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Profiler.h" #include #include +#include #ifndef ASSIMP_BUILD_NO_VALIDATEDS_PROCESS # include "ValidateDataStructure.h" diff --git a/code/Importer.h b/code/Importer.h index 9d24d23a3..c1f508fc4 100644 --- a/code/Importer.h +++ b/code/Importer.h @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/assimp/matrix4x4.h" -class aiScene; +struct aiScene; namespace Assimp { class ProgressHandler; diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 39f9c2712..9517747b2 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -63,6 +63,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/IOSystem.hpp" #include "../include/assimp/material.h" #include "../include/assimp/scene.h" +#include + using namespace Assimp; diff --git a/code/MDLMaterialLoader.cpp b/code/MDLMaterialLoader.cpp index c02dd22f6..6f5baee4e 100644 --- a/code/MDLMaterialLoader.cpp +++ b/code/MDLMaterialLoader.cpp @@ -50,8 +50,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/texture.h" #include "../include/assimp/IOSystem.hpp" #include "../include/assimp/DefaultLogger.hpp" -#include "qnan.h" #include "../include/assimp/scene.h" +#include "qnan.h" +#include "Defines.h" using namespace Assimp; diff --git a/code/ObjExporter.cpp b/code/ObjExporter.cpp index 64c11c3bb..099b337da 100644 --- a/code/ObjExporter.cpp +++ b/code/ObjExporter.cpp @@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ObjExporter.h" #include "../include/assimp/version.h" #include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/Exporter.hpp" #include #include "Exceptional.h" #include "../include/assimp/material.h" diff --git a/code/OgreParsingUtils.h b/code/OgreParsingUtils.h index 173a8589e..91dfecb00 100644 --- a/code/OgreParsingUtils.h +++ b/code/OgreParsingUtils.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include namespace Assimp { diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 9dd2197a7..1c85923ce 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -39,12 +39,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ASSIMP_BUILD_NO_OPENGEX_IMPORTER -#include "AssimpPCH.h" #include "OpenGEXImporter.h" #include "DefaultIOSystem.h" #include "MakeVerboseFormat.h" #include +#include "../include/assimp/scene.h" + #include diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index f5c328ff7..8e65a2536 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -43,13 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OPENGEX_IMPORTER #include "BaseImporter.h" +#include "../include/assimp/mesh.h" #include +#include namespace ODDLParser { class DDLNode; struct Context; } +struct aiNode; namespace Assimp { namespace OpenGEX { diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 88fb4607f..d790f9d31 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -43,11 +43,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if !defined(ASSIMP_BUILD_NO_EXPORT) && !defined(ASSIMP_BUILD_NO_PLY_EXPORTER) #include "PlyExporter.h" -#include "../include/assimp/version.h" -#include "../include/assimp/IOSystem.hpp" #include #include "Exceptional.h" #include "../include/assimp/scene.h" +#include "../include/assimp/version.h" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/Exporter.hpp" using namespace Assimp; diff --git a/code/STLExporter.cpp b/code/STLExporter.cpp index be424d60c..580620f94 100644 --- a/code/STLExporter.cpp +++ b/code/STLExporter.cpp @@ -45,9 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "STLExporter.h" #include "../include/assimp/version.h" #include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "../include/assimp/Exporter.hpp" #include #include "Exceptional.h" -#include "../include/assimp/scene.h" #include "ByteSwap.h" using namespace Assimp; diff --git a/code/SceneCombiner.h b/code/SceneCombiner.h index 71e1ba647..34337ed81 100644 --- a/code/SceneCombiner.h +++ b/code/SceneCombiner.h @@ -46,12 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/ai_assert.h" #include "../include/assimp/types.h" +#include "Defines.h" #include #include #include #include #include -#include "../include/assimp/Compiler/pstdint.h" struct aiScene; struct aiNode; diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index a8af6d0c7..e9b135421 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StandardShapes.h" #include "StringComparison.h" +#include "Defines.h" #include #include "../include/assimp/mesh.h" diff --git a/code/StreamReader.h b/code/StreamReader.h index 428fe084a..bb96a20ce 100644 --- a/code/StreamReader.h +++ b/code/StreamReader.h @@ -49,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Exceptional.h" #include #include "../include/assimp/IOStream.hpp" +#include "Defines.h" namespace Assimp { diff --git a/code/StringComparison.h b/code/StringComparison.h index 9d15a542c..1f0ab1d9b 100644 --- a/code/StringComparison.h +++ b/code/StringComparison.h @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include namespace Assimp { diff --git a/code/XFileExporter.cpp b/code/XFileExporter.cpp index c45beff1f..48f7e6697 100644 --- a/code/XFileExporter.cpp +++ b/code/XFileExporter.cpp @@ -52,8 +52,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include "../include/assimp/IOSystem.hpp" #include "Exceptional.h" +#include "../include/assimp/IOSystem.hpp" #include "../include/assimp/scene.h" #include "../include/assimp/light.h" diff --git a/code/XFileExporter.h b/code/XFileExporter.h index 4b0553c3d..b99856f29 100644 --- a/code/XFileExporter.h +++ b/code/XFileExporter.h @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/ai_assert.h" #include "../include/assimp/matrix4x4.h" +#include "../include/assimp/Exporter.hpp" #include struct aiScene; diff --git a/code/XFileHelper.h b/code/XFileHelper.h index 1b80b9d67..35a893ad7 100644 --- a/code/XFileHelper.h +++ b/code/XFileHelper.h @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/quaternion.h" #include "../include/assimp/mesh.h" #include "../include/assimp/anim.h" +#include "Defines.h" namespace Assimp { diff --git a/code/XFileImporter.cpp b/code/XFileImporter.cpp index 0a57f18b1..41b8b411f 100644 --- a/code/XFileImporter.cpp +++ b/code/XFileImporter.cpp @@ -53,6 +53,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/scene.h" #include "../include/assimp/DefaultLogger.hpp" #include +#include "Defines.h" +#include + using namespace Assimp; diff --git a/code/XGLLoader.cpp b/code/XGLLoader.cpp index 2d2c1ad90..8187b2b12 100644 --- a/code/XGLLoader.cpp +++ b/code/XGLLoader.cpp @@ -53,6 +53,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/assimp/mesh.h" #include "../include/assimp/scene.h" +#include + using namespace Assimp; From 1c1f3c25f8b454557222163fa903cdc1252c4ae0 Mon Sep 17 00:00:00 2001 From: abma Date: Thu, 16 Apr 2015 03:13:19 +0200 Subject: [PATCH 67/85] awww, merge error --- code/C4DImporter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/C4DImporter.cpp b/code/C4DImporter.cpp index 1c8f783fa..07ac29f70 100644 --- a/code/C4DImporter.cpp +++ b/code/C4DImporter.cpp @@ -639,3 +639,6 @@ unsigned int C4DImporter::ResolveMaterial(PolygonObject* obj) ai_assert((*it).second < mat_count); return (*it).second; } + +#endif // ASSIMP_BUILD_NO_C4D_IMPORTER + From 223a5385af9f81eaa4e1c1a39d42f28fc20525d3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 11:09:54 +0200 Subject: [PATCH 68/85] openddl-parser latest greatest Signed-off-by: Kim Kulling --- contrib/openddlparser/code/DDLNode.cpp | 27 ++++++++++- contrib/openddlparser/code/OpenDDLParser.cpp | 2 +- contrib/openddlparser/code/Value.cpp | 2 +- .../include/openddlparser/DDLNode.h | 4 +- .../include/openddlparser/OpenDDLCommon.h | 47 ++++++++++++------- .../include/openddlparser/OpenDDLParser.h | 2 +- .../openddlparser/OpenDDLParserUtils.h | 2 +- .../include/openddlparser/Value.h | 2 +- 8 files changed, 65 insertions(+), 23 deletions(-) diff --git a/contrib/openddlparser/code/DDLNode.cpp b/contrib/openddlparser/code/DDLNode.cpp index 24f0da9d1..e57119587 100644 --- a/contrib/openddlparser/code/DDLNode.cpp +++ b/contrib/openddlparser/code/DDLNode.cpp @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -138,6 +138,31 @@ Property *DDLNode::getProperties() const { return m_properties; } +bool DDLNode::hasProperty( const std::string &name ) { + const Property *prop( findPropertyByName( name ) ); + return ( ddl_nullptr != prop ); +} + +Property *DDLNode::findPropertyByName( const std::string &name ) { + if( name.empty() ) { + return ddl_nullptr; + } + + if( ddl_nullptr == m_properties ) { + return ddl_nullptr; + } + Property *current( m_properties ); + while( ddl_nullptr != current ) { + int res = strncmp( current->m_id->m_buffer, name.c_str(), name.size() ); + if( 0 == res ) { + return current; + } + current = current->m_next; + } + + return ddl_nullptr; +} + void DDLNode::setValue( Value *val ) { m_value = val; } diff --git a/contrib/openddlparser/code/OpenDDLParser.cpp b/contrib/openddlparser/code/OpenDDLParser.cpp index c1b36620c..3587dcb6f 100644 --- a/contrib/openddlparser/code/OpenDDLParser.cpp +++ b/contrib/openddlparser/code/OpenDDLParser.cpp @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/contrib/openddlparser/code/Value.cpp b/contrib/openddlparser/code/Value.cpp index c815d52a2..39f4c32b7 100644 --- a/contrib/openddlparser/code/Value.cpp +++ b/contrib/openddlparser/code/Value.cpp @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/contrib/openddlparser/include/openddlparser/DDLNode.h b/contrib/openddlparser/include/openddlparser/DDLNode.h index 93b447bb2..5ecf41e9a 100644 --- a/contrib/openddlparser/include/openddlparser/DDLNode.h +++ b/contrib/openddlparser/include/openddlparser/DDLNode.h @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -57,6 +57,8 @@ public: const std::string &getName() const; void setProperties( Property *prop ); Property *getProperties() const; + bool hasProperty( const std::string &name ); + Property *findPropertyByName( const std::string &name ); void setValue( Value *val ); Value *getValue() const; void setDataArrayList( DataArrayList *dtArrayList ); diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h b/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h index a42fbcf59..ab6d003b3 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLCommon.h @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -43,7 +43,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif // _WIN32 #define BEGIN_ODDLPARSER_NS namespace ODDLParser { -#define END_ODDLPARSER_NS } +#define END_ODDLPARSER_NS } // namespace ODDLParser #define USE_ODDLPARSER_NS using namespace ODDLParser; BEGIN_ODDLPARSER_NS @@ -63,10 +63,10 @@ struct Reference; struct Property; struct DataArrayList; -typedef char int8; -typedef short int16; -typedef int int32; -typedef long int64; +typedef char int8; +typedef short int16; +typedef int int32; +typedef long int64; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; @@ -113,6 +113,7 @@ private: const char *m_token; size_t m_size; }; + struct Name { NameType m_type; Identifier *m_id; @@ -122,6 +123,10 @@ struct Name { , m_id( id ) { // empty } + +private: + Name( const Name & ); + Name &operator = ( const Name& ); }; struct Reference { @@ -143,6 +148,10 @@ struct Reference { m_referencedName[ i ] = name; } } + +private: + Reference( const Reference & ); + Reference &operator = ( const Reference & ); }; struct Identifier { @@ -154,6 +163,10 @@ struct Identifier { , m_buffer( buffer ) { // empty } + +private: + Identifier( const Identifier & ); + Identifier &operator = ( const Identifier & ); }; struct Property { @@ -169,6 +182,10 @@ struct Property { , m_next( ddl_nullptr ) { // empty } + +private: + Property( const Property & ); + Property &operator = ( const Property & ); }; struct DataArrayList { @@ -182,6 +199,11 @@ struct DataArrayList { , m_next( ddl_nullptr ) { // empty } + +private: + DataArrayList( const DataArrayList & ); + DataArrayList &operator = ( const DataArrayList & ); + }; struct Context { @@ -191,17 +213,10 @@ struct Context { : m_root( ddl_nullptr ) { // empty } -}; -struct BufferIt { - std::vector m_buffer; - size_t m_idx; - - BufferIt( const std::vector &buffer ) - : m_buffer( buffer ) - , m_idx( 0 ) { - // empty - } +private: + Context( const Context & ); + Context &operator = ( const Context & ); }; END_ODDLPARSER_NS diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLParser.h b/contrib/openddlparser/include/openddlparser/OpenDDLParser.h index 068c028b7..3ba68370f 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLParser.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLParser.h @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h index a4c0f2180..ef8d1dceb 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/contrib/openddlparser/include/openddlparser/Value.h b/contrib/openddlparser/include/openddlparser/Value.h index a11b823a3..bb974fb74 100644 --- a/contrib/openddlparser/include/openddlparser/Value.h +++ b/contrib/openddlparser/include/openddlparser/Value.h @@ -1,7 +1,7 @@ /*----------------------------------------------------------------------------------------------- The MIT License (MIT) -Copyright (c) 2014 Kim Kulling +Copyright (c) 2014-2015 Kim Kulling Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From ead3e8d275b729231beb2e53f946cba0ac3dd84c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 11:10:12 +0200 Subject: [PATCH 69/85] first version of material handling for opengex Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 49 ++++++++++++++++++++++++++++++++++++++++ code/OpenGEXImporter.h | 2 ++ 2 files changed, 51 insertions(+) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 9dd2197a7..b80c4738d 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -217,6 +217,7 @@ OpenGEXImporter::OpenGEXImporter() , m_ctx( NULL ) , m_currentNode( NULL ) , m_currentMesh( NULL ) +, m_currentMaterial( NULL ) , m_nodeStack() , m_unresolvedRefStack() { // empty @@ -722,14 +723,62 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * } } +//------------------------------------------------------------------------------------------------ +static void getColorRGBA( aiColor3D *pColor, Value *data ) { + if( NULL == pColor || NULL == data ) { + return; + } + + pColor->r = data->getFloat(); + data = data->getNext(); + pColor->g = data->getFloat(); + data = data->getNext(); + pColor->b = data->getFloat(); + data = data->getNext(); +} + +//------------------------------------------------------------------------------------------------ +enum ColorType { + NoneColor = 0, + DiffuseColor +}; + +//------------------------------------------------------------------------------------------------ +static ColorType getColorType( Identifier *id ) { + const int res(strncmp("diffuse", id->m_buffer, id->m_len ) ); + if( 0 == res ) { + return DiffuseColor; + } + + return NoneColor; +} + //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + m_currentMaterial = new aiMaterial; + m_materialCache.push_back( m_currentMaterial ); + + handleNodes( node, pScene ); } //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + if( NULL == node ) { + return; + } + Property *colorProp = node->getProperties(); + if( NULL != colorProp ) { + if( NULL != colorProp->m_id ) { + ColorType type( getColorType( colorProp->m_primData ) ); + if( type == DiffuseColor ) { + aiColor3D *col = new aiColor3D; + getColorRGBA( col, node->getValue() ); + m_currentMaterial->AddProperty( col, 1, AI_MATKEY_COLOR_DIFFUSE ); + } + } + } } //------------------------------------------------------------------------------------------------ diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index f5c328ff7..0d0d8f2f5 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -174,6 +174,8 @@ private: aiNode *m_currentNode; VertexContainer m_currentVertices; aiMesh *m_currentMesh; + aiMaterial *m_currentMaterial; + std::vector m_materialCache; std::vector m_nodeStack; std::vector m_unresolvedRefStack; }; From 02ee0028783a480e52ec708957aa88055ad514f7 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 11:38:53 +0200 Subject: [PATCH 70/85] fix build for vs2013 Signed-off-by: Kim Kulling --- code/IRRShared.h | 3 +- code/LWSLoader.h | 496 +++++++++++++++++++-------------------- code/MDLFileData.h | 2 +- code/NDOLoader.cpp | 10 +- code/NDOLoader.h | 5 +- code/OpenGEXImporter.cpp | 4 +- code/OpenGEXImporter.h | 1 + code/SceneCombiner.cpp | 4 +- code/SceneCombiner.h | 2 + code/fast_atof.h | 4 +- 10 files changed, 268 insertions(+), 263 deletions(-) diff --git a/code/IRRShared.h b/code/IRRShared.h index 55745dadd..2f1f7022a 100644 --- a/code/IRRShared.h +++ b/code/IRRShared.h @@ -10,7 +10,8 @@ #include "irrXMLWrapper.h" #include "BaseImporter.h" #include -class aiMaterial; + +struct aiMaterial; namespace Assimp { diff --git a/code/LWSLoader.h b/code/LWSLoader.h index 996c4c705..642c178ba 100644 --- a/code/LWSLoader.h +++ b/code/LWSLoader.h @@ -1,249 +1,249 @@ -/* -Open Asset Import Library (assimp) ----------------------------------------------------------------------- - -Copyright (c) 2006-2012, assimp team -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------- -*/ - -/** @file LWSLoader.h - * @brief Declaration of the LightWave scene importer class. - */ -#ifndef AI_LWSLOADER_H_INCLUDED -#define AI_LWSLOADER_H_INCLUDED - -#include "LWOFileData.h" -#include "SceneCombiner.h" -#include "BaseImporter.h" - -struct aiImporterDesc; - -namespace Assimp { - struct BatchLoader; - struct Importer; - struct IOSystem; +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- - namespace LWS { - -// --------------------------------------------------------------------------- -/** Represents an element in a LWS file. - * - * This can either be a single data line - or a data - * group - { name ... n } - */ -class Element -{ -public: - Element() - {} - - // first: name, second: rest - std::string tokens[2]; - std::list children; - - //! Recursive parsing function - void Parse (const char*& buffer); -}; - -#define AI_LWS_MASK (0xffffffff >> 4u) - -// --------------------------------------------------------------------------- -/** Represents a LWS scenegraph element - */ -struct NodeDesc -{ - NodeDesc() - : number (0) - , parent (0) - , name ("") - , isPivotSet (false) - , lightColor (1.f,1.f,1.f) - , lightIntensity (1.f) - , lightType (0) - , lightFalloffType (0) - , lightConeAngle (45.f) - , parent_resolved (NULL) - {} - - enum { - - OBJECT = 1, - LIGHT = 2, - CAMERA = 3, - BONE = 4 - } type; // type of node - - // if object: path - std::string path; - unsigned int id; - - // number of object - unsigned int number; - - // index of parent index - unsigned int parent; - - // lights & cameras & dummies: name - const char* name; - - // animation channels - std::list< LWO::Envelope > channels; - - // position of pivot point - aiVector3D pivotPos; - bool isPivotSet; - - - - // color of light source - aiColor3D lightColor; - - // intensity of light source - float lightIntensity; - - // type of light source - unsigned int lightType; - - // falloff type of light source - unsigned int lightFalloffType; - - // cone angle of (spot) light source - float lightConeAngle; - - // soft cone angle of (spot) light source - float lightEdgeAngle; - - - - // list of resolved children - std::list< NodeDesc* > children; - - // resolved parent node - NodeDesc* parent_resolved; - - - // for std::find() - bool operator == (unsigned int num) const { - if (!num) - return false; - unsigned int _type = num >> 28u; - - return _type == static_cast(type) && (num & AI_LWS_MASK) == number; - } -}; - -} // end namespace LWS - -// --------------------------------------------------------------------------- -/** LWS (LightWave Scene Format) importer class. - * - * This class does heavily depend on the LWO importer class. LWS files - * contain mainly descriptions how LWO objects are composed together - * in a scene. -*/ -class LWSImporter : public BaseImporter -{ -public: - LWSImporter(); - ~LWSImporter(); - - -public: - - // ------------------------------------------------------------------- - // Check whether we can read a specific file - bool CanRead( const std::string& pFile, IOSystem* pIOHandler, - bool checkSig) const; - -protected: - - // ------------------------------------------------------------------- - // Get list of supported extensions - const aiImporterDesc* GetInfo () const; - - // ------------------------------------------------------------------- - // Import file into given scene data structure - void InternReadFile( const std::string& pFile, aiScene* pScene, - IOSystem* pIOHandler); - - // ------------------------------------------------------------------- - // Setup import properties - void SetupProperties(const Importer* pImp); - -private: - - - // ------------------------------------------------------------------- - // Read an envelope description - void ReadEnvelope(const LWS::Element& dad, LWO::Envelope& out ); - - // ------------------------------------------------------------------- - // Read an envelope description for the older LW file format - void ReadEnvelope_Old(std::list< LWS::Element >::const_iterator& it, - const std::list< LWS::Element >::const_iterator& end, - LWS::NodeDesc& nodes, - unsigned int version); - - // ------------------------------------------------------------------- - // Setup a nice name for a node - void SetupNodeName(aiNode* nd, LWS::NodeDesc& src); - - // ------------------------------------------------------------------- - // Recursively build the scenegraph - void BuildGraph(aiNode* nd, - LWS::NodeDesc& src, - std::vector& attach, - BatchLoader& batch, - aiCamera**& camOut, - aiLight**& lightOut, - std::vector& animOut); - - // ------------------------------------------------------------------- - // Try several dirs until we find the right location of a LWS file. - std::string FindLWOFile(const std::string& in); - -private: - - bool configSpeedFlag; - IOSystem* io; - - double first,last,fps; - - bool noSkeletonMesh; -}; - -} // end of namespace Assimp - -#endif // AI_LWSIMPORTER_H_INC +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file LWSLoader.h + * @brief Declaration of the LightWave scene importer class. + */ +#ifndef AI_LWSLOADER_H_INCLUDED +#define AI_LWSLOADER_H_INCLUDED + +#include "LWOFileData.h" +#include "SceneCombiner.h" +#include "BaseImporter.h" + +struct aiImporterDesc; + +namespace Assimp { + class BatchLoader; + class Importer; + class IOSystem; + + namespace LWS { + +// --------------------------------------------------------------------------- +/** Represents an element in a LWS file. + * + * This can either be a single data line - or a data + * group - { name ... n } + */ +class Element +{ +public: + Element() + {} + + // first: name, second: rest + std::string tokens[2]; + std::list children; + + //! Recursive parsing function + void Parse (const char*& buffer); +}; + +#define AI_LWS_MASK (0xffffffff >> 4u) + +// --------------------------------------------------------------------------- +/** Represents a LWS scenegraph element + */ +struct NodeDesc +{ + NodeDesc() + : number (0) + , parent (0) + , name ("") + , isPivotSet (false) + , lightColor (1.f,1.f,1.f) + , lightIntensity (1.f) + , lightType (0) + , lightFalloffType (0) + , lightConeAngle (45.f) + , parent_resolved (NULL) + {} + + enum { + + OBJECT = 1, + LIGHT = 2, + CAMERA = 3, + BONE = 4 + } type; // type of node + + // if object: path + std::string path; + unsigned int id; + + // number of object + unsigned int number; + + // index of parent index + unsigned int parent; + + // lights & cameras & dummies: name + const char* name; + + // animation channels + std::list< LWO::Envelope > channels; + + // position of pivot point + aiVector3D pivotPos; + bool isPivotSet; + + + + // color of light source + aiColor3D lightColor; + + // intensity of light source + float lightIntensity; + + // type of light source + unsigned int lightType; + + // falloff type of light source + unsigned int lightFalloffType; + + // cone angle of (spot) light source + float lightConeAngle; + + // soft cone angle of (spot) light source + float lightEdgeAngle; + + + + // list of resolved children + std::list< NodeDesc* > children; + + // resolved parent node + NodeDesc* parent_resolved; + + + // for std::find() + bool operator == (unsigned int num) const { + if (!num) + return false; + unsigned int _type = num >> 28u; + + return _type == static_cast(type) && (num & AI_LWS_MASK) == number; + } +}; + +} // end namespace LWS + +// --------------------------------------------------------------------------- +/** LWS (LightWave Scene Format) importer class. + * + * This class does heavily depend on the LWO importer class. LWS files + * contain mainly descriptions how LWO objects are composed together + * in a scene. +*/ +class LWSImporter : public BaseImporter +{ +public: + LWSImporter(); + ~LWSImporter(); + + +public: + + // ------------------------------------------------------------------- + // Check whether we can read a specific file + bool CanRead( const std::string& pFile, IOSystem* pIOHandler, + bool checkSig) const; + +protected: + + // ------------------------------------------------------------------- + // Get list of supported extensions + const aiImporterDesc* GetInfo () const; + + // ------------------------------------------------------------------- + // Import file into given scene data structure + void InternReadFile( const std::string& pFile, aiScene* pScene, + IOSystem* pIOHandler); + + // ------------------------------------------------------------------- + // Setup import properties + void SetupProperties(const Importer* pImp); + +private: + + + // ------------------------------------------------------------------- + // Read an envelope description + void ReadEnvelope(const LWS::Element& dad, LWO::Envelope& out ); + + // ------------------------------------------------------------------- + // Read an envelope description for the older LW file format + void ReadEnvelope_Old(std::list< LWS::Element >::const_iterator& it, + const std::list< LWS::Element >::const_iterator& end, + LWS::NodeDesc& nodes, + unsigned int version); + + // ------------------------------------------------------------------- + // Setup a nice name for a node + void SetupNodeName(aiNode* nd, LWS::NodeDesc& src); + + // ------------------------------------------------------------------- + // Recursively build the scenegraph + void BuildGraph(aiNode* nd, + LWS::NodeDesc& src, + std::vector& attach, + BatchLoader& batch, + aiCamera**& camOut, + aiLight**& lightOut, + std::vector& animOut); + + // ------------------------------------------------------------------- + // Try several dirs until we find the right location of a LWS file. + std::string FindLWOFile(const std::string& in); + +private: + + bool configSpeedFlag; + IOSystem* io; + + double first,last,fps; + + bool noSkeletonMesh; +}; + +} // end of namespace Assimp + +#endif // AI_LWSIMPORTER_H_INC diff --git a/code/MDLFileData.h b/code/MDLFileData.h index 366d8b1b2..428cbeee7 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -59,7 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -class aiMaterial; +struct aiMaterial; namespace Assimp { namespace MDL { diff --git a/code/NDOLoader.cpp b/code/NDOLoader.cpp index 1704763b3..778ca426a 100644 --- a/code/NDOLoader.cpp +++ b/code/NDOLoader.cpp @@ -46,11 +46,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_NDO_IMPORTER #include "NDOLoader.h" -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/IOSystem.hpp" -#include "../include/assimp/scene.h" -#include "StreamReader.h" -#include +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "StreamReader.h" +#include using namespace Assimp; #define for_each BOOST_FOREACH diff --git a/code/NDOLoader.h b/code/NDOLoader.h index 3c569f217..350fa5ccc 100644 --- a/code/NDOLoader.h +++ b/code/NDOLoader.h @@ -50,12 +50,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -class IOSystem; -class Importer; + struct aiImporterDesc; struct aiScene; namespace Assimp { + class IOSystem; + class Importer; // --------------------------------------------------------------------------- /** @brief Importer class to load meshes from Nendo. diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 251b5cc7e..596eff03b 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -772,12 +772,12 @@ void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScen Property *colorProp = node->getProperties(); if( NULL != colorProp ) { if( NULL != colorProp->m_id ) { - ColorType type( getColorType( colorProp->m_primData ) ); +/* ColorType type( getColorType( colorProp->m_primData ) ); if( type == DiffuseColor ) { aiColor3D *col = new aiColor3D; getColorRGBA( col, node->getValue() ); m_currentMaterial->AddProperty( col, 1, AI_MATKEY_COLOR_DIFFUSE ); - } + }*/ } } } diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index 58b55e3d8..c8236eaf3 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -53,6 +53,7 @@ namespace ODDLParser { struct Context; } struct aiNode; +struct aiMaterial; namespace Assimp { namespace OpenGEX { diff --git a/code/SceneCombiner.cpp b/code/SceneCombiner.cpp index 087a2a4c8..eaca35cd6 100644 --- a/code/SceneCombiner.cpp +++ b/code/SceneCombiner.cpp @@ -54,9 +54,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Hash.h" #include "time.h" #include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/scene.h" +#include "../include/assimp/scene.h" #include -#include "ScenePrivate.h" +#include "ScenePrivate.h" namespace Assimp { diff --git a/code/SceneCombiner.h b/code/SceneCombiner.h index 34337ed81..5a229308b 100644 --- a/code/SceneCombiner.h +++ b/code/SceneCombiner.h @@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +//#include "../include/assimp/Compiler/pstdint.h" + #include struct aiScene; diff --git a/code/fast_atof.h b/code/fast_atof.h index 81b54d6d2..794e95fb3 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -21,8 +21,8 @@ #include #include "StringComparison.h" -#include "../include/assimp/Compiler/pstdint.h" - +//#include "../include/assimp/Compiler/pstdint.h" +#include namespace Assimp { From e4b84ff48aec90f9cdc89dd26795d7a4dabbee9c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 11:47:14 +0200 Subject: [PATCH 71/85] fix mem leak. Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 596eff03b..7a4525833 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -772,12 +772,6 @@ void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScen Property *colorProp = node->getProperties(); if( NULL != colorProp ) { if( NULL != colorProp->m_id ) { -/* ColorType type( getColorType( colorProp->m_primData ) ); - if( type == DiffuseColor ) { - aiColor3D *col = new aiColor3D; - getColorRGBA( col, node->getValue() ); - m_currentMaterial->AddProperty( col, 1, AI_MATKEY_COLOR_DIFFUSE ); - }*/ } } } From 97946e25c9a3b10b2c7a89c742128e4f3bb5178c Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 12:09:06 +0200 Subject: [PATCH 72/85] fix travis build Signed-off-by: Kim Kulling --- code/fast_atof.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/fast_atof.h b/code/fast_atof.h index 794e95fb3..54e98eb3a 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -21,8 +21,14 @@ #include #include "StringComparison.h" -//#include "../include/assimp/Compiler/pstdint.h" -#include + + +#ifdef _MSC_VER +# include +#else +#include "../include/assimp/Compiler/pstdint.h" +#endif + namespace Assimp { From d12868adc446cf680b9c7e056f3f081ef5bd63c3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 16 Apr 2015 12:32:35 +0200 Subject: [PATCH 73/85] use correct type in forward declaration. Signed-off-by: Kim Kulling --- code/AssbinLoader.h | 20 ++++++++++---------- code/BaseImporter.h | 6 +++--- code/FBXConverter.h | 2 +- code/XFileExporter.h | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/code/AssbinLoader.h b/code/AssbinLoader.h index 1bcd2711b..d13e9f854 100644 --- a/code/AssbinLoader.h +++ b/code/AssbinLoader.h @@ -48,16 +48,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" -class aiMesh; -class aiNode; -class aiBone; -class aiMaterial; -class aiMaterialProperty; -class aiNodeAnim; -class aiAnimation; -class aiTexture; -class aiLight; -class aiCamera; +struct aiMesh; +struct aiNode; +struct aiBone; +struct aiMaterial; +struct aiMaterialProperty; +struct aiNodeAnim; +struct aiAnimation; +struct aiTexture; +struct aiLight; +struct aiCamera; #ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER diff --git a/code/BaseImporter.h b/code/BaseImporter.h index 06b013f5e..81e2c70b8 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -49,17 +49,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "../include/assimp/types.h" -#include "../include/assimp/ProgressHandler.hpp" +#include "../include/assimp/ProgressHandler.hpp" struct aiScene; namespace Assimp { - + class Importer; class IOSystem; class BaseProcess; class SharedPostProcessInfo; -class IOStream; +class IOStream; // utility to do char4 to uint32 in a portable manner diff --git a/code/FBXConverter.h b/code/FBXConverter.h index b6250451d..759174b56 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_CONVERTER_H #define INCLUDED_AI_FBX_CONVERTER_H -class aiScene; +struct aiScene; namespace Assimp { namespace FBX { diff --git a/code/XFileExporter.h b/code/XFileExporter.h index b99856f29..22c236cf5 100644 --- a/code/XFileExporter.h +++ b/code/XFileExporter.h @@ -56,9 +56,9 @@ struct aiNode; struct aiMesh; struct aiString; -namespace Assimp -{ -struct IOSystem; +namespace Assimp { + +class IOSystem; /// Helper class to export a given scene to a X-file. From fa626aa8557021b18ed321577f2abc265df08f2a Mon Sep 17 00:00:00 2001 From: David Jordan Date: Thu, 16 Apr 2015 18:01:24 -0400 Subject: [PATCH 74/85] Added NaN check when outputting normals in PLY exporter, to avoid outputting '-1.#IND' --- code/PlyExporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 692b02668..a1479ee32 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -216,7 +216,7 @@ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) m->mVertices[i].z ; if(components & PLY_EXPORT_HAS_NORMALS) { - if (m->HasNormals()) { + if (m->HasNormals() && is_not_qnan(m->mNormals[i].x)) { mOutput << " " << m->mNormals[i].x << " " << m->mNormals[i].y << From f00101f496939d1726935c76e9da55f220df7d99 Mon Sep 17 00:00:00 2001 From: David Jordan Date: Thu, 16 Apr 2015 21:30:50 -0400 Subject: [PATCH 75/85] Added include of qnan.h (now that AssimpPCH.h include was taken out) --- code/PlyExporter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 72c95e884..32cb61058 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -48,7 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/scene.h" #include "../include/assimp/version.h" #include "../include/assimp/IOSystem.hpp" -#include "../include/assimp/Exporter.hpp" +#include "../include/assimp/Exporter.hpp" +#include "qnan.h" using namespace Assimp; From f435712273a7bfec295e341e1d19910d837b4303 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Fri, 17 Apr 2015 06:42:58 +0200 Subject: [PATCH 76/85] Fix Mac build issues (clang 6.0 compiling x86_64) --- code/ObjFileMtlImporter.cpp | 1 + code/Q3BSPZipArchive.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index 91703e6d6..bef8e478e 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -42,6 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OBJ_IMPORTER +#include #include "ObjFileMtlImporter.h" #include "ObjTools.h" #include "ObjFileData.h" diff --git a/code/Q3BSPZipArchive.cpp b/code/Q3BSPZipArchive.cpp index ebbf77206..a418bf0c6 100644 --- a/code/Q3BSPZipArchive.cpp +++ b/code/Q3BSPZipArchive.cpp @@ -140,11 +140,11 @@ zlib_filefunc_def IOSystem2Unzip::get(IOSystem* pIOHandler) { ZipFile::ZipFile(size_t size) : m_Size(size) { ai_assert(m_Size != 0); - m_Buffer = std::malloc(m_Size); + m_Buffer = malloc(m_Size); } ZipFile::~ZipFile() { - std::free(m_Buffer); + free(m_Buffer); m_Buffer = NULL; } From 76dd9467b292bcc1aad0fe678df6b3bd587eadde Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 17 Apr 2015 20:02:55 +0200 Subject: [PATCH 77/85] fix win32-build for assimp_viewer . Signed-off-by: Kim Kulling --- .gitignore | 1 + code/StringComparison.h | 2 + tools/assimp_view/AnimEvaluator.cpp | 1 - tools/assimp_view/AssetHelper.h | 327 ++-- tools/assimp_view/Background.cpp | 3 +- tools/assimp_view/Background.h | 130 +- tools/assimp_view/Display.cpp | 11 +- tools/assimp_view/Display.h | 774 +++++---- tools/assimp_view/HelpDialog.cpp | 2 - tools/assimp_view/Input.cpp | 2 - tools/assimp_view/LogDisplay.cpp | 5 +- tools/assimp_view/LogDisplay.h | 87 +- tools/assimp_view/LogWindow.cpp | 4 +- tools/assimp_view/LogWindow.h | 149 +- tools/assimp_view/Material.cpp | 2409 +++++++++++++------------- tools/assimp_view/MaterialManager.h | 278 +-- tools/assimp_view/MeshRenderer.cpp | 2 - tools/assimp_view/MeshRenderer.h | 78 +- tools/assimp_view/MessageProc.cpp | 10 +- tools/assimp_view/Normals.cpp | 2 +- tools/assimp_view/SceneAnimator.cpp | 1 - tools/assimp_view/Shaders.cpp | 2492 +++++++++++++-------------- tools/assimp_view/assimp_view.cpp | 1599 ++++++++--------- tools/assimp_view/assimp_view.h | 67 +- 24 files changed, 4278 insertions(+), 4158 deletions(-) diff --git a/.gitignore b/.gitignore index 74acea82f..833e56ef1 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ test/gtest/src/gtest-stamp/gtest-gitinfo.txt test/gtest/src/gtest-stamp/gtest-gitclone-lastrun.txt Assimp.opensdf contrib/zlib/CTestTestfile.cmake +ipch/assimp_viewer-44bbbcd1/assimp_viewerd-ccc45335.ipch diff --git a/code/StringComparison.h b/code/StringComparison.h index 1f0ab1d9b..f5dd83092 100644 --- a/code/StringComparison.h +++ b/code/StringComparison.h @@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_STRING_WORKERS_H #include "../include/assimp/ai_assert.h" +#include "StringComparison.h" + #include #include #include diff --git a/tools/assimp_view/AnimEvaluator.cpp b/tools/assimp_view/AnimEvaluator.cpp index 7145b3d31..0f9bdf611 100644 --- a/tools/assimp_view/AnimEvaluator.cpp +++ b/tools/assimp_view/AnimEvaluator.cpp @@ -39,7 +39,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" using namespace AssimpView; diff --git a/tools/assimp_view/AssetHelper.h b/tools/assimp_view/AssetHelper.h index 837cf3aab..94a453ece 100644 --- a/tools/assimp_view/AssetHelper.h +++ b/tools/assimp_view/AssetHelper.h @@ -43,195 +43,204 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if (!defined AV_ASSET_HELPER_H_INCLUDED) #define AV_ASSET_HELPER_H_INCLUDED -class SceneAnimator; +#include +#include +#include -//------------------------------------------------------------------------------- -/** \brief Class to wrap ASSIMP's asset output structures -*/ -//------------------------------------------------------------------------------- -class AssetHelper - { - public: - enum - { - // the original normal set will be used - ORIGINAL = 0x0u, +#include - // a smoothed normal set will be used - SMOOTH = 0x1u, +namespace AssimpView { - // a hard normal set will be used - HARD = 0x2u, - }; + class SceneAnimator; - // default constructor - AssetHelper() - : iNormalSet(ORIGINAL) - { - mAnimator = NULL; - apcMeshes = NULL; - pcScene = NULL; - } + //------------------------------------------------------------------------------- + /** \brief Class to wrap ASSIMP's asset output structures + */ + //------------------------------------------------------------------------------- + class AssetHelper + { + public: + enum + { + // the original normal set will be used + ORIGINAL = 0x0u, - //--------------------------------------------------------------- - // default vertex data structure - // (even if tangents, bitangents or normals aren't - // required by the shader they will be committed to the GPU) - //--------------------------------------------------------------- - struct Vertex - { - aiVector3D vPosition; - aiVector3D vNormal; + // a smoothed normal set will be used + SMOOTH = 0x1u, - D3DCOLOR dColorDiffuse; - aiVector3D vTangent; - aiVector3D vBitangent; - aiVector2D vTextureUV; - aiVector2D vTextureUV2; - unsigned char mBoneIndices[4]; - unsigned char mBoneWeights[4]; // last Weight not used, calculated inside the vertex shader + // a hard normal set will be used + HARD = 0x2u, + }; - /** Returns the vertex declaration elements to create a declaration from. */ - static D3DVERTEXELEMENT9* GetDeclarationElements() - { - static D3DVERTEXELEMENT9 decl[] = - { - { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, - { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 }, - { 0, 24, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0 }, - { 0, 28, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TANGENT, 0 }, - { 0, 40, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BINORMAL, 0 }, - { 0, 52, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, - { 0, 60, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 }, - { 0, 68, D3DDECLTYPE_UBYTE4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDINDICES, 0 }, - { 0, 72, D3DDECLTYPE_UBYTE4N, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDWEIGHT, 0 }, - D3DDECL_END() - }; + // default constructor + AssetHelper() + : iNormalSet( ORIGINAL ) + { + mAnimator = NULL; + apcMeshes = NULL; + pcScene = NULL; + } - return decl; - } - }; + //--------------------------------------------------------------- + // default vertex data structure + // (even if tangents, bitangents or normals aren't + // required by the shader they will be committed to the GPU) + //--------------------------------------------------------------- + struct Vertex + { + aiVector3D vPosition; + aiVector3D vNormal; - //--------------------------------------------------------------- - // FVF vertex structure used for normals - //--------------------------------------------------------------- - struct LineVertex - { - aiVector3D vPosition; - DWORD dColorDiffuse; + D3DCOLOR dColorDiffuse; + aiVector3D vTangent; + aiVector3D vBitangent; + aiVector2D vTextureUV; + aiVector2D vTextureUV2; + unsigned char mBoneIndices[ 4 ]; + unsigned char mBoneWeights[ 4 ]; // last Weight not used, calculated inside the vertex shader - // retrieves the FVF code of the vertex type - static DWORD GetFVF() - { - return D3DFVF_DIFFUSE | D3DFVF_XYZ; - } - }; + /** Returns the vertex declaration elements to create a declaration from. */ + static D3DVERTEXELEMENT9* GetDeclarationElements() + { + static D3DVERTEXELEMENT9 decl[] = + { + { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, + { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 }, + { 0, 24, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0 }, + { 0, 28, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TANGENT, 0 }, + { 0, 40, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BINORMAL, 0 }, + { 0, 52, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, + { 0, 60, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 }, + { 0, 68, D3DDECLTYPE_UBYTE4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDINDICES, 0 }, + { 0, 72, D3DDECLTYPE_UBYTE4N, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDWEIGHT, 0 }, + D3DDECL_END() + }; - //--------------------------------------------------------------- - // Helper class to store GPU related resources created for - // a given aiMesh - //--------------------------------------------------------------- - class MeshHelper - { - public: + return decl; + } + }; - MeshHelper () - : - piVB (NULL), - piIB (NULL), - piVBNormals (NULL), - piEffect (NULL), - bSharedFX (false), - piDiffuseTexture (NULL), - piSpecularTexture (NULL), - piAmbientTexture (NULL), - piEmissiveTexture (NULL), - piNormalTexture (NULL), - piOpacityTexture (NULL), - piShininessTexture (NULL), - piLightmapTexture (NULL), - twosided (false), - pvOriginalNormals (NULL) - {} + //--------------------------------------------------------------- + // FVF vertex structure used for normals + //--------------------------------------------------------------- + struct LineVertex + { + aiVector3D vPosition; + DWORD dColorDiffuse; - ~MeshHelper () - { - // NOTE: This is done in DeleteAssetData() - // TODO: Make this a proper d'tor - } + // retrieves the FVF code of the vertex type + static DWORD GetFVF() + { + return D3DFVF_DIFFUSE | D3DFVF_XYZ; + } + }; - // shading mode to use. Either Lambert or otherwise phong - // will be used in every case - aiShadingMode eShadingMode; + //--------------------------------------------------------------- + // Helper class to store GPU related resources created for + // a given aiMesh + //--------------------------------------------------------------- + class MeshHelper + { + public: - // vertex buffer - IDirect3DVertexBuffer9* piVB; + MeshHelper() + : + piVB( NULL ), + piIB( NULL ), + piVBNormals( NULL ), + piEffect( NULL ), + bSharedFX( false ), + piDiffuseTexture( NULL ), + piSpecularTexture( NULL ), + piAmbientTexture( NULL ), + piEmissiveTexture( NULL ), + piNormalTexture( NULL ), + piOpacityTexture( NULL ), + piShininessTexture( NULL ), + piLightmapTexture( NULL ), + twosided( false ), + pvOriginalNormals( NULL ) + {} - // index buffer. For partially transparent meshes - // created with dynamic usage to be able to update - // the buffer contents quickly - IDirect3DIndexBuffer9* piIB; + ~MeshHelper() + { + // NOTE: This is done in DeleteAssetData() + // TODO: Make this a proper d'tor + } - // vertex buffer to be used to draw vertex normals - // (vertex normals are generated in every case) - IDirect3DVertexBuffer9* piVBNormals; + // shading mode to use. Either Lambert or otherwise phong + // will be used in every case + aiShadingMode eShadingMode; - // shader to be used - ID3DXEffect* piEffect; - bool bSharedFX; + // vertex buffer + IDirect3DVertexBuffer9* piVB; - // material textures - IDirect3DTexture9* piDiffuseTexture; - IDirect3DTexture9* piSpecularTexture; - IDirect3DTexture9* piAmbientTexture; - IDirect3DTexture9* piEmissiveTexture; - IDirect3DTexture9* piNormalTexture; - IDirect3DTexture9* piOpacityTexture; - IDirect3DTexture9* piShininessTexture; - IDirect3DTexture9* piLightmapTexture; + // index buffer. For partially transparent meshes + // created with dynamic usage to be able to update + // the buffer contents quickly + IDirect3DIndexBuffer9* piIB; - // material colors - D3DXVECTOR4 vDiffuseColor; - D3DXVECTOR4 vSpecularColor; - D3DXVECTOR4 vAmbientColor; - D3DXVECTOR4 vEmissiveColor; + // vertex buffer to be used to draw vertex normals + // (vertex normals are generated in every case) + IDirect3DVertexBuffer9* piVBNormals; - // opacity for the material - float fOpacity; + // shader to be used + ID3DXEffect* piEffect; + bool bSharedFX; - // shininess for the material - float fShininess; + // material textures + IDirect3DTexture9* piDiffuseTexture; + IDirect3DTexture9* piSpecularTexture; + IDirect3DTexture9* piAmbientTexture; + IDirect3DTexture9* piEmissiveTexture; + IDirect3DTexture9* piNormalTexture; + IDirect3DTexture9* piOpacityTexture; + IDirect3DTexture9* piShininessTexture; + IDirect3DTexture9* piLightmapTexture; - // strength of the specular highlight - float fSpecularStrength; + // material colors + D3DXVECTOR4 vDiffuseColor; + D3DXVECTOR4 vSpecularColor; + D3DXVECTOR4 vAmbientColor; + D3DXVECTOR4 vEmissiveColor; - // two-sided? - bool twosided; + // opacity for the material + float fOpacity; - // Stores a pointer to the original normal set of the asset - aiVector3D* pvOriginalNormals; - }; + // shininess for the material + float fShininess; - // One instance per aiMesh in the globally loaded asset - MeshHelper** apcMeshes; + // strength of the specular highlight + float fSpecularStrength; - // Scene wrapper instance - aiScene* pcScene; + // two-sided? + bool twosided; - // Animation player to animate the scene if necessary - SceneAnimator* mAnimator; + // Stores a pointer to the original normal set of the asset + aiVector3D* pvOriginalNormals; + }; - // Specifies the normal set to be used - unsigned int iNormalSet; + // One instance per aiMesh in the globally loaded asset + MeshHelper** apcMeshes; - // ------------------------------------------------------------------ - // set the normal set to be used - void SetNormalSet(unsigned int iSet); + // Scene wrapper instance + aiScene* pcScene; - // ------------------------------------------------------------------ - // flip all normal vectors - void FlipNormals(); - void FlipNormalsInt(); - }; + // Animation player to animate the scene if necessary + SceneAnimator* mAnimator; + + // Specifies the normal set to be used + unsigned int iNormalSet; + + // ------------------------------------------------------------------ + // set the normal set to be used + void SetNormalSet( unsigned int iSet ); + + // ------------------------------------------------------------------ + // flip all normal vectors + void FlipNormals(); + void FlipNormalsInt(); + }; +} #endif // !! IG diff --git a/tools/assimp_view/Background.cpp b/tools/assimp_view/Background.cpp index 94141f641..b0f01b02c 100644 --- a/tools/assimp_view/Background.cpp +++ b/tools/assimp_view/Background.cpp @@ -39,12 +39,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" - namespace AssimpView { +extern std::string g_szSkyboxShader; // From: U3D build 1256 (src\kernel\graphic\scenegraph\SkyBox.cpp) // ------------------------------------------------------------------------------ diff --git a/tools/assimp_view/Background.h b/tools/assimp_view/Background.h index 9908babf3..1d073cf8d 100644 --- a/tools/assimp_view/Background.h +++ b/tools/assimp_view/Background.h @@ -38,91 +38,91 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ +#pragma once -#if (!defined AV_BACKGROUND_H_INCLUDED) -#define AV_BACKGROUND_H_INCLUDED +namespace AssimpView +{ + class CBackgroundPainter + { + CBackgroundPainter() + : + clrColor( D3DCOLOR_ARGB( 0xFF, 100, 100, 100 ) ), + pcTexture( NULL ), + piSkyBoxEffect( NULL ), + eMode( SIMPLE_COLOR ) + {} -class CBackgroundPainter - { - CBackgroundPainter() - : - clrColor(D3DCOLOR_ARGB(0xFF,100,100,100)), - pcTexture(NULL), - piSkyBoxEffect(NULL), - eMode(SIMPLE_COLOR) - {} + public: -public: + // Supported background draw modi + enum MODE { SIMPLE_COLOR, TEXTURE_2D, TEXTURE_CUBE }; - // Supported background draw modi - enum MODE {SIMPLE_COLOR, TEXTURE_2D, TEXTURE_CUBE}; + // Singleton accessors + static CBackgroundPainter s_cInstance; + inline static CBackgroundPainter& Instance() + { + return s_cInstance; + } - // Singleton accessors - static CBackgroundPainter s_cInstance; - inline static CBackgroundPainter& Instance () - { - return s_cInstance; - } + // set the current background color + // (this removes any textures loaded) + void SetColor( D3DCOLOR p_clrNew ); - // set the current background color - // (this removes any textures loaded) - void SetColor (D3DCOLOR p_clrNew); + // Setup a cubemap/a 2d texture as background + void SetCubeMapBG( const char* p_szPath ); + void SetTextureBG( const char* p_szPath ); - // Setup a cubemap/a 2d texture as background - void SetCubeMapBG (const char* p_szPath); - void SetTextureBG (const char* p_szPath); + // Called by the render loop + void OnPreRender(); + void OnPostRender(); - // Called by the render loop - void OnPreRender(); - void OnPostRender(); + // Release any native resources associated with the instance + void ReleaseNativeResource(); - // Release any native resources associated with the instance - void ReleaseNativeResource(); + // Recreate any native resources associated with the instance + void RecreateNativeResource(); - // Recreate any native resources associated with the instance - void RecreateNativeResource(); + // Rotate the skybox + void RotateSB( const aiMatrix4x4* pm ); - // Rotate the skybox - void RotateSB(const aiMatrix4x4* pm); + // Reset the state of the skybox + void ResetSB(); - // Reset the state of the skybox - void ResetSB(); + inline MODE GetMode() const + { + return this->eMode; + } - inline MODE GetMode() const - { - return this->eMode; - } + inline IDirect3DBaseTexture9* GetTexture() + { + return this->pcTexture; + } - inline IDirect3DBaseTexture9* GetTexture() - { - return this->pcTexture; - } + inline ID3DXBaseEffect* GetEffect() + { + return this->piSkyBoxEffect; + } - inline ID3DXBaseEffect* GetEffect() - { - return this->piSkyBoxEffect; - } + private: -private: + void RemoveSBDeps(); - void RemoveSBDeps(); + // current background color + D3DCOLOR clrColor; - // current background color - D3DCOLOR clrColor; + // current background texture + IDirect3DBaseTexture9* pcTexture; + ID3DXEffect* piSkyBoxEffect; - // current background texture - IDirect3DBaseTexture9* pcTexture; - ID3DXEffect* piSkyBoxEffect; + // current background mode + MODE eMode; - // current background mode - MODE eMode; + // path to the texture + std::string szPath; - // path to the texture - std::string szPath; + // transformation matrix for the skybox + aiMatrix4x4 mMatrix; + }; - // transformation matrix for the skybox - aiMatrix4x4 mMatrix; - }; - -#endif // !! AV_BACKGROUND_H_INCLUDED \ No newline at end of file +} diff --git a/tools/assimp_view/Display.cpp b/tools/assimp_view/Display.cpp index 9927fbe58..37c22962b 100644 --- a/tools/assimp_view/Display.cpp +++ b/tools/assimp_view/Display.cpp @@ -38,13 +38,16 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ - -#include "stdafx.h" #include "assimp_view.h" - +#include "AnimEvaluator.h" +#include "SceneAnimator.h" namespace AssimpView { +using namespace Assimp; + +extern std::string g_szCheckerBackgroundShader; + struct SVertex { float x,y,z,w,u,v; @@ -2240,7 +2243,7 @@ int CDisplay::RenderTextureView() const float ny = (float)sRect.bottom; const float x = (float)sDesc.Width; const float y = (float)sDesc.Height; - float f = std::min((nx-30) / x,(ny-30) / y) * (m_fTextureZoom/1000.0f); + float f = min((nx-30) / x,(ny-30) / y) * (m_fTextureZoom/1000.0f); float fHalfX = (nx - (f * x)) / 2.0f; float fHalfY = (ny - (f * y)) / 2.0f; diff --git a/tools/assimp_view/Display.h b/tools/assimp_view/Display.h index c31b3aa7c..5b282bbdf 100644 --- a/tools/assimp_view/Display.h +++ b/tools/assimp_view/Display.h @@ -42,6 +42,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if (!defined AV_DISPLAY_H_INCLUDED) #define AV_DISPLAY_H_INCLUDE +#include +#include +#include + // see CDisplay::m_aiImageList #define AI_VIEW_IMGLIST_NODE 0x0 #define AI_VIEW_IMGLIST_MATERIAL 0x1 @@ -49,486 +53,490 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_VIEW_IMGLIST_TEXTURE_INVALID 0x3 #define AI_VIEW_IMGLIST_MODEL 0x4 -//------------------------------------------------------------------------------- -/* Corresponds to the "Display" combobox in the UI -*/ -//------------------------------------------------------------------------------- -class CDisplay - { -private: +namespace AssimpView +{ - // helper class - struct Info - { - Info( D3DXVECTOR4* p1, - AssetHelper::MeshHelper* p2, - const char* p3) - : pclrColor(p1),pMesh(p2),szShaderParam(p3) {} + //------------------------------------------------------------------------------- + /* Corresponds to the "Display" combobox in the UI + */ + //------------------------------------------------------------------------------- + class CDisplay + { + private: - D3DXVECTOR4* pclrColor; - AssetHelper::MeshHelper* pMesh; - const char* szShaderParam; - }; + // helper class + struct Info + { + Info( D3DXVECTOR4* p1, + AssetHelper::MeshHelper* p2, + const char* p3 ) + : pclrColor( p1 ), pMesh( p2 ), szShaderParam( p3 ) {} -// default constructor - CDisplay() - : m_iViewMode(VIEWMODE_FULL), - m_pcCurrentTexture(NULL), - m_pcCurrentNode(NULL), - m_pcCurrentMaterial(NULL), - m_hImageList(NULL), - m_hRoot(NULL), - m_fTextureZoom(1000.0f) - { - this->m_aiImageList[0] = 0; - this->m_aiImageList[1] = 1; - this->m_aiImageList[2] = 2; - this->m_aiImageList[3] = 3; - this->m_aiImageList[4] = 4; + D3DXVECTOR4* pclrColor; + AssetHelper::MeshHelper* pMesh; + const char* szShaderParam; + }; - this->m_avCheckerColors[0].x = this->m_avCheckerColors[0].y = this->m_avCheckerColors[0].z = 0.4f; - this->m_avCheckerColors[1].x = this->m_avCheckerColors[1].y = this->m_avCheckerColors[1].z = 0.6f; - } + // default constructor + CDisplay() + : m_iViewMode( VIEWMODE_FULL ), + m_pcCurrentTexture( NULL ), + m_pcCurrentNode( NULL ), + m_pcCurrentMaterial( NULL ), + m_hImageList( NULL ), + m_hRoot( NULL ), + m_fTextureZoom( 1000.0f ) + { + this->m_aiImageList[ 0 ] = 0; + this->m_aiImageList[ 1 ] = 1; + this->m_aiImageList[ 2 ] = 2; + this->m_aiImageList[ 3 ] = 3; + this->m_aiImageList[ 4 ] = 4; -public: + this->m_avCheckerColors[ 0 ].x = this->m_avCheckerColors[ 0 ].y = this->m_avCheckerColors[ 0 ].z = 0.4f; + this->m_avCheckerColors[ 1 ].x = this->m_avCheckerColors[ 1 ].y = this->m_avCheckerColors[ 1 ].z = 0.6f; + } + + public: - //------------------------------------------------------------------ - enum - { - // the full model is displayed - VIEWMODE_FULL, + //------------------------------------------------------------------ + enum + { + // the full model is displayed + VIEWMODE_FULL, - // a material is displayed on a simple spjere as model - VIEWMODE_MATERIAL, + // a material is displayed on a simple spjere as model + VIEWMODE_MATERIAL, - // a texture with an UV set mapped on it is displayed - VIEWMODE_TEXTURE, + // a texture with an UV set mapped on it is displayed + VIEWMODE_TEXTURE, - // a single node in the scenegraph is displayed - VIEWMODE_NODE, - }; + // a single node in the scenegraph is displayed + VIEWMODE_NODE, + }; - //------------------------------------------------------------------ - // represents a texture in the tree view - struct TextureInfo - { - // texture info - IDirect3DTexture9** piTexture; + //------------------------------------------------------------------ + // represents a texture in the tree view + struct TextureInfo + { + // texture info + IDirect3DTexture9** piTexture; - // Blend factor of the texture - float fBlend; + // Blend factor of the texture + float fBlend; - // blend operation for the texture - aiTextureOp eOp; + // blend operation for the texture + aiTextureOp eOp; - // UV index for the texture - unsigned int iUV; + // UV index for the texture + unsigned int iUV; - // Associated tree item - HTREEITEM hTreeItem; + // Associated tree item + HTREEITEM hTreeItem; - // Original path to the texture - std::string szPath; + // Original path to the texture + std::string szPath; - // index of the corresponding material - unsigned int iMatIndex; + // index of the corresponding material + unsigned int iMatIndex; - // type of the texture - unsigned int iType; - }; + // type of the texture + unsigned int iType; + }; - //------------------------------------------------------------------ - // represents a node in the tree view - struct NodeInfo - { - // node object - aiNode* psNode; + //------------------------------------------------------------------ + // represents a node in the tree view + struct NodeInfo + { + // node object + aiNode* psNode; - // corresponding tree view item - HTREEITEM hTreeItem; - }; + // corresponding tree view item + HTREEITEM hTreeItem; + }; - //------------------------------------------------------------------ - // represents a mesh in the tree view - struct MeshInfo - { - // the mesh object - aiMesh* psMesh; + //------------------------------------------------------------------ + // represents a mesh in the tree view + struct MeshInfo + { + // the mesh object + aiMesh* psMesh; - // corresponding tree view item - HTREEITEM hTreeItem; - }; + // corresponding tree view item + HTREEITEM hTreeItem; + }; - //------------------------------------------------------------------ - // represents a material in the tree view - struct MaterialInfo - { - // material index - unsigned int iIndex; + //------------------------------------------------------------------ + // represents a material in the tree view + struct MaterialInfo + { + // material index + unsigned int iIndex; - // material object - aiMaterial* psMaterial; + // material object + aiMaterial* psMaterial; - // ID3DXEffect interface - ID3DXEffect* piEffect; + // ID3DXEffect interface + ID3DXEffect* piEffect; - // corresponding tree view item - HTREEITEM hTreeItem; - }; + // corresponding tree view item + HTREEITEM hTreeItem; + }; - //------------------------------------------------------------------ - // Singleton accessors - static CDisplay s_cInstance; - inline static CDisplay& Instance () - { - return s_cInstance; - } + //------------------------------------------------------------------ + // Singleton accessors + static CDisplay s_cInstance; + inline static CDisplay& Instance() + { + return s_cInstance; + } - //------------------------------------------------------------------ - // Called during the render loop. Renders the scene (including the - // HUD etc) in the current view mode - int OnRender(); + //------------------------------------------------------------------ + // Called during the render loop. Renders the scene (including the + // HUD etc) in the current view mode + int OnRender(); - //------------------------------------------------------------------ - // called when the user selects another item in the "Display" tree - // view the method determines the new view mode and performs all - // required operations - // \param p_hTreeItem Selected tree view item - int OnSetup(HTREEITEM p_hTreeItem); + //------------------------------------------------------------------ + // called when the user selects another item in the "Display" tree + // view the method determines the new view mode and performs all + // required operations + // \param p_hTreeItem Selected tree view item + int OnSetup( HTREEITEM p_hTreeItem ); - //------------------------------------------------------------------ - // Variant 1: Render the full scene with the asset - int RenderFullScene(); + //------------------------------------------------------------------ + // Variant 1: Render the full scene with the asset + int RenderFullScene(); #if 0 - //------------------------------------------------------------------ - // Variant 2: Render only a part of the scene. One node to - // be exact - int RenderScenePart(); + //------------------------------------------------------------------ + // Variant 2: Render only a part of the scene. One node to + // be exact + int RenderScenePart(); #endif - //------------------------------------------------------------------ - // Variant 3: Render a large sphere and map a given material on it - int RenderMaterialView(); + //------------------------------------------------------------------ + // Variant 3: Render a large sphere and map a given material on it + int RenderMaterialView(); - //------------------------------------------------------------------ - // Variant 4: Render a flat plane, map a texture on it and - // display the UV wire on it - int RenderTextureView(); + //------------------------------------------------------------------ + // Variant 4: Render a flat plane, map a texture on it and + // display the UV wire on it + int RenderTextureView(); - //------------------------------------------------------------------ - // Fill the UI combobox with a list of all supported view modi - // - // The display modes are added in order - int FillDisplayList(void); + //------------------------------------------------------------------ + // Fill the UI combobox with a list of all supported view modi + // + // The display modes are added in order + int FillDisplayList( void ); - //------------------------------------------------------------------ - // Add a material and all sub textures to the display mode list - // hRoot - Handle to the root of the tree view - // iIndex - Material index - int AddMaterialToDisplayList(HTREEITEM hRoot, - unsigned int iIndex); + //------------------------------------------------------------------ + // Add a material and all sub textures to the display mode list + // hRoot - Handle to the root of the tree view + // iIndex - Material index + int AddMaterialToDisplayList( HTREEITEM hRoot, + unsigned int iIndex ); - //------------------------------------------------------------------ - // Add a texture to the display list - // pcMat - material containing the texture - // hTexture - Handle to the material tree item - // szPath - Path to the texture - // iUVIndex - UV index to be used for the texture - // fBlendFactor - Blend factor to be used for the texture - // eTextureOp - texture operation to be used for the texture - int AddTextureToDisplayList(unsigned int iType, - unsigned int iIndex, - const aiString* szPath, - HTREEITEM hFX, - unsigned int iUVIndex = 0, - const float fBlendFactor = 0.0f, - aiTextureOp eTextureOp = aiTextureOp_Multiply, - unsigned int iMesh = 0); + //------------------------------------------------------------------ + // Add a texture to the display list + // pcMat - material containing the texture + // hTexture - Handle to the material tree item + // szPath - Path to the texture + // iUVIndex - UV index to be used for the texture + // fBlendFactor - Blend factor to be used for the texture + // eTextureOp - texture operation to be used for the texture + int AddTextureToDisplayList( unsigned int iType, + unsigned int iIndex, + const aiString* szPath, + HTREEITEM hFX, + unsigned int iUVIndex = 0, + const float fBlendFactor = 0.0f, + aiTextureOp eTextureOp = aiTextureOp_Multiply, + unsigned int iMesh = 0 ); - //------------------------------------------------------------------ - // Add a node to the display list - // Recusrivly adds all subnodes as well - // iIndex - Index of the node in the parent's child list - // iDepth - Current depth of the node - // pcNode - Node object - // hRoot - Parent tree view node - int AddNodeToDisplayList( - unsigned int iIndex, - unsigned int iDepth, - aiNode* pcNode, - HTREEITEM hRoot); + //------------------------------------------------------------------ + // Add a node to the display list + // Recusrivly adds all subnodes as well + // iIndex - Index of the node in the parent's child list + // iDepth - Current depth of the node + // pcNode - Node object + // hRoot - Parent tree view node + int AddNodeToDisplayList( + unsigned int iIndex, + unsigned int iDepth, + aiNode* pcNode, + HTREEITEM hRoot ); - //------------------------------------------------------------------ - // Add a mesh to the display list - // iIndex - Index of the mesh in the scene's mesh list - // hRoot - Parent tree view node - int AddMeshToDisplayList( - unsigned int iIndex, - HTREEITEM hRoot); + //------------------------------------------------------------------ + // Add a mesh to the display list + // iIndex - Index of the mesh in the scene's mesh list + // hRoot - Parent tree view node + int AddMeshToDisplayList( + unsigned int iIndex, + HTREEITEM hRoot ); - //------------------------------------------------------------------ - // Load the image list for the tree view item - int LoadImageList(void); + //------------------------------------------------------------------ + // Load the image list for the tree view item + int LoadImageList( void ); - //------------------------------------------------------------------ - // Expand all nodes in the tree - int ExpandTree(); + //------------------------------------------------------------------ + // Expand all nodes in the tree + int ExpandTree(); - //------------------------------------------------------------------ - // Fill the UI combobox with a list of all supported animations - // The animations are added in order - int FillAnimList(void); + //------------------------------------------------------------------ + // Fill the UI combobox with a list of all supported animations + // The animations are added in order + int FillAnimList( void ); - //------------------------------------------------------------------ - // Clear the combox box containing the list of animations - int ClearAnimList(void); + //------------------------------------------------------------------ + // Clear the combox box containing the list of animations + int ClearAnimList( void ); - //------------------------------------------------------------------ - // Clear the combox box containing the list of scenegraph items - int ClearDisplayList(void); + //------------------------------------------------------------------ + // Clear the combox box containing the list of scenegraph items + int ClearDisplayList( void ); - //------------------------------------------------------------------ - // Fill in the default statistics - int FillDefaultStatistics(void); + //------------------------------------------------------------------ + // Fill in the default statistics + int FillDefaultStatistics( void ); - //------------------------------------------------------------------ - // Called by LoadAsset() - // reset the class instance to the default values - int Reset(void); + //------------------------------------------------------------------ + // Called by LoadAsset() + // reset the class instance to the default values + int Reset( void ); - //------------------------------------------------------------------ - // Replace the texture that is current selected with - // a new texture - int ReplaceCurrentTexture(const char* szPath); + //------------------------------------------------------------------ + // Replace the texture that is current selected with + // a new texture + int ReplaceCurrentTexture( const char* szPath ); - //------------------------------------------------------------------ - // Display the context menu (if there) for the specified tree item - // hItem Valid tree view item handle - int ShowTreeViewContextMenu(HTREEITEM hItem); + //------------------------------------------------------------------ + // Display the context menu (if there) for the specified tree item + // hItem Valid tree view item handle + int ShowTreeViewContextMenu( HTREEITEM hItem ); - //------------------------------------------------------------------ - // Event handling for pop-up menus displayed by th tree view - int HandleTreeViewPopup(WPARAM wParam,LPARAM lParam); + //------------------------------------------------------------------ + // Event handling for pop-up menus displayed by th tree view + int HandleTreeViewPopup( WPARAM wParam, LPARAM lParam ); - //------------------------------------------------------------------ - // Enable animation-related parts of the UI - int EnableAnimTools(BOOL hm) ; + //------------------------------------------------------------------ + // Enable animation-related parts of the UI + int EnableAnimTools( BOOL hm ); - //------------------------------------------------------------------ - // setter for m_iViewMode - inline void SetViewMode(unsigned int p_iNew) - { - this->m_iViewMode = p_iNew; - } + //------------------------------------------------------------------ + // setter for m_iViewMode + inline void SetViewMode( unsigned int p_iNew ) + { + this->m_iViewMode = p_iNew; + } - //------------------------------------------------------------------ - // getter for m_iViewMode - inline unsigned int GetViewMode() - { - return m_iViewMode; - } + //------------------------------------------------------------------ + // getter for m_iViewMode + inline unsigned int GetViewMode() + { + return m_iViewMode; + } - //------------------------------------------------------------------ - // change the texture view's zoom factor - inline void SetTextureViewZoom(float f) - { - // FIX: Removed log(), seems to make more problems than it fixes - this->m_fTextureZoom += f* 15; - if (this->m_fTextureZoom < 0.05f)this->m_fTextureZoom = 0.05f; - } + //------------------------------------------------------------------ + // change the texture view's zoom factor + inline void SetTextureViewZoom( float f ) + { + // FIX: Removed log(), seems to make more problems than it fixes + this->m_fTextureZoom += f * 15; + if( this->m_fTextureZoom < 0.05f )this->m_fTextureZoom = 0.05f; + } - //------------------------------------------------------------------ - // change the texture view's offset on the x axis - inline void SetTextureViewOffsetX(float f) - { - this->m_vTextureOffset.x += f; - } + //------------------------------------------------------------------ + // change the texture view's offset on the x axis + inline void SetTextureViewOffsetX( float f ) + { + this->m_vTextureOffset.x += f; + } - //------------------------------------------------------------------ - // change the texture view's offset on the y axis - inline void SetTextureViewOffsetY(float f) - { - this->m_vTextureOffset.y += f; - } + //------------------------------------------------------------------ + // change the texture view's offset on the y axis + inline void SetTextureViewOffsetY( float f ) + { + this->m_vTextureOffset.y += f; + } - //------------------------------------------------------------------ - // add a new texture to the list - inline void AddTexture(const TextureInfo& info) - { - this->m_asTextures.push_back(info); - } + //------------------------------------------------------------------ + // add a new texture to the list + inline void AddTexture( const TextureInfo& info ) + { + this->m_asTextures.push_back( info ); + } - //------------------------------------------------------------------ - // add a new node to the list - inline void AddNode(const NodeInfo& info) - { - this->m_asNodes.push_back(info); - } + //------------------------------------------------------------------ + // add a new node to the list + inline void AddNode( const NodeInfo& info ) + { + this->m_asNodes.push_back( info ); + } - //------------------------------------------------------------------ - // add a new mesh to the list - inline void AddMesh(const MeshInfo& info) - { - this->m_asMeshes.push_back(info); - } + //------------------------------------------------------------------ + // add a new mesh to the list + inline void AddMesh( const MeshInfo& info ) + { + this->m_asMeshes.push_back( info ); + } - //------------------------------------------------------------------ - // add a new material to the list - inline void AddMaterial(const MaterialInfo& info) - { - this->m_asMaterials.push_back(info); - } + //------------------------------------------------------------------ + // add a new material to the list + inline void AddMaterial( const MaterialInfo& info ) + { + this->m_asMaterials.push_back( info ); + } - //------------------------------------------------------------------ - // set the primary color of the checker pattern background - inline void SetFirstCheckerColor(D3DXVECTOR4 c) - { - this->m_avCheckerColors[0] = c; - } + //------------------------------------------------------------------ + // set the primary color of the checker pattern background + inline void SetFirstCheckerColor( D3DXVECTOR4 c ) + { + this->m_avCheckerColors[ 0 ] = c; + } - //------------------------------------------------------------------ - // set the secondary color of the checker pattern background - inline void SetSecondCheckerColor(D3DXVECTOR4 c) - { - this->m_avCheckerColors[1] = c; - } + //------------------------------------------------------------------ + // set the secondary color of the checker pattern background + inline void SetSecondCheckerColor( D3DXVECTOR4 c ) + { + this->m_avCheckerColors[ 1 ] = c; + } - //------------------------------------------------------------------ - // get the primary color of the checker pattern background - inline const D3DXVECTOR4* GetFirstCheckerColor() const - { - return &this->m_avCheckerColors[0]; - } + //------------------------------------------------------------------ + // get the primary color of the checker pattern background + inline const D3DXVECTOR4* GetFirstCheckerColor() const + { + return &this->m_avCheckerColors[ 0 ]; + } - //------------------------------------------------------------------ - // get the secondary color of the checker pattern background - inline const D3DXVECTOR4* GetSecondCheckerColor() const - { - return &this->m_avCheckerColors[1]; - } + //------------------------------------------------------------------ + // get the secondary color of the checker pattern background + inline const D3DXVECTOR4* GetSecondCheckerColor() const + { + return &this->m_avCheckerColors[ 1 ]; + } -private: + private: - //------------------------------------------------------------------ - // Render a screen-filling square using the checker pattern shader - int RenderPatternBG(); + //------------------------------------------------------------------ + // Render a screen-filling square using the checker pattern shader + int RenderPatternBG(); - //------------------------------------------------------------------ - // Render a given node in the scenegraph - // piNode Node to be rendered - // piMatrix Current transformation matrix - // bAlpha Render alpha or opaque objects only? - int RenderNode (aiNode* piNode,const aiMatrix4x4& piMatrix, - bool bAlpha = false); + //------------------------------------------------------------------ + // Render a given node in the scenegraph + // piNode Node to be rendered + // piMatrix Current transformation matrix + // bAlpha Render alpha or opaque objects only? + int RenderNode( aiNode* piNode, const aiMatrix4x4& piMatrix, + bool bAlpha = false ); - //------------------------------------------------------------------ - // Setup the camera for the stereo view rendering mode - int SetupStereoView(); + //------------------------------------------------------------------ + // Setup the camera for the stereo view rendering mode + int SetupStereoView(); - //------------------------------------------------------------------ - // Render the second view (for the right eye) in stereo mod - // m - World matrix - int RenderStereoView(const aiMatrix4x4& m); + //------------------------------------------------------------------ + // Render the second view (for the right eye) in stereo mod + // m - World matrix + int RenderStereoView( const aiMatrix4x4& m ); - //------------------------------------------------------------------ - // Handle user input - int HandleInput(); + //------------------------------------------------------------------ + // Handle user input + int HandleInput(); - //------------------------------------------------------------------ - // Handle user input for the texture viewer - int HandleInputTextureView(); + //------------------------------------------------------------------ + // Handle user input for the texture viewer + int HandleInputTextureView(); - //------------------------------------------------------------------ - // Handle user input if no asset is loaded - int HandleInputEmptyScene(); + //------------------------------------------------------------------ + // Handle user input if no asset is loaded + int HandleInputEmptyScene(); - //------------------------------------------------------------------ - // Draw the HUD (call only if FPS mode isn't active) - int DrawHUD(); + //------------------------------------------------------------------ + // Draw the HUD (call only if FPS mode isn't active) + int DrawHUD(); - //------------------------------------------------------------------ - // Used by OnSetup(). - // Do everything necessary to switch to texture view mode - int OnSetupTextureView(TextureInfo* pcNew); + //------------------------------------------------------------------ + // Used by OnSetup(). + // Do everything necessary to switch to texture view mode + int OnSetupTextureView( TextureInfo* pcNew ); - //------------------------------------------------------------------ - // Used by OnSetup(). - // Do everything necessary to switch to material view mode - int OnSetupMaterialView(MaterialInfo* pcNew); + //------------------------------------------------------------------ + // Used by OnSetup(). + // Do everything necessary to switch to material view mode + int OnSetupMaterialView( MaterialInfo* pcNew ); - //------------------------------------------------------------------ - // Used by OnSetup(). - // Do everything necessary to switch to node view mode - int OnSetupNodeView(NodeInfo* pcNew); + //------------------------------------------------------------------ + // Used by OnSetup(). + // Do everything necessary to switch to node view mode + int OnSetupNodeView( NodeInfo* pcNew ); - //------------------------------------------------------------------ - // Used by OnSetup(). - // Do everything necessary to switch back to normal view mode - int OnSetupNormalView(); + //------------------------------------------------------------------ + // Used by OnSetup(). + // Do everything necessary to switch back to normal view mode + int OnSetupNormalView(); - //------------------------------------------------------------------ - // Used by HandleTreeViewPopup(). - int HandleTreeViewPopup2(WPARAM wParam,LPARAM lParam); + //------------------------------------------------------------------ + // Used by HandleTreeViewPopup(). + int HandleTreeViewPopup2( WPARAM wParam, LPARAM lParam ); - //------------------------------------------------------------------ - // Render skeleton - int RenderSkeleton (aiNode* piNode,const aiMatrix4x4& piMatrix, - const aiMatrix4x4& parent); + //------------------------------------------------------------------ + // Render skeleton + int RenderSkeleton( aiNode* piNode, const aiMatrix4x4& piMatrix, + const aiMatrix4x4& parent ); - -private: - // view mode - unsigned int m_iViewMode; + private: - // List of all textures in the display CB - std::vector m_asTextures; + // view mode + unsigned int m_iViewMode; - // current texture or NULL if no texture is active - TextureInfo* m_pcCurrentTexture; + // List of all textures in the display CB + std::vector m_asTextures; - // List of all node in the display CB - std::vector m_asNodes; + // current texture or NULL if no texture is active + TextureInfo* m_pcCurrentTexture; - // List of all node in the display CB - std::vector m_asMeshes; + // List of all node in the display CB + std::vector m_asNodes; - // current Node or NULL if no Node is active - NodeInfo* m_pcCurrentNode; + // List of all node in the display CB + std::vector m_asMeshes; - // List of all materials in the display CB - std::vector m_asMaterials; + // current Node or NULL if no Node is active + NodeInfo* m_pcCurrentNode; - // current material or NULL if no material is active - MaterialInfo* m_pcCurrentMaterial; + // List of all materials in the display CB + std::vector m_asMaterials; - // indices into the image list of the "display" tree view control - unsigned int m_aiImageList[5]; /* = {0,1,2,3,4};*/ + // current material or NULL if no material is active + MaterialInfo* m_pcCurrentMaterial; - // Image list - HIMAGELIST m_hImageList; + // indices into the image list of the "display" tree view control + unsigned int m_aiImageList[ 5 ]; /* = {0,1,2,3,4};*/ - // Root node of the tree, "Model" - HTREEITEM m_hRoot; + // Image list + HIMAGELIST m_hImageList; - // Current zoom factor of the texture viewer - float m_fTextureZoom; + // Root node of the tree, "Model" + HTREEITEM m_hRoot; - // Current offset (in pixels) of the texture viewer - aiVector2D m_vTextureOffset; + // Current zoom factor of the texture viewer + float m_fTextureZoom; - // Colors used to draw the checker pattern (for the - // texture viewer as background ) - D3DXVECTOR4 m_avCheckerColors[2]; + // Current offset (in pixels) of the texture viewer + aiVector2D m_vTextureOffset; - // View projection matrix - aiMatrix4x4 mViewProjection; - aiVector3D vPos; - }; + // Colors used to draw the checker pattern (for the + // texture viewer as background ) + D3DXVECTOR4 m_avCheckerColors[ 2 ]; + // View projection matrix + aiMatrix4x4 mViewProjection; + aiVector3D vPos; + }; + +} #endif // AV_DISPLAY_H_INCLUDE \ No newline at end of file diff --git a/tools/assimp_view/HelpDialog.cpp b/tools/assimp_view/HelpDialog.cpp index 3fb09f0c1..6d3458662 100644 --- a/tools/assimp_view/HelpDialog.cpp +++ b/tools/assimp_view/HelpDialog.cpp @@ -39,14 +39,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" #include "richedit.h" namespace AssimpView { - //------------------------------------------------------------------------------- // Message procedure for the help dialog //------------------------------------------------------------------------------- diff --git a/tools/assimp_view/Input.cpp b/tools/assimp_view/Input.cpp index 113890a05..994f76535 100644 --- a/tools/assimp_view/Input.cpp +++ b/tools/assimp_view/Input.cpp @@ -39,10 +39,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" - namespace AssimpView { //------------------------------------------------------------------------------- diff --git a/tools/assimp_view/LogDisplay.cpp b/tools/assimp_view/LogDisplay.cpp index 4b320a144..762c263ba 100644 --- a/tools/assimp_view/LogDisplay.cpp +++ b/tools/assimp_view/LogDisplay.cpp @@ -39,14 +39,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" - namespace AssimpView { - -/* extern */ CLogDisplay CLogDisplay::s_cInstance; +CLogDisplay CLogDisplay::s_cInstance; //------------------------------------------------------------------------------- void CLogDisplay::AddEntry(const std::string& szText, diff --git a/tools/assimp_view/LogDisplay.h b/tools/assimp_view/LogDisplay.h index ac609a7d2..dc6724cf8 100644 --- a/tools/assimp_view/LogDisplay.h +++ b/tools/assimp_view/LogDisplay.h @@ -38,59 +38,62 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ +#pragma once -#if (!defined AV_LOG_DISPLAY_H_INCLUDED) -#define AV_LOG_DISPLAY_H_INCLUDE +#include -//------------------------------------------------------------------------------- -/** \brief Class to display log strings in the upper right corner of the view -*/ -//------------------------------------------------------------------------------- -class CLogDisplay - { -private: +namespace AssimpView +{ - CLogDisplay() {} + //------------------------------------------------------------------------------- + /** \brief Class to display log strings in the upper right corner of the view + */ + //------------------------------------------------------------------------------- + class CLogDisplay + { + private: -public: + CLogDisplay() {} - // data structure for an entry in the log queue - struct SEntry - { - SEntry () - : - clrColor(D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0x00)), dwStartTicks(0) - {} + public: - std::string szText; - D3DCOLOR clrColor; - DWORD dwStartTicks; - }; + // data structure for an entry in the log queue + struct SEntry + { + SEntry() + : + clrColor( D3DCOLOR_ARGB( 0xFF, 0xFF, 0xFF, 0x00 ) ), dwStartTicks( 0 ) + {} - // Singleton accessors - static CLogDisplay s_cInstance; - inline static CLogDisplay& Instance () - { - return s_cInstance; - } + std::string szText; + D3DCOLOR clrColor; + DWORD dwStartTicks; + }; - // Add an entry to the log queue - void AddEntry(const std::string& szText, - const D3DCOLOR clrColor = D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0x00)); + // Singleton accessors + static CLogDisplay s_cInstance; + inline static CLogDisplay& Instance() + { + return s_cInstance; + } - // Release any native resources associated with the instance - void ReleaseNativeResource(); + // Add an entry to the log queue + void AddEntry( const std::string& szText, + const D3DCOLOR clrColor = D3DCOLOR_ARGB( 0xFF, 0xFF, 0xFF, 0x00 ) ); - // Recreate any native resources associated with the instance - void RecreateNativeResource(); + // Release any native resources associated with the instance + void ReleaseNativeResource(); - // Called during the render loop - void OnRender(); + // Recreate any native resources associated with the instance + void RecreateNativeResource(); -private: + // Called during the render loop + void OnRender(); - std::list asEntries; - ID3DXFont* piFont; - }; + private: -#endif // AV_LOG_DISPLAY_H_INCLUDE \ No newline at end of file + std::list asEntries; + ID3DXFont* piFont; + }; + +} diff --git a/tools/assimp_view/LogWindow.cpp b/tools/assimp_view/LogWindow.cpp index 7fd4a6179..1a53a972e 100644 --- a/tools/assimp_view/LogWindow.cpp +++ b/tools/assimp_view/LogWindow.cpp @@ -39,13 +39,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" #include "richedit.h" namespace AssimpView { -/* extern */ CLogWindow CLogWindow::s_cInstance; +CLogWindow CLogWindow::s_cInstance; + extern HKEY g_hRegistry; // header for the RTF log file diff --git a/tools/assimp_view/LogWindow.h b/tools/assimp_view/LogWindow.h index cc786e484..49862cdee 100644 --- a/tools/assimp_view/LogWindow.h +++ b/tools/assimp_view/LogWindow.h @@ -42,87 +42,92 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if (!defined AV_LOG_WINDOW_H_INCLUDED) #define AV_LOG_WINDOW_H_INCLUDE - -//------------------------------------------------------------------------------- -/** \brief Subclass of Assimp::LogStream used to add all log messages to the - * log window. -*/ -//------------------------------------------------------------------------------- -class CMyLogStream : public Assimp::LogStream +namespace AssimpView { -public: - /** @brief Implementation of the abstract method */ - void write(const char* message); -}; -//------------------------------------------------------------------------------- -/** \brief Class to display log strings in a separate window -*/ -//------------------------------------------------------------------------------- -class CLogWindow - { -private: - - friend class CMyLogStream; - friend INT_PTR CALLBACK LogDialogProc(HWND hwndDlg,UINT uMsg, - WPARAM wParam,LPARAM lParam); - - CLogWindow() : hwnd(NULL), bIsVisible(false), bUpdate(true) {} - -public: + //------------------------------------------------------------------------------- + /** \brief Subclass of Assimp::LogStream used to add all log messages to the + * log window. + */ + //------------------------------------------------------------------------------- + class CMyLogStream : public Assimp::LogStream + { + public: + /** @brief Implementation of the abstract method */ + void write( const char* message ); + }; - // Singleton accessors - static CLogWindow s_cInstance; - inline static CLogWindow& Instance () - { - return s_cInstance; - } + //------------------------------------------------------------------------------- + /** \brief Class to display log strings in a separate window + */ + //------------------------------------------------------------------------------- + class CLogWindow + { + private: - // initializes the log window - void Init (); + friend class CMyLogStream; + friend INT_PTR CALLBACK LogDialogProc( HWND hwndDlg, UINT uMsg, + WPARAM wParam, LPARAM lParam ); - // Shows the log window - void Show(); + CLogWindow() : hwnd( NULL ), bIsVisible( false ), bUpdate( true ) {} - // Clears the log window - void Clear(); - - // Save the log window to an user-defined file - void Save(); - - // write a line to the log window - void WriteLine(const char* message); - - // Set the bUpdate member - inline void SetAutoUpdate(bool b) - { - this->bUpdate = b; - } - - // updates the log file - void Update(); - -private: - - // Window handle - HWND hwnd; - - // current text of the window (contains RTF tags) - std::string szText; - std::string szPlainText; - - // is the log window currently visible? - bool bIsVisible; - - // Specified whether each new log message updates the log automatically - bool bUpdate; + public: -public: - // associated log stream - CMyLogStream* pcStream; - }; + // Singleton accessors + static CLogWindow s_cInstance; + inline static CLogWindow& Instance() + { + return s_cInstance; + } + + // initializes the log window + void Init(); + + // Shows the log window + void Show(); + + // Clears the log window + void Clear(); + + // Save the log window to an user-defined file + void Save(); + + // write a line to the log window + void WriteLine( const char* message ); + + // Set the bUpdate member + inline void SetAutoUpdate( bool b ) + { + this->bUpdate = b; + } + + // updates the log file + void Update(); + + private: + + // Window handle + HWND hwnd; + + // current text of the window (contains RTF tags) + std::string szText; + std::string szPlainText; + + // is the log window currently visible? + bool bIsVisible; + + // Specified whether each new log message updates the log automatically + bool bUpdate; + + + public: + // associated log stream + CMyLogStream* pcStream; + }; + +} #endif // AV_LOG_DISPLA \ No newline at end of file diff --git a/tools/assimp_view/Material.cpp b/tools/assimp_view/Material.cpp index 6f9aac341..d9646320b 100644 --- a/tools/assimp_view/Material.cpp +++ b/tools/assimp_view/Material.cpp @@ -38,15 +38,106 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ - -#include "stdafx.h" #include "assimp_view.h" +#include "MaterialManager.h" +#include "AssetHelper.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include <../code/StringComparison.h> + +#include +#include namespace AssimpView { + +using namespace Assimp; + +extern std::string g_szMaterialShader; +extern HINSTANCE g_hInstance /*= NULL*/; +extern HWND g_hDlg /*= NULL*/; +extern IDirect3D9* g_piD3D /*= NULL*/; +extern IDirect3DDevice9* g_piDevice /*= NULL*/; +extern IDirect3DVertexDeclaration9* gDefaultVertexDecl /*= NULL*/; +extern double g_fFPS /*= 0.0f*/; +extern char g_szFileName[ MAX_PATH ]; +extern ID3DXEffect* g_piDefaultEffect /*= NULL*/; +extern ID3DXEffect* g_piNormalsEffect /*= NULL*/; +extern ID3DXEffect* g_piPassThroughEffect /*= NULL*/; +extern ID3DXEffect* g_piPatternEffect /*= NULL*/; +extern bool g_bMousePressed /*= false*/; +extern bool g_bMousePressedR /*= false*/; +extern bool g_bMousePressedM /*= false*/; +extern bool g_bMousePressedBoth /*= false*/; +extern float g_fElpasedTime /*= 0.0f*/; +extern D3DCAPS9 g_sCaps; +extern bool g_bLoadingFinished /*= false*/; +extern HANDLE g_hThreadHandle /*= NULL*/; +extern float g_fWheelPos /*= -10.0f*/; +extern bool g_bLoadingCanceled /*= false*/; +extern IDirect3DTexture9* g_pcTexture /*= NULL*/; + +extern aiMatrix4x4 g_mWorld; +extern aiMatrix4x4 g_mWorldRotate; +extern aiVector3D g_vRotateSpeed /*= aiVector3D(0.5f,0.5f,0.5f)*/; + +extern aiVector3D g_avLightDirs[ 1 ] /* = + { aiVector3D(-0.5f,0.6f,0.2f) , + aiVector3D(-0.5f,0.5f,0.5f)} */; -/*static */ CMaterialManager CMaterialManager::s_cInstance; +extern POINT g_mousePos /*= {0,0};*/; +extern POINT g_LastmousePos /*= {0,0}*/; +extern bool g_bFPSView /*= false*/; +extern bool g_bInvert /*= false*/; +extern EClickPos g_eClick; +extern unsigned int g_iCurrentColor /*= 0*/; + +// NOTE: The light intensity is separated from the color, it can +// directly be manipulated using the middle mouse button. +// When the user chooses a color from the palette the intensity +// is reset to 1.0 +// index[2] is the ambient color +extern float g_fLightIntensity /*=0.0f*/; +extern D3DCOLOR g_avLightColors[ 3 ]; + +extern RenderOptions g_sOptions; +extern Camera g_sCamera; +extern AssetHelper *g_pcAsset /*= NULL*/; + + +// +// Contains the mask image for the HUD +// (used to determine the position of a click) +// +// The size of the image is identical to the size of the main +// HUD texture +// +extern unsigned char* g_szImageMask /*= NULL*/; + + +extern float g_fACMR /*= 3.0f*/; +extern IDirect3DQuery9* g_piQuery; + +extern bool g_bPlay /*= false*/; + +extern double g_dCurrent; +extern float g_smoothAngle /*= 80.f*/; + +extern unsigned int ppsteps, ppstepsdefault; +extern bool nopointslines; + + +CMaterialManager CMaterialManager::s_cInstance; //------------------------------------------------------------------------------- // D3DX callback function to fill a texture with a checkers pattern @@ -54,1350 +145,1350 @@ namespace AssimpView { // This pattern is used to mark textures which could not be loaded //------------------------------------------------------------------------------- VOID WINAPI FillFunc(D3DXVECTOR4* pOut, - CONST D3DXVECTOR2* pTexCoord, - CONST D3DXVECTOR2* pTexelSize, - LPVOID pData) + CONST D3DXVECTOR2* pTexCoord, + CONST D3DXVECTOR2* pTexelSize, + LPVOID pData) { - UNREFERENCED_PARAMETER(pData); - UNREFERENCED_PARAMETER(pTexelSize); + UNREFERENCED_PARAMETER(pData); + UNREFERENCED_PARAMETER(pTexelSize); - // generate a nice checker pattern (yellow/black) - // size of a square: 32 * 32 px - unsigned int iX = (unsigned int)(pTexCoord->x * 256.0f); - unsigned int iY = (unsigned int)(pTexCoord->y * 256.0f); + // generate a nice checker pattern (yellow/black) + // size of a square: 32 * 32 px + unsigned int iX = (unsigned int)(pTexCoord->x * 256.0f); + unsigned int iY = (unsigned int)(pTexCoord->y * 256.0f); - bool bBlack = false; - if ((iX / 32) % 2 == 0) - { - if ((iY / 32) % 2 == 0)bBlack = true; - } - else - { - if ((iY / 32) % 2 != 0)bBlack = true; - } - pOut->w = 1.0f; - if (bBlack) - { - pOut->x = pOut->y = pOut->z = 0.0f; - } - else - { - pOut->x = pOut->y = 1.0f; - pOut->z = 0.0f; - } - return; + bool bBlack = false; + if ((iX / 32) % 2 == 0) + { + if ((iY / 32) % 2 == 0)bBlack = true; + } + else + { + if ((iY / 32) % 2 != 0)bBlack = true; + } + pOut->w = 1.0f; + if (bBlack) + { + pOut->x = pOut->y = pOut->z = 0.0f; + } + else + { + pOut->x = pOut->y = 1.0f; + pOut->z = 0.0f; + } + return; } //------------------------------------------------------------------------------- int CMaterialManager::UpdateSpecularMaterials() - { - if (g_pcAsset && g_pcAsset->pcScene) - { - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - { - if (aiShadingMode_Phong == g_pcAsset->apcMeshes[i]->eShadingMode) - { - this->DeleteMaterial(g_pcAsset->apcMeshes[i]); - this->CreateMaterial(g_pcAsset->apcMeshes[i],g_pcAsset->pcScene->mMeshes[i]); - } - } - } - return 1; - } + { + if (g_pcAsset && g_pcAsset->pcScene) + { + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + { + if (aiShadingMode_Phong == g_pcAsset->apcMeshes[i]->eShadingMode) + { + this->DeleteMaterial(g_pcAsset->apcMeshes[i]); + this->CreateMaterial(g_pcAsset->apcMeshes[i],g_pcAsset->pcScene->mMeshes[i]); + } + } + } + return 1; + } //------------------------------------------------------------------------------- int CMaterialManager::SetDefaultTexture(IDirect3DTexture9** p_ppiOut) { - if (sDefaultTexture) { - sDefaultTexture->AddRef(); - *p_ppiOut = sDefaultTexture; - return 1; - } - if(FAILED(g_piDevice->CreateTexture( - 256, - 256, - 0, - 0, - D3DFMT_A8R8G8B8, - D3DPOOL_MANAGED, - p_ppiOut, - NULL))) - { - CLogDisplay::Instance().AddEntry("[ERROR] Unable to create default texture", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + if (sDefaultTexture) { + sDefaultTexture->AddRef(); + *p_ppiOut = sDefaultTexture; + return 1; + } + if(FAILED(g_piDevice->CreateTexture( + 256, + 256, + 0, + 0, + D3DFMT_A8R8G8B8, + D3DPOOL_MANAGED, + p_ppiOut, + NULL))) + { + CLogDisplay::Instance().AddEntry("[ERROR] Unable to create default texture", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - *p_ppiOut = NULL; - return 0; - } - D3DXFillTexture(*p_ppiOut,&FillFunc,NULL); - sDefaultTexture = *p_ppiOut; - sDefaultTexture->AddRef(); + *p_ppiOut = NULL; + return 0; + } + D3DXFillTexture(*p_ppiOut,&FillFunc,NULL); + sDefaultTexture = *p_ppiOut; + sDefaultTexture->AddRef(); - // {9785DA94-1D96-426b-B3CB-BADC36347F5E} - static const GUID guidPrivateData = - { 0x9785da94, 0x1d96, 0x426b, - { 0xb3, 0xcb, 0xba, 0xdc, 0x36, 0x34, 0x7f, 0x5e } }; + // {9785DA94-1D96-426b-B3CB-BADC36347F5E} + static const GUID guidPrivateData = + { 0x9785da94, 0x1d96, 0x426b, + { 0xb3, 0xcb, 0xba, 0xdc, 0x36, 0x34, 0x7f, 0x5e } }; - uint32_t iData = 0xFFFFFFFF; - (*p_ppiOut)->SetPrivateData(guidPrivateData,&iData,4,0); - return 1; + uint32_t iData = 0xFFFFFFFF; + (*p_ppiOut)->SetPrivateData(guidPrivateData,&iData,4,0); + return 1; } //------------------------------------------------------------------------------- bool CMaterialManager::TryLongerPath(char* szTemp,aiString* p_szString) { - char szTempB[MAX_PATH]; - strcpy(szTempB,szTemp); + char szTempB[MAX_PATH]; + strcpy(szTempB,szTemp); - // go to the beginning of the file name - char* szFile = strrchr(szTempB,'\\'); - if (!szFile)szFile = strrchr(szTempB,'/'); + // go to the beginning of the file name + char* szFile = strrchr(szTempB,'\\'); + if (!szFile)szFile = strrchr(szTempB,'/'); - char* szFile2 = szTemp + (szFile - szTempB)+1; - szFile++; - char* szExt = strrchr(szFile,'.'); - if (!szExt)return false; - szExt++; - *szFile = 0; + char* szFile2 = szTemp + (szFile - szTempB)+1; + szFile++; + char* szExt = strrchr(szFile,'.'); + if (!szExt)return false; + szExt++; + *szFile = 0; - strcat(szTempB,"*.*"); - const unsigned int iSize = (const unsigned int) ( szExt - 1 - szFile ); + strcat(szTempB,"*.*"); + const unsigned int iSize = (const unsigned int) ( szExt - 1 - szFile ); - HANDLE h; - WIN32_FIND_DATA info; + HANDLE h; + WIN32_FIND_DATA info; - // build a list of files - h = FindFirstFile(szTempB, &info); - if (h != INVALID_HANDLE_VALUE) - { - do - { - if (!(strcmp(info.cFileName, ".") == 0 || strcmp(info.cFileName, "..") == 0)) - { - char* szExtFound = strrchr(info.cFileName, '.'); - if (szExtFound) - { - ++szExtFound; - if (0 == ASSIMP_stricmp(szExtFound,szExt)) - { - const unsigned int iSizeFound = (const unsigned int) ( - szExtFound - 1 - info.cFileName); + // build a list of files + h = FindFirstFile(szTempB, &info); + if (h != INVALID_HANDLE_VALUE) + { + do + { + if (!(strcmp(info.cFileName, ".") == 0 || strcmp(info.cFileName, "..") == 0)) + { + char* szExtFound = strrchr(info.cFileName, '.'); + if (szExtFound) + { + ++szExtFound; + if (0 == ASSIMP_stricmp(szExtFound,szExt)) + { + const unsigned int iSizeFound = (const unsigned int) ( + szExtFound - 1 - info.cFileName); - for (unsigned int i = 0; i < iSizeFound;++i) - info.cFileName[i] = (CHAR)tolower(info.cFileName[i]); + for (unsigned int i = 0; i < iSizeFound;++i) + info.cFileName[i] = (CHAR)tolower(info.cFileName[i]); - if (0 == memcmp(info.cFileName,szFile2, std::min(iSizeFound,iSize))) - { - // we have it. Build the full path ... - char* sz = strrchr(szTempB,'*'); - *(sz-2) = 0x0; + if (0 == memcmp(info.cFileName,szFile2, min(iSizeFound,iSize))) + { + // we have it. Build the full path ... + char* sz = strrchr(szTempB,'*'); + *(sz-2) = 0x0; - strcat(szTempB,info.cFileName); + strcat(szTempB,info.cFileName); - // copy the result string back to the aiString - const size_t iLen = strlen(szTempB); - size_t iLen2 = iLen+1; - iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; - memcpy(p_szString->data,szTempB,iLen2); - p_szString->length = iLen; - return true; - } - } - // check whether the 8.3 DOS name is matching - if (0 == ASSIMP_stricmp(info.cAlternateFileName,p_szString->data)) - { - strcat(szTempB,info.cAlternateFileName); + // copy the result string back to the aiString + const size_t iLen = strlen(szTempB); + size_t iLen2 = iLen+1; + iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; + memcpy(p_szString->data,szTempB,iLen2); + p_szString->length = iLen; + return true; + } + } + // check whether the 8.3 DOS name is matching + if (0 == ASSIMP_stricmp(info.cAlternateFileName,p_szString->data)) + { + strcat(szTempB,info.cAlternateFileName); - // copy the result string back to the aiString - const size_t iLen = strlen(szTempB); - size_t iLen2 = iLen+1; - iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; - memcpy(p_szString->data,szTempB,iLen2); - p_szString->length = iLen; - return true; - } - } - } - } - while (FindNextFile(h, &info)); + // copy the result string back to the aiString + const size_t iLen = strlen(szTempB); + size_t iLen2 = iLen+1; + iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; + memcpy(p_szString->data,szTempB,iLen2); + p_szString->length = iLen; + return true; + } + } + } + } + while (FindNextFile(h, &info)); - FindClose(h); - } - return false; + FindClose(h); + } + return false; } //------------------------------------------------------------------------------- int CMaterialManager::FindValidPath(aiString* p_szString) { - ai_assert(NULL != p_szString); - aiString pcpy = *p_szString; - if ('*' == p_szString->data[0]) { - // '*' as first character indicates an embedded file - return 5; - } + ai_assert(NULL != p_szString); + aiString pcpy = *p_szString; + if ('*' == p_szString->data[0]) { + // '*' as first character indicates an embedded file + return 5; + } - // first check whether we can directly load the file - FILE* pFile = fopen(p_szString->data,"rb"); - if (pFile)fclose(pFile); - else - { - // check whether we can use the directory of the asset as relative base - char szTemp[MAX_PATH*2], tmp2[MAX_PATH*2]; - strcpy(szTemp, g_szFileName); - strcpy(tmp2,szTemp); + // first check whether we can directly load the file + FILE* pFile = fopen(p_szString->data,"rb"); + if (pFile)fclose(pFile); + else + { + // check whether we can use the directory of the asset as relative base + char szTemp[MAX_PATH*2], tmp2[MAX_PATH*2]; + strcpy(szTemp, g_szFileName); + strcpy(tmp2,szTemp); - char* szData = p_szString->data; - if (*szData == '\\' || *szData == '/')++szData; + char* szData = p_szString->data; + if (*szData == '\\' || *szData == '/')++szData; - char* szEnd = strrchr(szTemp,'\\'); - if (!szEnd) - { - szEnd = strrchr(szTemp,'/'); - if (!szEnd)szEnd = szTemp; - } - szEnd++; - *szEnd = 0; - strcat(szEnd,szData); + char* szEnd = strrchr(szTemp,'\\'); + if (!szEnd) + { + szEnd = strrchr(szTemp,'/'); + if (!szEnd)szEnd = szTemp; + } + szEnd++; + *szEnd = 0; + strcat(szEnd,szData); - pFile = fopen(szTemp,"rb"); - if (!pFile) - { - // convert the string to lower case - for (unsigned int i = 0;;++i) - { - if ('\0' == szTemp[i])break; - szTemp[i] = (char)tolower(szTemp[i]); - } + pFile = fopen(szTemp,"rb"); + if (!pFile) + { + // convert the string to lower case + for (unsigned int i = 0;;++i) + { + if ('\0' == szTemp[i])break; + szTemp[i] = (char)tolower(szTemp[i]); + } - if(TryLongerPath(szTemp,p_szString))return 1; - *szEnd = 0; + if(TryLongerPath(szTemp,p_szString))return 1; + *szEnd = 0; - // search common sub directories - strcat(szEnd,"tex\\"); - strcat(szEnd,szData); + // search common sub directories + strcat(szEnd,"tex\\"); + strcat(szEnd,szData); - pFile = fopen(szTemp,"rb"); - if (!pFile) - { - if(TryLongerPath(szTemp,p_szString))return 1; + pFile = fopen(szTemp,"rb"); + if (!pFile) + { + if(TryLongerPath(szTemp,p_szString))return 1; - *szEnd = 0; + *szEnd = 0; - strcat(szEnd,"textures\\"); - strcat(szEnd,szData); + strcat(szEnd,"textures\\"); + strcat(szEnd,szData); - pFile = fopen(szTemp,"rb"); - if (!pFile) - { - if(TryLongerPath(szTemp, p_szString))return 1; - } + pFile = fopen(szTemp,"rb"); + if (!pFile) + { + if(TryLongerPath(szTemp, p_szString))return 1; + } - // patch by mark sibly to look for textures files in the asset's base directory. - const char *path=pcpy.data; - const char *p=strrchr( path,'/' ); - if( !p ) p=strrchr( path,'\\' ); - if( p ){ - char *q=strrchr( tmp2,'/' ); - if( !q ) q=strrchr( tmp2,'\\' ); - if( q ){ - strcpy( q+1,p+1 ); - if((pFile=fopen( tmp2,"r" ))){ - fclose( pFile ); - strcpy(p_szString->data,tmp2); - p_szString->length = strlen(tmp2); - return 1; - } - } - } - return 0; - } - } - fclose(pFile); + // patch by mark sibly to look for textures files in the asset's base directory. + const char *path=pcpy.data; + const char *p=strrchr( path,'/' ); + if( !p ) p=strrchr( path,'\\' ); + if( p ){ + char *q=strrchr( tmp2,'/' ); + if( !q ) q=strrchr( tmp2,'\\' ); + if( q ){ + strcpy( q+1,p+1 ); + if((pFile=fopen( tmp2,"r" ))){ + fclose( pFile ); + strcpy(p_szString->data,tmp2); + p_szString->length = strlen(tmp2); + return 1; + } + } + } + return 0; + } + } + fclose(pFile); - // copy the result string back to the aiString - const size_t iLen = strlen(szTemp); - size_t iLen2 = iLen+1; - iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; - memcpy(p_szString->data,szTemp,iLen2); - p_szString->length = iLen; + // copy the result string back to the aiString + const size_t iLen = strlen(szTemp); + size_t iLen2 = iLen+1; + iLen2 = iLen2 > MAXLEN ? MAXLEN : iLen2; + memcpy(p_szString->data,szTemp,iLen2); + p_szString->length = iLen; - } - return 1; + } + return 1; } //------------------------------------------------------------------------------- int CMaterialManager::LoadTexture(IDirect3DTexture9** p_ppiOut,aiString* szPath) { - ai_assert(NULL != p_ppiOut); - ai_assert(NULL != szPath); + ai_assert(NULL != p_ppiOut); + ai_assert(NULL != szPath); - *p_ppiOut = NULL; + *p_ppiOut = NULL; - const std::string s = szPath->data; - TextureCache::iterator ff; - if ((ff = sCachedTextures.find(s)) != sCachedTextures.end()) { - *p_ppiOut = (*ff).second; - (*p_ppiOut)->AddRef(); - return 1; - } + const std::string s = szPath->data; + TextureCache::iterator ff; + if ((ff = sCachedTextures.find(s)) != sCachedTextures.end()) { + *p_ppiOut = (*ff).second; + (*p_ppiOut)->AddRef(); + return 1; + } - // first get a valid path to the texture - if( 5 == FindValidPath(szPath)) - { - // embedded file. Find its index - unsigned int iIndex = atoi(szPath->data+1); - if (iIndex < g_pcAsset->pcScene->mNumTextures) - { - if (0 == g_pcAsset->pcScene->mTextures[iIndex]->mHeight) - { - // it is an embedded file ... don't need the file format hint, - // simply let D3DX load the file - D3DXIMAGE_INFO info; - if (FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, - g_pcAsset->pcScene->mTextures[iIndex]->pcData, - g_pcAsset->pcScene->mTextures[iIndex]->mWidth, - D3DX_DEFAULT, - D3DX_DEFAULT, - 1, - D3DUSAGE_AUTOGENMIPMAP, - D3DFMT_UNKNOWN, - D3DPOOL_MANAGED, - D3DX_DEFAULT, - D3DX_DEFAULT, - 0, - &info, - NULL, - p_ppiOut))) - { - std::string sz = "[ERROR] Unable to load embedded texture (#1): "; - sz.append(szPath->data); - CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + // first get a valid path to the texture + if( 5 == FindValidPath(szPath)) + { + // embedded file. Find its index + unsigned int iIndex = atoi(szPath->data+1); + if (iIndex < g_pcAsset->pcScene->mNumTextures) + { + if (0 == g_pcAsset->pcScene->mTextures[iIndex]->mHeight) + { + // it is an embedded file ... don't need the file format hint, + // simply let D3DX load the file + D3DXIMAGE_INFO info; + if (FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, + g_pcAsset->pcScene->mTextures[iIndex]->pcData, + g_pcAsset->pcScene->mTextures[iIndex]->mWidth, + D3DX_DEFAULT, + D3DX_DEFAULT, + 1, + D3DUSAGE_AUTOGENMIPMAP, + D3DFMT_UNKNOWN, + D3DPOOL_MANAGED, + D3DX_DEFAULT, + D3DX_DEFAULT, + 0, + &info, + NULL, + p_ppiOut))) + { + std::string sz = "[ERROR] Unable to load embedded texture (#1): "; + sz.append(szPath->data); + CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - this->SetDefaultTexture(p_ppiOut); - return 1; - } - } - else - { - // fill a new texture ... - if(FAILED(g_piDevice->CreateTexture( - g_pcAsset->pcScene->mTextures[iIndex]->mWidth, - g_pcAsset->pcScene->mTextures[iIndex]->mHeight, - 0,D3DUSAGE_AUTOGENMIPMAP,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,p_ppiOut,NULL))) - { - std::string sz = "[ERROR] Unable to load embedded texture (#2): "; - sz.append(szPath->data); - CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + this->SetDefaultTexture(p_ppiOut); + return 1; + } + } + else + { + // fill a new texture ... + if(FAILED(g_piDevice->CreateTexture( + g_pcAsset->pcScene->mTextures[iIndex]->mWidth, + g_pcAsset->pcScene->mTextures[iIndex]->mHeight, + 0,D3DUSAGE_AUTOGENMIPMAP,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,p_ppiOut,NULL))) + { + std::string sz = "[ERROR] Unable to load embedded texture (#2): "; + sz.append(szPath->data); + CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - this->SetDefaultTexture(p_ppiOut); - return 1; - } + this->SetDefaultTexture(p_ppiOut); + return 1; + } - // now copy the data to it ... (assume non pow2 to be supported) - D3DLOCKED_RECT sLock; - (*p_ppiOut)->LockRect(0,&sLock,NULL,0); + // now copy the data to it ... (assume non pow2 to be supported) + D3DLOCKED_RECT sLock; + (*p_ppiOut)->LockRect(0,&sLock,NULL,0); - const aiTexel* pcData = g_pcAsset->pcScene->mTextures[iIndex]->pcData; + const aiTexel* pcData = g_pcAsset->pcScene->mTextures[iIndex]->pcData; - for (unsigned int y = 0; y < g_pcAsset->pcScene->mTextures[iIndex]->mHeight;++y) - { - memcpy(sLock.pBits,pcData,g_pcAsset->pcScene->mTextures[iIndex]-> - mWidth *sizeof(aiTexel)); - sLock.pBits = (char*)sLock.pBits + sLock.Pitch; - pcData += g_pcAsset->pcScene->mTextures[iIndex]->mWidth; - } - (*p_ppiOut)->UnlockRect(0); - (*p_ppiOut)->GenerateMipSubLevels(); - } - sCachedTextures[s] = *p_ppiOut; - (*p_ppiOut)->AddRef(); - return 1; - } - else - { - std::string sz = "[ERROR] Invalid index for embedded texture: "; - sz.append(szPath->data); - CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + for (unsigned int y = 0; y < g_pcAsset->pcScene->mTextures[iIndex]->mHeight;++y) + { + memcpy(sLock.pBits,pcData,g_pcAsset->pcScene->mTextures[iIndex]-> + mWidth *sizeof(aiTexel)); + sLock.pBits = (char*)sLock.pBits + sLock.Pitch; + pcData += g_pcAsset->pcScene->mTextures[iIndex]->mWidth; + } + (*p_ppiOut)->UnlockRect(0); + (*p_ppiOut)->GenerateMipSubLevels(); + } + sCachedTextures[s] = *p_ppiOut; + (*p_ppiOut)->AddRef(); + return 1; + } + else + { + std::string sz = "[ERROR] Invalid index for embedded texture: "; + sz.append(szPath->data); + CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - SetDefaultTexture(p_ppiOut); - return 1; - } - } + SetDefaultTexture(p_ppiOut); + return 1; + } + } - // then call D3DX to load the texture - if (FAILED(D3DXCreateTextureFromFileEx( - g_piDevice, - szPath->data, - D3DX_DEFAULT, - D3DX_DEFAULT, - 0, - 0, - D3DFMT_A8R8G8B8, - D3DPOOL_MANAGED, - D3DX_DEFAULT, - D3DX_DEFAULT, - 0, - NULL, - NULL, - p_ppiOut))) - { - // error ... use the default texture instead - std::string sz = "[ERROR] Unable to load texture: "; - sz.append(szPath->data); - CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + // then call D3DX to load the texture + if (FAILED(D3DXCreateTextureFromFileEx( + g_piDevice, + szPath->data, + D3DX_DEFAULT, + D3DX_DEFAULT, + 0, + 0, + D3DFMT_A8R8G8B8, + D3DPOOL_MANAGED, + D3DX_DEFAULT, + D3DX_DEFAULT, + 0, + NULL, + NULL, + p_ppiOut))) + { + // error ... use the default texture instead + std::string sz = "[ERROR] Unable to load texture: "; + sz.append(szPath->data); + CLogDisplay::Instance().AddEntry(sz,D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - this->SetDefaultTexture(p_ppiOut); - } - sCachedTextures[s] = *p_ppiOut; - (*p_ppiOut)->AddRef(); + this->SetDefaultTexture(p_ppiOut); + } + sCachedTextures[s] = *p_ppiOut; + (*p_ppiOut)->AddRef(); - return 1; + return 1; } //------------------------------------------------------------------------------- void CMaterialManager::DeleteMaterial(AssetHelper::MeshHelper* pcIn) { - if (!pcIn || !pcIn->piEffect)return; - pcIn->piEffect->Release(); + if (!pcIn || !pcIn->piEffect)return; + pcIn->piEffect->Release(); - // release all textures associated with the material - if (pcIn->piDiffuseTexture) - { - pcIn->piDiffuseTexture->Release(); - pcIn->piDiffuseTexture = NULL; - } - if (pcIn->piSpecularTexture) - { - pcIn->piSpecularTexture->Release(); - pcIn->piSpecularTexture = NULL; - } - if (pcIn->piEmissiveTexture) - { - pcIn->piEmissiveTexture->Release(); - pcIn->piEmissiveTexture = NULL; - } - if (pcIn->piAmbientTexture) - { - pcIn->piAmbientTexture->Release(); - pcIn->piAmbientTexture = NULL; - } - if (pcIn->piOpacityTexture) - { - pcIn->piOpacityTexture->Release(); - pcIn->piOpacityTexture = NULL; - } - if (pcIn->piNormalTexture) - { - pcIn->piNormalTexture->Release(); - pcIn->piNormalTexture = NULL; - } - if (pcIn->piShininessTexture) - { - pcIn->piShininessTexture->Release(); - pcIn->piShininessTexture = NULL; - } - if (pcIn->piLightmapTexture) - { - pcIn->piLightmapTexture->Release(); - pcIn->piLightmapTexture = NULL; - } - pcIn->piEffect = NULL; + // release all textures associated with the material + if (pcIn->piDiffuseTexture) + { + pcIn->piDiffuseTexture->Release(); + pcIn->piDiffuseTexture = NULL; + } + if (pcIn->piSpecularTexture) + { + pcIn->piSpecularTexture->Release(); + pcIn->piSpecularTexture = NULL; + } + if (pcIn->piEmissiveTexture) + { + pcIn->piEmissiveTexture->Release(); + pcIn->piEmissiveTexture = NULL; + } + if (pcIn->piAmbientTexture) + { + pcIn->piAmbientTexture->Release(); + pcIn->piAmbientTexture = NULL; + } + if (pcIn->piOpacityTexture) + { + pcIn->piOpacityTexture->Release(); + pcIn->piOpacityTexture = NULL; + } + if (pcIn->piNormalTexture) + { + pcIn->piNormalTexture->Release(); + pcIn->piNormalTexture = NULL; + } + if (pcIn->piShininessTexture) + { + pcIn->piShininessTexture->Release(); + pcIn->piShininessTexture = NULL; + } + if (pcIn->piLightmapTexture) + { + pcIn->piLightmapTexture->Release(); + pcIn->piLightmapTexture = NULL; + } + pcIn->piEffect = NULL; } //------------------------------------------------------------------------------- void CMaterialManager::HMtoNMIfNecessary( - IDirect3DTexture9* piTexture, - IDirect3DTexture9** piTextureOut, - bool bWasOriginallyHM) + IDirect3DTexture9* piTexture, + IDirect3DTexture9** piTextureOut, + bool bWasOriginallyHM) { - ai_assert(NULL != piTexture); - ai_assert(NULL != piTextureOut); + ai_assert(NULL != piTexture); + ai_assert(NULL != piTextureOut); - bool bMustConvert = false; - uintptr_t iElement = 3; + bool bMustConvert = false; + uintptr_t iElement = 3; - *piTextureOut = piTexture; + *piTextureOut = piTexture; - // Lock the input texture and try to determine its type. - // Criterias: - // - If r,g,b channel are identical it MUST be a height map - // - If one of the rgb channels is used and the others are empty it - // must be a height map, too. - // - If the average color of the whole image is something inside the - // purple range we can be sure it is a normal map - // - // - Otherwise we assume it is a normal map - // To increase performance we take not every pixel + // Lock the input texture and try to determine its type. + // Criterias: + // - If r,g,b channel are identical it MUST be a height map + // - If one of the rgb channels is used and the others are empty it + // must be a height map, too. + // - If the average color of the whole image is something inside the + // purple range we can be sure it is a normal map + // + // - Otherwise we assume it is a normal map + // To increase performance we take not every pixel - D3DLOCKED_RECT sRect; - D3DSURFACE_DESC sDesc; - piTexture->GetLevelDesc(0,&sDesc); - if (FAILED(piTexture->LockRect(0,&sRect,NULL,D3DLOCK_READONLY))) - { - return; - } - const int iPitchDiff = (int)sRect.Pitch - (int)(sDesc.Width * 4); + D3DLOCKED_RECT sRect; + D3DSURFACE_DESC sDesc; + piTexture->GetLevelDesc(0,&sDesc); + if (FAILED(piTexture->LockRect(0,&sRect,NULL,D3DLOCK_READONLY))) + { + return; + } + const int iPitchDiff = (int)sRect.Pitch - (int)(sDesc.Width * 4); - struct SColor - { - union - { - struct {unsigned char b,g,r,a;}; - char _array[4]; - }; - }; - const SColor* pcData = (const SColor*)sRect.pBits; + struct SColor + { + union + { + struct {unsigned char b,g,r,a;}; + char _array[4]; + }; + }; + const SColor* pcData = (const SColor*)sRect.pBits; - union - { - const SColor* pcPointer; - const unsigned char* pcCharPointer; - }; - pcPointer = pcData; + union + { + const SColor* pcPointer; + const unsigned char* pcCharPointer; + }; + pcPointer = pcData; - // 1. If r,g,b channel are identical it MUST be a height map - bool bIsEqual = true; - for (unsigned int y = 0; y < sDesc.Height;++y) - { - for (unsigned int x = 0; x < sDesc.Width;++x) - { - if (pcPointer->b != pcPointer->r || pcPointer->b != pcPointer->g) - { - bIsEqual = false; - break; - } - pcPointer++; - } - pcCharPointer += iPitchDiff; - } - if (bIsEqual)bMustConvert = true; - else - { - // 2. If one of the rgb channels is used and the others are empty it - // must be a height map, too. - pcPointer = pcData; - while (*pcCharPointer == 0)pcCharPointer++; + // 1. If r,g,b channel are identical it MUST be a height map + bool bIsEqual = true; + for (unsigned int y = 0; y < sDesc.Height;++y) + { + for (unsigned int x = 0; x < sDesc.Width;++x) + { + if (pcPointer->b != pcPointer->r || pcPointer->b != pcPointer->g) + { + bIsEqual = false; + break; + } + pcPointer++; + } + pcCharPointer += iPitchDiff; + } + if (bIsEqual)bMustConvert = true; + else + { + // 2. If one of the rgb channels is used and the others are empty it + // must be a height map, too. + pcPointer = pcData; + while (*pcCharPointer == 0)pcCharPointer++; - iElement = (uintptr_t)(pcCharPointer - (unsigned char*)pcData) % 4; - unsigned int aiIndex[3] = {0,1,2}; - if (3 != iElement)aiIndex[iElement] = 3; + iElement = (uintptr_t)(pcCharPointer - (unsigned char*)pcData) % 4; + unsigned int aiIndex[3] = {0,1,2}; + if (3 != iElement)aiIndex[iElement] = 3; - pcPointer = pcData; + pcPointer = pcData; - bIsEqual = true; - if (3 != iElement) - { - for (unsigned int y = 0; y < sDesc.Height;++y) - { - for (unsigned int x = 0; x < sDesc.Width;++x) - { - for (unsigned int ii = 0; ii < 3;++ii) - { - // don't take the alpha channel into account. - // if the texture was stored n RGB888 format D3DX has - // converted it to ARGB8888 format with a fixed alpha channel - if (aiIndex[ii] != 3 && pcPointer->_array[aiIndex[ii]] != 0) - { - bIsEqual = false; - break; - } - } - pcPointer++; - } - pcCharPointer += iPitchDiff; - } - if (bIsEqual)bMustConvert = true; - else - { - // If the average color of the whole image is something inside the - // purple range we can be sure it is a normal map + bIsEqual = true; + if (3 != iElement) + { + for (unsigned int y = 0; y < sDesc.Height;++y) + { + for (unsigned int x = 0; x < sDesc.Width;++x) + { + for (unsigned int ii = 0; ii < 3;++ii) + { + // don't take the alpha channel into account. + // if the texture was stored n RGB888 format D3DX has + // converted it to ARGB8888 format with a fixed alpha channel + if (aiIndex[ii] != 3 && pcPointer->_array[aiIndex[ii]] != 0) + { + bIsEqual = false; + break; + } + } + pcPointer++; + } + pcCharPointer += iPitchDiff; + } + if (bIsEqual)bMustConvert = true; + else + { + // If the average color of the whole image is something inside the + // purple range we can be sure it is a normal map - // (calculate the average color line per line to prevent overflows!) - pcPointer = pcData; - aiColor3D clrColor; - for (unsigned int y = 0; y < sDesc.Height;++y) - { - aiColor3D clrColorLine; - for (unsigned int x = 0; x < sDesc.Width;++x) - { - clrColorLine.r += pcPointer->r; - clrColorLine.g += pcPointer->g; - clrColorLine.b += pcPointer->b; - pcPointer++; - } - clrColor.r += clrColorLine.r /= (float)sDesc.Width; - clrColor.g += clrColorLine.g /= (float)sDesc.Width; - clrColor.b += clrColorLine.b /= (float)sDesc.Width; - pcCharPointer += iPitchDiff; - } - clrColor.r /= (float)sDesc.Height; - clrColor.g /= (float)sDesc.Height; - clrColor.b /= (float)sDesc.Height; + // (calculate the average color line per line to prevent overflows!) + pcPointer = pcData; + aiColor3D clrColor; + for (unsigned int y = 0; y < sDesc.Height;++y) + { + aiColor3D clrColorLine; + for (unsigned int x = 0; x < sDesc.Width;++x) + { + clrColorLine.r += pcPointer->r; + clrColorLine.g += pcPointer->g; + clrColorLine.b += pcPointer->b; + pcPointer++; + } + clrColor.r += clrColorLine.r /= (float)sDesc.Width; + clrColor.g += clrColorLine.g /= (float)sDesc.Width; + clrColor.b += clrColorLine.b /= (float)sDesc.Width; + pcCharPointer += iPitchDiff; + } + clrColor.r /= (float)sDesc.Height; + clrColor.g /= (float)sDesc.Height; + clrColor.b /= (float)sDesc.Height; - if (!(clrColor.b > 215 && - clrColor.r > 100 && clrColor.r < 140 && - clrColor.g > 100 && clrColor.g < 140)) - { - // Unable to detect. Believe the original value obtained from the loader - if (bWasOriginallyHM) - { - bMustConvert = true; - } - } - } - } - } + if (!(clrColor.b > 215 && + clrColor.r > 100 && clrColor.r < 140 && + clrColor.g > 100 && clrColor.g < 140)) + { + // Unable to detect. Believe the original value obtained from the loader + if (bWasOriginallyHM) + { + bMustConvert = true; + } + } + } + } + } - piTexture->UnlockRect(0); + piTexture->UnlockRect(0); - // if the input data is assumed to be a height map we'll - // need to convert it NOW - if (bMustConvert) - { - D3DSURFACE_DESC sDesc; - piTexture->GetLevelDesc(0, &sDesc); + // if the input data is assumed to be a height map we'll + // need to convert it NOW + if (bMustConvert) + { + D3DSURFACE_DESC sDesc; + piTexture->GetLevelDesc(0, &sDesc); - IDirect3DTexture9* piTempTexture; - if(FAILED(g_piDevice->CreateTexture( - sDesc.Width, - sDesc.Height, - piTexture->GetLevelCount(), - sDesc.Usage, - sDesc.Format, - sDesc.Pool, &piTempTexture, NULL))) - { - CLogDisplay::Instance().AddEntry( - "[ERROR] Unable to create normal map texture", - D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - return; - } + IDirect3DTexture9* piTempTexture; + if(FAILED(g_piDevice->CreateTexture( + sDesc.Width, + sDesc.Height, + piTexture->GetLevelCount(), + sDesc.Usage, + sDesc.Format, + sDesc.Pool, &piTempTexture, NULL))) + { + CLogDisplay::Instance().AddEntry( + "[ERROR] Unable to create normal map texture", + D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + return; + } - DWORD dwFlags; - if (3 == iElement)dwFlags = D3DX_CHANNEL_LUMINANCE; - else if (2 == iElement)dwFlags = D3DX_CHANNEL_RED; - else if (1 == iElement)dwFlags = D3DX_CHANNEL_GREEN; - else /*if (0 == iElement)*/dwFlags = D3DX_CHANNEL_BLUE; + DWORD dwFlags; + if (3 == iElement)dwFlags = D3DX_CHANNEL_LUMINANCE; + else if (2 == iElement)dwFlags = D3DX_CHANNEL_RED; + else if (1 == iElement)dwFlags = D3DX_CHANNEL_GREEN; + else /*if (0 == iElement)*/dwFlags = D3DX_CHANNEL_BLUE; - if(FAILED(D3DXComputeNormalMap(piTempTexture, - piTexture,NULL,0,dwFlags,1.0f))) - { - CLogDisplay::Instance().AddEntry( - "[ERROR] Unable to compute normal map from height map", - D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); + if(FAILED(D3DXComputeNormalMap(piTempTexture, + piTexture,NULL,0,dwFlags,1.0f))) + { + CLogDisplay::Instance().AddEntry( + "[ERROR] Unable to compute normal map from height map", + D3DCOLOR_ARGB(0xFF,0xFF,0x0,0x0)); - piTempTexture->Release(); - return; - } - *piTextureOut = piTempTexture; - piTexture->Release(); - } + piTempTexture->Release(); + return; + } + *piTextureOut = piTempTexture; + piTexture->Release(); + } } //------------------------------------------------------------------------------- bool CMaterialManager::HasAlphaPixels(IDirect3DTexture9* piTexture) { - ai_assert(NULL != piTexture); + ai_assert(NULL != piTexture); - D3DLOCKED_RECT sRect; - D3DSURFACE_DESC sDesc; - piTexture->GetLevelDesc(0,&sDesc); - if (FAILED(piTexture->LockRect(0,&sRect,NULL,D3DLOCK_READONLY))) - { - return false; - } - const int iPitchDiff = (int)sRect.Pitch - (int)(sDesc.Width * 4); + D3DLOCKED_RECT sRect; + D3DSURFACE_DESC sDesc; + piTexture->GetLevelDesc(0,&sDesc); + if (FAILED(piTexture->LockRect(0,&sRect,NULL,D3DLOCK_READONLY))) + { + return false; + } + const int iPitchDiff = (int)sRect.Pitch - (int)(sDesc.Width * 4); - struct SColor - { - unsigned char b,g,r,a;; - }; - const SColor* pcData = (const SColor*)sRect.pBits; + struct SColor + { + unsigned char b,g,r,a;; + }; + const SColor* pcData = (const SColor*)sRect.pBits; - union - { - const SColor* pcPointer; - const unsigned char* pcCharPointer; - }; - pcPointer = pcData; - for (unsigned int y = 0; y < sDesc.Height;++y) - { - for (unsigned int x = 0; x < sDesc.Width;++x) - { - if (pcPointer->a != 0xFF) - { - piTexture->UnlockRect(0); - return true; - } - pcPointer++; - } - pcCharPointer += iPitchDiff; - } - piTexture->UnlockRect(0); - return false; + union + { + const SColor* pcPointer; + const unsigned char* pcCharPointer; + }; + pcPointer = pcData; + for (unsigned int y = 0; y < sDesc.Height;++y) + { + for (unsigned int x = 0; x < sDesc.Width;++x) + { + if (pcPointer->a != 0xFF) + { + piTexture->UnlockRect(0); + return true; + } + pcPointer++; + } + pcCharPointer += iPitchDiff; + } + piTexture->UnlockRect(0); + return false; } //------------------------------------------------------------------------------- int CMaterialManager::CreateMaterial( - AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSource) + AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSource) { - ai_assert(NULL != pcMesh); - ai_assert(NULL != pcSource); + ai_assert(NULL != pcMesh); + ai_assert(NULL != pcSource); - ID3DXBuffer* piBuffer; + ID3DXBuffer* piBuffer; - D3DXMACRO sMacro[64]; + D3DXMACRO sMacro[64]; - // extract all properties from the ASSIMP material structure - const aiMaterial* pcMat = g_pcAsset->pcScene->mMaterials[pcSource->mMaterialIndex]; + // extract all properties from the ASSIMP material structure + const aiMaterial* pcMat = g_pcAsset->pcScene->mMaterials[pcSource->mMaterialIndex]; - // - // DIFFUSE COLOR -------------------------------------------------- - // - if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_DIFFUSE, - (aiColor4D*)&pcMesh->vDiffuseColor)) - { - pcMesh->vDiffuseColor.x = 1.0f; - pcMesh->vDiffuseColor.y = 1.0f; - pcMesh->vDiffuseColor.z = 1.0f; - pcMesh->vDiffuseColor.w = 1.0f; - } - // - // SPECULAR COLOR -------------------------------------------------- - // - if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_SPECULAR, - (aiColor4D*)&pcMesh->vSpecularColor)) - { - pcMesh->vSpecularColor.x = 1.0f; - pcMesh->vSpecularColor.y = 1.0f; - pcMesh->vSpecularColor.z = 1.0f; - pcMesh->vSpecularColor.w = 1.0f; - } - // - // AMBIENT COLOR -------------------------------------------------- - // - if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_AMBIENT, - (aiColor4D*)&pcMesh->vAmbientColor)) - { - pcMesh->vAmbientColor.x = 0.0f; - pcMesh->vAmbientColor.y = 0.0f; - pcMesh->vAmbientColor.z = 0.0f; - pcMesh->vAmbientColor.w = 1.0f; - } - // - // EMISSIVE COLOR ------------------------------------------------- - // - if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_EMISSIVE, - (aiColor4D*)&pcMesh->vEmissiveColor)) - { - pcMesh->vEmissiveColor.x = 0.0f; - pcMesh->vEmissiveColor.y = 0.0f; - pcMesh->vEmissiveColor.z = 0.0f; - pcMesh->vEmissiveColor.w = 1.0f; - } + // + // DIFFUSE COLOR -------------------------------------------------- + // + if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_DIFFUSE, + (aiColor4D*)&pcMesh->vDiffuseColor)) + { + pcMesh->vDiffuseColor.x = 1.0f; + pcMesh->vDiffuseColor.y = 1.0f; + pcMesh->vDiffuseColor.z = 1.0f; + pcMesh->vDiffuseColor.w = 1.0f; + } + // + // SPECULAR COLOR -------------------------------------------------- + // + if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_SPECULAR, + (aiColor4D*)&pcMesh->vSpecularColor)) + { + pcMesh->vSpecularColor.x = 1.0f; + pcMesh->vSpecularColor.y = 1.0f; + pcMesh->vSpecularColor.z = 1.0f; + pcMesh->vSpecularColor.w = 1.0f; + } + // + // AMBIENT COLOR -------------------------------------------------- + // + if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_AMBIENT, + (aiColor4D*)&pcMesh->vAmbientColor)) + { + pcMesh->vAmbientColor.x = 0.0f; + pcMesh->vAmbientColor.y = 0.0f; + pcMesh->vAmbientColor.z = 0.0f; + pcMesh->vAmbientColor.w = 1.0f; + } + // + // EMISSIVE COLOR ------------------------------------------------- + // + if(AI_SUCCESS != aiGetMaterialColor(pcMat,AI_MATKEY_COLOR_EMISSIVE, + (aiColor4D*)&pcMesh->vEmissiveColor)) + { + pcMesh->vEmissiveColor.x = 0.0f; + pcMesh->vEmissiveColor.y = 0.0f; + pcMesh->vEmissiveColor.z = 0.0f; + pcMesh->vEmissiveColor.w = 1.0f; + } - // - // Opacity -------------------------------------------------------- - // - if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_OPACITY,&pcMesh->fOpacity)) - { - pcMesh->fOpacity = 1.0f; - } + // + // Opacity -------------------------------------------------------- + // + if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_OPACITY,&pcMesh->fOpacity)) + { + pcMesh->fOpacity = 1.0f; + } - // - // Shading Model -------------------------------------------------- - // - bool bDefault = false; - if(AI_SUCCESS != aiGetMaterialInteger(pcMat,AI_MATKEY_SHADING_MODEL,(int*)&pcMesh->eShadingMode )) - { - bDefault = true; - pcMesh->eShadingMode = aiShadingMode_Gouraud; - } + // + // Shading Model -------------------------------------------------- + // + bool bDefault = false; + if(AI_SUCCESS != aiGetMaterialInteger(pcMat,AI_MATKEY_SHADING_MODEL,(int*)&pcMesh->eShadingMode )) + { + bDefault = true; + pcMesh->eShadingMode = aiShadingMode_Gouraud; + } - // - // Shininess ------------------------------------------------------ - // - if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_SHININESS,&pcMesh->fShininess)) - { - // assume 15 as default shininess - pcMesh->fShininess = 15.0f; - } - else if (bDefault)pcMesh->eShadingMode = aiShadingMode_Phong; + // + // Shininess ------------------------------------------------------ + // + if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_SHININESS,&pcMesh->fShininess)) + { + // assume 15 as default shininess + pcMesh->fShininess = 15.0f; + } + else if (bDefault)pcMesh->eShadingMode = aiShadingMode_Phong; - // - // Shininess strength ------------------------------------------------------ - // - if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_SHININESS_STRENGTH,&pcMesh->fSpecularStrength)) - { - // assume 1.0 as default shininess strength - pcMesh->fSpecularStrength = 1.0f; - } + // + // Shininess strength ------------------------------------------------------ + // + if(AI_SUCCESS != aiGetMaterialFloat(pcMat,AI_MATKEY_SHININESS_STRENGTH,&pcMesh->fSpecularStrength)) + { + // assume 1.0 as default shininess strength + pcMesh->fSpecularStrength = 1.0f; + } - aiString szPath; + aiString szPath; - aiTextureMapMode mapU(aiTextureMapMode_Wrap),mapV(aiTextureMapMode_Wrap); + aiTextureMapMode mapU(aiTextureMapMode_Wrap),mapV(aiTextureMapMode_Wrap); - bool bib =false; - if (pcSource->mTextureCoords[0]) - { + bool bib =false; + if (pcSource->mTextureCoords[0]) + { - // - // DIFFUSE TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_DIFFUSE(0),&szPath)) - { - LoadTexture(&pcMesh->piDiffuseTexture,&szPath); + // + // DIFFUSE TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_DIFFUSE(0),&szPath)) + { + LoadTexture(&pcMesh->piDiffuseTexture,&szPath); - aiGetMaterialInteger(pcMat,AI_MATKEY_MAPPINGMODE_U_DIFFUSE(0),(int*)&mapU); - aiGetMaterialInteger(pcMat,AI_MATKEY_MAPPINGMODE_V_DIFFUSE(0),(int*)&mapV); - } + aiGetMaterialInteger(pcMat,AI_MATKEY_MAPPINGMODE_U_DIFFUSE(0),(int*)&mapU); + aiGetMaterialInteger(pcMat,AI_MATKEY_MAPPINGMODE_V_DIFFUSE(0),(int*)&mapV); + } - // - // SPECULAR TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_SPECULAR(0),&szPath)) - { - LoadTexture(&pcMesh->piSpecularTexture,&szPath); - } + // + // SPECULAR TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_SPECULAR(0),&szPath)) + { + LoadTexture(&pcMesh->piSpecularTexture,&szPath); + } - // - // OPACITY TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_OPACITY(0),&szPath)) - { - LoadTexture(&pcMesh->piOpacityTexture,&szPath); - } - else - { - int flags = 0; - aiGetMaterialInteger(pcMat,AI_MATKEY_TEXFLAGS_DIFFUSE(0),&flags); + // + // OPACITY TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_OPACITY(0),&szPath)) + { + LoadTexture(&pcMesh->piOpacityTexture,&szPath); + } + else + { + int flags = 0; + aiGetMaterialInteger(pcMat,AI_MATKEY_TEXFLAGS_DIFFUSE(0),&flags); - // try to find out whether the diffuse texture has any - // non-opaque pixels. If we find a few, use it as opacity texture - if (pcMesh->piDiffuseTexture && !(flags & aiTextureFlags_IgnoreAlpha) && HasAlphaPixels(pcMesh->piDiffuseTexture)) - { - int iVal; + // try to find out whether the diffuse texture has any + // non-opaque pixels. If we find a few, use it as opacity texture + if (pcMesh->piDiffuseTexture && !(flags & aiTextureFlags_IgnoreAlpha) && HasAlphaPixels(pcMesh->piDiffuseTexture)) + { + int iVal; - // NOTE: This special value is set by the tree view if the user - // manually removes the alpha texture from the view ... - if (AI_SUCCESS != aiGetMaterialInteger(pcMat,"no_a_from_d",0,0,&iVal)) - { - pcMesh->piOpacityTexture = pcMesh->piDiffuseTexture; - pcMesh->piOpacityTexture->AddRef(); - } - } - } + // NOTE: This special value is set by the tree view if the user + // manually removes the alpha texture from the view ... + if (AI_SUCCESS != aiGetMaterialInteger(pcMat,"no_a_from_d",0,0,&iVal)) + { + pcMesh->piOpacityTexture = pcMesh->piDiffuseTexture; + pcMesh->piOpacityTexture->AddRef(); + } + } + } - // - // AMBIENT TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_AMBIENT(0),&szPath)) - { - LoadTexture(&pcMesh->piAmbientTexture,&szPath); - } + // + // AMBIENT TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_AMBIENT(0),&szPath)) + { + LoadTexture(&pcMesh->piAmbientTexture,&szPath); + } - // - // EMISSIVE TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_EMISSIVE(0),&szPath)) - { - LoadTexture(&pcMesh->piEmissiveTexture,&szPath); - } + // + // EMISSIVE TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_EMISSIVE(0),&szPath)) + { + LoadTexture(&pcMesh->piEmissiveTexture,&szPath); + } - // - // Shininess TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_SHININESS(0),&szPath)) - { - LoadTexture(&pcMesh->piShininessTexture,&szPath); - } + // + // Shininess TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_SHININESS(0),&szPath)) + { + LoadTexture(&pcMesh->piShininessTexture,&szPath); + } - // - // Lightmap TEXTURE ------------------------------------------------ - // - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_LIGHTMAP(0),&szPath)) - { - LoadTexture(&pcMesh->piLightmapTexture,&szPath); - } + // + // Lightmap TEXTURE ------------------------------------------------ + // + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_LIGHTMAP(0),&szPath)) + { + LoadTexture(&pcMesh->piLightmapTexture,&szPath); + } - // - // NORMAL/HEIGHT MAP ------------------------------------------------ - // - bool bHM = false; - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_NORMALS(0),&szPath)) - { - LoadTexture(&pcMesh->piNormalTexture,&szPath); - } - else - { - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_HEIGHT(0),&szPath)) - { - LoadTexture(&pcMesh->piNormalTexture,&szPath); - } - else bib = true; - bHM = true; - } + // + // NORMAL/HEIGHT MAP ------------------------------------------------ + // + bool bHM = false; + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_NORMALS(0),&szPath)) + { + LoadTexture(&pcMesh->piNormalTexture,&szPath); + } + else + { + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_TEXTURE_HEIGHT(0),&szPath)) + { + LoadTexture(&pcMesh->piNormalTexture,&szPath); + } + else bib = true; + bHM = true; + } - // normal/height maps are sometimes mixed up. Try to detect the type - // of the texture automatically - if (pcMesh->piNormalTexture) - { - HMtoNMIfNecessary(pcMesh->piNormalTexture, &pcMesh->piNormalTexture,bHM); - } - } + // normal/height maps are sometimes mixed up. Try to detect the type + // of the texture automatically + if (pcMesh->piNormalTexture) + { + HMtoNMIfNecessary(pcMesh->piNormalTexture, &pcMesh->piNormalTexture,bHM); + } + } - // check whether a global background texture is contained - // in this material. Some loaders set this value ... - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_GLOBAL_BACKGROUND_IMAGE,&szPath)) - { - CBackgroundPainter::Instance().SetTextureBG(szPath.data); - } + // check whether a global background texture is contained + // in this material. Some loaders set this value ... + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_GLOBAL_BACKGROUND_IMAGE,&szPath)) + { + CBackgroundPainter::Instance().SetTextureBG(szPath.data); + } - // BUGFIX: If the shininess is 0.0f disable phong lighting - // This is a workaround for some meshes in the DX SDK (e.g. tiny.x) - // FIX: Added this check to the x-loader, but the line remains to - // catch other loader doing the same ... - if (0.0f == pcMesh->fShininess){ - pcMesh->eShadingMode = aiShadingMode_Gouraud; - } + // BUGFIX: If the shininess is 0.0f disable phong lighting + // This is a workaround for some meshes in the DX SDK (e.g. tiny.x) + // FIX: Added this check to the x-loader, but the line remains to + // catch other loader doing the same ... + if (0.0f == pcMesh->fShininess){ + pcMesh->eShadingMode = aiShadingMode_Gouraud; + } - int two_sided = 0; - aiGetMaterialInteger(pcMat,AI_MATKEY_TWOSIDED,&two_sided); - pcMesh->twosided = (two_sided != 0); + int two_sided = 0; + aiGetMaterialInteger(pcMat,AI_MATKEY_TWOSIDED,&two_sided); + pcMesh->twosided = (two_sided != 0); - // check whether we have already a material using the same - // shader. This will decrease loading time rapidly ... - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - { - if (g_pcAsset->pcScene->mMeshes[i] == pcSource) - { - break; - } - AssetHelper::MeshHelper* pc = g_pcAsset->apcMeshes[i]; + // check whether we have already a material using the same + // shader. This will decrease loading time rapidly ... + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + { + if (g_pcAsset->pcScene->mMeshes[i] == pcSource) + { + break; + } + AssetHelper::MeshHelper* pc = g_pcAsset->apcMeshes[i]; - if ((pcMesh->piDiffuseTexture != NULL ? true : false) != - (pc->piDiffuseTexture != NULL ? true : false)) - continue; - if ((pcMesh->piSpecularTexture != NULL ? true : false) != - (pc->piSpecularTexture != NULL ? true : false)) - continue; - if ((pcMesh->piAmbientTexture != NULL ? true : false) != - (pc->piAmbientTexture != NULL ? true : false)) - continue; - if ((pcMesh->piEmissiveTexture != NULL ? true : false) != - (pc->piEmissiveTexture != NULL ? true : false)) - continue; - if ((pcMesh->piNormalTexture != NULL ? true : false) != - (pc->piNormalTexture != NULL ? true : false)) - continue; - if ((pcMesh->piOpacityTexture != NULL ? true : false) != - (pc->piOpacityTexture != NULL ? true : false)) - continue; - if ((pcMesh->piShininessTexture != NULL ? true : false) != - (pc->piShininessTexture != NULL ? true : false)) - continue; - if ((pcMesh->piLightmapTexture != NULL ? true : false) != - (pc->piLightmapTexture != NULL ? true : false)) - continue; - if ((pcMesh->eShadingMode != aiShadingMode_Gouraud ? true : false) != - (pc->eShadingMode != aiShadingMode_Gouraud ? true : false)) - continue; + if ((pcMesh->piDiffuseTexture != NULL ? true : false) != + (pc->piDiffuseTexture != NULL ? true : false)) + continue; + if ((pcMesh->piSpecularTexture != NULL ? true : false) != + (pc->piSpecularTexture != NULL ? true : false)) + continue; + if ((pcMesh->piAmbientTexture != NULL ? true : false) != + (pc->piAmbientTexture != NULL ? true : false)) + continue; + if ((pcMesh->piEmissiveTexture != NULL ? true : false) != + (pc->piEmissiveTexture != NULL ? true : false)) + continue; + if ((pcMesh->piNormalTexture != NULL ? true : false) != + (pc->piNormalTexture != NULL ? true : false)) + continue; + if ((pcMesh->piOpacityTexture != NULL ? true : false) != + (pc->piOpacityTexture != NULL ? true : false)) + continue; + if ((pcMesh->piShininessTexture != NULL ? true : false) != + (pc->piShininessTexture != NULL ? true : false)) + continue; + if ((pcMesh->piLightmapTexture != NULL ? true : false) != + (pc->piLightmapTexture != NULL ? true : false)) + continue; + if ((pcMesh->eShadingMode != aiShadingMode_Gouraud ? true : false) != + (pc->eShadingMode != aiShadingMode_Gouraud ? true : false)) + continue; - if ((pcMesh->fOpacity != 1.0f ? true : false) != (pc->fOpacity != 1.0f ? true : false)) - continue; + if ((pcMesh->fOpacity != 1.0f ? true : false) != (pc->fOpacity != 1.0f ? true : false)) + continue; - if (pcSource->HasBones() != g_pcAsset->pcScene->mMeshes[i]->HasBones()) - continue; + if (pcSource->HasBones() != g_pcAsset->pcScene->mMeshes[i]->HasBones()) + continue; - // we can reuse this material - if (pc->piEffect) - { - pcMesh->piEffect = pc->piEffect; - pc->bSharedFX = pcMesh->bSharedFX = true; - pcMesh->piEffect->AddRef(); - return 2; - } - } - m_iShaderCount++; + // we can reuse this material + if (pc->piEffect) + { + pcMesh->piEffect = pc->piEffect; + pc->bSharedFX = pcMesh->bSharedFX = true; + pcMesh->piEffect->AddRef(); + return 2; + } + } + m_iShaderCount++; - // build macros for the HLSL compiler - unsigned int iCurrent = 0; - if (pcMesh->piDiffuseTexture) - { - sMacro[iCurrent].Name = "AV_DIFFUSE_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + // build macros for the HLSL compiler + unsigned int iCurrent = 0; + if (pcMesh->piDiffuseTexture) + { + sMacro[iCurrent].Name = "AV_DIFFUSE_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - if (mapU == aiTextureMapMode_Wrap) - sMacro[iCurrent].Name = "AV_WRAPU"; - else if (mapU == aiTextureMapMode_Mirror) - sMacro[iCurrent].Name = "AV_MIRRORU"; - else // if (mapU == aiTextureMapMode_Clamp) - sMacro[iCurrent].Name = "AV_CLAMPU"; + if (mapU == aiTextureMapMode_Wrap) + sMacro[iCurrent].Name = "AV_WRAPU"; + else if (mapU == aiTextureMapMode_Mirror) + sMacro[iCurrent].Name = "AV_MIRRORU"; + else // if (mapU == aiTextureMapMode_Clamp) + sMacro[iCurrent].Name = "AV_CLAMPU"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - if (mapV == aiTextureMapMode_Wrap) - sMacro[iCurrent].Name = "AV_WRAPV"; - else if (mapV == aiTextureMapMode_Mirror) - sMacro[iCurrent].Name = "AV_MIRRORV"; - else // if (mapV == aiTextureMapMode_Clamp) - sMacro[iCurrent].Name = "AV_CLAMPV"; + if (mapV == aiTextureMapMode_Wrap) + sMacro[iCurrent].Name = "AV_WRAPV"; + else if (mapV == aiTextureMapMode_Mirror) + sMacro[iCurrent].Name = "AV_MIRRORV"; + else // if (mapV == aiTextureMapMode_Clamp) + sMacro[iCurrent].Name = "AV_CLAMPV"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - if (pcMesh->piSpecularTexture) - { - sMacro[iCurrent].Name = "AV_SPECULAR_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - if (pcMesh->piAmbientTexture) - { - sMacro[iCurrent].Name = "AV_AMBIENT_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - if (pcMesh->piEmissiveTexture) - { - sMacro[iCurrent].Name = "AV_EMISSIVE_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - char buff[32]; - if (pcMesh->piLightmapTexture) - { - sMacro[iCurrent].Name = "AV_LIGHTMAP_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + if (pcMesh->piSpecularTexture) + { + sMacro[iCurrent].Name = "AV_SPECULAR_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + if (pcMesh->piAmbientTexture) + { + sMacro[iCurrent].Name = "AV_AMBIENT_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + if (pcMesh->piEmissiveTexture) + { + sMacro[iCurrent].Name = "AV_EMISSIVE_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + char buff[32]; + if (pcMesh->piLightmapTexture) + { + sMacro[iCurrent].Name = "AV_LIGHTMAP_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - int idx; - if(AI_SUCCESS == aiGetMaterialInteger(pcMat,AI_MATKEY_UVWSRC_LIGHTMAP(0),&idx) && idx >= 1 && pcSource->mTextureCoords[idx]) { - sMacro[iCurrent].Name = "AV_TWO_UV"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + int idx; + if(AI_SUCCESS == aiGetMaterialInteger(pcMat,AI_MATKEY_UVWSRC_LIGHTMAP(0),&idx) && idx >= 1 && pcSource->mTextureCoords[idx]) { + sMacro[iCurrent].Name = "AV_TWO_UV"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - sMacro[iCurrent].Definition = "IN.TexCoord1"; - } - else sMacro[iCurrent].Definition = "IN.TexCoord0"; - sMacro[iCurrent].Name = "AV_LIGHTMAP_TEXTURE_UV_COORD"; + sMacro[iCurrent].Definition = "IN.TexCoord1"; + } + else sMacro[iCurrent].Definition = "IN.TexCoord0"; + sMacro[iCurrent].Name = "AV_LIGHTMAP_TEXTURE_UV_COORD"; - ++iCurrent;float f= 1.f; - aiGetMaterialFloat(pcMat,AI_MATKEY_TEXBLEND_LIGHTMAP(0),&f); - sprintf(buff,"%f",f); + ++iCurrent;float f= 1.f; + aiGetMaterialFloat(pcMat,AI_MATKEY_TEXBLEND_LIGHTMAP(0),&f); + sprintf(buff,"%f",f); - sMacro[iCurrent].Name = "LM_STRENGTH"; - sMacro[iCurrent].Definition = buff; - ++iCurrent; - } - if (pcMesh->piNormalTexture && !bib) - { - sMacro[iCurrent].Name = "AV_NORMAL_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - if (pcMesh->piOpacityTexture) - { - sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + sMacro[iCurrent].Name = "LM_STRENGTH"; + sMacro[iCurrent].Definition = buff; + ++iCurrent; + } + if (pcMesh->piNormalTexture && !bib) + { + sMacro[iCurrent].Name = "AV_NORMAL_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + if (pcMesh->piOpacityTexture) + { + sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - if (pcMesh->piOpacityTexture == pcMesh->piDiffuseTexture) - { - sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE_REGISTER_MASK"; - sMacro[iCurrent].Definition = "a"; - ++iCurrent; - } - else - { - sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE_REGISTER_MASK"; - sMacro[iCurrent].Definition = "r"; - ++iCurrent; - } - } + if (pcMesh->piOpacityTexture == pcMesh->piDiffuseTexture) + { + sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE_REGISTER_MASK"; + sMacro[iCurrent].Definition = "a"; + ++iCurrent; + } + else + { + sMacro[iCurrent].Name = "AV_OPACITY_TEXTURE_REGISTER_MASK"; + sMacro[iCurrent].Definition = "r"; + ++iCurrent; + } + } - if (pcMesh->eShadingMode != aiShadingMode_Gouraud && !g_sOptions.bNoSpecular) - { - sMacro[iCurrent].Name = "AV_SPECULAR_COMPONENT"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; + if (pcMesh->eShadingMode != aiShadingMode_Gouraud && !g_sOptions.bNoSpecular) + { + sMacro[iCurrent].Name = "AV_SPECULAR_COMPONENT"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; - if (pcMesh->piShininessTexture) - { - sMacro[iCurrent].Name = "AV_SHININESS_TEXTURE"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - } - if (1.0f != pcMesh->fOpacity) - { - sMacro[iCurrent].Name = "AV_OPACITY"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } + if (pcMesh->piShininessTexture) + { + sMacro[iCurrent].Name = "AV_SHININESS_TEXTURE"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + } + if (1.0f != pcMesh->fOpacity) + { + sMacro[iCurrent].Name = "AV_OPACITY"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } - if( pcSource->HasBones()) - { - sMacro[iCurrent].Name = "AV_SKINNING"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } + if( pcSource->HasBones()) + { + sMacro[iCurrent].Name = "AV_SKINNING"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } - // If a cubemap is active, we'll need to lookup it for calculating - // a physically correct reflection - if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()) - { - sMacro[iCurrent].Name = "AV_SKYBOX_LOOKUP"; - sMacro[iCurrent].Definition = "1"; - ++iCurrent; - } - sMacro[iCurrent].Name = NULL; - sMacro[iCurrent].Definition = NULL; + // If a cubemap is active, we'll need to lookup it for calculating + // a physically correct reflection + if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()) + { + sMacro[iCurrent].Name = "AV_SKYBOX_LOOKUP"; + sMacro[iCurrent].Definition = "1"; + ++iCurrent; + } + sMacro[iCurrent].Name = NULL; + sMacro[iCurrent].Definition = NULL; - // compile the shader - if(FAILED( D3DXCreateEffect(g_piDevice, - g_szMaterialShader.c_str(),(UINT)g_szMaterialShader.length(), - (const D3DXMACRO*)sMacro,NULL,0,NULL,&pcMesh->piEffect,&piBuffer))) - { - // failed to compile the shader - if( piBuffer) - { - MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); - piBuffer->Release(); - } - // use the default material instead - if (g_piDefaultEffect) - { - pcMesh->piEffect = g_piDefaultEffect; - g_piDefaultEffect->AddRef(); - } + // compile the shader + if(FAILED( D3DXCreateEffect(g_piDevice, + g_szMaterialShader.c_str(),(UINT)g_szMaterialShader.length(), + (const D3DXMACRO*)sMacro,NULL,0,NULL,&pcMesh->piEffect,&piBuffer))) + { + // failed to compile the shader + if( piBuffer) + { + MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); + piBuffer->Release(); + } + // use the default material instead + if (g_piDefaultEffect) + { + pcMesh->piEffect = g_piDefaultEffect; + g_piDefaultEffect->AddRef(); + } - // get the name of the material and use it in the log message - if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_NAME,&szPath) && - '\0' != szPath.data[0]) - { - std::string sz = "[ERROR] Unable to load material: "; - sz.append(szPath.data); - CLogDisplay::Instance().AddEntry(sz); - } - else - { - CLogDisplay::Instance().AddEntry("Unable to load material: UNNAMED"); - } - return 0; - } else - { - // use Fixed Function effect when working with shaderless cards - if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) - pcMesh->piEffect->SetTechnique( "MaterialFX_FF"); - } + // get the name of the material and use it in the log message + if(AI_SUCCESS == aiGetMaterialString(pcMat,AI_MATKEY_NAME,&szPath) && + '\0' != szPath.data[0]) + { + std::string sz = "[ERROR] Unable to load material: "; + sz.append(szPath.data); + CLogDisplay::Instance().AddEntry(sz); + } + else + { + CLogDisplay::Instance().AddEntry("Unable to load material: UNNAMED"); + } + return 0; + } else + { + // use Fixed Function effect when working with shaderless cards + if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) + pcMesh->piEffect->SetTechnique( "MaterialFX_FF"); + } - if( piBuffer) piBuffer->Release(); + if( piBuffer) piBuffer->Release(); - // now commit all constants to the shader - // - // This is not necessary for shared shader. Shader constants for - // shared shaders are automatically recommited before the shader - // is being used for a particular mesh + // now commit all constants to the shader + // + // This is not necessary for shared shader. Shader constants for + // shared shaders are automatically recommited before the shader + // is being used for a particular mesh - if (1.0f != pcMesh->fOpacity) - pcMesh->piEffect->SetFloat("TRANSPARENCY",pcMesh->fOpacity); - if (pcMesh->eShadingMode != aiShadingMode_Gouraud && !g_sOptions.bNoSpecular) - { - pcMesh->piEffect->SetFloat("SPECULARITY",pcMesh->fShininess); - pcMesh->piEffect->SetFloat("SPECULAR_STRENGTH",pcMesh->fSpecularStrength); - } + if (1.0f != pcMesh->fOpacity) + pcMesh->piEffect->SetFloat("TRANSPARENCY",pcMesh->fOpacity); + if (pcMesh->eShadingMode != aiShadingMode_Gouraud && !g_sOptions.bNoSpecular) + { + pcMesh->piEffect->SetFloat("SPECULARITY",pcMesh->fShininess); + pcMesh->piEffect->SetFloat("SPECULAR_STRENGTH",pcMesh->fSpecularStrength); + } - pcMesh->piEffect->SetVector("DIFFUSE_COLOR",&pcMesh->vDiffuseColor); - pcMesh->piEffect->SetVector("SPECULAR_COLOR",&pcMesh->vSpecularColor); - pcMesh->piEffect->SetVector("AMBIENT_COLOR",&pcMesh->vAmbientColor); - pcMesh->piEffect->SetVector("EMISSIVE_COLOR",&pcMesh->vEmissiveColor); + pcMesh->piEffect->SetVector("DIFFUSE_COLOR",&pcMesh->vDiffuseColor); + pcMesh->piEffect->SetVector("SPECULAR_COLOR",&pcMesh->vSpecularColor); + pcMesh->piEffect->SetVector("AMBIENT_COLOR",&pcMesh->vAmbientColor); + pcMesh->piEffect->SetVector("EMISSIVE_COLOR",&pcMesh->vEmissiveColor); - if (pcMesh->piDiffuseTexture) - pcMesh->piEffect->SetTexture("DIFFUSE_TEXTURE",pcMesh->piDiffuseTexture); - if (pcMesh->piOpacityTexture) - pcMesh->piEffect->SetTexture("OPACITY_TEXTURE",pcMesh->piOpacityTexture); - if (pcMesh->piSpecularTexture) - pcMesh->piEffect->SetTexture("SPECULAR_TEXTURE",pcMesh->piSpecularTexture); - if (pcMesh->piAmbientTexture) - pcMesh->piEffect->SetTexture("AMBIENT_TEXTURE",pcMesh->piAmbientTexture); - if (pcMesh->piEmissiveTexture) - pcMesh->piEffect->SetTexture("EMISSIVE_TEXTURE",pcMesh->piEmissiveTexture); - if (pcMesh->piNormalTexture) - pcMesh->piEffect->SetTexture("NORMAL_TEXTURE",pcMesh->piNormalTexture); - if (pcMesh->piShininessTexture) - pcMesh->piEffect->SetTexture("SHININESS_TEXTURE",pcMesh->piShininessTexture); - if (pcMesh->piLightmapTexture) - pcMesh->piEffect->SetTexture("LIGHTMAP_TEXTURE",pcMesh->piLightmapTexture); + if (pcMesh->piDiffuseTexture) + pcMesh->piEffect->SetTexture("DIFFUSE_TEXTURE",pcMesh->piDiffuseTexture); + if (pcMesh->piOpacityTexture) + pcMesh->piEffect->SetTexture("OPACITY_TEXTURE",pcMesh->piOpacityTexture); + if (pcMesh->piSpecularTexture) + pcMesh->piEffect->SetTexture("SPECULAR_TEXTURE",pcMesh->piSpecularTexture); + if (pcMesh->piAmbientTexture) + pcMesh->piEffect->SetTexture("AMBIENT_TEXTURE",pcMesh->piAmbientTexture); + if (pcMesh->piEmissiveTexture) + pcMesh->piEffect->SetTexture("EMISSIVE_TEXTURE",pcMesh->piEmissiveTexture); + if (pcMesh->piNormalTexture) + pcMesh->piEffect->SetTexture("NORMAL_TEXTURE",pcMesh->piNormalTexture); + if (pcMesh->piShininessTexture) + pcMesh->piEffect->SetTexture("SHININESS_TEXTURE",pcMesh->piShininessTexture); + if (pcMesh->piLightmapTexture) + pcMesh->piEffect->SetTexture("LIGHTMAP_TEXTURE",pcMesh->piLightmapTexture); - if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()){ - pcMesh->piEffect->SetTexture("lw_tex_envmap",CBackgroundPainter::Instance().GetTexture()); - } + if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()){ + pcMesh->piEffect->SetTexture("lw_tex_envmap",CBackgroundPainter::Instance().GetTexture()); + } - return 1; + return 1; } //------------------------------------------------------------------------------- int CMaterialManager::SetupMaterial ( - AssetHelper::MeshHelper* pcMesh, - const aiMatrix4x4& pcProj, - const aiMatrix4x4& aiMe, - const aiMatrix4x4& pcCam, - const aiVector3D& vPos) + AssetHelper::MeshHelper* pcMesh, + const aiMatrix4x4& pcProj, + const aiMatrix4x4& aiMe, + const aiMatrix4x4& pcCam, + const aiVector3D& vPos) { - ai_assert(NULL != pcMesh); - if (!pcMesh->piEffect)return 0; + ai_assert(NULL != pcMesh); + if (!pcMesh->piEffect)return 0; - ID3DXEffect* piEnd = pcMesh->piEffect; + ID3DXEffect* piEnd = pcMesh->piEffect; - piEnd->SetMatrix("WorldViewProjection", - (const D3DXMATRIX*)&pcProj); + piEnd->SetMatrix("WorldViewProjection", + (const D3DXMATRIX*)&pcProj); - piEnd->SetMatrix("World",(const D3DXMATRIX*)&aiMe); - piEnd->SetMatrix("WorldInverseTranspose", - (const D3DXMATRIX*)&pcCam); + piEnd->SetMatrix("World",(const D3DXMATRIX*)&aiMe); + piEnd->SetMatrix("WorldInverseTranspose", + (const D3DXMATRIX*)&pcCam); - D3DXVECTOR4 apcVec[5]; - memset(apcVec,0,sizeof(apcVec)); - apcVec[0].x = g_avLightDirs[0].x; - apcVec[0].y = g_avLightDirs[0].y; - apcVec[0].z = g_avLightDirs[0].z; - apcVec[0].w = 0.0f; - apcVec[1].x = g_avLightDirs[0].x * -1.0f; - apcVec[1].y = g_avLightDirs[0].y * -1.0f; - apcVec[1].z = g_avLightDirs[0].z * -1.0f; - apcVec[1].w = 0.0f; - D3DXVec4Normalize(&apcVec[0],&apcVec[0]); - D3DXVec4Normalize(&apcVec[1],&apcVec[1]); - piEnd->SetVectorArray("afLightDir",apcVec,5); + D3DXVECTOR4 apcVec[5]; + memset(apcVec,0,sizeof(apcVec)); + apcVec[0].x = g_avLightDirs[0].x; + apcVec[0].y = g_avLightDirs[0].y; + apcVec[0].z = g_avLightDirs[0].z; + apcVec[0].w = 0.0f; + apcVec[1].x = g_avLightDirs[0].x * -1.0f; + apcVec[1].y = g_avLightDirs[0].y * -1.0f; + apcVec[1].z = g_avLightDirs[0].z * -1.0f; + apcVec[1].w = 0.0f; + D3DXVec4Normalize(&apcVec[0],&apcVec[0]); + D3DXVec4Normalize(&apcVec[1],&apcVec[1]); + piEnd->SetVectorArray("afLightDir",apcVec,5); - apcVec[0].x = ((g_avLightColors[0] >> 16) & 0xFF) / 255.0f; - apcVec[0].y = ((g_avLightColors[0] >> 8) & 0xFF) / 255.0f; - apcVec[0].z = ((g_avLightColors[0]) & 0xFF) / 255.0f; - apcVec[0].w = 1.0f; + apcVec[0].x = ((g_avLightColors[0] >> 16) & 0xFF) / 255.0f; + apcVec[0].y = ((g_avLightColors[0] >> 8) & 0xFF) / 255.0f; + apcVec[0].z = ((g_avLightColors[0]) & 0xFF) / 255.0f; + apcVec[0].w = 1.0f; - if( g_sOptions.b3Lights) - { - apcVec[1].x = ((g_avLightColors[1] >> 16) & 0xFF) / 255.0f; - apcVec[1].y = ((g_avLightColors[1] >> 8) & 0xFF) / 255.0f; - apcVec[1].z = ((g_avLightColors[1]) & 0xFF) / 255.0f; - apcVec[1].w = 0.0f; - } else - { - apcVec[1].x = 0.0f; - apcVec[1].y = 0.0f; - apcVec[1].z = 0.0f; - apcVec[1].w = 0.0f; - } + if( g_sOptions.b3Lights) + { + apcVec[1].x = ((g_avLightColors[1] >> 16) & 0xFF) / 255.0f; + apcVec[1].y = ((g_avLightColors[1] >> 8) & 0xFF) / 255.0f; + apcVec[1].z = ((g_avLightColors[1]) & 0xFF) / 255.0f; + apcVec[1].w = 0.0f; + } else + { + apcVec[1].x = 0.0f; + apcVec[1].y = 0.0f; + apcVec[1].z = 0.0f; + apcVec[1].w = 0.0f; + } - apcVec[0] *= g_fLightIntensity; - apcVec[1] *= g_fLightIntensity; - piEnd->SetVectorArray("afLightColor",apcVec,5); + apcVec[0] *= g_fLightIntensity; + apcVec[1] *= g_fLightIntensity; + piEnd->SetVectorArray("afLightColor",apcVec,5); - apcVec[0].x = ((g_avLightColors[2] >> 16) & 0xFF) / 255.0f; - apcVec[0].y = ((g_avLightColors[2] >> 8) & 0xFF) / 255.0f; - apcVec[0].z = ((g_avLightColors[2]) & 0xFF) / 255.0f; - apcVec[0].w = 1.0f; + apcVec[0].x = ((g_avLightColors[2] >> 16) & 0xFF) / 255.0f; + apcVec[0].y = ((g_avLightColors[2] >> 8) & 0xFF) / 255.0f; + apcVec[0].z = ((g_avLightColors[2]) & 0xFF) / 255.0f; + apcVec[0].w = 1.0f; - apcVec[1].x = ((g_avLightColors[2] >> 16) & 0xFF) / 255.0f; - apcVec[1].y = ((g_avLightColors[2] >> 8) & 0xFF) / 255.0f; - apcVec[1].z = ((g_avLightColors[2]) & 0xFF) / 255.0f; - apcVec[1].w = 0.0f; + apcVec[1].x = ((g_avLightColors[2] >> 16) & 0xFF) / 255.0f; + apcVec[1].y = ((g_avLightColors[2] >> 8) & 0xFF) / 255.0f; + apcVec[1].z = ((g_avLightColors[2]) & 0xFF) / 255.0f; + apcVec[1].w = 0.0f; - // FIX: light intensity doesn't apply to ambient color - //apcVec[0] *= g_fLightIntensity; - //apcVec[1] *= g_fLightIntensity; - piEnd->SetVectorArray("afLightColorAmbient",apcVec,5); + // FIX: light intensity doesn't apply to ambient color + //apcVec[0] *= g_fLightIntensity; + //apcVec[1] *= g_fLightIntensity; + piEnd->SetVectorArray("afLightColorAmbient",apcVec,5); - apcVec[0].x = vPos.x; - apcVec[0].y = vPos.y; - apcVec[0].z = vPos.z; - piEnd->SetVector( "vCameraPos",&apcVec[0]); + apcVec[0].x = vPos.x; + apcVec[0].y = vPos.y; + apcVec[0].z = vPos.z; + piEnd->SetVector( "vCameraPos",&apcVec[0]); - // if the effect instance is shared by multiple materials we need to - // recommit its whole state once per frame ... - if (pcMesh->bSharedFX) - { - // now commit all constants to the shader - if (1.0f != pcMesh->fOpacity) - pcMesh->piEffect->SetFloat("TRANSPARENCY",pcMesh->fOpacity); - if (pcMesh->eShadingMode != aiShadingMode_Gouraud) - { - pcMesh->piEffect->SetFloat("SPECULARITY",pcMesh->fShininess); - pcMesh->piEffect->SetFloat("SPECULAR_STRENGTH",pcMesh->fSpecularStrength); - } + // if the effect instance is shared by multiple materials we need to + // recommit its whole state once per frame ... + if (pcMesh->bSharedFX) + { + // now commit all constants to the shader + if (1.0f != pcMesh->fOpacity) + pcMesh->piEffect->SetFloat("TRANSPARENCY",pcMesh->fOpacity); + if (pcMesh->eShadingMode != aiShadingMode_Gouraud) + { + pcMesh->piEffect->SetFloat("SPECULARITY",pcMesh->fShininess); + pcMesh->piEffect->SetFloat("SPECULAR_STRENGTH",pcMesh->fSpecularStrength); + } - pcMesh->piEffect->SetVector("DIFFUSE_COLOR",&pcMesh->vDiffuseColor); - pcMesh->piEffect->SetVector("SPECULAR_COLOR",&pcMesh->vSpecularColor); - pcMesh->piEffect->SetVector("AMBIENT_COLOR",&pcMesh->vAmbientColor); - pcMesh->piEffect->SetVector("EMISSIVE_COLOR",&pcMesh->vEmissiveColor); + pcMesh->piEffect->SetVector("DIFFUSE_COLOR",&pcMesh->vDiffuseColor); + pcMesh->piEffect->SetVector("SPECULAR_COLOR",&pcMesh->vSpecularColor); + pcMesh->piEffect->SetVector("AMBIENT_COLOR",&pcMesh->vAmbientColor); + pcMesh->piEffect->SetVector("EMISSIVE_COLOR",&pcMesh->vEmissiveColor); - if (pcMesh->piOpacityTexture) - pcMesh->piEffect->SetTexture("OPACITY_TEXTURE",pcMesh->piOpacityTexture); - if (pcMesh->piDiffuseTexture) - pcMesh->piEffect->SetTexture("DIFFUSE_TEXTURE",pcMesh->piDiffuseTexture); - if (pcMesh->piSpecularTexture) - pcMesh->piEffect->SetTexture("SPECULAR_TEXTURE",pcMesh->piSpecularTexture); - if (pcMesh->piAmbientTexture) - pcMesh->piEffect->SetTexture("AMBIENT_TEXTURE",pcMesh->piAmbientTexture); - if (pcMesh->piEmissiveTexture) - pcMesh->piEffect->SetTexture("EMISSIVE_TEXTURE",pcMesh->piEmissiveTexture); - if (pcMesh->piNormalTexture) - pcMesh->piEffect->SetTexture("NORMAL_TEXTURE",pcMesh->piNormalTexture); - if (pcMesh->piShininessTexture) - pcMesh->piEffect->SetTexture("SHININESS_TEXTURE",pcMesh->piShininessTexture); - if (pcMesh->piLightmapTexture) - pcMesh->piEffect->SetTexture("LIGHTMAP_TEXTURE",pcMesh->piLightmapTexture); + if (pcMesh->piOpacityTexture) + pcMesh->piEffect->SetTexture("OPACITY_TEXTURE",pcMesh->piOpacityTexture); + if (pcMesh->piDiffuseTexture) + pcMesh->piEffect->SetTexture("DIFFUSE_TEXTURE",pcMesh->piDiffuseTexture); + if (pcMesh->piSpecularTexture) + pcMesh->piEffect->SetTexture("SPECULAR_TEXTURE",pcMesh->piSpecularTexture); + if (pcMesh->piAmbientTexture) + pcMesh->piEffect->SetTexture("AMBIENT_TEXTURE",pcMesh->piAmbientTexture); + if (pcMesh->piEmissiveTexture) + pcMesh->piEffect->SetTexture("EMISSIVE_TEXTURE",pcMesh->piEmissiveTexture); + if (pcMesh->piNormalTexture) + pcMesh->piEffect->SetTexture("NORMAL_TEXTURE",pcMesh->piNormalTexture); + if (pcMesh->piShininessTexture) + pcMesh->piEffect->SetTexture("SHININESS_TEXTURE",pcMesh->piShininessTexture); + if (pcMesh->piLightmapTexture) + pcMesh->piEffect->SetTexture("LIGHTMAP_TEXTURE",pcMesh->piLightmapTexture); - if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()) - { - piEnd->SetTexture("lw_tex_envmap",CBackgroundPainter::Instance().GetTexture()); - } - } + if (CBackgroundPainter::TEXTURE_CUBE == CBackgroundPainter::Instance().GetMode()) + { + piEnd->SetTexture("lw_tex_envmap",CBackgroundPainter::Instance().GetTexture()); + } + } - // disable culling, if necessary - if (pcMesh->twosided && g_sOptions.bCulling) { - g_piDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); - } + // disable culling, if necessary + if (pcMesh->twosided && g_sOptions.bCulling) { + g_piDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); + } - // setup the correct shader technique to be used for drawing - if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) - { - g_piDefaultEffect->SetTechnique( "MaterialFXSpecular_FF"); - } else - if (g_sCaps.PixelShaderVersion < D3DPS_VERSION(3,0) || g_sOptions.bLowQuality) - { - if (g_sOptions.b3Lights) - piEnd->SetTechnique("MaterialFXSpecular_PS20_D2"); - else piEnd->SetTechnique("MaterialFXSpecular_PS20_D1"); - } - else - { - if (g_sOptions.b3Lights) - piEnd->SetTechnique("MaterialFXSpecular_D2"); - else piEnd->SetTechnique("MaterialFXSpecular_D1"); - } + // setup the correct shader technique to be used for drawing + if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) + { + g_piDefaultEffect->SetTechnique( "MaterialFXSpecular_FF"); + } else + if (g_sCaps.PixelShaderVersion < D3DPS_VERSION(3,0) || g_sOptions.bLowQuality) + { + if (g_sOptions.b3Lights) + piEnd->SetTechnique("MaterialFXSpecular_PS20_D2"); + else piEnd->SetTechnique("MaterialFXSpecular_PS20_D1"); + } + else + { + if (g_sOptions.b3Lights) + piEnd->SetTechnique("MaterialFXSpecular_D2"); + else piEnd->SetTechnique("MaterialFXSpecular_D1"); + } - // activate the effect - UINT dwPasses = 0; - piEnd->Begin(&dwPasses,0); - piEnd->BeginPass(0); - return 1; + // activate the effect + UINT dwPasses = 0; + piEnd->Begin(&dwPasses,0); + piEnd->BeginPass(0); + return 1; } //------------------------------------------------------------------------------- int CMaterialManager::EndMaterial (AssetHelper::MeshHelper* pcMesh) { - ai_assert(NULL != pcMesh); - if (!pcMesh->piEffect)return 0; + ai_assert(NULL != pcMesh); + if (!pcMesh->piEffect)return 0; - // end the effect - pcMesh->piEffect->EndPass(); - pcMesh->piEffect->End(); + // end the effect + pcMesh->piEffect->EndPass(); + pcMesh->piEffect->End(); - // reenable culling if necessary - if (pcMesh->twosided && g_sOptions.bCulling) { - g_piDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW); - } + // reenable culling if necessary + if (pcMesh->twosided && g_sOptions.bCulling) { + g_piDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW); + } - return 1; + return 1; } }; // end namespace AssimpView diff --git a/tools/assimp_view/MaterialManager.h b/tools/assimp_view/MaterialManager.h index 804f452c0..069d6dc2b 100644 --- a/tools/assimp_view/MaterialManager.h +++ b/tools/assimp_view/MaterialManager.h @@ -39,164 +39,170 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#if (!defined AV_MATERIAL_H_INCLUDED) -#define AV_MATERIAL_H_INCLUDE +#pragma once -//------------------------------------------------------------------------------- -/* Helper class to create, access and destroy materials -*/ -//------------------------------------------------------------------------------- -class CMaterialManager +#include + +#include "AssetHelper.h" + +namespace AssimpView { -private: - friend class CDisplay; + //------------------------------------------------------------------------------- + /* Helper class to create, access and destroy materials + */ + //------------------------------------------------------------------------------- + class CMaterialManager + { + private: - // default constructor - CMaterialManager() - : m_iShaderCount (0), sDefaultTexture() {} + friend class CDisplay; - ~CMaterialManager() { - if (sDefaultTexture) { - sDefaultTexture->Release(); - } - Reset(); - } + // default constructor + CMaterialManager() + : m_iShaderCount( 0 ), sDefaultTexture() {} -public: + ~CMaterialManager() { + if( sDefaultTexture ) { + sDefaultTexture->Release(); + } + Reset(); + } - //------------------------------------------------------------------ - // Singleton accessors - static CMaterialManager s_cInstance; - inline static CMaterialManager& Instance () - { - return s_cInstance; - } + public: - //------------------------------------------------------------------ - // Delete all resources of a given material - // - // Must be called before CreateMaterial() to prevent memory leaking - void DeleteMaterial(AssetHelper::MeshHelper* pcIn); - - //------------------------------------------------------------------ - // Create the material for a mesh. - // - // The function checks whether an identical shader is already in use. - // A shader is considered to be identical if it has the same input - // signature and takes the same number of texture channels. - int CreateMaterial(AssetHelper::MeshHelper* pcMesh, - const aiMesh* pcSource); + //------------------------------------------------------------------ + // Singleton accessors + static CMaterialManager s_cInstance; + inline static CMaterialManager& Instance() + { + return s_cInstance; + } - //------------------------------------------------------------------ - // Setup the material for a given mesh - // pcMesh Mesh to be rendered - // pcProj Projection matrix - // aiMe Current world matrix - // pcCam Camera matrix - // vPos Position of the camera - // TODO: Extract camera position from matrix ... - // - int SetupMaterial (AssetHelper::MeshHelper* pcMesh, - const aiMatrix4x4& pcProj, - const aiMatrix4x4& aiMe, - const aiMatrix4x4& pcCam, - const aiVector3D& vPos); + //------------------------------------------------------------------ + // Delete all resources of a given material + // + // Must be called before CreateMaterial() to prevent memory leaking + void DeleteMaterial( AssetHelper::MeshHelper* pcIn ); - //------------------------------------------------------------------ - // End the material for a given mesh - // Called after mesh rendering is complete - // pcMesh Mesh object - int EndMaterial (AssetHelper::MeshHelper* pcMesh); + //------------------------------------------------------------------ + // Create the material for a mesh. + // + // The function checks whether an identical shader is already in use. + // A shader is considered to be identical if it has the same input + // signature and takes the same number of texture channels. + int CreateMaterial( AssetHelper::MeshHelper* pcMesh, + const aiMesh* pcSource ); - //------------------------------------------------------------------ - // Recreate all specular materials depending on the current - // specularity settings - // - // Diffuse-only materials are ignored. - // Must be called after specular highlights have been toggled - int UpdateSpecularMaterials(); + //------------------------------------------------------------------ + // Setup the material for a given mesh + // pcMesh Mesh to be rendered + // pcProj Projection matrix + // aiMe Current world matrix + // pcCam Camera matrix + // vPos Position of the camera + // TODO: Extract camera position from matrix ... + // + int SetupMaterial( AssetHelper::MeshHelper* pcMesh, + const aiMatrix4x4& pcProj, + const aiMatrix4x4& aiMe, + const aiMatrix4x4& pcCam, + const aiVector3D& vPos ); - //------------------------------------------------------------------ - // find a valid path to a texture file - // - // Handle 8.3 syntax correctly, search the environment of the - // executable and the asset for a texture with a name very similar - // to a given one - int FindValidPath(aiString* p_szString); + //------------------------------------------------------------------ + // End the material for a given mesh + // Called after mesh rendering is complete + // pcMesh Mesh object + int EndMaterial( AssetHelper::MeshHelper* pcMesh ); - //------------------------------------------------------------------ - // Load a texture into memory and create a native D3D texture resource - // - // The function tries to find a valid path for a texture - int LoadTexture(IDirect3DTexture9** p_ppiOut,aiString* szPath); + //------------------------------------------------------------------ + // Recreate all specular materials depending on the current + // specularity settings + // + // Diffuse-only materials are ignored. + // Must be called after specular highlights have been toggled + int UpdateSpecularMaterials(); + + //------------------------------------------------------------------ + // find a valid path to a texture file + // + // Handle 8.3 syntax correctly, search the environment of the + // executable and the asset for a texture with a name very similar + // to a given one + int FindValidPath( aiString* p_szString ); + + //------------------------------------------------------------------ + // Load a texture into memory and create a native D3D texture resource + // + // The function tries to find a valid path for a texture + int LoadTexture( IDirect3DTexture9** p_ppiOut, aiString* szPath ); - //------------------------------------------------------------------ - // Getter for m_iShaderCount - // - inline unsigned int GetShaderCount() - { - return this->m_iShaderCount; - } + //------------------------------------------------------------------ + // Getter for m_iShaderCount + // + inline unsigned int GetShaderCount() + { + return this->m_iShaderCount; + } - //------------------------------------------------------------------ - // Reset the state of the class - // Called whenever a new asset is loaded - inline void Reset() - { - this->m_iShaderCount = 0; - for (TextureCache::iterator it = sCachedTextures.begin(); it != sCachedTextures.end(); ++it) { - (*it).second->Release(); - } - sCachedTextures.clear(); - } + //------------------------------------------------------------------ + // Reset the state of the class + // Called whenever a new asset is loaded + inline void Reset() + { + this->m_iShaderCount = 0; + for( TextureCache::iterator it = sCachedTextures.begin(); it != sCachedTextures.end(); ++it ) { + ( *it ).second->Release(); + } + sCachedTextures.clear(); + } -private: + private: - //------------------------------------------------------------------ - // find a valid path to a texture file - // - // Handle 8.3 syntax correctly, search the environment of the - // executable and the asset for a texture with a name very similar - // to a given one - bool TryLongerPath(char* szTemp,aiString* p_szString); + //------------------------------------------------------------------ + // find a valid path to a texture file + // + // Handle 8.3 syntax correctly, search the environment of the + // executable and the asset for a texture with a name very similar + // to a given one + bool TryLongerPath( char* szTemp, aiString* p_szString ); - //------------------------------------------------------------------ - // Setup the default texture for a texture channel - // - // Generates a default checker pattern for a texture - int SetDefaultTexture(IDirect3DTexture9** p_ppiOut); + //------------------------------------------------------------------ + // Setup the default texture for a texture channel + // + // Generates a default checker pattern for a texture + int SetDefaultTexture( IDirect3DTexture9** p_ppiOut ); - //------------------------------------------------------------------ - // Convert a height map to a normal map if necessary - // - // The function tries to detect the type of a texture automatically. - // However, this wont work in every case. - void HMtoNMIfNecessary(IDirect3DTexture9* piTexture, - IDirect3DTexture9** piTextureOut, - bool bWasOriginallyHM = true); + //------------------------------------------------------------------ + // Convert a height map to a normal map if necessary + // + // The function tries to detect the type of a texture automatically. + // However, this wont work in every case. + void HMtoNMIfNecessary( IDirect3DTexture9* piTexture, + IDirect3DTexture9** piTextureOut, + bool bWasOriginallyHM = true ); - //------------------------------------------------------------------ - // Search for non-opaque pixels in a texture - // - // A pixel is considered to be non-opaque if its alpha value is - // less than 255 - //------------------------------------------------------------------ - bool HasAlphaPixels(IDirect3DTexture9* piTexture); + //------------------------------------------------------------------ + // Search for non-opaque pixels in a texture + // + // A pixel is considered to be non-opaque if its alpha value is + // less than 255 + //------------------------------------------------------------------ + bool HasAlphaPixels( IDirect3DTexture9* piTexture ); -private: + private: - // - // Specifies the number of different shaders generated for - // the current asset. This number is incremented by CreateMaterial() - // each time a shader isn't found in cache and needs to be created - // - unsigned int m_iShaderCount; - IDirect3DTexture9* sDefaultTexture; + // + // Specifies the number of different shaders generated for + // the current asset. This number is incremented by CreateMaterial() + // each time a shader isn't found in cache and needs to be created + // + unsigned int m_iShaderCount; + IDirect3DTexture9* sDefaultTexture; - typedef std::map TextureCache; - TextureCache sCachedTextures; -}; + typedef std::map TextureCache; + TextureCache sCachedTextures; + }; -#endif //!! include guard +} diff --git a/tools/assimp_view/MeshRenderer.cpp b/tools/assimp_view/MeshRenderer.cpp index d17bd2f8d..f2c3a0bc6 100644 --- a/tools/assimp_view/MeshRenderer.cpp +++ b/tools/assimp_view/MeshRenderer.cpp @@ -39,7 +39,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" #include @@ -47,7 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace AssimpView { - CMeshRenderer CMeshRenderer::s_cInstance; //------------------------------------------------------------------------------- diff --git a/tools/assimp_view/MeshRenderer.h b/tools/assimp_view/MeshRenderer.h index 98d9ef39d..2e9df0616 100644 --- a/tools/assimp_view/MeshRenderer.h +++ b/tools/assimp_view/MeshRenderer.h @@ -42,56 +42,58 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if (!defined AV_MESH_RENDERER_H_INCLUDED) #define AV_MESH_RENDERER_H_INCLUDED +namespace AssimpView { -//------------------------------------------------------------------------------- -/* Helper class tp render meshes -*/ -//------------------------------------------------------------------------------- -class CMeshRenderer -{ -private: + //------------------------------------------------------------------------------- + /* Helper class tp render meshes + */ + //------------------------------------------------------------------------------- + class CMeshRenderer + { + private: - // default constructor - CMeshRenderer() + // default constructor + CMeshRenderer() - { - // no other members to initialize - } + { + // no other members to initialize + } -public: + public: - //------------------------------------------------------------------ - // Singleton accessors - static CMeshRenderer s_cInstance; - inline static CMeshRenderer& Instance () - { - return s_cInstance; - } + //------------------------------------------------------------------ + // Singleton accessors + static CMeshRenderer s_cInstance; + inline static CMeshRenderer& Instance() + { + return s_cInstance; + } - //------------------------------------------------------------------ - // Draw a mesh in the global mesh list using the current pipeline state - // iIndex Index of the mesh to be drawn - // - // The function draws all faces in order, regardless of their distance - int DrawUnsorted(unsigned int iIndex); + //------------------------------------------------------------------ + // Draw a mesh in the global mesh list using the current pipeline state + // iIndex Index of the mesh to be drawn + // + // The function draws all faces in order, regardless of their distance + int DrawUnsorted( unsigned int iIndex ); - //------------------------------------------------------------------ - // Draw a mesh in the global mesh list using the current pipeline state - // iIndex Index of the mesh to be drawn - // - // The method sorts all vertices by their distance (back to front) - // - // mWorld World matrix for the node - int DrawSorted(unsigned int iIndex, - const aiMatrix4x4& mWorld); + //------------------------------------------------------------------ + // Draw a mesh in the global mesh list using the current pipeline state + // iIndex Index of the mesh to be drawn + // + // The method sorts all vertices by their distance (back to front) + // + // mWorld World matrix for the node + int DrawSorted( unsigned int iIndex, + const aiMatrix4x4& mWorld ); -private: + private: - -}; + }; + +} #endif //!! include guard \ No newline at end of file diff --git a/tools/assimp_view/MessageProc.cpp b/tools/assimp_view/MessageProc.cpp index 0b95a8ec6..ecffa40a6 100644 --- a/tools/assimp_view/MessageProc.cpp +++ b/tools/assimp_view/MessageProc.cpp @@ -39,12 +39,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -#include "stdafx.h" #include "assimp_view.h" +#include +#include + #include namespace AssimpView { +using namespace Assimp; + // Static array to keep custom color values COLORREF g_aclCustomColors[16] = {0}; @@ -1044,9 +1048,9 @@ void DoExport(size_t formatId) ai_assert(strlen(szFileName) <= MAX_PATH); // invent a nice default file name - char* sz = std::max(strrchr(szFileName,'\\'),strrchr(szFileName,'/')); + char* sz = max(strrchr(szFileName,'\\'),strrchr(szFileName,'/')); if (sz) { - strncpy(sz,std::max(strrchr(g_szFileName,'\\'),strrchr(g_szFileName,'/')),MAX_PATH); + strncpy(sz,max(strrchr(g_szFileName,'\\'),strrchr(g_szFileName,'/')),MAX_PATH); } } else { diff --git a/tools/assimp_view/Normals.cpp b/tools/assimp_view/Normals.cpp index 9f4bea6fe..4ea067357 100644 --- a/tools/assimp_view/Normals.cpp +++ b/tools/assimp_view/Normals.cpp @@ -40,7 +40,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "stdafx.h" #include "assimp_view.h" // note: these are no longer part of the public API, but they are @@ -53,6 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace AssimpView { +using namespace Assimp; bool g_bWasFlipped = false; float g_smoothAngle = 80.f; diff --git a/tools/assimp_view/SceneAnimator.cpp b/tools/assimp_view/SceneAnimator.cpp index 0df269d35..7eed88724 100644 --- a/tools/assimp_view/SceneAnimator.cpp +++ b/tools/assimp_view/SceneAnimator.cpp @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the utility class SceneAnimator */ -#include "stdafx.h" #include "assimp_view.h" using namespace AssimpView; diff --git a/tools/assimp_view/Shaders.cpp b/tools/assimp_view/Shaders.cpp index ce030a7ec..7fb0bd4c2 100644 --- a/tools/assimp_view/Shaders.cpp +++ b/tools/assimp_view/Shaders.cpp @@ -38,1377 +38,1373 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ - -#include "stdafx.h" #include "assimp_view.h" - -namespace AssimpView -{ +namespace AssimpView { // ------------------------------------------------------------------------------------------------ std::string g_szNormalsShader = std::string( - // World * View * Projection matrix\n" - // NOTE: Assume that the material uses a WorldViewProjection matrix\n" - "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" - "float4 OUTPUT_COLOR;\n" - - // Vertex shader input structure - "struct VS_INPUT\n" - "{\n" - "// Position\n" - "float3 Position : POSITION;\n" - "};\n" + // World * View * Projection matrix\n" + // NOTE: Assume that the material uses a WorldViewProjection matrix\n" + "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" + "float4 OUTPUT_COLOR;\n" + + // Vertex shader input structure + "struct VS_INPUT\n" + "{\n" + "// Position\n" + "float3 Position : POSITION;\n" + "};\n" - // Vertex shader output structure for pixel shader usage - "struct VS_OUTPUT\n" + // Vertex shader output structure for pixel shader usage + "struct VS_OUTPUT\n" "{\n" - "float4 Position : POSITION;\n" - "};\n" + "float4 Position : POSITION;\n" + "};\n" - // Vertex shader output structure for FixedFunction usage - "struct VS_OUTPUT_FF\n" - "{\n" - "float4 Position : POSITION;\n" + // Vertex shader output structure for FixedFunction usage + "struct VS_OUTPUT_FF\n" + "{\n" + "float4 Position : POSITION;\n" "float4 Color : COLOR;\n" - "};\n" + "};\n" - // Vertex shader for rendering normals using pixel shader - "VS_OUTPUT RenderNormalsVS(VS_INPUT IN)\n" - "{\n" - "// Initialize the output structure with zero\n" - "VS_OUTPUT Out = (VS_OUTPUT)0;\n" + // Vertex shader for rendering normals using pixel shader + "VS_OUTPUT RenderNormalsVS(VS_INPUT IN)\n" + "{\n" + "// Initialize the output structure with zero\n" + "VS_OUTPUT Out = (VS_OUTPUT)0;\n" - "// Multiply with the WorldViewProjection matrix\n" - "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" + "// Multiply with the WorldViewProjection matrix\n" + "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - // Vertex shader for rendering normals using fixed function pipeline - "VS_OUTPUT_FF RenderNormalsVS_FF(VS_INPUT IN)\n" + // Vertex shader for rendering normals using fixed function pipeline + "VS_OUTPUT_FF RenderNormalsVS_FF(VS_INPUT IN)\n" "{\n" - "VS_OUTPUT_FF Out;\n" - "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" + "VS_OUTPUT_FF Out;\n" + "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" "Out.Color = OUTPUT_COLOR;\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - // Pixel shader - "float4 RenderNormalsPS() : COLOR\n" - "{\n" - "return OUTPUT_COLOR;\n" - "}\n" + // Pixel shader + "float4 RenderNormalsPS() : COLOR\n" + "{\n" + "return OUTPUT_COLOR;\n" + "}\n" - // Technique for the normal rendering effect (ps_2_0) - "technique RenderNormals\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "PixelShader = compile ps_2_0 RenderNormalsPS();\n" - "VertexShader = compile vs_2_0 RenderNormalsVS();\n" - "}\n" - "};\n" + // Technique for the normal rendering effect (ps_2_0) + "technique RenderNormals\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "PixelShader = compile ps_2_0 RenderNormalsPS();\n" + "VertexShader = compile vs_2_0 RenderNormalsVS();\n" + "}\n" + "};\n" - // Technique for the normal rendering effect (fixed function) - "technique RenderNormals_FF\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "VertexShader = compile vs_2_0 RenderNormalsVS_FF();\n" + // Technique for the normal rendering effect (fixed function) + "technique RenderNormals_FF\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "VertexShader = compile vs_2_0 RenderNormalsVS_FF();\n" "ColorOp[0] = SelectArg1;\n" "ColorArg0[0] = Diffuse;\n" "AlphaOp[0] = SelectArg1;\n" "AlphaArg0[0] = Diffuse;\n" - "}\n" - "};\n" - ); + "}\n" + "};\n" + ); // ------------------------------------------------------------------------------------------------ std::string g_szSkyboxShader = std::string( - // Sampler and texture for the skybox - "textureCUBE lw_tex_envmap;\n" - "samplerCUBE EnvironmentMapSampler = sampler_state\n" - "{\n" - "Texture = (lw_tex_envmap);\n" - "AddressU = CLAMP;\n" - "AddressV = CLAMP;\n" - "AddressW = CLAMP;\n" + // Sampler and texture for the skybox + "textureCUBE lw_tex_envmap;\n" + "samplerCUBE EnvironmentMapSampler = sampler_state\n" + "{\n" + "Texture = (lw_tex_envmap);\n" + "AddressU = CLAMP;\n" + "AddressV = CLAMP;\n" + "AddressW = CLAMP;\n" - "MAGFILTER = linear;\n" - "MINFILTER = linear;\n" - "};\n" + "MAGFILTER = linear;\n" + "MINFILTER = linear;\n" + "};\n" - // World * View * Projection matrix\n" - // NOTE: Assume that the material uses a WorldViewProjection matrix\n" - "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" - - // Vertex shader input structure - "struct VS_INPUT\n" - "{\n" - "float3 Position : POSITION;\n" - "float3 Texture0 : TEXCOORD0;\n" - "};\n" + // World * View * Projection matrix\n" + // NOTE: Assume that the material uses a WorldViewProjection matrix\n" + "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" + + // Vertex shader input structure + "struct VS_INPUT\n" + "{\n" + "float3 Position : POSITION;\n" + "float3 Texture0 : TEXCOORD0;\n" + "};\n" - // Vertex shader output structure - "struct VS_OUTPUT\n" - "{\n" - "float4 Position : POSITION;\n" - "float3 Texture0 : TEXCOORD0;\n" - "};\n" + // Vertex shader output structure + "struct VS_OUTPUT\n" + "{\n" + "float4 Position : POSITION;\n" + "float3 Texture0 : TEXCOORD0;\n" + "};\n" - // Vertex shader - "VS_OUTPUT RenderSkyBoxVS(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT Out;\n" + // Vertex shader + "VS_OUTPUT RenderSkyBoxVS(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT Out;\n" - // Multiply with the WorldViewProjection matrix - "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" + // Multiply with the WorldViewProjection matrix + "Out.Position = mul(float4(IN.Position,1.0f),WorldViewProjection);\n" - // Set z to w to ensure z becomes 1.0 after the division through w occurs - "Out.Position.z = Out.Position.w;\n" - - // Simply pass through texture coordinates - "Out.Texture0 = IN.Texture0;\n" + // Set z to w to ensure z becomes 1.0 after the division through w occurs + "Out.Position.z = Out.Position.w;\n" + + // Simply pass through texture coordinates + "Out.Texture0 = IN.Texture0;\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - // Pixel shader - "float4 RenderSkyBoxPS(float3 Texture0 : TEXCOORD0) : COLOR\n" - "{\n" - // Lookup the skybox texture - "return texCUBE(EnvironmentMapSampler,Texture0) ;\n" - "}\n" + // Pixel shader + "float4 RenderSkyBoxPS(float3 Texture0 : TEXCOORD0) : COLOR\n" + "{\n" + // Lookup the skybox texture + "return texCUBE(EnvironmentMapSampler,Texture0) ;\n" + "}\n" - // Technique for the skybox shader (ps_2_0) - "technique RenderSkyBox\n" - "{\n" - "pass p0\n" - "{\n" - "ZWriteEnable = FALSE;\n" - "FogEnable = FALSE;\n" - "CullMode = NONE;\n" + // Technique for the skybox shader (ps_2_0) + "technique RenderSkyBox\n" + "{\n" + "pass p0\n" + "{\n" + "ZWriteEnable = FALSE;\n" + "FogEnable = FALSE;\n" + "CullMode = NONE;\n" - "PixelShader = compile ps_2_0 RenderSkyBoxPS();\n" - "VertexShader = compile vs_2_0 RenderSkyBoxVS();\n" - "}\n" - "};\n" + "PixelShader = compile ps_2_0 RenderSkyBoxPS();\n" + "VertexShader = compile vs_2_0 RenderSkyBoxVS();\n" + "}\n" + "};\n" // -------------- same for static background image ----------------- - "texture TEXTURE_2D;\n" - "sampler TEXTURE_SAMPLER = sampler_state\n" - "{\n" - "Texture = (TEXTURE_2D);\n" - "};\n" + "texture TEXTURE_2D;\n" + "sampler TEXTURE_SAMPLER = sampler_state\n" + "{\n" + "Texture = (TEXTURE_2D);\n" + "};\n" - "struct VS_OUTPUT2\n" - "{\n" - "float4 Position : POSITION;\n" - "float2 TexCoord0 : TEXCOORD0;\n" - "};\n" + "struct VS_OUTPUT2\n" + "{\n" + "float4 Position : POSITION;\n" + "float2 TexCoord0 : TEXCOORD0;\n" + "};\n" - "VS_OUTPUT2 RenderImageVS(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" - "{\n" - "VS_OUTPUT2 Out;\n" + "VS_OUTPUT2 RenderImageVS(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" + "{\n" + "VS_OUTPUT2 Out;\n" - "Out.Position.xy = INPosition.xy;\n" - "Out.Position.z = Out.Position.w = 1.0f;\n" - "Out.TexCoord0 = INTexCoord0;\n" + "Out.Position.xy = INPosition.xy;\n" + "Out.Position.z = Out.Position.w = 1.0f;\n" + "Out.TexCoord0 = INTexCoord0;\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - "float4 RenderImagePS(float2 IN : TEXCOORD0) : COLOR\n" - "{\n" - "return tex2D(TEXTURE_SAMPLER,IN);\n" - "}\n" + "float4 RenderImagePS(float2 IN : TEXCOORD0) : COLOR\n" + "{\n" + "return tex2D(TEXTURE_SAMPLER,IN);\n" + "}\n" - // Technique for the background image shader (ps_2_0) - "technique RenderImage2D\n" - "{\n" - "pass p0\n" - "{\n" - "ZWriteEnable = FALSE;\n" - "FogEnable = FALSE;\n" - "CullMode = NONE;\n" - - "PixelShader = compile ps_2_0 RenderImagePS();\n" - "VertexShader = compile vs_2_0 RenderImageVS();\n" - "}\n" - "};\n" - ); + // Technique for the background image shader (ps_2_0) + "technique RenderImage2D\n" + "{\n" + "pass p0\n" + "{\n" + "ZWriteEnable = FALSE;\n" + "FogEnable = FALSE;\n" + "CullMode = NONE;\n" + + "PixelShader = compile ps_2_0 RenderImagePS();\n" + "VertexShader = compile vs_2_0 RenderImageVS();\n" + "}\n" + "};\n" + ); std::string g_szDefaultShader = std::string( - // World * View * Projection matrix - // NOTE: Assume that the material uses a WorldViewProjection matrix - "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" - "float4x4 World : WORLD;\n" - "float4x3 WorldInverseTranspose : WORLDINVERSETRANSPOSE;\n" + // World * View * Projection matrix + // NOTE: Assume that the material uses a WorldViewProjection matrix + "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" + "float4x4 World : WORLD;\n" + "float4x3 WorldInverseTranspose : WORLDINVERSETRANSPOSE;\n" - // light colors - "float3 afLightColor[5];\n" - // light direction - "float3 afLightDir[5];\n" + // light colors + "float3 afLightColor[5];\n" + // light direction + "float3 afLightDir[5];\n" - // position of the camera in worldspace\n" - "float3 vCameraPos : CAMERAPOSITION;\n" + // position of the camera in worldspace\n" + "float3 vCameraPos : CAMERAPOSITION;\n" - // Bone matrices + // Bone matrices // "#ifdef AV_SKINNING \n" - "float4x3 gBoneMatrix[60]; \n" + "float4x3 gBoneMatrix[60]; \n" // "#endif // AV_SKINNING \n" - // Vertex shader input structure - "struct VS_INPUT\n" - "{\n" - "float3 Position : POSITION;\n" - "float3 Normal : NORMAL;\n" + // Vertex shader input structure + "struct VS_INPUT\n" + "{\n" + "float3 Position : POSITION;\n" + "float3 Normal : NORMAL;\n" // "#ifdef AV_SKINNING \n" - "float4 BlendIndices : BLENDINDICES;\n" - "float4 BlendWeights : BLENDWEIGHT;\n" + "float4 BlendIndices : BLENDINDICES;\n" + "float4 BlendWeights : BLENDWEIGHT;\n" // "#endif // AV_SKINNING \n" - "};\n" + "};\n" - // Vertex shader output structure for pixel shader usage - "struct VS_OUTPUT\n" - "{\n" - "float4 Position : POSITION;\n" - "float3 ViewDir : TEXCOORD0;\n" - "float3 Normal : TEXCOORD1;\n" - "};\n" + // Vertex shader output structure for pixel shader usage + "struct VS_OUTPUT\n" + "{\n" + "float4 Position : POSITION;\n" + "float3 ViewDir : TEXCOORD0;\n" + "float3 Normal : TEXCOORD1;\n" + "};\n" - // Vertex shader output structure for fixed function - "struct VS_OUTPUT_FF\n" - "{\n" - "float4 Position : POSITION;\n" - "float4 Color : COLOR;\n" - "};\n" + // Vertex shader output structure for fixed function + "struct VS_OUTPUT_FF\n" + "{\n" + "float4 Position : POSITION;\n" + "float4 Color : COLOR;\n" + "};\n" - // Vertex shader for pixel shader usage - "VS_OUTPUT DefaultVShader(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT Out;\n" + // Vertex shader for pixel shader usage + "VS_OUTPUT DefaultVShader(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT Out;\n" // "#ifdef AV_SKINNING \n" - "float4 weights = IN.BlendWeights; \n" - "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" - "float4 localPos = float4( IN.Position, 1.0f); \n" - "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" + "float4 weights = IN.BlendWeights; \n" + "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" + "float4 localPos = float4( IN.Position, 1.0f); \n" + "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" // "#else \n" // "float3 objPos = IN.Position; \n" // "#endif // AV_SKINNING \n" - // Multiply with the WorldViewProjection matrix - "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" - "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" - "Out.ViewDir = vCameraPos - WorldPos;\n" - "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" + // Multiply with the WorldViewProjection matrix + "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" + "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" + "Out.ViewDir = vCameraPos - WorldPos;\n" + "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - // Vertex shader for fixed function pipeline - "VS_OUTPUT_FF DefaultVShader_FF(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT_FF Out;\n" + // Vertex shader for fixed function pipeline + "VS_OUTPUT_FF DefaultVShader_FF(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT_FF Out;\n" // "#ifdef AV_SKINNING \n" - "float4 weights = IN.BlendWeights; \n" - "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" - "float4 localPos = float4( IN.Position, 1.0f); \n" - "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" + "float4 weights = IN.BlendWeights; \n" + "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" + "float4 localPos = float4( IN.Position, 1.0f); \n" + "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" // "#else \n" // "float3 objPos = IN.Position; \n" // "#endif // AV_SKINNING \n" - // Multiply with the WorldViewProjection matrix - "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" + // Multiply with the WorldViewProjection matrix + "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" - "float3 worldNormal = normalize( mul( IN.Normal, (float3x3) WorldInverseTranspose)); \n" + "float3 worldNormal = normalize( mul( IN.Normal, (float3x3) WorldInverseTranspose)); \n" - // per-vertex lighting. We simply assume light colors of unused lights to be black - "Out.Color = float4( 0.2f, 0.2f, 0.2f, 1.0f); \n" - "for( int a = 0; a < 2; a++)\n" - " Out.Color.rgb += saturate( dot( afLightDir[a], worldNormal)) * afLightColor[a].rgb; \n" - "return Out;\n" - "}\n" + // per-vertex lighting. We simply assume light colors of unused lights to be black + "Out.Color = float4( 0.2f, 0.2f, 0.2f, 1.0f); \n" + "for( int a = 0; a < 2; a++)\n" + " Out.Color.rgb += saturate( dot( afLightDir[a], worldNormal)) * afLightColor[a].rgb; \n" + "return Out;\n" + "}\n" - // Pixel shader for one light - "float4 DefaultPShaderSpecular_D1(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + // Pixel shader for one light + "float4 DefaultPShaderSpecular_D1(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - "float3 Normal = normalize(IN.Normal);\n" - "float3 ViewDir = normalize(IN.ViewDir);\n" + "float3 Normal = normalize(IN.Normal);\n" + "float3 ViewDir = normalize(IN.ViewDir);\n" - "{\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,afLightDir[0]);\n" - "float fHalfLambert = L1*L1;\n" - "OUT.rgb += afLightColor[0] * (fHalfLambert +\n" - "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,ViewDir),9));\n" - "}\n" - "return OUT;\n" - "}\n" + "{\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,afLightDir[0]);\n" + "float fHalfLambert = L1*L1;\n" + "OUT.rgb += afLightColor[0] * (fHalfLambert +\n" + "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,ViewDir),9));\n" + "}\n" + "return OUT;\n" + "}\n" - // Pixel shader for two lights - "float4 DefaultPShaderSpecular_D2(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + // Pixel shader for two lights + "float4 DefaultPShaderSpecular_D2(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - "float3 Normal = normalize(IN.Normal);\n" - "float3 ViewDir = normalize(IN.ViewDir);\n" + "float3 Normal = normalize(IN.Normal);\n" + "float3 ViewDir = normalize(IN.ViewDir);\n" - "{\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (ViewDir,Normal);\n" - "float fHalfLambert = L1*L1;\n" - "OUT.rgb += afLightColor[0] * (fHalfLambert +\n" - "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,afLightDir[0]),9));\n" - "}\n" - "{\n" - "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (ViewDir,Normal);\n" - "float fHalfLambert = L1*L1;\n" - "OUT.rgb += afLightColor[1] * (fHalfLambert +\n" - "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,afLightDir[1]),9));\n" - "}\n" - "return OUT;\n" - "}\n" - // ---------------------------------------------------------------------------- - "float4 DefaultPShaderSpecular_PS20_D1(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + "{\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (ViewDir,Normal);\n" + "float fHalfLambert = L1*L1;\n" + "OUT.rgb += afLightColor[0] * (fHalfLambert +\n" + "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,afLightDir[0]),9));\n" + "}\n" + "{\n" + "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (ViewDir,Normal);\n" + "float fHalfLambert = L1*L1;\n" + "OUT.rgb += afLightColor[1] * (fHalfLambert +\n" + "saturate(fHalfLambert * 4.0f) * pow(dot(Reflect,afLightDir[1]),9));\n" + "}\n" + "return OUT;\n" + "}\n" + // ---------------------------------------------------------------------------- + "float4 DefaultPShaderSpecular_PS20_D1(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - "float3 Normal = normalize(IN.Normal);\n" - "float3 ViewDir = normalize(IN.ViewDir);\n" + "float3 Normal = normalize(IN.Normal);\n" + "float3 ViewDir = normalize(IN.ViewDir);\n" - "{\n" - "float L1 = dot(Normal,afLightDir[0]);\n" - "float3 Reflect = reflect (Normal,afLightDir[0]);\n" - "OUT.rgb += afLightColor[0] * ((L1) +\n" - "pow(dot(Reflect,ViewDir),9));\n" - "}\n" + "{\n" + "float L1 = dot(Normal,afLightDir[0]);\n" + "float3 Reflect = reflect (Normal,afLightDir[0]);\n" + "OUT.rgb += afLightColor[0] * ((L1) +\n" + "pow(dot(Reflect,ViewDir),9));\n" + "}\n" - "return OUT;\n" - "}\n" - // ---------------------------------------------------------------------------- - "float4 DefaultPShaderSpecular_PS20_D2(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + "return OUT;\n" + "}\n" + // ---------------------------------------------------------------------------- + "float4 DefaultPShaderSpecular_PS20_D2(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - "float3 Normal = normalize(IN.Normal);\n" - "float3 ViewDir = normalize(IN.ViewDir);\n" + "float3 Normal = normalize(IN.Normal);\n" + "float3 ViewDir = normalize(IN.ViewDir);\n" - "{\n" - "float L1 = dot(Normal,afLightDir[0]);\n" - "float3 Reflect = reflect (Normal,afLightDir[0]);\n" - "OUT.rgb += afLightColor[0] * ((L1) +\n" - "pow(dot(Reflect,ViewDir),9));\n" - "}\n" - "{\n" - "float L1 = dot(Normal,afLightDir[1]);\n" - "float3 Reflect = reflect (Normal,afLightDir[1]);\n" - "OUT.rgb += afLightColor[1] * ((L1) +\n" - "pow(dot(Reflect,ViewDir),9));\n" - "}\n" - "return OUT;\n" - "}\n" + "{\n" + "float L1 = dot(Normal,afLightDir[0]);\n" + "float3 Reflect = reflect (Normal,afLightDir[0]);\n" + "OUT.rgb += afLightColor[0] * ((L1) +\n" + "pow(dot(Reflect,ViewDir),9));\n" + "}\n" + "{\n" + "float L1 = dot(Normal,afLightDir[1]);\n" + "float3 Reflect = reflect (Normal,afLightDir[1]);\n" + "OUT.rgb += afLightColor[1] * ((L1) +\n" + "pow(dot(Reflect,ViewDir),9));\n" + "}\n" + "return OUT;\n" + "}\n" - // Technique for the default effect - "technique DefaultFXSpecular_D1\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "PixelShader = compile ps_3_0 DefaultPShaderSpecular_D1();\n" - "VertexShader = compile vs_3_0 DefaultVShader();\n" - "}\n" - "};\n" - "technique DefaultFXSpecular_D2\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "PixelShader = compile ps_3_0 DefaultPShaderSpecular_D2();\n" - "VertexShader = compile vs_3_0 DefaultVShader();\n" - "}\n" - "};\n" + // Technique for the default effect + "technique DefaultFXSpecular_D1\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "PixelShader = compile ps_3_0 DefaultPShaderSpecular_D1();\n" + "VertexShader = compile vs_3_0 DefaultVShader();\n" + "}\n" + "};\n" + "technique DefaultFXSpecular_D2\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "PixelShader = compile ps_3_0 DefaultPShaderSpecular_D2();\n" + "VertexShader = compile vs_3_0 DefaultVShader();\n" + "}\n" + "};\n" - // Technique for the default effect (ps_2_0) - "technique DefaultFXSpecular_PS20_D1\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "PixelShader = compile ps_2_0 DefaultPShaderSpecular_PS20_D1();\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" - "}\n" - "};\n" - "technique DefaultFXSpecular_PS20_D2\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "PixelShader = compile ps_2_0 DefaultPShaderSpecular_PS20_D2();\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" - "}\n" - "};\n" + // Technique for the default effect (ps_2_0) + "technique DefaultFXSpecular_PS20_D1\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "PixelShader = compile ps_2_0 DefaultPShaderSpecular_PS20_D1();\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" + "}\n" + "};\n" + "technique DefaultFXSpecular_PS20_D2\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "PixelShader = compile ps_2_0 DefaultPShaderSpecular_PS20_D2();\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" + "}\n" + "};\n" - // Technique for the default effect using the fixed function pixel pipeline - "technique DefaultFXSpecular_FF\n" - "{\n" - "pass p0\n" - "{\n" - "CullMode=none;\n" - "VertexShader = compile vs_2_0 DefaultVShader_FF();\n" - "ColorOp[0] = SelectArg1;\n" - "ColorArg0[0] = Diffuse;\n" - "AlphaOp[0] = SelectArg1;\n" - "AlphaArg0[0] = Diffuse;\n" - "}\n" - "};\n" + // Technique for the default effect using the fixed function pixel pipeline + "technique DefaultFXSpecular_FF\n" + "{\n" + "pass p0\n" + "{\n" + "CullMode=none;\n" + "VertexShader = compile vs_2_0 DefaultVShader_FF();\n" + "ColorOp[0] = SelectArg1;\n" + "ColorArg0[0] = Diffuse;\n" + "AlphaOp[0] = SelectArg1;\n" + "AlphaArg0[0] = Diffuse;\n" + "}\n" + "};\n" ); std::string g_szMaterialShader = std::string( - // World * View * Projection matrix + // World * View * Projection matrix // NOTE: Assume that the material uses a WorldViewProjection matrix - "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" - "float4x4 World : WORLD;\n" - "float4x3 WorldInverseTranspose : WORLDINVERSETRANSPOSE;\n" - - "#ifndef AV_DISABLESSS\n" - "float4x3 ViewProj;\n" - "float4x3 InvViewProj;\n" - "#endif\n" - - "float4 DIFFUSE_COLOR;\n" - "float4 SPECULAR_COLOR;\n" - "float4 AMBIENT_COLOR;\n" - "float4 EMISSIVE_COLOR;\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "float SPECULARITY;\n" - "float SPECULAR_STRENGTH;\n" - "#endif\n" - "#ifdef AV_OPACITY\n" - "float TRANSPARENCY;\n" - "#endif\n" - - // light colors (diffuse and specular) - "float4 afLightColor[5];\n" - "float4 afLightColorAmbient[5];\n" - - // light direction - "float3 afLightDir[5];\n" - - // position of the camera in worldspace - "float3 vCameraPos : CAMERAPOSITION;\n" - - // Bone matrices - "#ifdef AV_SKINNING \n" - "float4x3 gBoneMatrix[60]; \n" - "#endif // AV_SKINNING \n" - - "#ifdef AV_DIFFUSE_TEXTURE\n" - "texture DIFFUSE_TEXTURE;\n" - "sampler DIFFUSE_SAMPLER\n" - "{\n" - "Texture = ;\n" - "#ifdef AV_WRAPU\n" - "AddressU = WRAP;\n" - "#endif\n" - "#ifdef AV_MIRRORU\n" - "AddressU = MIRROR;\n" - "#endif\n" - "#ifdef AV_CLAMPU\n" - "AddressU = CLAMP;\n" - "#endif\n" - "#ifdef AV_WRAPV\n" - "AddressV = WRAP;\n" - "#endif\n" - "#ifdef AV_MIRRORV\n" - "AddressV = MIRROR;\n" - "#endif\n" - "#ifdef AV_CLAMPV\n" - "AddressV = CLAMP;\n" - "#endif\n" - "};\n" - "#endif // AV_DIFFUSE_TEXTUR\n" - - "#ifdef AV_DIFFUSE_TEXTURE2\n" - "texture DIFFUSE_TEXTURE2;\n" - "sampler DIFFUSE_SAMPLER2\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_DIFFUSE_TEXTUR2\n" - - "#ifdef AV_SPECULAR_TEXTURE\n" - "texture SPECULAR_TEXTURE;\n" - "sampler SPECULAR_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_SPECULAR_TEXTUR\n" - - "#ifdef AV_AMBIENT_TEXTURE\n" - "texture AMBIENT_TEXTURE;\n" - "sampler AMBIENT_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_AMBIENT_TEXTUR\n" - - "#ifdef AV_LIGHTMAP_TEXTURE\n" - "texture LIGHTMAP_TEXTURE;\n" - "sampler LIGHTMAP_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_LIGHTMAP_TEXTURE\n" - - "#ifdef AV_OPACITY_TEXTURE\n" - "texture OPACITY_TEXTURE;\n" - "sampler OPACITY_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_OPACITY_TEXTURE\n" - - "#ifdef AV_EMISSIVE_TEXTURE\n" - "texture EMISSIVE_TEXTURE;\n" - "sampler EMISSIVE_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_EMISSIVE_TEXTUR\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "texture NORMAL_TEXTURE;\n" - "sampler NORMAL_SAMPLER\n" - "{\n" - "Texture = ;\n" - "};\n" - "#endif // AV_NORMAL_TEXTURE\n" - - "#ifdef AV_SKYBOX_LOOKUP\n" - "textureCUBE lw_tex_envmap;\n" - "samplerCUBE EnvironmentMapSampler = sampler_state\n" - "{\n" - "Texture = (lw_tex_envmap);\n" - "AddressU = CLAMP;\n" - "AddressV = CLAMP;\n" - "AddressW = CLAMP;\n" - - "MAGFILTER = linear;\n" - "MINFILTER = linear;\n" - "};\n" - "#endif // AV_SKYBOX_LOOKUP\n" - - // Vertex shader input structure - "struct VS_INPUT\n" - "{\n" - "float3 Position : POSITION;\n" - "float3 Normal : NORMAL;\n" - "float4 Color : COLOR0;\n" - "float3 Tangent : TANGENT;\n" - "float3 Bitangent : BINORMAL;\n" - "float2 TexCoord0 : TEXCOORD0;\n" - "#ifdef AV_TWO_UV \n" - "float2 TexCoord1 : TEXCOORD1;\n" - "#endif \n" - "#ifdef AV_SKINNING \n" - "float4 BlendIndices : BLENDINDICES;\n" - "float4 BlendWeights : BLENDWEIGHT;\n" - "#endif // AV_SKINNING \n" - "};\n" - - // Vertex shader output structure for pixel shader usage - "struct VS_OUTPUT\n" - "{\n" - "float4 Position : POSITION;\n" - "float3 ViewDir : TEXCOORD0;\n" - - "float4 Color : COLOR0;\n" - - "#ifndef AV_NORMAL_TEXTURE\n" - "float3 Normal : TEXCOORD1;\n" - "#endif\n" - - "float2 TexCoord0 : TEXCOORD2;\n" - "#ifdef AV_TWO_UV \n" - "float2 TexCoord1 : TEXCOORD3;\n" - "#endif \n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3 Light0 : TEXCOORD3;\n" - "float3 Light1 : TEXCOORD4;\n" - "#endif\n" - "};\n" - - // Vertex shader output structure for fixed function pixel pipeline - "struct VS_OUTPUT_FF\n" - "{\n" - "float4 Position : POSITION;\n" - "float4 DiffuseColor : COLOR0;\n" - "float4 SpecularColor : COLOR1;\n" - "float2 TexCoord0 : TEXCOORD0;\n" - "};\n" - - - // Selective SuperSampling in screenspace for reflection lookups - "#define GetSSSCubeMap(_refl) (texCUBElod(EnvironmentMapSampler,float4(_refl,0.0f)).rgb) \n" - - - // Vertex shader for pixel shader usage and one light - "VS_OUTPUT MaterialVShader_D1(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT Out = (VS_OUTPUT)0;\n" - - "#ifdef AV_SKINNING \n" - "float4 weights = IN.BlendWeights; \n" - "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" - "float4 localPos = float4( IN.Position, 1.0f); \n" - "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" - "#else \n" - "float3 objPos = IN.Position; \n" - "#endif // AV_SKINNING \n" - - // Multiply with the WorldViewProjection matrix - "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" - "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" - "Out.TexCoord0 = IN.TexCoord0;\n" - "#ifdef AV_TWO_UV \n" - "Out.TexCoord1 = IN.TexCoord1;\n" - "#endif\n" - "Out.Color = IN.Color;\n" - - "#ifndef AV_NORMAL_TEXTURE\n" - "Out.ViewDir = vCameraPos - WorldPos;\n" - "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" - "#endif\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3x3 TBNMatrix = float3x3(IN.Tangent, IN.Bitangent, IN.Normal);\n" - "float3x3 WTTS = mul(TBNMatrix, (float3x3)WorldInverseTranspose);\n" - "Out.Light0 = normalize(mul(WTTS, afLightDir[0] ));\n" - "Out.ViewDir = normalize(mul(WTTS, (vCameraPos - WorldPos)));\n" - "#endif\n" - "return Out;\n" - "}\n" - - // Vertex shader for pixel shader usage and two lights - "VS_OUTPUT MaterialVShader_D2(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT Out = (VS_OUTPUT)0;\n" - - "#ifdef AV_SKINNING \n" - "float4 weights = IN.BlendWeights; \n" - "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" - "float4 localPos = float4( IN.Position, 1.0f); \n" - "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" - "#else \n" - "float3 objPos = IN.Position; \n" - "#endif // AV_SKINNING \n" - - // Multiply with the WorldViewProjection matrix - "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" - "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" - "Out.TexCoord0 = IN.TexCoord0;\n" - "#ifdef AV_TWO_UV \n" - "Out.TexCoord1 = IN.TexCoord1;\n" - "#endif\n" - "Out.Color = IN.Color;\n" - - "#ifndef AV_NORMAL_TEXTURE\n" - "Out.ViewDir = vCameraPos - WorldPos;\n" - "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" - "#endif\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3x3 TBNMatrix = float3x3(IN.Tangent, IN.Bitangent, IN.Normal);\n" - "float3x3 WTTS = mul(TBNMatrix, (float3x3)WorldInverseTranspose);\n" - "Out.Light0 = normalize(mul(WTTS, afLightDir[0] ));\n" - "Out.Light1 = normalize(mul(WTTS, afLightDir[1] ));\n" - "Out.ViewDir = normalize(mul(WTTS, (vCameraPos - WorldPos)));\n" - "#endif\n" - "return Out;\n" - "}\n" - - // Vertex shader for zero to five lights using the fixed function pixel pipeline - "VS_OUTPUT_FF MaterialVShader_FF(VS_INPUT IN)\n" - "{\n" - "VS_OUTPUT_FF Out = (VS_OUTPUT_FF)0;\n" - - "#ifdef AV_SKINNING \n" - "float4 weights = IN.BlendWeights; \n" - "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" - "float4 localPos = float4( IN.Position, 1.0f); \n" - "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" - "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" - "#else \n" - "float3 objPos = IN.Position; \n" - "#endif // AV_SKINNING \n" - - // Multiply with the WorldViewProjection matrix - "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" - "float3 worldPos = mul( float4( objPos, 1.0f), World);\n" - "float3 worldNormal = normalize( mul( IN.Normal, (float3x3) WorldInverseTranspose)); \n" - "Out.TexCoord0 = IN.TexCoord0;\n" - - // calculate per-vertex diffuse lighting including ambient part - "float4 diffuseColor = float4( 0.0f, 0.0f, 0.0f, 1.0f); \n" - "for( int a = 0; a < 2; a++) \n" - " diffuseColor.rgb += saturate( dot( afLightDir[a], worldNormal)) * afLightColor[a].rgb; \n" - // factor in material properties and a bit of ambient lighting - "Out.DiffuseColor = diffuseColor * DIFFUSE_COLOR + float4( 0.2f, 0.2f, 0.2f, 1.0f) * AMBIENT_COLOR; ; \n" - - // and specular including emissive part - "float4 specularColor = float4( 0.0f, 0.0f, 0.0f, 1.0f); \n" - "#ifdef AV_SPECULAR_COMPONENT\n" - "float3 viewDir = normalize( worldPos - vCameraPos); \n" - "for( int a = 0; a < 2; a++) \n" - "{ \n" - " float3 reflDir = reflect( afLightDir[a], worldNormal); \n" - " float specIntensity = pow( saturate( dot( reflDir, viewDir)), SPECULARITY) * SPECULAR_STRENGTH; \n" - " specularColor.rgb += afLightColor[a] * specIntensity; \n" - "} \n" - "#endif // AV_SPECULAR_COMPONENT\n" - // factor in material properties and the emissive part - "Out.SpecularColor = specularColor * SPECULAR_COLOR + EMISSIVE_COLOR; \n" - - "return Out;\n" - "}\n" - - - // Pixel shader - one light - "float4 MaterialPShaderSpecular_D1(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3 IN_Light0 = normalize(IN.Light0);\n" - "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" - "#else\n" - "float3 Normal = normalize(IN.Normal);\n" - "#endif \n" - "float3 ViewDir = normalize(IN.ViewDir);\n" - "#ifdef AV_SPECULAR_COMPONENT\n" - "float3 Reflect = normalize(reflect (-ViewDir,Normal));\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - - "{\n" - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_0 IN_Light0\n" - // would need to convert the reflection vector into world space .... - // simply let it ... - "#else\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_0 afLightDir[0]\n" - "#endif\n" - "#ifdef AV_DIFFUSE_TEXTURE2\n" - "float fHalfLambert = 1.f;\n" - "#else\n" - "float fHalfLambert = L1*L1;\n" - "#endif \n" - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" - "#else\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifndef AV_SKYBOX_LOOKUP\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#else\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SKYBOX_LOOKUP\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb + \n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - "#ifdef AV_OPACITY\n" - "OUT.a = TRANSPARENCY;\n" - "#endif\n" - "#ifdef AV_LIGHTMAP_TEXTURE\n" - "OUT.rgb *= tex2D(LIGHTMAP_SAMPLER,AV_LIGHTMAP_TEXTURE_UV_COORD).rgb*LM_STRENGTH;\n" - "#endif\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" - "#endif\n" - "return OUT;\n" - - "#undef AV_LIGHT_0\n" - "}\n" - - // Pixel shader - two lights - "float4 MaterialPShaderSpecular_D2(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3 IN_Light0 = normalize(IN.Light0);\n" - "float3 IN_Light1 = normalize(IN.Light1);\n" - "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" - "#else\n" - "float3 Normal = normalize(IN.Normal);\n" - "#endif \n" - "float3 ViewDir = normalize(IN.ViewDir);\n" - "#ifdef AV_SPECULAR_COMPONENT\n" - "float3 Reflect = -normalize(reflect (ViewDir,Normal));\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - - "{\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_0 IN_Light0\n" - "#else\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_0 afLightDir[0]\n" - "#endif\n" - "float fHalfLambert = L1*L1;\n" - - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" - "#else\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifndef AV_SKYBOX_LOOKUP\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#else\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SKYBOX_LOOKUP\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb + \n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb + \n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - "{\n" - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light1) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_1 IN_Light1\n" - "#else\n" - "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" - "#define AV_LIGHT_1 afLightDir[1]\n" - "#endif\n" - "float fHalfLambert = L1*L1;\n" - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" - "#else\n" - "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifndef AV_SKYBOX_LOOKUP\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#else\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SKYBOX_LOOKUP\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb + \n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb + \n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - "#ifdef AV_OPACITY\n" - "OUT.a = TRANSPARENCY;\n" - "#endif\n" - "#ifdef AV_LIGHTMAP_TEXTURE\n" - "OUT.rgb *= tex2D(LIGHTMAP_SAMPLER,AV_LIGHTMAP_TEXTURE_UV_COORD).rgb*LM_STRENGTH;\n" - "#endif\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" - "#endif\n" - "return OUT;\n" - - "#undef AV_LIGHT_0\n" - "#undef AV_LIGHT_1\n" - "}\n" - - // Same pixel shader again, one light - "float4 MaterialPShaderSpecular_PS20_D1(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3 IN_Light0 = normalize(IN.Light0);\n" - "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" - "#else\n" - "float3 Normal = normalize(IN.Normal);\n" - "#endif \n" - "float3 ViewDir = normalize(IN.ViewDir);\n" - - "{\n" - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,IN_Light0);\n" - "#else\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,afLightDir[0]);\n" - "#endif\n" - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" - "#else\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * L1 +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb +\n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - - "#ifdef AV_OPACITY\n" - "OUT.a = TRANSPARENCY;\n" - "#endif\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" - "#endif\n" - "return OUT;\n" - "}\n" - - // Same pixel shader again, two lights - "float4 MaterialPShaderSpecular_PS20_D2(VS_OUTPUT IN) : COLOR\n" - "{\n" - "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" - - "#ifdef AV_NORMAL_TEXTURE\n" - "float3 IN_Light0 = normalize(IN.Light0);\n" - "float3 IN_Light1 = normalize(IN.Light1);\n" - "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0) - 1.0f);\n" - "#else\n" - "float3 Normal = normalize(IN.Normal);\n" - "#endif \n" - "float3 ViewDir = normalize(IN.ViewDir);\n" - - "{\n" - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,IN_Light0);\n" - "#else\n" - "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,afLightDir[0]);\n" - "#endif\n" - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" - "#else\n" - "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * L1 +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb +\n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - "{\n" - "#ifdef AV_NORMAL_TEXTURE\n" - "float L1 = dot(Normal,IN_Light1) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,IN_Light1);\n" - "#else\n" - "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" - "float3 Reflect = reflect (Normal,afLightDir[1]);\n" - "#endif\n" - "#ifdef AV_DIFFUSE_TEXTURE\n" - "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" - "#else\n" - "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * L1 +\n" - "#endif // !AV_DIFFUSE_TEXTURE\n" - - "#ifdef AV_SPECULAR_COMPONENT\n" - "#ifdef AV_SPECULAR_TEXTURE\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#else\n" - "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" - "#endif // !AV_SPECULAR_TEXTURE\n" - "#endif // !AV_SPECULAR_COMPONENT\n" - "#ifdef AV_AMBIENT_TEXTURE\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" - "#else\n" - "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb + \n" - "#endif // !AV_AMBIENT_TEXTURE\n" - "#ifdef AV_EMISSIVE_TEXTURE\n" - "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" - "#else \n" - "EMISSIVE_COLOR.rgb;\n" - "#endif // !AV_EMISSIVE_TEXTURE\n" - "}\n" - - "#ifdef AV_OPACITY\n" - "OUT.a = TRANSPARENCY;\n" - "#endif\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" - "#endif\n" - "return OUT;\n" - "}\n" - - - // Technique for the material effect - "technique MaterialFXSpecular_D1\n" - "{\n" - "pass p0\n" - "{\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#else\n" - "#ifdef AV_OPACITY\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#endif \n" - "#endif\n" - - "PixelShader = compile ps_3_0 MaterialPShaderSpecular_D1();\n" - "VertexShader = compile vs_3_0 MaterialVShader_D1();\n" - "}\n" - "};\n" - "technique MaterialFXSpecular_D2\n" - "{\n" - "pass p0\n" - "{\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#else\n" - "#ifdef AV_OPACITY\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#endif \n" - "#endif\n" - - "PixelShader = compile ps_3_0 MaterialPShaderSpecular_D2();\n" - "VertexShader = compile vs_3_0 MaterialVShader_D2();\n" - "}\n" - "};\n" - - // Technique for the material effect (ps_2_0) - "technique MaterialFXSpecular_PS20_D1\n" - "{\n" - "pass p0\n" - "{\n" - "#ifdef AV_OPACITY_TEXTURE\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#else\n" - "#ifdef AV_OPACITY\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#endif \n" - "#endif\n" - - "PixelShader = compile ps_2_0 MaterialPShaderSpecular_PS20_D1();\n" - "VertexShader = compile vs_2_0 MaterialVShader_D1();\n" - "}\n" - "};\n" - - "technique MaterialFXSpecular_PS20_D2\n" - "{\n" - "pass p0\n" - "{\n" - "//CullMode=none;\n" - - "#ifdef AV_OPACITY_TEXTURE\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#else\n" - "#ifdef AV_OPACITY\n" - "AlphaBlendEnable=TRUE;" - "SrcBlend = srcalpha;\n" - "DestBlend = invsrcalpha;\n" - "#endif \n" - "#endif\n" - - "PixelShader = compile ps_2_0 MaterialPShaderSpecular_PS20_D2();\n" - "VertexShader = compile vs_2_0 MaterialVShader_D2();\n" - "}\n" - "};\n" - - // Technique for the material effect using fixed function pixel pipeline - "technique MaterialFX_FF\n" - "{\n" - "pass p0\n" - "{\n" - "//CullMode=none;\n" - "SpecularEnable = true; \n" - "VertexShader = compile vs_2_0 MaterialVShader_FF();\n" - "ColorOp[0] = Modulate;\n" - "ColorArg0[0] = Texture;\n" - "ColorArg1[0] = Diffuse;\n" - "AlphaOp[0] = Modulate;\n" - "AlphaArg0[0] = Texture;\n" - "AlphaArg1[0] = Diffuse;\n" - "}\n" - "};\n" - ); + "float4x4 WorldViewProjection : WORLDVIEWPROJECTION;\n" + "float4x4 World : WORLD;\n" + "float4x3 WorldInverseTranspose : WORLDINVERSETRANSPOSE;\n" + + "#ifndef AV_DISABLESSS\n" + "float4x3 ViewProj;\n" + "float4x3 InvViewProj;\n" + "#endif\n" + + "float4 DIFFUSE_COLOR;\n" + "float4 SPECULAR_COLOR;\n" + "float4 AMBIENT_COLOR;\n" + "float4 EMISSIVE_COLOR;\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "float SPECULARITY;\n" + "float SPECULAR_STRENGTH;\n" + "#endif\n" + "#ifdef AV_OPACITY\n" + "float TRANSPARENCY;\n" + "#endif\n" + + // light colors (diffuse and specular) + "float4 afLightColor[5];\n" + "float4 afLightColorAmbient[5];\n" + + // light direction + "float3 afLightDir[5];\n" + + // position of the camera in worldspace + "float3 vCameraPos : CAMERAPOSITION;\n" + + // Bone matrices + "#ifdef AV_SKINNING \n" + "float4x3 gBoneMatrix[60]; \n" + "#endif // AV_SKINNING \n" + + "#ifdef AV_DIFFUSE_TEXTURE\n" + "texture DIFFUSE_TEXTURE;\n" + "sampler DIFFUSE_SAMPLER\n" + "{\n" + "Texture = ;\n" + "#ifdef AV_WRAPU\n" + "AddressU = WRAP;\n" + "#endif\n" + "#ifdef AV_MIRRORU\n" + "AddressU = MIRROR;\n" + "#endif\n" + "#ifdef AV_CLAMPU\n" + "AddressU = CLAMP;\n" + "#endif\n" + "#ifdef AV_WRAPV\n" + "AddressV = WRAP;\n" + "#endif\n" + "#ifdef AV_MIRRORV\n" + "AddressV = MIRROR;\n" + "#endif\n" + "#ifdef AV_CLAMPV\n" + "AddressV = CLAMP;\n" + "#endif\n" + "};\n" + "#endif // AV_DIFFUSE_TEXTUR\n" + + "#ifdef AV_DIFFUSE_TEXTURE2\n" + "texture DIFFUSE_TEXTURE2;\n" + "sampler DIFFUSE_SAMPLER2\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_DIFFUSE_TEXTUR2\n" + + "#ifdef AV_SPECULAR_TEXTURE\n" + "texture SPECULAR_TEXTURE;\n" + "sampler SPECULAR_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_SPECULAR_TEXTUR\n" + + "#ifdef AV_AMBIENT_TEXTURE\n" + "texture AMBIENT_TEXTURE;\n" + "sampler AMBIENT_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_AMBIENT_TEXTUR\n" + + "#ifdef AV_LIGHTMAP_TEXTURE\n" + "texture LIGHTMAP_TEXTURE;\n" + "sampler LIGHTMAP_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_LIGHTMAP_TEXTURE\n" + + "#ifdef AV_OPACITY_TEXTURE\n" + "texture OPACITY_TEXTURE;\n" + "sampler OPACITY_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_OPACITY_TEXTURE\n" + + "#ifdef AV_EMISSIVE_TEXTURE\n" + "texture EMISSIVE_TEXTURE;\n" + "sampler EMISSIVE_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_EMISSIVE_TEXTUR\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "texture NORMAL_TEXTURE;\n" + "sampler NORMAL_SAMPLER\n" + "{\n" + "Texture = ;\n" + "};\n" + "#endif // AV_NORMAL_TEXTURE\n" + + "#ifdef AV_SKYBOX_LOOKUP\n" + "textureCUBE lw_tex_envmap;\n" + "samplerCUBE EnvironmentMapSampler = sampler_state\n" + "{\n" + "Texture = (lw_tex_envmap);\n" + "AddressU = CLAMP;\n" + "AddressV = CLAMP;\n" + "AddressW = CLAMP;\n" + + "MAGFILTER = linear;\n" + "MINFILTER = linear;\n" + "};\n" + "#endif // AV_SKYBOX_LOOKUP\n" + + // Vertex shader input structure + "struct VS_INPUT\n" + "{\n" + "float3 Position : POSITION;\n" + "float3 Normal : NORMAL;\n" + "float4 Color : COLOR0;\n" + "float3 Tangent : TANGENT;\n" + "float3 Bitangent : BINORMAL;\n" + "float2 TexCoord0 : TEXCOORD0;\n" + "#ifdef AV_TWO_UV \n" + "float2 TexCoord1 : TEXCOORD1;\n" + "#endif \n" + "#ifdef AV_SKINNING \n" + "float4 BlendIndices : BLENDINDICES;\n" + "float4 BlendWeights : BLENDWEIGHT;\n" + "#endif // AV_SKINNING \n" + "};\n" + + // Vertex shader output structure for pixel shader usage + "struct VS_OUTPUT\n" + "{\n" + "float4 Position : POSITION;\n" + "float3 ViewDir : TEXCOORD0;\n" + + "float4 Color : COLOR0;\n" + + "#ifndef AV_NORMAL_TEXTURE\n" + "float3 Normal : TEXCOORD1;\n" + "#endif\n" + + "float2 TexCoord0 : TEXCOORD2;\n" + "#ifdef AV_TWO_UV \n" + "float2 TexCoord1 : TEXCOORD3;\n" + "#endif \n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3 Light0 : TEXCOORD3;\n" + "float3 Light1 : TEXCOORD4;\n" + "#endif\n" + "};\n" + + // Vertex shader output structure for fixed function pixel pipeline + "struct VS_OUTPUT_FF\n" + "{\n" + "float4 Position : POSITION;\n" + "float4 DiffuseColor : COLOR0;\n" + "float4 SpecularColor : COLOR1;\n" + "float2 TexCoord0 : TEXCOORD0;\n" + "};\n" + + + // Selective SuperSampling in screenspace for reflection lookups + "#define GetSSSCubeMap(_refl) (texCUBElod(EnvironmentMapSampler,float4(_refl,0.0f)).rgb) \n" + + + // Vertex shader for pixel shader usage and one light + "VS_OUTPUT MaterialVShader_D1(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT Out = (VS_OUTPUT)0;\n" + + "#ifdef AV_SKINNING \n" + "float4 weights = IN.BlendWeights; \n" + "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" + "float4 localPos = float4( IN.Position, 1.0f); \n" + "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" + "#else \n" + "float3 objPos = IN.Position; \n" + "#endif // AV_SKINNING \n" + + // Multiply with the WorldViewProjection matrix + "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" + "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" + "Out.TexCoord0 = IN.TexCoord0;\n" + "#ifdef AV_TWO_UV \n" + "Out.TexCoord1 = IN.TexCoord1;\n" + "#endif\n" + "Out.Color = IN.Color;\n" + + "#ifndef AV_NORMAL_TEXTURE\n" + "Out.ViewDir = vCameraPos - WorldPos;\n" + "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" + "#endif\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3x3 TBNMatrix = float3x3(IN.Tangent, IN.Bitangent, IN.Normal);\n" + "float3x3 WTTS = mul(TBNMatrix, (float3x3)WorldInverseTranspose);\n" + "Out.Light0 = normalize(mul(WTTS, afLightDir[0] ));\n" + "Out.ViewDir = normalize(mul(WTTS, (vCameraPos - WorldPos)));\n" + "#endif\n" + "return Out;\n" + "}\n" + + // Vertex shader for pixel shader usage and two lights + "VS_OUTPUT MaterialVShader_D2(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT Out = (VS_OUTPUT)0;\n" + + "#ifdef AV_SKINNING \n" + "float4 weights = IN.BlendWeights; \n" + "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" + "float4 localPos = float4( IN.Position, 1.0f); \n" + "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" + "#else \n" + "float3 objPos = IN.Position; \n" + "#endif // AV_SKINNING \n" + + // Multiply with the WorldViewProjection matrix + "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" + "float3 WorldPos = mul( float4( objPos, 1.0f), World);\n" + "Out.TexCoord0 = IN.TexCoord0;\n" + "#ifdef AV_TWO_UV \n" + "Out.TexCoord1 = IN.TexCoord1;\n" + "#endif\n" + "Out.Color = IN.Color;\n" + + "#ifndef AV_NORMAL_TEXTURE\n" + "Out.ViewDir = vCameraPos - WorldPos;\n" + "Out.Normal = mul(IN.Normal,WorldInverseTranspose);\n" + "#endif\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3x3 TBNMatrix = float3x3(IN.Tangent, IN.Bitangent, IN.Normal);\n" + "float3x3 WTTS = mul(TBNMatrix, (float3x3)WorldInverseTranspose);\n" + "Out.Light0 = normalize(mul(WTTS, afLightDir[0] ));\n" + "Out.Light1 = normalize(mul(WTTS, afLightDir[1] ));\n" + "Out.ViewDir = normalize(mul(WTTS, (vCameraPos - WorldPos)));\n" + "#endif\n" + "return Out;\n" + "}\n" + + // Vertex shader for zero to five lights using the fixed function pixel pipeline + "VS_OUTPUT_FF MaterialVShader_FF(VS_INPUT IN)\n" + "{\n" + "VS_OUTPUT_FF Out = (VS_OUTPUT_FF)0;\n" + + "#ifdef AV_SKINNING \n" + "float4 weights = IN.BlendWeights; \n" + "weights.w = 1.0f - dot( weights.xyz, float3( 1, 1, 1)); \n" + "float4 localPos = float4( IN.Position, 1.0f); \n" + "float3 objPos = mul( localPos, gBoneMatrix[IN.BlendIndices.x]) * weights.x; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.y]) * weights.y; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.z]) * weights.z; \n" + "objPos += mul( localPos, gBoneMatrix[IN.BlendIndices.w]) * weights.w; \n" + "#else \n" + "float3 objPos = IN.Position; \n" + "#endif // AV_SKINNING \n" + + // Multiply with the WorldViewProjection matrix + "Out.Position = mul( float4( objPos, 1.0f), WorldViewProjection);\n" + "float3 worldPos = mul( float4( objPos, 1.0f), World);\n" + "float3 worldNormal = normalize( mul( IN.Normal, (float3x3) WorldInverseTranspose)); \n" + "Out.TexCoord0 = IN.TexCoord0;\n" + + // calculate per-vertex diffuse lighting including ambient part + "float4 diffuseColor = float4( 0.0f, 0.0f, 0.0f, 1.0f); \n" + "for( int a = 0; a < 2; a++) \n" + " diffuseColor.rgb += saturate( dot( afLightDir[a], worldNormal)) * afLightColor[a].rgb; \n" + // factor in material properties and a bit of ambient lighting + "Out.DiffuseColor = diffuseColor * DIFFUSE_COLOR + float4( 0.2f, 0.2f, 0.2f, 1.0f) * AMBIENT_COLOR; ; \n" + + // and specular including emissive part + "float4 specularColor = float4( 0.0f, 0.0f, 0.0f, 1.0f); \n" + "#ifdef AV_SPECULAR_COMPONENT\n" + "float3 viewDir = normalize( worldPos - vCameraPos); \n" + "for( int a = 0; a < 2; a++) \n" + "{ \n" + " float3 reflDir = reflect( afLightDir[a], worldNormal); \n" + " float specIntensity = pow( saturate( dot( reflDir, viewDir)), SPECULARITY) * SPECULAR_STRENGTH; \n" + " specularColor.rgb += afLightColor[a] * specIntensity; \n" + "} \n" + "#endif // AV_SPECULAR_COMPONENT\n" + // factor in material properties and the emissive part + "Out.SpecularColor = specularColor * SPECULAR_COLOR + EMISSIVE_COLOR; \n" + + "return Out;\n" + "}\n" + + + // Pixel shader - one light + "float4 MaterialPShaderSpecular_D1(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3 IN_Light0 = normalize(IN.Light0);\n" + "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" + "#else\n" + "float3 Normal = normalize(IN.Normal);\n" + "#endif \n" + "float3 ViewDir = normalize(IN.ViewDir);\n" + "#ifdef AV_SPECULAR_COMPONENT\n" + "float3 Reflect = normalize(reflect (-ViewDir,Normal));\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + + "{\n" + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_0 IN_Light0\n" + // would need to convert the reflection vector into world space .... + // simply let it ... + "#else\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_0 afLightDir[0]\n" + "#endif\n" + "#ifdef AV_DIFFUSE_TEXTURE2\n" + "float fHalfLambert = 1.f;\n" + "#else\n" + "float fHalfLambert = L1*L1;\n" + "#endif \n" + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" + "#else\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifndef AV_SKYBOX_LOOKUP\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#else\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SKYBOX_LOOKUP\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb + \n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + "#ifdef AV_OPACITY\n" + "OUT.a = TRANSPARENCY;\n" + "#endif\n" + "#ifdef AV_LIGHTMAP_TEXTURE\n" + "OUT.rgb *= tex2D(LIGHTMAP_SAMPLER,AV_LIGHTMAP_TEXTURE_UV_COORD).rgb*LM_STRENGTH;\n" + "#endif\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" + "#endif\n" + "return OUT;\n" + + "#undef AV_LIGHT_0\n" + "}\n" + + // Pixel shader - two lights + "float4 MaterialPShaderSpecular_D2(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3 IN_Light0 = normalize(IN.Light0);\n" + "float3 IN_Light1 = normalize(IN.Light1);\n" + "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" + "#else\n" + "float3 Normal = normalize(IN.Normal);\n" + "#endif \n" + "float3 ViewDir = normalize(IN.ViewDir);\n" + "#ifdef AV_SPECULAR_COMPONENT\n" + "float3 Reflect = -normalize(reflect (ViewDir,Normal));\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + + "{\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_0 IN_Light0\n" + "#else\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_0 afLightDir[0]\n" + "#endif\n" + "float fHalfLambert = L1*L1;\n" + + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" + "#else\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifndef AV_SKYBOX_LOOKUP\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#else\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_0),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SKYBOX_LOOKUP\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb + \n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb + \n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + "{\n" + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light1) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_1 IN_Light1\n" + "#else\n" + "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" + "#define AV_LIGHT_1 afLightDir[1]\n" + "#endif\n" + "float fHalfLambert = L1*L1;\n" + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * fHalfLambert * IN.Color.rgb +\n" + "#else\n" + "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * fHalfLambert * IN.Color.rgb +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifndef AV_SKYBOX_LOOKUP\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#else\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * GetSSSCubeMap(Reflect) * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * GetSSSCubeMap(Reflect) * (saturate(fHalfLambert * 2.0f) * pow(dot(Reflect,AV_LIGHT_1),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SKYBOX_LOOKUP\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb + \n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb + \n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + "#ifdef AV_OPACITY\n" + "OUT.a = TRANSPARENCY;\n" + "#endif\n" + "#ifdef AV_LIGHTMAP_TEXTURE\n" + "OUT.rgb *= tex2D(LIGHTMAP_SAMPLER,AV_LIGHTMAP_TEXTURE_UV_COORD).rgb*LM_STRENGTH;\n" + "#endif\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" + "#endif\n" + "return OUT;\n" + + "#undef AV_LIGHT_0\n" + "#undef AV_LIGHT_1\n" + "}\n" + + // Same pixel shader again, one light + "float4 MaterialPShaderSpecular_PS20_D1(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3 IN_Light0 = normalize(IN.Light0);\n" + "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0).rgb - 1.0f);\n" + "#else\n" + "float3 Normal = normalize(IN.Normal);\n" + "#endif \n" + "float3 ViewDir = normalize(IN.ViewDir);\n" + + "{\n" + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,IN_Light0);\n" + "#else\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,afLightDir[0]);\n" + "#endif\n" + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" + "#else\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * L1 +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb +\n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + + "#ifdef AV_OPACITY\n" + "OUT.a = TRANSPARENCY;\n" + "#endif\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" + "#endif\n" + "return OUT;\n" + "}\n" + + // Same pixel shader again, two lights + "float4 MaterialPShaderSpecular_PS20_D2(VS_OUTPUT IN) : COLOR\n" + "{\n" + "float4 OUT = float4(0.0f,0.0f,0.0f,1.0f);\n" + + "#ifdef AV_NORMAL_TEXTURE\n" + "float3 IN_Light0 = normalize(IN.Light0);\n" + "float3 IN_Light1 = normalize(IN.Light1);\n" + "float3 Normal = normalize(2.0f * tex2D(NORMAL_SAMPLER, IN.TexCoord0) - 1.0f);\n" + "#else\n" + "float3 Normal = normalize(IN.Normal);\n" + "#endif \n" + "float3 ViewDir = normalize(IN.ViewDir);\n" + + "{\n" + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light0) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,IN_Light0);\n" + "#else\n" + "float L1 = dot(Normal,afLightDir[0]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,afLightDir[0]);\n" + "#endif\n" + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" + "#else\n" + "OUT.rgb += afLightColor[0].rgb * DIFFUSE_COLOR.rgb * L1 +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[0].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[0].rgb +\n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + "{\n" + "#ifdef AV_NORMAL_TEXTURE\n" + "float L1 = dot(Normal,IN_Light1) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,IN_Light1);\n" + "#else\n" + "float L1 = dot(Normal,afLightDir[1]) * 0.5f + 0.5f;\n" + "float3 Reflect = reflect (Normal,afLightDir[1]);\n" + "#endif\n" + "#ifdef AV_DIFFUSE_TEXTURE\n" + "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * tex2D(DIFFUSE_SAMPLER,IN.TexCoord0).rgb * L1 +\n" + "#else\n" + "OUT.rgb += afLightColor[1].rgb * DIFFUSE_COLOR.rgb * L1 +\n" + "#endif // !AV_DIFFUSE_TEXTURE\n" + + "#ifdef AV_SPECULAR_COMPONENT\n" + "#ifdef AV_SPECULAR_TEXTURE\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * tex2D(SPECULAR_SAMPLER,IN.TexCoord0).rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#else\n" + "SPECULAR_COLOR.rgb * SPECULAR_STRENGTH * afLightColor[1].rgb * (saturate(L1 * 4.0f) * pow(dot(Reflect,ViewDir),SPECULARITY)) + \n" + "#endif // !AV_SPECULAR_TEXTURE\n" + "#endif // !AV_SPECULAR_COMPONENT\n" + "#ifdef AV_AMBIENT_TEXTURE\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb * tex2D(AMBIENT_SAMPLER,IN.TexCoord0).rgb +\n" + "#else\n" + "AMBIENT_COLOR.rgb * afLightColorAmbient[1].rgb + \n" + "#endif // !AV_AMBIENT_TEXTURE\n" + "#ifdef AV_EMISSIVE_TEXTURE\n" + "EMISSIVE_COLOR.rgb * tex2D(EMISSIVE_SAMPLER,IN.TexCoord0).rgb;\n" + "#else \n" + "EMISSIVE_COLOR.rgb;\n" + "#endif // !AV_EMISSIVE_TEXTURE\n" + "}\n" + + "#ifdef AV_OPACITY\n" + "OUT.a = TRANSPARENCY;\n" + "#endif\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "OUT.a *= tex2D(OPACITY_SAMPLER,IN.TexCoord0). AV_OPACITY_TEXTURE_REGISTER_MASK;\n" + "#endif\n" + "return OUT;\n" + "}\n" + + + // Technique for the material effect + "technique MaterialFXSpecular_D1\n" + "{\n" + "pass p0\n" + "{\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#else\n" + "#ifdef AV_OPACITY\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#endif \n" + "#endif\n" + + "PixelShader = compile ps_3_0 MaterialPShaderSpecular_D1();\n" + "VertexShader = compile vs_3_0 MaterialVShader_D1();\n" + "}\n" + "};\n" + "technique MaterialFXSpecular_D2\n" + "{\n" + "pass p0\n" + "{\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#else\n" + "#ifdef AV_OPACITY\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#endif \n" + "#endif\n" + + "PixelShader = compile ps_3_0 MaterialPShaderSpecular_D2();\n" + "VertexShader = compile vs_3_0 MaterialVShader_D2();\n" + "}\n" + "};\n" + + // Technique for the material effect (ps_2_0) + "technique MaterialFXSpecular_PS20_D1\n" + "{\n" + "pass p0\n" + "{\n" + "#ifdef AV_OPACITY_TEXTURE\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#else\n" + "#ifdef AV_OPACITY\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#endif \n" + "#endif\n" + + "PixelShader = compile ps_2_0 MaterialPShaderSpecular_PS20_D1();\n" + "VertexShader = compile vs_2_0 MaterialVShader_D1();\n" + "}\n" + "};\n" + + "technique MaterialFXSpecular_PS20_D2\n" + "{\n" + "pass p0\n" + "{\n" + "//CullMode=none;\n" + + "#ifdef AV_OPACITY_TEXTURE\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#else\n" + "#ifdef AV_OPACITY\n" + "AlphaBlendEnable=TRUE;" + "SrcBlend = srcalpha;\n" + "DestBlend = invsrcalpha;\n" + "#endif \n" + "#endif\n" + + "PixelShader = compile ps_2_0 MaterialPShaderSpecular_PS20_D2();\n" + "VertexShader = compile vs_2_0 MaterialVShader_D2();\n" + "}\n" + "};\n" + + // Technique for the material effect using fixed function pixel pipeline + "technique MaterialFX_FF\n" + "{\n" + "pass p0\n" + "{\n" + "//CullMode=none;\n" + "SpecularEnable = true; \n" + "VertexShader = compile vs_2_0 MaterialVShader_FF();\n" + "ColorOp[0] = Modulate;\n" + "ColorArg0[0] = Texture;\n" + "ColorArg1[0] = Diffuse;\n" + "AlphaOp[0] = Modulate;\n" + "AlphaArg0[0] = Texture;\n" + "AlphaArg1[0] = Diffuse;\n" + "}\n" + "};\n" + ); std::string g_szPassThroughShader = std::string( - "texture TEXTURE_2D;\n" - "sampler TEXTURE_SAMPLER = sampler_state\n" - "{\n" - "Texture = (TEXTURE_2D);\n" - "MinFilter = POINT;\n" - "MagFilter = POINT;\n" - "};\n" + "texture TEXTURE_2D;\n" + "sampler TEXTURE_SAMPLER = sampler_state\n" + "{\n" + "Texture = (TEXTURE_2D);\n" + "MinFilter = POINT;\n" + "MagFilter = POINT;\n" + "};\n" // Vertex Shader output for pixel shader usage - "struct VS_OUTPUT\n" - "{\n" - "float4 Position : POSITION;\n" - "float2 TexCoord0 : TEXCOORD0;\n" - "};\n" + "struct VS_OUTPUT\n" + "{\n" + "float4 Position : POSITION;\n" + "float2 TexCoord0 : TEXCOORD0;\n" + "};\n" // vertex shader for pixel shader usage - "VS_OUTPUT DefaultVShader(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" - "{\n" - "VS_OUTPUT Out;\n" + "VS_OUTPUT DefaultVShader(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" + "{\n" + "VS_OUTPUT Out;\n" - "Out.Position = INPosition;\n" - "Out.TexCoord0 = INTexCoord0;\n" + "Out.Position = INPosition;\n" + "Out.TexCoord0 = INTexCoord0;\n" - "return Out;\n" - "}\n" + "return Out;\n" + "}\n" - // simply lookup a texture - "float4 PassThrough_PS(float2 IN : TEXCOORD0) : COLOR\n" - "{\n" - " return tex2D(TEXTURE_SAMPLER,IN);\n" - "}\n" + // simply lookup a texture + "float4 PassThrough_PS(float2 IN : TEXCOORD0) : COLOR\n" + "{\n" + " return tex2D(TEXTURE_SAMPLER,IN);\n" + "}\n" - // visualize the alpha channel (in black) -> use a - "float4 PassThroughAlphaA_PS(float2 IN : TEXCOORD0) : COLOR\n" - "{\n" - " return float4(0.0f,0.0f,0.0f,tex2D(TEXTURE_SAMPLER,IN).a);\n" - "}\n" + // visualize the alpha channel (in black) -> use a + "float4 PassThroughAlphaA_PS(float2 IN : TEXCOORD0) : COLOR\n" + "{\n" + " return float4(0.0f,0.0f,0.0f,tex2D(TEXTURE_SAMPLER,IN).a);\n" + "}\n" - // visualize the alpha channel (in black) -> use r - "float4 PassThroughAlphaR_PS(float2 IN : TEXCOORD0) : COLOR\n" - "{\n" - " return float4(0.0f,0.0f,0.0f,tex2D(TEXTURE_SAMPLER,IN).r);\n" - "}\n" + // visualize the alpha channel (in black) -> use r + "float4 PassThroughAlphaR_PS(float2 IN : TEXCOORD0) : COLOR\n" + "{\n" + " return float4(0.0f,0.0f,0.0f,tex2D(TEXTURE_SAMPLER,IN).r);\n" + "}\n" - // Simple pass-through technique - "technique PassThrough\n" - "{\n" - "pass p0\n" - "{\n" - "FillMode=Solid;\n" - "ZEnable = FALSE;\n" - "CullMode = none;\n" - "AlphaBlendEnable = TRUE;\n" - "SrcBlend =srcalpha;\n" - "DestBlend =invsrcalpha;\n" - "PixelShader = compile ps_2_0 PassThrough_PS();\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" - "}\n" - "};\n" + // Simple pass-through technique + "technique PassThrough\n" + "{\n" + "pass p0\n" + "{\n" + "FillMode=Solid;\n" + "ZEnable = FALSE;\n" + "CullMode = none;\n" + "AlphaBlendEnable = TRUE;\n" + "SrcBlend =srcalpha;\n" + "DestBlend =invsrcalpha;\n" + "PixelShader = compile ps_2_0 PassThrough_PS();\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" + "}\n" + "};\n" - // Pass-through technique which visualizes the texture's alpha channel - "technique PassThroughAlphaFromA\n" - "{\n" - "pass p0\n" - "{\n" - "FillMode=Solid;\n" - "ZEnable = FALSE;\n" - "CullMode = none;\n" - "AlphaBlendEnable = TRUE;\n" - "SrcBlend =srcalpha;\n" - "DestBlend =invsrcalpha;\n" - "PixelShader = compile ps_2_0 PassThroughAlphaA_PS();\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" - "}\n" - "};\n" + // Pass-through technique which visualizes the texture's alpha channel + "technique PassThroughAlphaFromA\n" + "{\n" + "pass p0\n" + "{\n" + "FillMode=Solid;\n" + "ZEnable = FALSE;\n" + "CullMode = none;\n" + "AlphaBlendEnable = TRUE;\n" + "SrcBlend =srcalpha;\n" + "DestBlend =invsrcalpha;\n" + "PixelShader = compile ps_2_0 PassThroughAlphaA_PS();\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" + "}\n" + "};\n" - // Pass-through technique which visualizes the texture's red channel - "technique PassThroughAlphaFromR\n" - "{\n" - "pass p0\n" - "{\n" - "FillMode=Solid;\n" - "ZEnable = FALSE;\n" - "CullMode = none;\n" - "AlphaBlendEnable = TRUE;\n" - "SrcBlend =srcalpha;\n" - "DestBlend =invsrcalpha;\n" - "PixelShader = compile ps_2_0 PassThroughAlphaR_PS();\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" - "}\n" - "};\n" + // Pass-through technique which visualizes the texture's red channel + "technique PassThroughAlphaFromR\n" + "{\n" + "pass p0\n" + "{\n" + "FillMode=Solid;\n" + "ZEnable = FALSE;\n" + "CullMode = none;\n" + "AlphaBlendEnable = TRUE;\n" + "SrcBlend =srcalpha;\n" + "DestBlend =invsrcalpha;\n" + "PixelShader = compile ps_2_0 PassThroughAlphaR_PS();\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" + "}\n" + "};\n" - // technique for fixed function pixel pipeline - "technique PassThrough_FF\n" - "{\n" - "pass p0\n" - "{\n" - "ZEnable = FALSE;\n" - "CullMode = none;\n" - "AlphaBlendEnable = TRUE;\n" - "SrcBlend =srcalpha;\n" - "DestBlend =invsrcalpha;\n" - "VertexShader = compile vs_2_0 DefaultVShader();\n" + // technique for fixed function pixel pipeline + "technique PassThrough_FF\n" + "{\n" + "pass p0\n" + "{\n" + "ZEnable = FALSE;\n" + "CullMode = none;\n" + "AlphaBlendEnable = TRUE;\n" + "SrcBlend =srcalpha;\n" + "DestBlend =invsrcalpha;\n" + "VertexShader = compile vs_2_0 DefaultVShader();\n" "ColorOp[0] = SelectArg1;\n" "ColorArg0[0] = Texture;\n" "AlphaOp[0] = SelectArg1;\n" "AlphaArg0[0] = Texture;\n" - "}\n" - "};\n" + "}\n" + "};\n" ); std::string g_szCheckerBackgroundShader = std::string( - // the two colors used to draw the checker pattern - "float3 COLOR_ONE = float3(0.4f,0.4f,0.4f);\n" - "float3 COLOR_TWO = float3(0.6f,0.6f,0.6f);\n" + // the two colors used to draw the checker pattern + "float3 COLOR_ONE = float3(0.4f,0.4f,0.4f);\n" + "float3 COLOR_TWO = float3(0.6f,0.6f,0.6f);\n" - // size of a square in both x and y direction - "float SQUARE_SIZE = 10.0f;\n" + // size of a square in both x and y direction + "float SQUARE_SIZE = 10.0f;\n" // vertex shader output structure - "struct VS_OUTPUT\n" - "{\n" - "float4 Position : POSITION;\n" - "};\n" + "struct VS_OUTPUT\n" + "{\n" + "float4 Position : POSITION;\n" + "};\n" // vertex shader - "VS_OUTPUT DefaultVShader(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" - "{\n" - "VS_OUTPUT Out;\n" + "VS_OUTPUT DefaultVShader(float4 INPosition : POSITION, float2 INTexCoord0 : TEXCOORD0 )\n" + "{\n" + "VS_OUTPUT Out;\n" - "Out.Position = INPosition;\n" - "return Out;\n" - "}\n" + "Out.Position = INPosition;\n" + "return Out;\n" + "}\n" - // pixel shader - "float4 MakePattern_PS(float2 IN : VPOS) : COLOR\n" - "{\n" - "float2 fDiv = IN / SQUARE_SIZE;\n" - "float3 fColor = COLOR_ONE;\n" - "if (0 == round(fmod(round(fDiv.x),2)))\n" - "{\n" - " if (0 == round(fmod(round(fDiv.y),2))) fColor = COLOR_TWO;\n" - "}\n" - "else if (0 != round(fmod(round(fDiv.y),2)))fColor = COLOR_TWO;\n" - "return float4(fColor,1.0f);" - "}\n" - - // technique to generate a pattern - "technique MakePattern\n" - "{\n" - "pass p0\n" - "{\n" - "FillMode=Solid;\n" - "ZEnable = FALSE;\n" - "CullMode = none;\n" - "PixelShader = compile ps_3_0 MakePattern_PS();\n" - "VertexShader = compile vs_3_0 DefaultVShader();\n" - "}\n" - "};\n" - ); - }; \ No newline at end of file + // pixel shader + "float4 MakePattern_PS(float2 IN : VPOS) : COLOR\n" + "{\n" + "float2 fDiv = IN / SQUARE_SIZE;\n" + "float3 fColor = COLOR_ONE;\n" + "if (0 == round(fmod(round(fDiv.x),2)))\n" + "{\n" + " if (0 == round(fmod(round(fDiv.y),2))) fColor = COLOR_TWO;\n" + "}\n" + "else if (0 != round(fmod(round(fDiv.y),2)))fColor = COLOR_TWO;\n" + "return float4(fColor,1.0f);" + "}\n" + + // technique to generate a pattern + "technique MakePattern\n" + "{\n" + "pass p0\n" + "{\n" + "FillMode=Solid;\n" + "ZEnable = FALSE;\n" + "CullMode = none;\n" + "PixelShader = compile ps_3_0 MakePattern_PS();\n" + "VertexShader = compile vs_3_0 DefaultVShader();\n" + "}\n" + "};\n" + ); + }; \ No newline at end of file diff --git a/tools/assimp_view/assimp_view.cpp b/tools/assimp_view/assimp_view.cpp index f3c261e92..e88a7035e 100644 --- a/tools/assimp_view/assimp_view.cpp +++ b/tools/assimp_view/assimp_view.cpp @@ -40,16 +40,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "stdafx.h" #include "assimp_view.h" #include + using namespace std; namespace AssimpView { +extern std::string g_szNormalsShader; +extern std::string g_szDefaultShader; +extern std::string g_szPassThroughShader; -//------------------------------------------------------------------------------- -// evil globals //------------------------------------------------------------------------------- HINSTANCE g_hInstance = NULL; HWND g_hDlg = NULL; @@ -78,19 +79,19 @@ double g_dCurrent = 0.; // default pp steps unsigned int ppsteps = aiProcess_CalcTangentSpace | // calculate tangents and bitangents if possible - aiProcess_JoinIdenticalVertices | // join identical vertices/ optimize indexing - aiProcess_ValidateDataStructure | // perform a full validation of the loader's output - aiProcess_ImproveCacheLocality | // improve the cache locality of the output vertices - aiProcess_RemoveRedundantMaterials | // remove redundant materials - aiProcess_FindDegenerates | // remove degenerated polygons from the import - aiProcess_FindInvalidData | // detect invalid model data, such as invalid normal vectors - aiProcess_GenUVCoords | // convert spherical, cylindrical, box and planar mapping to proper UVs - aiProcess_TransformUVCoords | // preprocess UV transformations (scaling, translation ...) - aiProcess_FindInstances | // search for instanced meshes and remove them by references to one master - aiProcess_LimitBoneWeights | // limit bone weights to 4 per vertex - aiProcess_OptimizeMeshes | // join small meshes, if possible; - aiProcess_SplitByBoneCount | // split meshes with too many bones. Necessary for our (limited) hardware skinning shader - 0; + aiProcess_JoinIdenticalVertices | // join identical vertices/ optimize indexing + aiProcess_ValidateDataStructure | // perform a full validation of the loader's output + aiProcess_ImproveCacheLocality | // improve the cache locality of the output vertices + aiProcess_RemoveRedundantMaterials | // remove redundant materials + aiProcess_FindDegenerates | // remove degenerated polygons from the import + aiProcess_FindInvalidData | // detect invalid model data, such as invalid normal vectors + aiProcess_GenUVCoords | // convert spherical, cylindrical, box and planar mapping to proper UVs + aiProcess_TransformUVCoords | // preprocess UV transformations (scaling, translation ...) + aiProcess_FindInstances | // search for instanced meshes and remove them by references to one master + aiProcess_LimitBoneWeights | // limit bone weights to 4 per vertex + aiProcess_OptimizeMeshes | // join small meshes, if possible; + aiProcess_SplitByBoneCount | // split meshes with too many bones. Necessary for our (limited) hardware skinning shader + 0; unsigned int ppstepsdefault = ppsteps; @@ -108,9 +109,9 @@ aiVector3D g_avLightDirs[1] = D3DCOLOR g_avLightColors[3] = { - D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0xFF), - D3DCOLOR_ARGB(0xFF,0xFF,0x00,0x00), - D3DCOLOR_ARGB(0xFF,0x05,0x05,0x05), + D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0xFF), + D3DCOLOR_ARGB(0xFF,0xFF,0x00,0x00), + D3DCOLOR_ARGB(0xFF,0x05,0x05,0x05), }; POINT g_mousePos; @@ -143,53 +144,53 @@ float g_fLoadTime = 0.0f; //------------------------------------------------------------------------------- DWORD WINAPI LoadThreadProc(LPVOID lpParameter) { - UNREFERENCED_PARAMETER(lpParameter); + UNREFERENCED_PARAMETER(lpParameter); - // get current time - double fCur = (double)timeGetTime(); + // get current time + double fCur = (double)timeGetTime(); - aiPropertyStore* props = aiCreatePropertyStore(); - aiSetImportPropertyInteger(props,AI_CONFIG_IMPORT_TER_MAKE_UVS,1); - aiSetImportPropertyFloat(props,AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE,g_smoothAngle); - aiSetImportPropertyInteger(props,AI_CONFIG_PP_SBP_REMOVE,nopointslines ? aiPrimitiveType_LINE | aiPrimitiveType_POINT : 0 ); + aiPropertyStore* props = aiCreatePropertyStore(); + aiSetImportPropertyInteger(props,AI_CONFIG_IMPORT_TER_MAKE_UVS,1); + aiSetImportPropertyFloat(props,AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE,g_smoothAngle); + aiSetImportPropertyInteger(props,AI_CONFIG_PP_SBP_REMOVE,nopointslines ? aiPrimitiveType_LINE | aiPrimitiveType_POINT : 0 ); - aiSetImportPropertyInteger(props,AI_CONFIG_GLOB_MEASURE_TIME,1); - //aiSetImportPropertyInteger(props,AI_CONFIG_PP_PTV_KEEP_HIERARCHY,1); + aiSetImportPropertyInteger(props,AI_CONFIG_GLOB_MEASURE_TIME,1); + //aiSetImportPropertyInteger(props,AI_CONFIG_PP_PTV_KEEP_HIERARCHY,1); - // Call ASSIMPs C-API to load the file - g_pcAsset->pcScene = (aiScene*)aiImportFileExWithProperties(g_szFileName, + // Call ASSIMPs C-API to load the file + g_pcAsset->pcScene = (aiScene*)aiImportFileExWithProperties(g_szFileName, - ppsteps | /* configurable pp steps */ - aiProcess_GenSmoothNormals | // generate smooth normal vectors if not existing - aiProcess_SplitLargeMeshes | // split large, unrenderable meshes into submeshes - aiProcess_Triangulate | // triangulate polygons with more than 3 edges - aiProcess_ConvertToLeftHanded | // convert everything to D3D left handed space - aiProcess_SortByPType | // make 'clean' meshes which consist of a single typ of primitives - 0, - NULL, - props); + ppsteps | /* configurable pp steps */ + aiProcess_GenSmoothNormals | // generate smooth normal vectors if not existing + aiProcess_SplitLargeMeshes | // split large, unrenderable meshes into submeshes + aiProcess_Triangulate | // triangulate polygons with more than 3 edges + aiProcess_ConvertToLeftHanded | // convert everything to D3D left handed space + aiProcess_SortByPType | // make 'clean' meshes which consist of a single typ of primitives + 0, + NULL, + props); - aiReleasePropertyStore(props); + aiReleasePropertyStore(props); - // get the end time of zje operation, calculate delta t - double fEnd = (double)timeGetTime(); - g_fLoadTime = (float)((fEnd - fCur) / 1000); + // get the end time of zje operation, calculate delta t + double fEnd = (double)timeGetTime(); + g_fLoadTime = (float)((fEnd - fCur) / 1000); // char szTemp[128]; - g_bLoadingFinished = true; + g_bLoadingFinished = true; - // check whether the loading process has failed ... - if (NULL == g_pcAsset->pcScene) - { - CLogDisplay::Instance().AddEntry("[ERROR] Unable to load this asset:", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + // check whether the loading process has failed ... + if (NULL == g_pcAsset->pcScene) + { + CLogDisplay::Instance().AddEntry("[ERROR] Unable to load this asset:", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - // print ASSIMPs error string to the log display - CLogDisplay::Instance().AddEntry(aiGetErrorString(), - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - return 1; - } + // print ASSIMPs error string to the log display + CLogDisplay::Instance().AddEntry(aiGetErrorString(), + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + return 1; + } - return 0; + return 0; } //------------------------------------------------------------------------------- @@ -198,102 +199,102 @@ DWORD WINAPI LoadThreadProc(LPVOID lpParameter) //------------------------------------------------------------------------------- int LoadAsset(void) { - // set the world and world rotation matrices to the identuty - g_mWorldRotate = aiMatrix4x4(); - g_mWorld = aiMatrix4x4(); + // set the world and world rotation matrices to the identuty + g_mWorldRotate = aiMatrix4x4(); + g_mWorld = aiMatrix4x4(); // char szTemp[MAX_PATH+64]; // sprintf(szTemp,"Starting to load %s",g_szFileName); - CLogWindow::Instance().WriteLine( - "----------------------------------------------------------------------------"); + CLogWindow::Instance().WriteLine( + "----------------------------------------------------------------------------"); // CLogWindow::Instance().WriteLine(szTemp); // CLogWindow::Instance().WriteLine( // "----------------------------------------------------------------------------"); - CLogWindow::Instance().SetAutoUpdate(false); + CLogWindow::Instance().SetAutoUpdate(false); - // create a helper thread to load the asset - DWORD dwID; - g_bLoadingCanceled = false; - g_pcAsset = new AssetHelper(); - g_hThreadHandle = CreateThread(NULL,0,&LoadThreadProc,NULL,0,&dwID); + // create a helper thread to load the asset + DWORD dwID; + g_bLoadingCanceled = false; + g_pcAsset = new AssetHelper(); + g_hThreadHandle = CreateThread(NULL,0,&LoadThreadProc,NULL,0,&dwID); - if (!g_hThreadHandle) - { - CLogDisplay::Instance().AddEntry( - "[ERROR] Unable to create helper thread for loading", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - return 0; - } + if (!g_hThreadHandle) + { + CLogDisplay::Instance().AddEntry( + "[ERROR] Unable to create helper thread for loading", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + return 0; + } - // show the progress bar dialog - DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_LOADDIALOG), - g_hDlg,&ProgressMessageProc); + // show the progress bar dialog + DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_LOADDIALOG), + g_hDlg,&ProgressMessageProc); - // update the log window - CLogWindow::Instance().SetAutoUpdate(true); - CLogWindow::Instance().Update(); + // update the log window + CLogWindow::Instance().SetAutoUpdate(true); + CLogWindow::Instance().Update(); - // now we should have loaded the asset. Check this ... - g_bLoadingFinished = false; - if (!g_pcAsset || !g_pcAsset->pcScene) - { - if (g_pcAsset) - { - delete g_pcAsset; - g_pcAsset = NULL; - } - return 0; - } + // now we should have loaded the asset. Check this ... + g_bLoadingFinished = false; + if (!g_pcAsset || !g_pcAsset->pcScene) + { + if (g_pcAsset) + { + delete g_pcAsset; + g_pcAsset = NULL; + } + return 0; + } - // allocate a new MeshHelper array and build a new instance - // for each mesh in the original asset - g_pcAsset->apcMeshes = new AssetHelper::MeshHelper*[g_pcAsset->pcScene->mNumMeshes](); - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - g_pcAsset->apcMeshes[i] = new AssetHelper::MeshHelper(); + // allocate a new MeshHelper array and build a new instance + // for each mesh in the original asset + g_pcAsset->apcMeshes = new AssetHelper::MeshHelper*[g_pcAsset->pcScene->mNumMeshes](); + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + g_pcAsset->apcMeshes[i] = new AssetHelper::MeshHelper(); - // create animator - g_pcAsset->mAnimator = new SceneAnimator( g_pcAsset->pcScene); + // create animator + g_pcAsset->mAnimator = new SceneAnimator( g_pcAsset->pcScene); - // build a new caption string for the viewer - char szOut[MAX_PATH + 10]; - sprintf(szOut,AI_VIEW_CAPTION_BASE " [%s]",g_szFileName); - SetWindowText(g_hDlg,szOut); + // build a new caption string for the viewer + char szOut[MAX_PATH + 10]; + sprintf(szOut,AI_VIEW_CAPTION_BASE " [%s]",g_szFileName); + SetWindowText(g_hDlg,szOut); - // scale the asset vertices to fit into the viewer window - ScaleAsset(); + // scale the asset vertices to fit into the viewer window + ScaleAsset(); - // reset the camera view to the default position - g_sCamera.vPos = aiVector3D(0.0f,0.0f,-10.0f); - g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); - g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); - g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); + // reset the camera view to the default position + g_sCamera.vPos = aiVector3D(0.0f,0.0f,-10.0f); + g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); + g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); + g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); - // build native D3D vertex/index buffers, textures, materials - if( 1 != CreateAssetData()) - return 0; + // build native D3D vertex/index buffers, textures, materials + if( 1 != CreateAssetData()) + return 0; - if (!g_pcAsset->pcScene->HasAnimations()) { - EnableWindow(GetDlgItem(g_hDlg,IDC_PLAY),FALSE); - EnableWindow(GetDlgItem(g_hDlg,IDC_SLIDERANIM),FALSE); - } - else { - EnableWindow(GetDlgItem(g_hDlg,IDC_PLAY),TRUE); - EnableWindow(GetDlgItem(g_hDlg,IDC_SLIDERANIM),TRUE); - } + if (!g_pcAsset->pcScene->HasAnimations()) { + EnableWindow(GetDlgItem(g_hDlg,IDC_PLAY),FALSE); + EnableWindow(GetDlgItem(g_hDlg,IDC_SLIDERANIM),FALSE); + } + else { + EnableWindow(GetDlgItem(g_hDlg,IDC_PLAY),TRUE); + EnableWindow(GetDlgItem(g_hDlg,IDC_SLIDERANIM),TRUE); + } - CLogDisplay::Instance().AddEntry("[OK] The asset has been loaded successfully"); - CDisplay::Instance().FillDisplayList(); - CDisplay::Instance().FillAnimList(); + CLogDisplay::Instance().AddEntry("[OK] The asset has been loaded successfully"); + CDisplay::Instance().FillDisplayList(); + CDisplay::Instance().FillAnimList(); - CDisplay::Instance().FillDefaultStatistics(); - - // render the scene once - CDisplay::Instance().OnRender(); + CDisplay::Instance().FillDefaultStatistics(); + + // render the scene once + CDisplay::Instance().OnRender(); - g_pcAsset->iNormalSet = AssetHelper::ORIGINAL; - g_bWasFlipped = false; - return 1; + g_pcAsset->iNormalSet = AssetHelper::ORIGINAL; + g_bWasFlipped = false; + return 1; } @@ -303,33 +304,33 @@ int LoadAsset(void) //------------------------------------------------------------------------------- int DeleteAsset(void) { - if (!g_pcAsset)return 0; + if (!g_pcAsset)return 0; - // don't anymore know why this was necessary ... - CDisplay::Instance().OnRender(); + // don't anymore know why this was necessary ... + CDisplay::Instance().OnRender(); - // delete everything - DeleteAssetData(); - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - { - delete g_pcAsset->apcMeshes[i]; - } - aiReleaseImport(g_pcAsset->pcScene); - delete[] g_pcAsset->apcMeshes; - delete g_pcAsset->mAnimator; - delete g_pcAsset; - g_pcAsset = NULL; + // delete everything + DeleteAssetData(); + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + { + delete g_pcAsset->apcMeshes[i]; + } + aiReleaseImport(g_pcAsset->pcScene); + delete[] g_pcAsset->apcMeshes; + delete g_pcAsset->mAnimator; + delete g_pcAsset; + g_pcAsset = NULL; - // reset the caption of the viewer window - SetWindowText(g_hDlg,AI_VIEW_CAPTION_BASE); + // reset the caption of the viewer window + SetWindowText(g_hDlg,AI_VIEW_CAPTION_BASE); - // clear UI - CDisplay::Instance().ClearAnimList(); - CDisplay::Instance().ClearDisplayList(); + // clear UI + CDisplay::Instance().ClearAnimList(); + CDisplay::Instance().ClearDisplayList(); - CMaterialManager::Instance().Reset(); - UpdateWindow(g_hDlg); - return 1; + CMaterialManager::Instance().Reset(); + UpdateWindow(g_hDlg); + return 1; } @@ -341,39 +342,39 @@ int DeleteAsset(void) // piMatrix Transformation matrix of the graph at this position //------------------------------------------------------------------------------- int CalculateBounds(aiNode* piNode, aiVector3D* p_avOut, - const aiMatrix4x4& piMatrix) + const aiMatrix4x4& piMatrix) { - ai_assert(NULL != piNode); - ai_assert(NULL != p_avOut); + ai_assert(NULL != piNode); + ai_assert(NULL != p_avOut); - aiMatrix4x4 mTemp = piNode->mTransformation; - mTemp.Transpose(); - aiMatrix4x4 aiMe = mTemp * piMatrix; + aiMatrix4x4 mTemp = piNode->mTransformation; + mTemp.Transpose(); + aiMatrix4x4 aiMe = mTemp * piMatrix; - for (unsigned int i = 0; i < piNode->mNumMeshes;++i) - { - for( unsigned int a = 0; a < g_pcAsset->pcScene->mMeshes[ - piNode->mMeshes[i]]->mNumVertices;++a) - { - aiVector3D pc =g_pcAsset->pcScene->mMeshes[piNode->mMeshes[i]]->mVertices[a]; + for (unsigned int i = 0; i < piNode->mNumMeshes;++i) + { + for( unsigned int a = 0; a < g_pcAsset->pcScene->mMeshes[ + piNode->mMeshes[i]]->mNumVertices;++a) + { + aiVector3D pc =g_pcAsset->pcScene->mMeshes[piNode->mMeshes[i]]->mVertices[a]; - aiVector3D pc1; - D3DXVec3TransformCoord((D3DXVECTOR3*)&pc1,(D3DXVECTOR3*)&pc, - (D3DXMATRIX*)&aiMe); + aiVector3D pc1; + D3DXVec3TransformCoord((D3DXVECTOR3*)&pc1,(D3DXVECTOR3*)&pc, + (D3DXMATRIX*)&aiMe); - p_avOut[0].x = std::min( p_avOut[0].x, pc1.x); - p_avOut[0].y = std::min( p_avOut[0].y, pc1.y); - p_avOut[0].z = std::min( p_avOut[0].z, pc1.z); - p_avOut[1].x = std::max( p_avOut[1].x, pc1.x); - p_avOut[1].y = std::max( p_avOut[1].y, pc1.y); - p_avOut[1].z = std::max( p_avOut[1].z, pc1.z); - } - } - for (unsigned int i = 0; i < piNode->mNumChildren;++i) - { - CalculateBounds( piNode->mChildren[i], p_avOut, aiMe ); - } - return 1; + p_avOut[0].x = min( p_avOut[0].x, pc1.x); + p_avOut[0].y = min( p_avOut[0].y, pc1.y); + p_avOut[0].z = min( p_avOut[0].z, pc1.z); + p_avOut[1].x = max( p_avOut[1].x, pc1.x); + p_avOut[1].y = max( p_avOut[1].y, pc1.y); + p_avOut[1].z = max( p_avOut[1].z, pc1.z); + } + } + for (unsigned int i = 0; i < piNode->mNumChildren;++i) + { + CalculateBounds( piNode->mChildren[i], p_avOut, aiMe ); + } + return 1; } //------------------------------------------------------------------------------- // Scale the asset that it fits perfectly into the viewer window @@ -382,30 +383,30 @@ int CalculateBounds(aiNode* piNode, aiVector3D* p_avOut, //------------------------------------------------------------------------------- int ScaleAsset(void) { - aiVector3D aiVecs[2] = {aiVector3D( 1e10f, 1e10f, 1e10f), - aiVector3D( -1e10f, -1e10f, -1e10f) }; + aiVector3D aiVecs[2] = {aiVector3D( 1e10f, 1e10f, 1e10f), + aiVector3D( -1e10f, -1e10f, -1e10f) }; - if (g_pcAsset->pcScene->mRootNode) - { - aiMatrix4x4 m; - CalculateBounds(g_pcAsset->pcScene->mRootNode,aiVecs,m); - } + if (g_pcAsset->pcScene->mRootNode) + { + aiMatrix4x4 m; + CalculateBounds(g_pcAsset->pcScene->mRootNode,aiVecs,m); + } - aiVector3D vDelta = aiVecs[1]-aiVecs[0]; - aiVector3D vHalf = aiVecs[0] + (vDelta / 2.0f); - float fScale = 10.0f / vDelta.Length(); + aiVector3D vDelta = aiVecs[1]-aiVecs[0]; + aiVector3D vHalf = aiVecs[0] + (vDelta / 2.0f); + float fScale = 10.0f / vDelta.Length(); - g_mWorld = aiMatrix4x4( - 1.0f,0.0f,0.0f,0.0f, - 0.0f,1.0f,0.0f,0.0f, - 0.0f,0.0f,1.0f,0.0f, - -vHalf.x,-vHalf.y,-vHalf.z,1.0f) * - aiMatrix4x4( - fScale,0.0f,0.0f,0.0f, - 0.0f,fScale,0.0f,0.0f, - 0.0f,0.0f,fScale,0.0f, - 0.0f,0.0f,0.0f,1.0f); - return 1; + g_mWorld = aiMatrix4x4( + 1.0f,0.0f,0.0f,0.0f, + 0.0f,1.0f,0.0f,0.0f, + 0.0f,0.0f,1.0f,0.0f, + -vHalf.x,-vHalf.y,-vHalf.z,1.0f) * + aiMatrix4x4( + fScale,0.0f,0.0f,0.0f, + 0.0f,fScale,0.0f,0.0f, + 0.0f,0.0f,fScale,0.0f, + 0.0f,0.0f,0.0f,1.0f); + return 1; } //------------------------------------------------------------------------------- @@ -416,48 +417,48 @@ int ScaleAsset(void) //------------------------------------------------------------------------------- int GenerateNormalsAsLineList(AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSource) { - ai_assert(NULL != pcMesh); - ai_assert(NULL != pcSource); + ai_assert(NULL != pcMesh); + ai_assert(NULL != pcSource); - if (!pcSource->mNormals)return 0; + if (!pcSource->mNormals)return 0; - // create vertex buffer - if(FAILED( g_piDevice->CreateVertexBuffer(sizeof(AssetHelper::LineVertex) * - pcSource->mNumVertices * 2, - D3DUSAGE_WRITEONLY, - AssetHelper::LineVertex::GetFVF(), - D3DPOOL_DEFAULT, &pcMesh->piVBNormals,NULL))) - { - CLogDisplay::Instance().AddEntry("Failed to create vertex buffer for the normal list", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - return 2; - } + // create vertex buffer + if(FAILED( g_piDevice->CreateVertexBuffer(sizeof(AssetHelper::LineVertex) * + pcSource->mNumVertices * 2, + D3DUSAGE_WRITEONLY, + AssetHelper::LineVertex::GetFVF(), + D3DPOOL_DEFAULT, &pcMesh->piVBNormals,NULL))) + { + CLogDisplay::Instance().AddEntry("Failed to create vertex buffer for the normal list", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + return 2; + } - // now fill the vertex buffer with data - AssetHelper::LineVertex* pbData2; - pcMesh->piVBNormals->Lock(0,0,(void**)&pbData2,0); - for (unsigned int x = 0; x < pcSource->mNumVertices;++x) - { - pbData2->vPosition = pcSource->mVertices[x]; + // now fill the vertex buffer with data + AssetHelper::LineVertex* pbData2; + pcMesh->piVBNormals->Lock(0,0,(void**)&pbData2,0); + for (unsigned int x = 0; x < pcSource->mNumVertices;++x) + { + pbData2->vPosition = pcSource->mVertices[x]; - ++pbData2; + ++pbData2; - aiVector3D vNormal = pcSource->mNormals[x]; - vNormal.Normalize(); + aiVector3D vNormal = pcSource->mNormals[x]; + vNormal.Normalize(); - // scalo with the inverse of the world scaling to make sure - // the normals have equal length in each case - // TODO: Check whether this works in every case, I don't think so - vNormal.x /= g_mWorld.a1*4; - vNormal.y /= g_mWorld.b2*4; - vNormal.z /= g_mWorld.c3*4; + // scalo with the inverse of the world scaling to make sure + // the normals have equal length in each case + // TODO: Check whether this works in every case, I don't think so + vNormal.x /= g_mWorld.a1*4; + vNormal.y /= g_mWorld.b2*4; + vNormal.z /= g_mWorld.c3*4; - pbData2->vPosition = pcSource->mVertices[x] + vNormal; + pbData2->vPosition = pcSource->mVertices[x] + vNormal; - ++pbData2; - } - pcMesh->piVBNormals->Unlock(); - return 1; + ++pbData2; + } + pcMesh->piVBNormals->Unlock(); + return 1; } //------------------------------------------------------------------------------- @@ -466,184 +467,184 @@ int GenerateNormalsAsLineList(AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSo //------------------------------------------------------------------------------- int CreateAssetData() { - if (!g_pcAsset)return 0; + if (!g_pcAsset)return 0; - // reset all subsystems - CMaterialManager::Instance().Reset(); - CDisplay::Instance().Reset(); + // reset all subsystems + CMaterialManager::Instance().Reset(); + CDisplay::Instance().Reset(); - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - { - const aiMesh* mesh = g_pcAsset->pcScene->mMeshes[i]; + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + { + const aiMesh* mesh = g_pcAsset->pcScene->mMeshes[i]; - // create the material for the mesh - if (!g_pcAsset->apcMeshes[i]->piEffect) { - CMaterialManager::Instance().CreateMaterial( - g_pcAsset->apcMeshes[i],mesh); - } + // create the material for the mesh + if (!g_pcAsset->apcMeshes[i]->piEffect) { + CMaterialManager::Instance().CreateMaterial( + g_pcAsset->apcMeshes[i],mesh); + } - // create vertex buffer - if(FAILED( g_piDevice->CreateVertexBuffer(sizeof(AssetHelper::Vertex) * - mesh->mNumVertices, - D3DUSAGE_WRITEONLY, - 0, - D3DPOOL_DEFAULT, &g_pcAsset->apcMeshes[i]->piVB,NULL))) { - MessageBox(g_hDlg,"Failed to create vertex buffer", - "ASSIMP Viewer Utility",MB_OK); - return 2; - } + // create vertex buffer + if(FAILED( g_piDevice->CreateVertexBuffer(sizeof(AssetHelper::Vertex) * + mesh->mNumVertices, + D3DUSAGE_WRITEONLY, + 0, + D3DPOOL_DEFAULT, &g_pcAsset->apcMeshes[i]->piVB,NULL))) { + MessageBox(g_hDlg,"Failed to create vertex buffer", + "ASSIMP Viewer Utility",MB_OK); + return 2; + } - DWORD dwUsage = 0; - if (g_pcAsset->apcMeshes[i]->piOpacityTexture || 1.0f != g_pcAsset->apcMeshes[i]->fOpacity) - dwUsage |= D3DUSAGE_DYNAMIC; + DWORD dwUsage = 0; + if (g_pcAsset->apcMeshes[i]->piOpacityTexture || 1.0f != g_pcAsset->apcMeshes[i]->fOpacity) + dwUsage |= D3DUSAGE_DYNAMIC; - unsigned int nidx; - switch (mesh->mPrimitiveTypes) { - case aiPrimitiveType_POINT: - nidx = 1;break; - case aiPrimitiveType_LINE: - nidx = 2;break; - case aiPrimitiveType_TRIANGLE: - nidx = 3;break; - default: ai_assert(false); - }; + unsigned int nidx; + switch (mesh->mPrimitiveTypes) { + case aiPrimitiveType_POINT: + nidx = 1;break; + case aiPrimitiveType_LINE: + nidx = 2;break; + case aiPrimitiveType_TRIANGLE: + nidx = 3;break; + default: ai_assert(false); + }; - // check whether we can use 16 bit indices - if (mesh->mNumFaces * 3 >= 65536) { - // create 32 bit index buffer - if(FAILED( g_piDevice->CreateIndexBuffer( 4 * - mesh->mNumFaces * nidx, - D3DUSAGE_WRITEONLY | dwUsage, - D3DFMT_INDEX32, - D3DPOOL_DEFAULT, - &g_pcAsset->apcMeshes[i]->piIB, - NULL))) - { - MessageBox(g_hDlg,"Failed to create 32 Bit index buffer", - "ASSIMP Viewer Utility",MB_OK); - return 2; - } + // check whether we can use 16 bit indices + if (mesh->mNumFaces * 3 >= 65536) { + // create 32 bit index buffer + if(FAILED( g_piDevice->CreateIndexBuffer( 4 * + mesh->mNumFaces * nidx, + D3DUSAGE_WRITEONLY | dwUsage, + D3DFMT_INDEX32, + D3DPOOL_DEFAULT, + &g_pcAsset->apcMeshes[i]->piIB, + NULL))) + { + MessageBox(g_hDlg,"Failed to create 32 Bit index buffer", + "ASSIMP Viewer Utility",MB_OK); + return 2; + } - // now fill the index buffer - unsigned int* pbData; - g_pcAsset->apcMeshes[i]->piIB->Lock(0,0,(void**)&pbData,0); - for (unsigned int x = 0; x < mesh->mNumFaces;++x) - { - for (unsigned int a = 0; a < nidx;++a) - { - *pbData++ = mesh->mFaces[x].mIndices[a]; - } - } - } - else { - // create 16 bit index buffer - if(FAILED( g_piDevice->CreateIndexBuffer( 2 * - mesh->mNumFaces * nidx, - D3DUSAGE_WRITEONLY | dwUsage, - D3DFMT_INDEX16, - D3DPOOL_DEFAULT, - &g_pcAsset->apcMeshes[i]->piIB, - NULL))) - { - MessageBox(g_hDlg,"Failed to create 16 Bit index buffer", - "ASSIMP Viewer Utility",MB_OK); - return 2; - } + // now fill the index buffer + unsigned int* pbData; + g_pcAsset->apcMeshes[i]->piIB->Lock(0,0,(void**)&pbData,0); + for (unsigned int x = 0; x < mesh->mNumFaces;++x) + { + for (unsigned int a = 0; a < nidx;++a) + { + *pbData++ = mesh->mFaces[x].mIndices[a]; + } + } + } + else { + // create 16 bit index buffer + if(FAILED( g_piDevice->CreateIndexBuffer( 2 * + mesh->mNumFaces * nidx, + D3DUSAGE_WRITEONLY | dwUsage, + D3DFMT_INDEX16, + D3DPOOL_DEFAULT, + &g_pcAsset->apcMeshes[i]->piIB, + NULL))) + { + MessageBox(g_hDlg,"Failed to create 16 Bit index buffer", + "ASSIMP Viewer Utility",MB_OK); + return 2; + } - // now fill the index buffer - uint16_t* pbData; - g_pcAsset->apcMeshes[i]->piIB->Lock(0,0,(void**)&pbData,0); - for (unsigned int x = 0; x < mesh->mNumFaces;++x) - { - for (unsigned int a = 0; a < nidx;++a) - { - *pbData++ = (uint16_t)mesh->mFaces[x].mIndices[a]; - } - } - } - g_pcAsset->apcMeshes[i]->piIB->Unlock(); + // now fill the index buffer + uint16_t* pbData; + g_pcAsset->apcMeshes[i]->piIB->Lock(0,0,(void**)&pbData,0); + for (unsigned int x = 0; x < mesh->mNumFaces;++x) + { + for (unsigned int a = 0; a < nidx;++a) + { + *pbData++ = (uint16_t)mesh->mFaces[x].mIndices[a]; + } + } + } + g_pcAsset->apcMeshes[i]->piIB->Unlock(); - // collect weights on all vertices. Quick and careless - std::vector > weightsPerVertex( mesh->mNumVertices); - for( unsigned int a = 0; a < mesh->mNumBones; a++) { - const aiBone* bone = mesh->mBones[a]; - for( unsigned int b = 0; b < bone->mNumWeights; b++) - weightsPerVertex[bone->mWeights[b].mVertexId].push_back( aiVertexWeight( a, bone->mWeights[b].mWeight)); - } + // collect weights on all vertices. Quick and careless + std::vector > weightsPerVertex( mesh->mNumVertices); + for( unsigned int a = 0; a < mesh->mNumBones; a++) { + const aiBone* bone = mesh->mBones[a]; + for( unsigned int b = 0; b < bone->mNumWeights; b++) + weightsPerVertex[bone->mWeights[b].mVertexId].push_back( aiVertexWeight( a, bone->mWeights[b].mWeight)); + } - // now fill the vertex buffer - AssetHelper::Vertex* pbData2; - g_pcAsset->apcMeshes[i]->piVB->Lock(0,0,(void**)&pbData2,0); - for (unsigned int x = 0; x < mesh->mNumVertices;++x) - { - pbData2->vPosition = mesh->mVertices[x]; + // now fill the vertex buffer + AssetHelper::Vertex* pbData2; + g_pcAsset->apcMeshes[i]->piVB->Lock(0,0,(void**)&pbData2,0); + for (unsigned int x = 0; x < mesh->mNumVertices;++x) + { + pbData2->vPosition = mesh->mVertices[x]; - if (NULL == mesh->mNormals) - pbData2->vNormal = aiVector3D(0.0f,0.0f,0.0f); - else pbData2->vNormal = mesh->mNormals[x]; + if (NULL == mesh->mNormals) + pbData2->vNormal = aiVector3D(0.0f,0.0f,0.0f); + else pbData2->vNormal = mesh->mNormals[x]; - if (NULL == mesh->mTangents) { - pbData2->vTangent = aiVector3D(0.0f,0.0f,0.0f); - pbData2->vBitangent = aiVector3D(0.0f,0.0f,0.0f); - } - else { - pbData2->vTangent = mesh->mTangents[x]; - pbData2->vBitangent = mesh->mBitangents[x]; - } + if (NULL == mesh->mTangents) { + pbData2->vTangent = aiVector3D(0.0f,0.0f,0.0f); + pbData2->vBitangent = aiVector3D(0.0f,0.0f,0.0f); + } + else { + pbData2->vTangent = mesh->mTangents[x]; + pbData2->vBitangent = mesh->mBitangents[x]; + } - if (mesh->HasVertexColors( 0)) { - pbData2->dColorDiffuse = D3DCOLOR_ARGB( - ((unsigned char)std::max( std::min( mesh->mColors[0][x].a * 255.0f, 255.0f),0.0f)), - ((unsigned char)std::max( std::min( mesh->mColors[0][x].r * 255.0f, 255.0f),0.0f)), - ((unsigned char)std::max( std::min( mesh->mColors[0][x].g * 255.0f, 255.0f),0.0f)), - ((unsigned char)std::max( std::min( mesh->mColors[0][x].b * 255.0f, 255.0f),0.0f))); - } - else pbData2->dColorDiffuse = D3DCOLOR_ARGB(0xFF,0xff,0xff,0xff); + if (mesh->HasVertexColors( 0)) { + pbData2->dColorDiffuse = D3DCOLOR_ARGB( + ((unsigned char)max( min( mesh->mColors[0][x].a * 255.0f, 255.0f),0.0f)), + ((unsigned char)max( min( mesh->mColors[0][x].r * 255.0f, 255.0f),0.0f)), + ((unsigned char)max( min( mesh->mColors[0][x].g * 255.0f, 255.0f),0.0f)), + ((unsigned char)max( min( mesh->mColors[0][x].b * 255.0f, 255.0f),0.0f))); + } + else pbData2->dColorDiffuse = D3DCOLOR_ARGB(0xFF,0xff,0xff,0xff); - // ignore a third texture coordinate component - if (mesh->HasTextureCoords( 0)) { - pbData2->vTextureUV = aiVector2D( - mesh->mTextureCoords[0][x].x, - mesh->mTextureCoords[0][x].y); - } - else pbData2->vTextureUV = aiVector2D(0.5f,0.5f); + // ignore a third texture coordinate component + if (mesh->HasTextureCoords( 0)) { + pbData2->vTextureUV = aiVector2D( + mesh->mTextureCoords[0][x].x, + mesh->mTextureCoords[0][x].y); + } + else pbData2->vTextureUV = aiVector2D(0.5f,0.5f); - if (mesh->HasTextureCoords( 1)) { - pbData2->vTextureUV2 = aiVector2D( - mesh->mTextureCoords[1][x].x, - mesh->mTextureCoords[1][x].y); - } - else pbData2->vTextureUV2 = aiVector2D(0.5f,0.5f); + if (mesh->HasTextureCoords( 1)) { + pbData2->vTextureUV2 = aiVector2D( + mesh->mTextureCoords[1][x].x, + mesh->mTextureCoords[1][x].y); + } + else pbData2->vTextureUV2 = aiVector2D(0.5f,0.5f); - // Bone indices and weights - if( mesh->HasBones()) { - unsigned char boneIndices[4] = { 0, 0, 0, 0 }; - unsigned char boneWeights[4] = { 0, 0, 0, 0 }; - ai_assert( weightsPerVertex[x].size() <= 4); - for( unsigned int a = 0; a < weightsPerVertex[x].size(); a++) - { - boneIndices[a] = weightsPerVertex[x][a].mVertexId; - boneWeights[a] = (unsigned char) (weightsPerVertex[x][a].mWeight * 255.0f); - } + // Bone indices and weights + if( mesh->HasBones()) { + unsigned char boneIndices[4] = { 0, 0, 0, 0 }; + unsigned char boneWeights[4] = { 0, 0, 0, 0 }; + ai_assert( weightsPerVertex[x].size() <= 4); + for( unsigned int a = 0; a < weightsPerVertex[x].size(); a++) + { + boneIndices[a] = weightsPerVertex[x][a].mVertexId; + boneWeights[a] = (unsigned char) (weightsPerVertex[x][a].mWeight * 255.0f); + } - memcpy( pbData2->mBoneIndices, boneIndices, sizeof( boneIndices)); - memcpy( pbData2->mBoneWeights, boneWeights, sizeof( boneWeights)); - } else - { - memset( pbData2->mBoneIndices, 0, sizeof( pbData2->mBoneIndices)); - memset( pbData2->mBoneWeights, 0, sizeof( pbData2->mBoneWeights)); - } + memcpy( pbData2->mBoneIndices, boneIndices, sizeof( boneIndices)); + memcpy( pbData2->mBoneWeights, boneWeights, sizeof( boneWeights)); + } else + { + memset( pbData2->mBoneIndices, 0, sizeof( pbData2->mBoneIndices)); + memset( pbData2->mBoneWeights, 0, sizeof( pbData2->mBoneWeights)); + } - ++pbData2; - } - g_pcAsset->apcMeshes[i]->piVB->Unlock(); + ++pbData2; + } + g_pcAsset->apcMeshes[i]->piVB->Unlock(); - // now generate the second vertex buffer, holding all normals - if (!g_pcAsset->apcMeshes[i]->piVBNormals) { - GenerateNormalsAsLineList(g_pcAsset->apcMeshes[i],mesh); - } - } - return 1; + // now generate the second vertex buffer, holding all normals + if (!g_pcAsset->apcMeshes[i]->piVBNormals) { + GenerateNormalsAsLineList(g_pcAsset->apcMeshes[i],mesh); + } + } + return 1; } //------------------------------------------------------------------------------- @@ -652,80 +653,80 @@ int CreateAssetData() //------------------------------------------------------------------------------- int DeleteAssetData(bool bNoMaterials) { - if (!g_pcAsset)return 0; + if (!g_pcAsset)return 0; - // TODO: Move this to a proper destructor - for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) - { - if(g_pcAsset->apcMeshes[i]->piVB) - { - g_pcAsset->apcMeshes[i]->piVB->Release(); - g_pcAsset->apcMeshes[i]->piVB = NULL; - } - if(g_pcAsset->apcMeshes[i]->piVBNormals) - { - g_pcAsset->apcMeshes[i]->piVBNormals->Release(); - g_pcAsset->apcMeshes[i]->piVBNormals = NULL; - } - if(g_pcAsset->apcMeshes[i]->piIB) - { - g_pcAsset->apcMeshes[i]->piIB->Release(); - g_pcAsset->apcMeshes[i]->piIB = NULL; - } + // TODO: Move this to a proper destructor + for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i) + { + if(g_pcAsset->apcMeshes[i]->piVB) + { + g_pcAsset->apcMeshes[i]->piVB->Release(); + g_pcAsset->apcMeshes[i]->piVB = NULL; + } + if(g_pcAsset->apcMeshes[i]->piVBNormals) + { + g_pcAsset->apcMeshes[i]->piVBNormals->Release(); + g_pcAsset->apcMeshes[i]->piVBNormals = NULL; + } + if(g_pcAsset->apcMeshes[i]->piIB) + { + g_pcAsset->apcMeshes[i]->piIB->Release(); + g_pcAsset->apcMeshes[i]->piIB = NULL; + } - // TODO ... unfixed memory leak - // delete storage eventually allocated to hold a copy - // of the original vertex normals - //if (g_pcAsset->apcMeshes[i]->pvOriginalNormals) - //{ - // delete[] g_pcAsset->apcMeshes[i]->pvOriginalNormals; - //} + // TODO ... unfixed memory leak + // delete storage eventually allocated to hold a copy + // of the original vertex normals + //if (g_pcAsset->apcMeshes[i]->pvOriginalNormals) + //{ + // delete[] g_pcAsset->apcMeshes[i]->pvOriginalNormals; + //} - if (!bNoMaterials) - { - if(g_pcAsset->apcMeshes[i]->piEffect) - { - g_pcAsset->apcMeshes[i]->piEffect->Release(); - g_pcAsset->apcMeshes[i]->piEffect = NULL; - } - if(g_pcAsset->apcMeshes[i]->piDiffuseTexture) - { - g_pcAsset->apcMeshes[i]->piDiffuseTexture->Release(); - g_pcAsset->apcMeshes[i]->piDiffuseTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piNormalTexture) - { - g_pcAsset->apcMeshes[i]->piNormalTexture->Release(); - g_pcAsset->apcMeshes[i]->piNormalTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piSpecularTexture) - { - g_pcAsset->apcMeshes[i]->piSpecularTexture->Release(); - g_pcAsset->apcMeshes[i]->piSpecularTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piAmbientTexture) - { - g_pcAsset->apcMeshes[i]->piAmbientTexture->Release(); - g_pcAsset->apcMeshes[i]->piAmbientTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piEmissiveTexture) - { - g_pcAsset->apcMeshes[i]->piEmissiveTexture->Release(); - g_pcAsset->apcMeshes[i]->piEmissiveTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piOpacityTexture) - { - g_pcAsset->apcMeshes[i]->piOpacityTexture->Release(); - g_pcAsset->apcMeshes[i]->piOpacityTexture = NULL; - } - if(g_pcAsset->apcMeshes[i]->piShininessTexture) - { - g_pcAsset->apcMeshes[i]->piShininessTexture->Release(); - g_pcAsset->apcMeshes[i]->piShininessTexture = NULL; - } - } - } - return 1; + if (!bNoMaterials) + { + if(g_pcAsset->apcMeshes[i]->piEffect) + { + g_pcAsset->apcMeshes[i]->piEffect->Release(); + g_pcAsset->apcMeshes[i]->piEffect = NULL; + } + if(g_pcAsset->apcMeshes[i]->piDiffuseTexture) + { + g_pcAsset->apcMeshes[i]->piDiffuseTexture->Release(); + g_pcAsset->apcMeshes[i]->piDiffuseTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piNormalTexture) + { + g_pcAsset->apcMeshes[i]->piNormalTexture->Release(); + g_pcAsset->apcMeshes[i]->piNormalTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piSpecularTexture) + { + g_pcAsset->apcMeshes[i]->piSpecularTexture->Release(); + g_pcAsset->apcMeshes[i]->piSpecularTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piAmbientTexture) + { + g_pcAsset->apcMeshes[i]->piAmbientTexture->Release(); + g_pcAsset->apcMeshes[i]->piAmbientTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piEmissiveTexture) + { + g_pcAsset->apcMeshes[i]->piEmissiveTexture->Release(); + g_pcAsset->apcMeshes[i]->piEmissiveTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piOpacityTexture) + { + g_pcAsset->apcMeshes[i]->piOpacityTexture->Release(); + g_pcAsset->apcMeshes[i]->piOpacityTexture = NULL; + } + if(g_pcAsset->apcMeshes[i]->piShininessTexture) + { + g_pcAsset->apcMeshes[i]->piShininessTexture->Release(); + g_pcAsset->apcMeshes[i]->piShininessTexture = NULL; + } + } + } + return 1; } @@ -735,22 +736,22 @@ int DeleteAssetData(bool bNoMaterials) //------------------------------------------------------------------------------- int SetupFPSView() { - if (!g_bFPSView) - { - g_sCamera.vPos = aiVector3D(0.0f,0.0f,g_fWheelPos); - g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); - g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); - g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); - } - else - { - g_fWheelPos = g_sCamera.vPos.z; - g_sCamera.vPos = aiVector3D(0.0f,0.0f,-10.0f); - g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); - g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); - g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); - } - return 1; + if (!g_bFPSView) + { + g_sCamera.vPos = aiVector3D(0.0f,0.0f,g_fWheelPos); + g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); + g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); + g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); + } + else + { + g_fWheelPos = g_sCamera.vPos.z; + g_sCamera.vPos = aiVector3D(0.0f,0.0f,-10.0f); + g_sCamera.vLookAt = aiVector3D(0.0f,0.0f,1.0f); + g_sCamera.vUp = aiVector3D(0.0f,1.0f,0.0f); + g_sCamera.vRight = aiVector3D(0.0f,1.0f,0.0f); + } + return 1; } //------------------------------------------------------------------------------- @@ -759,12 +760,12 @@ int SetupFPSView() //------------------------------------------------------------------------------- int InitD3D(void) { - if (NULL == g_piD3D) - { - g_piD3D = Direct3DCreate9(D3D_SDK_VERSION); - if (NULL == g_piD3D)return 0; - } - return 1; + if (NULL == g_piD3D) + { + g_piD3D = Direct3DCreate9(D3D_SDK_VERSION); + if (NULL == g_piD3D)return 0; + } + return 1; } @@ -774,13 +775,13 @@ int InitD3D(void) //------------------------------------------------------------------------------- int ShutdownD3D(void) { - ShutdownDevice(); - if (NULL != g_piD3D) - { - g_piD3D->Release(); - g_piD3D = NULL; - } - return 1; + ShutdownDevice(); + if (NULL != g_piD3D) + { + g_piD3D->Release(); + g_piD3D = NULL; + } + return 1; } @@ -790,55 +791,55 @@ int ShutdownD3D(void) //------------------------------------------------------------------------------- int ShutdownDevice(void) { - // release other subsystems - CBackgroundPainter::Instance().ReleaseNativeResource(); - CLogDisplay::Instance().ReleaseNativeResource(); + // release other subsystems + CBackgroundPainter::Instance().ReleaseNativeResource(); + CLogDisplay::Instance().ReleaseNativeResource(); - // release global shaders that have been allocazed - if (NULL != g_piDefaultEffect) - { - g_piDefaultEffect->Release(); - g_piDefaultEffect = NULL; - } - if (NULL != g_piNormalsEffect) - { - g_piNormalsEffect->Release(); - g_piNormalsEffect = NULL; - } - if (NULL != g_piPassThroughEffect) - { - g_piPassThroughEffect->Release(); - g_piPassThroughEffect = NULL; - } - if (NULL != g_piPatternEffect) - { - g_piPatternEffect->Release(); - g_piPatternEffect = NULL; - } - if (NULL != g_pcTexture) - { - g_pcTexture->Release(); - g_pcTexture = NULL; - } + // release global shaders that have been allocazed + if (NULL != g_piDefaultEffect) + { + g_piDefaultEffect->Release(); + g_piDefaultEffect = NULL; + } + if (NULL != g_piNormalsEffect) + { + g_piNormalsEffect->Release(); + g_piNormalsEffect = NULL; + } + if (NULL != g_piPassThroughEffect) + { + g_piPassThroughEffect->Release(); + g_piPassThroughEffect = NULL; + } + if (NULL != g_piPatternEffect) + { + g_piPatternEffect->Release(); + g_piPatternEffect = NULL; + } + if (NULL != g_pcTexture) + { + g_pcTexture->Release(); + g_pcTexture = NULL; + } - if( NULL != gDefaultVertexDecl) - { - gDefaultVertexDecl->Release(); - gDefaultVertexDecl = NULL; - } + if( NULL != gDefaultVertexDecl) + { + gDefaultVertexDecl->Release(); + gDefaultVertexDecl = NULL; + } - // delete the main D3D device object - if (NULL != g_piDevice) - { - g_piDevice->Release(); - g_piDevice = NULL; - } + // delete the main D3D device object + if (NULL != g_piDevice) + { + g_piDevice->Release(); + g_piDevice = NULL; + } - // deleted the one channel image allocated to hold the HUD mask - delete[] g_szImageMask; - g_szImageMask = NULL; + // deleted the one channel image allocated to hold the HUD mask + delete[] g_szImageMask; + g_szImageMask = NULL; - return 1; + return 1; } @@ -846,269 +847,269 @@ int ShutdownDevice(void) //------------------------------------------------------------------------------- int CreateHUDTexture() { - // lock the memory resource ourselves - HRSRC res = FindResource(NULL,MAKEINTRESOURCE(IDR_HUD),RT_RCDATA); - HGLOBAL hg = LoadResource(NULL,res); - void* pData = LockResource(hg); + // lock the memory resource ourselves + HRSRC res = FindResource(NULL,MAKEINTRESOURCE(IDR_HUD),RT_RCDATA); + HGLOBAL hg = LoadResource(NULL,res); + void* pData = LockResource(hg); - if(FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, - pData,SizeofResource(NULL,res), - D3DX_DEFAULT_NONPOW2, - D3DX_DEFAULT_NONPOW2, - 1, - 0, - D3DFMT_A8R8G8B8, - D3DPOOL_MANAGED, - D3DX_DEFAULT, - D3DX_DEFAULT, - 0, - NULL, - NULL, - &g_pcTexture))) - { - CLogDisplay::Instance().AddEntry("[ERROR] Unable to load HUD texture", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + if(FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, + pData,SizeofResource(NULL,res), + D3DX_DEFAULT_NONPOW2, + D3DX_DEFAULT_NONPOW2, + 1, + 0, + D3DFMT_A8R8G8B8, + D3DPOOL_MANAGED, + D3DX_DEFAULT, + D3DX_DEFAULT, + 0, + NULL, + NULL, + &g_pcTexture))) + { + CLogDisplay::Instance().AddEntry("[ERROR] Unable to load HUD texture", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - g_pcTexture = NULL; - g_szImageMask = NULL; + g_pcTexture = NULL; + g_szImageMask = NULL; - FreeResource(hg); - return 0; - } + FreeResource(hg); + return 0; + } - FreeResource(hg); + FreeResource(hg); - D3DSURFACE_DESC sDesc; - g_pcTexture->GetLevelDesc(0,&sDesc); + D3DSURFACE_DESC sDesc; + g_pcTexture->GetLevelDesc(0,&sDesc); - // lock the memory resource ourselves - res = FindResource(NULL,MAKEINTRESOURCE(IDR_HUDMASK),RT_RCDATA); - hg = LoadResource(NULL,res); - pData = LockResource(hg); + // lock the memory resource ourselves + res = FindResource(NULL,MAKEINTRESOURCE(IDR_HUDMASK),RT_RCDATA); + hg = LoadResource(NULL,res); + pData = LockResource(hg); - IDirect3DTexture9* pcTex; - if(FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, - pData,SizeofResource(NULL,res), - sDesc.Width, - sDesc.Height, - 1, - 0, - D3DFMT_L8, - D3DPOOL_MANAGED, // unnecessary - D3DX_DEFAULT, - D3DX_DEFAULT, - 0, - NULL, - NULL, - &pcTex))) - { - CLogDisplay::Instance().AddEntry("[ERROR] Unable to load HUD mask texture", - D3DCOLOR_ARGB(0xFF,0xFF,0,0)); - g_szImageMask = NULL; + IDirect3DTexture9* pcTex; + if(FAILED(D3DXCreateTextureFromFileInMemoryEx(g_piDevice, + pData,SizeofResource(NULL,res), + sDesc.Width, + sDesc.Height, + 1, + 0, + D3DFMT_L8, + D3DPOOL_MANAGED, // unnecessary + D3DX_DEFAULT, + D3DX_DEFAULT, + 0, + NULL, + NULL, + &pcTex))) + { + CLogDisplay::Instance().AddEntry("[ERROR] Unable to load HUD mask texture", + D3DCOLOR_ARGB(0xFF,0xFF,0,0)); + g_szImageMask = NULL; - FreeResource(hg); - return 0; - } + FreeResource(hg); + return 0; + } - FreeResource(hg); + FreeResource(hg); - // lock the texture and copy it to get a pointer - D3DLOCKED_RECT sRect; - pcTex->LockRect(0,&sRect,NULL,D3DLOCK_READONLY); + // lock the texture and copy it to get a pointer + D3DLOCKED_RECT sRect; + pcTex->LockRect(0,&sRect,NULL,D3DLOCK_READONLY); - unsigned char* szOut = new unsigned char[sDesc.Width * sDesc.Height]; - unsigned char* _szOut = szOut; + unsigned char* szOut = new unsigned char[sDesc.Width * sDesc.Height]; + unsigned char* _szOut = szOut; - unsigned char* szCur = (unsigned char*) sRect.pBits; - for (unsigned int y = 0; y < sDesc.Height;++y) - { - memcpy(_szOut,szCur,sDesc.Width); + unsigned char* szCur = (unsigned char*) sRect.pBits; + for (unsigned int y = 0; y < sDesc.Height;++y) + { + memcpy(_szOut,szCur,sDesc.Width); - szCur += sRect.Pitch; - _szOut += sDesc.Width; - } - pcTex->UnlockRect(0); - pcTex->Release(); + szCur += sRect.Pitch; + _szOut += sDesc.Width; + } + pcTex->UnlockRect(0); + pcTex->Release(); - g_szImageMask = szOut; - return 1; + g_szImageMask = szOut; + return 1; } //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- int CreateDevice (bool p_bMultiSample,bool p_bSuperSample,bool bHW /*= true*/) { - D3DDEVTYPE eType = bHW ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF; + D3DDEVTYPE eType = bHW ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF; - // get the client rectangle of the window. - RECT sRect; - GetWindowRect(GetDlgItem(g_hDlg,IDC_RT),&sRect); - sRect.right -= sRect.left; - sRect.bottom -= sRect.top; + // get the client rectangle of the window. + RECT sRect; + GetWindowRect(GetDlgItem(g_hDlg,IDC_RT),&sRect); + sRect.right -= sRect.left; + sRect.bottom -= sRect.top; - D3DPRESENT_PARAMETERS sParams; - memset(&sParams,0,sizeof(D3DPRESENT_PARAMETERS)); + D3DPRESENT_PARAMETERS sParams; + memset(&sParams,0,sizeof(D3DPRESENT_PARAMETERS)); - // get the current display mode - D3DDISPLAYMODE sMode; - g_piD3D->GetAdapterDisplayMode(0,&sMode); + // get the current display mode + D3DDISPLAYMODE sMode; + g_piD3D->GetAdapterDisplayMode(0,&sMode); - // fill the presentation parameter structure - sParams.Windowed = TRUE; - sParams.hDeviceWindow = GetDlgItem( g_hDlg, IDC_RT ); - sParams.EnableAutoDepthStencil = TRUE; - sParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE; - sParams.BackBufferWidth = (UINT)sRect.right; - sParams.BackBufferHeight = (UINT)sRect.bottom; - sParams.SwapEffect = D3DSWAPEFFECT_DISCARD; - sParams.BackBufferCount = 1; + // fill the presentation parameter structure + sParams.Windowed = TRUE; + sParams.hDeviceWindow = GetDlgItem( g_hDlg, IDC_RT ); + sParams.EnableAutoDepthStencil = TRUE; + sParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE; + sParams.BackBufferWidth = (UINT)sRect.right; + sParams.BackBufferHeight = (UINT)sRect.bottom; + sParams.SwapEffect = D3DSWAPEFFECT_DISCARD; + sParams.BackBufferCount = 1; - // check whether we can use a D32 depth buffer format - if (SUCCEEDED ( g_piD3D->CheckDepthStencilMatch(0,eType, - D3DFMT_X8R8G8B8,D3DFMT_X8R8G8B8,D3DFMT_D32))) - { - sParams.AutoDepthStencilFormat = D3DFMT_D32; - } - else sParams.AutoDepthStencilFormat = D3DFMT_D24X8; + // check whether we can use a D32 depth buffer format + if (SUCCEEDED ( g_piD3D->CheckDepthStencilMatch(0,eType, + D3DFMT_X8R8G8B8,D3DFMT_X8R8G8B8,D3DFMT_D32))) + { + sParams.AutoDepthStencilFormat = D3DFMT_D32; + } + else sParams.AutoDepthStencilFormat = D3DFMT_D24X8; - // find the highest multisample type available on this device - D3DMULTISAMPLE_TYPE sMS = D3DMULTISAMPLE_2_SAMPLES; - D3DMULTISAMPLE_TYPE sMSOut = D3DMULTISAMPLE_NONE; - DWORD dwQuality = 0; - if (p_bMultiSample) - { - while ((D3DMULTISAMPLE_TYPE)(D3DMULTISAMPLE_16_SAMPLES + 1) != - (sMS = (D3DMULTISAMPLE_TYPE)(sMS + 1))) - { - if(SUCCEEDED( g_piD3D->CheckDeviceMultiSampleType(0,eType, - sMode.Format,TRUE,sMS,&dwQuality))) - { - sMSOut = sMS; - } - } - if (0 != dwQuality)dwQuality -= 1; + // find the highest multisample type available on this device + D3DMULTISAMPLE_TYPE sMS = D3DMULTISAMPLE_2_SAMPLES; + D3DMULTISAMPLE_TYPE sMSOut = D3DMULTISAMPLE_NONE; + DWORD dwQuality = 0; + if (p_bMultiSample) + { + while ((D3DMULTISAMPLE_TYPE)(D3DMULTISAMPLE_16_SAMPLES + 1) != + (sMS = (D3DMULTISAMPLE_TYPE)(sMS + 1))) + { + if(SUCCEEDED( g_piD3D->CheckDeviceMultiSampleType(0,eType, + sMode.Format,TRUE,sMS,&dwQuality))) + { + sMSOut = sMS; + } + } + if (0 != dwQuality)dwQuality -= 1; - sParams.MultiSampleQuality = dwQuality; - sParams.MultiSampleType = sMSOut; - } + sParams.MultiSampleQuality = dwQuality; + sParams.MultiSampleType = sMSOut; + } - // preget the device capabilities. If the hardware vertex shader is too old, we prefer software vertex processing - g_piD3D->GetDeviceCaps( 0, D3DDEVTYPE_HAL, &g_sCaps); - DWORD creationFlags = D3DCREATE_MULTITHREADED; - if( g_sCaps.VertexShaderVersion >= D3DVS_VERSION( 2, 0)) - creationFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING; - else - creationFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING; + // preget the device capabilities. If the hardware vertex shader is too old, we prefer software vertex processing + g_piD3D->GetDeviceCaps( 0, D3DDEVTYPE_HAL, &g_sCaps); + DWORD creationFlags = D3DCREATE_MULTITHREADED; + if( g_sCaps.VertexShaderVersion >= D3DVS_VERSION( 2, 0)) + creationFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING; + else + creationFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING; - // create the D3D9 device object. with software-vertexprocessing if VS2.0 isn`t supported in hardware - if(FAILED(g_piD3D->CreateDevice(0,eType, g_hDlg, creationFlags ,&sParams,&g_piDevice))) - { - // if hardware fails use software rendering instead - if (bHW)return CreateDevice(p_bMultiSample,p_bSuperSample,false); - return 0; - } + // create the D3D9 device object. with software-vertexprocessing if VS2.0 isn`t supported in hardware + if(FAILED(g_piD3D->CreateDevice(0,eType, g_hDlg, creationFlags ,&sParams,&g_piDevice))) + { + // if hardware fails use software rendering instead + if (bHW)return CreateDevice(p_bMultiSample,p_bSuperSample,false); + return 0; + } - // create a vertex declaration to match the vertex - D3DVERTEXELEMENT9* vdecl = AssetHelper::Vertex::GetDeclarationElements(); - if( FAILED( g_piDevice->CreateVertexDeclaration( vdecl, &gDefaultVertexDecl))) - { - MessageBox( g_hDlg, "Failed to create vertex declaration", "Init", MB_OK); - return 0; - } - g_piDevice->SetVertexDeclaration( gDefaultVertexDecl); + // create a vertex declaration to match the vertex + D3DVERTEXELEMENT9* vdecl = AssetHelper::Vertex::GetDeclarationElements(); + if( FAILED( g_piDevice->CreateVertexDeclaration( vdecl, &gDefaultVertexDecl))) + { + MessageBox( g_hDlg, "Failed to create vertex declaration", "Init", MB_OK); + return 0; + } + g_piDevice->SetVertexDeclaration( gDefaultVertexDecl); - // get the capabilities of the device object - g_piDevice->GetDeviceCaps(&g_sCaps); - if(g_sCaps.PixelShaderVersion < D3DPS_VERSION(3,0)) - { - EnableWindow(GetDlgItem(g_hDlg,IDC_LOWQUALITY),FALSE); - } + // get the capabilities of the device object + g_piDevice->GetDeviceCaps(&g_sCaps); + if(g_sCaps.PixelShaderVersion < D3DPS_VERSION(3,0)) + { + EnableWindow(GetDlgItem(g_hDlg,IDC_LOWQUALITY),FALSE); + } - // compile the default material shader (gray gouraud/phong) - ID3DXBuffer* piBuffer = NULL; - if(FAILED( D3DXCreateEffect(g_piDevice, - g_szDefaultShader.c_str(), - (UINT)g_szDefaultShader.length(), - NULL, - NULL, - AI_SHADER_COMPILE_FLAGS, - NULL, - &g_piDefaultEffect,&piBuffer))) - { - if( piBuffer) - { - MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); - piBuffer->Release(); - } - return 0; - } - if( piBuffer) - { - piBuffer->Release(); - piBuffer = NULL; - } + // compile the default material shader (gray gouraud/phong) + ID3DXBuffer* piBuffer = NULL; + if(FAILED( D3DXCreateEffect(g_piDevice, + g_szDefaultShader.c_str(), + (UINT)g_szDefaultShader.length(), + NULL, + NULL, + AI_SHADER_COMPILE_FLAGS, + NULL, + &g_piDefaultEffect,&piBuffer))) + { + if( piBuffer) + { + MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); + piBuffer->Release(); + } + return 0; + } + if( piBuffer) + { + piBuffer->Release(); + piBuffer = NULL; + } - // use Fixed Function effect when working with shaderless cards - if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) - g_piDefaultEffect->SetTechnique( "DefaultFXSpecular_FF"); + // use Fixed Function effect when working with shaderless cards + if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) + g_piDefaultEffect->SetTechnique( "DefaultFXSpecular_FF"); - // create the shader used to draw the HUD - if(FAILED( D3DXCreateEffect(g_piDevice, - g_szPassThroughShader.c_str(),(UINT)g_szPassThroughShader.length(), - NULL,NULL,AI_SHADER_COMPILE_FLAGS,NULL,&g_piPassThroughEffect,&piBuffer))) - { - if( piBuffer) - { - MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); - piBuffer->Release(); - } - return 0; - } - if( piBuffer) - { - piBuffer->Release(); - piBuffer = NULL; - } + // create the shader used to draw the HUD + if(FAILED( D3DXCreateEffect(g_piDevice, + g_szPassThroughShader.c_str(),(UINT)g_szPassThroughShader.length(), + NULL,NULL,AI_SHADER_COMPILE_FLAGS,NULL,&g_piPassThroughEffect,&piBuffer))) + { + if( piBuffer) + { + MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); + piBuffer->Release(); + } + return 0; + } + if( piBuffer) + { + piBuffer->Release(); + piBuffer = NULL; + } - // use Fixed Function effect when working with shaderless cards - if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) - g_piPassThroughEffect->SetTechnique( "PassThrough_FF"); + // use Fixed Function effect when working with shaderless cards + if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) + g_piPassThroughEffect->SetTechnique( "PassThrough_FF"); - // create the shader used to visualize normal vectors - if(FAILED( D3DXCreateEffect(g_piDevice, - g_szNormalsShader.c_str(),(UINT)g_szNormalsShader.length(), - NULL,NULL,AI_SHADER_COMPILE_FLAGS,NULL,&g_piNormalsEffect, &piBuffer))) - { - if( piBuffer) - { - MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); - piBuffer->Release(); - } - return 0; - } - if( piBuffer) - { - piBuffer->Release(); - piBuffer = NULL; - } + // create the shader used to visualize normal vectors + if(FAILED( D3DXCreateEffect(g_piDevice, + g_szNormalsShader.c_str(),(UINT)g_szNormalsShader.length(), + NULL,NULL,AI_SHADER_COMPILE_FLAGS,NULL,&g_piNormalsEffect, &piBuffer))) + { + if( piBuffer) + { + MessageBox(g_hDlg,(LPCSTR)piBuffer->GetBufferPointer(),"HLSL",MB_OK); + piBuffer->Release(); + } + return 0; + } + if( piBuffer) + { + piBuffer->Release(); + piBuffer = NULL; + } - //MessageBox( g_hDlg, "Failed to create vertex declaration", "Init", MB_OK); + //MessageBox( g_hDlg, "Failed to create vertex declaration", "Init", MB_OK); - // use Fixed Function effect when working with shaderless cards - if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) - g_piNormalsEffect->SetTechnique( "RenderNormals_FF"); + // use Fixed Function effect when working with shaderless cards + if( g_sCaps.PixelShaderVersion < D3DPS_VERSION(2,0)) + g_piNormalsEffect->SetTechnique( "RenderNormals_FF"); - g_piDevice->SetRenderState(D3DRS_DITHERENABLE,TRUE); + g_piDevice->SetRenderState(D3DRS_DITHERENABLE,TRUE); - // create the texture for the HUD - CreateHUDTexture(); - CBackgroundPainter::Instance().RecreateNativeResource(); - CLogDisplay::Instance().RecreateNativeResource(); + // create the texture for the HUD + CreateHUDTexture(); + CBackgroundPainter::Instance().RecreateNativeResource(); + CLogDisplay::Instance().RecreateNativeResource(); - g_piPassThroughEffect->SetTexture("TEXTURE_2D",g_pcTexture); - return 1; + g_piPassThroughEffect->SetTexture("TEXTURE_2D",g_pcTexture); + return 1; } @@ -1116,8 +1117,8 @@ int CreateDevice (bool p_bMultiSample,bool p_bSuperSample,bool bHW /*= true*/) //------------------------------------------------------------------------------- int CreateDevice (void) { - return CreateDevice(g_sOptions.bMultiSample, - g_sOptions.bSuperSample); + return CreateDevice(g_sOptions.bMultiSample, + g_sOptions.bSuperSample); } @@ -1125,25 +1126,25 @@ int CreateDevice (void) //------------------------------------------------------------------------------- int GetProjectionMatrix (aiMatrix4x4& p_mOut) { - const float fFarPlane = 100.0f; - const float fNearPlane = 0.1f; - const float fFOV = (float)(45.0 * 0.0174532925); + const float fFarPlane = 100.0f; + const float fNearPlane = 0.1f; + const float fFOV = (float)(45.0 * 0.0174532925); - const float s = 1.0f / tanf(fFOV * 0.5f); - const float Q = fFarPlane / (fFarPlane - fNearPlane); + const float s = 1.0f / tanf(fFOV * 0.5f); + const float Q = fFarPlane / (fFarPlane - fNearPlane); - RECT sRect; - GetWindowRect(GetDlgItem(g_hDlg,IDC_RT),&sRect); - sRect.right -= sRect.left; - sRect.bottom -= sRect.top; - const float fAspect = (float)sRect.right / (float)sRect.bottom; + RECT sRect; + GetWindowRect(GetDlgItem(g_hDlg,IDC_RT),&sRect); + sRect.right -= sRect.left; + sRect.bottom -= sRect.top; + const float fAspect = (float)sRect.right / (float)sRect.bottom; - p_mOut = aiMatrix4x4( - s / fAspect, 0.0f, 0.0f, 0.0f, - 0.0f, s, 0.0f, 0.0f, - 0.0f, 0.0f, Q, 1.0f, - 0.0f, 0.0f, -Q * fNearPlane, 0.0f); - return 1; + p_mOut = aiMatrix4x4( + s / fAspect, 0.0f, 0.0f, 0.0f, + 0.0f, s, 0.0f, 0.0f, + 0.0f, 0.0f, Q, 1.0f, + 0.0f, 0.0f, -Q * fNearPlane, 0.0f); + return 1; } @@ -1151,38 +1152,38 @@ int GetProjectionMatrix (aiMatrix4x4& p_mOut) //------------------------------------------------------------------------------- aiVector3D GetCameraMatrix (aiMatrix4x4& p_mOut) { - D3DXMATRIX view; - D3DXMatrixIdentity( &view ); + D3DXMATRIX view; + D3DXMatrixIdentity( &view ); - D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vLookAt, (D3DXVECTOR3*)&g_sCamera.vLookAt ); - D3DXVec3Cross( (D3DXVECTOR3*)&g_sCamera.vRight, (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vLookAt ); - D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vRight, (D3DXVECTOR3*)&g_sCamera.vRight ); - D3DXVec3Cross( (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vLookAt, (D3DXVECTOR3*)&g_sCamera.vRight ); - D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vUp ); + D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vLookAt, (D3DXVECTOR3*)&g_sCamera.vLookAt ); + D3DXVec3Cross( (D3DXVECTOR3*)&g_sCamera.vRight, (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vLookAt ); + D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vRight, (D3DXVECTOR3*)&g_sCamera.vRight ); + D3DXVec3Cross( (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vLookAt, (D3DXVECTOR3*)&g_sCamera.vRight ); + D3DXVec3Normalize( (D3DXVECTOR3*)&g_sCamera.vUp, (D3DXVECTOR3*)&g_sCamera.vUp ); - view._11 = g_sCamera.vRight.x; - view._12 = g_sCamera.vUp.x; - view._13 = g_sCamera.vLookAt.x; - view._14 = 0.0f; + view._11 = g_sCamera.vRight.x; + view._12 = g_sCamera.vUp.x; + view._13 = g_sCamera.vLookAt.x; + view._14 = 0.0f; - view._21 = g_sCamera.vRight.y; - view._22 = g_sCamera.vUp.y; - view._23 = g_sCamera.vLookAt.y; - view._24 = 0.0f; + view._21 = g_sCamera.vRight.y; + view._22 = g_sCamera.vUp.y; + view._23 = g_sCamera.vLookAt.y; + view._24 = 0.0f; - view._31 = g_sCamera.vRight.z; - view._32 = g_sCamera.vUp.z; - view._33 = g_sCamera.vLookAt.z; - view._34 = 0.0f; + view._31 = g_sCamera.vRight.z; + view._32 = g_sCamera.vUp.z; + view._33 = g_sCamera.vLookAt.z; + view._34 = 0.0f; - view._41 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vRight ); - view._42 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vUp ); - view._43 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vLookAt ); - view._44 = 1.0f; + view._41 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vRight ); + view._42 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vUp ); + view._43 = -D3DXVec3Dot( (D3DXVECTOR3*)&g_sCamera.vPos, (D3DXVECTOR3*)&g_sCamera.vLookAt ); + view._44 = 1.0f; - memcpy(&p_mOut,&view,sizeof(aiMatrix4x4)); + memcpy(&p_mOut,&view,sizeof(aiMatrix4x4)); - return g_sCamera.vPos; + return g_sCamera.vPos; } } diff --git a/tools/assimp_view/assimp_view.h b/tools/assimp_view/assimp_view.h index dcd65de15..7ae21aed4 100644 --- a/tools/assimp_view/assimp_view.h +++ b/tools/assimp_view/assimp_view.h @@ -47,6 +47,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // include resource definitions #include "resource.h" +#include +#include +#include +#include +#include +#include +#include + // Include ASSIMP headers (XXX: do we really need all of them?) #include #include @@ -59,29 +67,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include "../../code/AssimpPCH.h" /* HACK */ #include "../../code/MaterialSystem.h" // aiMaterial class #include "../../code/StringComparison.h" // ASSIMP_stricmp and ASSIMP_strincmp // in order for std::min and std::max to behave properly -#ifdef min +/*#ifdef min #undef min #endif // min #ifdef max #undef max -#endif // min +#endif // min*/ #include // default movement speed #define MOVE_SPEED 3.f -using namespace Assimp; - -namespace AssimpView -{ - #include "AssetHelper.h" #include "Camera.h" #include "RenderOptions.h" @@ -93,7 +95,6 @@ namespace AssimpView #include "MeshRenderer.h" #include "MaterialManager.h" -} // end of namespace AssimpView - for a while // outside of namespace, to help Intellisense and solve boost::metatype_stuff_miracle #include "AnimEvaluator.h" @@ -105,30 +106,30 @@ namespace AssimpView //------------------------------------------------------------------------------- // Function prototypes //------------------------------------------------------------------------------- - int InitD3D(void); - int ShutdownD3D(void); - int CreateDevice (bool p_bMultiSample,bool p_bSuperSample, bool bHW = true); - int CreateDevice (void); - int ShutdownDevice(void); - int GetProjectionMatrix (aiMatrix4x4& p_mOut); - int LoadAsset(void); - int CreateAssetData(void); - int DeleteAssetData(bool bNoMaterials = false); - int ScaleAsset(void); - int DeleteAsset(void); - int SetupFPSView(); +int InitD3D(void); +int ShutdownD3D(void); +int CreateDevice (bool p_bMultiSample,bool p_bSuperSample, bool bHW = true); +int CreateDevice (void); +int ShutdownDevice(void); +int GetProjectionMatrix (aiMatrix4x4& p_mOut); +int LoadAsset(void); +int CreateAssetData(void); +int DeleteAssetData(bool bNoMaterials = false); +int ScaleAsset(void); +int DeleteAsset(void); +int SetupFPSView(); - aiVector3D GetCameraMatrix (aiMatrix4x4& p_mOut); - int CreateMaterial(AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSource); +aiVector3D GetCameraMatrix (aiMatrix4x4& p_mOut); +int CreateMaterial(AssetHelper::MeshHelper* pcMesh,const aiMesh* pcSource); - void HandleMouseInputFPS( void ); - void HandleMouseInputLightRotate( void ); - void HandleMouseInputLocal( void ); - void HandleKeyboardInputFPS( void ); - void HandleMouseInputLightIntensityAndColor( void ); - void HandleMouseInputSkyBox( void ); - void HandleKeyboardInputTextureView( void ); - void HandleMouseInputTextureView( void ); +void HandleMouseInputFPS( void ); +void HandleMouseInputLightRotate( void ); +void HandleMouseInputLocal( void ); +void HandleKeyboardInputFPS( void ); +void HandleMouseInputLightIntensityAndColor( void ); +void HandleMouseInputSkyBox( void ); +void HandleKeyboardInputTextureView( void ); +void HandleMouseInputTextureView( void ); //------------------------------------------------------------------------------- @@ -160,7 +161,7 @@ INT_PTR CALLBACK AboutMessageProc(HWND hwndDlg,UINT uMsg, //------------------------------------------------------------------------------- // -// Dialog prcoedure for the help dialog +// Dialog procedure for the help dialog // //------------------------------------------------------------------------------- INT_PTR CALLBACK HelpDialogProc(HWND hwndDlg,UINT uMsg, @@ -182,7 +183,7 @@ type clamp(intype in) { // for unsigned types only ... intype mask = (0x1u << (sizeof(type)*8))-1; - return (type)std::max((intype)0,std::min(in,mask)); + return (type)max((intype)0,min(in,mask)); } From e86d40e4e2fb91dbdb898938830783f76e8ee00f Mon Sep 17 00:00:00 2001 From: David Jordan Date: Fri, 17 Apr 2015 23:29:26 -0400 Subject: [PATCH 78/85] Added infinity check for outputting PLY normals --- code/PlyExporter.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 32cb61058..6f86c6b8e 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -214,6 +214,8 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina // ------------------------------------------------------------------------------------------------ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) { + static const float inf = std::numeric_limits::infinity(); + // If a component (for instance normal vectors) is present in at least one mesh in the scene, // then default values are written for meshes that do not contain this component. for (unsigned int i = 0; i < m->mNumVertices; ++i) { @@ -223,11 +225,11 @@ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) m->mVertices[i].z ; if(components & PLY_EXPORT_HAS_NORMALS) { - if (m->HasNormals() && is_not_qnan(m->mNormals[i].x)) { + if (m->HasNormals() && is_not_qnan(m->mNormals[i].x) && std::absf(m->mNormals[i].x) != inf) { mOutput << - " " << m->mNormals[i].x << - " " << m->mNormals[i].y << - " " << m->mNormals[i].z; + " " << m->mNormals[i].x << + " " << m->mNormals[i].y << + " " << m->mNormals[i].z; } else { mOutput << " 0.0 0.0 0.0"; From b575acf2b6d5ad654ab2c3478eb20d87cc1d4a2f Mon Sep 17 00:00:00 2001 From: David Jordan Date: Fri, 17 Apr 2015 23:38:54 -0400 Subject: [PATCH 79/85] std::absf to std::fabsf --- code/PlyExporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 6f86c6b8e..38bf5e9fc 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -225,7 +225,7 @@ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) m->mVertices[i].z ; if(components & PLY_EXPORT_HAS_NORMALS) { - if (m->HasNormals() && is_not_qnan(m->mNormals[i].x) && std::absf(m->mNormals[i].x) != inf) { + if (m->HasNormals() && is_not_qnan(m->mNormals[i].x) && std::fabsf(m->mNormals[i].x) != inf) { mOutput << " " << m->mNormals[i].x << " " << m->mNormals[i].y << From b38572d1bc4a5aa6b3fda80935a1af133d804ade Mon Sep 17 00:00:00 2001 From: David Jordan Date: Fri, 17 Apr 2015 23:50:14 -0400 Subject: [PATCH 80/85] std::fabs from cmath should be right --- code/PlyExporter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 38bf5e9fc..0a4c94a48 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "PlyExporter.h" #include +#include #include "Exceptional.h" #include "../include/assimp/scene.h" #include "../include/assimp/version.h" @@ -225,7 +226,7 @@ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) m->mVertices[i].z ; if(components & PLY_EXPORT_HAS_NORMALS) { - if (m->HasNormals() && is_not_qnan(m->mNormals[i].x) && std::fabsf(m->mNormals[i].x) != inf) { + if (m->HasNormals() && is_not_qnan(m->mNormals[i].x) && std::fabs(m->mNormals[i].x) != inf) { mOutput << " " << m->mNormals[i].x << " " << m->mNormals[i].y << From 08886e28d7cefd3d46219585a9c26c3c271f966f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 18 Apr 2015 19:17:10 +0200 Subject: [PATCH 81/85] use <> include bracket style. Signed-off-by: Kim Kulling --- code/Assimp.cpp | 19 ++++++++++--------- code/TextureTransform.cpp | 9 +++++---- code/UnrealLoader.cpp | 13 ++++++++----- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/code/Assimp.cpp b/code/Assimp.cpp index a8a22314c..a1e30b8de 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -42,18 +42,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of the Plain-C API */ -#include "../include/assimp/cimport.h" -#include "../include/assimp/LogStream.hpp" -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/importerdesc.h" -#include "../include/assimp/scene.h" +#include +#include +#include +#include +#include +#include #include "GenericProperty.h" #include "CInterfaceIOWrapper.h" -#include "Importer.h" -#include "Exceptional.h" -#include "ScenePrivate.h" -#include "BaseImporter.h" +#include "Importer.h" +#include "Exceptional.h" +#include "ScenePrivate.h" +#include "BaseImporter.h" #include // ------------------------------------------------------------------------------------------------ diff --git a/code/TextureTransform.cpp b/code/TextureTransform.cpp index b40f9250f..98e1becb9 100644 --- a/code/TextureTransform.cpp +++ b/code/TextureTransform.cpp @@ -42,11 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "TextureTransform.h" -#include "../include/assimp/postprocess.h" -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/scene.h" +#include +#include +#include +#include +#include "TextureTransform.h" using namespace Assimp; diff --git a/code/UnrealLoader.cpp b/code/UnrealLoader.cpp index 6115693c4..163af55a4 100644 --- a/code/UnrealLoader.cpp +++ b/code/UnrealLoader.cpp @@ -54,11 +54,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "ParsingUtils.h" #include "fast_atof.h" -#include "ConvertToLHProcess.h" -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/IOSystem.hpp" -#include "../include/assimp/scene.h" -#include +#include "ConvertToLHProcess.h" + +#include +#include +#include +#include + +#include using namespace Assimp; From eb1ee61420e61a3da4dada266ce2cfb39c2e1d68 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 18 Apr 2015 19:17:48 +0200 Subject: [PATCH 82/85] fix code reading findings: use of std::copy Signed-off-by: Kim Kulling --- code/OpenGEXImporter.cpp | 9 ++------- code/OpenGEXImporter.h | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 7a4525833..b9496c465 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -44,8 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "MakeVerboseFormat.h" #include -#include "../include/assimp/scene.h" - +#include #include @@ -788,11 +787,7 @@ void OpenGEXImporter::copyMeshes( aiScene *pScene ) { } pScene->mNumMeshes = m_meshCache.size(); pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes ]; - size_t i( 0 ); - for( std::vector::iterator it = m_meshCache.begin(); it != m_meshCache.end(); it++ ) { - pScene->mMeshes[ i ] = *it; - i++; - } + std::copy( m_meshCache.begin(), m_meshCache.end(), pScene->mMeshes ); } //------------------------------------------------------------------------------------------------ diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index c8236eaf3..ac72e8224 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OPENGEX_IMPORTER #include "BaseImporter.h" -#include "../include/assimp/mesh.h" +#include #include #include From 55ae853c2e2aee2319df2d4d7bbab11f2ed2a362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Twardu=C5=9B?= Date: Sun, 19 Apr 2015 10:55:58 +0200 Subject: [PATCH 83/85] Fix compilation with libc++ --- code/ObjFileParser.cpp | 1 + code/Q3BSPZipArchive.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index 37c16a2a9..9c5982861 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -53,6 +53,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/DefaultLogger.hpp" #include "../include/assimp/material.h" #include "../include/assimp/Importer.hpp" +#include namespace Assimp { diff --git a/code/Q3BSPZipArchive.cpp b/code/Q3BSPZipArchive.cpp index a418bf0c6..be315cbb5 100644 --- a/code/Q3BSPZipArchive.cpp +++ b/code/Q3BSPZipArchive.cpp @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Q3BSPZipArchive.h" #include #include +#include #include "../include/assimp/ai_assert.h" From 70435510681422401e48f244aff26f70f49a2932 Mon Sep 17 00:00:00 2001 From: "U-ORADEV\\albihern" Date: Mon, 20 Apr 2015 17:36:47 -0500 Subject: [PATCH 84/85] Modifying files to let assimp build under cygwin. --- CMakeLists.txt | 5 +- code/BaseImporter.cpp | 2 +- code/Bitmap.cpp | 2 +- code/{ByteSwap.h => ByteSwapper.h} | 44 +-- code/CMakeLists.txt | 2 +- code/FBXBinaryTokenizer.cpp | 48 +-- code/FBXParser.cpp | 43 ++- code/IFF.h | 8 +- code/LWOLoader.cpp | 2 +- code/MD2Loader.cpp | 2 +- code/MD2Loader.h | 26 +- code/MD3Loader.cpp | 1 - code/MD3Loader.h | 32 +- code/MDCLoader.h | 27 +- code/MDLFileData.h | 194 +++++----- code/PlyParser.cpp | 2 +- code/STLExporter.cpp | 2 +- code/StreamReader.h | 46 +-- code/StreamWriter.h | 34 +- code/XFileParser.cpp | 2 +- doc/dox.h | 330 +++++++++--------- .../xcode3/assimp.xcodeproj/project.pbxproj | 24 +- 22 files changed, 437 insertions(+), 441 deletions(-) rename code/{ByteSwap.h => ByteSwapper.h} (91%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b31f2c7f2..9829cd306 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,4 @@ +set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required cmake_minimum_required( VERSION 2.8 ) PROJECT( Assimp ) @@ -61,9 +62,9 @@ if( CMAKE_COMPILER_IS_MINGW ) endif() if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_IS_MINGW) - add_definitions(-fPIC) # this is a very important switch and some libraries seem now to have it.... + set(CMAKE_CXX_FLAGS "-fPIC") # this is a very important switch and some libraries seem now to have it.... # hide all not-exported symbols - add_definitions( -fvisibility=hidden -Wall ) + set(CMAKE_CXX_FLAGS "-fvisibility=hidden -Wall" ) elseif(MSVC) # enable multi-core compilation with MSVC add_definitions(/MP) diff --git a/code/BaseImporter.cpp b/code/BaseImporter.cpp index 3eb0826ae..1bb0a1cee 100644 --- a/code/BaseImporter.cpp +++ b/code/BaseImporter.cpp @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "FileSystemFilter.h" #include "Importer.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "../include/assimp/scene.h" #include "../include/assimp/Importer.hpp" #include "../include/assimp/postprocess.h" diff --git a/code/Bitmap.cpp b/code/Bitmap.cpp index 6e62939d8..2ca8f2cb8 100644 --- a/code/Bitmap.cpp +++ b/code/Bitmap.cpp @@ -49,7 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Bitmap.h" #include "../include/assimp/texture.h" #include "../include/assimp/IOStream.hpp" -#include "ByteSwap.h" +#include "ByteSwapper.h" namespace Assimp { diff --git a/code/ByteSwap.h b/code/ByteSwapper.h similarity index 91% rename from code/ByteSwap.h rename to code/ByteSwapper.h index 53af1580c..0e9d92fac 100644 --- a/code/ByteSwap.h +++ b/code/ByteSwapper.h @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,38 +23,38 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -/** @file Helper class tp perform various byte oder swappings +/** @file Helper class tp perform various byte oder swappings (e.g. little to big endian) */ -#ifndef AI_BYTESWAP_H_INC -#define AI_BYTESWAP_H_INC +#ifndef AI_BYTESWAPPER_H_INC +#define AI_BYTESWAPPER_H_INC #include "../include/assimp/ai_assert.h" #include "../include/assimp/types.h" #include -#if _MSC_VER >= 1400 +#if _MSC_VER >= 1400 #include #endif namespace Assimp { // -------------------------------------------------------------------------------------- /** Defines some useful byte order swap routines. - * + * * This is required to read big-endian model formats on little-endian machines, * and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */ // -------------------------------------------------------------------------------------- @@ -167,7 +167,7 @@ public: // ---------------------------------------------------------------------- //! Templatized ByteSwap //! \returns param tOut as swapped - template + template static inline Type Swapped(Type tOut) { return _swapper()(tOut); @@ -180,28 +180,28 @@ private: template struct ByteSwap::_swapper { T operator() (T tOut) { - Swap2(&tOut); + Swap2(&tOut); return tOut; } }; template struct ByteSwap::_swapper { T operator() (T tOut) { - Swap4(&tOut); + Swap4(&tOut); return tOut; } }; template struct ByteSwap::_swapper { T operator() (T tOut) { - Swap8(&tOut); + Swap8(&tOut); return tOut; } }; // -------------------------------------------------------------------------------------- -// ByteSwap macros for BigEndian/LittleEndian support +// ByteSwap macros for BigEndian/LittleEndian support // -------------------------------------------------------------------------------------- #if (defined AI_BUILD_BIG_ENDIAN) # define AI_LE(t) (t) @@ -250,7 +250,7 @@ struct ByteSwapper { } }; -template +template struct ByteSwapper { void operator() (T*) { } @@ -272,7 +272,7 @@ struct Getter { } }; -template +template struct Getter { void operator() (T* inout, bool /*le*/) { @@ -283,4 +283,4 @@ struct Getter { } // end Intern } // end Assimp -#endif //!! AI_BYTESWAP_H_INC +#endif //!! AI_BYTESWAPPER_H_INC diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index e74af87e9..fd475c373 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -98,7 +98,7 @@ SET( Common_SRCS ScenePrivate.h PostStepRegistry.cpp ImporterRegistry.cpp - ByteSwap.h + ByteSwapper.h DefaultProgressHandler.h DefaultIOStream.cpp DefaultIOStream.h diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index 528a8919a..f6dc7d0ff 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -50,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/defs.h" #include #include "Exceptional.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" namespace Assimp { namespace FBX { @@ -58,7 +58,7 @@ namespace FBX { // ------------------------------------------------------------------------------------------------ Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int offset) - : + : #ifdef DEBUG contents(sbegin, static_cast(send-sbegin)), #endif @@ -108,7 +108,7 @@ uint32_t ReadWord(const char* input, const char*& cursor, const char* end) { if(Offset(cursor, end) < 4) { TokenizeError("cannot ReadWord, out of bounds",input, cursor); - } + } uint32_t word = *reinterpret_cast(cursor); AI_SWAP4(word); @@ -124,7 +124,7 @@ uint8_t ReadByte(const char* input, const char*& cursor, const char* end) { if(Offset(cursor, end) < 1) { TokenizeError("cannot ReadByte, out of bounds",input, cursor); - } + } uint8_t word = *reinterpret_cast(cursor); ++cursor; @@ -134,14 +134,14 @@ uint8_t ReadByte(const char* input, const char*& cursor, const char* end) // ------------------------------------------------------------------------------------------------ -unsigned int ReadString(const char*& sbegin_out, const char*& send_out, const char* input, const char*& cursor, const char* end, +unsigned int ReadString(const char*& sbegin_out, const char*& send_out, const char* input, const char*& cursor, const char* end, bool long_length = false, bool allow_null = false) { const uint32_t len_len = long_length ? 4 : 1; if(Offset(cursor, end) < len_len) { TokenizeError("cannot ReadString, out of bounds reading length",input, cursor); - } + } const uint32_t length = long_length ? ReadWord(input, cursor, end) : ReadByte(input, cursor, end); @@ -172,7 +172,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, { if(Offset(cursor, end) < 1) { TokenizeError("cannot ReadData, out of bounds reading length",input, cursor); - } + } const char type = *cursor; sbegin_out = cursor++; @@ -211,14 +211,14 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, // note: do not write cursor += ReadWord(...cursor) as this would be UB // raw binary data - case 'R': + case 'R': { const uint32_t length = ReadWord(input, cursor, end); cursor += length; break; } - case 'b': + case 'b': // TODO: what is the 'b' type code? Right now we just skip over it / // take the full range we could get cursor = end; @@ -229,7 +229,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, case 'd': case 'l': case 'i': { - + const uint32_t length = ReadWord(input, cursor, end); const uint32_t encoding = ReadWord(input, cursor, end); @@ -259,7 +259,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, } } // zip/deflate algorithm (encoding==1)? take given length. anything else? die - else if (encoding != 1) { + else if (encoding != 1) { TokenizeError("cannot ReadData, unknown encoding",input, cursor); } cursor += comp_len; @@ -279,7 +279,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, if(cursor > end) { TokenizeError("cannot ReadData, the remaining size is too small for the data type: " + std::string(&type, 1),input, cursor); - } + } // the type code is contained in the returned range send_out = cursor; @@ -291,10 +291,10 @@ bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor, { // the first word contains the offset at which this block ends const uint32_t end_offset = ReadWord(input, cursor, end); - + // we may get 0 if reading reached the end of the file - - // fbx files have a mysterious extra footer which I don't know - // how to extract any information from, but at least it always + // fbx files have a mysterious extra footer which I don't know + // how to extract any information from, but at least it always // starts with a 0. if(!end_offset) { return false; diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index 99c40f746..f77c24a8d 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -59,7 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include "fast_atof.h" #include -#include "ByteSwap.h" +#include "ByteSwapper.h" using namespace Assimp; using namespace Assimp::FBX; @@ -189,7 +189,7 @@ Scope::Scope(Parser& parser,bool topLevel) TokenPtr t = parser.CurrentToken(); if (t->Type() != TokenType_OPEN_BRACKET) { ParseError("expected open bracket",t); - } + } } TokenPtr n = parser.AdvanceToNextToken(); @@ -384,7 +384,7 @@ float ParseTokenAsFloat(const Token& t, const char*& err_out) } // need to copy the input string to a temporary buffer - // first - next in the fbx token stream comes ',', + // first - next in the fbx token stream comes ',', // which fast_atof could interpret as decimal point. #define MAX_FLOAT_LENGTH 31 char temp[MAX_FLOAT_LENGTH + 1]; @@ -515,7 +515,7 @@ namespace { // ------------------------------------------------------------------------------------------------ // read the type code and element count of a binary data array and stop there -void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uint32_t& count, +void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uint32_t& count, const Element& el) { if (static_cast(end-data) < 5) { @@ -536,8 +536,8 @@ void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uin // ------------------------------------------------------------------------------------------------ // read binary data array, assume cursor points to the 'compression mode' field (i.e. behind the header) -void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const char* end, - std::vector& buff, +void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const char* end, + std::vector& buff, const Element& /*el*/) { BE_NCONST uint32_t encmode = SafeParse(data, end); @@ -581,7 +581,7 @@ void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const cha else if(encmode == 1) { // zlib/deflate, next comes ZIP head (0x78 0x01) // see http://www.ietf.org/rfc/rfc1950.txt - + z_stream zstream; zstream.opaque = Z_NULL; zstream.zalloc = Z_NULL; @@ -631,7 +631,7 @@ void ParseVectorDataArray(std::vector& out, const Element& el) if(tok.empty()) { ParseError("unexpected empty element",&el); } - + if(tok[0]->IsBinary()) { const char* data = tok[0]->begin(), *end = tok[0]->end(); @@ -653,7 +653,7 @@ void ParseVectorDataArray(std::vector& out, const Element& el) std::vector buff; ReadBinaryDataArray(type, count, data, end, buff, el); - + ai_assert(data == end); ai_assert(buff.size() == count * (type == 'd' ? 8 : 4)); @@ -1095,7 +1095,7 @@ void ParseVectorDataArray(std::vector& out, const Element& el) for (TokenList::const_iterator it = a.Tokens().begin(), end = a.Tokens().end(); it != end; ) { const uint64_t ival = ParseTokenAsID(**it++); - + out.push_back(ival); } } @@ -1211,7 +1211,7 @@ std::string ParseTokenAsString(const Token& t) // ------------------------------------------------------------------------------------------------ // extract a required element from a scope, abort if the element cannot be found -const Element& GetRequiredElement(const Scope& sc, const std::string& index, const Element* element /*= NULL*/) +const Element& GetRequiredElement(const Scope& sc, const std::string& index, const Element* element /*= NULL*/) { const Element* el = sc[index]; if(!el) { @@ -1249,7 +1249,7 @@ const Token& GetRequiredToken(const Element& el, unsigned int index) // ------------------------------------------------------------------------------------------------ // wrapper around ParseTokenAsID() with ParseError handling -uint64_t ParseTokenAsID(const Token& t) +uint64_t ParseTokenAsID(const Token& t) { const char* err; const uint64_t i = ParseTokenAsID(t,err); @@ -1316,4 +1316,3 @@ int64_t ParseTokenAsInt64(const Token& t) } // !Assimp #endif - diff --git a/code/IFF.h b/code/IFF.h index adc529e53..1f986a4dc 100644 --- a/code/IFF.h +++ b/code/IFF.h @@ -1,5 +1,3 @@ - - // Definitions for the Interchange File Format (IFF) // Alexander Gessler, 2006 // Adapted to Assimp August 2008 @@ -7,7 +5,7 @@ #ifndef AI_IFF_H_INCLUDED #define AI_IFF_H_INCLUDED -#include "ByteSwap.h" +#include "ByteSwapper.h" namespace Assimp { namespace IFF { @@ -81,12 +79,12 @@ inline SubChunkHeader LoadSubChunk(uint8_t*& outFile) ///////////////////////////////////////////////////////////////////////////////// //! Read the file header and return the type of the file and its size -//! @param outFile Pointer to the file data. The buffer must at +//! @param outFile Pointer to the file data. The buffer must at //! least be 12 bytes large. //! @param fileType Receives the type of the file //! @return 0 if everything was OK, otherwise an error message ///////////////////////////////////////////////////////////////////////////////// -inline const char* ReadHeader(uint8_t* outFile, uint32_t& fileType) +inline const char* ReadHeader(uint8_t* outFile, uint32_t& fileType) { ChunkHeader head = LoadChunk(outFile); if(AI_IFF_FOURCC_FORM != head.type) diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index 52d32eb16..fd29f23f1 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -50,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LWOLoader.h" #include "StringComparison.h" #include "SGSpatialSort.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "ProcessHelper.h" #include "ConvertToLHProcess.h" #include diff --git a/code/MD2Loader.cpp b/code/MD2Loader.cpp index 52fbbddae..9e499f49e 100644 --- a/code/MD2Loader.cpp +++ b/code/MD2Loader.cpp @@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Implementation of the MD2 importer class */ #include "MD2Loader.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "MD2NormalTable.h" // shouldn't be included by other units #include "../include/assimp/DefaultLogger.hpp" #include "../include/assimp/Importer.hpp" diff --git a/code/MD2Loader.h b/code/MD2Loader.h index 9a60e67fa..0d3f7f2ca 100644 --- a/code/MD2Loader.h +++ b/code/MD2Loader.h @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "../include/assimp/types.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "MD2FileData.h" struct aiNode; @@ -69,7 +69,7 @@ public: public: // ------------------------------------------------------------------- - /** Returns whether the class can handle the format of the given file. + /** Returns whether the class can handle the format of the given file. * See BaseImporter::CanRead() for details. */ bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const; @@ -91,10 +91,10 @@ protected: const aiImporterDesc* GetInfo () const; // ------------------------------------------------------------------- - /** Imports the given file into the given scene structure. + /** Imports the given file into the given scene structure. * See BaseImporter::InternReadFile() for details */ - void InternReadFile( const std::string& pFile, aiScene* pScene, + void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler); diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index 9517747b2..36cb573ac 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -52,7 +52,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_MD3_IMPORTER #include "MD3Loader.h" -#include "ByteSwap.h" #include "SceneCombiner.h" #include "GenericProperty.h" #include "RemoveComments.h" diff --git a/code/MD3Loader.h b/code/MD3Loader.h index feca9e16f..fdf80c6b3 100644 --- a/code/MD3Loader.h +++ b/code/MD3Loader.h @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_MD3LOADER_H_INCLUDED #include "BaseImporter.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "MD3FileData.h" #include "StringComparison.h" #include "../include/assimp/types.h" @@ -99,7 +99,7 @@ enum ShaderCullMode enum BlendFunc { BLEND_NONE, - BLEND_GL_ONE, + BLEND_GL_ONE, BLEND_GL_ZERO, BLEND_GL_DST_COLOR, BLEND_GL_ONE_MINUS_DST_COLOR, @@ -114,7 +114,7 @@ enum AlphaTestFunc { AT_NONE, AT_GT0, - AT_LT128, + AT_LT128, AT_GE128 }; @@ -223,7 +223,7 @@ public: public: // ------------------------------------------------------------------- - /** Returns whether the class can handle the format of the given file. + /** Returns whether the class can handle the format of the given file. * See BaseImporter::CanRead() for details. */ bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const; @@ -245,10 +245,10 @@ protected: const aiImporterDesc* GetInfo () const; // ------------------------------------------------------------------- - /** Imports the given file into the given scene structure. + /** Imports the given file into the given scene structure. * See BaseImporter::InternReadFile() for details */ - void InternReadFile( const std::string& pFile, aiScene* pScene, + void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler); // ------------------------------------------------------------------- @@ -281,7 +281,7 @@ protected: * @param[in] header_path Base path specified in MD3 header * @param[out] out Receives the converted output string */ - void ConvertPath(const char* texture_name, const char* header_path, + void ConvertPath(const char* texture_name, const char* header_path, std::string& out) const; protected: diff --git a/code/MDCLoader.h b/code/MDCLoader.h index 8d1c9878d..f76c219a8 100644 --- a/code/MDCLoader.h +++ b/code/MDCLoader.h @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,23 +23,23 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ /** @file MDCLoader.h - * @brief Definition of the MDC importer class. + * @brief Definition of the MDC importer class. */ #ifndef AI_MDCLOADER_H_INCLUDED #define AI_MDCLOADER_H_INCLUDED @@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "MDCFileData.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" namespace Assimp { using namespace MDC; @@ -66,7 +66,7 @@ public: public: // ------------------------------------------------------------------- - /** Returns whether the class can handle the format of the given file. + /** Returns whether the class can handle the format of the given file. * See BaseImporter::CanRead() for details. */ bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const; @@ -87,7 +87,7 @@ protected: const aiImporterDesc* GetInfo () const; // ------------------------------------------------------------------- - /** Imports the given file into the given scene structure. + /** Imports the given file into the given scene structure. * See BaseImporter::InternReadFile() for details */ void InternReadFile( const std::string& pFile, aiScene* pScene, @@ -125,4 +125,3 @@ protected: } // end of namespace Assimp #endif // AI_3DSIMPORTER_H_INC - diff --git a/code/MDLFileData.h b/code/MDLFileData.h index 428cbeee7..b2566d054 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -5,8 +5,8 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** * @file MDLFileData.h - * @brief Definition of in-memory structures for the MDL file format. + * @brief Definition of in-memory structures for the MDL file format. * * The specification has been taken from various sources on the internet. * - http://tfc.duke.free.fr/coding/mdl-specs-en.html @@ -52,7 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MDLFILEHELPER_H_INC #define AI_MDLFILEHELPER_H_INC -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "./../include/assimp/anim.h" #include "./../include/assimp/mesh.h" #include "./../include/assimp/Compiler/pushpack1.h" @@ -99,13 +99,13 @@ namespace MDL { # define AI_MDL_MAX_FRAMES 256 #endif #if (!defined AI_MDL_MAX_UVS) -# define AI_MDL_MAX_UVS 1024 +# define AI_MDL_MAX_UVS 1024 #endif #if (!defined AI_MDL_MAX_VERTS) # define AI_MDL_MAX_VERTS 1024 #endif #if (!defined AI_MDL_MAX_TRIANGLES) -# define AI_MDL_MAX_TRIANGLES 2048 +# define AI_MDL_MAX_TRIANGLES 2048 #endif // material key that is set for dummy materials that are @@ -121,47 +121,47 @@ namespace MDL { struct Header { //! magic number: "IDPO" - uint32_t ident; + uint32_t ident; //! version number: 6 - int32_t version; + int32_t version; //! scale factors for each axis - aiVector3D scale; + aiVector3D scale; //! translation factors for each axis - aiVector3D translate; + aiVector3D translate; //! bounding radius of the mesh float boundingradius; - + //! Position of the viewer's exe. Ignored aiVector3D vEyePos; //! Number of textures - int32_t num_skins; + int32_t num_skins; //! Texture width in pixels int32_t skinwidth; //! Texture height in pixels - int32_t skinheight; + int32_t skinheight; //! Number of vertices contained in the file - int32_t num_verts; + int32_t num_verts; //! Number of triangles contained in the file - int32_t num_tris; + int32_t num_tris; //! Number of frames contained in the file - int32_t num_frames; + int32_t num_frames; //! 0 = synchron, 1 = random . Ignored //! (MDLn formats: number of texture coordinates) - int32_t synctype; + int32_t synctype; //! State flag - int32_t flags; + int32_t flags; //! Could be the total size of the file (and not a float) float size; @@ -175,10 +175,10 @@ struct Header struct Header_MDL7 { //! magic number: "MDL7" - char ident[4]; + char ident[4]; //! Version number. Ignored - int32_t version; + int32_t version; //! Number of bones in file uint32_t bones_num; @@ -187,13 +187,13 @@ struct Header_MDL7 uint32_t groups_num; //! Size of data in the file - uint32_t data_size; + uint32_t data_size; //! Ignored. Used to store entity specific information - int32_t entlump_size; + int32_t entlump_size; //! Ignored. Used to store MED related data - int32_t medlump_size; + int32_t medlump_size; //! Size of the Bone_MDL7 data structure used in the file uint16_t bone_stc_size; @@ -237,7 +237,7 @@ struct Bone_MDL7 //! Index of the parent bone of *this* bone. 0xffff means: //! "hey, I have no parent, I'm an orphan" uint16_t parent_index; - uint8_t _unused_[2]; + uint8_t _unused_[2]; //! Relative position of the bone (relative to the //! parent bone) @@ -270,21 +270,21 @@ struct Bone_MDL7 struct Group_MDL7 { //! = '1' -> triangle based Mesh - unsigned char typ; + unsigned char typ; int8_t deformers; int8_t max_weights; int8_t _unused_; //! size of data for this group in bytes ( MD7_GROUP stc. included). - int32_t groupdata_size; + int32_t groupdata_size; char name[AI_MDL7_MAX_GROUPNAMESIZE]; //! Number of skins int32_t numskins; //! Number of texture coordinates - int32_t num_stpts; + int32_t num_stpts; //! Number of triangles int32_t numtris; @@ -327,7 +327,7 @@ struct Deformer_MDL7 struct DeformerElement_MDL7 { //! bei deformer_typ==0 (==bones) element_index == bone index - int32_t element_index; + int32_t element_index; char element_name[AI_MDL7_MAX_BONENAMESIZE]; int32_t weights; } PACK_STRUCT; @@ -340,7 +340,7 @@ struct DeformerElement_MDL7 struct DeformerWeight_MDL7 { //! for deformer_typ==0 (==bones) index == vertex index - int32_t index; + int32_t index; float weight; } PACK_STRUCT; @@ -364,19 +364,19 @@ struct ColorValue_MDL7 struct Material_MDL7 { //! Diffuse base color of the material - ColorValue_MDL7 Diffuse; + ColorValue_MDL7 Diffuse; //! Ambient base color of the material - ColorValue_MDL7 Ambient; + ColorValue_MDL7 Ambient; //! Specular base color of the material - ColorValue_MDL7 Specular; + ColorValue_MDL7 Specular; //! Emissive base color of the material - ColorValue_MDL7 Emissive; + ColorValue_MDL7 Emissive; //! Phong power - float Power; + float Power; } PACK_STRUCT; @@ -391,16 +391,16 @@ struct Skin //! fore the size of the data to skip: //------------------------------------------------------- //! 2 for 565 RGB, - //! 3 for 4444 ARGB, - //! 10 for 565 mipmapped, + //! 3 for 4444 ARGB, + //! 10 for 565 mipmapped, //! 11 for 4444 mipmapped (bpp = 2), - //! 12 for 888 RGB mipmapped (bpp = 3), + //! 12 for 888 RGB mipmapped (bpp = 3), //! 13 for 8888 ARGB mipmapped (bpp = 4) //------------------------------------------------------- - int32_t group; + int32_t group; //! Texture data - uint8_t *data; + uint8_t *data; } PACK_STRUCT; @@ -411,8 +411,8 @@ struct Skin */ struct Skin_MDL5 { - int32_t size, width, height; - uint8_t *data; + int32_t size, width, height; + uint8_t *data; } PACK_STRUCT; // maximum length of texture file name @@ -430,7 +430,7 @@ struct Skin_MDL7 int8_t _unused_[3]; int32_t width; int32_t height; - char texture_name[AI_MDL7_MAX_TEXNAMESIZE]; + char texture_name[AI_MDL7_MAX_TEXNAMESIZE]; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -463,16 +463,16 @@ struct ARGB4 struct GroupSkin { //! 0 = single (Skin), 1 = group (GroupSkin) - int32_t group; + int32_t group; //! Number of images - int32_t nb; + int32_t nb; //! Time for each image - float *time; + float *time; //! Data of each image - uint8_t **data; + uint8_t **data; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -498,10 +498,10 @@ struct TexCoord struct TexCoord_MDL3 { //! position, horizontally in range 0..skinwidth-1 - int16_t u; + int16_t u; //! position, vertically in range 0..skinheight-1 - int16_t v; + int16_t v; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -511,10 +511,10 @@ struct TexCoord_MDL3 struct TexCoord_MDL7 { //! position, horizontally in range 0..1 - float u; + float u; //! position, vertically in range 0..1 - float v; + float v; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -527,10 +527,10 @@ struct TexCoord_MDL7 struct SkinSet_MDL7 { //! Index into the UV coordinate list - uint16_t st_index[3]; // size 6 + uint16_t st_index[3]; // size 6 //! Material index - int32_t material; // size 4 + int32_t material; // size 4 } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -540,10 +540,10 @@ struct SkinSet_MDL7 struct Triangle { //! 0 = backface, 1 = frontface - int32_t facesfront; + int32_t facesfront; //! Vertex indices - int32_t vertex[3]; + int32_t vertex[3]; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -556,7 +556,7 @@ struct Triangle_MDL3 uint16_t index_xyz[3]; //! Index of 3 skin vertices in range 0..numskinverts - uint16_t index_uv[3]; + uint16_t index_uv[3]; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -570,17 +570,17 @@ struct Triangle_MDL7 //! Two skinsets. The second will be used for multi-texturing SkinSet_MDL7 skinsets[2]; -} PACK_STRUCT; +} PACK_STRUCT; #if (!defined AI_MDL7_TRIANGLE_STD_SIZE_ONE_UV) # define AI_MDL7_TRIANGLE_STD_SIZE_ONE_UV (6+sizeof(SkinSet_MDL7)-sizeof(uint32_t)) -#endif +#endif #if (!defined AI_MDL7_TRIANGLE_STD_SIZE_ONE_UV_WITH_MATINDEX) # define AI_MDL7_TRIANGLE_STD_SIZE_ONE_UV_WITH_MATINDEX (6+sizeof(SkinSet_MDL7)) -#endif +#endif #if (!defined AI_MDL7_TRIANGLE_STD_SIZE_TWO_UV) # define AI_MDL7_TRIANGLE_STD_SIZE_TWO_UV (6+2*sizeof(SkinSet_MDL7)) -#endif +#endif // Helper constants for Triangle::facesfront #if (!defined AI_MDL_BACKFACE) @@ -634,10 +634,10 @@ struct Vertex_MDL7 struct BoneTransform_MDL7 { //! 4*3 - float m [4*4]; + float m [4*4]; //! the index of this vertex, 0.. header::bones_num - 1 - uint16_t bone_index; + uint16_t bone_index; //! I HATE 3DGS AND THE SILLY DEVELOPER WHO DESIGNED //! THIS STUPID FILE FORMAT! @@ -655,8 +655,8 @@ struct BoneTransform_MDL7 struct Frame_MDL7 { char frame_name[AI_MDL7_MAX_FRAMENAMESIZE]; - uint32_t vertices_count; - uint32_t transmatrix_count; + uint32_t vertices_count; + uint32_t transmatrix_count; }; @@ -667,16 +667,16 @@ struct Frame_MDL7 struct SimpleFrame { //! Minimum vertex of the bounding box - Vertex bboxmin; + Vertex bboxmin; //! Maximum vertex of the bounding box - Vertex bboxmax; + Vertex bboxmax; //! Name of the frame char name[16]; //! Vertex list of the frame - Vertex *verts; + Vertex *verts; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -686,10 +686,10 @@ struct SimpleFrame struct Frame { //! 0 = simple frame, !0 = group frame - int32_t type; + int32_t type; //! Frame data - SimpleFrame frame; + SimpleFrame frame; } PACK_STRUCT; @@ -697,16 +697,16 @@ struct Frame struct SimpleFrame_MDLn_SP { //! Minimum vertex of the bounding box - Vertex_MDL4 bboxmin; + Vertex_MDL4 bboxmin; //! Maximum vertex of the bounding box - Vertex_MDL4 bboxmax; + Vertex_MDL4 bboxmax; //! Name of the frame char name[16]; //! Vertex list of the frame - Vertex_MDL4 *verts; + Vertex_MDL4 *verts; } PACK_STRUCT; // ------------------------------------------------------------------------------------- @@ -716,19 +716,19 @@ struct SimpleFrame_MDLn_SP struct GroupFrame { //! 0 = simple frame, !0 = group frame - int32_t type; + int32_t type; //! Minimum vertex for all single frames - Vertex min; + Vertex min; //! Maximum vertex for all single frames - Vertex max; + Vertex max; //! Time for all single frames - float *time; + float *time; //! List of single frames - SimpleFrame *frames; + SimpleFrame *frames; } PACK_STRUCT; #include "./../include/assimp/Compiler/poppack1.h" @@ -752,7 +752,7 @@ struct IntFace_MDL7 //! Material index (maximally two channels, which are joined later) unsigned int iMatIndex[2]; -}; +}; // ------------------------------------------------------------------------------------- /** \struct IntMaterial_MDL7 @@ -812,7 +812,7 @@ struct IntBone_MDL7 : aiBone struct IntFrameInfo_MDL7 { //! Construction from an existing frame header - IntFrameInfo_MDL7(BE_NCONST MDL::Frame_MDL7* _pcFrame,unsigned int _iIndex) + IntFrameInfo_MDL7(BE_NCONST MDL::Frame_MDL7* _pcFrame,unsigned int _iIndex) : iIndex(_iIndex) , pcFrame(_pcFrame) {} @@ -821,7 +821,7 @@ struct IntFrameInfo_MDL7 unsigned int iIndex; //! Points to the header of the frame - BE_NCONST MDL::Frame_MDL7* pcFrame; + BE_NCONST MDL::Frame_MDL7* pcFrame; }; // ------------------------------------------------------------------------------------- @@ -829,7 +829,7 @@ struct IntFrameInfo_MDL7 struct IntGroupInfo_MDL7 { //! Default constructor - IntGroupInfo_MDL7() + IntGroupInfo_MDL7() : iIndex(0) , pcGroup(NULL) , pcGroupUVs(NULL) @@ -847,13 +847,13 @@ struct IntGroupInfo_MDL7 unsigned int iIndex; //! Points to the header of the group - BE_NCONST MDL::Group_MDL7* pcGroup; + BE_NCONST MDL::Group_MDL7* pcGroup; //! Points to the beginning of the uv coordinate section - BE_NCONST MDL::TexCoord_MDL7* pcGroupUVs; + BE_NCONST MDL::TexCoord_MDL7* pcGroupUVs; //! Points to the beginning of the triangle section - MDL::Triangle_MDL7* pcGroupTris; + MDL::Triangle_MDL7* pcGroupTris; //! Points to the beginning of the vertex section BE_NCONST MDL::Vertex_MDL7* pcGroupVerts; @@ -868,16 +868,16 @@ struct IntGroupData_MDL7 {} //! Array of faces that belong to the group - MDL::IntFace_MDL7* pcFaces; + MDL::IntFace_MDL7* pcFaces; //! Array of vertex positions - std::vector vPositions; + std::vector vPositions; //! Array of vertex normals - std::vector vNormals; + std::vector vNormals; //! Array of bones indices - std::vector aiBones; + std::vector aiBones; //! First UV coordinate set std::vector vTextureCoords1; @@ -895,7 +895,7 @@ struct IntGroupData_MDL7 struct IntSharedData_MDL7 { //! Default constructor - IntSharedData_MDL7() + IntSharedData_MDL7() { abNeedMaterials.reserve(10); } @@ -929,7 +929,7 @@ struct IntSharedData_MDL7 //! Contains input data for GenerateOutputMeshes_3DGS_MDL7 struct IntSplitGroupData_MDL7 { - //! Construction from a given shared data set + //! Construction from a given shared data set IntSplitGroupData_MDL7(IntSharedData_MDL7& _shared, std::vector& _avOutList) @@ -955,7 +955,7 @@ struct IntSplitGroupData_MDL7 //! Shared data for all groups of the model IntSharedData_MDL7& shared; - //! List of meshes + //! List of meshes std::vector& avOutList; }; diff --git a/code/PlyParser.cpp b/code/PlyParser.cpp index c11af1a0a..3d6623778 100644 --- a/code/PlyParser.cpp +++ b/code/PlyParser.cpp @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "PlyLoader.h" #include "fast_atof.h" #include "../include/assimp/DefaultLogger.hpp" -#include "ByteSwap.h" +#include "ByteSwapper.h" using namespace Assimp; diff --git a/code/STLExporter.cpp b/code/STLExporter.cpp index 580620f94..1bc631ef7 100644 --- a/code/STLExporter.cpp +++ b/code/STLExporter.cpp @@ -49,7 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/assimp/Exporter.hpp" #include #include "Exceptional.h" -#include "ByteSwap.h" +#include "ByteSwapper.h" using namespace Assimp; namespace Assimp { diff --git a/code/StreamReader.h b/code/StreamReader.h index bb96a20ce..17af2caf5 100644 --- a/code/StreamReader.h +++ b/code/StreamReader.h @@ -7,8 +7,8 @@ Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -25,16 +25,16 @@ conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_STREAMREADER_H_INCLUDED #define AI_STREAMREADER_H_INCLUDED -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "Exceptional.h" #include #include "../include/assimp/IOStream.hpp" @@ -54,12 +54,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { // -------------------------------------------------------------------------------------------- -/** Wrapper class around IOStream to allow for consistent reading of binary data in both - * little and big endian format. Don't attempt to instance the template directly. Use - * StreamReaderLE to read from a little-endian stream and StreamReaderBE to read from a - * BE stream. The class expects that the endianess of any input data is known at +/** Wrapper class around IOStream to allow for consistent reading of binary data in both + * little and big endian format. Don't attempt to instance the template directly. Use + * StreamReaderLE to read from a little-endian stream and StreamReaderBE to read from a + * BE stream. The class expects that the endianess of any input data is known at * compile-time, which should usually be true (#BaseImporter::ConvertToUTF8 implements - * runtime endianess conversions for text files). + * runtime endianess conversions for text files). * * XXX switch from unsigned int for size types to size_t? or ptrdiff_t?*/ // -------------------------------------------------------------------------------------------- @@ -71,7 +71,7 @@ public: // FIXME: use these data types throughout the whole library, // then change them to 64 bit values :-) - + typedef int diff; typedef unsigned int pos; @@ -80,7 +80,7 @@ public: // --------------------------------------------------------------------- /** Construction from a given stream with a well-defined endianess. - * + * * The StreamReader holds a permanent strong reference to the * stream, which is released upon destruction. * @param stream Input stream. The stream is not restarted if @@ -94,7 +94,7 @@ public: : stream(stream) , le(le) { - ai_assert(stream); + ai_assert(stream); InternBegin(); } @@ -213,8 +213,8 @@ public: // --------------------------------------------------------------------- /** Set current file pointer (Get it from #GetPtr). This is if you - * prefer to do pointer arithmetics on your own or want to copy - * large chunks of data at once. + * prefer to do pointer arithmetics on your own or want to copy + * large chunks of data at once. * @param p The new pointer, which is validated against the size * limit and buffer boundaries. */ void SetPtr(int8_t* p) { @@ -250,7 +250,7 @@ public: // --------------------------------------------------------------------- /** Setup a temporary read limit - * + * * @param limit Maximum number of bytes to be read from * the beginning of the file. Specifying UINT_MAX * resets the limit to the original end of the stream. */ @@ -285,7 +285,7 @@ public: /** overload operator>> and allow chaining of >> ops. */ template StreamReader& operator >> (T& f) { - f = Get(); + f = Get(); return *this; } @@ -304,7 +304,7 @@ private: memcpy (&f, current, sizeof(T)); #else T f = *((const T*)current); -#endif +#endif Intern :: Getter() (&f,le); current += sizeof(T); diff --git a/code/StreamWriter.h b/code/StreamWriter.h index 522999365..b77404413 100644 --- a/code/StreamWriter.h +++ b/code/StreamWriter.h @@ -7,8 +7,8 @@ Copyright (c) 2006-2012, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -25,16 +25,16 @@ conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_STREAMWRITER_H_INCLUDED #define AI_STREAMWRITER_H_INCLUDED -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "../include/assimp/IOStream.hpp" #include @@ -54,9 +54,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { // -------------------------------------------------------------------------------------------- -/** Wrapper class around IOStream to allow for consistent writing of binary data in both - * little and big endian format. Don't attempt to instance the template directly. Use - * StreamWriterLE to read from a little-endian stream and StreamWriterBE to read from a +/** Wrapper class around IOStream to allow for consistent writing of binary data in both + * little and big endian format. Don't attempt to instance the template directly. Use + * StreamWriterLE to read from a little-endian stream and StreamWriterBE to read from a * BE stream. Alternatively, there is StreamWriterAny if the endianess of the output * stream is to be determined at runtime. */ @@ -72,7 +72,7 @@ public: // --------------------------------------------------------------------- /** Construction from a given stream with a well-defined endianess. - * + * * The StreamReader holds a permanent strong reference to the * stream, which is released upon destruction. * @param stream Input stream. The stream is not re-seeked and writing @@ -86,7 +86,7 @@ public: , le(le) , cursor() { - ai_assert(stream); + ai_assert(stream); buffer.reserve(INITIAL_CAPACITY); } @@ -175,7 +175,7 @@ public: /** overload operator<< and allow chaining of MM ops. */ template StreamWriter& operator << (T f) { - Put(f); + Put(f); return *this; } @@ -196,7 +196,7 @@ private: template void Put(T f) { Intern :: Getter() (&f, le); - + if (cursor + sizeof(T) >= buffer.size()) { buffer.resize(cursor + sizeof(T)); } diff --git a/code/XFileParser.cpp b/code/XFileParser.cpp index c2a888870..016c68731 100644 --- a/code/XFileParser.cpp +++ b/code/XFileParser.cpp @@ -50,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Exceptional.h" #include #include -#include "ByteSwap.h" +#include "ByteSwapper.h" #include "../include/assimp/DefaultLogger.hpp" diff --git a/doc/dox.h b/doc/dox.h index fb5866c2c..16a5b3806 100644 --- a/doc/dox.h +++ b/doc/dox.h @@ -9,14 +9,14 @@ @section intro Introduction -assimp is a library to load and process geometric scenes from various data formats. It is tailored at typical game +assimp is a library to load and process geometric scenes from various data formats. It is tailored at typical game scenarios by supporting a node hierarchy, static or skinned meshes, materials, bone animations and potential texture data. -The library is *not* designed for speed, it is primarily useful for importing assets from various sources once and +The library is *not* designed for speed, it is primarily useful for importing assets from various sources once and storing it in a engine-specific format for easy and fast every-day-loading. assimp is also able to apply various post processing steps to the imported data such as conversion to indexed meshes, calculation of normals or tangents/bitangents or conversion from right-handed to left-handed coordinate systems. -assimp currently supports the following file formats (note that some loaders lack some features of their formats because +assimp currently supports the following file formats (note that some loaders lack some features of their formats because some file formats contain data not supported by assimp, some stuff would require so much conversion work that it has not been implemented yet and some (most ...) formats lack proper specifications):


    @@ -39,15 +39,15 @@ that it has not been implemented yet and some (most ...) formats lack proper spe Quake 3 BSP ( *.pk3 ) 1
    RtCW ( *.mdc )
    Doom 3 ( *.md5mesh;*.md5anim;*.md5camera )
    -DirectX X ( *.x ).
    -Quick3D ( *.q3o;*q3s ).
    -Raw Triangles ( *.raw ).
    +DirectX X ( *.x ).
    +Quick3D ( *.q3o;*q3s ).
    +Raw Triangles ( *.raw ).
    AC3D ( *.ac ).
    Stereolithography ( *.stl ).
    Autodesk DXF ( *.dxf ).
    Irrlicht Mesh ( *.irrmesh;*.xml ).
    Irrlicht Scene ( *.irr;*.xml ).
    -Object File Format ( *.off ).
    +Object File Format ( *.off ).
    Terragen Terrain ( *.ter )
    3D GameStudio Model ( *.mdl )
    3D GameStudio Terrain ( *.hmp )
    @@ -60,9 +60,9 @@ that it has not been implemented yet and some (most ...) formats lack proper spe Stanford Ply ( *.ply )
    TrueSpace ( *.cob, *.scn )2

    -See the @link importer_notes Importer Notes Page @endlink for informations, what a specific importer can do and what not. -Note that although this paper claims to be the official documentation, -http://assimp.sourceforge.net/main_features_formats.html +See the @link importer_notes Importer Notes Page @endlink for informations, what a specific importer can do and what not. +Note that although this paper claims to be the official documentation, +http://assimp.sourceforge.net/main_features_formats.html
    is usually the most up-to-date list of file formats supported by the library.
    1: Experimental loaders
    @@ -71,12 +71,12 @@ http://assimp.sourceforge.net/main_features_formats.html

    -assimp is independent of the Operating System by nature, providing a C++ interface for easy integration -with game engines and a C interface to allow bindings to other programming languages. At the moment the library runs -on any little-endian platform including X86/Windows/Linux/Mac and X64/Windows/Linux/Mac. Special attention -was paid to keep the library as free as possible from dependencies. +assimp is independent of the Operating System by nature, providing a C++ interface for easy integration +with game engines and a C interface to allow bindings to other programming languages. At the moment the library runs +on any little-endian platform including X86/Windows/Linux/Mac and X64/Windows/Linux/Mac. Special attention +was paid to keep the library as free as possible from dependencies. -Big endian systems such as PPC-Macs or PPC-Linux systems are not officially supported at the moment. However, most +Big endian systems such as PPC-Macs or PPC-Linux systems are not officially supported at the moment. However, most formats handle the required endian conversion correctly, so large parts of the library should work. The assimp linker library and viewer application are provided under the BSD 3-clause license. This basically means @@ -89,14 +89,14 @@ but not all of them are *open-source*. If there's an accompagning '\source @section main_install Installation -assimp can be used in two ways: linking against the pre-built libraries or building the library on your own. The former +assimp can be used in two ways: linking against the pre-built libraries or building the library on your own. The former option is the easiest, but the assimp distribution contains pre-built libraries only for Visual C++ 2005 and 2008. For other -compilers you'll have to build assimp for yourself. Which is hopefully as hassle-free as the other way, but needs a bit +compilers you'll have to build assimp for yourself. Which is hopefully as hassle-free as the other way, but needs a bit more work. Both ways are described at the @link install Installation page. @endlink @section main_usage Usage -When you're done integrating the library into your IDE / project, you can now start using it. There are two separate +When you're done integrating the library into your IDE / project, you can now start using it. There are two separate interfaces by which you can access the library: a C++ interface and a C interface using flat functions. While the former is easier to handle, the latter also forms a point where other programming languages can connect to. Upto the moment, though, there are no bindings for any other language provided. Have a look at the @link usage Usage page @endlink for a detailed explanation and code examples. @@ -104,7 +104,7 @@ there are no bindings for any other language provided. Have a look at the @link @section main_data Data Structures When the importer successfully completed its job, the imported data is returned in an aiScene structure. This is the root -point from where you can access all the various data types that a scene/model file can possibly contain. The +point from where you can access all the various data types that a scene/model file can possibly contain. The @link data Data Structures page @endlink describes how to interpret this data. @section ext Extending the library @@ -118,7 +118,7 @@ See the @link extend Extending the library @endlink page for more information. @section main_support Support & Feedback -If you have any questions/comments/suggestions/bug reports you're welcome to post them in our +If you have any questions/comments/suggestions/bug reports you're welcome to post them in our
    forums. Alternatively there's a mailing list, assimp-discussions. @@ -146,18 +146,18 @@ project configs. For static linking, use release/debug. See the sections below o other build configs. If done correctly you should now be able to compile, link, run and use the application. If the linker complains about some integral functions being defined twice you propably have -mixed the runtimes. Recheck the project configuration (project properties -> C++ -> Code generation -> Runtime) if you use +mixed the runtimes. Recheck the project configuration (project properties -> C++ -> Code generation -> Runtime) if you use static runtimes (Multithreaded / Multithreaded Debug) or dynamic runtimes (Multithreaded DLL / Multithreaded Debug DLL). -Choose the assimp linker lib accordingly. +Choose the assimp linker lib accordingly.

    Please don't forget to also read the @ref assimp_stl section on MSVC and the STL. -@section assimp_stl Microsoft Compilers and the C++ Standard Library +@section assimp_stl Microsoft Compilers and the C++ Standard Library In VC8 and VC9 Microsoft introduced some Standard Library debugging features. A good example are improved iterator checks and various useful debug checks. The problem is the performance penalty that incurs with those extra checks. -Most of these security enhancements are active in release builds by default, rendering assimp several times +Most of these security enhancements are active in release builds by default, rendering assimp several times slower. However, it is possible to disable them by setting @code @@ -168,39 +168,39 @@ _SECURE_SCL=0 in the preprocessor options (or alternatively in the source code, just before the STL is included for the first time). assimp's vc8 and vc9 configs enable these flags by default. -If you're linking statically against assimp: Make sure your applications uses the same STl settings! -If you do not, there are two binary incompatible STL versions mangled together and you'll crash. +If you're linking statically against assimp: Make sure your applications uses the same STl settings! +If you do not, there are two binary incompatible STL versions mangled together and you'll crash. Alternatively you can disable the fast STL settings for assimp by removing the 'FastSTL' property sheet from the vc project file. If you're using assimp in a DLL/SO: It's ok. There's no STL used in the binary DLL/SO interface, so it doesn't care whether your application uses the same STL settings or not.

    -Another option is to build against a different STL implementation, for example STlport. There's a special +Another option is to build against a different STL implementation, for example STlport. There's a special @ref assimp_stlport section that has a description how to achieve this. @section install_own Building the library from scratch -To build the library on your own you first have to get hold of the dependencies. Fortunately, special attention was paid to -keep the list of dependencies short. Unfortunately, the only dependency is boost which -can be a bit painful to set up for certain development environments. Boost is a widely used collection of classes and -functions for various purposes. Chances are that it was already installed along with your compiler. If not, you have to install -it for yourself. Read the "Getting Started" section of the Boost documentation for how to setup boost. VisualStudio users +To build the library on your own you first have to get hold of the dependencies. Fortunately, special attention was paid to +keep the list of dependencies short. Unfortunately, the only dependency is boost which +can be a bit painful to set up for certain development environments. Boost is a widely used collection of classes and +functions for various purposes. Chances are that it was already installed along with your compiler. If not, you have to install +it for yourself. Read the "Getting Started" section of the Boost documentation for how to setup boost. VisualStudio users can use a comfortable installer from http://www.boost-consulting.com/products/free. Choose the appropriate version of boost for your runtime of choice. -If you don't want to use boost, you can build against our "Boost-Workaround". It consists of very small -implementations of the various boost utility classes used. However, you'll lose functionality (e.g. threading) by doing this. -So, if you can use boost, you should use boost. Otherwise, See the @link use_noboost NoBoost-Section @endlink +If you don't want to use boost, you can build against our "Boost-Workaround". It consists of very small +implementations of the various boost utility classes used. However, you'll lose functionality (e.g. threading) by doing this. +So, if you can use boost, you should use boost. Otherwise, See the @link use_noboost NoBoost-Section @endlink later on this page for the details of the workaround. Once boost is working, you have to set up a project for the assimp library in your favorite IDE. If you use VC2005 or -VC2008, you can simply load the solution or project files in the workspaces/ folder, otherwise you have to create a new +VC2008, you can simply load the solution or project files in the workspaces/ folder, otherwise you have to create a new package and add all the headers and source files from the include/ and code/ directories. Set the temporary output folder to obj/, for example, and redirect the output folder to bin/. Then build the library - it should compile and link fine. -The last step is to integrate the library into your project. This is basically the same task as described in the +The last step is to integrate the library into your project. This is basically the same task as described in the "Using the pre-built libraries" section above: add the include/ and bin/ directories to your IDE's paths so that the compiler can find the library files. Alternatively you can simply add the assimp project to your project's overall solution and build it inside your solution. @@ -221,7 +221,7 @@ The Boost-Workaround consists of dummy replacements for some boost utility templ These implementations are very limited and are not intended for use outside assimp. A compiler with full support for partial template specializations is required. To enable the workaround, put the following in -your compiler's list of predefined macros: +your compiler's list of predefined macros: @code #define ASSIMP_BUILD_BOOST_WORKAROUND @endcode @@ -240,7 +240,7 @@ for more details. assimp can be built as DLL. You just need to select a -dll config from the list of project configs and you're fine. -NOTE: Theoretically, assimp-dll can be used with multithreaded (non-dll) runtime libraries, +NOTE: Theoretically, assimp-dll can be used with multithreaded (non-dll) runtime libraries, as long as you don't utilize any non-public stuff from the code folder. However, if you happen to encounter *very* strange problems, try changing the runtime to Multithreaded (Debug) DLL. @@ -260,19 +260,19 @@ C++ Standard Library. */ -/** +/** @page usage Usage @section access_cpp Access by C++ class interface The assimp library can be accessed by both a class or flat function interface. The C++ class -interface is the preferred way of interaction: you create an instance of class Assimp::Importer, +interface is the preferred way of interaction: you create an instance of class Assimp::Importer, maybe adjust some settings of it and then call Assimp::Importer::ReadFile(). The class will -read the files and process its data, handing back the imported data as a pointer to an aiScene +read the files and process its data, handing back the imported data as a pointer to an aiScene to you. You can now extract the data you need from the file. The importer manages all the resources -for itsself. If the importer is destroyed, all the data that was created/read by it will be +for itsself. If the importer is destroyed, all the data that was created/read by it will be destroyed, too. So the easiest way to use the Importer is to create an instance locally, use its -results and then simply let it go out of scope. +results and then simply let it go out of scope. C++ example: @code @@ -286,14 +286,14 @@ bool DoTheImportThing( const std::string& pFile) Assimp::Importer importer; // And have it read the given file with some example postprocessing - // Usually - if speed is not the most important aspect for you - you'll + // Usually - if speed is not the most important aspect for you - you'll // propably to request more postprocessing than we do in this example. - const aiScene* scene = importer.ReadFile( pFile, - aiProcess_CalcTangentSpace | + const aiScene* scene = importer.ReadFile( pFile, + aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType); - + // If the import failed, report it if( !scene) { @@ -301,7 +301,7 @@ bool DoTheImportThing( const std::string& pFile) return false; } - // Now we can access the file's contents. + // Now we can access the file's contents. DoTheSceneProcessing( scene); // We're done. Everything will be cleaned up by the importer destructor @@ -312,9 +312,9 @@ bool DoTheImportThing( const std::string& pFile) What exactly is read from the files and how you interpret it is described at the @ref data page. @endlink The post processing steps that the assimp library can apply to the imported data are listed at #aiPostProcessSteps. See the @ref pp Post proccessing page for more details. -Note that the aiScene data structure returned is declared 'const'. Yes, you can get rid of -these 5 letters with a simple cast. Yes, you may do that. No, it's not recommended (and it's -suicide in DLL builds if you try to use new or delete on any of the arrays in the scene). +Note that the aiScene data structure returned is declared 'const'. Yes, you can get rid of +these 5 letters with a simple cast. Yes, you may do that. No, it's not recommended (and it's +suicide in DLL builds if you try to use new or delete on any of the arrays in the scene). @section access_c Access by plain-c function interface @@ -336,8 +336,8 @@ bool DoTheImportThing( const char* pFile) // Start the import on the given file with some example postprocessing // Usually - if speed is not the most important aspect for you - you'll t // probably to request more postprocessing than we do in this example. - const aiScene* scene = aiImportFile( pFile, - aiProcess_CalcTangentSpace | + const aiScene* scene = aiImportFile( pFile, + aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType); @@ -363,7 +363,7 @@ bool DoTheImportThing( const char* pFile) The assimp library needs to access files internally. This of course applies to the file you want to read, but also to additional files in the same folder for certain file formats. By default, standard C/C++ IO logic is used to access these files. If your application works in a special -environment where custom logic is needed to access the specified files, you have to supply +environment where custom logic is needed to access the specified files, you have to supply custom implementations of IOStream and IOSystem. A shortened example might look like this: @code @@ -397,25 +397,25 @@ class MyIOSystem : public Assimp::IOSystem // Check whether a specific file exists bool Exists( const std::string& pFile) const { - .. + .. } // Get the path delimiter character we'd like to see - char GetOsSeparator() const { - return '/'; + char GetOsSeparator() const { + return '/'; } // ... and finally a method to open a custom stream IOStream* Open( const std::string& pFile, const std::string& pMode) { - return new MyIOStream( ... ); + return new MyIOStream( ... ); } void Close( IOStream* pFile) { delete pFile; } }; @endcode -Now that your IO system is implemented, supply an instance of it to the Importer object by calling -Assimp::Importer::SetIOHandler(). +Now that your IO system is implemented, supply an instance of it to the Importer object by calling +Assimp::Importer::SetIOHandler(). @code void DoTheImportThing( const std::string& pFile) @@ -441,18 +441,18 @@ surely enough for almost any purpose. The process is simple:

    f&$*d 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

  20. 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�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 z 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

mSO2!&eoXblG}=Luq`kfk!zL*P37HdhbB6 z2y41{Ns1PQNbu9|5F*X6uWam2(N`Jb{%Nx$wYhER4;o6kwPNR5u|X%sjqO2F59;*k zNl7&Be8`k%8kTK_VvLO3DRK0Q%MA;fO^M_8ANB%Hb>CLqC2=l4o(Ut_ZGnJO68YaF zP6B>doS}DjOInm#c5tTBdf({iSVr+VYJljPy%Og|$vZpS!h{=Dy})~_0C^1y!sTT9 zeu+b6bel1jtv4|v@6v|(&uQlg2ZkRIKr|R~8+q3n!oC0f!oT$TennAUX)a2f)onEJ z3#7=6GjEMbx*fpAiey&$R|0JgJesnJlDIvJ{oY5f?`m_mf>$LDJ?;%W9Gz^ur{<$& zsM-Q@fzgudw}~P(X5BRjLF;Hl`RN6OHc#SFd+SWWP$+gC!pxjECC+R1po*LxN9!E4 zM=srxRA?Cgjkt@yZm0e=8zxjv**8gV3!E8UKtf)0hyfjLu53Z?Wr-EWRlX~6=zZ(* zXJ+RGZRvmBmp2ExB47j3XSpv)T_$6Q^buw90u8Q`LVKcoc#j7Xhes*9kC_+5<3_FX z?I?*)LS=>!hShr%#5w&I)#KBn_%laR0M&T06;CA4gCs&fvoFLEs0D(beUrI7|~9A{Xu3b=;KV*dP5;^4h^@}z=cRDR|{y608*0@z&v{_t4>oqm+p zX4{6C7oY3&w2I`!yzLE?06(BL*y*-8y6Dw;;(98?8LQHL{Q zJDkgedUOF)Ug3IsXIhDK!cFa{%?=~+Qr4xKmtJ3S(GLN>M+-k zoqUV1i|`zE?t4LMH^MUD5nZ%SMN#SPOv*hdrhvpbjO07g zuM+LSG{vf=UJ9m7R$}FD7S?b!EE97G(MfXPZk71_fo|w53Z|_qCQ02$;^v*ENJc;J zsucelKItfS9hcEBB?OKNsu`Ia(6Y>2kT|WZrwtQnwLzmqNfI|>FOkl8*009?VC&Yh zsKJKCc9@X8$?NRV_g?-bca#g0QLB3wwn`j)_^4~F=M$}9#<)H0sA4bWN^z-NZ<9DY zL3#YO6ree*(Ud^|s(F%5hXf+E-|J@{DdJj@$V+bn<97?CbImC!U3f6zkduX}4bv|0*#r7-P!1qs7@2CmC`W|I@TndfPY-E-ZbyN|Mx#CsJNC zh$izU?*5)R!As5h%90dieqFpY7;WBxH;$AZfSGJp%#%LR0*6N5Ru}h|&=3PV)xIi& zfiasXIHVw5F00dtf`0mm)4^Q0)r?;ji1!8@6?ZgJWa!ycty44QuZt)eSPkS~Q(F#! zUI(bmq#uIRs&nkTqJHpHb?oPkkvO*%UM&7-Lz2JdvFAole7>3hu)3}Udi`cZ?CJ+3 z$sd{XpW=5h;CkiItkF>7d_IGfX9)J7a!yY^Y?_@0UpPcjWlb6jAiQ7Rkczj&@Ab9H zTf2**j^Ov0rjiuiH4E=%OQadgN1f~|NWt$yEhMQK_BqdEpwq#ezFHd;Aq#7*oDPRu zNt}(=iK!t{blq1Ky+cW#YW#)Kui?;&#vIA`Msr(s=TN~$!J~3;TS<$43n&V&XEE*d z+aqSppMtG)_@`3jqVQ^ov%1moF~q7xpz!=;9qs7=?4%eR8`nx8 zlEuy3h#)8JtcD*iECBATvS%NzmpC+u_4%0ACC+Sq;J>&D9L-6xXJEGF#!V9FcX|x` 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 ML}6F1;)W6Se~iZn!~g&Q delta 873082 zcmd42RajhW)-?)MP`F#+g}Zxj2*D+|1$Xx#fx?1@P(Yv{KyU~eT!Onxkl-315Hvt= zIZ68K-o1D4=kN3V&$&2v+`wAA^Ic<(F~^uy4GOnoG6WjRKqNv01O!wB7FixSWL?^* zLHIx*1{IW$?Y<-imtkrku7|pKJ@m09vWw{<>}ly^0t&RHt1knTZXQcC&uJ|-D?ah3 z;=X;7M}Wu>qk|$E7RHFwC=Q7pt=)`_UQp5GBlads(zP^t5^H#UxZE6Ybl+%1Tyd8t zx-WJlz8@qx-gb0)c+*lkI%bkk_axJ`igdW1>1{nUEAAc#yYf zWBrt)R9k{StUBOQ|EBc5=r&&7mpvM^mV<3Z@D`WIl_%l&a$$Jy~TYU zbNsw_YWr&}(KmGLpbid%=T-A|=mi*3iL}dKVVO~5D(NhX8~mZ*&abU-={ooXPEI`8kDD-y``HgNqGm3{J~d#b?&^W3Sabp zxskYxtI|S=)Z;nCek*3YFu_Cn{l|bBa)^6!_~T&BUflX#sWzD&wD)&q1(iGP+#f|J z;uXtYz}63R$t2Ny!AwOs5P>#2%_F4nkJAY83W31t0XHDKsx)0$YF9m2iA&}+@;!wd z)b;s2$1dH_1P9*z%a;iz_I&BG)~~OwTc{Wos(M;x7Glb2diNIaiJ}`qq}Eh;2(G=a z3`k6i-lPI7oPpI^2+)NgzDs{QZvvh<;%?!1(G@t)hBW0i3KC4Qlx$!2{;4IO>~Q3--}{*_j*zA7b1i4V6&a$DdO>zKTON6GRM(X6=_oj#GP0@bX6y9)$BWM|&mK=+Gf1Nt` zdEcUDX1{i^`jwhzTCd%YWfAgAy-4{q(agnt?ASpki=)>)OtPwSB&$+-_o#I>`)aYv z+s&JY-_H~((W*SBNI#EH==^|aXh}-NQh1_Emh#GvDnkz|TwC8tj7~$RdmVJBUQY#{ z`9xN<@NbfoG>N-#Igog#lIbGpXsm~M~ zyFgOYXCBfU>gtCYZ6O;_tcm)Zn$x{KkJ&e5x5w;OevcJa*fn$1;Z28L$!fWJjO;Wg5$_BaceNSj?T*h2!^? zJnJ{`IPX(GlBJ+CaR-gX(p@f99m2gusY-P;BD*!u=XR@^0byS2V^f)qPxe}$Lf`fx z`wJDI-`{oZ*0$681#*eT^5<_(u-+^Yb9}hdn^3on#f~u6Ul65L~P&+BkS2jQEXxSo1^X7 z_|8wNEGFJ(RQ}NEI7F9B)2lFybIRsI(vb|6Eo0+S=8-2ItKoyAO!s=$_Nz?SEZWZ% z!}_k_=-2+Mw48DcuiQJ&HZqSjmSU%|PaDnKRRW2cjk9lYrYGCp&Gc3>Ub8Pxv_#*_ zpZar7=qPfg-h9U^`Cc9IwmqLmRWUm*xE<|{>8a!%{)<&8@fBm{3MOB!|89(7c@fvq zD7N4j;#ufN4@<`6=C5UaZOjth!tT}SkJ6BmeTAX}lUMt@M`j+m8aktie|?V9bT2ml zE!2;ajbF=gm_=)uLGA~E=$R84#>A(4N10efz_Fl))t) z{F)*#-x=$bO5ArrwXC&ykv#->9_I9^eS*#ROz*ctLVOV!c@KzxW;(~}#>d701cXl@ z1O)V-{D<3@Ux?ev(vn|bS$jEVN(xH&&O!RQf%G?%Mu;Pfh)`wHnFP+^U`(iO=Wfka zqQN|6HAy*0&8PT0ukws%Iv^{r)vL1?e!PH@)xoD&s7eq^5=w&oBE#w=^E8uB#Pb{n z$J7hE7V!sntPYz8uw0qFAk4C$s(hNfeA}heM33ypLFNp)(yYyo(=DvZjc3p){|Z;U z$cu$#I3Ugh1qJa(1m)bec&LHzw2)<_KXD$T&-D@i*E#uzVNH~nA)=Y5+E7$CB5y1A zt<~MEhpmND8ZTW{OC4UqS>T#irwO3eT}8kB^~Bsj+v~4AR<0R~)L(t=+OiH6i=Uyc zf|^0X!P;+(u}KiKB-+y6L0h3bbq6<7Hm3`gm1uK&7fEpoyN~sQ-CKPeP;b60MjqkN zY^%GOpghPQzaZI1?{IT}?>EPwX~sc-S0~OO_&S5zy%Fn355cI5M(kXqE{Y+ugj9n# zFk~cZw32jEtSON)9PIC=;p&UZ53~?;Fu>pv>i)x0J;g9oIf8U7%T+>~3Moi`abZ=^m`k z4F9&J(nqjflXMaNgr>Wm%Wuz`TDE>o#-?l5=h&@KcSPlOGMO~#(PMnMix@_Kknhao zMN(QxdfPZVm8Uqp*z}YWOL2ENq210EOEHtyNi;>`!lIeJ8iz>j3x}&Otaebq4Y(g(HsL^a>yRYL<`bhg>ufK8wGu0Hz!N5 zOXNQ;BI{4e-K28w3D3&HW`(G$K0Q_~)8^*Y=H{;E6>Q+G)!^pk=3lq43Pun~DWHIh znFDy?&)v^o`3JNK8J*wVn6^VrW$uDvi#D^d z5z&4T`y?akZ+7r7Y-AR(|9A|y&YvEWC`HyYI~6-Ps;)T7^7{MplNiOJ4->=cLl$5W zc)~myp~e^zPb^-{rw}ZSQ8LIVcF!@`rLtdJp#?lb2KyAE;fTc|K)8*9%Z)|>;O5uj=C0-C|9NCT&+dQDi$UO7 zkRk+YV{f;2bGs;in{aP?>nj6MQBR|YTn~Z{dB3RNwFpSA&#Iu182qh(L5CYtIXgW+ z+o&u%Juf>w3%jQY{i8KYFZx-{1N+Mk&8QHXL@Wzp0>V5XdG_1KkWq{tC~I4>+-@;T zP=|25keQj?&m&NK3m%ctu;4{8e1n*85Il#-?2e!)z^4(SBiNj0DtohXo(0Fbc2ad~ zsg50We?1T$CRKATsl&GVfDk3UEuqWS07dPA)D&5XS6immSda|7dNqW4^G-79Kx&^3 zW$QjQf7P8!^&U4YgWoJaY&I3qRP&ogp~vHMMCBzgsL8Maq$Qd zZMz4-EQ3=qq5=t&HDh@RJTWoX{iUvT5 zXw27hj%m>ubs*4dkK?EdekPEpO&6`rpAgeK4Yd=-m&DV!KEJ)$D?VM5tJtHNtgh^q z!MNIMsLr7^S$D=UQpV10Or(1sqMWJ3A0+qTQL5q4gN>oiOlpZp$@a9{YgrSpvo>ly8a5L%>+roc*DLOO%ze;)6gAo%?!S?fbaL$w1*Yy%*%~gN4?F>PmC)lUo)MTmrLs9no^C(1|9+KL{(+W z!X&Y|Q8ymRAt^7|2iw*7K8lU99Dnkf3L7dPP^Ns}<23r+Yq(-|(J5Z|Aj{v8&s72S zHOP{QA+o9Qvky#2iR{hdK>}yT0E;yKR#l;@a|~%xSts(UK9~(7p(Kuldez)4lmH+} zCqh*r+Sqq6HfR3?Bk#U-)T1SL))__l!1`h31R;Z$V~GdPQqVo{`TS<8d(Fe1fF*Q3 z)PR*l{INmnRzhwn*`Q~BPIGMzy_w#pzMK!{6HZrlAh~-qcUYQUgo#A&DzEy~BKe|c zJYT0C$!r$kIB6BNsN>cR*Q`%an*tNT+$Dcfn1l=9$VAua6ywi$mCUfQP>YCwpoH{K zdcniXW0TZx5B^V>ul@_nhhQL+z@d7WxbQJubmAm2hhSz4TLJwSH+%j!X)nFGMJn~1 z)VA*TxV|04J6BXoX6f4EpohxRCJP=WZ8{YEM#(G50&94!AK-7g%3mKxa|I-ZqXuG= z!N;Eg2pXjQ0a=KszdBP*09Y3ukB`b~^s{CB18McR`RjNAv_ND!pezCB6A)_Z4`<|b zb{OdUkFzt+Q!P!;m>-!hjPH!kWHs58lwvit03P_KnqR~{38u7UhXMFWHCkF5aVqR* zi5{A#n&1c=IF>C68LKWkCME?Y>@vKUhYr6Uv1AZ|*H_w!Ndu{n7 zhoM`98I0*b)pv;AJg9s$#TK?mS7qjsKyY^`p15zq6+}?K9PLeeRvJww(zAnyhjT`5 z!RkN-o8YbU?_%%kUKXPGKvuB_J_9E+q@1$S^>g7UnCPj3(hyKD4-W1PV@f`;HRJXU zDHt5$y(`6_{ckWyCcS~1eJT1+oFs)5l^WHJ|4hGHUr`!tba z?wa|Wbx;f{2N1+Z6Gb}gM>C1+w~JXQ#X}ByT=Jxcl>HFTXT6J2iZ9p?%z|wBSga@i zZh&!h`vR%2pVSBx!AgQl{g=Mk#8~1r`12lWAR{24{ieC*ynF%zynM@Aolu8GDconX z5rr;VGOkTXPmL8i@n0{})AM_yiwK(~Nny8vmwq@*vzO85B|E*C;>_Vv&XC zbBrn;?HX`!Oi#Te;}Nhd#PkPe(Nd+Tk>q1Eei>Cv>SAwZUhUMEZg~t9V}lLPpWck$ z9`N;jh-6KFHj7iYq|+%m?8<3Gg7UuUJRJ5_|1#>zsC@CnejjNX#qwAt{r&vwj=boo zng}6!$%(fPQA|0ToQ;LWxze@Q6e0kwT;H6S%|r<*xs{(V2aEL0W5@%1Shaky7{!Mt z;(^4D$It4r3d2fK*%Z;kd4kJ>x?!F4B2a))eJjRtbC+ndP4h@(te~~tDTtZC7->ff-OrE9# zPQ!&s33cfFfKF?IPAg4FsA5+Ni6N6qK<7XgKhuOcSI@ju)vP8jXt>2{y`gT|eJcGB zeUIQeR@nTu9z7JLGo+tBN$BW6Md93`F7I3POuhuRXd$_ubE%qfUX19IVmm^m^wPcb zm$^?_31|EG-jjRIr+*T&@^dx7;&Ma#5~p;hp9`H{`#Q(4UJNnjcX*l}eiL40s98H_ z9el5os@lC7G5AXI1bT1nq(Y}nb?9JCcx{Ox+yG-jWICh8wLyNqhDCxKG+(KX8)e#j$_>4>8`)(ro}gLWC}6IPG)!tdHtGS7#p21Ao{^ zN{&JgO-#3*OMm4=HtNpu6JG+27Sn_?X1k(Pz-i(Uop3OQ`>8&GM679TMIjs%JPG{l zB`-M#K<=b&-|+Q>tchTnM>LW7L>BTB{33au=?0ZOAgV51B%_og@1f_EtJ53U7#u5% zYCUeL5^ao*n5oB}-@2b4;+kT<^N7(}|!GOf_p9Hx2 ze?x#lq5=MWjU)`)3@Q2lV8HT!Fkqt;Kz_88uae#)NoGRZ2R`tzc@`WeMmG z`3gC9P{EX7sn*UDK@vY6qrlK05_)}fb!(I95&Ho*g36R* ztL?inZSEh-E~H^f5OVfZNYf5JtCd0zs&Y|02GH zPf<4!Alq`$Dyu#Cm4cMn%s9BE^j`^g3#7pCdULC1gH2*=E}x}v+iE_;;>*Bu@D+yHpllp>2gFP&c#2AVNeiB%uoIh*0+}sw zJ0YP5najMl0tFnyG2&6kptdqKC~3}{TU|YFjccIl%&KARVVOMR32NLSf zjvGw0Cq?-_F+(dKo|u-RYlx{g4vcH5v3;>`4$hY+VeZ42N_v|Pw><^o!6~(niGYx! zukhG9TwZ#GZ=J;N5lLSRd<#jIcjpnD`Afe9&6ZlgiH}hKhBxv5g{GMup??33vSwW> zvE=YLou8%|zos%`$XakCVJvYpus*T&eJ-mug>>BeX<5#n%(c};&k#D$>=V^^$>WRY z5*WO4jU+}e;_qzxrAG!e8psxB^Za!2VZ^t8Eb{a;K9BGD5N+ZZr6dNybCtk=$J^&_ zW*3q2H<9vpA>#Wu*!3I}mPHqVd!+t#KFf;Wn>Vr0!QIQ6>UH{I2BOKW8u0zYx{9;> z9CiaG*MM-tgZC{pRAfa0bU6>40|aJ$ehcm&SjvV5`}CdYKPs|Pn~If?a@XYP1#n%U zTejOBNVn>tXd(9P2z~mjOu}K`P3EFV_R0|Z={>nWJAwA<0;r`pXL0Dwwxabx;w!&^ zR>FH|y?8tDplYJg=k1a%igJP_n@p$j8tE2)~s~Wkvj}R zx*EJQC_!Uza zJc~j2!EoiPueyb0*Il;KuxJ72s-0HTKLfbBL$$0OyptQ91gic^j%JxXHeyxS?+o3c zCDLA6=4T-eBf|(qN7MC)l7XoB*d`_1^^Z8ch5Y0PKMtQCf2JT}4?-KKxI#lH1T8a!%U4RBo@2`W0x4K%}iA3v|%K*z=ZvFG!GZ^?{LtwZ_KRY&bo!}5Y~TqviiX za5!@u-Bux!g@-CV3| z`m&TYyQlXqIIh#AU38^{f>Ig7&ZL||py2N6?k-*)_mo7~HT1!9ZWXZ^WaqCBmN<{X zpHq;ta#oKHqtolbZkUX4QATkGyEzaTi6m=f^Irqf@FLBXC&ZfG)XOKjb{|&L;;cRK zZ1i=bf$DwtCR*}H>y)*Sy)ilZ@*sG4gL#o0L|g9mU(ut`iy4VfS1t>MWZW9!Hkjkj$)TA#a}MkBjQF$ zTI=MchkJXA9#j+Eul!A>jEPZJ&`6oIS6_*t(4%k<1Ib;t*Ju^WrK-p}XoWk}wZ^i8 ziVXe9k|)&n)sz*GvxIXG)vKs_bhmdjoB+xFR zBT^Cd1sX#6ZN(K&lbRq8h?}mm8NjkJh!@Et+l2!h6R6CDtU`u5!?oYL3)d`l`Lzp# zd_OR?ERqs(j&e}WhBteQV)KsnAvnE08Zk7 zHehj)JFVmYr#Q z@73F40 zbR3hLnA@UH+jIxNze`;Mb$ufbH#D9@vIAAJglkXnm?39tlA515!*lq6VCb*u_zk$t zWDtmeuz~r{QuEtb^Ye<>a4+jVv!l={)ml@V7h+Ne5AwoauAW}n@dPcEtu$x!ToaqPJQE~(9H!zA6<$1 zT3b5Y|7btcYrqFeM1(&2vRnN5cE;&X&nw_aWn-=LF3-}!@KYrZbzEx!>U?0~##%1Z|9i^3d7hb#q=o5XUPZ`nz(K6psUfI7Q??ER4mG*H4jT zC9SkLD8nV8$qd9dcQxa3{f{o>4Kj)xXDzc{oWjz(Ej?Y^_xnZVtY3bq^YgWh*C;bf zc5tkG0g$GN%5Dd?x~=%UGkxnO5#M^qT^1|Pn9uPnmeb^xO-%DpT%v2EjFUs5AArHR za`Bb3b*n$U@Vn_2Q|U~1z->1x;m1;qd3dlda;H8HG}QAbm#?;7GN?N9qJC7^)W!5o z{ksN+K8DlM7sUEudBdD07niw6TaWtNd$x`4eATPp2DUW&c6~q#eoVm%2z5+CUE4#V zXqdP}sXy(lJP|^5IcCxZ^t?ax5v8&(hyH`BHcK zvE^z1BJ{PC{vCEW37$4BDt0+THWY0}ZOG--OdA_d`{6}<6ZG2;%A3Gd(Wf!CQ;pB3 zykC6_^jc9W5Q^vcl+jh4yLIxeRFcJJ1a;S{k8}ptU7{R!^u$S2M6r$<`?0wFaYC|F zy?l8qa1ARzcNIL*|SwujJn= znu$lmcovf6FEf>46&ZcAOE1Ne9bGtve07tTC0B{X4I>ttS9qy2sVc{K@`Tk;m}t+5 z?@KLIsTQQXmI560UmQJMc=9sPM#~^9$g=w(H>bQM=ekf#uQ^@dOhV0APgZv7qnN3y zO(W@^_|g^C*vAXcQ|hr#BZc|mldsMpwiQJo=aYmvk_ip*mkWh09l4`XB*LCJOK&d; z1$ni4T9UY`+W(?k2u06`QVxF(`mX*p=o1#=5fb5scXnbCLI2|U)$j`F{uASWTZ@18 z{M^UJ2NhKmktY2Hqpgb(uSAk}ul)R3qKh%R!8?pBJH%`|+sv4-J6jf{6d6oR>NFY~ z9vPlTm53$tfP8}xVPO#g9B>ZSdFoIUNtgkESD21W!4p{J>frvQ1*)m*;DJ`q*L@2B zY)i4J1oNZdit=P%TLFu~CMMo6Cv#&ke(bVvx!`!VbRL4<#eUE!%1>T_LEnCP;w zuEgn$#LKm%+uOufBQ0K)5<1!3T)3sdXGFI2g$N8D=KcmS?ud=VliQ7vH`9b(y_g!k z4jRgxF~fYZno}{bjF%N;n?Y2tZ<`sktvyTmBhxMTsfLJlP~Qx3&pzS^Y4hkDE(Si1 z@>*e{XQt~&h|Q+~PWy)@AFWVo#&NfaU~LkSJ+$n^3!U5}GK6u(O=-QoY1UxD z-2RW0{DsJ7WXdu4r!g4#v6Ywj=_ZztSn5I&aH2@Z8-)o&_D>p^uP#PfrZ+4$?Sgl- z-H?huBUK}rLrd0)ty8ou9D*A$85D!RfZrp+Er>vNRw0C6N$45BaD)F+_wRo5=H)-j ze)KP&f!{`mo133ka9L|qsapzHt4 zp;95FUePDksycEpAhH>SK7D>6P06mRoSs@!d8fP8{0-$efOF_-QYXr3{>(V3KASdp zk!TyVhQSTo{)`#4Xa6vA#`+2QlgOu5vMw6`Vf@XbvsI`)N-Xs4IS=uyk^<%eo`=#7 z6RzI^s6Fvht(w|9pN~DvpLe65`}-OSQT4x>mPi@TQ>WPm8G_^6;>W)qg6{6@`Ol56 zwNnDVIrQzl+!}ATEE9>hRJB|~noZwf!V`%EMJQ8h0QfZNGY%-67B;2dRKC73=rK&i zUGfh#Fe}c_4`+myUL*uo2F5%DaEZ`-V4`p-)=Xi>jRDC^wbX1qz*_K&*K{x&UtHS(z>yYso9MTO)3vylsM zTbK(ATf!4)kcj?j;@9xj|9Lv`=MS342kkYBA_phWG@lxa4csglgM#4fl!x05VblWI z!iL>v4q;{lpafSP^;K~+D;Zrfwth*!N%KFxS2$8*bHvQB|_g5pj(7S-!U0JDiqbeowQAdNU8 z$fpQ7>yzUMp1vPm1#E5KVl5llZ#WEG?0-Qtj^H!rSt?sEY%R~;!(PlsHYXpO&TvP) z8n0t_RMx@Mf4o!ht6X)m{lV(_sJ_Mb97CwwY~B{h@sW$RU9n@J`R%K zS!wgE5en(K9%m6w#Lr2QQVq~~=yNe-@pQk7WiAL)mGVzhA{MI)-jv!$?m)eB6Q{P- zwCdzvnm{mpBxLwuKPrPz5?A5twp6#R6h|V01r>erzLXp^VO5>NaM1mBqVxFZhORBk z&9KvbN%3gT9H_AaF*gE7SS>}|v9t`4Lwp40xQy~GD!2591yeIRZb3;nTDm*wfL`gR z-D_M8k)1}^86^U@yGW@F1Xdm|qGPsS)iL34 ze0o!Po2}G^BI7%;9;14TQ_k!g6A2N-*QV0>mqb1I?U)~kJC{+c$cMqbUCXn!8s;Y@ zHdV@1Mq9L@-yJc$Oi?uOxL~d*R(rfs4t&2AKugb(w!RIXSukPy5(G%(MP#fwg|F!T{@Pn6_R4V+GKtyJ7pTxIRSn^YJn)#Fb z;$0g+I&s?mNYBQ+`1p{7cY47$l?pI=5?Egz8a|6AiXx(j*d*Own#4nt&6hF|q{S?c{)21$7ifz96)$2_wE-)_5g8E)pgZAD*y;X}vjIa!ffkY5LmRDoP)i=-WNdC*d>T0NDoxq-H|QuxsfM6lxHv(5E@UX5q|_Iy%-6 zdaxi1h@qs|+~$qMR-8Tiq%R{PEQmk`` zc%KxW8l-+)mHpGO^2kd^+%PhB)E+63u**dB?#tVa%iGYNF5gOTe~t1#9NY(VnYz$@ zq@m>0cu6p#G zoM_4cSZF4hn6JCSy8_#r;2o@rBge!I22x;blt-8^v3c$fg$EfvwdFTQdu;8X-qf zF!YOUx1Df>YLnBOJ!(rX{%|%iHQ3Rlr{A2<%gztaF4a|C9X?KbRqTqBe_{GObzgkH z!*#GM*fG!AL8j7XYZKBJ&~w|<7;R!LE;KPrpMP(S4Pj+W-NBQnkSq4**8=KjSyV|; ze&IXoo&JRBJw)xMH4R(XLf9SVo_7zhk%t;ns+^4{l}M5WvBgE)Fl;hojXh92 zv^6saQ3Z)BeQl6zn|=+mb3|T4KBu<42YvB8%asMl;zqKD#66~8Ie1gA07v-}(Yl%4 z>@Mqepk$+EBw$St86JqfKb4|h7F^JowkgJQDPUuSzSJXWXc*4-$s}TysHrzl_GiNO zo5w~`zn|yY@6h7mAOe}cd@T*U|8LTGQ8-xceEgmsGrv-K@B}Ihh^#CYK@a;A<|n@_o)8TY z+20cuhWzMGcAo!r3=e3ACILUrz;^s?TsiIISi*UqqW=wg@c-dA{thU%p<%MXos%(e z;I&WDjSx@ZxSHtifBzABr=nNzP|?4GpueOXlO}*<@XJX|aKpVQ8rMIPD6O{!18}Tq z+`sY81pnYY|2^~f+w%Ok$e;SZ8D|=rh1uyQ8AaLY#sES^Ma}HUf9f0QecYPVY%t|d zk_2B>#UzDx?gP@OLHYB+!a{YzbSuG{Nz(M}brz{E3LI0?KmD+4Ovosp2U`ksFYA5dp=AeGAVFI^K22M8=)^%+Q4-f(0xserD)^8t^@3KIP^j zT05-gd_3LRzFjYWAxIL}^C2`Uv&FUzhraFVT@!TK8v=T{{_~FdV0!BA1Lo77lA5oc z+E!CW1#V_9Ny2VYq?UiD1QEz)Uuj$*E_>l_N*onQb{<+TJ{qpFND84F;G}no4_CxT z>Hi)A6*W85N;PtQ;6cNW$SoZjr(UYE5?^G}&0$GKG;$7ciL(vO=leMdLs9SqR0X;S zSVWtcSh%pVn_Y#Zl14QJ&k0r0*D>?)^mpJ^pyZqW0jS`LIFxTk|M2DD&rX5lzuY*y z|C^NH!kyuHR;jOYf}jIc*LTSoKh714z8we=eqKzU=D+OIEyGK*b7#Ce&AcdRs+T%NCZ)k{ z09Ip#@H655;i|F|gcuIs^uR+Xun8#TOa9I9{t?PE|2HA@zm3h_7!HB=v0_r8A!0#+F9H}3Jo)yL6 zoXQy#!SVvN_mz~KB)REPItf>`W9Q`QO^8$TT^7y)aQP0qAGT>KJ=;!cKII78Sz;?qbR7g7U`y0@&{4?k$iTPI| zUMC&+kN*x0F3Ef{h3C`#-NEtxxx{ek4pe@)q%JB^gAhG-1R~O}D+1SI|DWtqj{GPX z4$t*LVUhcf!>s!Q^ndl8Ka1V(nCLMqYHFj(s$5F!18%<#bC{jg0{#?)P6UspM#l$+ zS%|=0RuXUu8YB;e&O8T) zmA#Tf2Y+uz$3V-eLl4E!9J!mWh6d7Ja;vCPBIAmRX_NAnvUP_h&8#%3DkulBgeq4s zPP=n6o!F4^jD0|bGV^Y2lU3;StdkP>`e^iKS$8K;ImSrQY#U;(L*z#k$_GIe^gR$uVECIC+5`-;UnNu8>G#t9g zD;%JR-xBEI(CZZS_TB)!97;G=0iAq$-)mlFeqw*$pB`pMoz&FY_q}F3Z12cay?w{k zDhDyp1mTKjGaZ*J1d3#bmg}t8vooX)EW|JSpz~x?M2dyJ^qEZ465bOH1sd7UKy~+_ z9br<2&9BTZEVMYj9sbfKaCaZl-fngg7c+uSTPhCSnd%W9-hT7ks8Af*yu6m#J+_pY zR##H+vtB2LX_hRJKsb^}SD|zT46TB2by&N_v8wXjZG8A6h~^djz`XUldeGBPcI))d zws%%jMoGgKw(wVE3MMTT-aO5*Mtui9e~&xcT?RSaA4`t1!3@0_V0eScMjs&IerRw> z@+YzelB;W_&sKrIw?|_B?mt0e12>3~7lV7mAb8(I4Fn3b zK_y2@4fzbOs1WaH+?)$aYHC5zzn6bxmkx)9VpBoIg|D~o7F|cZ5G+uPWHZHUx}n@g zzhe4@j>Y)8QlejAftIPGpyxWkC}b63Y=|KL`o28<8&CiYd?evbmuk3q>=-04SQ|-@ zi``9}hbGk?vhm|0m%&K-`(3>xHN{bYGG9Gn?*-RcY6DIz2lF}zoxB0nbI--N9;^%q zlZWKY^_z%kSuG+V7T<}_t{k9z;>a@o^&44UP7T0aYou>&=(R6#Mu}m<1IHvL)T1ZC zubvqwrPiks^5!mVXdHMV%%^n2jp%V15#PeGoRD%2pQnAiF?0CTb8y@^iTHsn?t2ry zHYy!ai`i6V6pwJ#=dNdYK`La2N+k5|G(!067ijqZ$lP4gP#VK;=rCCRrc!?fDEQAxF~YOjLHO_&^cYfD zxPgAU^Ysr8d+Qrg=kVGNTz}|4%H~7^DIdo)4@2OaxUQb5Ljl7n7F~Ja7YM@-3Md>? z-RFGEU+3jHOIAOe76(0?X#Kd+W1E@#a8}aLFkXrxzuE%5DNn; za!Xhr`Q^x!Ej!bFppD1NGQ7D2u?N6Nfr5L(%AJ5veAjgxK4}KU!T+*ak*Gv?0y!FDjyEt zkw>HcZB7mccoR?mPZ;@scJ6ouMa(VDg_gCXm6xOlgN#TV%8_@=;k;2ViB;y73G+3V ziNy5vOV`Y~jP{*)KZOj^Tj4XH(3pq^obE$++~boE?=wu$kxhMU`I}2Mn9n9c;xA54 zT8{!;W$Ll9B@PZ3#X0RW3{0S8k9{Kjtl&2JPnqiaKGxKmlqNkXzYod*d^!E-FaCgT z`Q2%88FH4YvFu~}K`M_;mJ}_3zcMhN=)5HS zUg;&l@T`l{RfbHdxh&@exg}8u3;Uaa#z(?qI;-y5)N77V;YKGclv0jqyX6=6tyic0 z@a?NLi@XfI!TAqZgogfrV~QIg9%$ru(p=Jso)mtwKC`Fkgw4);S%tKu0xh3NK5FvQ z7v*eFovLW*0Bf(2L~MefD$C*UL83r$>H@`FRD(^-`lrz!KwI6=Y zc-H|CALF;w;iz8Dq`|U5-!L=+Vz+`zv~+p15 zyfZvMj$K0SJ>-(~Mp1j0s4nibM_&b=1{T@7{o76i+OHhKan|+wYIva$4$J?yp#z=~ zEHdcCz+guQB7ZD$jCn9#jB~KVLK+zSdx;?YuS*1i%otYENWdPv?6W*uGqYD^@>-gw z2r(j*e9lo-I4NdTsjlJUx2+#IaBv+Z*n=lVgnEkN2~X3qw27dX@k+LR#l={~SyK0H_zf$bu|@AM~KN&Oc9KSB*2>n~nQbTC*39RS6_BWXn5b z@3v;7!y2*54M`gzOtr`0p9;mp*Yc67Cx(GiP%+P&q8a@CI^KsNb8=1N!+HUzgILU9%R78 z{AoqTC=!Gj*kadqAt`twR1v)8lY(bc0|?&fTb_n)}sSy@t%*6S`40KmWIYA+G3aw=P zo9o~BPBmj=tBOH?>3-f-{EkgOk@NoN80ps<2b9}a$jVxP&zyHzOH~#`5k?|y^4!$h{Q0W)s?K+t2go(fvZxPgt|KJG>xZkai|+GN z3>wr&{KwoiHRB_Ee8VQ&r)f*&8oFLi^?pq`q%t7`%#n)ditru}wqx^9qoLYzErnDx6$VUzT@`xpJhLi-;Gc)>yZD@boX2i&@qA@1ERAK>^TqHT7}s*G3`!4*>teF8@-Pf(!*>J3zsH z4&SQ`PtU9$ZyrHE+@PT4NwJRB*|*9=+{wLQ*fZNYW-Tk)<~j+KpYs z@v&ql4{$CA+&JPPUQxf!n&jB8p(+0@fG=uVqiQ#CmT`b{`!U$b8dr<5fE;Iud7hgr{o(j>$WcqKu{Hq%L`*iLKaI1C*WbjC5I( zLFwepLG8)6zKZlWttKb`29LjlNM<;I1|E`*{Wsi``!CAr)*8UlaFUK~{}0`{g_Z}_ zPKwxNdGa4hiRWKguD|p7y0$P*vy@Djsx%9$MNTJ4+aqfqUuH{?2ZW`qlg<`h}Lg#OTZ!Zs}`3ndbSp)D}fJ7 zXH>SO#P;=c^Qw+%<(g?DhG5W@!p0S0vC96(Kc+y95Pvy6&! zOSd)d?ry=|-607coZ#;6p2D5rDG2WF?(VL^Jy>wpa4XsSbno8X=Uf?=KQ#tlQH%jg z-ZkGjpCu0eb`I@rKiuEt{H=%2)eb;DemFYOfBV~WDgTR5@UN#-$6I#@c4y@TS!d;& z_^SlGcThmXGDIpQRE022#y>I^%)m`~kR{@OQXBEBQ|u&}W>czC?BqZ%{=daX7^ya4 zFa&N;6ax0LmR_H@sMOol02WP~v(xFo+UGl%iNN!-b|-0&KmYCPy*8-+Myn;feFcTa zH^!5ESrYBf&PME7-{pCAN~@uN6cUTIMKuXr>kgXtMdK-85)dE;KH+7b%0jgSo9~^z zsF)qEpB0sC7jalO3W470w1Qgn^vTFkpK;1pbeSZ`-)03^BmhSOFgSe*@AoBZ^zVDl zI)x19%5IJ!*cwD~-KafmMP)q|*#>jc-*@=|IjIXxEOz=N*5zv@wFQ*$f3opEoiz>0 zv-|DE3yh%nMjOpQseaFnihQjGkzoT&pl52 zzgMGe$Ixo=vhjdy127Z-qF+L@_M+b{E4gY7BsR9yIjN2Z`BAL-T7rZ*=RL8#+_`HD zv+WTQr@075!~32mcf`{rSj^5?o~4Of{dOTa+pr}5k3>ZSr^wdnLPIT3-mpJ%@keb% z-I&`ojVIC75#4eRN-nQVomPTu{OzKQ0)hfTT{D~J!g8r_?{vB- zFt!PSUfR%vza<&rk8P6bz!P)S|1_!o4~$Duj*OqrZ>CF!#tngNO)xa5;!9+|97;&6 zVjwqaG!YPq1{n_!TqF8Rm5t?aQi=yk>9OleE%OO)_Ea;YtTx{t= z77G)smEQAJO?#R}i19R3 zInOrHU{F;@5W5FuIr2vnQ9f9+3%))GIxO8uMx_zq02vY-V^8{fYa`C<%9>O3xRz6G z)A%@$^zc_91sZJlo?x`CAm8rTKg^uQ+&o4gleWo8(&Vq`z@YweoxC-J@`oETM0NRT zMrnd*oD~zYDJeq2vX4PYEyH%HNo&XP@>X7GPH5Fxn{-$*&dn5l zLQ@2U^3RUXNpb&_!a<$!ACxoeJi8(RT&1sNJv@wtQ>Mn(_}I3F?=WL#d4*>jiN7&!+CTtm9xIq{aisA>^Jn&fCM9{%2_D@3{aJ& z^rE7~)l(d$^rw~V6@tm2KNS$%$VmLg8cFJouwfgC$`|auvOUQcd{*6`3Hpw8B&t9#%@FIrWPq#Uy=j1v?pqt0bsMpM zgKQHgw85?S9{T}%E!g$z#V=uiDJffr)beCS^MTR9DC_zf&9=*V4^LOfq}DUZn2bF| z0l8&!pF88kz-_%uMjP^6Sc;Qd>6HA*Ru!JDuy9Q^oYQPv#W!5bM+xh$_5hOd%9s@M zhETbO6>Aflb=G_0m}&T{3mU9+&#O5fT!MG2FMN4S`aJC`?gB@(>|dh*Ul!h#oUvW? z0`dEx+;UFX2`3YR_sz;j7X>Eo?dCVhu4MNp%_^G9I)mxjgd_LGh;l9Y1`%dvl*Mol z*9f2FwlCXQA@h zkRptiL_U9Ok|JAEzbt~P+w?!HTUHNVAc+(_!M{s8?Ek9013`8LJfMRVd^{AnV%tU` zj5Pe8GV+Nc{2#cG_5#vQpz{DC{r{hqLp}@vq7V4j-fpn)5APV=fCrBVl!zQzW~~s! zY{976$v`wbcsw97Gc*FsaLkW8$R(i8AR_;7$;yhyfZYu^>l&KkiPgZA|uZ{Ez782if8w$Y$E~mvT%oK%7M~;rjqQWzj_8r5Hd~yi(M8d zBa`rHEN~}YKN~489#)ssOWR3*o~zrkR;A8Yr>H)|A5S+=fr6&x0KaYS z5F&6CGT#p(^DBXK&xlKVVRqb329l7LpD1f@#4#dgRAgh*J*{S)X-o=78wW^5xhu9H zIw6@^azY!Y1BW+m4+P6M0C%=&H$lF>3a%BCj7Mh!T7jIz3rmjYEA5XjTPz(*QoHmv z+FoHlSh)iYiwB6X)16~#-8AvzaN3eICTJd z{pFAjz^Gx73atg&;g&Q?X`PE4F2e%}_G6AQRN@_tQeAr35>LX6uU{WuB1BvFAS}sN zNQN3J|{|Y4{%av{F82*6*h+<9VMvsNWBSSxo|N7_M0QOLt9Y&j_8rJ!FwRnplpKtYbi9kr?{cN{AT0cf8C!PXuntb$z&h3g zpBO+Q$zu1STPkW4t{M<3wlH}WY#vbxg zm9>5HXiqc$bJ8v;zVsz^^~{a+#{P9~1^9g!0ZsAEHl71)L06>-4R$m!Y|1A`i4hq8 zT9i)r8$K?f8K<^SP)d4rcdyke9ea1eOwiO%ovHXI@ZptU{1#MGY%o&(;f!VwE_skz z2HT&ppk5MyNbV4Sgbj}0)vwlq!UkL*G4BsOkB`%YjfdBeZB1R)0#ghxWBKuuEP7Cm zEMciyEmwh-jdck1Tc!mq0#a-W$J(X5$ka7c_t^ymyAJ_E;T{&)7p`c1fm)~}bMsz` zK3QSgh)_!CZ?ChmVD(>Z_{R%u<-{&FKZF3xE?)qzcauIGy$djbH$PGr!)TqC72G*f z6qll<{oxVlcQm^hZ&W?MsCf#F)#PVHNPE(n_UE4-I(H?ojfP;zsK&Z9mJOi`5on#* z!-Fpq-hSg*;I>D8oA8XnjdLjaTG;$1O51!DV`tA;TH5F**K4{+T~e(9GA3F;X1RIB z8y;f7H?RSX*d9)Xh-tWhH*>+E8XS+!&;BIC?fB2U7RZE0Z7q+5DVEHldaoV=7#gWXe0HAv%r)OI%?`U03nm0tN>3w? z4C|Gg5{5OVHHX~JHXWylo$t)10VKG-J_?^Fiiyx$L3}vc%Y$KCw~CT!?HlevI-yRh z7@ImhIezJ!x5Gq|agLuQ79!?gOwzE%NxZw43Sn946}~+}cy2O{8=v@Q-?Xayz5loc zaG6Fg4B1IbQ>!u=$IX$i8&a@falH!jX;11HAiE?()(l2Mg5lzbAwCerX(gz7SykBD zdG@fn+*4ozP&$a{e6W_zs<)2>QCVgwBJY1L)iJkmJKiy1y5D@|U9au)x*4t;=}cLe z&7@}bw%V0#u$(9?Xj&Fu5jv`}{=P(DBI zzBRQ!`oq~5#tLB<79RzC!ebNRKHnWZHzJQj(i6Q0BkZ{i6zKx6b=a5SO&alD_z45k zCTJJ7gzUKeXhBPK=|t1YX#D`?YG%Ee#Ui{&s+(>!_78nc&aL3H?~GPid6EX;0PyIa z#a61w3X$JzW1uU=M(eQQOSaITONY-oK{wN)FM+@P?lHY6{mOzDby%YzetIPrF&~sH ziK4j@27Y*wE(Uq6uA~kf?OqnNje2|g2$!+CWU0_bi`bHZ+zyl9=Zr57ONdG3ubhA= z)t4G`Y@gb#fAoe1OOY}>(&<)1-poMAx{t4Q5upW>QnzM&swr8V0|#ZLommcKsbvx? ze#3#bQeiC^jElr+Gz#8=VA`DPiSHTOP^Tt}!5(+vprXB!dHU^PHlMacxofSo~rBSHVb9>HE{ENtW0Hq zo**49!eO@rBGU`fCxmWU-`ds$J3u@PdUqgXXB!Z>@g$JI!yy7-5h-MvrnqG&!RF6s z5M`u_VUV#?9o{P#pf0G#0~I z9+^V)*asZr-1H81RZCntlC`gUwAD9y+l@9<+DAvHcR;fTydHS^T2yJ_Vi=?mml22y zuj-d-blQGe^jP6QZmGW71$=LcohSWq^Kz;6vZnHk?qbY-wf&=X`tI8@jTQ$A%0e!| z8cT2M%Ju$!s^ZQabI^pJEx|Pd*%MeuAY^$MF@^32h?aQGHEM1YO*B3o8DE6WiMs9~Xz@8h(WQOB3+qG2K zUm$#g?12>08|N=G^#`P7=#6{Tecf-z-d1T+JV|McT9%0<_yGJuG7XI-(i?W@mCkP= zCzKLXl!e)N!HQX7LH3O4blA9i?{A1$;-FQ@IqQ|b?W#G~AhCYi4Lb0Hfrj?)FCeif1T4^S3*=4x^++)Woz@BTjQtR&U3F7{r8o+e``O3qthX2#)ShNG`*nvuXpFy&6EtKB6{p=?$A zc*!=`y3wuet?Fv6kDb1ol$SRf4|j0Hl9th+pVpWUtRj<1}#fyj}G5=RCA03%`c z37wFU6tUnJ0s-arX{*!vBiCZ3jV0aEEEnC%Pg+Y5qW}h(4L4+?>QAkA@wwAy29voH zRgi;aAF4>BV8#g1GmjPt+SJO7abHAag%eGvhrdw1hgp0>ApNTP3$GJMAnwjWQ5P_C zrm2~AfySHJtp`IiHH5s&O@avkD88p%U{~-__%N}(>Z!vku`L(o=ufgJ>(`&XBYr?+ z*48{lt1(IvWFM%z|Db^$@AOs=%;)*s% zAtp*LhVheJxNbw4#?=Mzp&O|TSV)dg>_-aNn!i#}RD`+`L;=+tG2N_dOPID9+sC{q ztV9*C2)*xv*t7K}C^H-~0ibX<9<(sGZubi9lSK~nKKo8bL2xKXy^+~-Ld8V#97VuT zE0AZJqpS2wOD2-7n!E0XfpGy$5VRG4h#Fou5i*xZ$h--Xdq0-?=QcyW`rVn!;_sDr zFf!V_hArzg2xj_>t=bu4aoS?PaFT6)4w{>9cMoEA>-eg{H5ZEnL~$&~mi^re#N;_l z@&}$Dzc*8#6aLf0zzG_jd*y5)!k~lHN96xnl}&g#xH!0hVl^;0QlOK^Ur1h{urJ#` z`ZNC_?90O^T*t@dN~Z)fB#gry#t`US|s^g;dt za=^2#dx^u`M&G1@N6_GTB(^(n7D@73lM?~RUNEAHwY)B`+lih>?SYs(O)~5Nt7=Sm zZ1^PrjFycJoQ(qwWa8$Vnn3}%zx!DH7ICF%INrSJZA%eBwfH#cxXS#^n~d%xwHFJZ z$z4boiA|)TgSsvf{>}L{wDJ3s`|#lM>zbDNYh*Kyg+}iupJaHOO9;YP0C~gQk_0QH z#A8s6Q?j?H9S4{ZIHh~w>Q%Ptk143$BsUV2Qxtv1x2WY7TW%(TU3+ls-aX{E*oxlA z{x-;A8{rNyQ`fpelkLY{ahvl7_G2Uf1UJ;D!Z!;;TfL~NZ6rq|)J5J#Pq@Tzw6YG2 zP8xzBrIo1JX`1agJAQ}eM5gLNMArHiWI#iDJvw>SfeuFPHG~QA4#mSmAqr^P%EUCg z_c(^ecp~GzS>)j43|y<#{!xoGBqXGGckRH+s$(87fITNtfml)y zSp@P!EPY0zIl6n*(`(J#l6mG^PDCT{&i}Y+ zDY+K#Ff;0w#R^dqE++xqbw2{A4qV(tK+0vWO6~g*gS8B?#zB~Du;}k2Kt`C1hR6FC zrsS8d=4|jmm_GbszUE>ogB$*-bG6@biD5Ze2Br|}E&qakq3Gk=1%~7kF;1x%W=PJR zfNLz=JZj(`B~G?=0JRh=jHNPU#JNAGKaqM`TnaD+2+-0&n(c@9HoqUVRrY6!PmT}` zEbl#OqK%t@>yYR-Blpevogvm)A4q<`euCZLY?HeL*Z{lkSSSs_>ai@zKrEOx7}aojHMBI z6tRGp?2=K6qe25*qa%jVt?W@W) zB~TLO_%;cTGZwmA33~jEW%zLM?x33TCtVq;X~%qx6NAD%IurAoA1O@Jj;_x_k+!j2 zbc9I_58RwF48U$;jjXAVK{a$`%Ytx*3XiM-Kdb16}`>ONBfAt#@eX}$EICDl&~fOGpImshHfJa z$Apu~f3`s1el{Zn;adyFHQf@97LKh2;=<J6ijo-XDRG&T_ zZ^0VAncHe$hm)%9F3;m^Fkp-w_7^2c#>4aZB}prCJ@ZGEWRF14$6`vw1z9@K&KWeO zJwH=eHR16I_V{xOpb6~n?@|^hQi+0k1SZeiWD@X0%%J37wm!R?K~Nq8QNs)cT_*Gl zV5F%$Pt6Ghaz=-CL77835CfJ64R_akFUfDVp1gz`7FN|38KvkQ9q%^#I*~;iDrDZV ziJ@qoG@1cS0!@~5*A6R1pa-upKXDJrxc4+TdoB3T9{9HJCnTg>Wi;$4MUL`2T;hp^ z449}D%uw!=an}W|mMzMfi8T@obdU@K=>26hpWLmIYER;g5!#S`xf?s8YSmbFu~*rN zlSA|QQvPTrK3~fT6BFu`F(a0lD!IltXm!PtU~1 z0KRm@BUZ&z6z1VcS!jlD{$65#ZRH2T9;Iift3QQvP#yz#DyFJn52v9cE_$x>_RJtu z^zcKdP5ca%jO>)ntn}c?g=lfG|FQgNbs7e)wGay&-`cO3!OrAC)WTtbqSoQVDO5?U zLSaMpU{8|&=<`dQNmVj?lAd@kH%_@QxD~(vK#Hd}&ATQ|O_}fTSz@PkE?)fYa z!3eAv{-*6XQi7PQdn6fo_#tUV=3zN%e)dTnxGGrar5?|#V;FstQz5sp&sY1Xt)#C% zkqd@w$mrM!iRArDZ1H1DEU1eF;$&F7kMY1oL;NDh>cr!Sa^?Kq`CH-d4!|LK5Q$gm zrlC=@vmOJd>qNZwXrh?%kf#k$*`f2m+EK`CX6Q9l6aKOY{F=AgSxc-tZ>6m1qxNhB?sQI-ff&w$H2c!$ zF-r1;x<-IXA4sOa#zJJ;TMiNve)0lYl>+&s+=0?8&)0RW!VSz3ZHJr#$i+T zf#%N+#t(zJrsr)u(No}ft#Fft*&EO`dVxl63#ntIcaDp zUlbK%Jo@vrm=oV`zzp`qRHsg{mwjKM*-|;LtMntj|A2tYLEuvA0my|rty#oEcT@@4 zae9Q-vFMSsnIfa8mJKkOkt{bzh2K(zTYi&3ol8wK{(XZzfwhNO9!9N{_p@qvu^I=4 zs@)#^fx9d_x%+tCH{9w{wJdEhsw0k7Y_(m!yb1ld#5jmVjda1+Kq)=EF9JzrLlzef4Ws@O zijsR>_EbxSr%1UJMJe<8VFGyOd-i-f`+fTHv341;{_vhM3cL2Ceh%4cgbQOdKSzf) zss8D^_o!2`Vw(UUGj70<>CW(!KI*=r#Fd4$c=TvKnoF|SPJoj#+i(zh4_eGbMa8ud z(vn}oas(j(TSHxI`b(J&yS{o9ocdUS55`UC`>5}c@z>6FWn8`0A|wzrLA`oid>{KF z3CW3$ODJ8hIiJq0b8wD20~~QSmCSe$-m481I#|oJd*~biQUd2>2lF$a1;K9UqdY`4 zJh0Ih+x70=lkR_Qm<{FI9ZAw_ECq%FAK?!m>iakBgQ+tL(i8Gh+m!GtiY+-HN52wV zEb~lFXmFnJTl@q+Q4j&w&3bxyn8@=rYc4Q-If~I(zX{bZCG}pr!^YG2**J+k)rJJI zPiBq1hY)2B0B?CuF;7E+9X)hKA>~8Vrgv3JS&+>w(*kb24=$UGWeYpTR!oQCOoUN+ zj>?y(E)_K-9nbL`7V8tKK@ykhV9y@d^tqESyb{i_7g=o~=iLfbHW>@$5JWM>nAR=~$lYwFr?`1Xt2 zgxWNp_cq{nw)|h_&5CV152g6GXR~s0c`o7YSHDnuKqgERnuC2Pdb@1rauj)Z*$K9vm#nWTMoz+52ytE4e97oUSlNyI{F*I0PBCI8-`fCu#GtM13#Mu zlStdoO@ihqoC1(ikdQHA5MiFNs%$_dZxkX0Bo4ML$YdhOK)`ear*@Wa0zUbtYRDQ_ zJTf+;KYAS3L~?{8L*Sxg(0wH(CCn9epR{DiVu@|)J=?&)SbmL6OxajDjLg?5E3hK-RYX;V6FAN{Y}x-Ps~?89`o6egg`MHM_QGrQ9kRpA)B8||T8KHNEGtp~pxK=}z4#!mBUwq=0d#DXqY6{$y6W3Fr8fvjU z;w2}gfBN2RL*EAZuS;~6mblF^=pWt;4frqpfsKue*T|TUeNB1N8jB4}!FHPdXAw@2 zo(w|ifnmst62lj_hH?+ukF>|#qvFE~H7i||911nsdka5d^Irqq+iw($%nxUjuMax6 zmVoKfYw1fA6dvc@JMEMkcOAgCG9H3d?G?L7SqvJKlZYYTLE3c+_zHCgKy!-5 z-gzg}iwP(h+fPTm*F=)FZfgZ_bcm`~u6R&E7-2IsLJh<)(lm+8R7fv_dv#U0RhR}e zGeXBMiG80d4MQ8wJEzWG^V_|GrV5Aa79{sPwZY{uw{;VGanXkrh(eYnEIRchUzalG zz2OP$$rS?acOO|#n0y5J0WTNF)-QWvopzTy599Td`s-!U3qO-c^#wcX5x6?nL=S|^ zgoZ}Z>;u0+PghWG9~n=WQNR?X%m^TZ->rPF;n)=NKk?qA>Q!kC>hZ5yEhcC2yU{D+ zHRVKohktKL%@1~VkzBu%-Ee6!+nFLZjA{f7!!cLZK9;*Rd#SBe1N_(%LJ%BTIjJ!6 zTz~4tKYKRmfBNKksM#LT9(|GW8XTHh&f=Oo%iGExCBEI!@nUv@|mDAJ<5dr$di&1Abh|G#E0DC zcYrtTW#43__{kLvfcV?hg7r1an;F0r7f^BdZ|(2@ZJuj*jDcBtOm<>S_S>&47byIf zEeTEp1cfxvK+%)EdRWTe#vu*AFXMSYv=UT0k^lSOAq`53-GBm`Q@_(zipPlxL6pR1m;4x#;JP94e;MTEf|Zg4kSVQ zPh{Eu5R6l3Y(RsX{=?o$O;O{22^?(#P3eET^5p*`Iyf~={cA$5sQuHVG8|(t9$t@r{prhw1$Xzaj6 z8w5!J;^VfFP08Q(ZYsN{^Fz?W#0Uap{n4!EV&^e52JJ-i32Ror%v3ZD225%ZxX|!J zWJ>fdUtF+DyX}r(6Qy$Ib#|%os0C=oH&1Pnmu!c0uhHAi!4U#*x8HEO2jB_^uxzz& zrkFKq5+Xp0op%95_K#CG9)_x(ik8Z_Zqq7Mbz+jGdi-Z0#0Y&P*W|U_7~C7^Plb-Y z@SHK@4$W1te9~zNSr-;i5Qu_;3MrOyjkfrv%~GcGY}pY&VxcIUd^;-nXrEyvY+~ac zb3#1=AAE;vhRXlp zkzagfVWSVQGg=g19upcD2O+s&%!Vx;`T}l!V0k*oj*2_8QghD#t`vW@|7`MJFxKi- zr|nRd3+yB?VshKw(1i+gZXXz%EsbFsubF=l6)*$)gyE3h&CtA%vKK*?I4}g6%8OXx0-(u%`f`{UI%~rHreG3!-Nb{LKu>Bb+6KC{F}7XLXm5d8n8joJ z+t<7AAYRd5#PVMU3h)m$(!g?k#Q%dSot}U~-iT*_NC^JBu<7^iMh`*<1Jl6#ui?bT zZOU!NWn!}S(VUeis%0Jf%SUo87xkD18OdmcYXY%r5>xciBO#2OAcNeBB0?khQpw0m zI?e@rZYlrU{?B;vxr0#nYX{7tYp&3CSRGaSCPBzWg9kamk>dx8eSNozNVg$kEs2UpOSP_v}b+QCL}=C9ol# zAz=xVYk`fm>DiD(c00#*`KFM7Q?MI1KggdF5?weHo6zWfVo=9K=&X3V8|52!uSn7e zV4^@Guq^23lgzHyw>#70(I@ix_p_jw+mfi5+FRJijp&xojH1G_TL8tMl>(y4M4S4m z{q~e|rx0NG0JnPp`?Ls){R>06bj=Ml!>d2ng2c2V#B|!_NTuf;e;t0vb;6U=Hp3kW z^IW2md6Fs{KAFtVdlhv(w$v+4ndmRBj{OLPj1$e3CKZ`Af~l*)v{zuYmY(FgfYXAR z5icl*p9;2&@4rL>w2R7DYszPM)g1MhHm!R7piJ%QNgDHd5;P9$67F?rKk1HNRJFSA zeATgZ{r)jk?$n5_nbX#_5$V~ClQac~xxi`yp|of1kO7Kg_X71DbLSEron>zHtHDG4 z{wK1#MjMT;zLc)hdel8tY5O^ydw`#iRo>Cz%h%j>g-sL<>60gy+EyJR&z!n%)eAB6 zxTWdC30T8iv>!)WGhS|^;NwG>PXfoeNh`Fxp;wJ*A0bfW0gP>hxL=Bb1Z4744xxxT z$w;GQ4GQ$coiv(0MS*=rN!bjk927G}8vZPp{Y^SpJL`v)Z~laSxqy9IJ1t=PP(y4R z3OR0BY^Eqg?}0y1>TyqRJeDhdYJBNcikja`&1tnY1i z&_BUF72A;+d6`UFT6IVB99(|%jG=#PtP@h)F8Y(L18=LasSe8ep|B>C*5%Zand%rb zO+FFg_Wk)8@S}@~pBA?1>b3&FIo}PKIIQp3-$}3;mb8nuDiLBMr^P;DaLRG@?!<&h z4q)XpDv3^Gb6v075r!1rrDp`mTwonLE0#2|hA}xU&vwn3Ze~NZy6H$am@dVP;T+|n zF`B!*s9%Q3G7`N?9(bL#nN_=)H0B%A8C!k06pr3OESva}T*bO1R_hN)ulq35YE4{X zWG79w9uS}}@9v@97vWW~a-_)2X4Rh3R(s}TFRxl>lq8HWFwo)KV`7pzwQ*|QZwa=B z^z4SNda?q!Zm^+V6ha2}Sv{m1W5+edGm8H7{m0j1x<^r8q3pSdZ#{YT;}V?v_6IMY zvgdQ4Ypc@_R?f3|+7n&?AMGOdWydM?>vof9C7vC!$vKP+m9u3oUD=>71>a|JZ*vK*Pq3cff-X)SQhDpxRd0sQMN^Cq+G^sE$!v zsZh+Z3n=%A@$0uKYIw^iS$_k+MUBiM+V?0pb_zW{o4R-cxr^ zDxRf}vsiogT%An54#EBUMa|(LaD;+(4N;rP7^Kc==no-e8YO0F2v-UWc(2lZj1f(K z?c9n}njm)k)~?|o01|nm1%wpk2xok(^96fWQQhros(S%^PtD7SRC`}-+n0SDTNW(J zCWr|h5!AI)s6YsvzDl;w6eTtX@xfenkY*11DPa8EOnqMur`{koTaPa++jdEt1kAW1 zw%0iij=Rn&4lpo`M0+&Y(C=RgklCNK*Qb?mFn)!Gpo-vR2F#v0DQV(MO=du!9@xq) zA?UMnH)S8|mnE;BF_;g+i0(?5#ury+XO2!C{TOp_EVt}1%^CG zc2u5USXM}#f8*@BuR@VZt_);A#IFVr7@_10T>lb$(w_QU+Cy4Q#-ZLsfgXy z>F96wfhm38zbECU<9QT%fE&Np##Yy1>m{?i{F?jILOey(GOtQ^UVoW&JH? zN^j6p8sL7!YlAp#e{(1vz2R`TYe%V>ooBv?TljIxV1}V4s&9rj{RvrM`+f5epbFU z$GD0vs^2pTu$t&}TgRzY62*;}Sf$Zoe|D)YvIo#iwXT^%`r}t*KORKufTq?P-H{>KOAulv1Ka97V@Z)*J)-bnM0jDxig z2oQdi{iqwgdaW<^q`ZriP0!oy_c66?doOg@M387=IY&LaqISO)>ZjZ3-oWy5l7_a@p7A{ol^zg$wa+49oU7>X?m<+ z6MMaTLo3F)M0Ntdbh!Gmr@#z_Swxq9?)MG`K$cPKUz{gfmt($m4S~UWpe7wv4$E3! zQ$vW*m>1d88;}oEq$0~Puhqnz!OrJCEVJwgiq0kIi|q} z>{BF*R{J}rIDaib;j91HUFJ?3>l4=@f&!E%B;chmuN0If_rFBT3qw(=AVeufVK?#x z%sd6YF80uy5$2)TVs`AW(M=rQeJXq^mTUDVIo!3~gBh?kLCgpiP+mtLbkm;w;?L9_ zpz2HA24+u%9{W14N!b+04!T+)IWn#fP}Y@J>nw!!7_rULxpn>ZC=+0-VSHq0PcKy_ zG}9K6v%OPtrI$36$ThRTpeiI z$T#>a(?YqtkqZnW8E*I2@Q^0RG>EfV;=7ak+JaB#%{Bhg%=w$?pVuQA6@<48R!5w@ zu|gbY-Ym*BKM>%Eu%D73BSSbs?qrt17~grZ#|?K5Ld4E>+=XFQQ3nLp6upUsn9_nXC`nC3vm|IsDj!V& zC3N=VBmukO?ZI~QA255Gosi(rs45kwy@XEVPa;W>vf|m%+(j_%l4TH30Ukt-+ayI4 zCm_UsD*J4jz(6!U0^@}t&TNuv_`F;;J+Ut^wLS-PB)OLf(F8nwQ(jo-sKnKp^u3Q` z&07rIMJ37w+7SDJ0eH3|Q~#bkh)+RiXGoX9f|J48N>IM`1bE0FwZsVdk`p0sAoP+- z4_ULH8FXiePo5GbBF4mzTeyoaoWhXZt!k%uE)!D}(H~@|A5|>kDVkTxQ zXCrPQO$8-~a1r6w##bte?M*qX8ck1t-q_ID+4p^Cx9$wugG_LgNq^CIt!xP0nECp) zf?j6}r_Sz(?R_=mnof$nS`=>txmhdnhB9go@O|h%3~!7pl=;}klJ%8icev9mU1-MF zt-kGP)VD@VBSRk_Ap|IeHF6^*GxCV$I?-uXi|-k3-CZ?KEOBgKqQ-&O0wvP@UvQzi z`sBKx${i0}RuYQD`kRn~uyH$A*}a@{&M@v;76*Le&KcoY@beh&5=BuN@Ry@^K^T)4`KwDiYNo99Nx>Uu5J*uBD{jJ{QZ*M)8@wK%f zFwAbm55qjCgcw6OKEH1)g!^`gvHFQYv!OSqe)9VlZ;KrACo#vu(F$Q1T?YH_eNk>< zrs;+mR9vPH6)STpC$1%RmzACadTdO-if@d3KiskC)J#tTB130~r7fH~WSTG@!dTb_ zHlBtZiY$*Jd%s+w_!c^6>)QJ*7I*n>3yx=&7-c*c#7A|q6kf<$H5vMA*hx56n^$vg zfRl?>k$lI65wS|gcq>4k&Sj7hS*M$U$sHd3Su80KFXKX-D*;`y{?J2htSKAv#6U3`Y~?4g?yL9;4?EmC?KBE4G-t*mrZO$`xA_l9rwDTJ7FULqv)rdOzevz zIT4X98mql6p*?Io>fDJ{&i236kAgAa)OCd$VM& zZLV!QzHe2>ih#5m%+brh(n!WC&YwKrEKn->VNdi*8+02Unk*O_YP^h@S=HkU8qzG{ z!kHf$tg$zq8AS69VgmLKEHy(c3MjR8D=dm+6u8>~u&a4K?-*vppt##W2@9>ImK>nWL-d#?U=@LI1egStmyRWtH6lgk( zjH1fkG>B^hi8VN9q*w;Mo6Dyd1P%3Dp|GT-7Okf19VQWhv(0gan8}WUn6r(74oNO& zgBpSZDv0s5_QbnS@0fQ*d~e9qy}VfvTI({;-m*?{0!Ta)Z?{rU%-8*bBmLfH95&dR9Y~_q4nk&uOtMSlT<_;~-pD9G znU4%NLaYckBXm*}6c>p7=)LE~`X=|@L_VipZXSL(0o^Gq8QvPNPMRoMk;iWPY%>hL z8fhTP7K7)3!(+y%YJsOZwZyC`-LSO@WxCJc8+CRrF|~COKOimIH7yNk=&%Y(uhDMK ziV26|>DyNJvllGruxc61BgJ-DdGSm{FhhnoWFO0iWgAQ3s8)NKwYAvw+_`LW&2xHX zFV2bmoiLFV$Na;Fh$Ci3eF1?)F3)^VLQvV=-fqlV-SgjsVSFG7uo2YhUj`8$fJSi8 z6z~77p~Uq+qBSOdU!f5t%`7hy4WjkdI$Yk(%Sy|c0?%|{$pF1nppa&iA`+yWq79@f z2l~(^Y)vnFq%5X$K!VDZ@{8Za?@KigX}9}-fgZ8rM89H&WyaV{c3{8|1EA{{DsOXe@$0al-G{03xu?zKCG)e?FqxR3dX7&SiIdYo zNu<&nqaq$axQOWa0Vu3A)7X58uB`H)L8 z*+s)vzL<%yG~MY8oOWcB5m%X2uGyAVzg9ARwjlF3p*eF`*=@lR08u=~$udllcjm{M zZRMSx?vF+db?x-%j8y)**C?vgm!nxO%f|`lYmwkB0|}!*_k<6dG zR3y<13rfzVO8cECfQOA9L3m!&WMtp z5GC@=kg80$;EfU_1MWVVEz*M}Ol#U!+Uosa(9!r?ni7 zz4nZn?_f-TwKZG%XmInwx)2ySnFcNj`hhTXc%pZ2FWuq; zP*UfMjrF*RSZZ9Vq*4zd51tngWP0NS!VVF3P#hO8Hmy}#a$jGE48~Y=fNx0QafAbT6DrZqYfuvh; z99RG!YJd#)SAFXE+5&3^)dA+8(iQ?fY_gMJMRiNCVHP0Y@#)*ppKrQiGFg&|7#16% zP9^(s&)7LavIMlpbL0JrMo0jfxAK056A&huP&1EXXxwmBz-uUQPVy(F+R{73x45S< zuWFru!ws(|YbCbZt^Pvjts_$;pGK z^Q(zh5d3dKrM)N)E%CEvoe2Z2Z`;WvY+=GnKK_c|_7kob5UB?ZUmPQaVucz`>g25X z)=nhM?rFCMnYQCK&$yLXisg;soof~oghhj2AD{mg2fS{GvgI)Ns#U6RJ0R*d@ zLK@ukqqYk@rikyE!OLV23+7f9i&hy6ug9@V{Wp>!!|zWDU>Oj@2D8eJ(T!R@#Q58i z8K?Fi~JA3%Wt@1o)G0cuuB+xc)cp-00(4Gmb41XwHxZ}VYUpqD69TWX|bxY50T zSRec^*4{EI4lL{brf_$6cXxMphu}^iNN}f+KyZh`El3Cu+=4pTwelrdi+rGN-E+@5d;hlaF-#i*sqh`DXjGjet|b-yIXV9^$MEsPzLndT z15&SX_hcVxe0$GL)N>^J4OD`4UlhH)g9F{xg}w{>%9?bEWP=Hj&5p-mH_>R1AtW%8FC&gZL&`t+*q$5UlBiPJTAsGXi5GQ5jy$Ym;TXsRan9lP~_}w zRfN--S0T4EM&zBSt?2@k;(cJ zowvt@7D!5wbZ3jXAGIJ;`v9oX=T~-L*Rd^{N1)^&dG1d%WcCkqht7LS{yrfCe5Tx{XefiEVW-e~WB(IA`hWwmV+oBp(d#dgN-Osq9n)M2v}1>!7#Pq{ zE4g*Hoo?fNTy%AHNJ#O~XTSx_N(A#2|ISURBM0j>s`3w`etJ#9~TMV*_JW$#f9B&9dS=yn_J`0Z+9t>StnPhV8Q( z*BtXEqoG%xOA=4p?^qca^|TE&P)3>@f0$maJdJE$vP&Aa!(Y7nDGcNqJa2}|o-mt$ z*s>ctnHC^M*Bz&r{$i=R5kWdYSmynXCEQAx7YhZq`w|exw)B!IN3!P?L#*bjjF8hT zGru>1*Z6`i(uYu!gJ^6`S68x4EPLNB`}$f4sww88o5m8?E=sB)9@dXPvF@LRHf-Hq zjj8oOo-gSg(S?Z!ReuEv>l?p{>sWjlQYGehwn21#aQkI#Eu59ye|v9k8TH}j2kXl= z=ml2sebQ^bE>wtf#LIfdkLVfxgs(Z5%i;QZIu61RX4jzz@eoXw)~2aTly@V8*LPX0 zWSPTJ;!B1zyjx*z1iht_+MxN~cmvm9jt2CsU3zT@y&~5Z(~Exqm1?EsusS5mS^of3CGZfx%@AIF0gQjmMr6GAqInVqasIp^7p3ar?o@Zyq;(``vPVTpNy+&L2Rrul zko$KhCV5rnWy6AeB0hrMbSB)@Cxn(uLs#zXIcOZ5Y1#4oMi=yCJI#?(pFy+3L*Ypp z>2aNi9LZt+X#uWD17FLhe6qUkCEh=LxD+^j(#nZjc}A13fH`09@bwZ^n#>C&B^&fR>&-wBBAkZb1LB~ z>PPta_XOTMlmZ5$%tMz*ieq#H!5QG_SdV`r5Pd_f<3-k5Iam@VH8SAh4 z6tVQBKc&CC7D2?fQAYOS6)0`r4JBMzxK5wF`GisxLp;zZcOY8R1avCujSWjyJ=NdapURIeDHMW=po$`U;j3$>ZIbi0wB*|8Cn}kyp_OSl>8+ z0cz=N9n{CE69~dQ$z6s)S60^nrGY-Y8L4|!tn1r(tkf4yI^XSId7qj$3SXZW*F75i z7$Za5`y>toXg0uYwSRGjL^CI^z?Ay3Dh{kPWAqW<;l9QBV0TFU2!ZSs#N#TAgc)g% z^`W0(q*}Nd1BruiSd$gMxErop@5L&9Hc)&5o(^v*TeMeJ<10+zZCM2Yt|#7S)<7mW zAK^$?NDSKTQ>Te(ixKABkp;x_TT*_GtR@6b`~MEoSNSqU~g9DLO(VtN>tg ztNXiY95vT9Y8;c%tmH98C?w5TdrnK-5{HKfn>OMA_~Jt)%yw4kSZ`JU;W$&IRa|fa znrc5~zP1Z5;b{?iev|{u7>$q1sWPJKqw>uyv}K5u9*J!k^(a|`yh6CN4G9jUTy(IA z-7qyjW>^ulByJ<^k#cFZ$BBTK*tHU3^q!uT%4hB2?;cQ!OC9x!F*_CoK?Z<@u&Dcw zinWyVPNe#8-lm@j$-pe8wA3(oOA0eL^nLxb0YA2}@<(-fenW!RqTsMV^dqoXzsNr4 zM`^IpAhHrz93Tf+(~RBm4OQoZq|1&bszc7`*MUO)>HKDT>@cuXe=Vu?XDT&I3piw| zdkmQ0+9}mHzq0;wH%Eb;HYBVt8clSW=BDFn$&c-B=}==EJ7cu>QJ*SUNZK}~3zbx= z9f8Q#&$4`J?v3xed4r)~_77oiEo5viV$>%{(07lQhk@NLYU->;o+=20=>f-Nl3WD? z1zX~d(pHCc824IFAOg!)g5;Iz~dOF38FA8%!RR2{u7tahe4N9d4Q#b1iQ zkA;#O+MUL%BMg$3>vSrtrcp5uOJQbl zH7i5yk8Ai=+IP7TEi?%a8JvVY4nnKkl`Wm+_#7#+(QL)s{_>Sw-H&Rrrqa{a*>xHN z3@ir8K09>*TO9GOx%*-uv)OeMY(MrsT&xXdFAFj&*gdVq!8Eg##FfA3|AbDE3n@X4 zy#KC01!wO3H>lhR3a@7*1H%N{FH|PWw-FXzRdW!9FC;loN|4)v;5YxXG{BA(od|pE z*M@RftTGScX7w;=duVR?CFv;IlV*}*npzS?&j9Gg$i5`6Rn6`Y$5X<6Z@4XfQjhh%50#%K z%eW@L@_)P89v!uv5E!4bzmWOS@SU8tRw!wK*WgrCw;ypgqCX^^%?Z@lc!t(*(NW!! zf)Re;c{$Ri?wWcd>6>X&z8PG*n53aaDa-uZ|^DJL64f^qrPRdKiPo z_+IS4yIuFT8kmuOTCfyrJ?(( z$^x5u=ns>VBU{ygK$jBsyYF{*I|wt6C92WqvOfJ;>0ZFfFR=+KR%W=TunhwCBh#MM z;R~M(C0H8~CPmgr%$vJkk-MWNDvm;hM%Hy0pT2YWA__OIvXqwim3+=U!#U27;FTp| z>Pv&gZV8pD)(`AZv3;~Kgr#9wjwJK8FoYQ9q5P;f?6?f{2Bi-dQ$Mhh)8|~SFKqdb zcp7n!8-FGPWxtO%AJuR+*6@CFn06ngwiWm30S61e$$#?|f<~C_gkW4{9i!*5dA`wA$22b*}C~g%kZuNmZ zL?EwE7@c|-K$D8y6WB6);EPML_MX-Q-qN<4@vE)QsP>tg3+FvKCv_dajr=i1QMEY*tRUI>bJN8xLN2NaQWM;WF zqc=W%3<`2SD!cRpk9q^|UN$Uko>FuwX`E41DUkHe`$|3X~-H`;CFuNbW}mzihk?MDy* z40i+XHrd%q$c0|I!fSIZtU6_UX zVmvkPsiBOdL3RfKGRPovP;(TrCrK0nOECFcHb&XM5^|Sw!NH<19LRqovE}}QnEGor zVs-@23?i*W!vMu_AZPt5t(J#EkEbB6eb~Q&=KVjKt^NwldyYZ{L-RCRk;pJdJ@=dhdMO1G1Ln-J`sK z1SCw{fq8l)fTU{^EYGhxIH$DAdlNER0EeYU>|e0ih%n^&iSOji22lxB9JwFZ0FKFz zt~@0Ao2LuI5*%d7F0L6A-~`U^B4sZDQLG`*z{b7>@Wiu&SV8by|(dHxS%53;9bOsNq)F=+5`)v z{B;=Q_XIJC01edwDD`kCYtGG>FcszX&en&sy3>~g#8!NiXN8c`27|P)uG>biMWY6B zgNgo~Njc&KX(xDB=IQdXDY*_YD4@^ah_;aY!^RrEIwdw)%%H{7Y z7=JyA5*cu8zalW3&RpP$fAe7^(~y202BAm8{r}>_C`zHV{cSa<^{3U~f8zdjU0a2v z_rw1KWng3lAP^?!Wsls{9l(1I#^hkg$2WL zE&jNcHd=!5u@Ca!t9~9PA06R>EuRg()%ml}1BMzkYUGbNIePdv++|(NkYVB=Qx+6* zp!6|f7dN)8)fUcgT>X;3Z=)HW^N!%U5O?sRyKNH?K&yC17O>K!PA4kdu$QIDpppVG_v=vDjVPW zYto@7`%a1Tp4M3HI#%;3Ps3m!6|&sFyItz6C!&M67Qomdj25=zW7raj-IxYpP%62v zLAa-IyPn$`DKTG35ngFk6?!Txt0s{VRf!?@o`B3`E;Tw;qlHU3)EfI&O6O;NSO-Xfm7Yn63sYb9EV}48I&-V)Md2jG>yeeJcPbh&!OmB@<=%Az|w$uDe2# z+mHE_9uXaQzc26(V`@ptQ`*g3n!$J$SmL=h`c^q^r-ox5zH=kz?%9?BFBiU$>$=ew zh%H-Y2ay?mgbSd$q$Pgx@n{%5mhlzE95iI@<3}=%Ow%K;X30ncqWJ7c*0UoO%R2WW_Iz&}DyG5J_P{QVptjdVk7R)eEH`R#o1H7?_Y-ZUfBF>G^Ccs)YQ1-@? z2tOW>cyd!nXu8wBTK|#K^YEm*R9dxyC#y#y2a*Wi9hWf_LgCbwn{Am&lHwS~kqFa@NIEC53SHw-*Qbv-qlBmj$6!D5@sUntMS6Z|w%pl0SS`G4{R&A=BBc3ewY?Hg=X)K+DhL zO;r9gHr;7W)%)vc1~OMsy;0nsA?=XqIiJ!Mjk{|Owe7VttWhSLx>=!s`*JZ%QawL^ zj%@d9U>lQmkHLE*@tZYVY_8p{9leY1^%6UyI9~0qLIWJB?~}VB+l}Rvcq^$NI7Znz1eqlL?mrlh6cb_Vb1Q ziLu#iPBR*?9yM}xI16b9cp<8$St6O1es*5o^-)Z=qcF!_g1 z#Gr*WW%THlZ^D+gp{j8x1`J070mCV8zHe@iy(XHQJc)x=Vr}$oSEF~}%*CBZU5EP! zv&i>DgZm5D0&9pG3}Q#TLHD2L`p+dC57)HK1U$tDUc&ym&a$ z*43z;a6S<7lM)B}`w}-sv_ve7L>M$vON1o3vX^Z#L!H>D!=!A%zUBL?ju3B<5u?68 zLe(8|?);JhUn_zMyb1rY3vKdI_E9#Mt!?L&&%7u*YT4Tx=_WZRGxx~Kh7;-X1EBqk z!Ml#x_qq)R9#@aD2sC@LH)jjH`ZtU0z8{^jXniXWnIa9UVnc&`LwSj#NxOxKFQLLI z0-tia;{wi2Ssv7w0MBZu(`$DhvOx_D#O1Y7$ zG$MEFu`=w1+z){if@vOIM5d92^-#PdR zYih$DRYY5X_s5xOM{b77ZwN3kGKaP7d$<@ixa!o( z2*iqW%;fpQka*%k0E|Vrc)2Ppi-lSA1ik4yaOI5YULptaqvR7T@4lOr7`^Cvsk3Um zc|tZk9Ar*Z`}$1J;InC2HfxsPxIA|F-dz)(O4y%=fNA>|>--}%lB(4a2@ z!Nmt=Q~_$-ES&5$ETYE5?%q15EoN-**W|V4em!Ac(ee9n>~_~@NV?x?HROBz1=2I? ztW<{N!)C^%(3`%wbJ~JV@Ae9g#F; zG8vHq(sG2KqU{JDNmboZfm%juYycE4bN%aWI-9}L?d_tXtzf7X?DzBG0FAfgA1w6C zVyoftcmbIJX4QmUB-jcF?QwGDjM2rI}3rUR=26PPw%D7DAtE2dKP<6XzwhrRQPStZxB<9)+bw4gEX3rP$yWvZg~ zyHA%^TqtyG!4eByAH@^=R)xAy2aY!FCw{=^QcXaL#isFlz4NKs3ca(@8aH(wKtFYD zeDcv1b&T}ysLIJryjc}(Cv~m59rec)Xxeg%l8#Ng82O-W`;CTp;OHR`+1+8X-M4K$#{&AzT_v_C_vy2hewBZLfcrL?u8H z)es~zwvpByL!I8YN^vYl-E0Fhik#w}^b_)$R9bIeyi|4G;$y;`rAq+Y@&S`VFJb*L z@(8!ocv9P7{4G#vlDdk%Dn$6OPVwawxdOLJ9W_hp5OK6y`2r@#JO_1Le;!{1Wj^bb zU4rY#CN#Mh_A+Uz(fgt?aQv)!)V*Z5Lc$;O;`O(cf$1<-5iQC4_wTTCpC;^X z9z#2l>H}CKmujsLXiSB z7V85|D$J}47&jAWOe^&l97Ln&>kCneK?@ zEN^C^S=VH)Nys)$S5l1B7sf#)_sa$%i4ciFB|d?EB$?<%4k+GyDlx|aF^+L2>L`B! zauixKd@g!V`|$4m=;^hQXc)SHgC7iW1jm*c20xy;EAf`h=S+Pj?FfmFy&Z4G##wKb z2rmdENq!`7Z7_TzKUF-{r=!jF(b3)nz1peV5%+RF>P58;5G-VhcXljwJ`$S%Hk~W< zX9I6P-5y4{`ucg!AH^7r^HH2CGr8B!O%-Bv{d3X^NU$%nGBZg%8}*> zhX|YPeik}#?u?bXSuxihXh&+ro%@F+V!$Q!H>|9pVSDhC!f%ufvg4Qw1 z1Vj84lPPB%boI&()v&yB_n)b2g_PBhn935Pcq|Mic&iC{-b>(PWq%2-P5!YDKdOp& zDM4x900$#az>nE30t;raXF{D~x?W^*l*)T`cS7>5sSJ9F00$XibnP||KR_Y96!N%> zgZG$_%|;r}DmZ{_nwpK3C2;ZOz|zwZLWo-`?z(!5kUZ9hO--goJ;CL8)rPCf?f3i{3f!_DzW>?9PmB7Z(_7X%kR-@Yx3 zMSkuB^Qt=Zj$`#KKU3SUq@va-zsorgTQw98gCLm=;8)n>KTD?>iJ&-ulw9}Egx2-o z@GFpGHIxZ%Sp)*rGP=EsIaWS_Cp|+rfC-|Xxd+7d4vz5GQ~^wNKk@<1q;-kNAChW)C&Hr54VCEa70)MR^*~_igm!1|~n| z=oQD0vyWuSf@xb}-}hJ1ENU7d7jQy1;SvJWo4Ot#dP=*UWMi$wBk-k33vf$Hx*xfw znGN$ve38+`<^c1G&l+4EMNOvjNlrIS^IS_93!C(tzubFpIT+TUm$iWZVIXr%48zp4 zR11LnZMvAQiW6!AA|wR^6CKOQU$GgWqi9NWQy(~0x@*i9=J&Ab`qm&KjW~dbiOPZL z3XLd|^MmR~0da@LFwtyl4S1r#wn?K-ye=n_$34OE$;usW9d5L?uRRjI?HGHni@e&^u~N2^4O|EQ;)*Gx&Z^S*uTE=GF6!NBO!*K zCh{~hJcr*}Ghc}!xNuNq8NIFPj`Kh7WDdyRk(|mXxswVi-=Q*m`K0=E&o=9XQc!14 zSe{hSObS_wbcvZCYuR&`1s`iTKYJ3Bz8~v$w?T|Hb~z|y)`(K!YxT8 z@zg89rR7n=K}d9~x?KS;`et=rN4rQt_eJ4v-JIjRD4+&XqL$&IJ7KUfM;GCYMxuid zCFF{jISnW6sP57tt^tiN@!3AC;|jB=mD}_gdZ%A$PbUx)v7#Px;3x)&Cf6?&O?WQT z5rz>9b*xvW)#}Nm?y7JlccAw6mKktx-6(-dls`vMem+c9IVV2;WOqozHB;}Ow@8U= zBQO23L~9cG27y6??@Vh_xnxs|hdS1)yE@yz_2td<>7XB0F-tc4gP8`*lvr9$Rs5s8Y8KXFLRd87CL&{f=)Q86penUutk2~S8Kt$qXoHBW$NS~L zkJq!`fjC?|95(zm9H7z@NSwd2?Z8X&{}yL>;=vJ%Fh0sMq~HNoyw8lNaEyUbN@k!F zegtAr1v)Ysa5@7YzggVDjC&C7_ldO^R;_n$ppkugf^xitIOh^xy2I;q)lB?RHgclL zVB)}Z6w-_`nMj#of>dn7PzM;KgkD&yZE$3s?Uu&Wrp|NZPjt{)pm$aLOw|*Zv6=U< zf}8|5Ie-LdrEDgFl2Z57xj2YO8NTwJ90(f`U3bcLrih$@daeHeyPJj)*y;0h@e~IP zY9tozd0(mKqSVx1p@gNz(U`ujw@vT zt#~>{NRBu@{f~N^)NhY`6~T8B=es%vm*S1!6vQW2%dN+&uVHsMAccKkJIBnoCjAZvcx34&LG%(X9q(+P0@{K|VSq3J#JA3;6+e@BSr z{@2q20*{}$LE;1GZUES(`T=zR-v-b^6E}Dr#O# zpC>L5W|hk1Ey2;H;3X~_$odG5#E9H5C!&k9SAAU8ERxo?iYsSfIPCB8X@S!lwrrq-3O9n!(RPAxfogW>dER1FN3SOZrk@*gwGx ztry={lXGfPFYzLb`|lZ}gu4MDid5JZsziu@Uv*e+SX zPsPOsdX+SrNuEXRfEI$dHb!Kv9r1$(TkevD~jkjSjb9rp)rb4 z)IXD^G5ke3ghX*=LJ$5>Eq?z{EiCyhIC%s>iGnCN&vTn&l?w2>MVpE;f`&Vev~B2oP}1StRifB@A-;OhiXAJvxLpx1VUkfFr&rK3TD>eJw_ zKu6PvFMh4l6+Z0ASAoV#|8AZBe?s_NScaHkPlZJ`q&PK=KVwBtYDR}DMRC??}1$)WM6E&5-OSur!ur$?4fB*0*U9hXVXtSDON;~=?kz;@Uf6Fl@Ysunb6M_#9LO6 zJ7(|!CQPvbjsYNSxnLM9V`aa0~)kUe{w!BSTET=eqHQKviHTh#_@XAzUpa` zyHbNf;v`&h&gl5)m37B3Z_W#&Hqp*}8u;E7jz?>*v?4v%H4V4ZNkOHM_pt<(5eFbn6PrB+6^U*3=R?*zjoP&YMd zYuAUPXqW`vnY}m-+yE|Zw0MUk*bXA>{AmBwLNX7#fjQxWMO8%R|MB3|arR>BO-lW@ z?@NQ9!VZ=07X}^Eszy$kJq9iph)rCKo1pNW@q(}c2|x!tab`&J8P=eW@IjHDfIcb+ z)_NoePtPQ%HstQtpp$cLK8Z)^p)cF3j1zAjmFLPS&nvkHop2r)zYU$0W}=r*uYl_H zk!EpF9!%efH5OhgpxhrvwF!2kO(?Q7Wsu=-4N3+&R|Rxpj#i8#S$7&`JBv=v>>!F=iC;_yi(G~D{w9|4+IHx;%RoVi~$24gFcEfb7$Rtka7&SmReK4Sz&ff zC8#&MIh(fiNj8}2ITIG`Vo9t!{oq6>+g&~*NnFp4EF~367&aJZ5!*E23KPAR6}=my zWPpU;P)F-_-wA2axZ|@GitD)^TnG)>P5+%Ilk0(UIUZ?~+$+UzkbSn*R-4s<+EHN(yljsn-)EkSktG+6jT=|Yd;CQo;DBrqT= zt6_f*GQq(3xJ58F7~*NgyAQFyHTOY^T1aZwioy>LV*Q6_2S7Z(PVCxuHc ziE>tu9Epa6wFz%&qz-~CIi+>bYsd{kekP@nJ6Xt~^GJHR>!iy(bOQ$4qamy&u3J>0 zF-Wc$2HuT{j(nS@^whgVr?iIfP38B!6)}na0hHZN=5~l^+U$`4f>#2E-}Eon&8^iA z(%Rki=cl+2C-+T%W+N~bNeyY0VPBt}_NvlAaNkmaUV}uBz6fwgk9)L{}kYt1wMgjxhra8!!q|4BfoDxy6Ulwpgz}fPJFcoW)F1i!mW#?^;x6*dC1TSnjS)70d+l8a-XrctKkW*VU*BIH z9B}q-@7((1I}4(3P`h)yG>Pkqvr5O^EM|il%Yy5D+K3Hbk%)9)lzPE*KN>UVfT6~r zo-Q<>P!o!OMR+`h@p^G?ieDHDnrQUpgp_P6DrO8X+`tnTbc@`Cwet##uJ`>4>)qwq z)xtUJ#!CchV6y|oPeP&DFV^(|b&cu7wfdyg`pn>UsI$c&*fcsBq@h<1* z&b1}w?;5$3vL5~tN0-pQ-I@Meh`|6)@E-_vZ*vQC3m$G8s{`%lKxBN9S6>Wpq9WGO z7W#F6b{j8fSFpJ7UBY3?a{x1?G(ya4g=#GMTFq^e6O#A(Eoa{4u6N(E)fd+5mA9v? z_LqBO3Hwy8Sk>+DE(Xyv;=XP3H>Gu6&dLZFo^coC$kKG3?x|oTDwfp9pbF=XF4uII zCX7>!iBpkgQ~0`;7%g&_z;{c@_DM|wCl7~4s~W|^b-uQen2&R~We*6c;jOen?b8!c zjFsD>QFz%Ae!-&+l0w>5yD`^CF+OMAZLE|ablz3wh{nJt` zdfS&r+66ge{#WYpkec-lLavy42qUOeoAxSktt!r=Ex|rbj;J?of%$JFaCarT4kw+m z+#y(&QSGq#qpNoyV}gMym_D{R(Nw`QAwquTje>%=8jIehv-z{RA~})UXUQ&RRgJHr zAFn}`k@+R;naJL^nJeMD3&G%T=vZopw7+9ON!fhJ*2c_RAv7U7&xax#8}g1o7;YML ze&ju!pMwRYkS}5O>2X=npD4$9Ra7Aj#1{5bD%r5hlG|-8#)*KC+lhD)5)`Z24yq^? z*OZA}2jN38n*`rT2&w%P^rxVG;6Itb%O$2maGujFx#yxwvywa zheRc5{c{audfY7p%(0H3g_PxkT~$Y@9co4T3cI(wP_SAfJa)AgQ97KK^kA-t&qXS= zvifdoMmEppf?9zL^~tT7n@EqieH|#76Cm%Gi)^5@X)kB2g>AKPT31f=Aq8ZQAqBBh zS69M=wB$EG&}AJj7Yl1gw7#Edoba9Fy*u4>sk+_rP_A@#`asF}5d7XqmZZ=X)<;7i zI7CAsV=nl>s+7aJ-&+`m01|1WjAn;X=|=I89uwv=hg_O^QNaC0|fP>j{1I1U1YQJI}@hI@2J~n! zuReqwF8W)z0rBRj;I*#ca|B~J32t;Di1|2j19zR9n^2*&iYAy{J=>7xFaOpfaVbMb zWCVkXc@S`@@-NG&x3PDMtxAehaeFUL$%!5E(k@5G=e+Akz$s7aL3kygU;#vIVD-;n zDCB5OH?HVtu94~%RGDPNQA&07O+0E^+cfQ-%@?b_g!>Zqy#?JRnn?x)ptOu+M6NH0 zgbpRoLRC0f(X~e>ahiT{*^a~xXA21l80lsk@Wv>7P+TIiBEn5c|=dmZyNs8f3vSqnsUM^-4@{=W?PKsDh= z*r20uB+OqA>huYc?}MN?d;r69wA!EB0PyGb-x}BxuhS@n@d+hWW~ErRp@}l(iHWHZ zwa*s#%OC(P082*QHY^<`N{yD;6O3Md4?z`=k+-7LN=(wieamHd@OP(4Hv&o3)} zHPk%QFF?Q)j;7`mrjncDdvktf=X59*&_ps42PpwXTq9I1N&#v09}S-jv^|0tdaL;T z7APrBzi-Y3By77FB)j%Fbwlu(GdNnN3VfN2$O4{IIL zjRg$Dg5DoLs;O!9+eunljp@W<<&OUIbl|xco`0o#4N5e64zpL$`E9eU#m-*O$qjCj z{!sqX@E8XwkfW^c?euSMl@@Jb?`{3qrok!gYZj2{gU}%w6oM7<^Bu4%F2TkBE$K<^ zcfI5vNl(J-;KPpEr>wtU4fxOkNLhub4LvaU zeaMVN4FdC(Guv8{h=9%f?_x%m9EI~u-s==X=>ZB?-X!LiA~Ll{0GxfO1sC)!vHT@C zy92TG0P?5q{dZ}QPp%-&3?${3Rx0+V@bhr>8xW(S`Ac`^mopUev$BN&FzR=K$DHgH zW)cm~i_lr2XImW&SAn-@wCRBpF>R}nc zQGNe%Wa~Kp*B)?#ac(h)}W~v{j+0h;I_ouaCRq zy}WK7TD%g*mX;J72ABuA7L7j(ahmysB!2+T)5ykI#rC*%m~BQTj#VnhiEEz?pPdNo z`%dT^-x@VX`F7Ycm{d6tcpSD$jGUxz!rq@1;ub`ygVZ}C6W)-z$~>}mK8+aUz@#fk zn@~X^>tP5qTrJt{Fm2e{y2z3S7|ta}lyU@t(AM5L@9h`{^=H-jHAAH{_U_2s)OrAQ zWb^jW=g62=_7;QTp9R=E0G4UWl@tKo8Peo`<&w z4fqCip|)5CSW#3qLLVbcIZN{}DYa-gdeG^#3DyKlK3g}d!xfNO?Kd)neMSyk2*`TD z8Kn0|ck%o=*%Jz`8G{@b(HS)U?I`^}dNB}KkbWET@I`)kwqv9{r`eMM5t;g!W$D8K z&sGdttp8}mFc;56iHPprd8?WHHK!vk__L}UuP|8U9Kr^dvYNL)#i74~RDe|KW&x2->c1zh>7o?5Yac8P&rmSd>UwS2yMk08Q~4q3TCWmoY2kA z{7FEh$)jPlP{o&=I$;G;70TK5QCl3Our;`jN`L$D(zNN8+hmXbdfj{q8A$ucqdS#q z;)EM(#HUeq^OFoA@}R^dccr}P%*e7+>s+pusglk4gXe&$6C9V*#_j@NW`?ifMefLT z)+iF^Ec?S}f%5!};_JdK*pg1R!{s77x>Xg-OV- zYcdd+881M=tZ+EcJrD}ZpbSfF% zJu?-t0sX9j`6ZG1bB(S0Q+(;K;Dvv4{4l6K?<8W`z)Oi?<|**O0wt0nkprRlz=jW5 zdRaJd(hi1rCR9W+lN;xmre-ugKH)xxP7*C_-3al^M>v~^8)TGyWMnk-j}SGeVV{p? zvCtQuZf7zc#+Jcwbue4E)vu+CdA#LT)9C+A$>gyDu=laCg zVNLWsN8h9oAsbQKydj`*eOh{AF5yEY7=F+HjqdjS(BVIrW4&z_w*#xDe4DwEXkbMNyeJlGCf56WZ+LbFU#gt zGXgzeNVjr3*xZiOaN^(5#^iU@ch#6YJ8O)C>7+E()H++L72u%Nw{-zVLmZ_0URdaj zZs|?(S0n+a*)DE-;@Bppq7|t=0GX;DQf_7s=0gRK*h7JFpMc>=`XzHGMiurgCWIu} z38Dg53C=?A)O>yjZrut!JoZ;`*@&cg1iJS*u4ILAe4O_no^7aOwQ9D98Fy`%TG8F} z?max4$?t5qfKhXVHhN&$;?T+cn$GHR91%BAI}=y=fi?P`*JO2r6V+nR;8E#k*X2yS zUivr1c`}}AuX5m>-rD8H5=XRt7Q-MDArfuiqClFkgT_bYm*My`~%Z(8pxP5SBDA9y>LfB0Wi36A*7a38ddZ5pMTGdRwKTE@jxmMyJSe4 z>036qyb7_~4`k_}Pu)XeI~&Yh$@@yRGi?&MIk^xiqHOf}UWnh__(`t=S1-?`HAU!^ znvRkkIDt!HiGen`^8p@+jmL3!G%W{)N;xjERhu=2mrWct0%@{OkFZx}ia&8H-!{uw zXc}+9eoF_6lFY6`L?3_4AZfvdRot%&uw>2CZxf49{0WVo7{-FzaZ0X zaD7OBsAk>XJMySq)R|*!@&kUrX!EW*GBK>veeoX6a`S9uhCzt=+seFKYrUvgpQQ6g zaqW$>+AT}2I}yQ|dBsu2RvN30JkNxs6@iBY3yH5lwn&zyZ}Tet91>qj57akYABY@7 z(2lO}wgW6HvIzrs}BC0V0P&B?rKQB%o07*{!yUw<(!yg2RdBYY;~_$ov1fA%W$a`?DtT z`L;wpu^LZ3L;0JR*IzwO7$UH^AeI^ce$y)eiZ%d&9sJYZ8WPfyLGoa3L|#={VSUmbv&iM0o0%mxuZ!{~=Lr2K-8n#zlHTZo?tTf!uWs zzJck2kxkGS5wK%H;zr2WAVVy8N(8s5g$r=X40hBn@eBUnh+o9{K!9P;nkA|r(6~A~ zWXj4df0zJ#m+#td%G=sNpAcPg1#w7|amm7ypJ7l0Gooo=WnLBb;=Wv=&2QNk?*JDz zxFUgnWE7+QcnQqqj(#Bw`FMvm$F>Y!P(5kf1)EoiB zilVvPkn&SrC@a{zC?FRV#c_Bd#37&{F({5QsgAIHMgb@koQSwhT_B!L5-0~ZF0hkN z@=}(VGeE3K8qGn!gk`UzD7K8*gygUjs~v8-5ecsG9!LuYXTtWu{i>UwaRW%$Uk`oT z(GX^L5Y;{s!{03P|7&mhJX1)TPAcq+nNBIZ7ydO?SVKw17{!8jqJ0L}#h`+29gz9p z)4_8B@~z-WQ0@d00fpsNe}jFacsqf(%)Yn>*xyC*ul_CxP-g@bKKXm72BSZ_x3ea5a>+_-3KK!|DD^Z{*Q+8*-D!H1&Xl=x&@B? zx9la=)m=i6gU|oGegZSUngQLQH@-+QzZ6YLkR~QVAS9OmS<&Rcg60h5H;?*UP#?7d zS2`^qq>|IOUr+V@v)y9j?L%A0k2^BMZ$~R*hOeIDIA$NW^9=6T*2T8wAjd{wcVP$z z&ETwv{`F3IL5|oU4G|Gqr{$)pbb99hk3-res1uCYCSCzK`9d?-G&>_H6LM+{Y)-3! z!1~K?@7_fY8T7{D?|yrn|N7he6<-C)7=$GNJy^h9{lX`OKPI=Ofm^ce-&-LTSjnHDFRu=Tq7{KdO1;A@P!7%{y!#t#+}+*X-GT*ocMAk}2>}{+ zhtNO>?hxEvgF8WjI|L6F{O#ns;JPX&pvyv?^>VrrGb-pwh>Jr ze#0$*YvG!PLGw;4Z2~!)))zZmLm);+8cq8)b3r6*a_^xP1CRD6&^am@(@+>lV%v58 zO}blsi}fQ$-4|7Y9~NSLTw{g%asy3HOCMpcW-;5afte!Lyy}9=ouC7(GQcTX&TAB_ z>~IaNEr)X?hz|#yTL&=FHK|KU0m3m{#jEMKQ{VU#EgV(zRyq z5ovJ?=h+<-eO1g9oC8a<26gW8 zPpfk&dxNm5${0u~7@7{WaSFho4}>KF%UlITG^u+jKWU-1*|<2u|B8uR3TM&=5%K@s z>hRYb$M3RpWHl6urc8b$;Xf9a+*KzTP@e|iZ)C1N!Th>BFfp5Lx3=%1E}@D^UV4Hr#J0SY`U98T;9&E8Co0V6Dd<3t(;I`Kn~upGh^a( zak$i6MkUucQjQi8`?YVqo6fq?We}M#8qyb`{BwHty>%fWZ z`H2lpTO{{E$ehAVaiNm{dkaMS0u0_t35P#?@CQ~1;t6x(EqFw zdz_1R%+8M3in)Y^Jbl3-ya7LH#W{@AvgTG4O-Gperb3X}ndQfnMij@HC<@>P^0tEJ zc4jjBDczNh`0T3qOE$h*in1nLSfi^2hpYM>`@K^l}a7sy`$ z2~SLOl$=k-w0j#p=wvH|Ju%R%E2ijaiObra!XW~jePnn-%@9D*K#|*{J<3h^=oJ1`x06UYJ9> z)guBavIxv^sj%~*iE=X7$;W}P{i5mbN@1;jQ)j-*f~hl>sN5pIs53Qq2}6>uP+SQo zg&FRq7B`W>F=u;ZWjac(8=E2r-t$4z2yZ9+sqN8v*UGsv@*^ zGSFB?E*z|1Q>WlH8RR}sDU6QEh3c_D$BMhaItu_^ePQk4_>)s-KfU`Al{4obJ{+qs zc$t22b;2<_P!}31(eJHHNm{3RHt6ackwN%BR-gY>vy>aD`rYY>F8~TWgQxjRt0R+e z3E_vRzccLqO)VoIXz~me2Sg4DnFRD%3(GiV#Vp6&GpTibse7gv@+B*|BN2Z@8um}P zQ$Y^Cb$Mp+SiHAufKG6@^{}ezx((-=4<6Ss``ond!PMU=e)@*5Ha%S2 zF(hLchUZdZVav~&Cy&^B(#exP`MBvlh+}DUbi~4xYw~EmZ&g^Qi}ZLeK}PUsuu+`L zFA(+|;u?HaaR2?P1X7|jNFhgT67a9_HBfWVtqJ7Qla*i=n0$at;sxcF!%?7cpr}_s zS|W5~(?KE?gG4W2AAUdR^r4~YvhKrUbdS#o8gjTm``>*V;_KbwRCAS7bqRrUWrl4u1 z1iFX&>#QmKXC0Pmk7$2lQAH+qPAnXLyzNZ){{#%wv~{w2N>h$tD};wqQ+&l14+#TAol;O)l~TRMsO zkLbW4Bp&Y)$Atimpl5i~pvABOx?M`%SwDDzq(K)(cds#o7$Gf-A+k%PD1w4qF_@n< z^%^uJ-KJ3hkcpKv6M6Df7Pc=toAc74#w`kShKp1j zQ4;*-(xwRV_G?N_SIc-9s!Zb%CNSh9W9^g}W0k(&thLa}7;8spRWwD_q4S(o>i6A0 z^CnLWF&-;bW)R;Db@(GPJAJUM1L!9MZ$<~CUG|sTf4cY?S%$iD8Tt?InaFq`hT_08 zrR0}1s>&dy11n^1URp*UFVPzScT$5X^R>%WFRlR6`Y2oRhpG~dZ3?wjQC3!#n<(JU z0m0W7G7-2!RsX$%cU>9S*=)>Lb=&(w|E@3ozzazz2XAe!lHJO%fWKR*l^Sy95h;xk zDWf%i)ly5;ywy;X%FUY!1_jtBe`d889db1Axpb=c0=^buJP?~E+ZbQsF8@kS4^EUD zTk*Z)a#~BWteWN*72wL4>oZgF`sQewi3Rs*gOm|REmw1iSqD*ClM%a#lfeOd^zh>$ zv1JP%^5`{5Z!=I!OzZ=_-Xo$Abvt?pl3h0Ye8dgx(fzjf1UIQOtCarXrOVUdDm zs8fEWE4=&ou9y>m()$ejYx#kn#6sOQ5hO9-U}&p%bktjU(M6?l1Y?j6wyB}>SX)T zM5~pg&zSI-sz=&etok3;%tpu%Gh-jpGoyxyY+(eNBn>|Es>JvKy(}5qq5gFpe@!ED z+dL#d6Fq43|7o=4{tFDl%pSl5LMnts2dVXlh-9qQjbzVPI)|#l~1qjy)%tyJJ1eYMGp%6n!xVx&T~3-b0-% zdtYsYG;{MtNel!-ldT`0`*9_&W_q;ge6m~0sU($3;xX^^RbXD3rZW5tG%ft5Y8NX{ zqVr+o!U~nfMb&#{5iV}BcEut~ns}|P?d@&zgm3tj$Z`?wSCTvbjhq*fq(GWD8aM@i z{x35DZMvM2CAzTB(RY_P`JK^IcA|$L-iN~{W(Qfpp%(Ion}kR|bzk=4N?@_HO;6h0 zX}%C`ctBA3F6wBXw72`=0h{5S4@~i&l^^(Rr&>`AAq=5z)WQB-hh>eN((}^qb*Vq; zX0fG|-ZORzbLSQ(DX``P?l9z8JM9GnE4YF&`LMa<>7Pu8jS1qV9p3j3dyyh|D|k1n zj3ws7>CKui#YD1?2#^3d7$O(l;oC_*rjd^L${KygoCwXU#`hpC2aawTm^bVn(W2z5 z)PF;Gt97-R4&uw2v{DMZQg`~-MgApkk^a=J@&R9_AOAduTJZ35vJ3EX@2ZP{M}zpk z;fq21i{ROyGHrc>F0-wwA$F7m97xbGDcX1#uSJ2vz~zGP;B*gouyIUwq4P5fIQ+^U z5fOlA;_ZDFx8Jg#)hQI`RpbGu6fnoLtCEy z^T~)p1FF%fhu;B!*W>Q|`>`uMJ)T*&Z_jl%aV}6bBa$bM2hYxe=sqI$BKy9JO*fnf z-Y*5CEYCfwP=NGxce;cL^q8_Y&>Z`&OH9LYW)t_GvAYO0(g?CiLxI^gz%{YebY}R5 z^He)7-K9tX9}z9SD%oPH6ViqNRoQe^;_%yf#FXEbn#VM)DMB?Wze@5|WDW+^Dae^l zVJShvU&VfJ{hhqwubhsFPJAkGE?;-ZU_Y%S%J}o|e9u7-OP$D5D_Wuhzz`yO6|A%wZDF@d- zaBk5gV5RXRKDliW&p(X;U^_(;*iIorUe_1EO@#gc)>#SD)NDDSli0=rizXpvn8odT z`nwatcSJlv^OYzx0&vq0Uti{W1`M7929Bq{K2%jzgQFZw1p2IH-}rsmY9N<}+bVjq z#!GOIzf=!SD1!lPG!Qr!5O*L^8#r8Odw}+`1XG`Wj9TwMpS8WT zoe{r2jUNm*55JSs>s#_A|DfUFZ>Z?Pk-0DNs*-Dt==Ag?#u=D9VOsD8z}Td;Mx;bE zj4|=fUt+vKY9I}NsjCZ{qhj}Vvm%{WhI6kc(=5)GvPur~p3T5C2?^g&d=siwU>s0{ z9E(J)=<8l=V{XG(Nhc zaR$ngs;hV2J|9u&IG8;$Scl6-9=omb<9XyVKB~O1?^_m)a5v}mxtR!8Z@)aoUfH@< zU2DNw&l~KmYeQRIF>dyD)Lis_a7?)}DsKveb%x?QhoWBPuuZp#y8{nsov3yJv9Ii= z2)JQCug4r&s%p-n zO`@#<_GZr&fA;`b;vD^~x7Xdc=7NJ}&JY-f#I(z7vbtgS{78eMX;a`56{9ts*W=7* zt!xHZzjeV{`GPv|NUJ=w-NJ>bd59(|MdP$_5Bo9PJCnbuk9U|nk}K< zr&-G!7!;=n(x%qCrQj8X$jaV9)5$$|B)Mxe`@G3&o_I;SiY_pb;@LP`4hz|LbE7^R zgUEdOi_Xel{IFC3;w=G(`2K&KRpppfF2~%I$A{&ZqtKMcl&*&qS>&1JCrai+dt05}Zea8hE|k_-8stW8>!V}8se=-eu~c+u005z&uC4B5=opUcV}FEvcN-tumUOlE#laHW`GHYS^4cSG zf4-9^*!=xPx*$9#{?U7BY5jfIt<~CuYrc!a8{pUKlK6Mv4X*Lq3XInVJtE_ovy6Mb z4ZKeC+;yB@{;eUHLdI(ug0RM-L^88T#JwS>aGf-nd$A24F|Cp{Kp4Ru&{tv~9c@~t z+>1^Uo{Js64FtpcvC_53GyG_T$mH8VgV462i*UEs(GTTnZxlm@ES&(zVt{l>&1+^YEJK`Ru!*RM{2ti$|%yH$JSPz;1aJ& zj%A9u75d&N!>*U|j4*MS^RsjzS{T#rh(XsA+s=f^@Nj}DT-o`LLC(aa$Eq1kxWUm*B#g5m)IKjsN|=mB z)Sd=%2xIg}0^(`C&9_ZkH_|mr&d;tuFRsL^kyA&pr^asxwu7sJ1Kyz}JFt^catAiN z(&L$%1v;O?kIRO>`tWQoY4wFVth-Lu=i&V$xA9XEM_N4FHG$6daP{gfw#tUnn_4V< zm@WjxFRixb>rbJmLe~eYvp-coq*T1au&NFtqAM8PeJB9&b%n5nwR`TCv*kL?C_gL| z@+k~(ZWv?(x}X&)iWm*3txP|IVpMcH->Z!(j{q+=D9#LJyEKT5354)|h&m;&#S$kn zo;8H;CO@gX7JN+d9G$#QE(cr*o4PQR`kZ}p+QZ?lENjK0pF zY@Mv&4x=MQ^{QenbXXjGexh;^d(KR?5-TiBzpK{(!Sy)>?-d#-uT~1Dr;_@$ZyW&d zhJZ7>r-z?8UWyBkMB+_Y*Pre>u&(e%F}?xLB-zDaIuR9TYG?>mRY}LJaM4|bX!0=n z&V_zLSFa$>_n*5%G4<6O`1#Dbx+B=V+Vv@YK*>;aFc9W(d0OW8?d%Uvbq_pT#l7^uM z%=^XnIwZloi79?wg|V6V6@>%m+$2J~y%|flxIks}V0^|xVvQR8ygPJBGMQ69m#K1z ze)(N2Q&|AZW+n$ZVvi#;rR&GKVfEsE`e{v4?qtjHVP*BJS~0U`mHIC(jtd;Aalq~4 zu5|j*q@mM%^Nr!_?!cG=Xl2FTTqz4;0|V7rf=CnJFAfkU<1H9UJSp}cjw^@~-#>6N z%Gr(#K-mJ`(&_KJX{BQI+~Wo)=|<>fYiPQUE!xRZq#&w#MO$1CV))QL{UwdqaalL?0_^&ih1o_~(*|IQ-ykDfA@o7)Q)cbBbH!V#!ATkDE{y`nBhbDLw_tdp=u`yS6cC|GwBV%7{sbpHt5sK91fDMCv&kKf+ zN~0&hUVOrG(}>1QzG6CY0&ba;|Yf(Ks% zn!~)B8J1I+Shg;>7dok?#4w+lD+1Si4aG#9_tRQzP%7G0i*+$Ab3>dAr1r? zLKqX$=O3a`t?g9mpfkMwJSPdfC;FAT#m9||T2E_Ud^a$x%a`~@BTm%#qW!JP`-&9O zeb&9Q0Xet@u}$kAPY-)oO*LozO*5z$o(oR)|oO^Uq7>@>F#IE3bRC& z`HYPUQ~6Ur0p<;n&fCT06y;Zu?^okUJRh1Ih;9xw1HT;3VV5kXLY5+Q!>D;s*9Ie) zB~aur!hBYz8l=a{QR|kKwmmk5A@47Eg2y7jzZrciQ7)}Y1Tc@ng7zU%j*%<3`%ifHsGi=!vRJMl1p!b*i08lLOZcPENHOA8dVjj1GVjjV%g2A1! z6mJs{u|~&A3UQbj3@9)UmKrKB76gohV>Vk1{1~_i!6iW>q&kfn27oii7e+lb^>!xT zzg2r3JKGTFgG@vmxOe=z_eR$HWySR2NzBderZ~H_VY0lY4m42?87;QRgs4N7-ixL^ z8A2CBHa?6aR$5!#i+k|JK$Y*?uW2YrhHg$8LfIk&VZgsnL!potp-Dkvmq>*8Jylgb zqFc zsL2l=nq9@m&5ub$^j5!aKx$;%whD?G0IjFAWG@VL(NVLv!4hT|OAIo~s8hpzVE^$e zN7HlAa^D7vHMF_yPdI8onA}sf6b`3^{K=Yb?h1POOG9IFzyvs9(H*Or*jK z%t!QhN=p|855-0yD|{~+I4gdaqFU+Q{mDUojpXHUEt4flHe&F>$DeH6rbt6x9lyb# znIAeGg*3-0c}UASHK0P@N4M<(P92zT2bQvm5vLia63dF*+km2+fB5r|!!99ME<-Pw zK8Tx>xAKAB#c#nS0M5bjoM=x*&w`t*>h(@o%kz%kuq8=eTS_b&EqQ$XqHc7qs>e(zZ|3z) zaemrTUC^e1?)?=TI<`vC%V61S3}N`J>z%F~I_nI@3^Lg7js}*8!3*h%>kplv+l~;; z@7K!>B%gti2*+1i`F2eW4@0W9)m14`^11a5jWt@|H049L?vr4Ih1j}AKi7URvD5GK zM7C7>z+WI2`{mP#!>NZ9{WtsiOu7<4q>LgKv4Y0OD0!T(>T_8=^MlRBV<|6}7$+kF z5S`hO-m186#}zn!jm5H}%ri>rJA#sO*5`0t?`Svjj}U6wvesPi-O zzu;`&^95}cz!zW#%@n|MGQij+Qw|lOSExjZD^oNJGXw$lh+<6PyxlUPsV>4f`jB=- zAehM7wMu_J$kX=J6h}Xu?VFGmZOUU9*0`>0iiR-Rvo(kFR}%M*|7>=0dTQSMda!w6 z;-A_N1oR|($3OaFRPi0by}|NBCr`e{g;2R`V^%vN6C-JV``|4G8KGQ zsCUUmfqzv&xiaE7GptO-yEf3Rd3NdYHmj zMGOBg2vUPf#aGV;+s|t2PMYQVpIh6S)FcjDwVvA>QM8|VW3rBxLoSTVAN2F)?Y7Bt z)~Znk+h04=%K)DO%%;u;VTEp{felxIMQ%#g8KR9nq|-GwD%;sFyFQw)4)S8A2<6Y} z>Z!k2Z1@7+qd3bBc1{`a)0%ZfO%TYcLK846Pzk-$57=lVAd(D*xT^hv zxL$xEu5>wffXt@u7lz}rU?VtgBW7f@HYvd3SP&TEiUs#tks8&jF6>km&gIz67Rx~3 z16PisUmP(eU4LrMJ68rfFcc|x)kB)J8*iLtY$MokVBtgaz^}1Q6h7+ZAyaLy1iEOR zvA6^<+S{B%R=>v(eM^1fFpU|u#c;-k?tu+q3vMxw(pYPNWYJ-)3`|8@8iSM9O85if zYABsONlnru;BmOkE}Z!e`|EB)#bjCvhI9%RJ=`W>L#a<#mehFm$J5jv2OnUwS20^1 zD@!dhBONF|zQb?=Lxri{th!B)pBFl(mDGD#x@+K0RA`X~#vo|{>ME_D5(%(d-e}^F z#V{d7Xd|#u#lOfZ!y$tyNCxdQ>KF36?n`qnl%4E`>s=l8jE}JYK2LZd(fR=T7!OSb zgw$u!dcjmfPQjtpN<8Ovf!Cf{w2P0*$qP)7C&wtZIwlb+de{b^Uqfap&;W6oiQ-_L zGe8_(3Ic%@;fRo0Go;)Yz212vfHBZ#qaTvuL;AISYm^;2xt6WWy>MOD?Hb?Nd#<{V zf<9O0{RNpUgp2wSC2u;Y#gsH{px9)A(-b!Bg1p2;(O(Jr*B7FAgMJ%*4f~@IF`?3>7hufZe-U87Lh^%Qc87VAvQq_sW zM4o$6n)6@HnwRvcnWRgwrwbzVOs5Km5I)HB#dTeXEg!H3DCAmI7{Ks0x>#udEuXYS zt*$?r4=6!semG)d_zC>_Bt(=Q<5Zv=#v0}rhEJ7=vn|J~hw1s)5>2FIQqec!=TSl` z*OSi#uYHff96sHX&3Jmq6!-qRY#Wt&{{yI!e`NBk3^D%cK6G#^StNX0ctSFE9qY{3 zv#BXez%Qo$_a^ZzmERkU*z-LdLH8Q8Y*$zh?vYYDap|&)nwQ6Z=KbXp29; zz-Rl_j)Mytv7YU(&s^YN^?in6cXx^*{_KN=$tu|nQeC#imZitN@56e9WN8y>L%2pl z1x4DiD~xOg*s`dq{a-Bw;tSnvt>2wcpU;S;L=0Z+=89oW3Rk_`PRt#ggu8RZd3X1DxCtw;-Uqj!7=6whKFdg_P9ALxh`p!2ny4@<#WnM@#e**T zx5e}&Eew-iW!r*IF?uym92wruYvN@L#58JjsPLbmmpzd2y=)SXJIF6toLHhE?cVEK zR*hlaV7%K7ak3vlVqR1BmZSIDzYd)=W#Usf8263*D=+|rrwmO){OgI+sN>KS3Z5G# z{d2r)Zq8}N!wcF3K;iz?(g;2bXs~m#b8nhk2K>#T`B!%L*S>Xlyh2uK`d4Zf#32GM ze>*S_OB?8ih}3X5h1SeRPT2s|PMbIPkZK5Am@CTS_H&9e%gQM!Fpo1pW@Kd;N|XYS zWkvH^XvpnR>-$3>F;f`DnL`RNzbE`I16%&+&DMM63RMG%K8jI#yFK`E&>_$VjZ5O{ z8{|@$s@w5DI=?i`U?U+o=v(iw0v7?8i2r0b#+FT?tApwZAZcL2A-Om}Xs7_Y-)5>P zv`;&4K~l0v|4({M{#(c5-#FJ^1!I}xVqy0|{9<5gjEw=iyCE%q;oyEkQf2-IQ}gsk z*NE$p*TqBGyd(Dn>)$N$F*+{HtYEa9vqG6_B-#)gE5Zny9P{wlWSb*?-I?|sReae z_@y7mOaoy#h0tZeNG2649~p$QFq3dKlv3AMydi;`AzY%b!=Y^)$ytXc$Cw~LI!4&G z2Sb-N!oq3hV-vd&IH7W{g+pS}<}mj~6hzSyC}sr+u5PpUrjt$_>~$~ZzGD*ZR2zr2*HY$bon+y9-D z5_xJ2VJ11_Bf=Of$N?UTkSe6o<|z!t^T_kKdb!KtBZ=(qyDnx4@aCg8m(c_|^BX0nDP7*I)xg_4TW%LQgeJ1Zj{P4W_|hor0t<%how)&Jjc>#m z>C zQ#4LM0Yt|ZrTq+}o@Vl2ww$@~a4Vn}_P?{g|1}u1!HUKVdNhQ?21RnfrTq>xD=@xc z2W@fxU3Ji30al-qQ8}87c;Mk6;eVa6jU8Y{K#1k&42s~x@t*=UP?XRBDriY8RvB3M zv}*^zM`o~ac71i_cB!H67Ipo}*YL^k%8x5L>PNJ?My5it`gW{h>{XJh`lUL47z-$d z4weWz@I!21AoN>YE_5!6^l|tB@PvB-#DR>22XeZC1<)rz6aWGi1$e5c8-~PKsHu2_ zyXffv+3#=%fF}_(c&W~>ZeSp65;}fIY)JnmV$;1#m(cPGoUPq?1{vnSa{(Wpt9tER zk)f%5#P#GSySu9gA9Fv+#r1`KRPg`if01>d`n9BHVa}vm)NI61NN4^BG)M@HdeW~k zHR;hdesH5e(H*x63PX(Gh5NP%-4G1@9SPqQc025;LL7OnEgMjhO<*q*-0?+k^Y;?C z{%Nfa4wN1fJT!)&0o3^eSBok`!%Xg-n;O7;qXbhl1xj3j#G}0sHv)-Ck34%OhpkSe zs5F8t!>Z6dK2b>O$qH_m(NjDe;-AoZK}xIe_u32{B>1%v^n(VO zLGC}al>d{ED+f-x#;T07(3c|1DYDJ~(sMx@J%}VgSQjf;SX5Y9UrzIyK5(yHY-C^{ z*%0a|Gpo`Vg0k|s!Zq|4A!x~95zlanXujjY!Z4iSs9#HE{{%SpD;-(;vG4eL9&Ty; zgXs$J<@swLxfb7|+sVEqNj;Nq+gOV*Xt{I9e!8<>!|`Sd?t_u@5-O(vID&2eV_0#L z{uR*UTUB2PVVR*Sioj;flA2G3N0}p==Vc|x^sJC0rg(z|YHcbyiq&oQ1lS~?(P>lr@oP3U420dONKd+9N1lPcB8R3!U*4xpJ=lem#4dUT z1D0EVfc)@Lh<{%XLnjtXPta5aG=tE8UXTANL*)VnR5Gx!Oia##!IU7A4@e})kB~Cd zaM0AE1T|nZo-ZpbCHlcHhsiOb`v|sZh`d!!8HjWo9+&uGSM2+3*PTfh@W=N3lX&CP zkC*Ek@;dABl>TTCu{t6($?7HYcTyqpWpr6LsG8q>ZeYomamD!avDnkf#WT`J6FDc#RhZ4S>#DCpXepKe^Z0ocAL2 z1jciv`|b;gxp|@*dxCo`#6E3PZ^ED{s5B;ka<9aXOA8bqi_NjV9G zR+NZZ^NDv{=t~p~Pc#(+)vp1rQtj|UNmj$5^&(NeXr6rBEpR6F&g{Wxt~l#+Td2{@ zJ&|0N{J@c-s$oKfSN#F7nNp|-JFW=@L80XR#S&8(dZ?~7DYMG=CdAY`i@C0~Wl=)a z2H85}vemWeX!T{(7Ndj2@ugGKc%w?ZNZ&^WEt~jh7j}^)h6sr*}0J08(i45seVkR=aCk2uiurT!TL)oEg=|0N9jI-a% zO6&dH!}q*~Q?#p9TpE zq7wm|NO3V#U#Uq+Qz2riEzxlX%zh0flzP>>K?-eVs%xoB9HwNcA1fxMI!7HPZ#dN) zO#fE5*iJQny1CzoJJMjTL=1o<{c2MSa+X&zKkIVh9k5-XSb1Tk^!Zfh*8i)9p8_`i z!S?NkU}{EQsVrNvRD7&6b`3(SUA!dQ-7S0I?#|Yx;C!&y{K&v?x>H4;-GgsYSD!O^ z>(&`6s++}DZ$WKHOI~-R+tU`dnoG^L<^uxB8lj|OR03pNrbBS);r=;zv`10{!O>k(KQ46foIpqu)FOiU1& zu=MG>#YTjBd8CyhszH7-!p16JqCwn1ZhgY{pNGdV;!*C;@}L{a{KAouJYK(ah~|9N z=969rnBWP;xp7ae>Z@Aoj_f01IJTaMwkO7m#>A(qxgzL0_C#{ph;cW+lm;LoyBn!N z?uY@rcRF(QNwDy=wJUA-)d&kSxN(EyY7N!OPGqZA6OG&Q$LR^I4C6ALh;@R1Il)w+ zI#tBl<1aM{#JfUjySIi2uF8&Tv4r0FoP1VY&IZq{W`)U^Kj|I~*1o1(EsI>V{n)8( z#sjc+rWw4s%M)KbC}6rT=Jhg!m4@6XQWdycD^v7s(YaQd1oQ^5$dli!FZF03$!C1g zX!2AkPEfG;GFyPI2en7#BJWiXG_uon@72?(ALVrs>vX$5F4YaqBk!o0ZzF2g&n7pmdnA;xAAl}5I&Mu*Af z&U;BIvk9~%_2z%*3aXTv?^u;Yx;LNjJ|8eo1<+B;zQMH7JifWNq;zuunhr#6U?+H1 zmeptCOAy`Ilj#BBYHSt=|= znyhz#5`uSaS~m6jX7?| zm~X2wGA2HCD~j=2_4gO0KzCSZDX400&Si$aRgL<71&FRHSJ;u`C%Al*kFCXQ$_&?T zlUSyTXT|fR_H2U8VqZ@D<9;k6&EYYS^V)AtbED6_l~}ZP5;w5hz+jr;R+~~;6QRxqyQs`^*MNe}c5g!}s zo;F1-A+mv>v_|&IVmZgwi(?N6lyU3kIJDZYdd=#gP(`ZQ=qT$-pgg!uco|jsnD*;G z${2ijh`4byOTOYs9sNAht3PM7|GG8kOws;Sl&rPv%`TM}(7KE?0AQM&MaHqwH0o${ zcQDQX&0zrh2w}X0{Ssa1c?(L6uN-r`0ZSf4Ryy=-D9l2g-+HC@Z*53D#`#!w zsg{Qp;G+1R=Lh@FkMJB1XG7lL^LGvYL>-NIDmh&~MYgMj8(jiL_GoJlZ!}I|eiP!= z+x?PFGty|FIOMMgTZ;qB7(A7~>rtk-`30I_do4r_nDb&esH`BnooCV(-O?VX5-czy zTfEeht}H8aj`?%`u%0@)|MnC9&teU+cU@Zv)_|Q>ub|*pf>_bjb7O=_ZH7gAnRggo zLn@a+mOpu2DQbAFLfOf7t({A7)Zl0#Um{+eo2YIrt3dm~r2HMA?!Mb>Xr7f1IKLK)|2hDzKvbF5x@m~)ztGf2 zXudxf#3g2)Nw$p(7;@E@v_4V7xbaM;pPV=P<$DEfclI=z*Th~saj_SwtZmNav%t5Ym z6&Pr9a3yG}WSPUUaxeH+%H}-OyI()6tjPVaJ;$*%B%HZw;8@7r%L}#PyCy(R77YfJ z`2w%6yW31(dx|s{d{hyXk?Ol=k>|fT!JC3L`}`>fWVtcq<>@Yf@$ z0Esk74BFmTZGrU8yctldRSZ2HNuf9PV^;lcRk&8_xj|VSOd2BAh2l@dY0)y{>%iCZ zJMcrfTnzLQRpggl#TyEw08I0lo|H2NbV7pq#MnC)TW$Tc*o)wU^7k=cy{bMHPM$X= zO1H%hN0>39cX46}>K69~Dq$DA7o+mj8S2@i7HGEn*%%mm2j5VtpGF%>a6Z$CjIW*m zIcg;k?ccxzr-8)Tt;)T>TyibNp$ioK4jXvijlNp~9G=0kS2W_jCD2bRTFBo#dDg4G zdqW!oLc^288SOclb0-%q3Ngr5ca})Ue16JCky_J0oHH&GPhD!k=G{{%xoBYLV>MEE zomCxH9$K}rnU%gX6L1j#Jmg(GHzFMSRFB?SDHqK1lq`Mwj z)}QoZxAHQC-W+uxbJG@~S28g4OQl>&aNm9@a4-3|gL0GKlFg&?y+4`hwG~J3!9!c@ zS7S*nXRMLwN24zV8;^SCV`Wl5ztG}5e`F4qqn(UUV-&!TeZCZPfaZ%shrfvZl=t6TCveGZ}2Dkd3JYnjoIWm*k`_kdVtCZCDWCbZ~# zSgO*PQwMh-iyW1MRFVlbI&56V?TB0%TL1pf*=!SUe<|A>h$0 z?zy#iYB-8>d3BLyn^dGf1Qv@Dw-v(soDnIBF1)^PZ-<_n1N3d|ymPjQ!#r)~MN+Iy z3Wf;8%CyRPwWB{hILa_|p!OWp5bpwFVC%Yq^;{Xh;kpy4eAL=amrg7HujJ}XJ- zmbsnXYB^}&dlaHW`{rbfMkkU+f#}PDaNNocou)}|h8(po8`8qeOt_fuo%c*PprO5s z@>zK;%p&zPaEU&vPE~jzo*4p3jo2yox)aK%obLo> zTF@auvKD<7To!B}aIo~!^qV|QOs61H!O~EVe^aA3B8F9g@-mTV;Qd5Ah?)Cl`4VmY@0JHX9t$>?Pi~h9}_5rEqKKw%{#aeAyqf zG083RXr*Ij6c)blOVoCo{DJ}C2zjGHLZWy0P@}sD_$%1ICfpZLy)VVY`N2fv<6Wt`Mr|}woSLT5%=W}B*Vi7 zDnEQMLjI8rKnFC+BY&hpUmMbq7}o`nI3dh_5$*mu34e7an!NN_!UtV@c z(YR1{9aq1z{`r|z{0yG!TA!pU`8K9~Ebhj1QHH#66k|C<9WAZL+^(}C)H_d%B(o5@ zr+)Bk3H6o24&pb&)O;355K7%s`a+9fl)&1qi`&3gbweP<8y)Eud#oay&8#vil-<{h_BXmM)~248?1~tuw43D&jIzm2MtJ+3R2IOYm58+$L^Q=11=)%Or4<$d7e%F}%ZhZyUL4834K ziDB(%#V(*1+OHoNLb(2z#jzYl;IwVC;OQaSjlJOG;s-LC-K`x@m+mPaM)c|YhEA%& zKf-=(Vv4$XJ#3n_%0g)gW14m&g9c&L&j>1nZA9T>+40Mfd8C+Wwu(9GKmNuJLaF4J zP&otcqjBA{B>Tf?}RI7N&Yh!Q{74yfa(u1MK^;iGb`p^rgZ>p){$4wF0Ea+%K% zlfqlba_LAnve>JAV)v$~KQcpvGe8S<>g`8fJ=4#Kfb#G{{*peRv8s|ByneU?ICN-ojUm_^j_g z?h?xl-QG`{HeX9+uGxyrEH+NWuQz_X4L6Ur+iZRwuYBjW)IFZg{+tBaT)e2bF03&ZVp(UHkIKED3>7A2eFAOQY8{|1h!+up$XDM}37&G|MCY4>=GALQT| zj9G+B)Y}&*HX~xoOwj7}KE3Z0$|zxfK}zcL53>@H*Q1C!AA*{uLf z41EUyUY?1cMsHvbZ|x(cT{dUk;2Mc&fSkT=+h~|9!0R28j-#Qo!yhPppJATpi0wbW zW!TMW$SE)EsSrbLBk8{^a@p` z3rHS2Q}VU8QP7@fPrv)9l@WLeok{coM>P!uU+0RONJx5zvAjt%dp0Cghnke(0!)UZ z?h#f25UVTpL~|0+cCI7)NG14@bRU~Jnr@j`A$Jkc@3%&*yWv_l#vX~~OI|l$D^?@T zG=Ga{dOR)@1u0#n21%nbq3Rjcu-!f0dWUhpxKd!;QBJ(63l8bB{`OvNjxwmPfz;NX zh_>U?!ePpWWJY%}?9YM#Kf&%dRKRRC_M9I~_oWZ^J|0V)GFWkua?aaDPrVkKYyD?j zV%FS&3)(n&bHUOd9JYO)w`_01o401+e7Cwq-)z)g69}M+*2~hTbKOW^sk9c*hO{BgFij@IKWzeg&D@2)#S+Ukc|&>grpXe_Q3FgkMz~K zGYX#x7T8r_J3wp!xk}jf0cT#L_l-*Z &4dyAUYT5Fe2%E(8!CnWK;&s>YVl`k>M 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%0D+{b`?k#(hPIBw$Xn6f?}mKNk#qa zA{8rblvKE&C!XpO+DT4N!=ia~FrHb^X@wZ|Rg zxF26w+%}+#X{5}3XuICup&VCNy=W` z_hZdjl8DxRD0V@@vf%?@g%)M@Bv%&z8a&hQ{diN9OX%8&siXF9?2hayzRXa29svwx z%UCO;2;vglGWHx_GR#~<2%gBmJJCF3U%$j7nobWG)zdPrY?iev@k5_q?q~G{`@0yD z5rA2&Ux@RdDtwLhq}5z)=wC=?vh0LxugixYSPdYeRkV;vGl&P2TQa1*w~!p|Bl67Y zTZa!7Wz}Prt?$b3Nb6A6On(yGMG(={g~B(!9>y;B3Hbiy^g`293TZ3-mB*-40Pd8T zzPSz&FG&lollHz!=1vu5oeo3N);p81W3*#n`?9%rrO{q}_-HCRJB0FAJ0HwXwrUG3 zybrJ3L-eyfP9QD71cc>T?#=dGIVT&@V)y=Q1p~v}?}F^_70ub4{ME>l=-IDn zXydf}+z6qUoo>Hz6t`a>N{``Tq*wJ0*8Q{MwGjy46_2I>Z`im53KCE(Jetbo?V%wQ zt>V3-CX=Y0YeN<$wU|i_P|wWm`FKnk1H>Dkt}d-me#BK(jnnJg=#HT7yX`>qy(Fd_ z5AY3L7X!z%HI^iYgM-xHrl%5L#4ix>gU;~9a~n08;5@7>@M?6}K=^OHEEpq3L z3{s3V`JrI-alo6Rz&*evq_${}LwQpxG12vrzle9(9#!Xj_QC>1@{ioAxdH5-62h+UAzH(r#KZ z4LMQ^@ByWI3k=|IWsPvVocjVZ?YfTU?|kmEz0Sa^6;O%2C96B(fkv{kvbUhzR`G*eq)yMrEr>*Teul+T!)nq%0JBiYWd~dX(nm^BIkDXwyw!w zilGpQ%706r(ixkY&q_a@S@jV%hIG(Rb=MqET`$7=(INe5mixGnCH+dMooIYSwJ~h~ z4EKP!#%ISR;rf1wFmYAoBi~xG)6MGbhffBySdUkh44ii!GMJle_%0$b7fjGB8UqjG zM_>8WH(^dd$4#H-as1`gvlS?;ixit>wuPRfC)6%p5+{Q0AMJ>~-g1t&_kCWeb9LvS zPNhYLCQx=XgFnj3S)>y($TYM^NX-BP{5l88j)O&(`HL zn4jqY_1CrN-^BbFs%=J4+6-{C=X*4T2LOF--5Fg?wdQ{%l4H77p8Mrddv{96MUCY% zIzhoX;zBJMw1d!k{s~Bb00tmU2jhSu)W@fX@}@&9H)Dp$b=d&VYB7*j>rLC2L=@13 z5H_PmYP>4Lf~k%hwjUxxX3;s3d{xn@{f0OboZOtHv^nHxZ}e!or$oXW576}*ZLF)U z5EyQmXIX*?t-5f`Ub=32Ho)32`8}HH$x4}P-{fre4*9oo)JMnZ6Ud)(>Vy_1N**v5 z07nh@kN)5PjC(tL$;|Bgm}K7j5V1YZtpz2HB=p@Hw}0zX4KsrOZ?JDp<`G&kiZO_` z0oHS=*w~MOXVqgnGkuv`AKgw>0mC*HMgZ%Qi8Zl)490NOAB{-g#D~66EV4GE_sne( zdU-tAa1HSOHs4FE#zu$pQ)^l8jV&+1Y47R=g zqbd<{8>#9o#x2!VMBv(vncOlYMu6oldV!S|0Tb;3BQkZxPB;MDNu1k3JqZU$awZ%= z?F7AywV^szW9M;?b%Uzu1cR3lx0aVF7o z&&cbsunN;C$O0G09T=I={g+CTSFk)WQ>6fyn3kfh4bNcanFGr8_XZ*e-%uA!-+goB zXK$}AXkD0Z zl$E2Y*zgW;kQt%V-ve=s`9;8azeNICr@7znyq29?P{o7=edwBP#KDUq_Sy%%=<+raNl!bR4q z<-I4D)C}&gRdMi0eiUfy2Fr6TT<@Y6<;Az9f(JX~8!hbN`-vWR4HPo?S-zeX&+)C4 zFob8A(AYN^(>TU=G3?!h33wH73tt*OPUY)7%{nW=@# zyz%+j`};)Idfu=ue)PaqE+-7FTaRAf1X19_9cwE-^r|qWqU+-GVLAJyQ4RN+q{{G zlg$wu0kbzZpZlB%p0Ta${K{>x6l!-~tTOFNpg1&Tfx-me-s;4Wihgrk^P7Apfax?w z3&|{th`?#}!Q3du#+_i$?YtZgr&2qxPWSw_X`Xwd`q`K5$idF9TLlkP0}$;cn{2^a zC_})TmtSMsU{Y2(O4=EV_4pGI6TH-t@{Y<~?RU3}QP`k-FM)8je)6XF^VQR1jC8?# zIj_N98!|(8W_{_<_$BYQIQ)CGWtwA!?CThqUs$h&i(28{3no9$>E-P; z->lc$ueVfA?gL{LXVKdZ~rw_71$ieR;Vz@#@R*M=4LKo-)B?N z3^PqZbTiTU)4b85YOO#VW+0>P``hYxLSp-fVn{V=p5_lV0rKFCK0qh|zZ*_iOYOlSnmF8MMgrk8S0@m&W`7@$znssC6UuFliS> z1f~xj@&W~#inlVxqZMxMXa=&#w^lrJKXu>5Gq!qp-rl@6v1yCMiL5?d4YmCQOtgiv z?Coc+XNj~db$l;(HhigP+-aE&?*PwErio=(2D|YSAS2)WFqqe#0vr1WBUAm;B^VP+ zJ&3d{yF3x-2wsre5eTGbfad3ak}@kJq4j$Lr13r_UqPXRhjN1frzt^+!LZSR47N~M z@QG=_@6qL{khspo{XhdJB>cZ9$mr-{>8d~;PDm==|J8YA0r<+6wyKmjYAy zSXG2~a*b$MDnitrm)(Ott=0KBusn#a~C~a_In=?_DJxu&RPLDH5bF+hFfL z54nJ_5W^r!2`2xh_5$hR1?fOGG^pci%% zcjCJ9Jt6n#-LnVr_wq^4@@^lxsJ?U84Tiy(&r6`A^K-;?@!pA z>^_GTerUG`A^y?YGiEenXJ#{5SCy0b&~C3Uz|t%*TyEJRsiDhSmMLSfX^NqjN3>I^ znkLzv3MYoyY6H$I-bHvneQ)!;%fY;x3EnYqPIP5k3V`ko29HnE+sNRk3oOTq<_Y!F zGQ)JjP1I+xYnIg2B}SZ}-;p)vO45@*bY#!c!j8x#CX7QHh8fz>N|7;FD}n-+m;P{W zuTK{E0_yXNytA&!-%)kN5R+~ArBGLWa{3)ksvmVQF%a;>8q(0Xq|)WZ2yILN>hnCOT2ckQ=IdXhl>Ra0v7d$o40YKNDT2T3|FKK%p%t zJiy}vlIj+VXmUP%vMit0G>MK}7mZyPMcc-#rnK%O zltC4CmR3b)Wx|~M;0o!vyIWXT7~TLjUkn~@NVZIWrEQM?8awlU@cIsOHl1&x*ks-- zObMazeSwwS`K8aCFNn+<8d9P1d^xW%Tmm42G?_y9tATHw&sUl&?JV3)QE9Q%t1}e9 zVZ-j|t2q?m^wF3Ok;BF$WUf9f9wyrYc-MOYwnC<0OoB3EiBR}gZaZ%+xy#*WFIVIS z=k2*alV3cfPEj|!ORNg$4E0uJ4%d68B$bGMr?VJTfE2?!XyeZL_E-gxqb_7{um`Xd z;mpKu1Ta`JH}Ac!Q-5(44herrYBizDT>BUc6AM^NSBJ|x`RzRVojgm-4`BV7p^WEH zwYF9tC2c>p-!!FtFC|!CSB#Y>y9AS}$=UY7HrcHC;NE$3!+A6dBjvQxP3TL8Y*7b= z)&vbr-C3~pucR+cZG9g6#?9OLX`+Df(ft&^Y5&Ue&rL5zy>1cvk@F|eRCJ@yUPV&o z&0NRuDO}Aog8GGvlk58_I#iY1`u1GMAFU%7>-R=#PRP9d(h25K|LgbXiCdJwYXw^> z4hk{*AJ>BdCEg;HTwE6)NB1bgF5a(P!8RO!F66gbNg=8nS zeL2+Z3sqJ~)BrAy%g&LcAivU}cS6EosguL+D>eCp;Uz7_U&&iS2J{1jH+CmO!R3r}5W6`tx4 zhw@rKZbWZB#xqXUp>zKg+coE zgOGWMlVMa%LfoXTfj;6Gtu-1&Ex!n*S(v?@5qd~&)j5OUYlao);kUd_n4;-ff^%fo z$_=*`NMr8{QKDtrAMCN2;tHlY!0RVWoLG@s8d3t()>H81&iTS=lHC#jXY7zA?=ndi zFr(T3UMXs({t>P-s1p6wwPCYvjtPsxmXv(W#sXehn(k5T)l1o_?6qmsouvNr=;~|oQwk7| z!+E1^uB{XN^bJHC(8R+@dO2|O*jAO4(Duv7*Lh=e>$TrWu$p#FoPP~?h#~V)-23o4L+J^R!~j+ z^e(mU6Z5tMfc%cUw8?zWg0u}7iUORqrZ^{7mkp^h93y8Te*L232T7J2`D{`8y0*_; zg3GcAy)Vk+=Dy#uQaY@lYk7Ti7cT1M<2D7X+|#RSXBR9kkNCV~DA(n0oL{~>%vcvT z*UplLWeKG(r#k62%|>zgd(7DuihUMinb>e3ISeE61Hf7x6lE%^v0&jJ7S!81=8Zq9 zX|S?T@P4u~pZ{T4kY>^vU6L+^#b8+>(>43bC&ofc1X_@0=XOF$yIhusp-Q_97w#3k z@OkSvH98Sf;5s$C8+EZ^im~lw?xj z4Lrxg=3wFVdf9Rs#?#$N>Ws;N*f__8XK(2P2cQ^!F4qCQ;Jqh^1UcLP}!#4dv){z9P&}5N*}xiTy>+2Q$WNM zk@(lQP&*FWQMO+- z%(A57s6(5zUX%#I8f`C0$?uAcdR4?|g_lRY=v1U{D` z`5+X|xD8|kFR>80t#q%eYT+lyh~!agz{0A8?Qftt90cGO}`v~Q#Rkipe0ZWP$YNsq+$T( zBHP_9DcV?;F-Uqloz(hxgEyKnGAsl zv?gDZ53hJswh$wpCrCg&?6RUse_MuMt}eojEVEZAtK52P_OUwOTOg|I(;ZWWCre*HeCM_#iKdWv_s!ynW$T5VWVH(T4pWaXs+W_J%~D{AuuHNXJN^yBB2ct(1=Y-W=|^_buU0X+pA+y zPy}1WicY4dbT2@X^ivVGO8R50|KnqGW-sy%m~?Ub{mHD=Z{$@O82Cv1IP(OVl9w#c zvQMa5L5@kSNrkcoiL%=b(U+xS{4?`r6ti2i8#x7?NjR_diX4Oh*?nI|zS2(RJm!of z`Ibvq2~RsRqT>_hq~qYo*{%_PGK?hokMLYItIcxV(WY)gbbiZGwSIdJvL*fobAg76 zMEFhpmO~&NOm@_`y!kV|cAc@f^n;JffgB`*{Z-1mO_*kpKaNah!u3UpBlD{ybEt+) z&uPJn$Da+RXaF2;I2At|LmKq*MsBuSC%d9~P+Rh1pEm_nF&mQt?Dxa^z#a;Vc%%w1 z{Y5<4lHUozD}{&S)9X2%St;Jv2Liu+O1P)kx?sI-(&e6$Pv2;_kps75`K4V7xEpfb zYhs_tg1Nc#jzq#4&NH%90-B#Llo*B}#NtJE<*PjWMPw zhSwrjyT&zM$nqV));)w<(@!={2fClKJ2d2N3uyZL!{G@nW2P<6pK&vNi&zXSH2Qnd zzWb-X#c&USY zLJPJBqN1cEX_!2*pet>r4dT>z1gyN7XB~pJoB$(`=F5z-9k?=19dA9f_P?l$wDuwY-USk7x%yO8Q=PA%!fMlrjLB zLK91c{_aPL^tOat>aBQu424v_L^LA|xl|>p3Vn$w_wJVvsmw^#5G%!4O-KH55&jRG z3%)NQFxvU#vZ3mczt1;zHNZ{H8674mHeR`{VrxM9e> zl>YW%&#(-m%gZg^&wuPQn>3g4_aBKU%kRGNw|G=uKOh^87fcnFXzSLJS3TrU^?>_I z-3rJ{I2QAc(wO=`jJ8Yx&=`QOk=GO$zQ@+tG6zig&r2p9^ zkExeBn$F))vSx&hQiDt(a1X2sBJjK1aUyV_WhD{#q50iV7FI-d8YV@@&|WK4Zd2Jr zg3{Q6qP9-;)#O_AldV~Zj}oWeKY&*{QE$$yJ-IaJExv~8QhuGT=R2z@;7SPQ6$LZ1 zccATPkbrSg8-kSnu;LA~4JmO1rb#A%gc;3EdV!}{@n)HVrtok%0GU5*|Gb=Zq11?!&Q(2>%cra3kRfKK7< zboxQzviZVF`2k=VXOWJz7iJKwpJ%}t%rjryF->O$+@B4~z4Ejn2G9T)fl5{%z~zOm zyT>oN^=QR)R7)9)2eL)S^FH=|3!H8FM+NYbDd(s0zMm_B(7~+x83Yr;=&(RNuIzx5fUh@mm>&M;jw84f z*(ZbgLqM?mD_ECe${W0(0!Q{Z!GX?90q=>wH;g@+SFVbOl&P9)LoQzoBiUSF1=%dl z8MgWPjMP6V5hkLQ*@a*Sg|~-dr*#s8+jR<*B2DLyttzIDR~wJa7Ou}ba|p*{PSQ-v zV0o~;U+`0AmEC{vX0@|+oc9cE)!ln_r?2{6DgS9o&^-?kxZbej*F+ETGZTwuunJG2U3`nj}D@9qky z+j>W=ub=6rI*`7XB{>jRPwk2;1;d0G0ru9AG94%?;^xtHcz_g+YFf!h1WvCA>hF1) zf|n7ii~Yb3kJ%D{?gg;N_fP9_fRVbX!ct60P6M(shTeSg3|8Su05~J<^C|G1u=%90 zT0s8dTIug(GcL2mhbVcA*_gtUX~@%pt*)C$G!wlk$J=^gWDFvXTxTx)2n(!r|`2)uv7!iHRlQDL*Y+2okRE z`C!ok^*|$RRhYBETx$IxqR;6L{{DF*X~JRI{Q603y4SZ0{uO1VCtwy4z5-x>33AIk zcS4EqJ%_1NZbIo_N+f#ze8QMN6&i9<1FOxuHodoe@$t+*1PMQzLvg;8ZtGj75Ug}( zs_3RANhJY2aV>L?eIXYstRSXFl+|h3|GvsIH4L`=?H1%}LV;@r35WAZJqqh*CQKNY zfq@r3%7Ooq@cR7A`2+6Q!$t2jgvj~u-AeH)+3{*T8mJ)@WvTEnI1MGC=l6Z2@4