["..E$ ","A(Erre[[BB~EE|F8478684}.PF*BPZCECEEP77478}[CKX","Clone."," A full-featured language includes methods that may not be recommended. In C# (for example) the Clone method and ICloneable interface are available. But using these features causes confusion.","Example."," This program uses Clone() on a string array. The Array type implements ICloneable and the Clone call results in a copied array. When we change the cloned array, the original is unchanged. ","Arrays ","array","Interface ","interface","Example: ","We use an as-cast to change the type of the reference returned by Clone. This is needed because Clone returns an object.","As ","as","Casts ","cast","C# program that uses Clone","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {\n string[] array = { ","\"dot\"",", ","\"net\"",", ","\"perls\""," };\n string[] cloned = array.","Clone","() as string[];\n\n Console.WriteLine(string.Join(","\",\"",", array));\n Console.WriteLine(string.Join(","\",\"",", cloned));\n Console.WriteLine();","\n\n // Change the first element in the cloned array.\n ","cloned[0] = ","\"element\"",";\n\n Console.WriteLine(string.Join(","\",\"",", array));\n Console.WriteLine(string.Join(","\",\"",", cloned));\n }\n}\n\n","\n\ndot,net,perls\ndot,net,perls\n\ndot,net,perls\nelement,net,perls","Example 2."," Next we consider the implementation of Clone. In the IL of the above program, the Array.Clone static method is called. In mscorlib, where System.Array resides, Array.Clone calls into MemberwiseClone. ","Clone method call: IL","\n\nIL_0022: callvirt instance object [mscorlib]System.Array::Clone()\n\n","System.Array implementation: IL","\n\nIL_0001: call instance object System.Object::MemberwiseClone()","Also,"," System.Array implements the System.ICloneable interface. This is how the virtual execution engine knows to pass a call to Clone to the System.Array type. The Clone method is abstract and virtual. ","IL ","il","System.ICloneable interface: IL","\n\n.method public hidebysig newslot abstract virtual\n instance object Clone() cil managed\n{\n} // end of method ICloneable::Clone","Example 3."," The Rock class implements ICloneable, and defines the Clone() public method. This is probably not \"good\" code, but if Clone is wanted for some reason, it will work. ","Next: ","We create a new instance of the Rock class with its public constructor. We pass three arguments to it.","Constructor ","constructor","Finally: ","We invoke the Clone method on the first Rock instance and cast its result. We call Console.WriteLine\u2014this calls ToString.","Console.WriteLine ","console","ToString ","tostring","C# program that implements ICloneable","\n\nusing System;\n\nclass Rock : ","ICloneable","\n{\n int _weight;\n bool _round;\n bool _mossy;\n\n public Rock(int weight, bool round, bool mossy)\n {\n this._weight = weight;\n this._round = round;\n this._mossy = mossy;\n }\n\n public object ","Clone","()\n {\n return new Rock(this._weight, this._round, this._mossy);\n }\n\n public override string ToString()\n {\n return string.Format(","\"weight = {0}, round = {1}, mossy = {2}\"",",\n this._weight,\n this._round,\n this._mossy);\n }\n}\n\nclass Program\n{\n static void Main()\n {\n Rock rock1 = new Rock(10, true, false);\n Rock rock2 = rock1.","Clone","() as Rock;\n\n Console.WriteLine(","\"1. {0}\"",", rock1);\n Console.WriteLine(","\"2. {0}\"",", rock2);\n }\n}\n\n","\n\n1. weight = 10, round = True, mossy = False\n2. weight = 10, round = True, mossy = False","Discussion."," As noted in Framework Design Guidelines, Clone has some problems. The main issue is the question of shallow and deep copies. ICloneable does not define which kind of cloning is done. ","So: ","The developers using Clone are left guessing. This works against the whole point of interfaces, which is to define contracts.","The contract of ICloneable does not specify the type of clone implementation required to satisfy the contract.... Consumers cannot rely on ICloneable to let them know whether an object is deep-copied or not. Therefore we recommend that ICloneable not be implemented.","Framework Design Guidelines","Summary."," We explored Clone() and ICloneable interface. It is hard to use this interface correctly. In may be impossible to use correctly, due to a weakness in its contract. Instead using custom methods is perhaps clearer."]

%iVBORw0KG;)NSUhEUg?AMg?ACpCAM?ABZLoJT?ABgFBMVEUA4v9A:/y8vL09PTz8/MD4v::9msvRzuPL19fUTkf1p/PwPkP7a8/MGjf53+/vU6/7k8/NgsPXr8vNarvU2oPpRqvYWkv0lmftMqfYQkf0flvtrtfMJjv4jmPshl/sMj/5Fpvf29vYclfyI+vo9ovgalPy39vZF/v9d/f1ZxvVT/v6Z+PjH9fWn9/cW7P/5+flM/v739/cJ5v9KyvcCi:R9PRns/Munfrh8f8o1vud0v9wtvKq2P7G5P75/P9Zs/9qu:x9PWKyf7w8vIe8P9IpvcBiv/6+voynfkQkP4o9P9VrPUY2vwAiv/7+/sL3/7y+f97wv86ofhBpPgpmvv9/f203P0P6P8emP97vvf+:8y+f9Eqf8hmf850fn8/v+Uzf1kwfRxvPK84P/p9P93ufIvoP9Nrf74+Pj8/Pw9pv87/f9itv11vv0Skv8qnf87yPhjuvSCwfdnuf9rvvMEi/4WlP9Rr/8szvv+/v6v7PUlm:m7fP09fX4+fr1zUfZ?AJjElEQVR4Xu3dBXvjuhIGYIeZy8zMzMy0zMx7mOniX78aK502nXgrT7TRyd58v2DeR5bz9allW0HdWX+XXnuwvH17c+PZh+fx54vBa/KPImEMoAOyvpheWxWj:rnsw+POs4Kst+XpqMrpSyQW4vpt2L077/785sP3a1nJPuQWZkf1mB0Tj4LZB1Gf2WP/mNf8sw5F4Tf7SSTTW+dAfeLhVA0Qhafnyklr7AFIq12mlYdR/+6WC5ZdEPe/ajOAIU0dHR0xONHTU1N0eWio99wiLAgRS/kVq2aAxmAEIRotB7S19f3ymn0A8yEyAHEtiBFJ+TWMzcOey3iTVFb0N3d3Nze3t7Wtk1Hn8jnq8IAh1C0QNY/Kjvyq3EUFYhuIWhruGdnYWHhl/86jT5VEGkBCko0QZ5suHHAakTFUjS3t9mAw8NakTsij7uuTt5lJ3IlXYABCiwKlfAhm2dKOXfARdXXLBTCIAC9d0U6Ozv39vYebxUb3QfxY3w+s?FFoVK+JDbbhywHJIhEMLQudfY2FhXV3cCqXmcuzK69zy5zNxo/9jYSE8qNjg80LOFlPONUjpk25UDdkd3ewMwACEANTVZSCgUmp9v+eXfF6MnYPSR/OiewqS27FWhEj5ked+VoykKy7EgGKCoEfO3tLSsrITD4ffv3/z2emhITE5Hp4nlfERSEmR1VtUxe+4QywEMoZj/+eehoZmZFy+Wlk5PbwYsyPRTj1JiGX8kInYKkfAgb5PuHPXCsXDY2ykYP928aRVLQFEyCJIuIuFB1lqVb7xyf4CjtrezriY7gwCuZDjh9xEJD5KOu3aI7XF3r64mBA5HybGiZM5rSyaIxCVk8Q9XjjisBzhOsvNDAetTUZRMjnrzWx5/GjmQxUduHK2XHC1DZHvwJAP9LiSWY3FnO14TB8mussQvJdf/yFuM4s53YMY9ahlTllic4k4d9ej47RQA2iQjQhJRkVilFvdkEhzdbXnHG3AoSb5Vk/TsEIky5OWGK0cHOO7V9qJDLQ85EklRhWyqObBggeOwd68u2xJestQzrShJ5VQkFru4MxxMSSzn95HidT1k27WjXThEL3HlcFkhvdfWFavU4l7fJxx3hGM+/EIBwKyQiWslFqO48x38CnmtxCqtuKMjFJ5hODRWSIsUd/eOu40Mh+4KaZVU3IVjQTqGGAStFdIqrbjnHSvXFPcyVEiLW9zxD5DGk9DKa+JgSvgV0mIXd3RkV64pvGWpkFaJxb0RCi9xcCX8ComQW9/wijtxMIMAboW0uMW9mRR3HRB+hbT0F3f9EFohqcRyW9yTWHiZDj4EK+SFpACiu7jrh9AKSSUA2WY5OtkOPgQrJJVYJRZ3IxDP5JxfSuQ2kZAyFnc+hFZIee+6WBLrAa+4g2PGMgDB4uXHv08khFfc8Q8QQx.+IRk4gAhzOIODjMQzBhsE7kkAOEXd9MQz8jlJVGCkKKIDqMQT49cErupWC5uWNF6UtzNQjywJLDd1SH4Q0j+c2AccqAM2d+XGx1uWFBMsLibh8B2R4jigsiNDj8g+J8D8xC:FFUheCFBRu@kQcBiG4SZQh8ai8sE5CLegwD/HiJlGBiK1uL0gDXFhZ4jAK8bmCwFaXCyIuLFLczUJwt1uKV5a9Q8SCgKOCIWKrN9s75C+roiHyyoJbllXREPue1WZv9YqHiHvW4R1x7610iL1FRHtv+RIgtRUPgZuWvdfrsiuVDhH9xP4VCVc+BG5aJ6G/FaQKEc33fSVDZv92kCoEqlbD/yOkCqlCqpAqpAqpQqqQKqQKqUKqkCqkCqlCqpDAFwIJPP1CIMeeSoe;/Ih6Kh8yK7ny4CMe8xCzDvMQ6ij8iEPv9UG+WgSQh38p4NebpiDTFMH/3mt4JNNDsS8AyE3JASOj5iBBIijpGcagyKv9pkQ/UWR/5RpELL8O+N/iOYdFBJ80MqAmHTQB5iDMm87OP9n118U+c/G4wnwHxhPPhh2/AcXBCEi6UcMiElHauvS4aSC09P/+gSk/Z7Gp4N2dThiO/bZJOE4h2DefWA8r2XMkfPhglxA8ORxOR4FHNfhGMzgESsCAcnH4pAjgPQSiEnHlUNveQhmfcPpKVPZUTQUXh2O4UThMUQKCb7cdHiAWT5Rbri448FQ75WDoQRCKqTmJ7Gn9TsQQrK97/Bs/B14Nt68Y8B+Qwo9Bk6zPFvktAJcW+JAaEmSgBZHP759Bx0SQrOaLDwIY58fkccVsj+ZLorU4QAhFdI+K3Ykz+411szPmHWMUYczBCskbhK5JPJs0kzAjAPfjEIdCKFJdyOk8BgivFCSJTnW5piSDjUIVEh6MBRfjWmquO/YjgnioBBaIeXJ0GTBu2le3zRT3KnjExBaIQteH8t7y86uFkdOOg6IAyAKL77fx4vLPpYvJacGijsULOJQgGCFBMhVyZvTMhfeWIY4lCHBl79eWhKU1ErJUrmLOylY6pDgk9vFJXDvCi+VtbhjUcRiog7BCgkSvLqaUfKifMWdvptGHYIVkkgaUFL24o4ORQitkCg5iuYlddn58Iyp4s6AyApJJb17Dm+rCUxPPxwf3909Pn76FBmaHRwIVkiUxEEiX8QaCg8FroxOZ9df3LmQYPoPfPGOlLTVNn73/far1Qdr6X96+OEXd/5Xk+LPa59tbN7eXhazv1sX3wy6cTDx1VRXxOcdnTTgYEBI8l9xEl8OEt+oAcncMAPA+QPkPnEQCFNyICWJzyfp8ZLCqw9CJZnBz+WgxV0XhEqmQBL7LI6UsgMhfMkESPy5FAvAL+4UokUSAYkZB0LYEsglyU6PZsdghjgYEI5kRLuDFHftECrpivi9OiXDCfKiTwaEKxnjA+grJSPEwYDwJD5v/4AmxyhxaIdQSkHx0iIZoA4uhC+hFZL3MkniYEBMV0jq4EP4xcufKK14TQ6PwTfFiIMJ4ReviN9thZwcjKVSPSNj/f2jicyOTzCmiIMH4UvkRsnEFEbvwdG9MvKrjpcY4GBANEoipHgNDJ+PPjqXyHjP44f4IE?RNeUzSAOPoQvAcpWqmD0nPPoeQBkChDAIJ8+ZUP4dQUpkQh+CtRxdBhe5uJbtPzv6uqV2ItiU8CCcRwdARNgEAoI70vHeiX5RZnAr87C4A6j4/QogLC/Pa1dYlPA4jA5GR0JkPuEwYfwJUgBC4SMXnR4FCACHSYguCiCAhaHfE1mJwJkGIGgBC0QGFxldKowCgmqfgufa+BD+BQMY3qjEAx7dPMQGu7o/PwPtAiP6Gd+hv)?SUVORK5CYII=$/9j/2wCE?gGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRARDA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycB.gI.oJCw@Cw4LDQsOEQ4ODg4REw0NDg0NExgRDw8PDxEYFhcUFBQXFhoaGBgaGiEhICEhJycnJycnJycnJ:BABEIAL?yAMAIgABEQECEQH/xABq?E?gMBAQE)))?QMCBAUGBwgQ?EDAgMDBwUK.@)?ABAgMEEQUSIRMiMQYUMkFRYZEHI1JxoRUzYoGCkrHB0dIkNUJTcqOksvEWFyWiw9Ph4/A0Q1Rjg4SzwuL/2gAMAw?AQAC?A/APv4)ABTKu8XGu9d5fWDJnEEoQSgMzNDJDFDJAYKZ?GI)IAJBBi92WwCJczBgj1MgTYkBAC)))Aaxe9d1SgGbCSUMSUBkWIZNK0UsbwBgpk?Yg?EEEqVve1vScndrYAyuVSu3kG1j9NPFCl70zrqDONq34dRe1xmims15nnBllNlvAkxb0UMgVK)?AQRcEki5grivad4Jy3LJOiVFU0i3bqYI53aoLWsNgkou7tUZndqgZTYuWt6KGjnd2qbiO0QGD0sWEFecjOClXWLQV5tCMxNjFXoZqaNa7zjW9iGzmXtPP19RJzuTK9bItrIq9SBUshs0TdrKqJplaq/Ub9zPMcXby/nHeKkpPL6bvFSDorTL2odzMZNdqhw0qJfTd4qbVBJJLVxMzu434r1JcFb6dWtVyqmiKvgeiQkh.c0)?xUwuZGjiEjo4N1Va5zkTjZe36gWRtzORvapsZjVzmgySb8475ynOifU/npPnL9oN6Ol6W8mljvOXfLGmhQMkzOzuc7TtVTqNaShVKiMXLe9iDlY1ygwTk+2F2M1fNec59j5uSTNs8ub3prrdJOJ17HzXysw7aDCtP8AiP7IKa7nLbQ6j/KfyDjXfxj9lqv7ofzu+T+/44/Zar+5Pz9iFPvLoch8WvAxVStVVeJ+yXS68Rndbh7fsuc+Sbzi69n0G0jzRrqqSFGbO29e6ql+FuHiQyNHqt76G6l7Jr1IYuXKialSVDLJxKp6uNmXRev/AFxFJUulmjar7qt9PkqJYkaxVRLWtqbGY8zI/PI9/pOX6TqVOIxRU0stnbjHO6uz1nlvdul9CTwb946ciKlkU6GDU73pLI1qu1Runip0wc33apfQk8G/eHu3S+hJ4N+8VnX5tN6CnTOlgjfwpz+pjF9qoea926X0JPBv3j0vJipjqoZ542u6SM3kTszdq+kDWrIpI6d7nNVE0TxPQoSYoZA4I)ABgpzMUX3pnrOopx8Rdmqkb6LU9oNimS8idyKpVE0ogh4aG3CTTsSyA289kd8Rs00W7w6zayiNu6hYSaL36qa1Qnmn/AKK/QfO+X7M9Dh3/AHH0sPo0/vb/AFL9B5fFIKCsiZFX0vOGw5tn5xzLZregvcFJYxz2ZWprmRT8/YmxMynCe3ePuNbgfJS67TBv2qf7xy34DyLv+IP2yo+8YOLW0FUvCO/ym/ae3rMcpaWukpZkfmZl3rJl6KO7b9Z3kdofNq2qfXVclW9qNdIqbvUmiNt4IXy4lX1F9tUSOT0cyo35rbIaNVTumyIioiNv7bHRbhWjFauVyom0ut97u9p9AdM29syX7LmrUybTLkXt+o8G1VultF6lQ246+tjVMk7+5HLmTwddCyjpI4JGyq5znNva1rcLFkmDPezK2Vuva231qd7FpFZh8utlflanzkVfYeXO/hU8+J1TYaxGyxR3l3mt10ya6W/KOnW0NFPQ1XN6eNkkaO3msa3eYmbTQ6Er0e66dhdRKlA3m0iZnOfmc5q7qZt1OPqPGnd5MM/CZpvQYjPnL/8AJqYNCyXEoGSsR7N/dcl0Xcd1HtaKmo4nPijgYxzkR26xESycCIukW4tVpHE+Gy3e1PVx/wAC2KQ3I3ocyS0UzmdX2pc6t42W3U3ltwQvkTgeYV1y5rixDXWzVQuYuhrr2lZmADE?AGKopzZ8OqJZ3y5mWcvat7Iluw6gBnHI5iqreyxz46Gb0m+K/YTFRTM62+K/Yb4Bksz9eBgjVt1E5V7jIE3KiiSF72ObdOCpqcmowWqmvlfH4u+6d0EFkcr4+jb4z5ri1G+kqH00qtzst0b21RHdnecOVmp6nlOv9LVHyP/ABtPMzdZCnqaRFdDG9eLmtVfjQ1iUMHO1Mc+pGU2tENlpcxprxG/CwlEGex3uTVPuzzd6M8P4odejdRTJNzVc2Zyum6Wrnde929x4zFZZ6LBaqeklfBUyLFBDNE5WvbmdtHK1zfgRqnxnOwWTlDTYxhrMUxOpqaWtYmaGWolkZkqEdC3O2RbXau93EnArp0Soei3W+XVF4ev/SHpsLpVgxhkf5t0jf6rj10Dt50VurN4/wADx2LRVVNg2JS0kslPUtijSOaJyskavOIc2VzFul23Q8ej+WMGGpjTMaqnQ84Wl2UlRLI7Pk2uscmZmWxLVsU4pPtJUb8FEv4qfUZkft35uOZf8Dsq/VvwlynB5OVMmKYbh2IztTbTNTbaJZXxyOic5LaJmVlz4RRVnLvFfdDmfKOuj9zaOXEZtrW1DUdFArczWbzt7f0TRC+WRFRmnUcxOs/SkirnT1GzH0UPlfkf5V4rylw/EabGZlqarDZIstS5EzOjnR+VrsvSVuyXVe05vlg5QYzT43gPJ/AsQnoaidrpJebTPhz7eRsMO02XFPNu8StyorUB9pJPkXkmxvGPd3GMAxzEJ66ohauXbzSTZX00myk2e11Tp/HY9ZyorcTwnE6eqgqH8znRPNX3Noz8n1O09pWSexB57CMUnxTEJHMe7m+rsnUjbpl+NQAeh))?AB4LlNT1L8WqHMie9rsnRRXf7tp5efM1Va5F776KfRMTvz2X5P7qGm9jHtVr2o79JLobHN7tRyO4oinTgxzYsbG+FHIxEbdHWXd04WU+dPU8HF5RVv+Lf1/8AlH3GfB8PmT/Z2/J3f3bH5ZpWaoUPareJlNjKzZebZo7Xzo5Gre/C3HvPpNJy5WRU/o/9d/lns+TmKri6S+Y2Oyy/lZ+lm+C30T5Jh0S3Q+rcgaSaZlXs25suy60T0+0xuZQV0znoksm7re6N7Du4zDtKekpvhPmd7GN/9i+XC8RYtK6stmgY2Kn6F2tiXRvm+zN1noaWKpiRG2ez1XRDpwNdbiviSa1S3M9z8yaqc7EqXnFBV6e/MY79ZG88pUcn05klX/zFiyW4bqOvc+ioxb5rqWx5sq6rx7Qa0q5lzKt7IiHPwqKHmNFzduSJsceRnZp/E/PKcnXYmzE8kmz9z6OSuy5c2fZvjY5nd07314H6Yyiy9qmS62Kj5d5Ekov5N1jYI8lW2sdzt1+nuN2Tu5ES6HzrlxPjPKDyty03J9iTYlRSRQ4cy8ej6SPbv9/XZ7r2vXe06j9LmRC8LA/OXI+sxnAfKdDHyk8xidVUOjxH3uzpK1udvvHm950jXbuh9p5etj/kzU1D+lTvifH+k6RsX7r1PSggHj/J29lRhNRVfl7dYs36DGOt/XB7)))?HDxFn4XJ8n91DVyHUq4/Pv77fQhrbI3Wv3Gp3Ia0qcTU2R+SqJnA/YOzLVpWdqmhW1MUSs2irvX4IRTZ7vytvwvrY/MWGw8ND6/wCTiPcrv+j/AGh75KKP4XsJWBsStyqvWa0VVE96IxVVVvxSxuXfbVLfHctiNlqJ2FUaaGw02s1yLk5U7CcqAkki5AJ)))))?BrTM31KFjN1yalLmljXFMiGtkLiHNJOVjDXOWHKirbPwS/oiksiyXW3D6yTGROj8ZndO0KiXQ1qONyStVUVOPFO42XqioupkzgXIYNLDrohgSADM))))))EKYKWGNiUUwclynKY5S+xqtapjJKjLXS97laRXUtyGTWhquLCEe13Ata2wRDIAyMg)))))))ACLFKIXmGTvKZmudl07QRYzMdTIiNFRUuliVJABeQ)))?Af/2Q==%iVBORw0KG;)NSUhEUg?AL4?ABfCAM?ABhso2I)GFBMVEX::dyd7q3uu9mMDIqcr98+T/57n/1oAnhUkT?AC2UlEQVR4XuzZwY7CMAwEUF9m/P9/vBIsGoImWCqhW2vjG53gPqpUgBtl5b2iY4l/yY+3+ZuvLo34m7/5vFdLvuof8zcf5I1JYs4n3Yq621j8bUMCa/jI56LnUytgchXn3QJjmBiXH/oYgs15NAssHzntJupKvmRzHi1JudEbDXM9n2lK/ElZvtcnFS7n0+pY8eH5IpNyQeFavnzEcGcZPocLaPii0L1kDucKAIyP+PLg5TXFswc8X80GP4dWXPjtwteWMCCJlHPk180g/Rq+f6Pdr1Be872LMi7jY7DI4Hh1njU/+WU+Cj68WAlP4qsnnoNDfAsUWUT8MT8qvoDIc/juWMVHwQeZImvPXZjvi9GCn5NCaz6iMZ8RXfkkIi7KjxmfuFVBvOzXluCOiM3/5DcPZ7kSU6f9ZGMPfsHDLM9pjrcKKj3939ZU4W4EWgCUVvfF8v+60vvchN7oU/rk+KQBYwwgZrn4MLME8qGiSd1FARbPeeq8buZ7QYgzp2zh+fD8ehp5nI8sZ5x1Xg8JvR9KvjRh9hzP937WZwpz9IBfumK/Or4nkqHCjA8O/FVPVwBS41YqN3xR7uup5WP4yByBRKHv9exr8+spXc9iaz5S/L76RNOd0/fOhfToeekb73x01ZuHdm0vP6NrCd+yeDH8T3vmkoQwDMNQJNn3vzLDynzS2AviwTO8A/BEq6aJS5hJMgN/zOgkHpB+IXDoGfjp6HUj8QxXAugdnIpdN0b4/R+g6RM7V6G60bHCX9Nrzan8daMDaX5KrfnrRgfS/JRa89eNDuT5TRuOxFfRiB2rFaBh/akbiSti/XEFPfVh1Yg9cSkaL3/dSOxh9LCv/XUjMuJOtrWnbnRkeHSnqz11I4G8PaYM+2r4orEev7v8KhqREz/WH/8ff3h5hj+6wxfO4a+t2ZuG4Vu22Rvm4ceV2YfF4Uf12YOS2WOq2UPC4SPa+QPy+Z8n7hYqbYt8zHSC)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AK)AxCAM?ABqK1L5)MFBMVEX:/+zzvd8rvO/1fj1+P4xiu5tpfFbnfDg6/xIk++ZvvWLtvSmxvbV5Pvr8v3K3PnaFXRJ)1ElEQVR4Xu3W7QbEMBBG4Xcm3/3a+7/bVZRlqEI5Vs7vhIcwE+3lQbrP4/kHN2LNfbW06zcAMDTWlFnA2LDMAsbGBwaMJTqwJDqw7HRgpQNLogOdDiwHHZjowEXqflXj7r56H2hmW43AevttMIVeA+qsRyILqE4HKrxyhwG3sO1gQPt34AQ6HJgHfMxsBQ081uBrGKC7txJbAcDbjA7scOAQHGhw4DjgQBMbWMUGtswG1iw0cMsiA5dDwgLbkrJEA/rZYpb2gGMAdRMZOIETOIETOIFfGWpGTAdlDEM)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AMg?ACECAM?ADiHJS7)YFBMVEX::/8/6c4/6/7P9/sMr/6v103P:+f7/+fL/9ejx6+T:fr/7NNoZWP:vz:Pe3tLXSzs4yKCCppqbs3svo5uR6eXmRjYwKBwVMSEOFeITn07nCwMHe2tjy8/T:P9DeQH0?AH80lEQVR4XtTZ2bLiIBRG4VzuzZjJWU+:1s2BHSHIegpuwWXVd5/9UsZtGsglY0vaa3tG3epR11zbSJ0UoxRzTPIAeu0LbI0ruCkyFBczVDyingNfESWaJi2EHxVpChYSNIogxx5S7RKIw4eljqEKFDqSYoM7SKGoCLLWlKZkRJih4gKKTUlZUbqAFUc10gIUt2ho8DkHbx7kpFUgqSMggOeL0yTVGUQIIUIIRQBnk2iajp0yWEh3WsQXglSZtAgBOHgIq4KII054B6GECUyoYcAHfcqji0EDUIQkQ2bgGQUFIYQvgFRDgKf/mxtDwJlCIh83EP8JNUdAK9D0NQSJGGkEJGDoCsPadGRQshBFO0g7pBUgBQcZQiuagwCv4Fg2B2Cn4WoHAReg+gGIdz2zFFaxDJ9a4iuAPmRx1yS3RlsZ5uXHGS2CecAJkfT6XSSuwUyTVPfX683/mkIOcLkorCOPIT5ReRxtD0gh7vkkxBuOm7lHLjbgMzoGu+QUwi5NgNBLEOEgxxjyMFC+kqQw3CjhnMCYcIVQARBDhcTLBDGdsNUC3KOvkPOEYRhABFryGgdq292RIChFmQIHTBEEMxCTB5yiSBs6q/9V0AuFuLagPRfArl8KwRXED4byCWFqG+DdGYRUwzBbgWZmoDgE4gSGQiqr4L4OKlvJgTgXfdlkHLtQ5DOczGFCLp9CD6F6NYhXsJfGKRlCElAlRiAdhALmRqGoHg0x48oLjSBgexqQc4RJH36dZEjhBw8wzv4UAty3Af3kX16HylB3H1kXrLq3XW5WzV5Q6TmR36FkTqZpNzvD01BRoLkKQJNb0P++N6H7Dcge3QxIgQahi4ZQKSBnBfI8KKDehPyI8fcHpIBgm1DwtDHZA7SD/x1B/UPfvmFYmhfmeCR1uW/c8sO6r9CiLNog?x41eOv7zbUW+lIBCGYe9MalDG.gN4P:l/s5zLE21rqy274XJSRc8ESpp41n/bJGCFJIWyA0vqq1XtUO2WswNL7atH5b6zsPzyHTXtNLmetd7RCtxbFDGhi/BJmaHe0QrQVylBwBB9d07UANjp+AnCSH4VAVKKTdsf51:pCjQgug+J/nY++/xnI49ShtTp6dCaJ+Lcgw/0FKZYX9O692YoxmqwMBAUjAoRRWQkDratjzXadYw0AYs@gJHOdNHLQst7Spym6c3ahIgAEOHQ5kCWjwzJVIYWEOvoV8bA60pBM9h80ADhIM3UoaBhootylbCsCX6a8usz7LDXel/p5dgZM6oOjbBbJyNKzoTFbRBDUPAGKcAtxAJxBk6GuEMEJ3GFlBk7DyyQDeVjmAEpKUbryAtEmzBcXI4biLdElGpLhfSHAKkjmosJvApkBQRD3TB3jrlDgFAX4EMyunprZSgwFYiHaCoCmXKMNBTKstcDRm6yR18X2RzHU75J4LiABC8QSbcrkGggUsjiw5xeEKIiJg6xhBDcBsFIIFCeBkDMwlYYCD8UUjXDvWMPx4OUIVlA+gsIQzJ/CUE7BHGnEEQK9GTqvSWQQcvyR9740acr8+Q7Yt6bpAyFhHAFIR/QGaI7V0jCKquQqL/BXKiZEc1YA4NTCA3j564h3Td5s0HWPRu+gZT5EgKNQogx56xnpGbDTJQgKYAsAbO8RCcQT+PbwifIMwcydxBsbbZ1NDntkIz5zB3KRs6IQCykxgZUBDWbLI6ItVgHWR5Hp+9hMK7KYjwny0eIHpYT4xYSkzjOkPNzhHr/gpA+Rb54jsiJ/3REeCNQnWND2YNh0gCT/juHx1NDxdwzNBNjOjh6hVyHNbeft5y7+dZFyW6E40HdXTFG+wSC7iDXCE2fGKetNjiaIWdJ1yIRzSG1do2OM6T/MQgk190s+dOdHe06CgIBGB6glisT0BzZEtt5/7dcRilQqTl12ybD/hde+8UhS?4CtElRAh6xN6BHHlNQh1UZIgrHHpaIJGgRWof8q7kqRcOOggyDM5QI0UOgkTCZyHwDPEMkswARyDUnzJyVH0FQlUOeh5Q5H1kCxm+Bakpu2I43LXffpLBJkcFyRWQNyjwyfCejhHg+xD4OARKxD5EvAWpKfD5kCoQ+70PyZQvOTAxDkMYVDlahvz4y2YrudgXJMgO4vp+Kxm6hxqB9CUktg8RfCFTkLg5/WxNGZJrAzL1I94XegB4glTtQ4ARZI6OjhoJUtcKRCSI2YFwnyzwCaLk+XkqSTRjiPPTClG1oJbwhtgFIs/7bSHIEeIi5PxPEGAE8VaLBJGnaZrUmgy1BcmjpTozDOU+ohqCOKtFhMguQnKyhpQOjhDZNmR0zmidIf5XCCJPCEnoUpdWtjR+2IN0DUCcn/pehk4DVUMqB0OIIYmfpgJyeRkCjLrNiyRCLuSwIvQKBFiFuB5HCKK6pf8KIn6HAHeIeA0CzMIoUQ+Qq/NrJ4L4kLsuEOQPUStELBLntxDvhODryBCtgkQJkpDG1xAvuA5WhmCGRAoZjA1JglizhQDDEiSUVjk5ysVuHiHAFYIRcrtL6JhSnEeEDZDkAOAOyZ1OJ0nDdn4CAWAtiQK5dk5lCG8GFSH7EiGsc05zdwBStwSpKGqFIAWtSTJFKtEWBMvr0HEcryKnrwsEqGYkuoZofQ2yFiCAmUKVkECLEGghfKQYQxB9DzOEf5haIMZmBqIdjYFmwtxMkp+UNSFoqQSZiVI2zwANUuxcZaHFbpXE3oBzfwHd+WzIr2HB1g)BJRU5Er@ggg==!A%iVBORw0KG;)NSUhEUg?AMk?ABhCAM?ABLV3W0)YFBMVEX+:/q:3j:zc:zy:7ojyrh7P3UiTj5:4d9+/3lB3ZNKX1nzP3Hbf1NL5Fvrnk8P7s7u3uwn3uftVy+vXx9PTr9f7d6v7m9ebp6em4f0hoaWm0/fnpyOvp5caVWYCLfXim?ACzUlEQVR4Xu3c2Y7iMBCG0S4vWdj3pbd5/7ccyK+O0zFIccUam0x9l0gldHDTEKnCW/ZJ1fCynEdVeNnM+w4zPFgymXd1GKGYHOZdPw4KCRaUct6DgKGGBgwoied/S4wBQw8NGFASz3uQy24xC2mxuxDhhM0dUuxXy5BW++LXvD7UYR10nwLINxxBlm8ig4i+4AiyfHXmP+vwPkHpHgnRBZBASnMqOBF?ilFO69rTpoIh9I5kt2M0w4SItovOe3b+QNLcsChdCVqwZIsVEMhUiuWZNXO17xUT0KkZrwUIbXkhfkxEoIEkDESUBRX0s6PkIACCSndAqwty9LagRINidIOMG8aKGnnmRKtnknK959Ky5HM/7TxJeuPpnESKJBlS9CcIQEExTgTVPIliCGBI6IEDZIoTxJyKO2854gqsf9e8hFNgn9aliUBBZ7EZ4L4EhdHguJJLP994pqPkqzXsSWWIwEELRmS9bquo0tmLImDzBkSaBL/dfmQfCSWI3GQlJIep2RIHCSxpERciYPcSyp5j/kZH10iknI2AQkgLy1x73Y7e1UJLyfh5SSMJioRiUhEIhKRiEQkIhGJSEQiEhopobwlIhHJdHYkprG3MqFdolj7XTRyv4si7HdNZ+ducnuQ6XdTTYTd1PT7wgbjwfPaPX8eO9yAgALL0NzzJ96rh8Owx918+nsdvFcCBb8OSe8/8R38VzKHe4LMcXt1bY/mR7M5d9u0AKW7qUaS9j4tZK69tgbAc6/CAK77GUASBvHVa9tIzl5FI9F+kKSmHB9IjjfIyYcUpxuEtB9BkpiyfSC5H0rxQLK5SZT2U1lIHkAaiQ+BRD8qA0kVSVK9lmQjEpGIR.ieZnPE/mMl+9dk/gujJ5enxSe5On1CSD5UQCpTPHkmlH1HMq8ZVLVu45vFwROXUtxah+nrkVRle2vu3AezxDDePy/TZKkv3nHL1n0R/wt)AElFTkSuQmCC!