1573:
The RTTI unit is used to manipulate object type information at run time. This unit contains a set of classes that allow you to: get information about an object's class and its ancestors, properties, methods and events, change property values and call methods. The following example shows the use of
1574:
the RTTI module to obtain information about the class to which an object belongs, creating it, and to call its method. The example assumes that the TSubject class has been declared in a unit named
SubjectUnit.
51:. Run-time type information may be available for all types or only to types that explicitly have it (as is the case with Ada). Run-time type information is a specialization of a more general concept called
128:
Some compilers have flags to disable RTTI. Using these flags may reduce the overall size of the application, making them especially useful when targeting systems with a limited amount of memory.
1538:
is used to check the type of a class at runtime. It tests the belonging of an object to a given class, including classes of individual ancestors present in the inheritance hierarchy tree (e.g.
207:. Whether an exception is thrown for other null reference arguments is implementation-dependent. In other words, for the exception to be guaranteed, the expression must take the form
808:
typecast behaves similarly; if the object being cast is not actually an instance of the target type, and cannot be converted to one by a language-defined method, an instance of
2142:
2183:
188:
may need to traverse the class derivation lattice of its argument at runtime. Some aspects of the returned object are implementation-defined, such as
2173:
106:, etc.). In Ada, objects of tagged types also store a type tag, which permits the identification of the type of these object at runtime. The
1990:
785:
typecast (where type check occurs while compiling), a type safety check is performed at runtime. If the types are not compatible, an
114:
1388:
798:
764:
1380:
Method specific for B was invoked Method specific for B was invoked
Exception std::bad_cast thrown. Object is not of type B
1914:
772:
768:
147:
837:
805:
40:
825:
151:
110:
operator can be used to test, at runtime, if an object is of a specific type and may be safely converted to it.
782:
2125:
2113:
832:
as its argument, and wishes to perform some additional operation if the object passed is an instance of
48:
2067:
2042:
125:
to allow objects of derived classes to perform proper cleanup if they are deleted from a base pointer.
2178:
1904:
786:
122:
52:
62:
did not include run-time type information, because he thought this mechanism was often misused.
1570:
is used when an object needs to be treated at run time as if it belonged to an ancestor class.
1392:
790:
155:
2014:
1531:
59:
1919:
16:
Programming language feature that exposes information about an object's data type at runtime
1940:
750:
71:
2150:
2168:
2089:
1899:
118:
2162:
179:
143:
36:
94:
operator, and manipulate type information at run time with classes contained in the
794:
204:
184:
777:
755:
746:
821:
86:
class. In Object Pascal, RTTI can be used to perform safe type casts with the
44:
2114:
http://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
121:. In practice, this is not a limitation because base classes must have a
904:// Since RTTI is included in the virtual method table there should be at
1966:
2018:
1909:
742:
32:
174:
in situations where just the class information is needed, because
78:
operator, and to manipulate type information at runtime using the
1566:, where the latter is the ancestor of all classes). The operator
363:// The string returned by typeid::name is implementation-defined.
162:
object, which exists until the end of the program. The use of
192:, and cannot be relied on across compilers to be consistent.
90:
operator, test the class to which an object belongs with the
2090:"Avoiding RTTI, and support for -fno-rtti in Arm Compiler 6"
166:, in a non-polymorphic context, is often preferred over
2112:
C++ standard (ISO/IEC14882) section 5.2.8 , 18.5.1 –
749:
a reference or pointer to a more specific type in the
711:// because the expression for typeid is not the result
708:// does not meet requirements to throw std::bad_typeid
31:) is a feature of some programming languages (such as
722:
Output (exact output varies by system and compiler):
203:
is the result of applying the unary * operator on a
1057:// Cast will be successful only for B type objects.
654:// Not undefined behavior; throws std::bad_typeid.
1967:"Language support library [support.rtti]"
2069:Ada 95: The Craft of Object-Oriented Programming
612:// Employee (references can also be polymorphic)
561:// because it is the dereference of a
459:// Employee (statically known at compile-time).
215:is any expression resulting in a null pointer.
558:// Employee (looked up dynamically at run-time
507:// Person* (statically known at compile-time).
1009:"Method specific for B was invoked"
949:"Method specific for A was invoked"
564:// pointer to a polymorphic class).
411:// Person (statically known at compile-time).
43:) that exposes information about an object's
8:
113:RTTI is available only for classes that are
2066:English, John (2002-02-22). "Chapter 15".
725:Person Employee Person* Employee Employee
2126:"ClassCastException (Java Platform SE 8)"
693:// Undefined behavior: dereferencing null
1931:
1240:// Array of pointers to base class A.
117:, which means they have at least one
7:
1177:" Object is not of type B"
797:will be returned (when dealing with
714:// of applying the unary * operator.
70:In C++, RTTI can be used to do safe
199:are thrown when the expression for
146:(keyword) is used to determine the
2146:operator at IBM Mac OS X Compilers
1502:" Object is not B type"
789:will be thrown (when dealing with
14:
2184:Programming language comparisons
2043:"Working with RTTI - RAD Studio"
2024:. Bjarne Stroustrup. p. 50
1750:'SubjectUnit.TSubject'
907:// least one virtual function.
1:
2019:"A History of C++: 1979—1991"
1991:"Object-oriented programming"
1941:"Runtime Type Identification"
1915:Reflection (computer science)
2174:Class (computer programming)
810:java.lang.ClassCastException
58:In the original C++ design,
25:run-time type identification
2200:
1546:class that has ancestors:
1939:Sun Microsystems (2000).
844:. This can be done using
154:at runtime. It returns a
21:run-time type information
19:In computer programming,
1576:
1397:
850:
222:
2047:docwiki.embarcadero.com
1312:// Pointer to A object.
1288:// Pointer to B object.
1264:// Pointer to B object.
1138:" Exception "
190:std::type_info::name()
1945:C++ Programming Guide
1530:In Object Pascal and
1526:Object Pascal, Delphi
1383:A similar version of
1387:can be written with
1159:" thrown."
759:, the target of the
98:unit (i.e. classes:
76:dynamic_cast<>
182:procedure, whereas
1905:Type introspection
123:virtual destructor
53:type introspection
2015:Bjarne Stroustrup
1995:learn.adacore.com
1759:TRttiInstanceType
1711:TRttiInstanceType
1597:WithoutReflection
1481:methodSpecificToB
1099:MethodSpecificToB
994:MethodSpecificToB
934:MethodSpecificToA
195:Objects of class
104:TRttiInstanceType
60:Bjarne Stroustrup
2191:
2154:operator at MSDN
2153:
2145:
2130:
2129:
2122:
2116:
2110:
2104:
2103:
2101:
2100:
2086:
2080:
2079:
2077:
2076:
2063:
2057:
2056:
2054:
2053:
2039:
2033:
2032:
2030:
2029:
2023:
2011:
2005:
2004:
2002:
2001:
1987:
1981:
1980:
1978:
1977:
1963:
1957:
1956:
1954:
1952:
1936:
1889:
1886:
1883:
1880:
1877:
1874:
1871:
1868:
1865:
1862:
1859:
1856:
1853:
1850:
1847:
1844:
1841:
1838:
1835:
1832:
1829:
1826:
1823:
1820:
1817:
1814:
1811:
1808:
1805:
1802:
1799:
1796:
1793:
1790:
1787:
1784:
1783:'Create'
1781:
1778:
1775:
1772:
1769:
1766:
1763:
1760:
1757:
1754:
1751:
1748:
1745:
1742:
1739:
1736:
1733:
1730:
1727:
1724:
1721:
1718:
1715:
1712:
1709:
1706:
1703:
1700:
1697:
1694:
1691:
1688:
1685:
1682:
1679:
1676:
1673:
1670:
1667:
1664:
1661:
1658:
1655:
1652:
1649:
1646:
1643:
1640:
1637:
1634:
1631:
1628:
1625:
1622:
1619:
1616:
1613:
1610:
1607:
1604:
1601:
1598:
1595:
1592:
1589:
1586:
1583:
1580:
1569:
1537:
1521:
1518:
1515:
1512:
1509:
1506:
1503:
1500:
1497:
1494:
1491:
1488:
1485:
1482:
1479:
1476:
1473:
1470:
1467:
1464:
1461:
1458:
1455:
1452:
1449:
1446:
1443:
1440:
1437:
1434:
1431:
1428:
1425:
1422:
1419:
1416:
1413:
1410:
1407:
1404:
1401:
1386:
1377:Console output:
1373:
1370:
1367:
1364:
1361:
1358:
1355:
1352:
1349:
1346:
1343:
1340:
1337:
1334:
1331:
1328:
1325:
1322:
1319:
1316:
1313:
1310:
1307:
1304:
1301:
1298:
1295:
1292:
1289:
1286:
1283:
1280:
1277:
1274:
1271:
1268:
1265:
1262:
1259:
1256:
1253:
1250:
1247:
1244:
1241:
1238:
1235:
1232:
1229:
1226:
1223:
1220:
1217:
1214:
1211:
1208:
1205:
1202:
1199:
1196:
1193:
1190:
1187:
1184:
1181:
1178:
1175:
1172:
1169:
1166:
1163:
1160:
1157:
1154:
1151:
1148:
1145:
1142:
1139:
1136:
1133:
1130:
1127:
1124:
1121:
1118:
1115:
1112:
1109:
1106:
1103:
1100:
1097:
1094:
1091:
1088:
1085:
1082:
1079:
1076:
1073:
1070:
1067:
1064:
1061:
1058:
1055:
1052:
1049:
1046:
1043:
1040:
1037:
1034:
1031:
1028:
1025:
1022:
1019:
1016:
1013:
1010:
1007:
1004:
1001:
998:
995:
992:
989:
986:
983:
980:
977:
974:
971:
968:
965:
962:
959:
956:
953:
950:
947:
944:
941:
938:
935:
932:
929:
926:
923:
920:
917:
914:
911:
908:
905:
902:
899:
896:
893:
890:
887:
884:
881:
878:
875:
874:<typeinfo>
872:
869:
866:
863:
862:<iostream>
860:
857:
854:
847:
843:
835:
831:
812:will be thrown.
811:
780:
762:
758:
740:
718:
715:
712:
709:
706:
703:
700:
697:
694:
691:
688:
685:
682:
679:
676:
673:
670:
667:
664:
661:
658:
655:
652:
649:
646:
643:
640:
637:
634:
631:
628:
625:
622:
619:
616:
613:
610:
607:
604:
601:
598:
595:
592:
589:
586:
583:
580:
577:
574:
571:
568:
565:
562:
559:
556:
553:
550:
547:
544:
541:
538:
535:
532:
529:
526:
523:
520:
517:
514:
511:
508:
505:
502:
499:
496:
493:
490:
487:
484:
481:
478:
475:
472:
469:
466:
463:
460:
457:
454:
451:
448:
445:
442:
439:
436:
433:
430:
427:
424:
421:
418:
415:
412:
409:
406:
403:
400:
397:
394:
391:
388:
385:
382:
379:
376:
373:
370:
367:
364:
361:
358:
355:
352:
349:
346:
343:
340:
337:
334:
331:
328:
325:
322:
319:
316:
313:
310:
307:
304:
301:
298:
295:
292:
289:
286:
283:
280:
277:
274:
271:
268:
265:
262:
259:
256:
253:
250:
247:
244:
241:
238:
235:
234:<typeinfo>
232:
229:
228:<iostream>
226:
214:
210:
202:
198:
191:
187:
177:
173:
168:dynamic_cast<
165:
161:
142:
109:
97:
93:
89:
85:
81:
77:
2199:
2198:
2194:
2193:
2192:
2190:
2189:
2188:
2159:
2158:
2151:
2143:
2139:
2134:
2133:
2124:
2123:
2119:
2111:
2107:
2098:
2096:
2088:
2087:
2083:
2074:
2072:
2065:
2064:
2060:
2051:
2049:
2041:
2040:
2036:
2027:
2025:
2021:
2013:
2012:
2008:
1999:
1997:
1989:
1988:
1984:
1975:
1973:
1965:
1964:
1960:
1950:
1948:
1938:
1937:
1933:
1928:
1896:
1891:
1890:
1887:
1884:
1881:
1878:
1875:
1872:
1869:
1866:
1863:
1860:
1857:
1854:
1851:
1848:
1845:
1842:
1839:
1837:'Hello'
1836:
1833:
1830:
1827:
1824:
1821:
1818:
1815:
1812:
1809:
1806:
1803:
1800:
1797:
1794:
1791:
1788:
1785:
1782:
1779:
1776:
1773:
1770:
1767:
1764:
1761:
1758:
1755:
1752:
1749:
1746:
1743:
1740:
1737:
1734:
1731:
1728:
1725:
1722:
1719:
1716:
1713:
1710:
1707:
1704:
1701:
1698:
1695:
1692:
1689:
1686:
1683:
1680:
1677:
1674:
1671:
1668:
1665:
1662:
1659:
1656:
1653:
1650:
1647:
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1623:
1620:
1617:
1614:
1611:
1608:
1605:
1602:
1599:
1596:
1593:
1590:
1587:
1584:
1581:
1578:
1567:
1535:
1534:, the operator
1528:
1523:
1522:
1519:
1516:
1513:
1510:
1507:
1504:
1501:
1498:
1495:
1492:
1489:
1486:
1483:
1480:
1477:
1474:
1471:
1468:
1465:
1462:
1459:
1456:
1453:
1450:
1447:
1444:
1441:
1438:
1435:
1432:
1429:
1426:
1423:
1420:
1417:
1414:
1411:
1408:
1405:
1402:
1399:
1384:
1381:
1375:
1374:
1371:
1368:
1365:
1362:
1359:
1356:
1353:
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1308:
1305:
1302:
1299:
1296:
1293:
1290:
1287:
1284:
1281:
1278:
1275:
1272:
1269:
1266:
1263:
1260:
1257:
1254:
1251:
1248:
1245:
1242:
1239:
1236:
1233:
1230:
1227:
1224:
1221:
1218:
1215:
1212:
1209:
1206:
1203:
1200:
1197:
1194:
1191:
1188:
1185:
1182:
1179:
1176:
1173:
1170:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1128:
1125:
1122:
1119:
1116:
1113:
1110:
1107:
1104:
1101:
1098:
1095:
1092:
1089:
1086:
1083:
1080:
1077:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1008:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
939:
936:
933:
930:
927:
924:
921:
918:
915:
912:
909:
906:
903:
900:
897:
894:
891:
888:
885:
882:
879:
876:
873:
870:
867:
864:
861:
858:
855:
852:
845:
841:
833:
829:
818:
809:
776:
760:
754:
751:class hierarchy
738:
735:
726:
720:
719:
716:
713:
710:
707:
704:
701:
698:
695:
692:
689:
686:
683:
680:
677:
674:
671:
668:
665:
662:
659:
656:
653:
650:
647:
644:
641:
638:
635:
632:
629:
626:
623:
620:
617:
614:
611:
608:
605:
602:
599:
596:
593:
590:
587:
584:
581:
578:
575:
572:
569:
566:
563:
560:
557:
554:
551:
548:
545:
542:
539:
536:
533:
530:
527:
524:
521:
518:
515:
512:
509:
506:
503:
500:
497:
494:
491:
488:
485:
482:
479:
476:
473:
470:
467:
464:
461:
458:
455:
452:
449:
446:
443:
440:
437:
434:
431:
428:
425:
422:
419:
416:
413:
410:
407:
404:
401:
398:
395:
392:
389:
386:
383:
380:
377:
374:
371:
368:
365:
362:
359:
356:
353:
350:
347:
344:
341:
338:
335:
332:
329:
326:
323:
320:
317:
314:
311:
308:
305:
302:
299:
296:
293:
290:
287:
284:
281:
278:
275:
272:
269:
266:
263:
260:
257:
254:
251:
248:
245:
242:
239:
236:
233:
230:
227:
224:
221:
212:
208:
200:
197:std::bad_typeid
196:
189:
183:
175:
167:
163:
159:
140:
137:
107:
95:
91:
87:
83:
79:
75:
68:
17:
12:
11:
5:
2197:
2195:
2187:
2186:
2181:
2176:
2171:
2161:
2160:
2157:
2156:
2148:
2138:
2137:External links
2135:
2132:
2131:
2117:
2105:
2081:
2058:
2034:
2017:(March 1993).
2006:
1982:
1958:
1930:
1929:
1927:
1924:
1923:
1922:
1920:Template (C++)
1917:
1912:
1907:
1902:
1900:Type inference
1895:
1892:
1684:WithReflection
1577:
1527:
1524:
1398:
1379:
868:<memory>
851:
817:
814:
734:
727:
724:
223:
220:
217:
160:std::type_info
136:
130:
119:virtual method
84:std::type_info
67:
64:
15:
13:
10:
9:
6:
4:
3:
2:
2196:
2185:
2182:
2180:
2177:
2175:
2172:
2170:
2167:
2166:
2164:
2155:
2149:
2147:
2141:
2140:
2136:
2127:
2121:
2118:
2115:
2109:
2106:
2095:
2094:Arm Developer
2091:
2085:
2082:
2071:
2070:
2062:
2059:
2048:
2044:
2038:
2035:
2020:
2016:
2010:
2007:
1996:
1992:
1986:
1983:
1972:
1968:
1962:
1959:
1946:
1942:
1935:
1932:
1925:
1921:
1918:
1916:
1913:
1911:
1908:
1906:
1903:
1901:
1898:
1897:
1893:
1804:MetaclassType
1575:
1571:
1565:
1561:
1557:
1553:
1549:
1545:
1541:
1533:
1525:
1396:
1394:
1390:
1378:
856:<array>
849:
839:
827:
823:
820:Suppose some
815:
813:
807:
802:
800:
796:
792:
788:
784:
779:
774:
770:
766:
757:
753:. Unlike the
752:
748:
744:
733:and Java cast
732:
728:
723:
218:
216:
206:
193:
186:
181:
180:constant-time
171:
157:
153:
149:
145:
144:reserved word
135:
131:
129:
126:
124:
120:
116:
111:
105:
101:
82:operator and
73:
65:
63:
61:
56:
54:
50:
46:
42:
38:
37:Object Pascal
34:
30:
26:
22:
2152:dynamic_cast
2144:dynamic_cast
2120:
2108:
2097:. Retrieved
2093:
2084:
2073:. Retrieved
2068:
2061:
2050:. Retrieved
2046:
2037:
2026:. Retrieved
2009:
1998:. Retrieved
1994:
1985:
1974:. Retrieved
1970:
1961:
1949:. Retrieved
1944:
1934:
1699:TRttiContext
1572:
1563:
1559:
1555:
1551:
1547:
1543:
1539:
1529:
1436:dynamic_cast
1382:
1376:
1072:dynamic_cast
848:as follows.
846:dynamic_cast
819:
803:
795:null pointer
761:dynamic_cast
745:is used for
741:operator in
739:dynamic_cast
736:
731:dynamic_cast
730:
721:
205:null pointer
194:
185:dynamic_cast
178:is always a
169:
138:
133:
127:
112:
103:
100:TRttiContext
99:
69:
57:
28:
24:
20:
18:
1738:RttiContext
1693:RttiContext
1588:SubjectUnit
1560:TPersistent
1548:TWinControl
1391:instead of
1297:make_unique
1273:make_unique
1249:make_unique
778:static_cast
756:static_cast
747:downcasting
115:polymorphic
2179:Data types
2163:Categories
2099:2021-07-13
2075:2021-07-13
2052:2021-06-06
2028:2009-05-18
2000:2021-07-13
1976:2021-07-13
1926:References
1556:TComponent
1403:MyFunction
1393:references
1385:MyFunction
1366:array_of_a
1357:MyFunction
1291:array_of_a
1267:array_of_a
1243:array_of_a
1234:array_of_a
1213:unique_ptr
1030:MyFunction
791:references
763:must be a
209:typeid(*p)
170:class_type
74:using the
1831:GetMethod
1777:GetMethod
1681:procedure
1621:MySubject
1606:MySubject
1594:procedure
1081:&>
880:namespace
824:takes an
787:exception
775:. Unlike
769:reference
156:reference
72:typecasts
45:data type
1951:16 April
1947:. Oracle
1894:See also
1825:RttiType
1816:AsObject
1798:RttiType
1771:RttiType
1744:FindType
1732:RttiType
1705:RttiType
1627:TSubject
1612:TSubject
1552:TControl
1505:<<
1499:<<
1389:pointers
1180:<<
1174:<<
1162:<<
1156:<<
1141:<<
1135:<<
1117:bad_cast
1012:<<
1006:<<
952:<<
946:<<
871:#include
865:#include
859:#include
853:#include
838:subclass
828:of type
822:function
799:pointers
597:<<
576:<<
543:<<
519:<<
492:<<
471:<<
444:<<
432:employee
423:<<
396:<<
375:<<
357:employee
339:employee
318:employee
315:Employee
279:Employee
231:#include
225:#include
66:Overview
1867:Subject
1864:finally
1852:Subject
1765:Subject
1723:TObject
1717:Subject
1657:Subject
1654:finally
1642:Subject
1564:TObject
1544:TButton
1540:Button1
1469:nullptr
925:default
910:virtual
816:Example
793:) or a
783:C-style
765:pointer
627:nullptr
267:default
252:virtual
219:Example
49:runtime
1971:eel.is
1910:typeof
1846:Invoke
1792:Invoke
1633:Create
1532:Delphi
985:public
976:public
898:public
826:object
729:C++ –
696:typeid
672:Person
639:typeid
615:Person
579:typeid
522:typeid
474:typeid
426:typeid
384:person
378:typeid
345:Person
324:Person
309:person
306:Person
288:Person
285:public
258:Person
246:public
240:Person
211:where
201:typeid
176:typeid
164:typeid
152:object
150:of an
141:typeid
134:typeid
132:C++ –
80:typeid
39:, and
2022:(PDF)
1729:begin
1648:Hello
1618:begin
1542:is a
1478:->
1445:*>
1207:array
1120:&
1114:const
1108:catch
1063:&
1039:&
967:class
889:class
877:using
773:class
702:p_ref
678:p_ref
675:&
663:(...)
660:catch
348:&
336:&
276:class
237:class
148:class
1953:2015
1873:Free
1663:Free
1582:RTTI
1579:uses
1514:endl
1496:cerr
1487:else
1475:my_b
1463:my_b
1451:my_a
1439:<
1430:my_b
1415:my_a
1400:void
1339:<
1306:>
1300:<
1282:>
1276:<
1258:>
1252:<
1231:>
1222:>
1216:<
1210:<
1198:main
1183:endl
1171:cerr
1165:endl
1150:what
1132:cerr
1093:my_b
1087:my_a
1075:<
1066:my_b
1042:my_a
1027:void
1015:endl
1003:cout
991:void
955:endl
943:cout
931:void
836:, a
806:Java
781:and
737:The
606:endl
591:name
573:cout
552:endl
537:name
516:cout
501:endl
486:name
468:cout
453:endl
438:name
420:cout
405:endl
390:name
372:cout
297:main
172:>
139:The
96:RTTI
29:RTTI
2169:C++
1885:end
1879:end
1822:try
1690:var
1675:end
1669:end
1639:try
1603:var
1508:std
1490:std
1484:();
1321:int
1315:for
1309:();
1285:();
1261:();
1195:int
1102:();
1051:try
883:std
840:of
801:).
771:to
767:or
743:C++
633:try
600:std
585:ref
567:std
546:std
531:ptr
510:std
495:std
480:ptr
462:std
447:std
414:std
399:std
366:std
351:ref
330:ptr
294:int
291:{};
158:to
47:at
41:Ada
33:C++
23:or
2165::
2092:.
2045:.
1993:.
1969:.
1943:.
1768::=
1756:as
1735::=
1624::=
1568:as
1562:→
1558:→
1554:→
1550:→
1536:is
1511:::
1493:::
1466:!=
1457:if
1454:);
1395::
1369:);
1348:++
1201:()
1153:()
1090:);
1024:};
997:()
964:};
937:()
919:()
804:A
705:);
651:);
603:::
594:()
588:).
570:::
549:::
540:()
534:).
513:::
498:::
489:()
483:).
465:::
450:::
441:()
435:).
417:::
402:::
393:()
387:).
369:::
300:()
273:};
261:()
108:in
102:,
92:is
88:as
55:.
35:,
2128:.
2102:.
2078:.
2055:.
2031:.
2003:.
1979:.
1955:.
1888:;
1882:;
1876:;
1870:.
1861:;
1858:)
1855:,
1849:(
1843:.
1840:)
1834:(
1828:.
1819:;
1813:.
1810:)
1807:,
1801:.
1795:(
1789:.
1786:)
1780:(
1774:.
1762:;
1753:)
1747:(
1741:.
1726:;
1720::
1714:;
1708::
1702:;
1696::
1687:;
1678:;
1672:;
1666:;
1660:.
1651:;
1645:.
1636:;
1630:.
1615:;
1609::
1600:;
1591:;
1585:,
1520:}
1517:;
1472:)
1460:(
1448:(
1442:B
1433:=
1427:*
1424:B
1421:{
1418:)
1412:*
1409:A
1406:(
1372:}
1363:*
1360:(
1354:)
1351:i
1345:;
1342:3
1336:i
1333:;
1330:0
1327:=
1324:i
1318:(
1303:A
1294:=
1279:B
1270:=
1255:B
1246:=
1237:;
1228:3
1225:,
1219:A
1204:{
1192:}
1189:}
1186:;
1168:;
1147:.
1144:e
1129:{
1126:)
1123:e
1111:(
1105:}
1096:.
1084:(
1078:B
1069:=
1060:B
1054:{
1048:{
1045:)
1036:A
1033:(
1021:}
1018:;
1000:{
988::
982:{
979:A
973::
970:B
961:}
958:;
940:{
928:;
922:=
916:A
913:~
901::
895:{
892:A
886:;
842:A
834:B
830:A
717:}
699:(
690:;
687:p
684:*
681:=
669:}
666:{
657:}
648:p
645:*
642:(
636:{
630:;
624:=
621:p
618:*
609:;
582:(
555:;
528:*
525:(
504:;
477:(
456:;
429:(
408:;
381:(
360:;
354:=
342:;
333:=
327:*
321:;
312:;
303:{
282::
270:;
264:=
255:~
249::
243:{
213:p
27:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.