#----------------------------------------------------------------------
# This file was generated by C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx\tools\img2py.py
#
from wx import ImageFromStream, BitmapFromImage, EmptyIcon
import cStringIO, zlib


def getData():
    return zlib.decompress(
'x\xda\x01d\x06\x9b\xf9\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\
\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\
\x08d\x88\x00\x00\x06\x1bIDATX\x85\xe5\x97kl\x93\xd7\x19\xc7\x7f\xe7\xbd\xf8\
\x96\xc4vnNB.M(\xb1\r\x94\xc2(J\xc8F\xa9&Z\xb1\xa6\xd0\x0f\x05\x8a`Z\x99\x8a\
\xa6\xa9\xd2\xbeL\xfb\xb0I\x93\x96i\x9a4i\x9a4M\x1a\x03\xa1J\x8b\x98\x986\
\xc1\xc8\x9ai[\xfb%\x9d\xda\x02+YQK\xb2e\x8b\x93%C$\xe0\\\xb0\x9d\xf8\x12\
\xbf\xd7} \xb6\x1cc\x93\x80\xf6m\x8f\xf4\xe8\xbc\xe7\xf8\xd5y~\xef\xff<\xcf9\
\xc7\xf0\xffn\xa2x\xe0\xcc\x993\xaf)\x8a\xd2/IR\x95$IH\x92\x84eYX\x96\x85a\
\x18\x98\xa6Y\xb2]oL\x08\xb1\xaci\xdaW\xfb\xfb\xfb\xaf<\x92\xe8\xec\xd9\xb31\
\xd34m\xcb\xb2l\xcb\xb2lM\xd3\xf2\xcf\xa6i\xaeq\xc30\xf2\xae\xeb\xfa\x1a\xd7\
4-\xef\xd9l\xd6\xcef\xb3\xf6\xe9\xd3\xa7c\xc5\xf1\x94\xe2\x01\xd34\xfdB\x08\
\xa6\xa6\xa6\x10B`\x9a&\x15\x15\x15h\x9a\x86\x10\x0f\x04+n\xf3r\x8a\x87\x04\
\x05\xc0\xb6m\x02\x81\x00\xba\xae\xfb\xd7\x05\xb0m;?Y\xce\x0b\xfbO\x02Pn\xbc\
$\x80eY%\x03\n!\x98\x98\x98\xc04\xcd\x92\x13\x96\x1a\x93e\x99`0X6\xf8\xba\
\x00\x85\xc1\x85\x10tvv\x96T\xa2\x1c@\xb1\xe5\xd4]\x17\xa0\xd42\x08!\x88D"\
\x98\xa6Y2`9\x05B\xa1\xd0\xe3\x01\x14\x06(\xce\x83`0X6\x0f\xfeg\n\x94\x02\
\xc8\xf5\x9fD\x81p8\xfc\xe4\x007o\xded\xd7\xae]\xf9~(\x14z\xe4\x97\xaf\xa7\
\xc2c\x01\x00tuu\xe5\xeb_\x08\xc1\xf8\xf8x\xfe\xf7dr\x99\xe8\xfc=\x96\x97\
\x970\x0c\x03I\x92\xa9\xac\xa8\xa4\xba\xba\x86\xba\xdaz$IBQ\x14\xb6n\xdd\xfa\
\xf8\x00\xb6m#\x84x\xa8$C\xa1\x10\xe9t\x8ak\x7f\xbd\x8a\xd3\xe9\xe4K\x07_\
\xa6\xbe>\x80Cu`\x98\x06\xf1D\x8c\xd1\xbf\x8f0:2\xc2\xfe}/\xd0\xda\xda\xb6f\
\xee\xdc|\x1bV\xa0\xd8n\x8d\xdcbt\xf43\x0e\x1d~\x95\xb6\xd6v\x06?\x1c\xe3\
\xca\xdb\x9f29\xbbDc\x8d\x87\x83{\x9a9\xf9R7\xcf>\xb3\x93\xdf\xfc\xf6\xd7\
\xb44\xb7\xb1\xff\xf9\x17\x1e\xa9\x80T\x0e\xa0\xb8\n\x84\x10\xdc\x99\xb9Mo\
\xef+x}\xf5\x1c\xe9\xfb\x13\xff\xba\xa7\xf3\x8d\xd7\xbb\xf8\xe5w{\xf9\xf6\
\x1b_ k;8\xf6\xfdw\x99\x8e\xa69y\xe2\xcbLMO\x92J\xa7\xf2\xb9QJ\x81\r\x01\x00\
\xcc\xce\xce\xe0v\xbbhmm\xe7\xcd\x9f\x0cq\xe2@\x88\xaf\xbc\x18dsC%^\xb7B\xc0\
\xabr`w3\xa7z\xb7\xf1\x9d\xb7?f)c\xb1o\xdf\xf3|\xf2\xc90B\x08l\xdb\xde8@)\
\xa9"\x93\xe3<\xb7{\x0f\xbf\xff`\x8c\x9d\x9d\x9b\xe8\xde\xde\x82\xac(\xc8\
\xb2\x8c\xaa(8T\x15\x97\xd3I]\xb5\x8f\x03{\x83\xfc\xf4\xf2\x08\xdb\xb6ngrj\
\x02\xc306\xbe\x04\xb9\x97s\x96Sa.\x1a\xc5S\xe1a\xf0\xfa,;\x83\x01\x0c\xd3B7\
,4\xc3\xc4\xb0,\xc0F\x126+\xbaAK}\x15\xb7\xa6\xee\x93\xcad\xa9\xf6\xfb\x99_\
\x98/\xbb\x04\xebnD9\xcbjY4-\xcb\x9d\x85eL-\xcbr2\x8d\xa6J(\x92\x00\x1e\xc8\
\xfb\x9f{1\x16\x17\x93\xe8\x96\xc0\xad\nn\xdf]\xc4\xe9r\xa3kZY\x80\xb29\x00p\
\xe3\xc6\r$\xe9\xc1+\xaa\xea@7t\x02~\x0fK\x1a\xc8\xaa\x03Eu\xe0p9q\xb9\xdc\
\x98B\xc1_]M\xc7S\xcd\xb4lj$k\x80m\xe9,%\x128\x1c\x8e\x87\x02\x97U\xc00\x8c\
\xfcZ\xf5\xf4\xf4\xa0\xad\xd2764\x92I\xaf\xf0\xc5\x1d~>\xbeu\x1b\xd9\xc8P\
\xe9\x92Q0\x11\xb6\x8e,l\x0c\x0b\xb2\xa6\xe0\xce\xa2Nm\xa5J\xad\xcf\xc9\xfc\
\xfc<\r\r\x8de\x01\x1eY\x05\x85\x1bQ8\xbc\x8d\x91\xd1\x11N\xbc\xf4\x0c\x8b\
\xf1\x15\x12Y\x99*_\r\x81\xc6&\xda\xdb;\x08\x05\x83l\xd9\xd2IM\xa0\x89kc\xf7\
\xf9\xe6kA\xa6\xa7\xa7I$\x12\xcc\xcdE7\xae@\xb9\x8dhS\xd3&\xae_\xbf\xca\xc2|\
\x94\xf3\xdf\xda\xcf\x9b?~\x9f\xb1\xc9Y\x9em\xf7R[%\xa3\xeb\x16\xe3w\xd3\xdc\
\xf8\xe7}\xfa\xde\xd8M\xb8\xa3\x8eH$A\xd7\x9en\xce\x9d?\xc7\xe1C\xafnL\x81\
\xc2%(\xb6\xde\x97\x0f\xf1\xfe_\x86H\xc4\xe6\x18\xf8\xe1a\x0e\xedm\xe3o\x13\
\xcb\xfclp\x8aw\x86\x17\xe9h\xaa\xe5\xf2\x0f^a\xdbS~&\'#$b\xcbd2Y\x9e\xfb\
\xdc\x1e\x06\x07\x07P\x1d\n}}}kb>t|\x1d?~\xdc\xbep\xe1\x02\xb1X\x0c!\x04\x86\
a\xe0\xf1x0M\x93\xb1\xb11VV2L\xfc;BMM\r={{\x08\xd47\xa0:\x1c\x98\x86I,~\x9fO\
?\xbb\xc9\xd0\xd0\x10\xa1`\x98\x96\xe66\x0c\xc3 \x1a\x8d\xa2\xaa*\x13\x93\
\x11F\xff1\xfa\x07aI\'/]\xba\x94,\tp\xf4\xe8Q\xfb\xe2\xc5\x8b%\x01r\xa5)I\
\x12ssQ\xc6\'\xc6\x99\x9d\xb9C2\x95DUT|>?\xa1P\x98`g\x88s\xe7\x7fAUU\x15\x9d\
[B\xe8\x9a\xce\xc2\xc2\x02\x0e\x87\x83\xb9\x85(W\xaf~8b(\xf6\xc1\x81\x8b\x03\
w\x1f\xeb0\xca\xd9\x83kv\x03\x8d\x8dM\xf9\xbd"w\x82\xe6\xec\xeb_{\x8b\x0b\
\xbf\xea\xe7\xda\xf5\x8f\xd8\xdb\xf5y\xea\xea\xea\x88\xc7\xe3\x84\x83a\x02\r\
\xf5;\x06~w\xe5\xe7\xc0\x91\xe2\x1c\xf0\n!\x96l\xdb\xc6\xeb\xf5\xe2\xf5z\xf1\
\xf9|\xb8\xddn***\xf0x<8\x9d\xce\xfc\xbf%M\xd3H\xa7\xd3\xa4R)\x92\xc9$\x89D\
\x82D"A<\x1e\'\x9dNs\xf4\xc8\xebl\xeex\x9a?\xbf\xfbG,\xcb\xa4\xa5\xb5\x99\
\xb6\xcd\xcdtwwc\xc3\x8b\xb0\xb6\n\xaa\x80\xfa\x99\x99\x99\x1f\x9d:u\xea{B\
\x08w\xf1\x97\xe7.\xac\xb9\x83\xa5\xd4s\xa1\x1a9\x97\x15\x89\xcbW.s\xec\xd81\
\xda]m\x0c\x0f\x0fc\xdb\xf6G\x80\\\x98\x03N \x00\xd4\x02\xfe\xd5\xbe\\\xc4 \
\x17\xb8\xb4\xearA+\n\xdc\x06\xacU\xcf\xb4?\xdd\xde\xbec\xfb\xf6\x13N\x973l\
\x99\xe6\x07)c\xe5\xad\xf7\xdeyo\xba\xd4%\xce\t\xb8V\xdbr\x97<Q\x04P\x08\xb4\
F\xb4U\xd7\x80,\x90\x062\xabc\x00\xfc\x17\x99SG\x06\x87\xbc\x16\xfb\x00\x00\
\x00\x00IEND\xaeB`\x82\x8e\xd9\x1c{' )

def getBitmap():
    return BitmapFromImage(getImage())

def getImage():
    stream = cStringIO.StringIO(getData())
    return ImageFromStream(stream)

def getIcon():
    icon = EmptyIcon()
    icon.CopyFromBitmap(getBitmap())
    return icon

