public override MemoryStream Draw(MemoryStream stream)
        {
            var c = "0000004D74455874436F707972696768740047656E657261746564207769746820426172636F64652042616B65727920666F72202E4E455420687474703A2F2F7777772E626172636F646562616B6572792E636F6DFB518FC3";

            // We can only have one stream at a time.
            this.Dispose();

            byte[] buffer = new byte[8];
            this.stream = new MemoryStream((int)stream.Length + c.Length / 2);

            stream.Seek(0, SeekOrigin.Begin);
            stream.Read(buffer, 0, 8);
            if (BCGDraw.ByteArrayCompare(buffer, new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 }))
            {
                stream.Seek(0, SeekOrigin.Begin);
                BCGDraw.CopyToStream(stream, this.stream, 33);
                var i = 0;
                while (i < c.Length)
                {
                    buffer[0] = (byte)Convert.ToInt32(c.Substring(i, 2), 16);
                    this.stream.Write(buffer, 0, 1);
                    i += 2;
                }

                BCGDraw.CopyToStream(stream, this.stream);
            }
            else
            {
                stream.Seek(0, SeekOrigin.Begin);
                BCGDraw.CopyToStream(stream, this.stream);
            }

            return(this.stream);
        }
        public override MemoryStream Draw(MemoryStream stream)
        {
            var c = "FFFE004547656E657261746564207769746820426172636F64652042616B65727920666F72202E4E455420687474703A2F2F7777772E626172636F646562616B6572792E636F6D";

            // We can only have one stream at a time.
            this.Dispose();

            byte[] buffer = new byte[4];
            this.stream = new MemoryStream((int)stream.Length + c.Length / 2);

            stream.Seek(0, SeekOrigin.Begin);
            stream.Read(buffer, 0, 4);
            if (BCGDraw.ByteArrayCompare(buffer, new byte[] { 0xff, 0xd8, 0xff, 0xe0 }))
            {
                stream.Read(buffer, 0, 2);
                int offset = 4 + (buffer[0] << 8 | buffer[1]);
                stream.Seek(0, SeekOrigin.Begin);
                BCGDraw.CopyToStream(stream, this.stream, offset);

                var i = 0;
                while (i < c.Length)
                {
                    buffer[0] = (byte)Convert.ToInt32(c.Substring(i, 2), 16);
                    this.stream.Write(buffer, 0, 1);
                    i += 2;
                }

                BCGDraw.CopyToStream(stream, this.stream);
            }
            else
            {
                stream.Seek(0, SeekOrigin.Begin);
                BCGDraw.CopyToStream(stream, this.stream);
            }

            return(this.stream);
        }