a/trunk/mqttsparkplugb/mqttsparkplugb/SparkplugB/Function Blocks/FB_Payload/FB_PayloadMetric/svnobj b/trunk/mqttsparkplugb/mqttsparkplugb/SparkplugB/Function Blocks/FB_Payload/FB_PayloadMetric/svnobj
1
Gx_lvž!0…jüožs˜$)„°*!¢9úSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument    L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
1
Gx_l†Ä!0…jüoÙŽÊŠjj…5BÏ®hSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument    L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
2
TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagTextä(* This is an FB and not a struct, because it may be possible for a payload to partially or fully encode itself *)&//This IF statementFIF xDecode AND xEncode THEN //ERROR(    xDecodeDone:=FALSE;(   xDecodeBusy:=FALSE;(   xDecodeError:=TRUE;d   eDecodeError := ERROR.PayloadYouCantDoBothAtOnce;(   xEncodeDone:=FALSE;(   xEncodeBusy:=FALSE;(   xEncodeError:=TRUE;d   eEncodeError := ERROR.PayloadYouCantDoBothAtOnce;ˆELSIF NOT xDecode AND NOT xEncode THEN //DO NOTHING, ALL OUTPUTS OFF*    xDecodeError:=FALSE;@ eDecodeError := ERROR.NO_ERROR;*   xEncodeError:=FALSE;@ eEncodeError := ERROR.NO_ERROR; VELSIF xDecode AND NOT xEncode THEN //Decode!&   xDecodeBusy:=TRUE;"VELSIF NOT xDecode AND xEncode THEN //Encode#& xEncodeBusy:=TRUE;$END_IF%&&IF xDecodeBusy THEN'. InitializeStructure();( )l eDecodeState := PayloadDecodeStates.object_getlength;*    //decode length+š  dviTemp := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varint,B lengthOfMetric := dviTemp.int32;-l finalByteIndex := ProtobufBlobIndex + lengthOfMetric;.T   ProtobufBlobIndex := ProtobufBlobIndex+1;/l   eDecodeState := PayloadDecodeStates.object_getmember;04   //for i to i + length - 11€  FOR ProtobufBlobIndex := ProtobufBlobIndex TO finalByteIndex DO2,      CASE eDecodeState OF3N    PayloadDecodeStates.object_getmember:4X         CASE myProtobufBlob[ProtobufBlobIndex] OF5V         16#00://end of data? padding byte? ERROR62          xDecodeError := TRUE;7R            eDecodeError := ERROR.PayloadFound00;8‚           ProtobufBlobIndex := protobufBlobMaxIndex; //break out of FOR98         ProtobufedId.Metric_name::p            eDecodeState := PayloadDecodeStates.object_getname; ;:       ProtobufedId.Metric_alias:<R          eDecodeError := ERROR.Notimplemented;=B         ProtobufedId.Metric_timestamp:>z          eDecodeState := PayloadDecodeStates.object_gettimestamp; ?@         ProtobufedId.Metric_datatype:@n            eDecodeState := PayloadDecodeStates.object_gettype;AJ         ProtobufedId.Metric_is_historical:BH       ProtobufedId.Metric_is_transient:C>         ProtobufedId.Metric_is_null:Dt          eDecodeState := PayloadDecodeStates.object_getis_null;E@       ProtobufedId.Metric_metadata:FD         ProtobufedId.Metric_properties:GB         ProtobufedId.Metric_int_value:Hx          eDecodeState := PayloadDecodeStates.object_getint_value;ID       ProtobufedId.Metric_long_value:Jz            eDecodeState := PayloadDecodeStates.object_getlong_value;KF         ProtobufedId.Metric_float_value:L|          eDecodeState := PayloadDecodeStates.object_getfloat_value;MH       ProtobufedId.Metric_double_value:N~            eDecodeState := PayloadDecodeStates.object_getdouble_value;OJ         ProtobufedId.Metric_boolean_value:P€             eDecodeState := PayloadDecodeStates.object_getboolean_value;QH       ProtobufedId.Metric_string_value:R~            eDecodeState := PayloadDecodeStates.object_getstring_value;SL         ProtobufedId.Metric_bytes_value[0]:TP         ProtobufedId.Metric_dataset_value[0]:UR         ProtobufedId.Metric_template_value[0]:VT       ProtobufedId.Metric_extension_value[0]:Wb            eDecodeError := ERROR.PayloadFoundExtensions;X:         ELSE  //extension... errorY       END_CASEZL    PayloadDecodeStates.object_getname :[*       _xHasName := TRUE;\”          _sname := OwnerPayload.DecodeNextString(); //updates i to end of string]p         eDecodeState := PayloadDecodeStates.object_getmember;^V      PayloadDecodeStates.object_gettimestamp :_4         _xHasTimeStamp := TRUE;`ž        dviTemp := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varintaP       _uliTimestamp := dviTemp.uliDateTime;bL      PayloadDecodeStates.object_gettype :c2       _xHasDatatype := TRUE;dD       _udiDatatype := dviTemp.UInt32;eV      PayloadDecodeStates.object_getint_value :f^         _eHasValue := MetricProtobufsType.int_value;g¤          _dzzValue  := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varinthX      PayloadDecodeStates.object_getlong_value :i`       _eHasValue := MetricProtobufsType.long_value;jZ      PayloadDecodeStates.object_getfloat_value :kb         _eHasValue := MetricProtobufsType.float_value;lž          _rValue  := OwnerPayload.DecodeNextFloat(); //updates i to end of the varintm\    PayloadDecodeStates.object_getdouble_value :nd       _eHasValue := MetricProtobufsType.double_value;o¢        _lrValue  := OwnerPayload.DecodeNextDouble(); //updates i to end of the varintp^    PayloadDecodeStates.object_getboolean_value :qf         _eHasValue := MetricProtobufsType.boolean_value;r\    PayloadDecodeStates.object_getstring_value :sd       _eHasValue := MetricProtobufsType.string_value;t         _sValue  := OwnerPayload.DecodeNextString(); //updates i to end of the varintu`        PayloadDecodeStates.object_getis_null : vB            _xHasIs_null := TRUE;w²            dviTemp := OwnerPayload.DecodeNextVarInt();  //updates i to end of the varintxR            _xIs_null := dviTemp.Boolean;y‚            eDecodeState := PayloadDecodeStates.object_getmember;z      END_CASE{ END_FOR|2   IF NOT xDecodeError THEN}’       ProtobufBlobIndex := ProtobufBlobIndex-1; //i is now final byte index.   ~ END_IFT eDecodeState := PayloadDecodeStates.idle;€B  xDecodeDone := NOT xDecodeError;,    xDecodeBusy := FALSE;‚END_IF;ƒ&IF xEncodeBusy THEN„b    //NOTE: BLOB Data will not be initialized to 00.…V    //But we will start with a 0 byte payload.†~    //store the starting byte, because we need it right at the end‡`    startingByteOfEncodedData := ProtobufBlobIndex;ˆ>  //Encode Name (Field Number 1)‰h    IF eEncodeError = ERROR.NO_ERROR AND _xHasName THENŠx     //{info 'todo: i-campbell Make these field numbers a GVL'}‹Ä      eEncodeError := OwnerPayload.EncodeNextString(ValueToEncode := _sName, ProtobufFieldNumber:= 1);Œb       xEncodeError := eEncodeError <> ERROR.NO_ERROR;  END_IF;Ž  //Encode Aliasj    IF eEncodeError = ERROR.NO_ERROR AND _xHasAlias THEN<       dviTemp.Uint64 := _uliAlias;‘Ä      eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 2);’H    //Encode Timestamp (Field Number 3)“r  IF eEncodeError = ERROR.NO_ERROR AND _xHasTimestamp THEN”N       dviTemp.uliDateTime := _uliTimestamp;•Æ    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode := dviTemp, ProtobufFieldNumber:= 3);–$  //Encode DataType—p  IF eEncodeError = ERROR.NO_ERROR AND _xHasDatatype THEN˜B     dviTemp.Uint32 := _udiDatatype;™Ä    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 4);š.    //Encode is_historical›z    IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_historical THENœJ       dviTemp.Boolean := _xIs_historical;Ä    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 5);ž,    //Encode is_transientŸx  IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_transient THEN H     dviTemp.Boolean := _xIs_transient;¡Ä      eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 6);¢"    //Encode is_null£n    IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_null THEN¤>       dviTemp.Boolean := _xIs_null;¥Ä    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 7);¦Z    //{info 'TODO: i-campbell: encode meta data}§.    //metadata fieldnumber¨    //metadatasize©>    //metadatavarints.bool * 12offª*    //Encode PropertySet«v    IF eEncodeError = ERROR.NO_ERROR AND _xHasPropertySet THEN¬"       _myPropertySet(­(        xDecode:= FALSE, ®&        xEncode:= TRUE, ¯@          OwnerPayload:= OwnerPayload, °T        ProtobufBlobIndex:= ProtobufBlobIndex, ±H        myProtobufBlob:= myProtobufBlob, ²8        myKeysPool:= myKeysPool, ³l        myPropertySetValuesPool:= myPropertySetValuesPool, ´X        myPropertySetsPool:= myPropertySetsPool, µ&        xDecodeDone=> , ¶&          xDecodeBusy=> , ·(          xDecodeError=> , ¸(        eDecodeError=> , ¹&        xEncodeDone=> , º&          xEncodeBusy=> , »@          xEncodeError=> xEncodeError, ¼@        eEncodeError=> eEncodeError);½  //encode Value¾L    IF eEncodeError = ERROR.NO_ERROR THEN¿(     CASE _eHasValue OFÀJ       MetricProtobufsType.boolean_value, ÁB     MetricProtobufsType.int_value, ÂB     MetricProtobufsType.long_value:Ãî       eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= _dzzValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));Äd          xEncodeError := eEncodeError <> ERROR.NO_ERROR;ÅJ      MetricProtobufsType.float_value:Æè         eEncodeError := OwnerPayload.EncodeNextFloat(ValueToEncode:= _rValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ÇL      MetricProtobufsType.double_value:Èì       eEncodeError := OwnerPayload.EncodeNextDouble(ValueToEncode:= _lrValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ÉL      MetricProtobufsType.string_value:Êì       eEncodeError := OwnerPayload.EncodeNextString(ValueToEncode := _sValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ËJ      MetricProtobufsType.bytes_value:Ìj          eEncodeError := OwnerPayload.EncodeNextBinaryData(ÍJ             StartOfBytes := _diStartOfBytes, Î@           NumberOfBytes:= _diHasBytes,Ï^             ProtobufFieldNumber := TO_BYTE(_eHasValue),ÐF           ProtobufBlob:= myProtobufBlob, Ñ6           BodyPool:= myBodyPool);ÒN      MetricProtobufsType.dataset_value:Ó          _myDataSet(Ô*           xDecode:= FALSE, Õ(           xEncode:= TRUE, ÖB             OwnerPayload:= OwnerPayload, ×V           ProtobufBlobIndex:= ProtobufBlobIndex, ØJ           myProtobufBlob:= myProtobufBlob, Ùb           myDataSetColumnsPool:= myDataSetColumnsPool, ÚZ           myDataSetTypesPool:= myDataSetTypesPool, Û:           myRowsPool:= myRowsPool, ÜJ           myElementsPool:= myElementsPool, Ý(           xDecodeDone=> , Þ(             xDecodeBusy=> , ß*             xDecodeError=> , à*           eDecodeError=> , á(           xEncodeDone=> , â(             xEncodeBusy=> , ãB             xEncodeError=> xEncodeError, äB           eEncodeError=> eEncodeError);åP      MetricProtobufsType.template_value:æ        _myTemplate(çF             myMetricsPool:= myMetricsPool, èR           myParametersPool:= myParametersPool, éR      MetricProtobufsType.extension_value:ê`          eEncodeError := ERROR.PayloadFoundExtensions;ë  END_IF; ìT    //Field number and length and we're done!íŽ    eEncodeError := OwnerPayload.ReencodeLengthDelimited(ProtobufFieldNumber:= 2, startingByteOfEncodedData:= startingByteOfEncodedData);î  //DONE :)ïB  xEncodeDone := NOT xEncodeError;ð,    xEncodeBusy := FALSE;ñInterfaceòL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}ó(*ôØ    Allows for the representation of a Sparkplug B metric in both object form and protobufs binary blob formõÒ  Allows for the transformation of a Sparkplug B metric between object form and protobufs binary blob formö*)÷${attribute 'hide'}øpFUNCTION_BLOCK INTERNAL FB_PayloadMetric EXTENDS ElementùVAR_INPUTú6  (*Trigers for conversion*)û     xDecode : BOOL;ü"  xEncode : BOOL; ý:    protobufBlobMaxIndex : DINT;þEND_VARÿVAR_IN_OUT€Œ   OwnerPayload : FB_Payload; //He manages the assigning of Pool Objectsê ProtobufBlobIndex : DINT;  //For decoding, starts where the start of the Metric is, ends on the last byte of the Metric.  For Encoding, starts where the first byte of the Metric should be written to, ends on the next free byte after this metric‚à   myProtobufBlob : ARRAY [*] OF BYTE;//array of bytes containing the protobuf payload.  If the array is the wholeƒT  myMetricsPool : List; //OF ISimpleStorage„h  myKeysPool : ARRAY [*] OF LinkedListWStringElement;…€ myPropertySetValuesPool : ARRAY [*] OF FB_PayloadPropertyValue;†r  myPropertySetsPool : ARRAY [*] OF FB_PayloadPropertySet;‡¸   myDataSetColumnsPool : ARRAY[*] OF LinkedListWStringElement; //Maybe combine with KeysPool?ˆp  myDataSetTypesPool : ARRAY[*] OF FB_PayloadDataSetType;‰b  myRowsPool         : ARRAY [*] OF FB_PayloadRow;Šj    myElementsPool     : ARRAY [*] OF FB_PayloadElement;‹n    myParametersPool   : ARRAY [*] OF FB_PayloadParameter;Œš   myBodyPool         : ARRAY [*] OF BYTE; // for example Payload.Metric[].BodyVAR_OUTPUTŽZ xDecodeDone,xDecodeBusy,xDecodeError : BOOL;,    eDecodeError : ERROR;Z  xEncodeDone,xEncodeBusy,xEncodeError : BOOL;‘,    eEncodeError : ERROR;’VAR“. (*Internal variables*)”2    dviTemp : DecodedVarInt;•D    startingByteOfEncodedData : DINT;–H  eDecodeState : PayloadDecodeStates;—.  lengthOfMetric : DINT;˜.    finalByteIndex : DINT;™$    (* Binary blob *)šÂ    _pabyBlob : POINTER TO BYTE; //Start of the array which holds the binary blob for this metric›¾   _udiMaxBlobSize : UDINT;  //size in Bytes of the array.  Must be less than MQTT limit of 256MBœ„    _udiBlobSize : UDINT; //Size in Bytes.  Actual size of message2    (* Structured data *)ž.//     message Metric {Ÿ//  Ð//         optional string   name          = 1;        // Metric name - should only be included on birth¡*    _xHasName : BOOL;¢0    _sName    : WSTRING;£Œ//         optional uint64   alias         = 2;        // Metric alias - tied to name on birth and included in all later DATA messages¤,    _xHasAlias : BOOL;¥2    _uliAlias    : ULINT;¦Ò//         optional uint64   timestamp     = 3;        // Timestamp associated with data acquisition time§4    _xHasTimestamp : BOOL;¨@    _uliTimestamp  : T_DateTime;©´//         optional uint32   datatype      = 4;        // DataType of the metric/tag valueª2    _xHasDatatype : BOOL;«D    _udiDatatype : MetricDataType;¬ð//         optional bool     is_historical = 5;        // If this is historical data and should not update real time tag­<    _xHasIs_historical : BOOL;®6    _xIs_historical : BOOL;¯˜//         optional bool     is_transient  = 6;        // Tells conNumberOfMetricsing clients such as MQTT Engine to not store this as a tag°:    _xHasIs_transient : BOOL;±4    _xIs_transient : BOOL;²¤//         optional bool     is_null       = 7;        // If this is null - explicitly say so rather than using -1, false, etc for some datatypes.³0    _xHasIs_null : BOOL;´*    _xIs_null : BOOL;µ¤//         optional MetaData metadata      = 8;        // Metadata for the payload¶B    _myHasMetaData : HasMetaData;·6    _myMetaData : MetaData;¸^//         optional PropertySet properties = 9;¹8    _xHasPropertySet : BOOL;ºV    _myPropertySet : FB_PayloadPropertySet;»p//         IC: note, oneof means "either zero or one of"¼0//         oneof value {½J    _eHasValue : MetricProtobufsType;¾x//             uint32   int_value                      = 10;¿x//             uint64   long_value                     = 11;Àx//             bool     boolean_value                  = 14;Á>    _dzzValue  : DecodedVarInt;Âx//             float    float_value                    = 12;Ã&    _rValue : REAL;Äx//             double   double_value                   = 13;Å*    _lrValue : LREAL;Æx//             string   string_value                   = 15;Ç,    _sValue : WSTRING;È¢//             bytes    bytes_value                    = 16;       // Bytes, FileÉÔ    _diHasBytes       : DINT;    // there's only at most 1 body, but this number represents how many bytesÊÜ    _diStartOfBytes   : DINT;  // Array Index to the start position in FB_Payload.myBodyPool[] make up the "body"Ëx//             DataSet  dataset_value                  = 17;ÌJ    _myDataSet   : FB_PayloadDataSet;Íx//             Template template_value                 = 18;ÎJ    _myTemplate : FB_PayloadTemplate;Ï // NO EXTENSIONSÐ"UniqueIdGeneratorÑ1239ÒPOULevelÓL{8e575c5b-1d37-49c6-941b-5c0ec7874787}ÔStandardÕ ChildObjectGuidsÖ8System.Collections.ArrayList×,AddAttributeSubsequentØboolÐÐ-ÐÐ    E
2
TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagTextä(* This is an FB and not a struct, because it may be possible for a payload to partially or fully encode itself *)&//This IF statementFIF xDecode AND xEncode THEN //ERROR(    xDecodeDone:=FALSE;(   xDecodeBusy:=FALSE;(   xDecodeError:=TRUE;d   eDecodeError := ERROR.PayloadYouCantDoBothAtOnce;(   xEncodeDone:=FALSE;(   xEncodeBusy:=FALSE;(   xEncodeError:=TRUE;d   eEncodeError := ERROR.PayloadYouCantDoBothAtOnce;ˆELSIF NOT xDecode AND NOT xEncode THEN //DO NOTHING, ALL OUTPUTS OFF*    xDecodeError:=FALSE;@ eDecodeError := ERROR.NO_ERROR;*   xEncodeError:=FALSE;@ eEncodeError := ERROR.NO_ERROR; VELSIF xDecode AND NOT xEncode THEN //Decode!&   xDecodeBusy:=TRUE;"VELSIF NOT xDecode AND xEncode THEN //Encode#& xEncodeBusy:=TRUE;$END_IF%&&IF xDecodeBusy THEN'. InitializeStructure();( )l eDecodeState := PayloadDecodeStates.object_getlength;*    //decode length+š  dviTemp := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varint,B lengthOfMetric := dviTemp.int32;-l finalByteIndex := ProtobufBlobIndex + lengthOfMetric;.T   ProtobufBlobIndex := ProtobufBlobIndex+1;/l   eDecodeState := PayloadDecodeStates.object_getmember;04   //for i to i + length - 11€  FOR ProtobufBlobIndex := ProtobufBlobIndex TO finalByteIndex DO2,      CASE eDecodeState OF3N    PayloadDecodeStates.object_getmember:4X         CASE myProtobufBlob[ProtobufBlobIndex] OF5V         16#00://end of data? padding byte? ERROR62          xDecodeError := TRUE;7R            eDecodeError := ERROR.PayloadFound00;8‚           ProtobufBlobIndex := protobufBlobMaxIndex; //break out of FOR98         ProtobufedId.Metric_name::p            eDecodeState := PayloadDecodeStates.object_getname; ;:       ProtobufedId.Metric_alias:<p          eDecodeState := PayloadDecodeStates.object_getalias;=B       ProtobufedId.Metric_timestamp:>z          eDecodeState := PayloadDecodeStates.object_gettimestamp; ?@         ProtobufedId.Metric_datatype:@n            eDecodeState := PayloadDecodeStates.object_gettype;AJ         ProtobufedId.Metric_is_historical:B€             eDecodeState := PayloadDecodeStates.object_getis_historical;CH       ProtobufedId.Metric_is_transient:D~            eDecodeState := PayloadDecodeStates.object_getis_transient;E>         ProtobufedId.Metric_is_null:Ft          eDecodeState := PayloadDecodeStates.object_getis_null;G@       ProtobufedId.Metric_metadata:H„           eDecodeState := PayloadDecodeStates.object_getmetadata_length;ID       ProtobufedId.Metric_properties:JR            eDecodeError := ERROR.Notimplemented;KB         ProtobufedId.Metric_int_value:Lx          eDecodeState := PayloadDecodeStates.object_getint_value;MD       ProtobufedId.Metric_long_value:Nz            eDecodeState := PayloadDecodeStates.object_getlong_value;OF         ProtobufedId.Metric_float_value:P|          eDecodeState := PayloadDecodeStates.object_getfloat_value;QH       ProtobufedId.Metric_double_value:R~            eDecodeState := PayloadDecodeStates.object_getdouble_value;SJ         ProtobufedId.Metric_boolean_value:T€             eDecodeState := PayloadDecodeStates.object_getboolean_value;UH       ProtobufedId.Metric_string_value:V~            eDecodeState := PayloadDecodeStates.object_getstring_value;WL         ProtobufedId.Metric_bytes_value[0]:XP         ProtobufedId.Metric_dataset_value[0]:YR         ProtobufedId.Metric_template_value[0]:ZT       ProtobufedId.Metric_extension_value[0]:[b            eDecodeError := ERROR.PayloadFoundExtensions;\:         ELSE  //extension... error]       END_CASE^L    PayloadDecodeStates.object_getname :_*       _xHasName := TRUE;`”          _sname := OwnerPayload.DecodeNextString(); //updates i to end of stringap         eDecodeState := PayloadDecodeStates.object_getmember;bN      PayloadDecodeStates.object_getalias :c,         _xHasAlias := TRUE;dž        dviTemp := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varinte>       _uliAlias := dviTemp.Uint64;fV    PayloadDecodeStates.object_gettimestamp :g4         _xHasTimeStamp := TRUE;hP         _uliTimestamp := dviTemp.uliDateTime;iL      PayloadDecodeStates.object_gettype :j2       _xHasDatatype := TRUE;kD       _udiDatatype := dviTemp.UInt32;lV      PayloadDecodeStates.object_getint_value :m^         _eHasValue := MetricProtobufsType.int_value;n¤          _dzzValue  := OwnerPayload.DecodeNextVarInt(); //updates i to end of the varintoX      PayloadDecodeStates.object_getlong_value :p`       _eHasValue := MetricProtobufsType.long_value;qZ      PayloadDecodeStates.object_getfloat_value :rb         _eHasValue := MetricProtobufsType.float_value;sž          _rValue  := OwnerPayload.DecodeNextFloat(); //updates i to end of the varintt\    PayloadDecodeStates.object_getdouble_value :ud       _eHasValue := MetricProtobufsType.double_value;v¢        _lrValue  := OwnerPayload.DecodeNextDouble(); //updates i to end of the varintw^    PayloadDecodeStates.object_getboolean_value :xf         _eHasValue := MetricProtobufsType.boolean_value;y\    PayloadDecodeStates.object_getstring_value :zd       _eHasValue := MetricProtobufsType.string_value;{         _sValue  := OwnerPayload.DecodeNextString(); //updates i to end of the string|`      PayloadDecodeStates.object_getis_historical : }N            _xHasIs_historical := TRUE;~²            dviTemp := OwnerPayload.DecodeNextVarInt();  //updates i to end of the varint^            _xIs_historical := dviTemp.Boolean;€‚            eDecodeState := PayloadDecodeStates.object_getmember;^    PayloadDecodeStates.object_getis_transient : ‚L            _xHasIs_transient := TRUE;ƒ\            _xIs_transient := dviTemp.Boolean;„`        PayloadDecodeStates.object_getis_null : …B            _xHasIs_null := TRUE;†R            _xIs_null := dviTemp.Boolean;‡b      PayloadDecodeStates.object_getmetadata_length :ˆN        _myHasMetaData.xHasMetaData := TRUE;‰          dviTemp := OwnerPayload.DecodeNextVarInt();  //updates i to end of the varintŠt        _metadataendindex := dviTemp.Int32 + ProtobufBlobIndex;‹`        IF ProtobufBlobIndex < _metadataendindex THENŒ„          eDecodeState := PayloadDecodeStates.object_getmetadata_member;          ELSEŽr             eDecodeState := PayloadDecodeStates.object_getmember;        END_IFb       PayloadDecodeStates.object_getmetadata_member :‘R        ProtobufedId.MetaData_is_multi_part : ’’            eDecodeState := PayloadDecodeStates.object_getMetaData_is_multi_part;“P        ProtobufedId.MetaData_content_type  :”          eDecodeState := PayloadDecodeStates.object_getMetaData_content_type;•P          ProtobufedId.MetaData_size          :–€          eDecodeState := PayloadDecodeStates.object_getMetaData_size;—P          ProtobufedId.MetaData_seq           :˜~           eDecodeState := PayloadDecodeStates.object_getMetaData_seq;™R        ProtobufedId.MetaData_file_name     : šŠ            eDecodeState := PayloadDecodeStates.object_getMetaData_file_name;›R        ProtobufedId.MetaData_file_type     : œŠ            eDecodeState := PayloadDecodeStates.object_getMetaData_file_type;R        ProtobufedId.MetaData_md5           : ž~             eDecodeState := PayloadDecodeStates.object_getMetaData_md5;ŸR        ProtobufedId.MetaData_description   :  Ž            eDecodeState := PayloadDecodeStates.object_getMetaData_description;¡p     PayloadDecodeStates.object_getMetaData_is_multi_part :¢X          _myHasMetaData.xHasIs_multi_part := TRUE;£r            _myMetaData.is_multi_part := dviTemp.Boolean;¤p    PayloadDecodeStates.object_getMetaData_content_type  :¥V          _myHasMetaData.xHasContent_type := TRUE;¦Ò            _myMetaData.content_type := OwnerPayload.DecodeNextString(); //updates i to end of the string§p     PayloadDecodeStates.object_getMetaData_size          :¨F          _myHasMetaData.xHasSize := TRUE;©^            _myMetaData.size := dviTemp.UInt64;ªp      PayloadDecodeStates.object_getMetaData_seq           :«D          _myHasMetaData.xHasSeq := TRUE;¬\            _myMetaData.seq := dviTemp.UInt64;­p      PayloadDecodeStates.object_getMetaData_file_name     :®P          _myHasMetaData.xHasFile_name := TRUE;¯Ì            _myMetaData.file_name := OwnerPayload.DecodeNextString(); //updates i to end of the string°p     PayloadDecodeStates.object_getMetaData_file_type     :±P          _myHasMetaData.xHasFile_type := TRUE;²Ì            _myMetaData.file_type := OwnerPayload.DecodeNextString(); //updates i to end of the string³p     PayloadDecodeStates.object_getMetaData_md5           :´D          _myHasMetaData.xHasMd5 := TRUE;µÀ            _myMetaData.md5 := OwnerPayload.DecodeNextString(); //updates i to end of the string¶p     PayloadDecodeStates.object_getMetaData_description   :·T          _myHasMetaData.xHasDescription := TRUE;¸Ð            _myMetaData.description := OwnerPayload.DecodeNextString(); //updates i to end of the string¹     END_CASEº    END_FOR»2  IF NOT xDecodeError THEN¼’      ProtobufBlobIndex := ProtobufBlobIndex-1; //i is now final byte index.   ½    END_IF¾T    eDecodeState := PayloadDecodeStates.idle;¿B  xDecodeDone := NOT xDecodeError;À,    xDecodeBusy := FALSE;ÁEND_IF;Â&IF xEncodeBusy THENÃb    //NOTE: BLOB Data will not be initialized to 00.ÄV    //But we will start with a 0 byte payload.Å~    //store the starting byte, because we need it right at the endÆ`    startingByteOfEncodedData := ProtobufBlobIndex;Ç>  //Encode Name (Field Number 1)Èh    IF eEncodeError = ERROR.NO_ERROR AND _xHasName THENÉx     //{info 'todo: i-campbell Make these field numbers a GVL'}ÊÄ      eEncodeError := OwnerPayload.EncodeNextString(ValueToEncode := _sName, ProtobufFieldNumber:= 1);Ëb       xEncodeError := eEncodeError <> ERROR.NO_ERROR;Ì  END_IF;Í  //Encode AliasÎj    IF eEncodeError = ERROR.NO_ERROR AND _xHasAlias THENÏ<       dviTemp.Uint64 := _uliAlias;ÐÄ      eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 2);ÑH    //Encode Timestamp (Field Number 3)Òr  IF eEncodeError = ERROR.NO_ERROR AND _xHasTimestamp THENÓN       dviTemp.uliDateTime := _uliTimestamp;ÔÆ    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode := dviTemp, ProtobufFieldNumber:= 3);Õ$  //Encode DataTypeÖp  IF eEncodeError = ERROR.NO_ERROR AND _xHasDatatype THEN×B     dviTemp.Uint32 := _udiDatatype;ØÄ    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 4);Ù.    //Encode is_historicalÚz    IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_historical THENÛJ       dviTemp.Boolean := _xIs_historical;ÜÄ    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 5);Ý,    //Encode is_transientÞx  IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_transient THENßH     dviTemp.Boolean := _xIs_transient;àÄ      eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 6);á"    //Encode is_nullân    IF eEncodeError = ERROR.NO_ERROR AND _xHasIs_null THENã>       dviTemp.Boolean := _xIs_null;äÄ    eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= dviTemp, ProtobufFieldNumber:= 7);åZ    //{info 'TODO: i-campbell: encode meta data}æ.    //metadata fieldnumberç    //metadatasizeè>    //metadatavarints.bool * 12offé*    //Encode PropertySetêv    IF eEncodeError = ERROR.NO_ERROR AND _xHasPropertySet THENë"       _myPropertySet(ì(        xDecode:= FALSE, í&        xEncode:= TRUE, î@          OwnerPayload:= OwnerPayload, ïT        ProtobufBlobIndex:= ProtobufBlobIndex, ðH        myProtobufBlob:= myProtobufBlob, ñ8        myKeysPool:= myKeysPool, òl        myPropertySetValuesPool:= myPropertySetValuesPool, óX        myPropertySetsPool:= myPropertySetsPool, ô&        xDecodeDone=> , õ&          xDecodeBusy=> , ö(          xDecodeError=> , ÷(        eDecodeError=> , ø&        xEncodeDone=> , ù&          xEncodeBusy=> , ú@          xEncodeError=> xEncodeError, û@        eEncodeError=> eEncodeError);ü  //encode ValueýL    IF eEncodeError = ERROR.NO_ERROR THENþ(     CASE _eHasValue OFÿJ       MetricProtobufsType.boolean_value, €B     MetricProtobufsType.int_value, B     MetricProtobufsType.long_value:‚î       eEncodeError := OwnerPayload.EncodeNextVarInt(ValueToEncode:= _dzzValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ƒd          xEncodeError := eEncodeError <> ERROR.NO_ERROR;„J      MetricProtobufsType.float_value:…è         eEncodeError := OwnerPayload.EncodeNextFloat(ValueToEncode:= _rValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));†L      MetricProtobufsType.double_value:‡ì       eEncodeError := OwnerPayload.EncodeNextDouble(ValueToEncode:= _lrValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ˆL      MetricProtobufsType.string_value:‰ì       eEncodeError := OwnerPayload.EncodeNextString(ValueToEncode := _sValue, ProtobufFieldNumber:= TO_BYTE(_eHasValue));ŠJ      MetricProtobufsType.bytes_value:‹j          eEncodeError := OwnerPayload.EncodeNextBinaryData(ŒJ             StartOfBytes := _diStartOfBytes, @           NumberOfBytes:= _diHasBytes,Ž^             ProtobufFieldNumber := TO_BYTE(_eHasValue),F           ProtobufBlob:= myProtobufBlob, 6           BodyPool:= myBodyPool);‘N      MetricProtobufsType.dataset_value:’          _myDataSet(“*           xDecode:= FALSE, ”(           xEncode:= TRUE, •B             OwnerPayload:= OwnerPayload, –V           ProtobufBlobIndex:= ProtobufBlobIndex, —J           myProtobufBlob:= myProtobufBlob, ˜b           myDataSetColumnsPool:= myDataSetColumnsPool, ™Z           myDataSetTypesPool:= myDataSetTypesPool, š:           myRowsPool:= myRowsPool, ›J           myElementsPool:= myElementsPool, œ(           xDecodeDone=> , (             xDecodeBusy=> , ž*             xDecodeError=> , Ÿ*           eDecodeError=> ,  (           xEncodeDone=> , ¡(             xEncodeBusy=> , ¢B             xEncodeError=> xEncodeError, £B           eEncodeError=> eEncodeError);¤P      MetricProtobufsType.template_value:¥        _myTemplate(¦F             myMetricsPool:= myMetricsPool, §R           myParametersPool:= myParametersPool, ¨R      MetricProtobufsType.extension_value:©`          eEncodeError := ERROR.PayloadFoundExtensions;ª  END_IF; «T    //Field number and length and we're done!¬Ž    eEncodeError := OwnerPayload.ReencodeLengthDelimited(ProtobufFieldNumber:= 2, startingByteOfEncodedData:= startingByteOfEncodedData);­  //DONE :)®B  xEncodeDone := NOT xEncodeError;¯,    xEncodeBusy := FALSE;°Interface±L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}²(*³Ø    Allows for the representation of a Sparkplug B metric in both object form and protobufs binary blob form´Ò  Allows for the transformation of a Sparkplug B metric between object form and protobufs binary blob formµ*)¶${attribute 'hide'}·pFUNCTION_BLOCK INTERNAL FB_PayloadMetric EXTENDS Element¸VAR_INPUT¹6  (*Trigers for conversion*)º     xDecode : BOOL;»"  xEncode : BOOL; ¼:    protobufBlobMaxIndex : DINT;½END_VAR¾VAR_IN_OUT¿Œ   OwnerPayload : FB_Payload; //He manages the assigning of Pool ObjectsÀê ProtobufBlobIndex : DINT;  //For decoding, starts where the start of the Metric is, ends on the last byte of the Metric.  For Encoding, starts where the first byte of the Metric should be written to, ends on the next free byte after this metricÁà   myProtobufBlob : ARRAY [*] OF BYTE;//array of bytes containing the protobuf payload.  If the array is the wholeÂT  myMetricsPool : List; //OF ISimpleStorageÃh  myKeysPool : ARRAY [*] OF LinkedListWStringElement;Ä€ myPropertySetValuesPool : ARRAY [*] OF FB_PayloadPropertyValue;År  myPropertySetsPool : ARRAY [*] OF FB_PayloadPropertySet;Ƹ   myDataSetColumnsPool : ARRAY[*] OF LinkedListWStringElement; //Maybe combine with KeysPool?Çp  myDataSetTypesPool : ARRAY[*] OF FB_PayloadDataSetType;Èb  myRowsPool         : ARRAY [*] OF FB_PayloadRow;Éj    myElementsPool     : ARRAY [*] OF FB_PayloadElement;Ên    myParametersPool   : ARRAY [*] OF FB_PayloadParameter;Ëš   myBodyPool         : ARRAY [*] OF BYTE; // for example Payload.Metric[].BodyÌVAR_OUTPUTÍZ xDecodeDone,xDecodeBusy,xDecodeError : BOOL;Î,    eDecodeError : ERROR;ÏZ  xEncodeDone,xEncodeBusy,xEncodeError : BOOL;Ð,    eEncodeError : ERROR;ÑVARÒ. (*Internal variables*)Ó2    dviTemp : DecodedVarInt;ÔD    startingByteOfEncodedData : DINT;ÕH  eDecodeState : PayloadDecodeStates;Ö.  lengthOfMetric : DINT;×.    finalByteIndex : DINT;Ø$    (* Binary blob *)Ù    _pabyBlob : POINTER TO BYTE; //Start of the array which holds the binary blob for this metricÚ¾   _udiMaxBlobSize : UDINT;  //size in Bytes of the array.  Must be less than MQTT limit of 256MBÛ„    _udiBlobSize : UDINT; //Size in Bytes.  Actual size of messageÜ2    (* Structured data *)Ý.//     message Metric {Þ// ßÐ//         optional string   name          = 1;        // Metric name - should only be included on birthà*    _xHasName : BOOL;á0    _sName    : WSTRING;âŒ//         optional uint64   alias         = 2;        // Metric alias - tied to name on birth and included in all later DATA messagesã,    _xHasAlias : BOOL;ä2    _uliAlias    : ULINT;åÒ//         optional uint64   timestamp     = 3;        // Timestamp associated with data acquisition timeæ4    _xHasTimestamp : BOOL;ç@    _uliTimestamp  : T_DateTime;è´//         optional uint32   datatype      = 4;        // DataType of the metric/tag valueé2    _xHasDatatype : BOOL;êD    _udiDatatype : MetricDataType;ëð//         optional bool     is_historical = 5;        // If this is historical data and should not update real time tagì<    _xHasIs_historical : BOOL;í6    _xIs_historical : BOOL;î˜//         optional bool     is_transient  = 6;        // Tells conNumberOfMetricsing clients such as MQTT Engine to not store this as a tagï:    _xHasIs_transient : BOOL;ð4    _xIs_transient : BOOL;ñ¤//         optional bool     is_null       = 7;        // If this is null - explicitly say so rather than using -1, false, etc for some datatypes.ò0    _xHasIs_null : BOOL;ó*    _xIs_null : BOOL;ô¤//         optional MetaData metadata      = 8;        // Metadata for the payloadõB    _myHasMetaData : HasMetaData;ö6    _myMetaData : MetaData;÷4   _metadataendindex : DINT;ø^//         optional PropertySet properties = 9;ù8    _xHasPropertySet : BOOL;úV    _myPropertySet : FB_PayloadPropertySet;ûp//         IC: note, oneof means "either zero or one of"ü0//         oneof value {ýJ    _eHasValue : MetricProtobufsType;þx//             uint32   int_value                      = 10;ÿx//             uint64   long_value                     = 11;€x//             bool     boolean_value                  = 14;>    _dzzValue  : DecodedVarInt;‚x//             float    float_value                    = 12;ƒ&    _rValue : REAL;„x//             double   double_value                   = 13;…*    _lrValue : LREAL;†x//             string   string_value                   = 15;‡,    _sValue : WSTRING;ˆ¢//             bytes    bytes_value                    = 16;       // Bytes, File‰Ô    _diHasBytes       : DINT;    // there's only at most 1 body, but this number represents how many bytesŠÜ   _diStartOfBytes   : DINT;  // Array Index to the start position in FB_Payload.myBodyPool[] make up the "body"‹x//             DataSet  dataset_value                  = 17;ŒJ    _myDataSet   : FB_PayloadDataSet;x//             Template template_value                 = 18;ŽJ    _myTemplate : FB_PayloadTemplate; // NO EXTENSIONS"UniqueIdGenerator‘1400’POULevel“L{8e575c5b-1d37-49c6-941b-5c0ec7874787}”Standard• ChildObjectGuids–8System.Collections.ArrayList—,AddAttributeSubsequent˜boolÐÐ-ÐÐ    E
3
ÕÐÐ
­   ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­•ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­—ÚÐ-ÐÐ
­˜ÚÐ-ÐÐ
­™ÚÐ-ÐÐ
­šÚÐ-ÐÐ
­›ÚÐ-ÐÐ
­œÚÐ-ÐÐ
­ÚÐ-ÐÐ
­žÚÐ-ÐÐ
­ŸÚÐ-ÐÐ
­ ÚÐ-ÐÐ
­¡ÚÐ-ÐÐ
­¢ÚÐ-ÐÐ
­£ÚÐ- ÐÐ
­¤ÚÐ-ÐÐ
­¥ÚÐ-!ÐÐ
­¦ÚÐ-ÐÐ
­§ÚÐ-ÐÐ
­¨ÚÐ-ÐÐ
­©ÚÐ-ÐÐ
­ªÚÐ-ÐÐ
­«ÚÐ-ÐÐ
­¬ÚÐ-"ÐÐ
­­ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­¯ÚÐ-ÐÐ
­°ÚÐ-ÐÐ
­±ÚÐ-ÐÐ
­²ÚÐ-#ÐÐ
­³ÚÐ-ÐÐ
­´ÚÐ-ÐÐ
­µÚÐ-$ÐÐ
­¶ÚÐ-%ÐÐ
­·ÚÐ-&ÐÐ
­ÃÚÐ-'ÐÐ
­ÈÚÐ-(ÐÐ
­0ÚÐ-)ÐÐ
­<ÚÐ-*ÐÐ
­@ÚÐ-+ÐÐ
­AÚÐ-,ÐÐ
­^ÚÐ--ÐÐ
­CÚÐ-.ÐÐ
­\ÚÐ-/ÐÐ
­=ÚÐ-0ÐÐ
­DÚÐ-1ÐÐ
­GÚÐ-2ÐÐ
­HÚÐ-3ÐÐ
­IÚÐ-4ÐÐ
­JÚÐ-5ÐÐ
­KÚÐ-6ÐÐ
­LÚÐ-7ÐÐ
­MÚÐ-8ÐÐ
­NÚÐ-9ÐÐ
­OÚÐ-:ÐÐ
­šÚÐ-;ÐÐ
­›ÚÐ-6ÐÐ
­œÚÐ-<ÐÐ
­PÚÐ-8ÐÐ
­RÚÐ-=ÐÐ
­SÚÐ->ÐÐ
­TÚÐ-?ÐÐ
­UÚÐ-@ÐÐ
­ÚÐ-AÐÐ
­žÚÐ-6ÐÐ
­ŸÚÐ-<ÐÐ
­`ÚÐ-8ÐÐ
­ ÚÐ-BÐÐ
­¡ÚÐ-6ÐÐ
­¢ÚÐ-<ÐÐ
­cÚÐ-8ÐÐ
­£ÚÐ-CÐÐ
­eÚÐ-DÐÐ
­—ÚÐ-EÐÐ
­˜ÚÐ-6ÐÐ
­™ÚÐ-<ÐÐ
­gÚÐ-8ÐÐ
­”ÚÐ-FÐÐ
­•ÚÐ-6ÐÐ
­–ÚÐ-<ÐÐ
­iÚÐ-8ÐÐ
­vÚÐ-GÐÐ
­wÚÐ-HÐÐ
­xÚÐ-IÐÐ
­yÚÐ-JÐÐ
­zÚÐ-KÐÐ
­{ÚÐ-LÐÐ
­|ÚÐ-MÐÐ
­}ÚÐ-NÐÐ
­~ÚÐ-OÐÐ
­ÚÐ-PÐÐ
­€ÚÐ-QÐÐ
­ÚÐ-RÐÐ
­‘ÚÐ-SÐÐ
­’ÚÐ-6ÐÐ
­“ÚÐ-<ÐÐ
­‚ÚÐ-8ÐÐ
­ŽÚÐ-TÐÐ
­ÚÐ-6ÐÐ
­ÚÐ-<ÐÐ
­„ÚÐ-8ÐÐ
­†ÚÐ-UÐÐ
­ŒÚÐ-6ÐÐ
­ÚÐ-<ÐÐ
­‡ÚÐ-8ÐÐ
­ˆÚÐ-VÐÐ
­ŠÚÐ-6ÐÐ
­‹ÚÐ-WÐÐ
­‰ÚÐ-8ÐÐ
­sÚÐ-XÐÐ
­YÚÐ-6ÐÐ
­ZÚÐ-WÐÐ
­[ÚÐ-8ÐÐ
­EÚÐ-YÐÐ
­§ÚÐ-ZÐÐ
­´ÚÐ-[ÐÐ
­µÚÐ-\ÐÐ
­³ÚÐ-]ÐÐ
­¨ÚÐ-^ÐÐ
­°ÚÐ-_ÐÐ
­±ÚÐ-`ÐÐ
­²ÚÐ-aÐÐ
­¯ÚÐ-]ÐÐ
­©ÚÐ-bÐÐ
­¶ÚÐ-cÐÐ
­¸ÚÐ-`ÐÐ
­¹ÚÐ-dÐÐ
­·ÚÐ-]ÐÐ
­ªÚÐ-eÐÐ
­ºÚÐ-fÐÐ
­»ÚÐ-gÐÐ
­¼ÚÐ-]ÐÐ
­«ÚÐ-hÐÐ
­¾ÚÐ-iÐÐ
­¿ÚÐ-gÐÐ
­½ÚÐ-]ÐÐ
­¬ÚÐ-jÐÐ
­ÁÚÐ-kÐÐ
­ÂÚÐ-lÐÐ
­ÀÚÐ-]ÐÐ
­­ÚÐ-mÐÐ
­ÄÚÐ-nÐÐ
­ÅÚÐ-oÐÐ
­ÃÚÐ-]ÐÐ
­®ÚÐ-pÐÐ
­ÇÚÐ-qÐÐ
­ÈÚÐ-gÐÐ
­ÆÚÐ-]ÐÐ
­]ÚÐ-rÐÐ
­ÊÚÐ-sÐÐ
­ËÚÐ-tÐÐ
­ÉÚÐ-]ÐÐ
­ÒÚÐ-uÐÐ
­ÔÚÐ-vÐÐ
­ÕÚÐ-wÐÐ
­ÓÚÐ-xÐÐ
­ÖÚÐ-yÐÐ
­¦ÚÐ-zÐÐ
­FÚÐ-{ÐÐ
­ÎÚÐ-|ÐÐ
­ÐÚÐ-}ÐÐ
­ÑÚÐ-~ÐÐ
­ÌÚÐ-ÐÐ
­ÍÚÐ-€ÐÐ
­>ÚÐ-ÐÐ
­1ÚÐ-‚ÐÐ
­‰ÚÐ-%ÐÐ
­2ÚÐ-ƒÐÐ
­3ÚÐ-„ÐÐ
­5ÚÐ-…ÐÐ
­9ÚÐ-(ÐÐ
­ÔÚÐ-†ÐÐ
­:ÚÐ-‡ÐÐ
­ÕÚÐ-(ÐÐ
­:ÚÐ-ˆÐÐ
­;ÚÐ-‰ÐÐ
­<ÚÐ-ŠÐÐ
­>ÚÐ-‹ÐÐ
­?ÚÐ-ŒÐÐ
­@ÚÐ-ÐÐ
­ÚÐ-(ÐÐ
­ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­‘ÚÐ-ŠÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-‘ÐÐ
­”ÚÐ-ŒÐÐ
­ŽÚÐ-ÐÐ
­•ÚÐ-(ÐÐ
­—ÚÐ-’ÐÐ
­˜ÚÐ-“ÐÐ
­™ÚÐ-ŠÐÐ
­šÚÐ-”ÐÐ
­›ÚÐ-•ÐÐ
­œÚÐ-ŒÐÐ
­–ÚÐ-ÐÐ
­ÚÐ-(ÐÐ
­ŸÚÐ-–ÐÐ
­ ÚÐ-—ÐÐ
­¡ÚÐ-ŠÐÐ
­¢ÚÐ-˜ÐÐ
­£ÚÐ-™ÐÐ
­¤ÚÐ-ŒÐÐ
­žÚÐ-ÐÐ
­¥ÚÐ-(ÐÐ
­§ÚÐ-šÐÐ
­¨ÚÐ-›ÐÐ
­©ÚÐ-ŠÐÐ
­ªÚÐ-œÐÐ
­«ÚÐ-ÐÐ
­¬ÚÐ-ŒÐÐ
­¦ÚÐ-ÐÐ
­­ÚÐ-(ÐÐ
­¯ÚÐ-žÐÐ
­°ÚÐ-ŸÐÐ
­±ÚÐ-ŠÐÐ
­²ÚÐ- ÐÐ
­³ÚÐ-¡ÐÐ
­´ÚÐ-ŒÐÐ
­®ÚÐ-ÐÐ
­µÚÐ-(ÐÐ
­·ÚÐ-¢ÐÐ
­¸ÚÐ-£ÐÐ
­¹ÚÐ-ŠÐÐ
­ºÚÐ-¤ÐÐ
­»ÚÐ-¥ÐÐ
­¼ÚÐ-ŒÐÐ
­¶ÚÐ-ÐÐ
­½ÚÐ-(ÐÐ
­¾ÚÐ-¦ÐÐ
­×ÚÐ-§ÐÐ
­ØÚÐ-¨ÐÐ
­ÙÚÐ-©ÐÐ
­AÚÐ-(ÐÐ
­¿ÚÐ-ªÐÐ
­ÁÚÐ-«ÐÐ
­ÄÚÐ-¬ÐÐ
­ÅÚÐ-­ÐÐ
­ÆÚÐ-®ÐÐ
­ÇÚÐ-¯ÐÐ
­ÈÚÐ-°ÐÐ
­ÉÚÐ-±ÐÐ
­ÊÚÐ-²ÐÐ
­ËÚÐ-³ÐÐ
­ÌÚÐ-´ÐÐ
­ÍÚÐ-µÐÐ
­ÎÚÐ-¶ÐÐ
­ÏÚÐ-·ÐÐ
­ÐÚÐ-¸ÐÐ
­ÑÚÐ-¹ÐÐ
­ÒÚÐ-ºÐÐ
­ÓÚÐ-»ÐÐ
­ÂÚÐ-¼ÐÐ
­ÃÚÐ-~ÐÐ
­ÀÚÐ-(ÐÐ
­ÚÚÐ-½ÐÐ
­éÚÐ-¾ÐÐ
­àÚÐ-¿ÐÐ
­áÚÐ-ÀÐÐ
­ýÚÐ-ÁÐÐ
­þÚÐ-ÂÐÐ
­äÚÐ-ÃÐÐ
­èÚÐ-ÄÐÐ
­íÚÐ-ÅÐÐ
­,ÚÐ-ÆÐÐ
­-ÚÐ-ÄÐÐ
­ôÚÐ-ÇÐÐ
­.ÚÐ-ÈÐÐ
­/ÚÐ-ÄÐÐ
­öÚÐ-ÉÐÐ
­ÿÚÐ-ÊÐÐ
­ÚÐ-ÄÐÐ
­÷ÚÐ-ËÐÐ
­#ÚÐ-ÌÐÐ
­'ÚÐ-ÍÐÐ
­(ÚÐ-ÎÐÐ
­)ÚÐ-ÏÐÐ
­+ÚÐ-ÐÐÐ
­*ÚÐ-ÑÐÐ
­$ÚÐ-ÄÐÐ
­øÚÐ-ÒÐÐ
­ÚÐ-ÓÐÐ
­ÚÐ-ÔÐÐ
­ÚÐ-ÕÐÐ
­ÚÐ-ÖÐÐ
­ÚÐ-×ÐÐ
­ÚÐ-ØÐÐ
­ÚÐ-ÙÐÐ
­ÚÐ-ÚÐÐ
­ÚÐ-ÛÐÐ
­ÚÐ-ÜÐÐ
­ÚÐ-ÝÐÐ
­ÚÐ-ÞÐÐ
­ÚÐ-ßÐÐ
­ÚÐ-àÐÐ
­ ÚÐ-áÐÐ
­!ÚÐ-âÐÐ
­"ÚÐ-ãÐÐ
­ÚÐ-äÐÐ
­ùÚÐ-åÐÐ
­ÚÐ-æÐÐ
­ÚÐ-ÔÐÐ
­ÚÐ-ÕÐÐ
­ÚÐ-ÖÐÐ
­ÚÐ-×ÐÐ
­ÚÐ-ØÐÐ
­ÚÐ-çÐÐ
­   ÚÐ-èÐÐ
­
3
ÃÐÐ
­   ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­•ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­—ÚÐ-ÐÐ
­˜ÚÐ-ÐÐ
­™ÚÐ-ÐÐ
­šÚÐ-ÐÐ
­›ÚÐ-ÐÐ
­œÚÐ-ÐÐ
­ÚÐ-ÐÐ
­žÚÐ-ÐÐ
­ŸÚÐ-ÐÐ
­ ÚÐ-ÐÐ
­¡ÚÐ-ÐÐ
­¢ÚÐ-ÐÐ
­£ÚÐ- ÐÐ
­¤ÚÐ-ÐÐ
­¥ÚÐ-!ÐÐ
­¦ÚÐ-ÐÐ
­§ÚÐ-ÐÐ
­¨ÚÐ-ÐÐ
­©ÚÐ-ÐÐ
­ªÚÐ-ÐÐ
­«ÚÐ-ÐÐ
­¬ÚÐ-"ÐÐ
­­ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­¯ÚÐ-ÐÐ
­°ÚÐ-ÐÐ
­±ÚÐ-ÐÐ
­²ÚÐ-#ÐÐ
­³ÚÐ-ÐÐ
­´ÚÐ-ÐÐ
­µÚÐ-$ÐÐ
­¶ÚÐ-%ÐÐ
­·ÚÐ-&ÐÐ
­ÃÚÐ-'ÐÐ
­ÈÚÐ-(ÐÐ
­0ÚÐ-)ÐÐ
­<ÚÐ-*ÐÐ
­@ÚÐ-+ÐÐ
­AÚÐ-,ÐÐ
­^ÚÐ--ÐÐ
­CÚÐ-.ÐÐ
­\ÚÐ-/ÐÐ
­=ÚÐ-0ÐÐ
­DÚÐ-1ÐÐ
­GÚÐ-2ÐÐ
­HÚÐ-3ÐÐ
­IÚÐ-4ÐÐ
­JÚÐ-5ÐÐ
­KÚÐ-6ÐÐ
­LÚÐ-7ÐÐ
­MÚÐ-8ÐÐ
­NÚÐ-9ÐÐ
­OÚÐ-:ÐÐ
­šÚÐ-;ÐÐ
­PÚÐ-<ÐÐ
­RÚÐ-=ÐÐ
­SÚÐ->ÐÐ
­TÚÐ-?ÐÐ
­UÚÐ-@ÐÐ
­ÚÐ-AÐÐ
­`ÚÐ-BÐÐ
­ ÚÐ-CÐÐ
­cÚÐ-DÐÐ
­£ÚÐ-EÐÐ
­eÚÐ-FÐÐ
­—ÚÐ-GÐÐ
­gÚÐ-HÐÐ
­”ÚÐ-IÐÐ
­•ÚÐ-6ÐÐ
­–ÚÐ-JÐÐ
­iÚÐ-8ÐÐ
­vÚÐ-KÐÐ
­wÚÐ-LÐÐ
­xÚÐ-MÐÐ
­yÚÐ-NÐÐ
­zÚÐ-OÐÐ
­{ÚÐ-PÐÐ
­|ÚÐ-QÐÐ
­}ÚÐ-RÐÐ
­~ÚÐ-SÐÐ
­ÚÐ-TÐÐ
­€ÚÐ-UÐÐ
­ÚÐ-VÐÐ
­‘ÚÐ-WÐÐ
­’ÚÐ-6ÐÐ
­“ÚÐ-JÐÐ
­‚ÚÐ-8ÐÐ
­ŽÚÐ-XÐÐ
­ÚÐ-6ÐÐ
­ÚÐ-JÐÐ
­„ÚÐ-8ÐÐ
­†ÚÐ-YÐÐ
­ŒÚÐ-6ÐÐ
­ÚÐ-JÐÐ
­‡ÚÐ-8ÐÐ
­ˆÚÐ-ZÐÐ
­ŠÚÐ-6ÐÐ
­‹ÚÐ-[ÐÐ
­‰ÚÐ-8ÐÐ
­sÚÐ-\ÐÐ
­YÚÐ-6ÐÐ
­ZÚÐ-[ÐÐ
­[ÚÐ-8ÐÐ
­EÚÐ-]ÐÐ
­§ÚÐ-^ÐÐ
­´ÚÐ-_ÐÐ
­µÚÐ-`ÐÐ
­³ÚÐ-aÐÐ
­ØÚÐ-bÐÐ
­ÚÚÐ-cÐÐ
­ÛÚÐ-dÐÐ
­ÜÚÐ-eÐÐ
­ÙÚÐ-aÐÐ
­¨ÚÐ-fÐÐ
­°ÚÐ-gÐÐ
­±ÚÐ-dÐÐ
­²ÚÐ-hÐÐ
­¯ÚÐ-aÐÐ
­©ÚÐ-iÐÐ
­¶ÚÐ-jÐÐ
­¸ÚÐ-dÐÐ
­¹ÚÐ-kÐÐ
­·ÚÐ-aÐÐ
­ªÚÐ-lÐÐ
­ºÚÐ-mÐÐ
­»ÚÐ-nÐÐ
­¼ÚÐ-aÐÐ
­«ÚÐ-oÐÐ
­¾ÚÐ-pÐÐ
­¿ÚÐ-nÐÐ
­½ÚÐ-aÐÐ
­¬ÚÐ-qÐÐ
­ÁÚÐ-rÐÐ
­ÂÚÐ-sÐÐ
­ÀÚÐ-aÐÐ
­­ÚÐ-tÐÐ
­ÄÚÐ-uÐÐ
­ÅÚÐ-vÐÐ
­ÃÚÐ-aÐÐ
­®ÚÐ-wÐÐ
­ÇÚÐ-xÐÐ
­ÈÚÐ-nÐÐ
­ÆÚÐ-aÐÐ
­]ÚÐ-yÐÐ
­ÊÚÐ-zÐÐ
­ËÚÐ-{ÐÐ
­ÉÚÐ-aÐÐ
­ÞÚÐ-|ÐÐ
­ßÚÐ-}ÐÐ
­àÚÐ-~ÐÐ
­áÚÐ-ÐÐ
­ÝÚÐ-€ÐÐ
­ãÚÐ-ÐÐ
­äÚÐ-‚ÐÐ
­åÚÐ-~ÐÐ
­æÚÐ-ƒÐÐ
­âÚÐ-€ÐÐ
­ÒÚÐ-„ÐÐ
­ÔÚÐ-…ÐÐ
­ÕÚÐ-~ÐÐ
­ÓÚÐ-†ÐÐ
­ÖÚÐ-€ÐÐ
­çÚÐ-‡ÐÐ
­ðÚÐ-ˆÐÐ
­èÚÐ-‰ÐÐ
­ìÚÐ-ŠÐÐ
­ôÚÐ-‹ÐÐ
­ïÚÐ-ŒÐÐ
­õÚÐ-ÐÐ
­öÚÐ-ŽÐÐ
­÷ÚÐ-ÐÐ
­òÚÐ-ÐÐ
­ýÚÐ-4ÐÐ
­þÚÐ-5ÐÐ
­ÿÚÐ-6ÐÐ
­ÚÐ-7ÐÐ
­ÚÐ-8ÐÐ
­ÚÐ-‘ÐÐ
­ÚÐ-’ÐÐ
­ÚÐ-“ÐÐ
­ÚÐ-”ÐÐ
­ÚÐ-•ÐÐ
­!ÚÐ-–ÐÐ
­   ÚÐ-—ÐÐ
­'ÚÐ-˜ÐÐ
­
4
ÚÐ-ÝÐÐ
­ÚÐ-ÞÐÐ
­ÚÐ-ßÐÐ
­
ÚÐ-àÐÐ
­ÚÐ-áÐÐ
­ÚÐ-âÐÐ
­ÚÐ-ãÐÐ
­ÚÐ-äÐÐ
­úÚÐ-éÐÐ
­ûÚÐ-êÐÐ
­üÚÐ-ÄÐÐ
­âÚÐ-zÐÐ
­êÚÐ-ëÐÐ
­~ÚÐ-(ÐÐ
­0ÚÐ-ìÐÐ
­4ÚÐ-¾ÐÐ
­5ÚÐ-ŠÐÐ
­7ÚÐ-íÐÐ
­8ÚÐ-ŒÐÐ
­3ÚÐ-ÐÐ
­1ÚÐ-(ÐÐ
­ÚÐ-îÐÐ
­€ÚÐ-(ÐÐ
­ÚÐ-ïÐÐ
­‚ÚÐ-ðÐÐ
­ÚÐ-‚ÐÐ
­„ÚÐ-%ÐñòÐ   E
4
ÚÐ-™ÐÐ
­,ÚÐ-šÐÐ
­ÚÐ-›ÐÐ
­0ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­2ÚÐ-žÐÐ
­üÚÐ-ŸÐÐ
­4ÚÐ- ÐÐ
­
ÚÐ-\ÐÐ
­ÚÐ-6ÐÐ
­ÚÐ-[ÐÐ
­ÚÐ-8ÐÐ
­ÚÐ-]ÐÐ
­5ÚÐ-¡ÐÐ
­dÚÐ-¢ÐÐ
­eÚÐ-~ÐÐ
­fÚÐ-£ÐÐ
­_ÚÐ-‹ÐÐ
­`ÚÐ-ŒÐÐ
­aÚÐ-ÐÐ
­bÚÐ-ŽÐÐ
­^ÚÐ-ÐÐ
­6ÚÐ-¤ÐÐ
­jÚÐ-¥ÐÐ
­kÚÐ-¦ÐÐ
­ZÚÐ-‹ÐÐ
­[ÚÐ-ŒÐÐ
­\ÚÐ-ÐÐ
­]ÚÐ-ŽÐÐ
­YÚÐ-ÐÐ
­7ÚÐ-§ÐÐ
­hÚÐ-¨ÐÐ
­nÚÐ-‰ÐÐ
­oÚÐ-©ÐÐ
­UÚÐ-‹ÐÐ
­VÚÐ-ŒÐÐ
­WÚÐ-ÐÐ
­XÚÐ-ŽÐÐ
­TÚÐ-ÐÐ
­8ÚÐ-ªÐÐ
­PÚÐ-«ÐÐ
­mÚÐ-~ÐÐ
­pÚÐ-¬ÐÐ
­lÚÐ-‹ÐÐ
­QÚÐ-ŒÐÐ
­RÚÐ-ÐÐ
­SÚÐ-ŽÐÐ
­OÚÐ-ÐÐ
­9ÚÐ-­ÐÐ
­qÚÐ-®ÐÐ
­rÚÐ-¯ÐÐ
­KÚÐ-‹ÐÐ
­LÚÐ-ŒÐÐ
­MÚÐ-ÐÐ
­NÚÐ-ŽÐÐ
­JÚÐ-ÐÐ
­:ÚÐ-°ÐÐ
­sÚÐ-±ÐÐ
­tÚÐ-²ÐÐ
­FÚÐ-‹ÐÐ
­GÚÐ-ŒÐÐ
­HÚÐ-ÐÐ
­IÚÐ-ŽÐÐ
­EÚÐ-ÐÐ
­;ÚÐ-³ÐÐ
­uÚÐ-´ÐÐ
­vÚÐ-µÐÐ
­AÚÐ-‹ÐÐ
­BÚÐ-ŒÐÐ
­CÚÐ-ÐÐ
­DÚÐ-ŽÐÐ
­@ÚÐ-ÐÐ
­ÚÐ-¶ÐÐ
­wÚÐ-·ÐÐ
­xÚÐ-¸ÐÐ
­<ÚÐ-‹ÐÐ
­=ÚÐ-ŒÐÐ
­>ÚÐ-ÐÐ
­?ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­¦ÚÐ-¹ÐÐ
­FÚÐ-ºÐÐ
­ÎÚÐ-»ÐÐ
­ÐÚÐ-¼ÐÐ
­ÑÚÐ-½ÐÐ
­ÌÚÐ-¾ÐÐ
­ÍÚÐ-¿ÐÐ
­>ÚÐ-ÀÐÐ
­1ÚÐ-ÁÐÐ
­‰ÚÐ-%ÐÐ
­2ÚÐ-ÂÐÐ
­3ÚÐ-ÃÐÐ
­5ÚÐ-ÄÐÐ
­9ÚÐ-(ÐÐ
­ÔÚÐ-ÅÐÐ
­:ÚÐ-ÆÐÐ
­ÕÚÐ-(ÐÐ
­:ÚÐ-ÇÐÐ
­;ÚÐ-ÈÐÐ
­<ÚÐ-ÉÐÐ
­>ÚÐ-ÊÐÐ
­?ÚÐ-ËÐÐ
­@ÚÐ-ÌÐÐ
­ÚÐ-(ÐÐ
­ÚÐ-ÍÐÐ
­ÚÐ-ÎÐÐ
­‘ÚÐ-ÉÐÐ
­’ÚÐ-ÏÐÐ
­“ÚÐ-ÐÐÐ
­”ÚÐ-ËÐÐ
­ŽÚÐ-ÌÐÐ
­•ÚÐ-(ÐÐ
­—ÚÐ-ÑÐÐ
­˜ÚÐ-ÒÐÐ
­™ÚÐ-ÉÐÐ
­šÚÐ-ÓÐÐ
­›ÚÐ-ÔÐÐ
­œÚÐ-ËÐÐ
­–ÚÐ-ÌÐÐ
­ÚÐ-(ÐÐ
­ŸÚÐ-ÕÐÐ
­ ÚÐ-ÖÐÐ
­¡ÚÐ-ÉÐÐ
­¢ÚÐ-×ÐÐ
­£ÚÐ-ØÐÐ
­¤ÚÐ-ËÐÐ
­žÚÐ-ÌÐÐ
­¥ÚÐ-(ÐÐ
­§ÚÐ-ÙÐÐ
­¨ÚÐ-ÚÐÐ
­©ÚÐ-ÉÐÐ
­ªÚÐ-ÛÐÐ
­«ÚÐ-ÜÐÐ
­¬ÚÐ-ËÐÐ
­¦ÚÐ-ÌÐÐ
­­ÚÐ-(ÐÐ
­¯ÚÐ-ÝÐÐ
­°ÚÐ-ÞÐÐ
­±ÚÐ-ÉÐÐ
­²ÚÐ-ßÐÐ
­³ÚÐ-àÐÐ
­´ÚÐ-ËÐÐ
­®ÚÐ-ÌÐÐ
­µÚÐ-(ÐÐ
­·ÚÐ-áÐÐ
­¸ÚÐ-âÐÐ
­¹ÚÐ-ÉÐÐ
­ºÚÐ-ãÐÐ
­»ÚÐ-äÐÐ
­¼ÚÐ-ËÐÐ
­¶ÚÐ-ÌÐÐ
­½ÚÐ-(ÐÐ
­¾ÚÐ-åÐÐ
­×ÚÐ-æÐÐ
­ØÚÐ-çÐÐ
­ÙÚÐ-èÐÐ
­AÚÐ-(ÐÐ
­¿ÚÐ-éÐÐ
­ÁÚÐ-êÐÐ
­ÄÚÐ-ëÐÐ
­ÅÚÐ-ìÐÐ
­ÆÚÐ-íÐÐ
­ÇÚÐ-îÐÐ
­ÈÚÐ-ïÐÐ
­ÉÚÐ-ðÐÐ
­ÊÚÐ-ñÐÐ
­ËÚÐ-òÐÐ
­ÌÚÐ-óÐÐ
­ÍÚÐ-ôÐÐ
­ÎÚÐ-õÐÐ
­ÏÚÐ-öÐÐ
­ÐÚÐ-÷ÐÐ
­ÑÚÐ-øÐÐ
­ÒÚÐ-ùÐÐ
­ÓÚÐ-úÐÐ
­ÂÚÐ-ûÐÐ
­ÃÚÐ-½ÐÐ
­ÀÚÐ-(ÐÐ
­ÚÚÐ-üÐÐ
­éÚÐ-ýÐÐ
­àÚÐ-þÐÐ
­áÚÐ-ÿÐÐ
­ýÚÐ-€ÐÐ
­þÚÐ-ÐÐ
­äÚÐ-‚ÐÐ
­èÚÐ-ƒÐÐ
­íÚÐ-„ÐÐ
­,ÚÐ-…ÐÐ
­-ÚÐ-ƒÐÐ
­ôÚÐ-†ÐÐ
­.ÚÐ-‡ÐÐ
­/ÚÐ-ƒÐÐ
­öÚÐ-ˆÐÐ
­ÿÚÐ-‰ÐÐ
­ÚÐ-ƒÐÐ
­÷ÚÐ-ŠÐÐ
­#ÚÐ-‹ÐÐ
­'ÚÐ-ŒÐÐ
­(ÚÐ-ÐÐ
­)ÚÐ-ŽÐÐ
­+ÚÐ-ÐÐ
­*ÚÐ-ÐÐ
­$ÚÐ-ƒÐÐ
­øÚÐ-‘ÐÐ
­ÚÐ-’ÐÐ
­ÚÐ-“ÐÐ
­ÚÐ-”ÐÐ
­ÚÐ-•ÐÐ
­ÚÐ-–ÐÐ
­ÚÐ-—ÐÐ
­ÚÐ-˜ÐÐ
­ÚÐ-™ÐÐ
­ÚÐ-šÐÐ
­ÚÐ-›ÐÐ
­ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­ÚÐ-žÐÐ
­ÚÐ-ŸÐÐ
­ ÚÐ- ÐÐ
­!ÚÐ-¡ÐÐ
­"ÚÐ-¢ÐÐ
­ÚÐ-£ÐÐ
­ùÚÐ-¤ÐÐ
­ÚÐ-¥ÐÐ
­ÚÐ-“ÐÐ
­ÚÐ-”ÐÐ
­ÚÐ-•ÐÐ
­ÚÐ-–ÐÐ
­ÚÐ-—ÐÐ
­ÚÐ-¦ÐÐ
­   ÚÐ-§ÐÐ
­
5
eÐÐ
­ÚÐ-óÐÐ
­ÚÐ-ôÐÐ
­ÚÐ-õÐÐ
­ ÚÐ-öÐÐ
­×ÚÐ-÷ÐÐ
­!ÚÐ-øÐÐ
­"ÚÐ-ùÐÐ
­#ÚÐ-úÐÐ
­$ÚÐ-ûÐÐ
­%ÚÐ-üÐÐ
­ŽÚÐ-ýÐÐ
­'ÚÐ-þÐÐ
­(ÚÐ-ÿÐÐ
­}ÚÐ-€ÐÐ
­ÚÐ-ÐÐ
­qÚÐ-‚ÐÐ
­sÚÐ-ƒÐÐ
­tÚÐ-„ÐÐ
­uÚÐ-…ÐÐ
­vÚÐ-†ÐÐ
­wÚÐ-‡ÐÐ
­xÚÐ-ˆÐÐ
­yÚÐ-‰ÐÐ
­zÚÐ-ŠÐÐ
­{ÚÐ-‹ÐÐ
­pÚÐ-ŒÐÐ
­)ÚÐ-þÐÐ
­*ÚÐ-ÐÐ
­+ÚÐ-ŽÐÐ
­,ÚÐ-ÐÐ
­-ÚÐ-ÐÐ
­.ÚÐ-‘ÐÐ
­/ÚÐ-þÐÐ
­0ÚÐ-’ÐÐ
­ŠÚÐ-“ÐÐ
­ŒÚÐ-”ÐÐ
­9ÚÐ-•ÐÐ
­?ÚÐ-–ÐÐ
­BÚÐ-—ÐÐ
­_ÚÐ-˜ÐÐ
­‹ÚÐ-%ÐÐ
­4ÚÐ-™ÐÐ
­5ÚÐ-šÐÐ
­6ÚÐ-›ÐÐ
­7ÚÐ-œÐÐ
­8ÚÐ-%ÐÐ
­9ÚÐ-ÐÐ
­:ÚÐ-žÐÐ
­;ÚÐ-ŸÐÐ
­<ÚÐ- ÐÐ
­=ÚÐ-¡ÐÐ
­>ÚÐ-¢ÐÐ
­?ÚÐ-£ÐÐ
­@ÚÐ-¤ÐÐ
­AÚÐ-¥ÐÐ
­BÚÐ-¦ÐÐ
­CÚÐ-§ÐÐ
­DÚÐ-¨ÐÐ
­EÚÐ-©ÐÐ
­FÚÐ-ªÐÐ
­GÚÐ-«ÐÐ
­HÚÐ-¬ÐÐ
­IÚÐ-­ÐÐ
­JÚÐ-®ÐÐ
­KÚÐ-¯ÐÐ
­LÚÐ-°ÐÐ
­MÚÐ-±ÐÐ
­NÚÐ-²ÐÐ
­OÚÐ-³ÐÐ
­PÚÐ-´ÐÐ
­QÚÐ-µÐÐ
­RÚÐ-¶ÐÐ
­SÚÐ-·ÐÐ
­TÚÐ-¸ÐÐ
­UÚÐ-¹ÐÐ
­VÚÐ-ºÐÐ
­WÚÐ-ŸÐÐ
­XÚÐ-»ÐÐ
­YÚÐ-¼ÐÐ
­ZÚÐ-½ÐÐ
­[ÚÐ-¾ÐÐ
­\ÚÐ-¿ÐÐ
­]ÚÐ-ÀÐÐ
­^ÚÐ-ÁÐÐ
­_ÚÐ-ÂÐÐ
­`ÚÐ-ÃÐÐ
­aÚÐ-ÄÐÐ
­bÚÐ-ÅÐÐ
­cÚÐ-ÆÐÐ
­eÚÐ-ÇÐÐ
­fÚÐ-ÈÐÐ
­~ÚÐ-ÉÐÐ
­iÚÐ-ÊÐÐ
­jÚÐ-ËÐÐ
­kÚÐ-ÌÐÐ
­lÚÐ-ÍÐÐ
­mÚÐ-ÎÐÐ
­2ÚÐ-ÏÐÐ
­3ÚÐ-%ÐÐ
­1ÚÐ-þÐÐ
­ÚÐ-%ÐÐ-ÑÐÒÓ-ÔÕÖÐ×Ø­
5
ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­ÚÐ-žÐÐ
­
ÚÐ-ŸÐÐ
­ÚÐ- ÐÐ
­ÚÐ-¡ÐÐ
­ÚÐ-¢ÐÐ
­ÚÐ-£ÐÐ
­úÚÐ-¨ÐÐ
­ûÚÐ-©ÐÐ
­üÚÐ-ƒÐÐ
­âÚÐ-¹ÐÐ
­êÚÐ-ªÐÐ
­~ÚÐ-(ÐÐ
­0ÚÐ-«ÐÐ
­4ÚÐ-ýÐÐ
­5ÚÐ-ÉÐÐ
­7ÚÐ-¬ÐÐ
­8ÚÐ-ËÐÐ
­3ÚÐ-ÌÐÐ
­1ÚÐ-(ÐÐ
­ÚÐ-­ÐÐ
­€ÚÐ-(ÐÐ
­ÚÐ-®ÐÐ
­‚ÚÐ-¯ÐÐ
­ÚÐ-ÁÐÐ
­„ÚÐ-%а±Ð   E
6
fÐÐ
­ÚÐ-²ÐÐ
­ÚÐ-³ÐÐ
­ÚÐ-´ÐÐ
­ ÚÐ-µÐÐ
­×ÚÐ-¶ÐÐ
­!ÚÐ-·ÐÐ
­"ÚÐ-¸ÐÐ
­#ÚÐ-¹ÐÐ
­$ÚÐ-ºÐÐ
­%ÚÐ-»ÐÐ
­ŽÚÐ-¼ÐÐ
­'ÚÐ-½ÐÐ
­(ÚÐ-¾ÐÐ
­}ÚÐ-¿ÐÐ
­ÚÐ-ÀÐÐ
­qÚÐ-ÁÐÐ
­sÚÐ-ÂÐÐ
­tÚÐ-ÃÐÐ
­uÚÐ-ÄÐÐ
­vÚÐ-ÅÐÐ
­wÚÐ-ÆÐÐ
­xÚÐ-ÇÐÐ
­yÚÐ-ÈÐÐ
­zÚÐ-ÉÐÐ
­{ÚÐ-ÊÐÐ
­pÚÐ-ËÐÐ
­)ÚÐ-½ÐÐ
­*ÚÐ-ÌÐÐ
­+ÚÐ-ÍÐÐ
­,ÚÐ-ÎÐÐ
­-ÚÐ-ÏÐÐ
­.ÚÐ-ÐÐÐ
­/ÚÐ-½ÐÐ
­0ÚÐ-ÑÐÐ
­ŠÚÐ-ÒÐÐ
­ŒÚÐ-ÓÐÐ
­9ÚÐ-ÔÐÐ
­?ÚÐ-ÕÐÐ
­BÚÐ-ÖÐÐ
­_ÚÐ-×ÐÐ
­‹ÚÐ-%ÐÐ
­4ÚÐ-ØÐÐ
­5ÚÐ-ÙÐÐ
­6ÚÐ-ÚÐÐ
­7ÚÐ-ÛÐÐ
­8ÚÐ-%ÐÐ
­9ÚÐ-ÜÐÐ
­:ÚÐ-ÝÐÐ
­;ÚÐ-ÞÐÐ
­<ÚÐ-ßÐÐ
­=ÚÐ-àÐÐ
­>ÚÐ-áÐÐ
­?ÚÐ-âÐÐ
­@ÚÐ-ãÐÐ
­AÚÐ-äÐÐ
­BÚÐ-åÐÐ
­CÚÐ-æÐÐ
­DÚÐ-çÐÐ
­EÚÐ-èÐÐ
­FÚÐ-éÐÐ
­GÚÐ-êÐÐ
­HÚÐ-ëÐÐ
­IÚÐ-ìÐÐ
­JÚÐ-íÐÐ
­KÚÐ-îÐÐ
­LÚÐ-ïÐÐ
­MÚÐ-ðÐÐ
­NÚÐ-ñÐÐ
­OÚÐ-òÐÐ
­PÚÐ-óÐÐ
­QÚÐ-ôÐÐ
­RÚÐ-õÐÐ
­SÚÐ-öÐÐ
­ëÚÐ-÷ÐÐ
­TÚÐ-øÐÐ
­UÚÐ-ùÐÐ
­VÚÐ-úÐÐ
­WÚÐ-ÞÐÐ
­XÚÐ-ûÐÐ
­YÚÐ-üÐÐ
­ZÚÐ-ýÐÐ
­[ÚÐ-þÐÐ
­\ÚÐ-ÿÐÐ
­]ÚÐ-€ÐÐ
­^ÚÐ-ÐÐ
­_ÚÐ-‚ÐÐ
­`ÚÐ-ƒÐÐ
­aÚÐ-„ÐÐ
­bÚÐ-…ÐÐ
­cÚÐ-†ÐÐ
­eÚÐ-‡ÐÐ
­fÚÐ-ˆÐÐ
­~ÚÐ-‰ÐÐ
­iÚÐ-ŠÐÐ
­jÚÐ-‹ÐÐ
­kÚÐ-ŒÐÐ
­lÚÐ-ÐÐ
­mÚÐ-ŽÐÐ
­2ÚÐ-ÐÐ
­3ÚÐ-%ÐÐ
­1ÚÐ-½ÐÐ
­ÚÐ-%А-‘В“-”•–З˜­