[Mono-list] System.Drawing.Drawing2D
Stefan Maierhofer
sm@dhm.at
Fri, 24 Aug 2001 10:47:14 +0200
--------------Boundary-00=_QQDKBMRY6S9KNQXWM362
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Hi
I attached the implementation of System.Drawing.Drawing2D.Matrix and of all
the enums defined in System.Drawing.Drawing2D.
TODO:
two constructors depend on Rectangle and RectangleF (Mike ;-)
method VectorTransformPoints(...) is not yet defined in sdk 2 docs ...
regression tests
everything else should work as expected (hopefully)
I also coded all the enums in System.Drawing.Drawing2D:
enum System.Drawing.Drawing2D.CombineMode
enum System.Drawing.Drawing2D.CompositingMode
enum System.Drawing.Drawing2D.CompositingQuality
enum System.Drawing.Drawing2D.CoordinateSpace
enum System.Drawing.Drawing2D.DashCap
enum System.Drawing.Drawing2D.DashStyle
enum System.Drawing.Drawing2D.FillMode
enum System.Drawing.Drawing2D.FlushIntention
enum System.Drawing.Drawing2D.HatchStyle
enum System.Drawing.Drawing2D.InterpolationMode
enum System.Drawing.Drawing2D.LinearGradientMode
enum System.Drawing.Drawing2D.LineCap
enum System.Drawing.Drawing2D.LineJoin
enum System.Drawing.Drawing2D.MatrixOrder
enum System.Drawing.Drawing2D.PathPointType
enum System.Drawing.Drawing2D.PenAlignment
enum System.Drawing.Drawing2D.PenType
enum System.Drawing.Drawing2D.PixelOffsetMode
enum System.Drawing.Drawing2D.QualityMode
enum System.Drawing.Drawing2D.SmoothingMode
enum System.Drawing.Drawing2D.WarpMode
enum System.Drawing.Drawing2D.WrapMode
Stefan
On Friday 24 August 2001 00:28, you wrote:
> On 23 Aug 2001 12:22:54 +0200, Stefan Maierhofer wrote:
> > Since nobody seems to be working on it, I will implement the following:
> >
> > class System.Drawing.Drawing2D.Matrix
> > enum System.Drawing.Drawing2D.MatrixOrder
> >
> > If someone eventually works on it, or will work on it in the future (Mike
> > Kestner?) - let me know!
>
> Please do. I haven't even glanced at Drawing2D yet.
>
> I can stick to the System.Drawing namespace. Let me know if you end up
> depending on something in Drawing and want to crank it out. I'll stay
> clear of 2D.
>
> Mike
>
>
> _______________________________________________
> Mono-list maillist - Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
--------------Boundary-00=_QQDKBMRY6S9KNQXWM362
Content-Type: text/x-c++;
charset="iso-8859-1";
name="Matrix.cs"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Matrix.cs"
Ly8KLy8gU3lzdGVtLkRyYXdpbmcuRHJhd2luZzJELk1hdHJpeC5jcwovLwovLyBBdXRob3I6Ci8v
ICAgU3RlZmFuIE1haWVyaG9mZXIgPHNtQGNnLnR1d2llbi5hYy5hdD4KLy8KLy8gKEMpIFhpbWlh
biwgSW5jLiAgaHR0cDovL3d3dy54aW1pYW4uY29tCi8vCgp1c2luZyBTeXN0ZW07CnVzaW5nIFN5
c3RlbS5EcmF3aW5nOwoKbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdpbmcyRAp7CiAgICBw
dWJsaWMgc2VhbGVkIGNsYXNzIE1hdHJpeCA6IE1hcnNoYWxCeVJlZk9iamVjdCwgSURpc3Bvc2Fi
bGUKICAgIHsKICAgICAgICAvLyBpbml0aWFsaXplIHRvIGlkZW50aXR5CiAgICAgICAgcHJpdmF0
ZSBmbG9hdFtdIG0gPSB7MS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZn07CiAgICAg
ICAgCiAgICAgICAgLy8gY29uc3RydWN0b3JzCiAgICAgICAgcHVibGljIE1hdHJpeCgpIHsgfQog
ICAgICAgIAogICAgICAgIC8qIFRPRE86IGRlcGVuZHMgb24gU3lzdGVtLkRyYXdpbmcuRHJhd2lu
ZzJELlJlY3RhbmdsZQogICAgICAgIHB1YmxpYyBNYXRyaXgoUmVjdGFuZ2xlIHJlY3QgLCBQb2lu
dFtdIHBsZ3B0cykKICAgICAgICB7CiAgICAgICAgICAgIC8vIFRPRE8KICAgICAgICB9CiAgICAg
ICAgKi8KICAgICAgICAKICAgICAgICAvKiBUT0RPOiBkZXBlbmRzIG9uIFN5c3RlbS5EcmF3aW5n
LkRyYXdpbmcyRC5SZWN0YW5nbGVGCiAgICAgICAgcHVibGljIE1hdHJpeChSZWN0YW5nbGVGIHJl
Y3QgLCBQb2ludEZbXSBwYSkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFRPRE8KICAgICAgICB9
CiAgICAgICAgKi8KICAgICAgICBwdWJsaWMgTWF0cml4KGZsb2F0IG0xMSwgZmxvYXQgbTEyLCAK
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCAKICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IGR4LCBmbG9hdCBkeSkKICAgICAgICB7CiAgICAgICAgICAgIG1bMF0g
PSBtMTE7IG1bMV0gPSBtMTI7CiAgICAgICAgICAgIG1bMl0gPSBtMjE7IG1bM10gPSBtMjI7CiAg
ICAgICAgICAgIG1bNF0gPSBkeDsgbVs1XSA9IGR5OwogICAgICAgIH0KICAgICAgICAKICAgICAg
ICAvLyBwcm9wZXJ0aWVzCiAgICAgICAgcHVibGljIGZsb2F0W10gRWxlbWVudHMKICAgICAgICB7
CiAgICAgICAgICAgIGdldCB7IHJldHVybiBtOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAg
IHB1YmxpYyBib29sIElzSWRlbnRpdHkKICAgICAgICB7CiAgICAgICAgICAgIGdldCAKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgaWYgKCAobVswXSA9PSAxLjBmKSAmJiAobVsxXSA9PSAw
LjBmKSAmJgogICAgICAgICAgICAgICAgICAgICAobVsyXSA9PSAwLjBmKSAmJiAobVszXSA9PSAx
LjBmKSAmJgogICAgICAgICAgICAgICAgICAgICAobVs0XSA9PSAwLjBmKSAmJiAobVs1XSA9PSAw
LjBmKSApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICBl
bHNlIAogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgYm9vbCBJc0ludmVydGlibGUKICAgICAgICB7
CiAgICAgICAgICAgIGdldCAKICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgIC8vIG1hdHJp
eCBNIGlzIGludmVydGlibGUgaWYgZGV0KE0pICE9IDAKICAgICAgICAgICAgICAgIGZsb2F0IGRl
dCA9IG1bMF0gKiBtWzNdIC0gbVsyXSAqIG1bMV07CiAgICAgICAgICAgICAgICBpZiAoZGV0ICE9
IDAuMGYpIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIGZsb2F0IE9mZnNl
dFgKICAgICAgICB7CiAgICAgICAgICAgIGdldCB7IHJldHVybiBtWzRdOyB9CiAgICAgICAgfQog
ICAgICAgIAogICAgICAgIHB1YmxpYyBmbG9hdCBPZmZzZXRZCiAgICAgICAgewogICAgICAgICAg
ICBnZXQgeyByZXR1cm4gbVs1XTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBtZXRo
b2RzCiAgICAgICAgcHVibGljIE1hdHJpeCBDbG9uZSgpCiAgICAgICAgewogICAgICAgICAgICBy
ZXR1cm4gbmV3IE1hdHJpeChtWzBdLCBtWzFdLCBtWzJdLCBtWzNdLCBtWzRdLCBtWzVdKTsKICAg
ICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIHZvaWQgRGlzcG9zZSgpIHsgfQogICAgICAg
IAogICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKQogICAgICAg
IHsKICAgICAgICAgICAgaWYgKG9iaiBpcyBNYXRyaXgpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIGZsb2F0W10gYSA9ICgoTWF0cml4KW9iaikuRWxlbWVudHM7CiAgICAgICAgICAgICAg
ICBpZiAoIG1bMF0gPT0gYVswXSAmJiBtWzFdID09IGFbMV0gJiYKICAgICAgICAgICAgICAgICAg
ICAgbVsyXSA9PSBhWzJdICYmIG1bM10gPT0gYVszXSAmJgogICAgICAgICAgICAgICAgICAgICBt
WzRdID09IGFbNF0gJiYgbVs1XSA9PSBhWzVdICkgCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICBlbHNlIAogICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAK
ICAgICAgICB+TWF0cml4KCkge30KICAgICAgICAKICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgaW50
IEdldEhhc2hDb2RlKCkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgYSBiZXR0
ZXIgaGFzaCBmdW5jdGlvbiB0aGFuIGRldChNKQogICAgICAgICAgICByZXR1cm4gKGludCkobVsw
XSAqIG1bM10gLSBtWzJdICogbVsxXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHB1Ymxp
YyB2b2lkIEludmVydCgpCiAgICAgICAgewogICAgICAgICAgICBmbG9hdCBkZXQgPSBtWzBdICog
bVszXSAtIG1bMl0gKiBtWzFdOwogICAgICAgICAgICBpZiAoZGV0ICE9IDAuMGYpICAgIC8vIGlm
IGludmVydGlibGUKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXRbXSByID0gCiAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbVszXSAvIGRldCwgCiAgICAgICAg
ICAgICAgICAgICAgLW1bMV0gLyBkZXQsCiAgICAgICAgICAgICAgICAgICAgLW1bMl0gLyBkZXQs
CiAgICAgICAgICAgICAgICAgICAgIG1bMF0gLyBkZXQsCiAgICAgICAgICAgICAgICAgICAgKC1t
WzNdICogbVs0XSArIG1bMV0gKiBtWzVdKSAvIGRldCwKICAgICAgICAgICAgICAgICAgICAobVsy
XSAqIG1bNF0gLSBtWzBdICogbVs1XSkgLyBkZXQKICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgICAgICBtID0gcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBw
dWJsaWMgdm9pZCBNdWx0aXBseShNYXRyaXggbWF0cml4KQogICAgICAgIHsKICAgICAgICAgICAg
TXVsdGlwbHkobWF0cml4LCBNYXRyaXhPcmRlci5QcmVwZW5kKTsKICAgICAgICB9CiAgICAgICAg
CiAgICAgICAgcHVibGljIHZvaWQgTXVsdGlwbHkoTWF0cml4IG1hdHJpeCwgTWF0cml4T3JkZXIg
b3JkZXIpCiAgICAgICAgewogICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLlByZXBlbmQ6CiAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpcyA9IG1hdHJpeCAqIHRoaXMKICAgICAgICAgICAgICAgICAgICBmbG9hdFtd
IHAgPSBtYXRyaXguRWxlbWVudHM7CiAgICAgICAgICAgICAgICAgICAgZmxvYXRbXSByMCA9IAog
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcFswXSAqIG1bMF0g
KyBwWzFdICogbVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgcFswXSAqIG1bMV0gKyBwWzFd
ICogbVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgcFsyXSAqIG1bMF0gKyBwWzNdICogbVsy
XSwKICAgICAgICAgICAgICAgICAgICAgICAgcFsyXSAqIG1bMV0gKyBwWzNdICogbVszXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgcFs0XSAqIG1bMF0gKyBwWzVdICogbVsyXSArIG1bNF0sCiAg
ICAgICAgICAgICAgICAgICAgICAgIHBbNF0gKiBtWzFdICsgcFs1XSAqIG1bM10gKyBtWzVdCiAg
ICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBtID0gcjA7CiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLkFwcGVu
ZDoKICAgICAgICAgICAgICAgICAgICAvLyB0aGlzID0gdGhpcyAqIG1hdHJpeAogICAgICAgICAg
ICAgICAgICAgIGZsb2F0W10gYSA9IG1hdHJpeC5FbGVtZW50czsKICAgICAgICAgICAgICAgICAg
ICBmbG9hdFtdIHIxID0gCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICBtWzBdICogYVswXSArIG1bMV0gKiBhWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBt
WzBdICogYVsxXSArIG1bMV0gKiBhWzNdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzJdICog
YVswXSArIG1bM10gKiBhWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzJdICogYVsxXSAr
IG1bM10gKiBhWzNdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzRdICogYVswXSArIG1bNV0g
KiBhWzJdICsgYVs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgbVs0XSAqIGFbMV0gKyBtWzVd
ICogYVszXSArIGFbNV0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAg
IG0gPSByMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBSZXNldCgpCiAgICAgICAgewogICAgICAg
ICAgICBtWzBdID0gMS4wZjsgbVsxXSA9IDAuMGY7CiAgICAgICAgICAgIG1bMl0gPSAwLjBmOyBt
WzNdID0gMS4wZjsKICAgICAgICAgICAgbVs0XSA9IDAuMGY7IG1bNV0gPSAwLjBmOwogICAgICAg
IH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBSb3RhdGUoZmxvYXQgYW5nbGUpCiAgICAg
ICAgewogICAgICAgICAgICBSb3RhdGUoYW5nbGUsIE1hdHJpeE9yZGVyLlByZXBlbmQpOwogICAg
ICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBSb3RhdGUoZmxvYXQgYW5nbGUsIE1h
dHJpeE9yZGVyIG9yZGVyKQogICAgICAgIHsKICAgICAgICAgICAgYW5nbGUgKj0gKGZsb2F0KShN
YXRoLlBJIC8gMTgwLjApOyAgLy8gZGVncmVlcyB0byByYW5kaWFucwogICAgICAgICAgICBmbG9h
dCBjb3MgPSAoZmxvYXQpTWF0aC5Db3MoYW5nbGUpOwogICAgICAgICAgICBmbG9hdCBzaW4gPSAo
ZmxvYXQpTWF0aC5TaW4oYW5nbGUpOwogICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLlByZXBlbmQ6CiAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpcyA9IHJvdGF0aW9uICogdGhpcwogICAgICAgICAgICAgICAgICAg
IGZsb2F0W10gcjAgPSAKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3MgKiBtWzBdICsgc2luICogbVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cyAqIG1bMV0gKyBzaW4gKiBtWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAtc2luICogbVsw
XSArIGNvcyAqIG1bMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIC1zaW4gKiBtWzFdICsgY29z
ICogbVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgbVs0XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgbVs1XQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgbSA9
IHIwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBNYXRy
aXhPcmRlci5BcHBlbmQ6CiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyA9IHRoaXMgKiByb3Rh
dGlvbgogICAgICAgICAgICAgICAgICAgIGZsb2F0W10gcjEgPSAKICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1bMF0gKiBjb3MgKyBtWzFdICogLXNpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgbVswXSAqIHNpbiArIG1bMV0gKiAgY29zLAogICAgICAgICAg
ICAgICAgICAgICAgICBtWzJdICogY29zICsgbVszXSAqIC1zaW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgIG1bMl0gKiBzaW4gKyBtWzNdICogIGNvcywKICAgICAgICAgICAgICAgICAgICAgICAg
bVs0XSAqIGNvcyArIG1bNV0gKiAtc2luLAogICAgICAgICAgICAgICAgICAgICAgICBtWzRdICog
c2luICsgbVs1XSAqICBjb3MKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg
ICAgIG0gPSByMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBSb3RhdGVBdChmbG9hdCBhbmdsZSwg
UG9pbnRGIHBvaW50KQogICAgICAgIHsKICAgICAgICAgICAgUm90YXRlQXQoYW5nbGUsIHBvaW50
LCBNYXRyaXhPcmRlci5QcmVwZW5kKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGlj
IHZvaWQgUm90YXRlQXQoZmxvYXQgYW5nbGUsIFBvaW50RiBwb2ludCwgTWF0cml4T3JkZXIgb3Jk
ZXIpCiAgICAgICAgewogICAgICAgICAgICBhbmdsZSAqPSAoZmxvYXQpKE1hdGguUEkgLyAxODAu
MCk7ICAvLyBkZWdyZWVzIHRvIHJhbmRpYW5zCiAgICAgICAgICAgIGZsb2F0IGNvcyA9IChmbG9h
dClNYXRoLkNvcyhhbmdsZSk7CiAgICAgICAgICAgIGZsb2F0IHNpbiA9IChmbG9hdClNYXRoLlNp
bihhbmdsZSk7CiAgICAgICAgICAgIGZsb2F0IGU0ID0gLXBvaW50LlggKiBjb3MgKyBwb2ludC5Z
ICogc2luICsgcG9pbnQuWDsKICAgICAgICAgICAgZmxvYXQgZTUgPSAtcG9pbnQuWCAqIHNpbiAt
IHBvaW50LlkgKiBjb3MgKyBwb2ludC5ZOwogICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKQogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLlByZXBlbmQ6CiAgICAg
ICAgICAgICAgICAgICAgLy8gdGhpcyA9IHJvdGF0aW9uICogdGhpcwogICAgICAgICAgICAgICAg
ICAgIGZsb2F0W10gcjAgPSAKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcyAqIG1bMF0gKyBzaW4gKiBtWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBj
b3MgKiBtWzFdICsgc2luICogbVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgLXNpbiAqIG1b
MF0gKyBjb3MgKiBtWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAtc2luICogbVsxXSArIGNv
cyAqIG1bM10sCiAgICAgICAgICAgICAgICAgICAgICAgIGU0ICogbVswXSArIGU1ICogbVsyXSAr
IG1bNF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGU0ICogbVsxXSArIGU1ICogbVszXSArIG1b
NV0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG0gPSByMDsKICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgTWF0cml4T3JkZXIu
QXBwZW5kOgogICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgPSB0aGlzICogcm90YXRpb24KICAg
ICAgICAgICAgICAgICAgICBmbG9hdFtdIHIxID0gCiAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICBtWzBdICogY29zICsgbVsxXSAqIC1zaW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgIG1bMF0gKiBzaW4gKyBtWzFdICogY29zLAogICAgICAgICAgICAgICAgICAg
ICAgICBtWzJdICogY29zICsgbVszXSAqIC1zaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG1b
Ml0gKiBzaW4gKyBtWzNdICogY29zLAogICAgICAgICAgICAgICAgICAgICAgICBtWzRdICogY29z
ICsgbVs1XSAqIC1zaW4gKyBlNCwKICAgICAgICAgICAgICAgICAgICAgICAgbVs0XSAqIHNpbiAr
IG1bNV0gKiBjb3MgKyBlNQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAg
ICAgbSA9IHIxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIAogICAgICAgIHB1YmxpYyB2b2lkIFNjYWxlKGZsb2F0IHNjYWxlWCwgZmxv
YXQgc2NhbGVZKQogICAgICAgIHsKICAgICAgICAgICAgU2NhbGUoc2NhbGVYLCBzY2FsZVksIE1h
dHJpeE9yZGVyLlByZXBlbmQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9p
ZCBTY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSwgTWF0cml4T3JkZXIgb3JkZXIpCiAg
ICAgICAgewogICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLlByZXBlbmQ6CiAgICAgICAgICAgICAgICAgICAgLy8g
dGhpcyA9IHNjYWxlICogdGhpcwogICAgICAgICAgICAgICAgICAgIG1bMF0gKj0gc2NhbGVYOyBt
WzFdICo9IHNjYWxlWDsKICAgICAgICAgICAgICAgICAgICBtWzJdICo9IHNjYWxlWTsgbVszXSAq
PSBzY2FsZVk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNl
IE1hdHJpeE9yZGVyLkFwcGVuZDoKICAgICAgICAgICAgICAgICAgICAvLyB0aGlzID0gdGhpcyAq
IHNjYWxlCiAgICAgICAgICAgICAgICAgICAgbVswXSAqPSBzY2FsZVg7IG1bMV0gKj0gc2NhbGVZ
OwogICAgICAgICAgICAgICAgICAgIG1bMl0gKj0gc2NhbGVYOyBtWzNdICo9IHNjYWxlWTsKICAg
ICAgICAgICAgICAgICAgICBtWzRdICo9IHNjYWxlWDsgbVs1XSAqPSBzY2FsZVk7CiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAg
ICAgcHVibGljIHZvaWQgU2hlYXIoZmxvYXQgc2hlYXJYLCBmbG9hdCBzaGVhclkpCiAgICAgICAg
ewogICAgICAgICAgICBTaGVhcihzaGVhclgsIHNoZWFyWSwgTWF0cml4T3JkZXIuUHJlcGVuZCk7
CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIExBTUVTUEVDOiBxdW90ZSBmcm9tIGJldGEg
MiBzZGsgZG9jczogIltUbyBiZSBzdXBwbGllZCFdIgogICAgICAgIC8vCiAgICAgICAgLy8gYXNz
dW1pbmcgdHJhbnNmb3JtYXRpb24gbWF0cml4OgogICAgICAgIC8vCiAgICAgICAgLy8gICAgICAo
MSAgICAgICBzaGVhclkgIDApCiAgICAgICAgLy8gICAgICAoc2hlYXJYICAxICAgICAgIDApCiAg
ICAgICAgLy8gICAgICAoMCAgICAgICAwICAgICAgIDEpCiAgICAgICAgLy8KICAgICAgICBwdWJs
aWMgdm9pZCBTaGVhcihmbG9hdCBzaGVhclgsIGZsb2F0IHNoZWFyWSwgTWF0cml4T3JkZXIgb3Jk
ZXIpCiAgICAgICAgewogICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKQogICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLlByZXBlbmQ6CiAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyA9IHNoZWFyICogdGhpcwogICAgICAgICAgICAgICAgICAgIGZsb2F0W10gcjAg
PSAKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1bMF0gKyBz
aGVhclkgKiBtWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzFdICsgc2hlYXJZICogbVsz
XSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hlYXJYICogbVswXSArIG1bMl0sCiAgICAgICAg
ICAgICAgICAgICAgICAgIHNoZWFyWCAqIG1bMV0gKyBtWzNdLAogICAgICAgICAgICAgICAgICAg
ICAgICBtWzRdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzVdCiAgICAgICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgICAgICBtID0gcjA7CiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlIE1hdHJpeE9yZGVyLkFwcGVuZDoKICAgICAgICAgICAg
ICAgICAgICAvLyB0aGlzID0gdGhpcyAqIHNoZWFyCiAgICAgICAgICAgICAgICAgICAgZmxvYXRb
XSByMSA9IAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbVsw
XSArIG1bMV0gKiBzaGVhclgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1bMF0gKiBzaGVhclkg
KyBtWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtWzJdICsgbVszXSAqIHNoZWFyWCwKICAg
ICAgICAgICAgICAgICAgICAgICAgbVsyXSAqIHNoZWFyWSArIG1bM10sCiAgICAgICAgICAgICAg
ICAgICAgICAgIG1bNF0gKyBtWzVdICogc2hlYXJYICwKICAgICAgICAgICAgICAgICAgICAgICAg
bVs0XSAqIHNoZWFyWSArIG1bNV0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAg
ICAgICAgIG0gPSByMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBUcmFuc2Zvcm1Qb2ludHMoUG9p
bnRbXSBwdHMpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHB0cy5M
ZW5ndGg7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXQgeCA9IChmbG9h
dClwdHNbaV0uWDsKICAgICAgICAgICAgICAgIGZsb2F0IHkgPSAoZmxvYXQpcHRzW2ldLlk7CiAg
ICAgICAgICAgICAgICBwdHNbaV0uWCA9IChpbnQpKHggKiBtWzBdICsgeSAqIG1bMl0gKyBtWzRd
KTsKICAgICAgICAgICAgICAgIHB0c1tpXS5ZID0gKGludCkoeCAqIG1bMV0gKyB5ICogbVszXSAr
IG1bNV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHB1YmxpYyB2
b2lkIFRyYW5zZm9ybVBvaW50cyhQb2ludEZbXSBwdHMpCiAgICAgICAgewogICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHB0cy5MZW5ndGg7IGkrKykKICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgZmxvYXQgeCA9IHB0c1tpXS5YOwogICAgICAgICAgICAgICAgZmxvYXQgeSA9IHB0
c1tpXS5ZOwogICAgICAgICAgICAgICAgcHRzW2ldLlggPSB4ICogbVswXSArIHkgKiBtWzJdICsg
bVs0XTsKICAgICAgICAgICAgICAgIHB0c1tpXS5ZID0geCAqIG1bMV0gKyB5ICogbVszXSArIG1b
NV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIHZvaWQg
VHJhbnNmb3JtVmVjdG9ycyhQb2ludFtdIHB0cykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcHRzLkxlbmd0aDsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICBmbG9hdCB4ID0gKGZsb2F0KXB0c1tpXS5YOwogICAgICAgICAgICAgICAgZmxvYXQgeSA9
IChmbG9hdClwdHNbaV0uWTsKICAgICAgICAgICAgICAgIHB0c1tpXS5YID0gKGludCkoeCAqIG1b
MF0gKyB5ICogbVsyXSk7CiAgICAgICAgICAgICAgICBwdHNbaV0uWSA9IChpbnQpKHggKiBtWzFd
ICsgeSAqIG1bM10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHB1
YmxpYyB2b2lkIFRyYW5zZm9ybVZlY3RvcnMoUG9pbnRGW10gcHRzKQogICAgICAgIHsKICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwdHMuTGVuZ3RoOyBpKyspCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIGZsb2F0IHggPSBwdHNbaV0uWDsKICAgICAgICAgICAgICAgIGZsb2F0
IHkgPSBwdHNbaV0uWTsKICAgICAgICAgICAgICAgIHB0c1tpXS5YID0geCAqIG1bMF0gKyB5ICog
bVsyXTsKICAgICAgICAgICAgICAgIHB0c1tpXS5ZID0geCAqIG1bMV0gKyB5ICogbVszXTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBUcmFuc2xh
dGUoZmxvYXQgb2Zmc2V0WCwgZmxvYXQgb2Zmc2V0WSkKICAgICAgICB7CiAgICAgICAgICAgIFRy
YW5zbGF0ZShvZmZzZXRYLCBvZmZzZXRZLCBNYXRyaXhPcmRlci5QcmVwZW5kKTsKICAgICAgICB9
CiAgICAgICAgCiAgICAgICAgcHVibGljIHZvaWQgVHJhbnNsYXRlKGZsb2F0IG9mZnNldFgsIGZs
b2F0IG9mZnNldFksIE1hdHJpeE9yZGVyIG9yZGVyKQogICAgICAgIHsKICAgICAgICAgICAgc3dp
dGNoIChvcmRlcikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2FzZSBNYXRyaXhPcmRl
ci5QcmVwZW5kOgogICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgPSB0cmFuc2xhdGlvbiAqIHRo
aXMKICAgICAgICAgICAgICAgICAgICBtWzRdID0gb2Zmc2V0WCAqIG1bMF0gKyBvZmZzZXRZICog
bVsyXSArIG1bNF07CiAgICAgICAgICAgICAgICAgICAgbVs1XSA9IG9mZnNldFggKiBtWzFdICsg
b2Zmc2V0WSAqIG1bM10gKyBtWzVdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgY2FzZSBNYXRyaXhPcmRlci5BcHBlbmQ6CiAgICAgICAgICAgICAgICAgICAgLy8g
dGhpcyA9IHRoaXMgKiB0cmFuc2xhdGlvbgogICAgICAgICAgICAgICAgICAgIG1bNF0gKz0gb2Zm
c2V0WDsKICAgICAgICAgICAgICAgICAgICBtWzVdICs9IG9mZnNldFk7CiAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8g
TEFNRVNQRUM6IHF1b3RlIGZyb20gYmV0YSAyIHNkayBkb2NzOiAiW1RvIGJlIHN1cHBsaWVkIV0i
CiAgICAgICAgcHVibGljIHZvaWQgVmVjdG9yVHJhbnNmb3JtUG9pbnRzKFBvaW50W10gcHRzKQog
ICAgICAgIHsKICAgICAgICAgICAgLy8gVE9ETwogICAgICAgIH0KICAgICAgICAKICAgICAgICAv
KiBzb21lIHNpbXBsZSB0ZXN0IChUT0RPOiByZW1vdmUpCiAgICAgICAgcHVibGljIHN0YXRpYyB2
b2lkIE1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgUG9pbnRGW10gcCA9IHtuZXcgUG9pbnRG
KDEuMGYsIDIuMGYpfTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIigiICsgcFswXS5Y
ICsgIiAiICsgcFswXS5ZICsgIikiKTsKICAgICAgICAgICAgTWF0cml4IG0gPSBuZXcgTWF0cml4
KCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBtLlRyYW5zbGF0ZSgxLjBmLCAxLjBmKTsgCiAg
ICAgICAgICAgIG0uU2NhbGUoMi4wZiwgMi4wZik7IAogICAgICAgICAgICBtLlJvdGF0ZSgxODAu
MGYpOwogICAgICAgICAgICAKICAgICAgICAgICAgbS5UcmFuc2Zvcm1Qb2ludHMocCk7CiAgICAg
ICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCIoIiArIHBbMF0uWCArICIgIiArIHBbMF0uWSArICIp
Iik7CiAgICAgICAgICAgIG0uSW52ZXJ0KCk7CiAgICAgICAgICAgIG0uVHJhbnNmb3JtUG9pbnRz
KHApOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiKCIgKyBwWzBdLlggKyAiICIgKyBw
WzBdLlkgKyAiKSIpOwogICAgICAgIH0KICAgICAgICAqLwogICAgfQp9Cg==
--------------Boundary-00=_QQDKBMRY6S9KNQXWM362
Content-Type: text/x-c++;
charset="iso-8859-1";
name="Enums.cs"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Enums.cs"
Ly8KLy8gU3lzdGVtLkRyYXdpbmcuRHJhd2luZzJELk1hdHJpeC5jcwovLwovLyBBdXRob3I6Ci8v
ICAgU3RlZmFuIE1haWVyaG9mZXIgPHNtQGNnLnR1d2llbi5hYy5hdD4KLy8KLy8gKEMpIFhpbWlh
biwgSW5jLiAgaHR0cDovL3d3dy54aW1pYW4uY29tCi8vCgpuYW1lc3BhY2UgU3lzdGVtLkRyYXdp
bmcuRHJhd2luZzJECnsKICAgCiAgICBwdWJsaWMgZW51bSBDb21iaW5lTW9kZQogICAgewogICAg
ICAgIENvbXBsZW1lbnQsCiAgICAgICAgRXhjbHVkZSwKICAgICAgICBJbnRlcnNlY3QsCiAgICAg
ICAgUmVwbGFjZSwKICAgICAgICBVbmlvbiwKICAgICAgICBYb3IKICAgIH0KICAgIAogICAgcHVi
bGljIGVudW0gQ29tcG9zaXRpbmdNb2RlCiAgICB7CiAgICAgICAgU291cmNlQ29weSwKICAgICAg
ICBTb3VyY2VPdmVyCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIENvbXBvc2l0aW5nUXVhbGl0
eQogICAgewogICAgICAgIEFzc3VtZUxpbmVhciwKICAgICAgICBEZWZhdWx0LAogICAgICAgIEdh
bW1hQ29ycmVjdGVkLAogICAgICAgIEhpZ2hRdWFsaXR5LAogICAgICAgIEhpZ2hTcGVlZCwKICAg
ICAgICBJbnZhbGlkCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIENvb3JkaW5hdGVTcGFjZQog
ICAgewogICAgICAgIERldmljZSwKICAgICAgICBQYWdlLAogICAgICAgIFdvcmxkCiAgICB9CiAg
ICAKICAgIHB1YmxpYyBlbnVtIERhc2hDYXAKICAgIHsKICAgICAgICBGbGF0LAogICAgICAgIFJv
dW5kLAogICAgICAgIFRyaWFuZ2xlCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIERhc2hTdHls
ZQogICAgewogICAgICAgIEN1c3RvbSwKICAgICAgICBEYXNoLAogICAgICAgIERhc2hEb3QsCiAg
ICAgICAgRGFzaERvdERvdCwKICAgICAgICBEb3QsCiAgICAgICAgU29saWQKICAgIH0KICAgIAog
ICAgcHVibGljIGVudW0gRmlsbE1vZGUKICAgIHsKICAgICAgICBBbHRlcm5hdGUsCiAgICAgICAg
V2luZGluZwogICAgfQogICAgCiAgICBwdWJsaWMgZW51bSBGbHVzaEludGVudGlvbgogICAgewog
ICAgICAgIEZsdXNoLAogICAgICAgIFN5bmMKICAgIH0KICAgIAogICAgcHVibGljIGVudW0gSGF0
Y2hTdHlsZQogICAgewogICAgICAgIEJhY2t3YXJkRGlhZ29uYWwsCiAgICAgICAgQ3Jvc3MsCiAg
ICAgICAgRGFya0Rvd253YXJkRGlhZ29uYWwsCiAgICAgICAgRGFya0hvcml6b250YWwsCiAgICAg
ICAgRGFya1Vwd2FyZERpYWdvbmFsLAogICAgICAgIERhcmtWZXJ0aWNhbCwKICAgICAgICBEYXNo
ZWREb3dud2FyZERpYWdvbmFsLAogICAgICAgIERhc2hlZEhvcml6b250YWwsCiAgICAgICAgRGFz
aGVkVXB3YXJkRGlhZ29uYWwsCiAgICAgICAgRGFzaGVkVmVydGljYWwsCiAgICAgICAgRGlhZ29u
YWxCcmljaywKICAgICAgICBEaWFnb25hbENyb3NzLAogICAgICAgIERpdm90LAogICAgICAgIERv
dHRlZERpYW1vbmQsCiAgICAgICAgRG90dGVkR3JpZCwKICAgICAgICBGb3J3YXJkRGlhZ29uYWws
CiAgICAgICAgSG9yaXpvbnRhbCwKICAgICAgICBIb3Jpem9udGFsQnJpY2ssCiAgICAgICAgTGFy
Z2VDaGVja2VyQm9hcmQsCiAgICAgICAgTGFyZ2VDb25mZXR0aSwKICAgICAgICBMYXJnZUdyaWQs
CiAgICAgICAgTGlnaHREb3dud2FyZERpYWdvbmFsLAogICAgICAgIExpZ2h0SG9yaXpvbnRhbCwK
ICAgICAgICBMaWdodFVwd2FyZERpYWdvbmFsLAogICAgICAgIExpZ2h0VmVydGljYWwsCiAgICAg
ICAgTWF4LAogICAgICAgIE1pbiwKICAgICAgICBOYXJyb3dIb3Jpem9udGFsLAogICAgICAgIE5h
cnJvd1ZlcnRpY2FsLAogICAgICAgIE91dGxpbmVkRGlhbW9uZCwKICAgICAgICBQZXJjZW50MDUs
CiAgICAgICAgUGVyY2VudDEwLAogICAgICAgIFBlcmNlbnQyMCwKICAgICAgICBQZXJjZW50MjUs
CiAgICAgICAgUGVyY2VudDMwLAogICAgICAgIFBlcmNlbnQ0MCwKICAgICAgICBQZXJjZW50NTAs
CiAgICAgICAgUGVyY2VudDYwLAogICAgICAgIFBlcmNlbnQ3MCwKICAgICAgICBQZXJjZW50NzUs
CiAgICAgICAgUGVyY2VudDgwLAogICAgICAgIFBlcmNlbnQ5MCwKICAgICAgICBQbGFpZCwKICAg
ICAgICBTaGluZ2xlLAogICAgICAgIFNtYWxsQ2hlY2tlckJvYXJkLAogICAgICAgIFNtYWxsQ29u
ZmV0dGksCiAgICAgICAgU21hbGxHcmlkLAogICAgICAgIFNvbGlkRGlhbW9uZCwKICAgICAgICBT
cGhlcmUsCiAgICAgICAgVHJlbGxpcywKICAgICAgICBWZXJ0aWNhbCwKICAgICAgICBXYXZlLAog
ICAgICAgIFdlYXZlLAogICAgICAgIFdpZGVEb3dud2FyZERpYWdvbmFsLAogICAgICAgIFdpZGVV
cHdhcmREaWFnb25hbCwKICAgICAgICBaaWdaYWcKICAgIH0KICAgIAogICAgcHVibGljIGVudW0g
SW50ZXJwb2xhdGlvbk1vZGUKICAgIHsKICAgICAgICBCaWN1YmljLAogICAgICAgIEJpbGluZWFy
LAogICAgICAgIERlZmF1bHQsCiAgICAgICAgSGlnaCwKICAgICAgICBIaWdoUXVhbGl0eUJpY3Vi
aWMsCiAgICAgICAgSGlnaFF1YWxpdHlCaWxpbmVhciwKICAgICAgICBJbnZhbGlkLAogICAgICAg
IExvdywKICAgICAgICBOZWFyZXN0TmVpZ2hib3VyCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVt
IExpbmVhckdyYWRpZW50TW9kZQogICAgewogICAgICAgIEJhY2t3YXJkRGlhZ29uYWwsCiAgICAg
ICAgRm9yd2FyZERpYWdvbmFsLAogICAgICAgIEhvcml6b250YWwsCiAgICAgICAgVmVydGljYWwK
ICAgIH0KICAgIAogICAgcHVibGljIGVudW0gTGluZUNhcAogICAgewogICAgICAgIEFuY2hvck1h
c2ssCiAgICAgICAgQXJyb3dBbmNob3IsCiAgICAgICAgQ3VzdG9tLAogICAgICAgIERpYW1vbmRB
bmNob3IsCiAgICAgICAgRmxhdCwKICAgICAgICBOb0FuY2hvciwKICAgICAgICBSb3VuZCwKICAg
ICAgICBSb3VuZEFuY2hvciwKICAgICAgICBTcXVhcmUsCiAgICAgICAgU3F1YXJlQW5jaG9yLAog
ICAgICAgIFRyaWFuZ2xlCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIExpbmVKb2luCiAgICB7
CiAgICAgICAgQmV2ZWwsCiAgICAgICAgTWl0ZXIsCiAgICAgICAgTWl0ZXJDbGlwcGVkLAogICAg
ICAgIFJvdW5kCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIE1hdHJpeE9yZGVyCiAgICB7CiAg
ICAgICAgQXBwZW5kLAogICAgICAgIFByZXBlbmQKICAgIH0KICAgIAogICAgcHVibGljIGVudW0g
UGF0aFBvaW50VHlwZQogICAgewogICAgICAgIEJlemllciwKICAgICAgICBCZXppZXIzLAogICAg
ICAgIENsb3NlU3VicGF0aCwKICAgICAgICBEYXNoTW9kZSwKICAgICAgICBMaW5lLAogICAgICAg
IFBhdGhNYXJrZXIsCiAgICAgICAgUGF0aFR5cGVNYXNrLAogICAgICAgIFN0YXJ0CiAgICB9CiAg
ICAKICAgIHB1YmxpYyBlbnVtIFBlbkFsaWdubWVudAogICAgewogICAgICAgIENlbnRlciwKICAg
ICAgICBJbnNldCwKICAgICAgICBMZWZ0LAogICAgICAgIE91dHNldCwKICAgICAgICBSaWdodAog
ICAgfQogICAgCiAgICBwdWJsaWMgZW51bSBQZW5UeXBlCiAgICB7CiAgICAgICAgSGF0Y2hGaWxs
LAogICAgICAgIExpbmVhckdyYWRpZW50LAogICAgICAgIFBhdGhHcmFkaWVudCwKICAgICAgICBT
b2xpZENvbG9yLAogICAgICAgIFRleHR1cmVGaWxsCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVt
IFBpeGVsT2Zmc2V0TW9kZQogICAgewogICAgICAgIERlZmF1bHQsCiAgICAgICAgSGFsZiwKICAg
ICAgICBIaWdoUXVhbGl0eSwKICAgICAgICBIaWdoU3BlZWQsCiAgICAgICAgSW52YWxpZCwKICAg
ICAgICBOb25lCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIFF1YWxpdHlNb2RlCiAgICB7CiAg
ICAgICAgRGVmYXVsdCwKICAgICAgICBIaWdodCwKICAgICAgICBJbnZhbGlkLAogICAgICAgIExv
dwogICAgfQogICAgCiAgICBwdWJsaWMgZW51bSBTbW9vdGhpbmdNb2RlCiAgICB7CiAgICAgICAg
QW50aUFsaWFzLAogICAgICAgIERlZmF1bHQsCiAgICAgICAgSGlnaFF1YWxpdHksCiAgICAgICAg
SGlnaFNwZWVkLAogICAgICAgIEludmFsaWQsCiAgICAgICAgTm9uZQogICAgfQogICAgCiAgICBw
dWJsaWMgZW51bSBXYXJwTW9kZQogICAgewogICAgICAgIEJpbGluZWFyLAogICAgICAgIFBlcnNw
ZWN0aXZlCiAgICB9CiAgICAKICAgIHB1YmxpYyBlbnVtIFdyYXBNb2RlCiAgICB7CiAgICAgICAg
Q2xhbXAsCiAgICAgICAgVGlsZSwKICAgICAgICBUaWxlRmxpcFgsCiAgICAgICAgVGlsZUZsaXBY
WSwKICAgICAgICBUaWxlRmxpcFkKICAgIH0KICAgIAp9Cg==
--------------Boundary-00=_QQDKBMRY6S9KNQXWM362--