[r19]: / trunk / Library / POUs / FB_Assert / AssertEquals / svnobj  Maximize  Restore  History

Download this file

301 lines (301 with data), 35.2 kB

Gx_lB‰!0…jüo´lÄÄp±f[n±System.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
longTagText
:IF GVL.IgnoreCurrentTest THEN    RETURN;END_IFNAnyComparator(AnyValueOne := Expected, 4			AnyValueTwo := Actual);Ì(* First check whether the input data are any of the standard data types that are supported by TcUnit.Ô   In this case call the standard Assert-methods for that data. But before doing that we need to make sureJ   that both the expected and actual:B   - Have both the same data typeB   - Both have the same data size*)¨IF NOT AnyComparator.DataTypesNotEquals AND NOT AnyComparator.DataSizeNotEquals THEN    (* BOOL *)ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BOOL THEN¾        //MEMCPY(destAddr := ADR(boolExpected), srcAddr := Expected.pValue, n := SIZEOF(BOOL));®		MEMCPY(destAddr := ADR(boolExpected), srcAddr := Expected.pValue, n := SIZEOF(BOOL));²        MEMCPY(destAddr := ADR(boolActual), srcAddr := Actual.pValue, n := SIZEOF(BOOL));¼        AssertEquals_BOOL(Expected := boolExpected, Actual := boolActual, Message := Message);         RETURN;!    END_IF"    (* BYTE *)#ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BYTE THEN$º        MEMCPY(destAddr := ADR(byteExpected), srcAddr := Expected.pValue, n := SIZEOF(BYTE));%²        MEMCPY(destAddr := ADR(byteActual), srcAddr := Actual.pValue, n := SIZEOF(BYTE));&¼        AssertEquals_BYTE(Expected := byteExpected, Actual := byteActual, Message := Message);'    (* DATE *)(ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATE THEN)º        MEMCPY(destAddr := ADR(dateExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE));*²        MEMCPY(destAddr := ADR(dateActual), srcAddr := Actual.pValue, n := SIZEOF(DATE));+¼        AssertEquals_DATE(Expected := dateExpected, Actual := dateActual, Message := Message);,.    (* DATE_AND_TIME *)-¬    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATEANDTIME THEN.Ú        MEMCPY(destAddr := ADR(dateAndTimeExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE_AND_TIME));/Ò        MEMCPY(destAddr := ADR(dateAndTimeActual), srcAddr := Actual.pValue, n := SIZEOF(DATE_AND_TIME));0ê        AssertEquals_DATE_AND_TIME(Expected := dateAndTimeExpected, Actual := dateAndTimeActual, Message := Message);1    (* DINT *)2ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DINT THEN3º        MEMCPY(destAddr := ADR(dintExpected), srcAddr := Expected.pValue, n := SIZEOF(DINT));4²        MEMCPY(destAddr := ADR(dintActual), srcAddr := Actual.pValue, n := SIZEOF(DINT));5¼        AssertEquals_DINT(Expected := dintExpected, Actual := dintActual, Message := Message);6    (* DWORD *)7     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DWORD THEN8¾        MEMCPY(destAddr := ADR(dwordExpected), srcAddr := Expected.pValue, n := SIZEOF(DWORD));9¶        MEMCPY(destAddr := ADR(dwordActual), srcAddr := Actual.pValue, n := SIZEOF(DWORD));:        AssertEquals_DWORD(Expected := dwordExpected, Actual := dwordActual, Message := Message);;    (* INT *)<œ    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_INT THEN=¶        MEMCPY(destAddr := ADR(intExpected), srcAddr := Expected.pValue, n := SIZEOF(INT));>®        MEMCPY(destAddr := ADR(intActual), srcAddr := Actual.pValue, n := SIZEOF(INT));?¶        AssertEquals_INT(Expected := intExpected, Actual := intActual, Message := Message);@    (* LINT *)Až    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LINT THENBº        MEMCPY(destAddr := ADR(lintExpected), srcAddr := Expected.pValue, n := SIZEOF(LINT));C²        MEMCPY(destAddr := ADR(lintActual), srcAddr := Actual.pValue, n := SIZEOF(LINT));D¼        AssertEquals_LINT(Expected := lintExpected, Actual := lintActual, Message := Message);E    (* LREAL *)F     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LREAL THENG¾        MEMCPY(destAddr := ADR(lrealExpected), srcAddr := Expected.pValue, n := SIZEOF(LREAL));H¶        MEMCPY(destAddr := ADR(lrealActual), srcAddr := Actual.pValue, n := SIZEOF(LREAL));IÞ        AssertEquals_LREAL(Expected := lrealExpected, Actual := lrealActual, Delta := 0.0, Message := Message);J    (* LTIME *)K     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LTIME THENL¾        MEMCPY(destAddr := ADR(ltimeExpected), srcAddr := Expected.pValue, n := SIZEOF(LTIME));M¶        MEMCPY(destAddr := ADR(ltimeActual), srcAddr := Actual.pValue, n := SIZEOF(LTIME));N        AssertEquals_LTIME(Expected := ltimeExpected, Actual := ltimeActual, Message := Message);O    (* LWORD *)P     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LWORD THENQ¾        MEMCPY(destAddr := ADR(lwordExpected), srcAddr := Expected.pValue, n := SIZEOF(LWORD));R¶        MEMCPY(destAddr := ADR(lwordActual), srcAddr := Actual.pValue, n := SIZEOF(LWORD));S        AssertEquals_LWORD(Expected := lwordExpected, Actual := lwordActual, Message := Message);T    (* REAL *)Už    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_REAL THENVº        MEMCPY(destAddr := ADR(realExpected), srcAddr := Expected.pValue, n := SIZEOF(REAL));W²        MEMCPY(destAddr := ADR(realActual), srcAddr := Actual.pValue, n := SIZEOF(REAL));XØ        AssertEquals_REAL(Expected := realExpected, Actual := realActual, Delta := 0.0, Message := Message);Y    (* SINT *)Zž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_SINT THEN[º        MEMCPY(destAddr := ADR(sintExpected), srcAddr := Expected.pValue, n := SIZEOF(SINT));\²        MEMCPY(destAddr := ADR(sintActual), srcAddr := Actual.pValue, n := SIZEOF(SINT));]¼        AssertEquals_SINT(Expected := sintExpected, Actual := sintActual, Message := Message);^     (* STRING *)_¢    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_STRING THEN`â        MEMCPY(destAddr := ADR(stringExpected), srcAddr := Expected.pValue, n := DINT_TO_UDINT(Expected.diSize));aÖ        MEMCPY(destAddr := ADR(stringActual), srcAddr := Actual.pValue, n := DINT_TO_UDINT(Actual.diSize));bÈ        AssertEquals_STRING(Expected := stringExpected, Actual := stringActual, Message := Message);c    (* TIME *)dž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIME THENeº        MEMCPY(destAddr := ADR(timeExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME));f²        MEMCPY(destAddr := ADR(timeActual), srcAddr := Actual.pValue, n := SIZEOF(TIME));g¼        AssertEquals_TIME(Expected := timeExpected, Actual := timeActual, Message := Message);h*    (* TIME_OF_DAY *)i¨    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIMEOFDAY THENjÒ        MEMCPY(destAddr := ADR(timeOfDayExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME_OF_DAY));kÊ        MEMCPY(destAddr := ADR(timeOfDayActual), srcAddr := Actual.pValue, n := SIZEOF(TIME_OF_DAY));lÞ        AssertEquals_TIME_OF_DAY(Expected := timeOfDayExpected, Actual := timeOfDayActual, Message := Message);m    (* UDINT *)n     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UDINT THENo¾        MEMCPY(destAddr := ADR(udintExpected), srcAddr := Expected.pValue, n := SIZEOF(UDINT));p¶        MEMCPY(destAddr := ADR(udintActual), srcAddr := Actual.pValue, n := SIZEOF(UDINT));q        AssertEquals_UDINT(Expected := udintExpected, Actual := udintActual, Message := Message);r    (* UINT *)sž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UINT THENtº        MEMCPY(destAddr := ADR(uintExpected), srcAddr := Expected.pValue, n := SIZEOF(UINT));u²        MEMCPY(destAddr := ADR(uintActual), srcAddr := Actual.pValue, n := SIZEOF(UINT));v¼        AssertEquals_UINT(Expected := uintExpected, Actual := uintActual, Message := Message);w    (* ULINT *)x     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_ULINT THENy¾        MEMCPY(destAddr := ADR(ulintExpected), srcAddr := Expected.pValue, n := SIZEOF(ULINT));z¶        MEMCPY(destAddr := ADR(ulintActual), srcAddr := Actual.pValue, n := SIZEOF(ULINT));{        AssertEquals_ULINT(Expected := ulintExpected, Actual := ulintActual, Message := Message);|    (* USINT *)}     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_USINT THEN~¾        MEMCPY(destAddr := ADR(usintExpected), srcAddr := Expected.pValue, n := SIZEOF(USINT));¶        MEMCPY(destAddr := ADR(usintActual), srcAddr := Actual.pValue, n := SIZEOF(USINT));€Â        AssertEquals_USINT(Expected := usintExpected, Actual := usintActual, Message := Message);    (* WORD *)‚ž    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_WORD THENƒº        MEMCPY(destAddr := ADR(wordExpected), srcAddr := Expected.pValue, n := SIZEOF(WORD));„²        MEMCPY(destAddr := ADR(wordActual), srcAddr := Actual.pValue, n := SIZEOF(WORD));…¼        AssertEquals_WORD(Expected := wordExpected, Actual := wordActual, Message := Message);†è(* If we've come to this row, it means that the data input is not any of the standard primitive data types, and thus‡H   we need to do special handling *)ˆ¾TestInstancePath := AddTestNameToInstancePath(TestInstancePath := FINDTestSuiteInstancePath());‰PIF AnyComparator.DataTypesNotEquals THENŠâ    ExpectedDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString((Expected.TypeClass)));‹”    ExpectedDataString := CONCAT(STR1 := ExpectedDataString, STR2 := ')');ŒÖ    ActualDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString(Actual.TypeClass));Œ    ActualDataString := CONCAT(STR1 := ActualDataString, STR2 := ')');ŽTELSIF AnyComparator.DataSizeNotEquals THENÄ    ExpectedDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Expected.diSize));¼    ActualDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Actual.diSize));‘ZELSIF AnyComparator.DataContentNotEquals THEN’ü    FOR Count := 0 TO MIN(Expected.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)“€        ExpectedDataString := CONCAT(STR1 := ExpectedDataString,”Ì                                                  STR2 := BYTE_TO_HEXSTR(in := Expected.pValue[Count],•Î                                                                                       iPrecision := 2,–Ô                                                                                       bLoCase := FALSE));—    END_FOR˜–    ExpectedDataString := CONCAT(STR1 := '0x', STR2 := ExpectedDataString);™ø    FOR Count := 0 TO MIN(Actual.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)šx        ActualDataString := CONCAT(STR1 := ActualDataString,›Ä                                                STR2 := BYTE_TO_HEXSTR(in := Actual.pValue[Count],œÊ                                                                                     iPrecision := 2,Ð                                                                                     bLoCase := FALSE));žŽ    ActualDataString := CONCAT(STR1 := '0x', STR2 := ActualDataString);ŸæIF (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THEN h    AssertResults.ReportResult(Expected := Expected,¡`                               Actual := Actual,¢d                               Message := Message,£ˆ                               TestInstancePath := TestInstancePath,¤†                               AlreadyReported => AlreadyReported);¥–IF NOT AlreadyReported AND (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THEN¦(    SetTestFailed();§–    AssertMessageFormatter.LogAssertFailure(Expected := ExpectedDataString,¨Ž                                            Actual := ActualDataString,©~                                            Message := Message,ª¤                                            TestInstancePath := TestInstancePath);«Interface¬L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}­(*®Ê    Asserts that two objects (of any type) are equal. If they are not, an assertion error is created.¯Î    For REAL and LREAL it's recommended to use the AssertEquals_REAL or AssertEquals_LREAL respectively°¶    as these give the possibility to specify a delta between the expected and actual value.±4METHOD PUBLIC AssertEquals²VAR_INPUT³J    Expected : ANY; // Expected value´p    Actual : ANY; // The value to check against expectedµš    Message : T_MaxString; // The identifying message for the assertion error¶END_VAR·VAR¸"    Count : DINT;¹H    ExpectedDataString : STRING(80);ºD    ActualDataString : STRING(80);»F    TestInstancePath : T_MaxString;¼6    AlreadyReported : BOOL;½J    AnyComparator : FB_AnyComparator;¾0    boolExpected : BOOL;¿,    boolActual : BOOL;À0    byteExpected : BYTE;Á,    byteActual : BYTE;Â0    dateExpected : DATE;Ã,    dateActual : DATE;ÄP    dateAndTimeExpected : DATE_AND_TIME;ÅL    dateAndTimeActual : DATE_AND_TIME;Æ0    dintExpected : DINT;Ç,    dintActual : DINT;È4    dwordExpected : DWORD;É0    dwordActual : DWORD;Ê,    intExpected : INT;Ë(    intActual : INT;Ì0    lintExpected : LINT;Í,    lintActual : LINT;Î4    lrealExpected : LREAL;Ï0    lrealActual : LREAL;Ð4    ltimeExpected : LTIME;Ñ0    ltimeActual : LTIME;Ò4    lwordExpected : LWORD;Ó0    lwordActual : LWORD;Ô0    realExpected : REAL;Õ,    realActual : REAL;Ö0    sintExpected : SINT;×,    sintActual : SINT;ØB    stringExpected : T_MaxString;Ù>    stringActual : T_MaxString;Ú0    timeExpected : TIME;Û,    timeActual : TIME;ÜH    timeOfDayExpected : TIME_OF_DAY;ÝD    timeOfDayActual : TIME_OF_DAY;Þ4    udintExpected : UDINT;ß0    udintActual : UDINT;à0    uintExpected : UINT;á,    uintActual : UINT;â4    ulintExpected : ULINT;ã0    ulintActual : ULINT;ä4    usintExpected : USINT;å0    usintActual : USINT;æ0    wordExpected : WORD;ç,    wordActual : WORD;ÐÐÐEëÐÐ	
­ÚÐ-
ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­(ÚÐ-ÐÐ	
­	ÚÐ-ÐÐ	
­
ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­
ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­)ÚÐ-ÐÐ	
­*ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ- ÐÐ	
­ÚÐ-!ÐÐ	
­ÚÐ-ÐÐ	
­ÚÐ-"ÐÐ	
­ÚÐ-#ÐÐ	
­ÚÐ-$ÐÐ	
­ÚÐ-%ÐÐ	
­ÚÐ-&ÐÐ	
­ÚÐ- ÐÐ	
­ ÚÐ-!ÐÐ	
­!ÚÐ-ÐÐ	
­"ÚÐ-'ÐÐ	
­#ÚÐ-(ÐÐ	
­$ÚÐ-)ÐÐ	
­%ÚÐ-*ÐÐ	
­&ÚÐ-+ÐÐ	
­'ÚÐ- ÐÐ	
­(ÚÐ-!ÐÐ	
­)ÚÐ-ÐÐ	
­*ÚÐ-,ÐÐ	
­+ÚÐ--ÐÐ	
­,ÚÐ-.ÐÐ	
­-ÚÐ-/ÐÐ	
­.ÚÐ-0ÐÐ	
­/ÚÐ- ÐÐ	
­0ÚÐ-!ÐÐ	
­1ÚÐ-ÐÐ	
­2ÚÐ-1ÐÐ	
­3ÚÐ-2ÐÐ	
­4ÚÐ-3ÐÐ	
­5ÚÐ-4ÐÐ	
­6ÚÐ-5ÐÐ	
­7ÚÐ- ÐÐ	
­8ÚÐ-!ÐÐ	
­9ÚÐ-ÐÐ	
­:ÚÐ-6ÐÐ	
­;ÚÐ-7ÐÐ	
­<ÚÐ-8ÐÐ	
­=ÚÐ-9ÐÐ	
­>ÚÐ-:ÐÐ	
­?ÚÐ- ÐÐ	
­@ÚÐ-!ÐÐ	
­AÚÐ-ÐÐ	
­BÚÐ-;ÐÐ	
­CÚÐ-<ÐÐ	
­DÚÐ-=ÐÐ	
­EÚÐ->ÐÐ	
­FÚÐ-?ÐÐ	
­GÚÐ- ÐÐ	
­HÚÐ-!ÐÐ	
­IÚÐ-ÐÐ	
­JÚÐ-@ÐÐ	
­KÚÐ-AÐÐ	
­LÚÐ-BÐÐ	
­MÚÐ-CÐÐ	
­NÚÐ-DÐÐ	
­OÚÐ- ÐÐ	
­PÚÐ-!ÐÐ	
­QÚÐ-ÐÐ	
­RÚÐ-EÐÐ	
­SÚÐ-FÐÐ	
­TÚÐ-GÐÐ	
­UÚÐ-HÐÐ	
­VÚÐ-IÐÐ	
­WÚÐ- ÐÐ	
­XÚÐ-!ÐÐ	
­YÚÐ-ÐÐ	
­ZÚÐ-JÐÐ	
­[ÚÐ-KÐÐ	
­\ÚÐ-LÐÐ	
­]ÚÐ-MÐÐ	
­^ÚÐ-NÐÐ	
­_ÚÐ- ÐÐ	
­`ÚÐ-!ÐÐ	
­aÚÐ-ÐÐ	
­bÚÐ-OÐÐ	
­cÚÐ-PÐÐ	
­dÚÐ-QÐÐ	
­eÚÐ-RÐÐ	
­fÚÐ-SÐÐ	
­gÚÐ- ÐÐ	
­hÚÐ-!ÐÐ	
­iÚÐ-ÐÐ	
­jÚÐ-TÐÐ	
­kÚÐ-UÐÐ	
­lÚÐ-VÐÐ	
­mÚÐ-WÐÐ	
­nÚÐ-XÐÐ	
­oÚÐ- ÐÐ	
­pÚÐ-!ÐÐ	
­qÚÐ-ÐÐ	
­rÚÐ-YÐÐ	
­sÚÐ-ZÐÐ	
­tÚÐ-[ÐÐ	
­uÚÐ-\ÐÐ	
­vÚÐ-]ÐÐ	
­wÚÐ- ÐÐ	
­xÚÐ-!ÐÐ	
­yÚÐ-ÐÐ	
­zÚÐ-^ÐÐ	
­{ÚÐ-_ÐÐ	
­|ÚÐ-`ÐÐ	
­}ÚÐ-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ÐÐ	
­¦ÚÐ-{ÐÐ	
­§ÚÐ- ÐÐ	
­¨ÚÐ-!ÐÐ	
­©ÚÐ-ÐÐ	
­ªÚÐ-|ÐÐ	
­«ÚÐ-}ÐÐ	
­¬ÚÐ-~ÐÐ	
­­ÚÐ-ÐÐ	
­®ÚÐ-€ÐÐ	
­¯ÚÐ- ÐÐ	
­°ÚÐ-!ÐÐ	
­±ÚÐ-ÐÐ	
­²ÚÐ-ÐÐ	
­³ÚÐ-‚ÐÐ	
­´ÚÐ-ƒÐÐ	
­µÚÐ-„ÐÐ	
­¶ÚÐ-…ÐÐ	
­·ÚÐ- ÐÐ	
­¸ÚÐ-!ÐÐ	
­¹ÚÐ-ÐÐ	
­ºÚÐ-ÐÐ	
­»ÚÐ-ÐÐ	
­¼ÚÐ-†ÐÐ	
­½ÚÐ-‡ÐÐ	
­¾ÚÐ-ˆÐÐ	
­¿ÚÐ-ÐÐ	
­ÀÚÐ-‰ÐÐ	
­ÁÚÐ-ŠÐÐ	
­ÂÚÐ-‹ÐÐ	
­ÃÚÐ-ŒÐÐ	
­ÄÚÐ-ÐÐ	
­ÅÚÐ-ŽÐÐ	
­ÆÚÐ-ÐÐ	
­ÇÚÐ-‹ÐÐ	
­ÈÚÐ-ÐÐ	
­ÉÚÐ-ÐÐ	
­ÊÚÐ-‘ÐÐ	
­ËÚÐ-’ÐÐ	
­ÌÚÐ-“ÐÐ	
­ÍÚÐ-”ÐÐ	
­ÎÚÐ-•ÐÐ	
­ÏÚÐ-–ÐÐ	
­ÐÚÐ-—ÐÐ	
­ÑÚÐ-˜ÐÐ	
­ÒÚÐ-ÐÐ	
­ÓÚÐ-™ÐÐ	
­ÔÚÐ-šÐÐ	
­ÕÚÐ-›ÐÐ	
­ÖÚÐ-œÐÐ	
­×ÚÐ-ÐÐ	
­ØÚÐ-—ÐÐ	
­ÙÚÐ-žÐÐ	
­ÚÚÐ-ÐÐ	
­ÛÚÐ-ÐÐ	
­ÜÚÐ-ŸÐÐ	
­ÝÚÐ- ÐÐ	
­ÞÚÐ-¡ÐÐ	
­ßÚÐ-¢ÐÐ	
­àÚÐ-£ÐÐ	
­áÚÐ-¤ÐÐ	
­âÚÐ-ÐÐ	
­ãÚÐ-ÐÐ	
­äÚÐ-¥ÐÐ	
­åÚÐ-¦ÐÐ	
­æÚÐ-ÐÐ	
­çÚÐ-§ÐÐ	
­èÚÐ-¨ÐÐ	
­éÚÐ-©ÐÐ	
­êÚÐ-ªÐÐ	
­ÚÐ-Ы¬ÐE>ÐÐ	
­ëÚÐ-­ÐÐ	
­ìÚÐ-®ÐÐ	
­íÚÐ-¯ÐÐ	
­îÚÐ-°ÐÐ	
­ïÚÐ-ÐÐ	
­ðÚÐ-±ÐÐ	
­ñÚÐ-²ÐÐ	
­òÚÐ-³ÐÐ	
­óÚÐ-´ÐÐ	
­ôÚÐ-µÐÐ	
­õÚÐ-¶ÐÐ	
­öÚÐ-·ÐÐ	
­÷ÚÐ-¸ÐÐ	
­øÚÐ-¹ÐÐ	
­ùÚÐ-ºÐÐ	
­úÚÐ-»ÐÐ	
­ûÚÐ-¼ÐÐ	
­üÚÐ-½ÐÐ	
­ýÚÐ-ÐÐ	
­þÚÐ-¾ÐÐ	
­ÿÚÐ-¿ÐÐ	
­ÚÐ-ÀÐÐ	
­ÚÐ-ÁÐÐ	
­ÚÐ-ÂÐÐ	
­ÚÐ-ÃÐÐ	
­ÚÐ-ÄÐÐ	
­ÚÐ-ÅÐÐ	
­ÚÐ-ÆÐÐ	
­ÚÐ-ÇÐÐ	
­ÚÐ-ÈÐÐ	
­	ÚÐ-ÉÐÐ	
­
ÚÐ-ÊÐÐ	
­ÚÐ-ËÐÐ	
­ÚÐ-ÌÐÐ	
­
ÚÐ-ÍÐÐ	
­ÚÐ-ÎÐÐ	
­ÚÐ-ÏÐÐ	
­ÚÐ-ÐÐÐ	
­ÚÐ-ÑÐÐ	
­ÚÐ-ÒÐÐ	
­ÚÐ-ÓÐÐ	
­ÚÐ-ÔÐÐ	
­ÚÐ-ÕÐÐ	
­ÚÐ-ÖÐÐ	
­ÚÐ-×ÐÐ	
­ÚÐ-ØÐÐ	
­ÚÐ-ÙÐÐ	
­ÚÐ-ÚÐÐ	
­ÚÐ-ÛÐÐ	
­ÚÐ-ÜÐÐ	
­ÚÐ-ÝÐÐ	
­ÚÐ-ÞÐÐ	
­ÚÐ-ßÐÐ	
­ ÚÐ-àÐÐ	
­!ÚÐ-áÐÐ	
­"ÚÐ-âÐÐ	
­#ÚÐ-ãÐÐ	
­$ÚÐ-äÐÐ	
­%ÚÐ-åÐÐ	
­&ÚÐ-æÐÐ	
­'ÚÐ-çÐÐ	
­ÚÐ-¶