|
|
|
|
|
| COM/DCOM ÇÁ¶óÀÌ¸Ó Ç÷¯½º
- ÀýÆÇ |
 |
|
|
|
|
|
|
|
 |
 |
ÀÌ Ã¥Àº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ °´Ã¼ ±â¹Ý ±â¼úÀÎ COM/DCOMÀ» ±âÃʺÎÅÍ ¼Ò°³Çϴ åÀ¸·Î ¹ø¿ª¼ÀÌ´Ù. ±âÁ¸ÀÇ ¶á ±¸¸§¸¸ Àâ´Â ¼³¸íÀ» Å»ÇÇÇϰí Á÷Á¢ ¼ÕÀ¸·Î ÄÚµùÇØº¸¸é¼ COM/DCOMÀÇ ±âº» °³³äÀ» È®½ÇÈ÷ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ÀÚ¼¼È÷ ¼³¸íÇϰí ÀÖ´Â °ÍÀÌ Æ¯Â¡ÀÌ´Ù. ±×·¯³ª, ¿ªÀÚ´Â ¼¹®¿¡¼ ºÐ¸íÈ÷ Áß±Þ±îÁöÀÇ ¼±À» ±ß°í ±× ÇѰ賻¿¡¼ÀÇ ÃÖ¼±ÀÇ ¼³¸íÀ» ÇÏ¿´´Ù°í ÇÑ´Ù. CORBA¿Í ¾ç¸³ÇÏ´Â COM/DCOM¿¡ ´ëÇØ¼ À̹ø ±âȸ¿¡ ÀÌ Ã¥À» ÅëÇØ¼ ±âº» °³³äÀ» Àâ´Â °ÍÀº ¾î¶³Áö. µ¶ÀÚµéÀÇ ¼±Åø¸ ³²Àº °Í °°´Ù.
ÀÌ Ã¥Àº Àüü 13ÀåÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. óÀ½, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ °´Ã¼ ±â¹Ý ±â¼úÀÎ COM/DCOM, OLE, ActiveX¿¡ ´ëÇÑ ¹ßÀü°úÁ¤À» »ìÆìº¸´Â °ÍÀ» ½ÃÀÛÀ¸·Î ÇØ¼, ÁøÁ¤ÇÑ ÀǹÌÀÇ °´Ã¼ ÁöÇâ¿¡ ´ëÇØ¼ ĸ½¶È, »ó¼Ó, ´ÙÇü¼ºÀ» ±âÁØÀ¸·Î ¼³¸íÇϰí, COM¿¡¼ÀÇ »ó¼Ó¿¡ ´ëÇØ¼ ¾Ë¾Æº»´Ù. ´ÙÀ½Àº, COMÀÇ ±Ù°£À¸·Î ºÎÅÍ Å½ÇèÀ» ½ÃÀÛÇÑ´Ù. ÀÎÇÁ·Î¼¼½º¼¹ö, ·ÎÄà ¼¹ö, ¸®¸ðÆ® ¼¹ö, ÇÁ¶ô½Ã, GUID·Î ±¸º°µÇ´Â Ŭ·¡½º, Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹öÀÇ ±¸Çö¿¡ ´ëÇÑ Å½ÇèÀ» ¸¶Ä¡¸é MFC·Î Á÷Á¢ COM ÇÁ·Î±×·¡¹ÖÀ» ÇØº¸¸ç ´ÙÁß ÀÎÅÍÆäÀ̽º¸¦ ³ëÃâ½ÃŰ´Â COM°´Ã¼¿Í ÀÎÅÍÆäÀ̽º ¸ÊÀ» »ç¿ëÇÏ¿© Áßø Çڵ鷯 Ŭ·¡½º¸¦ µî·ÏÇÏ´Â ¹æ¹ýÀ» Å͵æÇÑ´Ù. ±×¸®°í, ÄÚµå Àç»ç¿ëÀ» À§ÇÑ COM ÅëÇÕ ±â¹ý°ú ÇÁ·Î¼¼½º »çÀÌ¿¡¼ »ç¿ëÇÒ ¼öÀÖ´Â ÄÄÆ÷³ÍÆ® Áï, ·ÎÄü¹ö¸¦ ¸¸µé¾î º»´Ù. 8Àå¿¡¼´Â ATL·Î COM °´Ã¼¸¦ ¸¸µå´Â °ÍÀ» ¹è¿ì´Âµ¥ ¿©±â¼ µ¶ÀÚµéÀº ATL°ú MFCÀÇ Â÷ÀÌÁ¡À» ¾Ë¾Æº¸°í ·ÎÄà ¼¹ö¿Í ÀÎÇÁ·Î¼¼½º ¼¹ö¸¦ ¸¸µé¾î º»´Ù. ÀÌÁ¦ ÈĹݺηΠ³Ñ¾î°¡¼ COMÀÌ ³×Æ®¿öÅ© °³³äÀ¸·Î È®ÀåµÈ DCOM¿¡ ´ëÇØ¼ ¾Ë¾Æº¸´Âµ¥, ºÐ»ê ½Ã½ºÅÛ°ú Ŭ¶óÀÌ¾ðÆ® ¼¹ö ±¸Á¶ÀÇ Æ¯Â¡ºÎÅÍ ÇØ¼, NTÀÇ ±âº» º¸¾È ½Ã½ºÅÛ¿¡¼ DCOM°ú ¾ÏÈ£È API¸¦ ÅëÇÕÇÏ´Â ¹æ¹ýÀ» ¹è¿ì°í COM½º·¹µå ¸ðµ¨¸µ, ATL,MFCÀÇ ÀÚµ¿È Áö¿øÀ» ÅëÇÑ ¼ºñ½º¸¦ ±¸ÃàÇØº»´Ù. ¸¶Áö¸·À¸·Î 13Àå¿¡¼´Â ¾Õ¿¡¼ ÀÍÈù ¸ðµç ³»¿ëÀ» ¹ÙÅÁÀ¸·Î ºÐ»ê °´Ã¼ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾î º½À¸·Î½á ´ë´Ü¿øÀÇ ¸·À» ³»¸°´Ù.
|
| |
 |
 |
¿ì¼±, ÀÌ ±ÛÀ» ¾²´Â ÀÚ´Â µÎ¹ø ±â»¼´Ù. óÀ½ ÀÌ Ã¥ÀÇ ¹ø¿ªÀ» ¸Ã°Ô µÈ ³¯ ±â»¼°í, ÀÌ Ã¥ÀÇ ¹ø¿ª/Æí¿ª ¿ø°í¸¦ ³¡±îÁö ¸¶¹«¸® Áþ°Ô µÈ ³¯ ¶Ç ±â»¼´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ ±âº»ÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà ¿øÄ¢ÀÌÀÚ °´Ã¼ ÁöÇâ ±â¼úÀÇ µÎ ÃàÀ» ÀÌ·ç°í ÀÖ´Â COM/DCOMÀÇ ºñÁßÀÌ Â÷¼¼´ë À©µµ¿ì ¿î¿µÃ¼Á¦ÀÇ µîÀå ¿¹°í¿Í ´õºÒ¾î °ÅÀÇ ¸ðµç ºÎºÐÀÌ µÇ¾î°¡°í ÀÖÀ½¿¡µµ ºÒ±¸Çϰí, ¸î¸î COM ´ë°¡µéÀÇ ÀïÀïÇÑ ¿ø¼¸¦ Á¦¿ÜÇϰí´Â "±¹³»¿¡ Á¤¸» º¼ ¸¸ÇÑ COM °ü·Ã ÇнÀ¼°¡ ¾ø´Ù"´Â »ç½ÇÀ» ¾Ë°í ÀÖ¾ú±â ¶§¹®¿¡, ¸í¼ºÀÌ ÀÚÀÚÇÑ [ÇÁ¶óÀÌ¸Ó Ç÷¯½º] ½Ã¸®Áî¿¡¼ COM/DCOMÀ» ´Ù·ç¾ú´Ù´Â ¼Ò½ÄÀ» µé¾ú´ø ±Ý³â ÃÊ¿¡ ³Ê¹«µµ ±â»¼°í, Çѹø COM/DCOM Ã¥À» Á¦´ë·Î ¸¸µé¾îº¸ÀÚ´Â ¸¶À½À¸·Î ½ÃÀÛÇÏ¿´´Ù. °³ÀÎÀûÀÎ »çÁ¤(³í¹®, ÀÔÇнÃÇè µî)À¸·Î Á¶±Ý¾¿ ´ÊÃß¾îÁ® ¿ÔÁö¸¸ ³¡±îÁö ±â´Ù·ÁÁֽоçÇöÁÖ °úÀå´Ô ÀÌÇÏ ÀÎÆ÷ºÏ ÆíÁýºÎ¿¡°Ô (À̵û°¡ Çѹø ´õ °¨»çÇØ ÇÒ °ÍÀÌÁö¸¸) ±íÀº °¨»ç¸¦ µå¸°´Ù.
[ÇÁ¶óÀÌ¸Ó Ç÷¯½º] ½Ã¸®Áî´Â ¸î ³â Àü ¿þÀÌÆ® ±×·ì(Waite Group)ÀÌ ÀÚ½ÅÀÇ ÃâÆÇ»ç(¿þÀÌÆ® ±×·ì ÇÁ·¹½º)¿¡¼ Ã¥À» ³»±â Àü¿¡ SAMS ÃâÆÇ»ç¸¦ ÅëÇÏ¿© Ã¥À» ³¾ ¶§ SAMS »ç¸¦ ¸Ô¿© »ì¸° ÁÖ¿Á°°Àº º£½ºÆ®¼¿·¯ ½Ã¸®ÁîÀÌ´Ù. ÀÌ Ã¥À» ÅëÇØ ¾Ë·ÁÁø C, C++, Java µîÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀº ¸ðµÎ "ÆíÇÏ°í ½±°Ô" ´Ù°¡¿Ô´Ù. ÇÏÁö¸¸, COM/DCOMÀº ÁÖÁöÇϰí ÀÖ´Â ¹Ù¿Í °°ÀÌ À¢¸¸Å À©µµ¿ì ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °¡Áö°í ÀÖÁö ¾ÊÀº ºÐÀÌ¸é ±×·¸°Ô Á¢±ÙÇϱⰡ ÆíÇÑ ±â¼úÀº ¾Æ´Ï´Ù. °´Ã¼ ÁöÇâ ¾ð¾î °³³ä, À©µµ¿ì ¿î¿µÃ¼Á¦, ÇÁ·Î±×·¡¹Ö °³¹ß ȯ°æ µî¿¡ ´ëÇÑ ¾î´À Á¤µµÀÇ º£À̽º°¡ ÀÖ¾î¾ß ÃÄÁöÁö ¾Ê°í µû¶ó¿Ã ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¡¼ COM/DCOMÀÌ [ÇÁ¶óÀÌ¸Ó Ç÷¯½º]·Î ³ª¿Â´Ù´Â ¼Ò½ÄÀ» µé¾úÀ» ¶§ ´õ¿í °¡½¿ÀÌ µ¿µ¿°Å¸° °ÍÀÌ´Ù. "¾î¶»°Ô À̾߱⸦ Ç®¾î°¡°í ÀÖÀ»±î?"°¡ °¡Àå ±Ã±ÝÇ߱⠶§¹®ÀÌ´Ù.
ÀÌ Ã¥À» °´°üÀûÀ¸·Î Æò°¡ÇÏÀÚ¸é, "Áß±Þ ¼öÁØÀÇ ÇѰ踦 Àý´ë·Î ³ÑÁö ¾ÊÀ¸¸é¼ ÇÊ¿äÇÑ °ÍÀ» Ãæ½ÇÇϰí Ä£ÀýÇÏ°Ô ´Ù·ç¾ú´Ù"¶ó°í ÇÒ ¼ö ÀÖ´Ù. "ÇѰ踦 ³ÑÁö ¾Ê´Â´Ù"¶ó´Â °ÍÀº ÀÌ Ã¥ÀÇ ¼ÒÀÓÀÌ ¾îµð¿¡ ÀÖ´À³Ä¸¦ Á¤È®È÷ ¸»ÇØÁØ´Ù. ¹Ù·Î COM/DCOMÀÇ ³»ºÎ ±¸Á¶¿Í ±¸Çö ¹æ½Ä¿¡ ´ëÇØ °ü½ÉÀ» °¡Áö°í ÀÖ´Â Áß°í¼ö À©µµ¿ì ÇÁ·Î±×·¡¸ÓµéÀÌ ÆíÇÏ°Ô ½ÃÀÛÇÏ¿© "COMÀÇ °í±Þ »çÇ×"À¸·Î ³ª¾Æ°¡´Âµ¥ ÀüÇô ÁöÀåÀÌ ¾øÀ» Á¤µµÀÇ ¼öÁØÀ» ¸¸µé¾î ÁÖÀÚ´Â °ÍÀÌ´Ù. »ç½Ç ¿ì¸® ³ª¶ó À©µµ¿ì ÇÁ·Î±×·¡¹Ö ȯ°æÀº ³Ê¹«µµ °Ñ¸ð½À À§ÁÖ·Î ³ª¾Æ°¡°í ÀÖÁö ¾Ê´Â°¡ ÇÏ´Â »ý°¢À» °¡Áø´Ù. ¸¹Àº ÇÁ·Î±×·¡¹Ö Ã¥¿¡¼ ActiveX/OLE/COMÀ» ´Ù·ç°í ÀÖÁö¸¸, ±×°ÍÀº ±× Ã¥ÀÌ ´Ù·ç°í ÀÖ´Â °³¹ß ȯ°æ¿¡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁÖ´Â °ÍÀÌÁö, "¾î¶»°Ô?", "¹«¾ùÀ»?", "¾î¶² °ÍÀÌ?"¿¡ ´ëÇÑ ³»¿ëÀ» ¿øÇÏ´Â ¸¸Å °¡¸£Ä¡´Â °ÍÀº ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ´ÜÁö ¸î¸î COMÀÇ ´ë°¡µéÀÇ Ã¥À» ¿¹·Î µé¸é¼ "Âü°íÇ϶ó"¶ó´Â Áö½Ã¸¸ À־ °í¸¶¿î Áö°æÀÌ´Ù.
ÀÌ Ã¥Àº COM/DCOMÀÇ ³»ºÎ ±¸Á¶¿Í µ¿ÀÛ ¹æ½Ä¿¡ ´ëÇÑ ¼¼¼¼ÇÑ ¼³¸í°ú ÇÔ²² ¿¹Á¦ Äڵ带 ÅëÇÏ¿© COM/DCOM ÄÄÆ÷³ÍÆ®¸¦ Á÷Á¢ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» Â÷±ÙÈ÷ ÁøÇàÇϰí ÀÖ´Ù. °³¹ß µµ±¸·Î VC++(¹öÀü 5ȤÀº 6)¸¦ »ç¿ëÇϰí ÀÖÁö¸¸, ÀÌ Ã¥ÀÇ ¾î´À ÇÑ °÷¿¡¼µµ ¿©´À À©µµ¿ì ÇÁ·Î±×·¡¹Ö Ã¥¿¡¼³ª º¼ ¼ö ÀÖ´Â À§Àúµå(Wizard)¸¦ º¼ ¼ö ¾ø´Ù. ¸ðµç ¿¹Á¦´Â À§ÀúµåÀÇ µµ¿ò ¾øÀÌ Á÷Á¢ ¼ÕÀ¸·Î ÀÛ¼ºÇϵµ·Ï ÇÔÀ¸·Î½á "¼ÕÅé¿¡ ¶§°¡ ³¢¸é¼ ¾ò´Â Áö½ÄÀÇ ¼ÒÁßÇÔ"À» °Á¶Çϰí ÀÖ´Ù. ÀÌ Ã¥Àº ÀÚ½ÅÀÇ ¸ñÇ¥¿¡ ¸Â°Ô ÃʽÉÀÚ°¡ °¡Àå Çò°¥·Á ÇÒ °Í °°Àº ÀÎÅÍÆäÀ̽º(Interface)ÀÇ °³³ä, COM ÅëÇÕ(Aggregation)ÀÇ µ¿ÀÛ ¿ø¸®, COMÀÇ »ó¼Ó(Inheritance) ¿øÄ¢ µî¿¡ ´ëÇØ ºÎ´ã½º·¯¿ì¸® ¸¸Ä¡ ÀÚ¼¼ÇÑ ¼³¸íÀ» ÇØÁÖ¾î ½±°Ô COM °³³ä¿¡ Ä£¼÷ÇØÁú ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù(¿©´ãÀÌÁö¸¸, ±¹³»¿¡ ³ª¿ÍÀÖ´Â ¸î °³ÀÇ COM ÇÁ·Î±×·¡¹Ö Ã¥ÀÌ ÀÌ Ã¥¿¡ ³ª¿ÍÀÖ´Â ÀϺÎÀÇ ³»¿ëÀ» ¹ø¿ªÇÑ °Í °°´Ù´Â »ç½ÇÀ» ¹ß°ßÇϱ⵵ ÇÏ¿´´Ù. ¿ø·¡ÀÇ ´Ù¸¥ ¼Ò½º°¡ µû·Î ÀÖ¾ú´ÂÁö´Â ¸ð¸£Áö¸¸ ¸»ÀÌ´Ù). ¶ÇÇÑ, ¾îÆÄÆ®¸ÕÆ®(Apartment)¿Í ½º·¹µù ¸ðµ¨°°Àº ´Ù¼Ò ¹Î°¨ÇÏ°í °í±Þ½º·± »çÇ×°ú NT ÀÌ¿ÜÀÇ À©µµ¿ì¿¡¼´Â ´Ù¼Ò ³¸¼³Áö ¸ð¸¦ º¸¾È(Security) ¹®Á¦¿¡ ´ëÇØ ÀûÁö ¾ÊÀº ¼³¸íÀ» Çϰí ÀÖÀ¸¸é¼µµ, ´õ ¾î·Á¿ï »çÇ×À¸·Î ³ª°¥ ºÐÀ§±â°¡ º¸ÀÌ¸é ¹Ù·Î Áö¸éÀ» ¾Æ³¦À¸·Î½á Áß±Þ¼·ÎÀÇ ÁöÄÑ¾ß ÇÒ µµ¸®(?)¸¦ Áö۰í ÀÖ´Ù. ƯÈ÷ ÀÚµ¿È(Automation)ÀÇ °æ¿ì´Â ÀÌÂÊ¿¡ ´ëÇØ ¸¹ÀÌ ±¸ÇöÇØ º» »ç¶÷À» ÀǽÄÇÑ µí ³»ºÎ µ¿ÀÛ ¿ø¸®ÀÇ ¼³¸í¿¡ Ä¡ÁßÇÑ °¨ÀÌ º¸ÀδÙ. ³¡À¸·Î, ÇÁ·Î±×·¥ °³¹ß ÇÁ·¹ÀÓ¿öÅ©·Î MFC¸¸ »ç¿ëÇÏÁö ¾Ê°í, ÄÄÆ÷³ÍÆ® °³¹ß ÇÁ·¹ÀÓ¿öÅ©·Î ±ÞºÎ»óÇϰí ÀÖ´Â ATLÀ» ÀûÁö ¾ÊÀº ºñÁßÀ¸·Î ´Ù·ç°í ½Ç½ÀÇϰí ÀÖ´Â °Íµµ ÇϳªÀÇ Æ÷ÀÎÆ®¶ó°í ÇÒ ¼ö ÀÖ´Ù.
¸¹Àº COM ´ë°¡µéÀÇ COM ¹ÙÀ̺í°Ý ¼Àû°ú ºñ±³ÇØ º¸¸é ºÎÁ·ÇÑ °ÍÀº »ç½ÇÀÌÁö¸¸, COM °ü·Ã °í±Þ¼¸¦ Àбâ±îÁöÀÇ ºó °ø°£À» ÃæºÐÈ÷ ¸Þ¿ö ÁÙ ÁøÁöÇÑ Ã¥À¸·Î¼ ÀÌ ¸¸Å ¶Ù¾î³ Ã¥ÀÌ ¾ø´Ù°í Àå´ãÇÑ´Ù(»ç½Ç °í±Þ¼ - ¿ø¼ÀÌÁö¸¸ - µéÀº ÈǸ¢ÇÏ°Ô ÀÔÁö°¡ ´ÙÁ®Á® ÀÖ¾ú´Ù). ÀÌ¹Ì ÀÌ Ã¥ÀÇ ÃÊÆÇÀÌ ³ª¿Â ±Ý³â ÃÊ ÀÌÈÄ ¾Æ¸¶Á¸ µîÀÇ º¥Ä¡¸¶Å·¿¡¼ »ó´çÈ÷ ÁÁÀº ¹ÝÀÀÀ» ¾ò°í ÀÖ´Ù.
COM/DCOMÀº ÇÁ·Î±×·¡¹Ö Å×Å©´ÐÀÌ ¾Æ´Ñ, °´Ã¼ ÁöÇâÀû ±â¼úÀÇ ¸ðµ¨ÀÌ¿ä °³³äÀÌ´Ù. ±»ÀÌ ÇÁ·Î±×·¡¹Ö¿¡ Àü³äÇÏÁö ¾ÊÀ» ºÐÀÌ¶óµµ Á¢±ÙÇÒ ¼ö ÀÖ´Â ³»¿ëÀ̶õ À̾߱âÀÌ´Ù(¹°·Ð, ½Ç½ÀÀÌ µû¸£¸é ´õ ÁÁ°ÚÁö¸¸). ¿©±â¿£ ¿äÁò ÀÌ·¯ÄôÀú·¯Äô ¸»ÀÌ ¸¹Àº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ °´Ã¼ ÁöÇâ ±â¼ú¿¡ ´ëÇÑ Ã¶ÇÐÀÌ ±êµé¿© ÀÖ´Ù. ÀÌ·¯ÇÑ Ã¶ÇÐ ¾øÀÌ´Â ¾î¶°ÇÑ ±â¼úµµ ¸¸µé¾î Áú ¼ö ¾ø´Ù°í »ý°¢ÇÑ´Ù. µû¶ó¼, óÀ½ °øºÎÇÏ´Â ºÐµéÀº "¾î¶»°Ô?" º¸´Ù´Â "¿Ö?"¸¦ Àд´ٴ ±âºÐ¿¡ ÃÊÁ¡À» µÎ¾î¼ COM/DCOMÀ» °øºÎÇÏ¸é ´õ Àß ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. COMÀ» ´Ù³â°£ º¸¾Æ ¿Â, ÀÌ ±ÛÀ» ¾²´Â ÀÚÀÇ °³ÀÎÀûÀÎ »ý°¢ÀÌÁö¸¸, COM/DCOMÀº CORBA¿¡ °ßÁÙ¸¸ÇÑ Á¤¸» ÈǸ¢ÇÑ °´Ã¼ ¸ðµ¨À̸ç, À©µµ¿ì ¿î¿µÃ¼Á¦°¡ Áö±¸»ó¿¡¼ ¾ø¾îÁöÁö ¾Ê´Â ÇÑ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ ±â°£ ±â¼ú·Î °è¼Ó ³²¾Æ ÀÖÀ» °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. |
| |
 |
 |
°¢ ÀåÀÇ ¸ðµç ¼Ò½º ÄÚµå¿Í ½ÇÇà ÆÄÀÏ À©µµ¿ì 95/98¿ë DCOM ÆÐŰÁö ½áµåÆÄƼ°¡ °ø±ÞÇÑ ÀÀ¿ëÇÁ·Î±×·¥
|
| |
 |
 |
| |
|
|
 |
|
|