wxPerl Documentation Viewer Prototype

--089e01228d6cb32e1a052a6c873c
Content-Type: multipart/alternative; boundary=089e01228d6cb32e13052a6c873a

--089e01228d6cb32e13052a6c873a
Content-Type: text/plain; charset=UTF-8

Ron, Steve, et. al.:

I got to thinking a few days ago about how we could leverage the great mass
of documentation already produced by the wxWidgets folks, especially the
member function/method documentation for each widget.

So, I threw together a proof of concept script(attached) for a wxPerl
Documentation Viewer. Download the wxWidgets html documentation(33mb) and
the attached files and give it a try. Obviously a lot more could be added
to this script and several hundred use case files would need to be
created(and downloaded), but that's a smaller effort than recreating all
the method documentation.

What say ye? If nothing else, it's another good example program. LOL.

James

--089e01228d6cb32e13052a6c873a
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div>Ron, Steve, et. al.:<br><br></div>I go=
t to thinking a few days ago about how we could leverage the great mass of =
documentation already produced by the wxWidgets folks, especially the membe=
r function/method documentation for each widget.<br><br></div>So, I threw t=
ogether a proof of concept script(attached) for a wxPerl Documentation View=
er. Download the wxWidgets html documentation(33mb) and the attached files =
and give it a try. Obviously a lot more could be added to this script and s=
everal hundred use case files would need to be created(and downloaded), but=
 that&#39;s a smaller effort than recreating all the method documentation.<=
br><br></div>What say ye? If nothing else, it&#39;s another good example pr=
ogram. LOL.<br><br></div>James<br><br></div>

--089e01228d6cb32e13052a6c873a--
--089e01228d6cb32e1a052a6c873c
Content-Type: application/x-perl; name="HtmlDocTest.pl"
Content-Disposition: attachment; filename="HtmlDocTest.pl"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ijytzhmm0

IyEgL3Vzci9iaW4vcGVybAoKIyBOYW1lOgkJCUh0bWxEb2NUZXN0LnBsCiMgQXV0aG9yOgkJSmFt
ZXMgTS4gTHluZXMsIEpyLgojIENyZWF0ZWQ6CQlKYW51YXJ5IDE5LCAyMDE2CiMgTW9kaWZpZWQg
Qnk6CQlKYW1lcyBNLiBMeW5lcywgSnIuCiMgTGFzdCBNb2RpZmllZDoJSmFudWFyeSAyOCwgMjAx
NgojIEVudmlyb25tZW50OgkJVWJ1bnR1IDE0LjA0TFRTIC8gcGVybCB2NS4xOC4yIC8gd3hQZXJs
IDMuMC4xIC8gSFAgMTUgUXVhZCBDb3JlCiMgQ2hhbmdlIExvZzoJCTEvMTkvMjAxNiAtIFByb2dy
YW0gQ3JlYXRlZAojICAgICAgICAgICAgICAgICAgICAgICAxLzIwLzIwMTYgLSBTb3J0IHRoZSB3
aWRnZXQgbGlzdCwgc2V0IGluaXRpYWwgcGFnZWxvYWQgdG8gaW5kZXguaHRtbAojICAgICAgICAg
ICAgICAgICAgICAgICAxLzIwLzIwMTYgLSBDaGFuZ2UgVGl0bGUgdGV4dAojCQkJMS8yNS8yMDE2
IC0gUmVmb3JtYXQgIkNsYXNzTGlzdDEiIHRvIHJlbW92ZSAuaHRtbCBleHRlbnNpb24gdG8gCiMJ
CQkgICAgICAgICAgICBzaW1wbGlmeSB0aGUgTGlzdEJveCBhcHBlYXJhbmNlLiBUZXN0IGFsbCAz
MDArIHdpZGdldCBmaWxlbmFtZXMuCiMJCQkxLzI4LzIwMTYgLSBGaXhlZCBzZXZlcmFsIHdpZGdl
dCBmaWxlbmFtZXMuIENoYW5nZWQgdXNlIGNhc2UgZmlsZW5hbWUKIwkJCQkgICAgZXh0ZW5zaW9u
IGZyb20gLnVjIHRvIC51c2MKIwkJCQojIERlc2NyaXB0aW9uOgkJUHJvb2Ygb2YgQ29uY2VwdCBm
b3IgYSB3eFBlcmwvd3hXaWRnZXRzIEhUTUwgRG9jdW1lbnRhdGlvbiBWaWV3ZXIuCiMJCQlUaGUg
bWFpbiBwdXJwb3NlIGlzIHRvIGxldmVyYWdlIHRoZSBtYXNzIG9mIGV4aXN0aW5nIHd4V2lkZ2V0
cyBIVE1MIGRvY3VtZW5hdGF0aW9uLgojICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyBh
IGxpc3QgYm94IG9mIHd4V2lkZ2V0cyBDbGFzc2VzLAojICAgICAgICAgICAgICAgICAgICAgICAg
YWZ0ZXIgYSBjbGFzcyBpcyBzZWxlY3RlZCwgdGhlIGh0bWwgZmlsZSBmb3IgdGhhdCBjbGFzcyBp
cyBkaXNwbGF5ZWQsCiMgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHd4UGVybCB1c2Ug
Y2FzZSBmaWxlIGZvciB0aGUgc2VsZWN0ZWQgd2lkZ2V0IGlzCiMJCQkgYWxzbyBkaXNwbGF5ZWQo
c2ltdWxhdGVkIGF0IHRoZSBtb21lbnQpCiMKIyBOb3RlczoJCURvd25sb2FkIHd4V2lkZ2V0cyAz
LjAuMiBIVE1MIGRvY3VtZW50YXRpb24gZnJvbSB3eHdpZGdldHMub3JnL2Rvd25sb2Fkcy8KIyAg
ICAgICAgICAgICAgICAgICAgICAgUGF0aCBmb3IgbXkgaW5zdGFsbGF0aW9uOiAvaG9tZS9wZXRl
L1Blcmwvd3hEb2NzL3d4V2lkZ2V0cy0zLjAuMgojICAgICAgICAgICAgICAgICAgICAgICBNb2Rp
ZnkgJGh0bWxwYXRoIGZvciB5b3VyIGluc3RhbGxhdGlvbgojCQkJRG93bmxvYWQgdGhlIGxpc3Qg
b2YgY2xhc3NlcyAtICJDbGFzc0xpc3QxIiB0byBzYW1lIGRpcmVjdG9yeSBhcwojCQkJIEh0bWxE
b2NUZXN0LnBsKHNhbXBsZSBhdHRhY2hlZCB0byBlbWFpbCkKIyAgICAgICAgICAgICAgICAgICAg
ICAgRG93bmxvYWQgdGhlIER1bW15LnVzYyB1c2UgY2FzZSBmaWxlIGZvciB5b3VyIGluc3RhbGxh
dGlvbihzYW1wbGUgYXR0YWNoZWQgdG8gZW1haWwpCiMKIyAgICAgICAgICAgICAgICAgICAgICAg
UHJvYmFibHkgYSBkaXJlY3Rvcnkgb2YgdXNlIGNhc2UgZmlsZXMgbmFtZWQgdGhlIHNhbWUgYXMg
dGhlCiMgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgY2xhc3N3eCBmaWxlcyB3b3Vs
ZCBiZSB0aGUgZWFzaWVzdCB3YXkgdG8gCiMgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVu
dCB0aGUgZGlzcGxheSBvZiB1c2UgY2FzZXMuIFdvdWxkIGhhdmUgdG8gZG93bmxvYWQKIyAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcyBkaXJlY3RvcnkgaW4gYWRkaXRpb24gdG8gdGhlIGh0bWwg
ZmlsZXMuCiMKIyAgICAgICAgICAgICAgICAgICAgICAgTmVlZCBhICJTcGxhc2guaHRtbCIgZmls
ZSBmb3IgdGhlIGluaXRpYWwgZGlzcGxheSBwcmlvciB0byBhCiMgICAgICAgICAgICAgICAgICAg
ICAgIHdpZGdldCBiZWluZyBzZWxlY3RlZC4gQ2hhbmdlIHRoZSBmaXJzdCBvY2N1cmFuY2Ugb2Yg
TG9hZFBhZ2UKIyAgICAgICAgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhpcyBmaWxlLiBD
dXJlbnRseSB1c2luZyBpbmRleC5odG1sCiMKIyBUbyBEbzoJCUN1cnJlbnQgd2lkZ2V0IG5hbWVz
IGFyZSBpbiB0aGUgZmlsZW5hbWUgZm9ybWF0IG9mIHRoZSB3eFdpZGdldHMgaHRtbAojCQkJIGZp
bGVuYW1pbmcuIFByb3ZpZGUgd3hXaWRnZXQgYW5kIHd4UGVybCB3aWRnZXQgbmFtZXMuIAojCQkJ
RGlzcGxheSBhbiBpbWFnZSBvZiB0aGUgc2VsZWN0ZWQgY29udHJvbC4gICAgCiMKCnBhY2thZ2Ug
bWFpbjsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkYXBwID0gQXBwLT5uZXcoKTsKJGFw
cC0+TWFpbkxvb3A7CgpwYWNrYWdlIEFwcDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2Ug
YmFzZSAnV3g6OkFwcCc7CnN1YiBPbkluaXQgewogICAgV3g6OkluaXRBbGxJbWFnZUhhbmRsZXJz
KCk7CQkJCQkjIFJlcXVpcmVkIGJ5IEh0bWwgbW9kdWxlCiAgICBteSAkZnJhbWUgPSBGcmFtZS0+
bmV3KCk7CiAgICAkZnJhbWUtPlNob3coMSk7Cn0KCnBhY2thZ2UgRnJhbWU7CnVzZSBzdHJpY3Q7
CnVzZSB3YXJuaW5nczsKdXNlIFd4IHF3KDpldmVyeXRoaW5nKTsKdXNlIGJhc2UgcXcoV3g6OkZy
YW1lKTsKdXNlIFd4OjpIdG1sOwkJCQkJCQkjIE5vdCBsb2FkZWQgYnkgdXNlIFd4IHF3KDpldmVy
eXRoaW5nKQp1c2UgRGF0YTo6RHVtcGVyOwoKc3ViIG5ldyB7CiAgICBteSAoJGNsYXNzLCAkcGFy
ZW50KSA9IEBfOwoKIyBDcmVhdGUgVG9wIExldmVsIEZyYW1lCiAgICBteSAkc2VsZiA9ICRjbGFz
cy0+U1VQRVI6Om5ldygkcGFyZW50LCB3eElEX0FOWSwgIlByb29mIG9mIENvbmNlcHQgd3hQZXJs
IERvY3VtZW50YXRpb24gVmlld2VyIiwKICAgICAgICAgICAgICAgd3hEZWZhdWx0UG9zaXRpb24s
IHd4RGVmYXVsdFNpemUpOwoKICAgIG15ICRodG1scGF0aCA9ICIvaG9tZS9wZXRlL1Blcmwvd3hE
b2NzL3d4V2lkZ2V0cy0zLjAuMiI7ICAgICAgIyBQYXRoIHRvIHd4V2lkZ2V0cyBIVE1MIGRpcmVj
dG9yeQogICAgbXkgJGh0bWxmaWxlID0gIi9pbmRleC5odG1sIjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEluaXRpYWwgSFRNTCBmaWxlIHRvIGRpc3BsYXkKCiMgQ3JlYXRlIFRp
dGxlIFRleHQKICAgICRzZWxmLT57dGl0bGV0ZXh0fSA9IFd4OjpTdGF0aWNUZXh0LT5uZXcoJHNl
bGYsIHd4SURfQU5ZLCAiUHJvb2Ygb2YgQ29uY2VwdCB3eFBlcmwgRG9jdW1lbnRhdGlvbiBWaWV3
ZXIgLSB2MS8yOC8yMDE2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHd4RGVmYXVsdFBvc2l0
aW9uLCB3eERlZmF1bHRTaXplKTsKCiMgQ3JlYXRlIEhUTUwgV2luZG93CiAgICAkc2VsZi0+e2h0
bWxsYWJlbH0gPSBXeDo6U3RhdGljVGV4dC0+bmV3KCRzZWxmLCB3eElEX0FOWSwgIlNlbGVjdGVk
IENsYXNzL1dpZGdldCBEb2N1bWVudGF0aW9uKEMrKyBTeW50YXgpIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRTaXplKTsgCiAgICAkc2VsZi0+
e2h0bWx3aW5kb3d9ID0gV3g6Okh0bWxXaW5kb3ctPm5ldygkc2VsZiwgd3hJRF9BTlksIHd4RGVm
YXVsdFBvc2l0aW9uLCBbMTAwMCw1MDBdLCB3eEhXX1NDUk9MTEJBUl9BVVRPKTsKICAgICRzZWxm
LT57aHRtbHdpbmRvd30tPkxvYWRQYWdlKCRodG1scGF0aC4kaHRtbGZpbGUpOyAgICAgICAgICAg
ICMgTG9hZCBpbml0aWFsIEhUTUwgZmlsZQoKIyBDcmVhdGUgYSBMaXN0Qm94IG9mIHd4V2lkZ2V0
cyBDbGFzc2VzCgogICAgbXkgJGNsYXNzbGlzdHBhdGggPSAiQ2xhc3NMaXN0MSI7CgogICAgbXkg
JGZoOwogICAgb3BlbigkZmgsICI8IiwgJGNsYXNzbGlzdHBhdGgpIG9yIGRpZSAiQ2FuJ3Qgb3Bl
biAkY2xhc3NsaXN0cGF0aDogJCEiOwogICAgbXkgQGNsYXNzZXM7CiAgICB3aGlsZSg8JGZoPikg
ewkJCQkJCQkjIFJlYWQgYW5kIGZvcm1hdCB0aGUgd2lkZ2V0IG5hbWVzCiAgICAgICAgY2hvbXA7
CiAgICAgICAgbXkoJGYxLCAkZjIpID0gc3BsaXQgLyMvLCAkXzsKICAgICAgICAkZjEgPX4gcy9c
cyskLy87CQkJCQkJIyBUcmltIHRyYWlsaW5nIHNwYWNlcyBpbiBuYW1lCiAgICAgICAgcHVzaCBA
Y2xhc3NlcywgJGYxOwogICAgfQogICAgY2xvc2UoJGZoKTsKCiAgICBteSBAc29ydGVkY2xhc3Nl
cyA9IHNvcnQgQGNsYXNzZXM7CQkJCQkjIFNvcnQgdGhlIHdpZGdldCBuYW1lcwoKICAgICRzZWxm
LT57bGlzdGJveGxhYmVsfSA9IFd4OjpTdGF0aWNUZXh0LT5uZXcoJHNlbGYsIHd4SURfQU5ZLCAi
QXZhaWxhYmxlIENsYXNzZXMvV2lkZ2V0cyIsIHd4RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRT
aXplKTsKICAgICRzZWxmLT57bGlzdGJveH0gPSBXeDo6TGlzdEJveC0+bmV3KCRzZWxmLCB3eElE
X0FOWSwgd3hEZWZhdWx0UG9zaXRpb24sIFs1MDAsMjAwXSwKICAgICAgICAgICAgICAgICAgICAg
ICBcQHNvcnRlZGNsYXNzZXMsIHd4TEJfU0lOR0xFKTsKCiMgQ3JlYXRlIFRleHRDdHJsIGZvciBV
c2UgQ2FzZSBEaXNwbGF5CiAgICAkc2VsZi0+e3VzZWNhc2VsYWJlbH0gPSBXeDo6U3RhdGljVGV4
dC0+bmV3KCRzZWxmLCB3eElEX0FOWSwgIlVzZSBDYXNlIGZvciBTZWxlY3RlZCBDbGFzcy9XaWRn
ZXQod3hQZXJsIFN5bnRheCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hEZWZhdWx0
UG9zaXRpb24sIHd4RGVmYXVsdFNpemUpOwogICAgJHNlbGYtPnt1c2VjYXNldGV4dH0gPSBXeDo6
VGV4dEN0cmwtPm5ldygkc2VsZiwgd3hJRF9BTlksICIgIiwgd3hEZWZhdWx0UG9zaXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFs1MDAsMjAwXSwgd3hURV9NVUxUSUxJTkUgfCB3eFRF
X1JFQURPTkxZIHwgd3hURV9ET05UV1JBUCk7CiAgICAkc2VsZi0+e3VzZWNhc2V0ZXh0fS0+TG9h
ZEZpbGUoIkR1bW15LnVzYyIpOyAgICAgICAgICAgICAgICAgICAJICMgVXNlIENhc2UgZmlsZSBk
dW1teQoKIyBDcmVhdGUgQ29weXJpZ2h0IEluZm9ybWF0aW9uCiAgICAkc2VsZi0+e2NvcHlyaWdo
dH0gPSBXeDo6U3RhdGljVGV4dC0+bmV3KCRzZWxmLCB3eElEX0FOWSwgInd4V2lkZ2V0cyBpcyBm
cmVlIHNvZnR3YXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR1BMIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRTaXplKTsKCiMgQ3JlYXRlIEJ1
dHRvbnMKICAgICRzZWxmLT57cXVpdGJ1dHRvbn0gPSBXeDo6QnV0dG9uLT5uZXcoJHNlbGYsIHd4
SURfQU5ZLCAiUXVpdCIsIHd4RGVmYXVsdFBvc2l0aW9uLCB3eERlZmF1bHRTaXplKTsKCiMgRGVm
aW5lIFNpemVyIFN0cnVjdHVyZSAtIE15ICJTdGFuZGFyZCIgTGF5b3V0CiMgQXNzdW1lczogT25l
IE1haW4gU2l6ZXIoVmVydGljYWwpCiMgICAgICAgICAgT25lIEhlYWRlciBTaXplcihIb3Jpem9u
dGFsKQojCSAgIE9uZSBCb2R5IFNpemVyKEhvcml6b250YWwpIGNvbnRhaW5pbmcKIyAgICAgICAg
ICAgICAgTGVmdCBCb2R5IFNpemVyKFZlcnRpY2FsKQojICAgICAgICAgICAgICBSaWdodCBCb2R5
IFNpemVyKFZlcnRpY2FsKQojICAgICAgICAgIFRocmVlIEZvb3RlciBTaXplcnMoSG9yaXpvbnRh
bCkKIwoKIyBDcmVhdGUgU2l6ZXJzCiAgICBteSAkbWFpblNpemVyID0gV3g6OkJveFNpemVyLT5u
ZXcod3hWRVJUSUNBTCk7CiAgICAkc2VsZi0+U2V0U2l6ZXIoJG1haW5TaXplcik7CgogICAgbXkg
JGhlYWRlclNpemVyID0gV3g6OkJveFNpemVyLT5uZXcod3hIT1JJWk9OVEFMKTsKICAgIG15ICRi
b2R5U2l6ZXIgPSBXeDo6Qm94U2l6ZXItPm5ldyh3eEhPUklaT05UQUwpOwogICAgbXkgJGxlZnRi
b2R5U2l6ZXIgPSBXeDo6Qm94U2l6ZXItPm5ldyh3eFZFUlRJQ0FMKTsKICAgIG15ICRyaWdodGJv
ZHlTaXplciA9IFd4OjpCb3hTaXplci0+bmV3KHd4VkVSVElDQUwpOwogICAgbXkgJGZvb3RlcjFT
aXplciA9IFd4OjpCb3hTaXplci0+bmV3KHd4SE9SSVpPTlRBTCk7CiAgICBteSAkZm9vdGVyMlNp
emVyID0gV3g6OkJveFNpemVyLT5uZXcod3hIT1JJWk9OVEFMKTsKICAgIG15ICRmb290ZXIzU2l6
ZXIgPSBXeDo6Qm94U2l6ZXItPm5ldyh3eEhPUklaT05UQUwpOwoKIyBMYXlvdXQgTWFpbiBTaXpl
cgogICAgJG1haW5TaXplci0+QWRkKCRoZWFkZXJTaXplciwwLDAsMCk7CiAgICAkbWFpblNpemVy
LT5BZGRTcGFjZXIoMjApOwogICAgJG1haW5TaXplci0+QWRkKCRib2R5U2l6ZXIsMCwwLDApOwog
ICAgJG1haW5TaXplci0+QWRkU3BhY2VyKDMwKTsKICAgICRtYWluU2l6ZXItPkFkZCgkZm9vdGVy
MVNpemVyLDAsMCwwKTsKICAgICRtYWluU2l6ZXItPkFkZFNwYWNlcigxMCk7CiAgICAkbWFpblNp
emVyLT5BZGQoJGZvb3RlcjJTaXplciwwLDAsMCk7CiAgICAkbWFpblNpemVyLT5BZGRTcGFjZXIo
MTApOwogICAgJG1haW5TaXplci0+QWRkKCRmb290ZXIzU2l6ZXIsMCwwLDApOwoKIyBMYXlvdXQg
SGVhZGVyIFNpemVyCiAgICAkaGVhZGVyU2l6ZXItPkFkZFNwYWNlcigzNTApOwogICAgJGhlYWRl
clNpemVyLT5BZGQoJHNlbGYtPnt0aXRsZXRleHR9LDAsMCwwKTsKCiMgTGF5b3V0IEJvZHkgU2l6
ZXIKICAgICRib2R5U2l6ZXItPkFkZCgkbGVmdGJvZHlTaXplciwwLDAsMCk7CiAgICAkYm9keVNp
emVyLT5BZGRTcGFjZXIoNTApOwogICAgJGJvZHlTaXplci0+QWRkKCRyaWdodGJvZHlTaXplciww
LDAsMCk7CgojIExheW91dCBMZWZ0IGFuZCBSaWdodCBCb2R5IFNpemVycwogICAgJGxlZnRib2R5
U2l6ZXItPkFkZCgkc2VsZi0+e2xpc3Rib3hsYWJlbH0sMCwwLDApOwogICAgJGxlZnRib2R5U2l6
ZXItPkFkZCgkc2VsZi0+e2xpc3Rib3h9LDAsMCwwKTsKICAgICRsZWZ0Ym9keVNpemVyLT5BZGRT
cGFjZXIoMjApOwogICAgJGxlZnRib2R5U2l6ZXItPkFkZCgkc2VsZi0+e3VzZWNhc2VsYWJlbH0s
MCwwLDApOwogICAgJGxlZnRib2R5U2l6ZXItPkFkZCgkc2VsZi0+e3VzZWNhc2V0ZXh0fSwwLDAs
MCk7CiAgICAkcmlnaHRib2R5U2l6ZXItPkFkZCgkc2VsZi0+e2h0bWxsYWJlbH0sMCwwLDApOwog
ICAgJHJpZ2h0Ym9keVNpemVyLT5BZGQoJHNlbGYtPntodG1sd2luZG93fSwwLDAsMCk7CgojIExh
eW91dCBGb290ZXIgU2l6ZXJzCiAgICAkZm9vdGVyMVNpemVyLT5BZGQoJHNlbGYtPntxdWl0YnV0
dG9ufSwwLDAsMCk7CiMgICAgJGZvb3RlcjJTaXplci0+QWRkKCRzZWxmLT57fSwwLDAsMCk7CiAg
ICAkZm9vdGVyM1NpemVyLT5BZGQoJHNlbGYtPntjb3B5cmlnaHR9LDAsMCwwKTsKCiMgQXNzaWdu
IG1haW5TaXplciB0byB0aGUgRnJhbWUgYW5kIHRyaWdnZXIgbGF5b3V0CgogICAgJG1haW5TaXpl
ci0+Rml0KCRzZWxmKTsKICAgICRtYWluU2l6ZXItPkxheW91dCgpOwoKIyBFdmVudCBIYW5kbGVy
cwoKICAgIFd4OjpFdmVudDo6RVZUX0JVVFRPTigkc2VsZiwgJHNlbGYtPntxdWl0YnV0dG9ufSwg
c3ViIHsKCQkJICBteSAoJHNlbGYsICRldmVudCkgPSBAXzsKCQkJICAkc2VsZi0+Q2xvc2U7CgkJ
CSAgfSk7CgogICAgV3g6OkV2ZW50OjpFVlRfTElTVEJPWCgkc2VsZiwgJHNlbGYtPntsaXN0Ym94
fSwgc3ViIHsKCQkJbXkgKCRzZWxmLCAkZXZlbnQpID0gQF87CgkJCW15ICRzZWxlY3Rpb24gPSAk
c2VsZi0+e2xpc3Rib3h9LT5HZXRTZWxlY3Rpb247CQkjIEluZGV4IE51bWJlcgogICAgICAgICAg
ICAgICAgICAgICAgICBteSAkc3RyaW5nID0gJHNlbGYtPntsaXN0Ym94fS0+R2V0U3RyaW5nKCRz
ZWxlY3Rpb24pOwkjIFN0cmluZyBhdCBJbmRleCBOdW1iZXIKICAgICAgICAgICAgICAgICAgICAg
ICAgJHNlbGYtPntodG1sd2luZG93fS0+TG9hZFBhZ2UoJGh0bWxwYXRoLmxjKCIvY2xhc3MiLiRz
dHJpbmcuIi5odG1sIikpOyAgIyBMb2FkIHRoZSBzZWxlY3RlZCBodG1sIHBhZ2UKIwkJCXByaW50
IER1bXBlciAkaHRtbHBhdGgubGMoIi9jbGFzcyIuJHN0cmluZyk7CQkjIERlYnVnIAoJCQl9KTsK
CgogICAgcmV0dXJuICRzZWxmOwp9CjE7Cgo=
--089e01228d6cb32e1a052a6c873c
Content-Type: application/octet-stream; name=ClassList1
Content-Disposition: attachment; filename=ClassList1
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ijytzq3m1

d3hfV2luZG93IAkJCSMgYmFzZSBjbGFzcyBmb3IgYWxsIHdpbmRvd3MgYW5kIGNvbnRyb2xzCnd4
X0NvbnRyb2wgCQkJIyBiYXNlIGNsYXNzIChtb3N0bHkpIGZvciBuYXRpdmUgY29udHJvbHMvd2lk
Z2V0cwp3eF9QYW5lbCAJCQkjIHdpbmRvdyB3aGljaCBjYW4gc21hcnRseSBtYW5hZ2UgY2hpbGQg
d2luZG93cwp3eF9Ub3BfTGV2ZWxfV2luZG93IAkJIyBBbnkgdG9wIGxldmVsIHdpbmRvdywgZGlh
bG9nIG9yIGZyYW1lCnd4X1NpemVyIAkJCSMgQWJzdHJhY3QgYmFzZSBjbGFzcwp3eF9Cb3hfU2l6
ZXIgCQkJIyBBIHNpemVyIGZvciBsYXlpbmcgb3V0IHdpbmRvd3MgaW4gYSByb3cgb3IgY29sdW1u
Cnd4X0dyaWRfU2l6ZXIgCQkJIyBBIHNpemVyIGZvciBsYXlpbmcgb3V0IHdpbmRvd3MgaW4gYSBn
cmlkIHdpdGggYWxsIGZpZWxkcyBoYXZpbmcgdGhlIHNhbWUgc2l6ZQp3eF9GbGV4X0dyaWRfU2l6
ZXIgCQkjIEEgc2l6ZXIgZm9yIGxheWluZyBvdXQgd2luZG93cyBpbiBhIGZsZXhpYmxlIGdyaWQK
d3hfR3JpZF9CYWdfU2l6ZXIgCQkjIEFub3RoZXIgZ3JpZCBzaXplciB0aGF0IGxldHMgeW91IHNw
ZWNpZnkgdGhlIGNlbGwsIGFuZCBpdGVtcyBjYW4gc3BhbiByb3dzIGFuZC9vciBjb2x1bW5zLgp3
eF9TdGF0aWNfQm94X1NpemVyIAkJIyBTYW1lIGFzIHd4X0JveFNpemVyLCBidXQgd2l0aCBhIHN1
cnJvdW5kaW5nIHN0YXRpYyBib3gKd3hfV3JhcF9TaXplciAJCQkjIEEgc2l6ZXIgd2hpY2ggd3Jh
cHMgaXRzIGNoaWxkIGNvbnRyb2xzIGFzIHNpemUgcGVybWl0cwp3eF9GcmFtZSAJCQkjIE5vcm1h
bCBmcmFtZQp3eF9NX0RfSV9DaGlsZF9GcmFtZSAJCSMgTURJIGNoaWxkIGZyYW1lCnd4X01fRF9J
X1BhcmVudF9GcmFtZSAJCSMgTURJIHBhcmVudCBmcmFtZQp3eF9NaW5pX0ZyYW1lIAkJCSMgQSBm
cmFtZSB3aXRoIGEgc21hbGwgdGl0bGUgYmFyCnd4X1BvcHVwX1dpbmRvdyAJCSMgQSB0b3BsZXZl
bCB3aW5kb3cgd2l0aG91dCBkZWNvcmF0aW9ucywgZS5nLiBmb3IgYSBjb21ib2JveCBwb3AtdXAK
d3hfUHJvcGVydHlfU2hlZXRfRGlhbG9nCSMgUHJvcGVydHkgc2hlZXQgZGlhbG9nCnd4X1NwbGFz
aF9TY3JlZW4gCQkjIFNwbGFzaCBzY3JlZW4gY2xhc3MKd3hfVGlwX1dpbmRvdyAJCQkjIFNob3dz
IHRleHQgaW4gYSBzbWFsbCB3aW5kb3cKd3hfTWVudSAJCQkjIERpc3BsYXlzIGEgc2VyaWVzIG9m
IG1lbnUgaXRlbXMgZm9yIHNlbGVjdGlvbgp3eF9NZW51X0JhciAJCQkjIENvbnRhaW5zIGEgc2Vy
aWVzIG9mIG1lbnVzIGZvciB1c2Ugd2l0aCBhIGZyYW1lCnd4X01lbnVfSXRlbSAJCQkjIFJlcHJl
c2VudHMgYSBzaW5nbGUgbWVudSBpdGVtCnd4X0FuaW1hdGlvbl9DdHJsIAkJIyBBIGNvbnRyb2wg
dG8gZGlzcGxheSBhbiBhbmltYXRpb24Kd3hfQml0bWFwX0J1dHRvbiAJCSMgUHVzaCBidXR0b24g
Y29udHJvbCwgZGlzcGxheWluZyBhIGJpdG1hcAp3eF9CaXRtYXBfQ29tYm9fQm94IAkJIyBBIGNv
bWJvYm94IHdpdGggYml0bWFwcyBuZXh0IHRvIHRleHQgaXRlbXMKd3hfQml0bWFwX1RvZ2dsZV9C
dXR0b24JCSMgQSB0b2dnbGUgYnV0dG9uIHdpdGggYml0bWFwcy4Kd3hfQnV0dG9uIAkJCSMgUHVz
aCBidXR0b24gY29udHJvbCwgZGlzcGxheWluZyB0ZXh0Cnd4X0NhbGVuZGFyX0N0cmwgCQkjIENv
bnRyb2wgc2hvd2luZyBhbiBlbnRpcmUgY2FsZW5kYXIgbW9udGgKd3hfQ2hlY2tfQm94IAkJCSMg
Q2hlY2tib3ggY29udHJvbAp3eF9DaGVja19MaXN0X0JveCAJCSMgQSBsaXN0Ym94IHdpdGggYSBj
aGVja2JveCB0byB0aGUgbGVmdCBvZiBlYWNoIGl0ZW0Kd3hfQ2hvaWNlIAkJCSMgQ2hvaWNlIGNv
bnRyb2wgKGEgY29tYm9ib3ggd2l0aG91dCB0aGUgZWRpdGFibGUgYXJlYSkKd3hfQ29sbGFwc2li
bGVfUGFuZSAJCSMgQSBwYW5lbCB3aGljaCBjYW4gYmUgc2hvd24vaGlkZGVuIGJ5IHRoZSB1c2Vy
Cnd4X0NvbWJvX0JveCAJCQkjIEEgY2hvaWNlIHdpdGggYW4gZWRpdGFibGUgYXJlYQp3eF9Db21i
b19DdHJsIAkJCSMgQSBjb21ib2JveCB3aXRoIGFwcGxpY2F0aW9uIGRlZmluZWQgcG9wdXAKd3hf
RGF0YV9WaWV3X0N0cmwgCQkjIEEgY29udHJvbCB0byBkaXNwbGF5IHRhYnVsYXIgb3IgdHJlZSBs
aWtlIGRhdGEKd3hfRGF0YV9WaWV3X1RyZWVfQ3RybCAJCSMgQSBzcGVjaWFsaXplZCB3eF9EYXRh
Vmlld0N0cmwgd2l0aCBhIHd4X1RyZWVDdHJsLWxpa2UgQVBJCnd4X0RhdGFfVmlld19MaXN0X0N0
cmwgCQkjIEEgc3BlY2lhbGl6ZWQgd3hfRGF0YVZpZXdDdHJsIGZvciBkaXNwbGF5aW5nIGFuZCBl
ZGl0aW5nIHNpbXBsZSB0YWJsZXMuCnd4X0VkaXRhYmxlX0xpc3RfQm94IAkJIyBBIGxpc3Rib3gg
d2l0aCBlZGl0YWJsZSBpdGVtcy4Kd3hfRmlsZV9DdHJsIAkJCSMgQSBjb250cm9sIGZvciBzZWxl
Y3RpbmcgYSBmaWxlLiBVc2VmdWwgZm9yIGN1c3RvbSBmaWxlIGRpYWxvZ3MuCnd4X0dhdWdlIAkJ
CSMgQSBjb250cm9sIHRvIHJlcHJlc2VudCBhIHZhcnlpbmcgcXVhbnRpdHksIHN1Y2ggYXMgdGlt
ZSByZW1haW5pbmcKd3hfR2VuZXJpY19EaXJfQ3RybCAJCSMgQSBjb250cm9sIGZvciBkaXNwbGF5
aW5nIGEgZGlyZWN0b3J5IHRyZWUKd3hfR3JpZCAJCQkjIEEgY29udHJvbCB0byBkaXNwbGF5IHNw
cmVhZC1zaGVldCBsaWtlIGRhdGEgaW4gdGFidWxhciBmb3JtCnd4X0hlYWRlcl9DdHJsIAkJCSMg
YSBzbWFsbCBjb250cm9sIHRvIGRpc3BsYXkgdGhlIHRvcCBoZWFkZXIgb2YgdGFidWxhciBkYXRh
Cnd4X0h0bWxfTGlzdF9Cb3ggCQkjIEFuIGFic3RyYWN0IGNsYXNzIGZvciBjcmVhdGluZyBsaXN0
Ym94ZXMgc2hvd2luZyBIVE1MIGNvbnRlbnQKd3hfSHlwZXJsaW5rX0N0cmwgCQkjIEEgc3RhdGlj
IHRleHQgd2hpY2ggb3BlbnMgYW4gVVJMIHdoZW4gY2xpY2tlZAp3eF9MaXN0X0JveCAJCQkjIEEg
bGlzdCBvZiBzdHJpbmdzIGZvciBzaW5nbGUgb3IgbXVsdGlwbGUgc2VsZWN0aW9uCnd4X0xpc3Rf
Q3RybCAJCQkjIEEgY29udHJvbCBmb3IgZGlzcGxheWluZyBsaXN0cyBvZiBzdHJpbmdzIGFuZC9v
ciBpY29ucywgcGx1cyBhIG11bHRpY29sdW1uIHJlcG9ydCB2aWV3Cnd4X0xpc3RfVmlldyAJCQkj
IEEgc2ltcGxlciBpbnRlcmZhY2UgKGZhw6dhZGUpIGZvciB3eF9MaXN0Q3RybCBpbiByZXBvcnQg
bW9kZQp3eF9Ob3RlYm9vayAJCQkjIEEgbm90ZWJvb2sgY2xhc3MKd3hfT3duZXJfRHJhd25fQ29t
Ym9fQm94IAkjIEEgY29tYm9ib3ggd2l0aCBvd25lci1kcmF3biBsaXN0IGl0ZW1zCnd4X1Byb3Bl
cnR5X0dyaWQgCQkjIEEgY29tcGxleCBjb250cm9sIHRvIGRpc3BsYXkgaGllcmFjaGljYWwsIGVk
aXRhYmxlIGluZm9ybWF0aW9uCnd4X1JhZGlvX0JveCAJCQkjIEEgZ3JvdXAgb2YgcmFkaW8gYnV0
dG9ucwp3eF9SYWRpb19CdXR0b24gCQkjIEEgcm91bmQgYnV0dG9uIHRvIGJlIHVzZWQgd2l0aCBv
dGhlcnMgaW4gYSBtdXR1YWxseSBleGNsdXNpdmUgd2F5Cnd4X1JlYXJyYW5nZV9DdHJsIAkJIyBB
IGNvbnRyb2wgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcmVhcnJhbmdlIGEgbGlzdCBvZiBpdGVtcy4K
d3hfUmljaF9UZXh0X0N0cmwgCQkjIEdlbmVyaWMgcmljaCB0ZXh0IGVkaXRpbmcgY29udHJvbAp3
eF9TaW1wbGVfSHRtbF9MaXN0X0JveAkJIyBBIGxpc3Rib3ggc2hvd2luZyBIVE1MIGNvbnRlbnQK
d3hfU3RhdGljX0JveCAJCQkjIEEgc3RhdGljLCBvciBncm91cCBib3ggZm9yIHZpc3VhbGx5IGdy
b3VwaW5nIHJlbGF0ZWQgY29udHJvbHMKd3hfU2Nyb2xsX0JhciAJCQkjIFNjcm9sbGJhciBjb250
cm9sCnd4X1NlYXJjaF9DdHJsIAkJCSMgQSB0ZXh0IGlucHV0IGNvbnRyb2wgdXNlZCB0byBpbml0
aWF0ZSBhIHNlYXJjaAp3eF9TcGluX0J1dHRvbiAJCQkjIEEgc3BpbiBvciBgdXAtZG93bicgY29u
dHJvbAp3eF9TcGluX0N0cmwgCQkJIyBBIHNwaW4gY29udHJvbCAtIGkuZS4gc3BpbiBidXR0b24g
YW5kIHRleHQgY29udHJvbCBkaXNwbGF5aW5nIGFuIGludGVnZXIKd3hfU3Bpbl9DdHJsX0RvdWJs
ZSAJCSMgQSBzcGluIGNvbnRyb2wgLSBpLmUuIHNwaW4gYnV0dG9uIGFuZCB0ZXh0IGNvbnRyb2wg
ZGlzcGxheWluZyBhIHJlYWwgbnVtYmVyCnd4X1N0YXRpY19UZXh0IAkJCSMgT25lIG9yIG1vcmUg
bGluZXMgb2Ygbm9uLWVkaXRhYmxlIHRleHQKd3hfVGV4dF9DdHJsIAkJCSMgU2luZ2xlIG9yIG11
bHRpbGluZSB0ZXh0IGVkaXRpbmcgY29udHJvbAp3eF9Ub2dnbGVfQnV0dG9uIAkJIyBBIGJ1dHRv
biB3aGljaCBzdGF5cyBwcmVzc2VkIHdoZW4gY2xpY2tlZCBieSB1c2VyLgp3eF9UcmVlX0N0cmwg
CQkJIyBUcmVlIChoaWVyYXJjaHkpIGNvbnRyb2wKd3hfVHJlZV9MaXN0X0N0cmwgCQkjIE11bHRp
LWNvbHVtbiB0cmVlIGNvbnRyb2wgd2l0aCBzaW1wbGUgaW50ZXJmYWNlCnd4X1N0YXRpY19CaXRt
YXAgCQkjIEEgY29udHJvbCB0byBkaXNwbGF5IGEgYml0bWFwCnd4X1N0eWxlZF9UZXh0X0N0cmwg
CQkjIEEgd3hfV2lkZ2V0cyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2NpbnRpbGxhIHNvdXJjZSBj
b2RlIGVkaXRpbmcgY29tcG9uZW50IGZvciBwbGFpbiB0ZXh0IGVkaXRpbmcuCnd4X1NsaWRlciAJ
CQkjIEEgc2xpZGVyIHRoYXQgY2FuIGJlIGRyYWdnZWQgYnkgdGhlIHVzZXIKd3hfVl9MaXN0X0Jv
eCAJCQkjIEEgbGlzdGJveCBzdXBwb3J0aW5nIHZhcmlhYmxlIGhlaWdodCByb3dzCnd4X1ZhbGlk
YXRvciAJCQkjIEJhc2UgdmFsaWRhdG9yIGNsYXNzCnd4X1RleHRfVmFsaWRhdG9yIAkJIyBUZXh0
IGNvbnRyb2wgdmFsaWRhdG9yIGNsYXNzCnd4X0dlbmVyaWNfVmFsaWRhdG9yIAkJIyBHZW5lcmlj
IGNvbnRyb2wgdmFsaWRhdG9yIGNsYXNzCnd4X0ludGVnZXJfVmFsaWRhdG9yIAkJIyBUZXh0IGNv
bnRyb2wgdmFsaWRhdG9yIGNsYXNzIGZvciBpbnRlZ2VyIG51bWJlcnMKd3hfRmxvYXRpbmdfUG9p
bnRfVmFsaWRhdG9yCSMgVGV4dCBjb250cm9sIHZhbGlkYXRvciBjbGFzcyBmb3IgZmxvYXRpbmcg
cG9pbnQgbnVtYmVycwp3eF9Db2xvdXJfUGlja2VyX0N0cmwgCQkjIEEgY29udHJvbCB3aGljaCBh
bGxvd3MgdGhlIHVzZXIgdG8gY2hvb3NlIGEgY29sb3VyCnd4X0Rpcl9QaWNrZXJfQ3RybCAJCSMg
QSBjb250cm9sIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgYSBkaXJlY3RvcnkKd3hf
RmlsZV9QaWNrZXJfQ3RybCAJCSMgQSBjb250cm9sIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBj
aG9vc2UgYSBmaWxlCnd4X0ZvbnRfUGlja2VyX0N0cmwgCQkjIEEgY29udHJvbCB3aGljaCBhbGxv
d3MgdGhlIHVzZXIgdG8gY2hvb3NlIGEgZm9udAp3eF9EYXRlX1BpY2tlcl9DdHJsIAkJIyBTbWFs
bCBkYXRlIHBpY2tlciBjb250cm9sCnd4X0NvbGxhcHNpYmxlX1BhbmUgCQkjIEEgcGFuZWwgd2hp
Y2ggY2FuIGJlIHNob3duL2hpZGRlbiBieSB0aGUgdXNlcgp3eF9IX1Njcm9sbGVkX1dpbmRvdyAJ
CSMgQXMgd3hfU2Nyb2xsZWRXaW5kb3cgYnV0IHN1cHBvcnRzIGNvbHVtbnMgb2YgdmFyaWFibGUg
d2lkdGhzCnd4X1ZfU2Nyb2xsZWRfV2luZG93IAkJIyBBcyB3eF9TY3JvbGxlZFdpbmRvdyBidXQg
c3VwcG9ydHMgcm93cyBvZiB2YXJpYWJsZSBoZWlnaHRzCnd4X0hWX1Njcm9sbGVkX1dpbmRvdyAJ
CSMgQXMgd3hfU2Nyb2xsZWRXaW5kb3cgYnV0IHN1cHBvcnRzIHNjcm9sbCB1bml0cyBvZiB2YXJp
YWJsZSBzaXplcy4Kd3hfSW5mb19CYXIgCQkJIyBBbiBpbmZvcm1hdGlvbiBiYXIgdXN1YWxseSBz
aG93biBvbiB0b3Agb2YgdGhlIG1haW4gd2luZG93Lgp3eF9SaWNoX1Rvb2xfVGlwIAkJIyBBIGN1
c3RvbWl6YWJsZSB0b29sdGlwLgp3eF9TcGxpdHRlcl9XaW5kb3cgCQkjIFdpbmRvdyB3aGljaCBj
YW4gYmUgc3BsaXQgdmVydGljYWxseSBvciBob3Jpem9udGFsbHkKd3hfU3RhdHVzX0JhciAJCQkj
IEltcGxlbWVudHMgdGhlIHN0YXR1cyBiYXIgb24gYSBmcmFtZQp3eF9Ub29sX0JhciAJCQkjIFRv
b2xiYXIgY2xhc3MKd3hfTm90ZWJvb2sgCQkJIyBOb3RlYm9vayBjbGFzcwp3eF9MaXN0Ym9vayAJ
CQkjIFNpbWlsYXIgdG8gbm90ZWJvb2sgYnV0IHVzaW5nIGxpc3QgY29udHJvbAp3eF9DaG9pY2Vi
b29rIAkJCSMgU2ltaWxhciB0byBub3RlYm9vayBidXQgdXNpbmcgY2hvaWNlIGNvbnRyb2wKd3hf
VHJlZWJvb2sgCQkJIyBTaW1pbGFyIHRvIG5vdGVib29rIGJ1dCB1c2luZyB0cmVlIGNvbnRyb2wK
d3hfU2FzaF9XaW5kb3cgCQkJIyBXaW5kb3cgd2l0aCBmb3VyIG9wdGlvbmFsIHNhc2hlcyB0aGF0
IGNhbiBiZSBkcmFnZ2VkCnd4X1Nhc2hfTGF5b3V0X1dpbmRvdyAJCSMgV2luZG93IHRoYXQgY2Fu
IGJlIGludm9sdmVkIGluIGFuIElERS1saWtlIGxheW91dCBhcnJhbmdlbWVudAp3eF9TaW1wbGVi
b29rIAkJCSMgQW5vdGhlciBib29rIGNvbnRyb2wgYnV0IG9uZSBhbGxvd2luZyBvbmx5IHRoZSBw
cm9ncmFtLCBub3QgdGhlIHVzZXIsIHRvIGNoYW5nZSBpdHMgY3VycmVudCBwYWdlLgp3eF9XaXph
cmRfUGFnZSAJCQkjIEEgYmFzZSBjbGFzcyBmb3IgdGhlIHBhZ2UgaW4gd2l6YXJkIGRpYWxvZy4K
d3hfV2l6YXJkX1BhZ2VfU2ltcGxlIAkJIyBBIHBhZ2UgaW4gd2l6YXJkIGRpYWxvZy4Kd3hfQ3Vz
dG9tX0JhY2tncm91bmRfV2luZG93CSMgQSB3aW5kb3cgYWxsb3dpbmcgdG8gc2V0IGEgY3VzdG9t
IGJpdG1hcC4Kd3hfQXVpX01hbmFnZXIgCQkJIyBUaGUgY2VudHJhbCBjbGFzcyBmb3IgbWFuYWdp
bmcgdGhlIGludGVyZmFjZQp3eF9BdWlfTm90ZWJvb2sgCQkjIEEgcmVwbGFjZW1lbnQgbm90ZWJv
b2sgY2xhc3Mgd2l0aCBleHRyYSBmZWF0dXJlcwp3eF9BdWlfUGFuZV9JbmZvIAkJIyBEZXNjcmli
ZXMgYSBzaW5nbGUgcGFuZQp3eF9BdWlfRG9ja19BcnQgCQkjIEFydCBhbmQgbWV0cmljcyBwcm92
aWRlciBmb3IgY3VzdG9taXppbmcgdGhlIGRvY2tpbmcgdXNlciBpbnRlcmZhY2UKd3hfQXVpX1Rh
Yl9BcnQgCQkJIyBBcnQgYW5kIG1ldHJpY3MgcHJvdmlkZXIgZm9yIGN1c3RvbWl6aW5nIHRoZSBu
b3RlYm9vayB1c2VyIGludGVyZmFjZQp3eF9EaWFsb2cgCQkJIyBCYXNlIGNsYXNzIGZvciBjb21t
b24gZGlhbG9ncwp3eF9Db2xvdXJfRGlhbG9nIAkJIyBDb2xvdXIgY2hvb3NlciBkaWFsb2cKd3hf
RGlyX0RpYWxvZyAJCQkjIERpcmVjdG9yeSBzZWxlY3RvciBkaWFsb2cKd3hfRmlsZV9EaWFsb2cg
CQkJIyBGaWxlIHNlbGVjdG9yIGRpYWxvZwp3eF9GaW5kX1JlcGxhY2VfRGlhbG9nIAkJIyBUZXh0
IHNlYXJjaC9yZXBsYWNlIGRpYWxvZwp3eF9Gb250X0RpYWxvZyAJCQkjIEZvbnQgY2hvb3NlciBk
aWFsb2cKd3hfTWVzc2FnZV9EaWFsb2cgCQkjIFNpbXBsZSBtZXNzYWdlIGJveCBkaWFsb2cKd3hf
TXVsdGlfQ2hvaWNlX0RpYWxvZyAJCSMgRGlhbG9nIHRvIGdldCBvbmUgb3IgbW9yZSBzZWxlY3Rp
b25zIGZyb20gYSBsaXN0Cnd4X1BhZ2VfU2V0dXBfRGlhbG9nIAkJIyBTdGFuZGFyZCBwYWdlIHNl
dHVwIGRpYWxvZwp3eF9QYXNzd29yZF9FbnRyeV9EaWFsb2cgCSMgRGlhbG9nIHRvIGdldCBhIHBh
c3N3b3JkIGZyb20gdGhlIHVzZXIKd3hfUHJpbnRfRGlhbG9nIAkJIyBTdGFuZGFyZCBwcmludCBk
aWFsb2cKd3hfUHJvZ3Jlc3NfRGlhbG9nIAkJIyBQcm9ncmVzcyBpbmRpY2F0aW9uIGRpYWxvZwp3
eF9SZWFycmFuZ2VfRGlhbG9nIAkJIyBEaWFsb2cgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcmVhcnJh
bmdlIGEgbGlzdCBvZiBpdGVtcy4Kd3hfUmljaF9UZXh0X0Zvcm1hdHRpbmdfRGlhbG9nCSMgQSBk
aWFsb2cgZm9yIGZvcm1hdHRpbmcgdGhlIGNvbnRlbnQgb2YgYSB3eF9SaWNoVGV4dEN0cmwKd3hf
UmljaF9NZXNzYWdlX0RpYWxvZyAJCSMgTmljZXIgbWVzc2FnZSBib3ggZGlhbG9nCnd4X1Npbmds
ZV9DaG9pY2VfRGlhbG9nIAkjIERpYWxvZyB0byBnZXQgYSBzaW5nbGUgc2VsZWN0aW9uIGZyb20g
YSBsaXN0IGFuZCByZXR1cm4gdGhlIHN0cmluZwp3eF9TeW1ib2xfUGlja2VyX0RpYWxvZyAJIyBT
eW1ib2wgc2VsZWN0b3IgZGlhbG9nCnd4X1RleHRfRW50cnlfRGlhbG9nIAkJIyBEaWFsb2cgdG8g
Z2V0IGEgc2luZ2xlIGxpbmUgb2YgdGV4dCBmcm9tIHRoZSB1c2VyCnd4X1dpemFyZCAJCQkjIEEg
d2l6YXJkIGRpYWxvZy4Kd3hfSHRtbF9IZWxwX0NvbnRyb2xsZXIJCSMgSFRNTCBoZWxwIGNvbnRy
b2xsZXIgY2xhc3MKd3hfSHRtbF9XaW5kb3cgCQkJIyBIVE1MIHdpbmRvdyBjbGFzcwp3eF9IdG1s
X0Vhc3lfUHJpbnRpbmcgCQkjIFNpbXBsZSBjbGFzcyBmb3IgcHJpbnRpbmcgSFRNTAp3eF9IdG1s
X1ByaW50b3V0IAkJIyBHZW5lcmljIEhUTUwgd3hfUHJpbnRvdXQgY2xhc3MKd3hfSHRtbF9QYXJz
ZXIgCQkJIyBHZW5lcmljIEhUTUwgcGFyc2VyIGNsYXNzCnd4X0h0bWxfVGFnX0hhbmRsZXIgCQkj
IEhUTUwgdGFnIGhhbmRsZXIsIHBsdWdpbmFibGUgaW50byB3eF9IdG1sUGFyc2VyCnd4X0h0bWxf
V2luX1BhcnNlciAJCSMgSFRNTCBwYXJzZXIgY2xhc3MgZm9yIHd4X0h0bWxXaW5kb3cKd3hfSHRt
bF9XaW5fVGFnX0hhbmRsZXIJCSMgSFRNTCB0YWcgaGFuZGxlciwgcGx1Z2luYWJsZSBpbnRvIHd4
X0h0bWxXaW5QYXJzZXIKd3hfQXV0b19CdWZmZXJlZF9QYWludF9EX0MJIyBBIGhlbHBlciBkZXZp
Y2UgY29udGV4dCBmb3IgZG91YmxlIGJ1ZmZlcmVkIGRyYXdpbmcgaW5zaWRlIE9uUGFpbnQoKS4K
d3hfQnVmZmVyZWRfRF9DIAkJIyBBIGhlbHBlciBkZXZpY2UgY29udGV4dCBmb3IgZG91YmxlIGJ1
ZmZlcmVkIGRyYXdpbmcuCnd4X0J1ZmZlcmVkX1BhaW50X0RfQyAJCSMgQSBoZWxwZXIgZGV2aWNl
IGNvbnRleHQgZm9yIGRvdWJsZSBidWZmZXJlZCBkcmF3aW5nIGluc2lkZSBPblBhaW50KCkuCnd4
X0NsaWVudF9EX0MgCQkJIyBBIGRldmljZSBjb250ZXh0IHRvIGFjY2VzcyB0aGUgY2xpZW50IGFy
ZWEgb3V0c2lkZSBPblBhaW50KCkgZXZlbnRzCnd4X1BhaW50X0RfQyAJCQkjIEEgZGV2aWNlIGNv
bnRleHQgdG8gYWNjZXNzIHRoZSBjbGllbnQgYXJlYSBpbnNpZGUgT25QYWludCgpIGV2ZW50cwp3
eF9XaW5kb3dfRF9DIAkJCSMgQSBkZXZpY2UgY29udGV4dCB0byBhY2Nlc3MgdGhlIG5vbi1jbGll
bnQgYXJlYQp3eF9TY3JlZW5fRF9DIAkJCSMgQSBkZXZpY2UgY29udGV4dCB0byBhY2Nlc3MgdGhl
IGVudGlyZSBzY3JlZW4Kd3hfRF9DIAkJCQkjIFRoZSBkZXZpY2UgY29udGV4dCBiYXNlIGNsYXNz
Cnd4X01lbW9yeV9EX0MgCQkJIyBBIGRldmljZSBjb250ZXh0IGZvciBkcmF3aW5nIGludG8gYml0
bWFwcwp3eF9NZXRhZmlsZV9EX0MgCQkjIEEgZGV2aWNlIGNvbnRleHQgZm9yIGRyYXdpbmcgaW50
byBtZXRhZmlsZXMKd3hfTWlycm9yX0RfQyAJCQkjIEEgcHJveHkgZGV2aWNlIGNvbnRleHQgYWxs
b3dpbmcgZm9yIHNpbXBsZSBtaXJyb3JpbmcuCnd4X1Bvc3RfU2NyaXB0X0RfQyAJCSMgQSBkZXZp
Y2UgY29udGV4dCBmb3IgZHJhd2luZyBpbnRvIFBvc3RTY3JpcHQgZmlsZXMKd3hfUHJpbnRlcl9E
X0MgCQkJIyBBIGRldmljZSBjb250ZXh0IGZvciBkcmF3aW5nIHRvIHByaW50ZXJzCnd4X0dyYXBo
aWNzX1JlbmRlcmVyIAkJIyBSZXByZXNlbnRzIGEgZHJhd2luZyBlbmdpbmUuCnd4X0dyYXBoaWNz
X0NvbnRleHQgCQkjIFJlcHJlc2VudHMgYSBncmFwaGljcyBjb250ZXh0IGN1cnJlbnRseSBiZWlu
ZyBkcmF3biBvbi4Kd3hfR3JhcGhpY3NfQnJ1c2ggCQkjIEJydXNoIGZvciBkcmF3aW5nIGludG8g
YSB3eF9HcmFwaGljc0NvbnRleHQKd3hfR3JhcGhpY3NfUGVuIAkJIyBQZW4gZm9yIGRyYXdpbmcg
aW50byBhIHd4X0dyYXBoaWNzQ29udGV4dAp3eF9HcmFwaGljc19Gb250IAkJIyBGb250IGZvciBk
cmF3aW5nIHRleHQgb24gYSB3eF9HcmFwaGljc0NvbnRleHQKd3hfR3JhcGhpY3NfTWF0cml4IAkJ
IyBSZXByZXNlbnRzIGFuIGFmZmluZSBtYXRyaXggZm9yIGRyYXdpbmcgdHJhbnNmb3JtYXRpb24K
d3hfR3JhcGhpY3NfUGF0aCAJCSMgUmVwcmVzZW50cyBhIHBhdGggZm9yIGRyYXdpbmcKd3hfQ29s
b3VyIAkJCSMgUmVwcmVzZW50cyB0aGUgcmVkLCBibHVlIGFuZCBncmVlbiBlbGVtZW50cyBvZiBh
IGNvbG91cgp3eF9EX0NfQ2xpcHBlciAJCQkjIFdyYXBzIHRoZSBvcGVyYXRpb25zIG9mIHNldHRp
bmcgYW5kIGRlc3Ryb3lpbmcgdGhlIGNsaXBwaW5nIHJlZ2lvbgp3eF9CcnVzaCAJCQkjIFVzZWQg
Zm9yIGZpbGxpbmcgYXJlYXMgb24gYSBkZXZpY2UgY29udGV4dAp3eF9CcnVzaF9MaXN0IAkJCSMg
VGhlIGxpc3Qgb2YgcHJldmlvdXNseS1jcmVhdGVkIGJydXNoZXMKd3hfRm9udCAJCQkjIFJlcHJl
c2VudHMgZm9udHMKd3hfRm9udF9MaXN0IAkJCSMgVGhlIGxpc3Qgb2YgcHJldmlvdXNseS1jcmVh
dGVkIGZvbnRzCnd4X1BlbiAJCQkJIyBVc2VkIGZvciBkcmF3aW5nIGxpbmVzIG9uIGEgZGV2aWNl
IGNvbnRleHQKd3hfUGVuX0xpc3QgCQkJIyBUaGUgbGlzdCBvZiBwcmV2aW91c2x5LWNyZWF0ZWQg
cGVucwp3eF9QYWxldHRlIAkJCSMgUmVwcmVzZW50cyBhIHRhYmxlIG9mIGluZGljZXMgaW50byBS
R0IgdmFsdWVzCnd4X1JlZ2lvbiAJCQkjIFJlcHJlc2VudHMgYSBzaW1wbGUgb3IgY29tcGxleCBy
ZWdpb24gb24gYSB3aW5kb3cgb3IgZGV2aWNlIGNvbnRleHQKd3hfUmVuZGVyZXJfTmF0aXZlIAkJ
IyBBYnN0cmFjdHMgaGlnaC1sZXZlbCBkcmF3aW5nIHByaW1pdGl2ZXMKd3hfQW5pbWF0aW9uIAkJ
CSMgUmVwcmVzZW50cyBhbiBhbmltYXRpb24Kd3hfQml0bWFwIAkJCSMgUmVwcmVzZW50cyBhIHBs
YXRmb3JtIGRlcGVuZGVudCBiaXRtYXAKd3hfQml0bWFwX0hhbmRsZXIgCQkjIENsYXNzIGZvciBs
b2FkaW5nIGEgc2F2aW5nIGEgd3hfQml0bWFwIGluIGEgc3BlY2lmaWMgZm9ybWF0Cnd4X0N1cnNv
ciAJCQkjIEEgc21hbGwsIHRyYW5zcGFyZW50IGJpdG1hcCByZXByZXNlbnRpbmcgdGhlIGN1cnNv
cgp3eF9JY29uIAkJCSMgQSBzbWFsbCwgdHJhbnNwYXJlbnQgYml0bWFwIGZvciBhc3NpZ25pbmcg
dG8gZnJhbWVzIGFuZCBkcmF3aW5nIG9uIGRldmljZSBjb250ZXh0cwp3eF9JbWFnZSAJCQkjIEEg
cGxhdGZvcm0taW5kZXBlbmRlbnQgaW1hZ2UgY2xhc3MKd3hfSW1hZ2VfSGFuZGxlciAJCSMgQ2xh
c3MgZm9yIGxvYWRpbmcgYSBzYXZpbmcgYSB3eF9JbWFnZSBpbiBhIHNwZWNpZmljIGZvcm1hdAp3
eF9JbWFnZV9MaXN0IAkJCSMgQSBsaXN0IG9mIGltYWdlcywgdXNlZCB3aXRoIHNvbWUgY29udHJv
bHMKd3hfTWFzayAJCQkjIFJlcHJlc2VudHMgYSBtYXNrIHRvIGJlIHVzZWQgd2l0aCBhIGJpdG1h
cCBmb3IgdHJhbnNwYXJlbnQgZHJhd2luZwp3eF9QaXhlbF9EYXRhIAkJCSMgQ2xhc3MgdGVtcGxh
dGUgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gd3hfQml0bWFwJ3MgYW5kIHd4X0ltYWdlJ3MgaW50ZXJu
YWwgZGF0YQp3eF9BcHAgCQkJCSMgQXBwbGljYXRpb24gY2xhc3MKd3hfQ21kX0xpbmVfUGFyc2Vy
IAkJIyBDb21tYW5kIGxpbmUgcGFyc2VyIGNsYXNzCnd4X0R5bmFtaWNfTGlicmFyeSAJCSMgQ2xh
c3MgdG8gd29yayB3aXRoIHNoYXJlZCBsaWJyYXJpZXMuCnd4X1Byb2Nlc3MgCQkJIyBQcm9jZXNz
IGNsYXNzCnd4X1ByZXZpZXdfRnJhbWUgCQkjIEZyYW1lIGZvciBkaXNwbGF5aW5nIGEgcHJpbnQg
cHJldmlldwp3eF9QcmV2aWV3X0NhbnZhcyAJCSMgQ2FudmFzIGZvciBkaXNwbGF5aW5nIGEgcHJp
bnQgcHJldmlldwp3eF9QcmV2aWV3X0NvbnRyb2xfQmFyIAkJIyBTdGFuZGFyZCBjb250cm9sIGJh
ciBmb3IgYSBwcmludCBwcmV2aWV3Cnd4X1BhZ2VfU2V0dXBfRGlhbG9nIAkJIyBTdGFuZGFyZCBw
YWdlIHNldHVwIGRpYWxvZwp3eF9QcmludGVyIAkJCSMgQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBw
cmludGVyCnd4X1ByaW50b3V0IAkJCSMgQ2xhc3MgcmVwcmVzZW50aW5nIGEgcGFydGljdWxhciBw
cmludG91dAp3eF9QcmludF9QcmV2aWV3IAkJIyBDbGFzcyByZXByZXNlbnRpbmcgYSBwcmludCBw
cmV2aWV3Cnd4X1ByaW50X0RhdGEgCQkJIyBSZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBkb2N1bWVudCBiZWluZyBwcmludGVkCnd4X1ByaW50X0RpYWxvZ19EYXRhIAkJIyBSZXByZXNl
bnRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmludCBkaWFsb2cKd3hfUGFnZV9TZXR1cF9EaWFs
b2dfRGF0YQkjIFJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhZ2Ugc2V0dXAgZGlh
bG9nCnd4X0NvbW1hbmQgCQkJIyBCYXNlIGNsYXNzIGZvciB1bmRvL3JlZG8gYWN0aW9ucwp3eF9D
b21tYW5kX1Byb2Nlc3NvciAJCSMgTWFpbnRhaW5zIHRoZSB1bmRvL3JlZG8gc3RhY2sKd3hfRG9j
dW1lbnQgCQkJIyBSZXByZXNlbnRzIGEgZG9jdW1lbnQKd3hfVmlldyAJCQkjIFJlcHJlc2VudHMg
YSB2aWV3Cnd4X0RvY19UZW1wbGF0ZQkJCSMgTWFuYWdlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdl
ZW4gYSBkb2N1bWVudCBjbGFzcyBhbmQgYSB2aWV3IGNsYXNzCnd4X0RvY19NYW5hZ2VyIAkJCSMg
TWFuYWdlcyB0aGUgZG9jdW1lbnRzIGFuZCB2aWV3cyBpbiBhbiBhcHBsaWNhdGlvbgp3eF9Eb2Nf
Q2hpbGRfRnJhbWUgCQkjIEEgY2hpbGQgZnJhbWUgZm9yIHNob3dpbmcgYSBkb2N1bWVudCB2aWV3
Cnd4X0RvY19QYXJlbnRfRnJhbWUgCQkjIEEgcGFyZW50IGZyYW1lIHRvIGNvbnRhaW4gdmlld3MK
d3hfRG9jX01fRF9JX0NoaWxkX0ZyYW1lIAkjIEFuIE1ESSBjaGlsZCBmcmFtZSBmb3Igc2hvd2lu
ZyBhIGRvY3VtZW50IHZpZXcKd3hfRG9jX01fRF9JX1BhcmVudF9GcmFtZQkjIEFuIE1ESSBwYXJl
bnQgZnJhbWUgdG8gY29udGFpbiB2aWV3cwp3eF9GaWxlX0hpc3RvcnkgCQkjIE1haW50YWlucyBh
IGxpc3Qgb2YgdGhlIG1vc3QgcmVjZW50bHkgdmlzaXRlZCBmaWxlcwp3eF9EYXRhX09iamVjdCAJ
CQkjIERhdGEgb2JqZWN0IGNsYXNzCnd4X0RhdGFfRm9ybWF0IAkJCSMgUmVwcmVzZW50cyBhIGRh
dGEgZm9ybWF0Cnd4X1RleHRfRGF0YV9PYmplY3QgCQkjIFRleHQgZGF0YSBvYmplY3QgY2xhc3MK
d3hfRmlsZV9EYXRhX09iamVjdCAJCSMgRmlsZSBkYXRhIG9iamVjdCBjbGFzcwp3eF9CaXRtYXBf
RGF0YV9PYmplY3QgCQkjIEJpdG1hcCBkYXRhIG9iamVjdCBjbGFzcwp3eF9VX1JfTF9EYXRhX09i
amVjdCAJCSMgVVJMIGRhdGEgb2JqZWN0IGNsYXNzCnd4X0N1c3RvbV9EYXRhX09iamVjdCAJCSMg
Q3VzdG9tIGRhdGEgb2JqZWN0IGNsYXNzCnd4X0NsaXBib2FyZCAJCQkjIENsaXBib2FyZCBjbGFz
cwp3eF9Ecm9wX1RhcmdldCAJCQkjIERyb3AgdGFyZ2V0IGNsYXNzCnd4X0ZpbGVfRHJvcF9UYXJn
ZXQgCQkjIEZpbGUgZHJvcCB0YXJnZXQgY2xhc3MKd3hfVGV4dF9Ecm9wX1RhcmdldCAJCSMgVGV4
dCBkcm9wIHRhcmdldCBjbGFzcwp3eF9Ecm9wX1NvdXJjZSAJCQkjIERyb3Agc291cmNlIGNsYXNz
Cnd4X0ZfU19GaWxlIAkJCSMgUmVwcmVzZW50cyBhIGZpbGUgaW4gdGhlIHZpcnR1YWwgZmlsZSBz
eXN0ZW0Kd3hfRmlsZV9TeXN0ZW0gCQkJIyBNYWluIGludGVyZmFjZSBmb3IgdGhlIHZpcnR1YWwg
ZmlsZSBzeXN0ZW0Kd3hfRmlsZV9TeXN0ZW1fSGFuZGxlciAJCSMgQ2xhc3MgdXNlZCB0byBhbm5v
dW5jZSBmaWxlIHN5c3RlbSB0eXBlCnd4X1RocmVhZCAJCQkjIFRocmVhZCBjbGFzcwp3eF9UaHJl
YWRfSGVscGVyIAkJIyBNYW5hZ2VzIGJhY2tncm91bmQgdGhyZWFkcyBlYXNpbHkKd3hfTXV0ZXgg
CQkJIyBNdXRleCBjbGFzcwp3eF9NdXRleF9Mb2NrZXIJCQkjIE11dGV4IGxvY2tlciB1dGlsaXR5
IGNsYXNzCnd4X0NyaXRpY2FsX1NlY3Rpb24gCQkjIENyaXRpY2FsIHNlY3Rpb24gY2xhc3MKd3hf
Q3JpdGljYWxfU2VjdGlvbl9Mb2NrZXIgCSMgQ3JpdGljYWwgc2VjdGlvbiBsb2NrZXIgdXRpbGl0
eSBjbGFzcwp3eF9Db25kaXRpb24gCQkJIyBDb25kaXRpb24gY2xhc3MKd3hfU2VtYXBob3JlIAkJ
CSMgU2VtYXBob3JlIGNsYXNzCnd4X0xvZyAJCQkJIyBUaGUgYmFzZSBsb2cgY2xhc3MKd3hfTG9n
X1N0ZGVyciAJCQkjIExvZyBtZXNzYWdlcyB0byBhIEMgU1RESU8gc3RyZWFtCnd4X0xvZ19TdHJl
YW0gCQkJIyBMb2cgbWVzc2FnZXMgdG8gYSBDKysgaW9zdHJlYW0Kd3hfTG9nX1RleHRfQ3RybCAJ
CSMgTG9nIG1lc3NhZ2VzIHRvIGEgd3hfVGV4dEN0cmwKd3hfTG9nX1dpbmRvdyAJCQkjIExvZyBt
ZXNzYWdlcyB0byBhIGxvZyBmcmFtZQp3eF9Mb2dfR3VpIAkJCSMgRGVmYXVsdCBsb2cgdGFyZ2V0
IGZvciBHVUkgcHJvZ3JhbXMKd3hfTG9nX051bGwgCQkJIyBUZW1wb3JhcmlseSBzdXBwcmVzcyBt
ZXNzYWdlIGxvZ2dpbmcKd3hfTG9nX0NoYWluIAkJCSMgQWxsb3dzIHRvIGNoYWluIHR3byBsb2cg
dGFyZ2V0cwp3eF9Mb2dfSW50ZXJwb3NlciAJCSMgQWxsb3dzIHRvIGZpbHRlciB0aGUgbG9nIG1l
c3NhZ2VzCnd4X0xvZ19JbnRlcnBvc2VyX1RlbXAgCQkjIEFsbG93cyB0byBmaWx0ZXIgdGhlIGxv
ZyBtZXNzYWdlcwp3eF9TdHJlYW1fVG9fVGV4dF9SZWRpcmVjdG9yCSMgQWxsb3dzIHRvIHJlZGly
ZWN0IG91dHB1dCBzZW50IHRvIGNvdXQgdG8gYSB3eF9UZXh0Q3RybAp3eF9GaWxlX05hbWUgCQkJ
IyBPcGVyYXRpb25zIHdpdGggdGhlIGZpbGUgbmFtZSBhbmQgYXR0cmlidXRlcwp3eF9EaXIgCQkJ
CSMgQ2xhc3MgZm9yIGVudW1lcmF0aW5nIGZpbGVzL3N1YmRpcmVjdG9yaWVzLgp3eF9EaXJfVHJh
dmVyc2VyIAkJIyBDbGFzcyB1c2VkIHRvZ2V0aGVyIHdpdGggd3hfRGlyIGZvciByZWN1cnNpdmVs
eSBlbnVtZXJhdGluZyB0aGUgZmlsZXMvc3ViZGlyZWN0b3JpZXMKd3hfRmlsZSAJCQkjIExvdy1s
ZXZlbCBmaWxlIGlucHV0L291dHB1dCBjbGFzcy4Kd3hfRl9GaWxlIAkJCSMgQW5vdGhlciBsb3ct
bGV2ZWwgZmlsZSBpbnB1dC9vdXRwdXQgY2xhc3MuCnd4X1RlbXBfRmlsZSAJCQkjIENsYXNzIHRv
IHNhZmVseSByZXBsYWNlIGFuIGV4aXN0aW5nIGZpbGUKd3hfVGV4dF9GaWxlIAkJCSMgQ2xhc3Mg
Zm9yIHdvcmtpbmcgd2l0aCB0ZXh0IGZpbGVzIGFzIHdpdGggYXJyYXlzIG9mIGxpbmVzCnd4X1N0
YW5kYXJkX1BhdGhzIAkJIyBQYXRocyBmb3Igc3RhbmRhcmQgZGlyZWN0b3JpZXMKd3hfUGF0aF9M
aXN0IAkJCSMgQSBjbGFzcyB0byBoZWxwIHNlYXJjaCBtdWx0aXBsZSBwYXRocwp3eF9GaWxlX1N5
c3RlbV9XYXRjaGVyIAkJIyBDbGFzcyBwcm92aWRpbmcgbm90aWZpY2F0aW9ucyBvZiBmaWxlIHN5
c3RlbSBjaGFuZ2VzCnd4X1N0cmVhbV9CYXNlIAkJCSMgU3RyZWFtIGJhc2UgY2xhc3MKd3hfU3Ry
ZWFtX0J1ZmZlciAJCSMgU3RyZWFtIGJ1ZmZlciBjbGFzcwp3eF9JbnB1dF9TdHJlYW0gCQkjIElu
cHV0IHN0cmVhbSBjbGFzcwp3eF9PdXRwdXRfU3RyZWFtIAkJIyBPdXRwdXQgc3RyZWFtIGNsYXNz
Cnd4X0NvdW50aW5nX091dHB1dF9TdHJlYW0gCSMgU3RyZWFtIGNsYXNzIGZvciBxdWVyeWluZyB3
aGF0IHNpemUgYSBzdHJlYW0gd291bGQgaGF2ZS4Kd3hfRmlsdGVyX0lucHV0X1N0cmVhbSAJCSMg
RmlsdGVyZWQgaW5wdXQgc3RyZWFtIGNsYXNzCnd4X0ZpbHRlcl9PdXRwdXRfU3RyZWFtIAkjIEZp
bHRlcmVkIG91dHB1dCBzdHJlYW0gY2xhc3MKd3hfQnVmZmVyZWRfSW5wdXRfU3RyZWFtCSMgQnVm
ZmVyZWQgaW5wdXQgc3RyZWFtIGNsYXNzCnd4X0J1ZmZlcmVkX091dHB1dF9TdHJlYW0gCSMgQnVm
ZmVyZWQgb3V0cHV0IHN0cmVhbSBjbGFzcwp3eF9NZW1vcnlfSW5wdXRfU3RyZWFtIAkJIyBNZW1v
cnkgaW5wdXQgc3RyZWFtIGNsYXNzCnd4X01lbW9yeV9PdXRwdXRfU3RyZWFtIAkjIE1lbW9yeSBv
dXRwdXQgc3RyZWFtIGNsYXNzCnd4X0RhdGFfSW5wdXRfU3RyZWFtIAkJIyBQbGF0Zm9ybS1pbmRl
cGVuZGVudCBiaW5hcnkgZGF0YSBpbnB1dCBzdHJlYW0gY2xhc3MKd3hfRGF0YV9PdXRwdXRfU3Ry
ZWFtIAkJIyBQbGF0Zm9ybS1pbmRlcGVuZGVudCBiaW5hcnkgZGF0YSBvdXRwdXQgc3RyZWFtIGNs
YXNzCnd4X1RleHRfSW5wdXRfU3RyZWFtIAkJIyBQbGF0Zm9ybS1pbmRlcGVuZGVudCB0ZXh0IGRh
dGEgaW5wdXQgc3RyZWFtIGNsYXNzCnd4X1RleHRfT3V0cHV0X1N0cmVhbSAJCSMgUGxhdGZvcm0t
aW5kZXBlbmRlbnQgdGV4dCBkYXRhIG91dHB1dCBzdHJlYW0gY2xhc3MKd3hfRmlsZV9JbnB1dF9T
dHJlYW0gCQkjIEZpbGUgaW5wdXQgc3RyZWFtIGNsYXNzCnd4X0ZpbGVfT3V0cHV0X1N0cmVhbSAJ
CSMgRmlsZSBvdXRwdXQgc3RyZWFtIGNsYXNzCnd4X0ZfRmlsZV9JbnB1dF9TdHJlYW0gCQkjIEFu
b3RoZXIgZmlsZSBpbnB1dCBzdHJlYW0gY2xhc3MKd3hfRl9GaWxlX091dHB1dF9TdHJlYW0gCSMg
QW5vdGhlciBmaWxlIG91dHB1dCBzdHJlYW0gY2xhc3MKd3hfVGVtcF9GaWxlX091dHB1dF9TdHJl
YW0gCSMgU3RyZWFtIHRvIHNhZmVseSByZXBsYWNlIGFuIGV4aXN0aW5nIGZpbGUKd3hfU3RyaW5n
X0lucHV0X1N0cmVhbSAJCSMgU3RyaW5nIGlucHV0IHN0cmVhbSBjbGFzcwp3eF9TdHJpbmdfT3V0
cHV0X1N0cmVhbQkJIyBTdHJpbmcgb3V0cHV0IHN0cmVhbSBjbGFzcwp3eF9abGliX0lucHV0X1N0
cmVhbSAJCSMgWmxpYiBhbmQgZ3ppcCAoY29tcHJlc3Npb24pIGlucHV0IHN0cmVhbSBjbGFzcwp3
eF9abGliX091dHB1dF9TdHJlYW0gCQkjIFpsaWIgYW5kIGd6aXAgKGNvbXByZXNzaW9uKSBvdXRw
dXQgc3RyZWFtIGNsYXNzCnd4X1ppcF9JbnB1dF9TdHJlYW0gCQkjIElucHV0IHN0cmVhbSBmb3Ig
cmVhZGluZyBmcm9tIFpJUCBhcmNoaXZlcwp3eF9aaXBfT3V0cHV0X1N0cmVhbSAJCSMgT3V0cHV0
IHN0cmVhbSBmb3Igd3JpdGluZyBmcm9tIFpJUCBhcmNoaXZlcwp3eF9UYXJfSW5wdXRfU3RyZWFt
IAkJIyBJbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgZnJvbSB0YXIgYXJjaGl2ZXMKd3hfVGFyX091
dHB1dF9TdHJlYW0gCQkjIE91dHB1dCBzdHJlYW0gZm9yIHdyaXRpbmcgZnJvbSB0YXIgYXJjaGl2
ZXMKd3hfU29ja2V0X0lucHV0X1N0cmVhbSAJCSMgU29ja2V0IGlucHV0IHN0cmVhbSBjbGFzcwp3
eF9Tb2NrZXRfT3V0cHV0X1N0cmVhbQkJIyBTb2NrZXQgb3V0cHV0IHN0cmVhbSBjbGFzcwp3eF9Y
bWxfRG9jdW1lbnQJCQkjIEEgY2xhc3MgdG8gcGFyc2UgWE1MIGZpbGVzCnd4X1htbF9Ob2RlIAkJ
CSMgQSBjbGFzcyB3aGljaCByZXByZXNlbnRzIFhNTCBub2Rlcwp3eF9YbWxfQXR0cmlidXRlIAkJ
IyBBIGNsYXNzIHdoaWNoIHJlcHJlc2VudCBhbiBYTUwgYXR0cmlidXRlCnd4X1htbF9SZXNvdXJj
ZQkJCSMgVGhlIG1haW4gY2xhc3MgZm9yIHdvcmtpbmcgd2l0aCByZXNvdXJjZXMKd3hfWG1sX1Jl
c291cmNlX0hhbmRsZXIJCSMgVGhlIGJhc2UgY2xhc3MgZm9yIFhNTCByZXNvdXJjZSBoYW5kbGVy
cwp3eF9EaWFsX1VwX01hbmFnZXIgCQkjIFByb3ZpZGVzIGZ1bmN0aW9ucyB0byBjaGVjayB0aGUg
c3RhdHVzIG9mIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgdG8gZXN0YWJsaXNoIG9uZQp3eF9JX1Bf
VjRhZGRyZXNzIAkJIyBSZXByZXNlbnRzIGFuIEludGVybmV0IGFkZHJlc3MKd3hfSV9QYWRkcmVz
cyAJCQkjIFJlcHJlc2VudHMgYW4gSW50ZXJuZXQgYWRkcmVzcwp3eF9Tb2NrZXRfQmFzZSAJCQkj
IFJlcHJlc2VudHMgYSBzb2NrZXQgYmFzZSBvYmplY3QKd3hfU29ja2V0X0NsaWVudCAJCSMgUmVw
cmVzZW50cyBhIHNvY2tldCBjbGllbnQKd3hfU29ja2V0X1NlcnZlciAJCSMgUmVwcmVzZW50cyBh
IHNvY2tldCBzZXJ2ZXIKd3hfRl9UX1AgCQkJIyBGVFAgcHJvdG9jb2wgY2xhc3MKd3hfSF9UX1Rf
UCAJCQkjIEhUVFAgcHJvdG9jb2wgY2xhc3MKd3hfVV9SX0wgCQkJIyBSZXByZXNlbnRzIGEgVW5p
dmVyc2FsIFJlc291cmNlIExvY2F0b3IKd3hfQ2xpZW50CQkJIyBSZXByZXNlbnRzIGEgQ2xpZW50
Cnd4X0RfRF9FX0NsaWVudCAJICAgICAgICAjIFJlcHJlc2VudHMgYSBjbGllbnQKd3hfQ29ubmVj
dGlvbgkJCSMgUmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIGEgY2xpZW50IGFuZCBh
IHNlcnZlcgp3eF9EX0RfRV9Db25uZWN0aW9uIAkJIyBSZXByZXNlbnRzIHRoZSBjb25uZWN0aW9u
IGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyCnd4X1NlcnZlcgkJCSMgUmVwcmVzZW50cyBh
IHNlcnZlcgp3eF9EX0RfRV9TZXJ2ZXIgICAgICAgIAkJIyBSZXByZXNlbnRzIGEgc2VydmVyCnd4
X0hlbHBfQ29udHJvbGxlciAJCSMgRmFtaWx5IG9mIGNsYXNzZXMgZm9yIGNvbnRyb2xsaW5nIGhl
bHAgd2luZG93cwp3eF9IdG1sX0hlbHBfQ29udHJvbGxlciAJIyBIVE1MIGhlbHAgY29udHJvbGxl
ciBjbGFzcwp3eF9Db250ZXh0X0hlbHAgCQkjIENsYXNzIHRvIHB1dCBhcHBsaWNhdGlvbiBpbnRv
IGNvbnRleHQtc2Vuc2l0aXZlIGhlbHAgbW9kZQp3eF9Db250ZXh0X0hlbHBfQnV0dG9uIAkJIyBC
dXR0b24gY2xhc3MgZm9yIHB1dHRpbmcgYXBwbGljYXRpb24gaW50byBjb250ZXh0LXNlbnNpdGl2
ZSBoZWxwIG1vZGUKd3hfSGVscF9Qcm92aWRlciAJCSMgQWJzdHJhY3QgY2xhc3MgZm9yIGNvbnRl
eHQtc2Vuc2l0aXZlIGhlbHAgcHJvdmlzaW9uCnd4X1NpbXBsZV9IZWxwX1Byb3ZpZGVyIAkjIENs
YXNzIGZvciBzaW1wbGUgY29udGV4dC1zZW5zaXRpdmUgaGVscCBwcm92aXNpb24Kd3hfSGVscF9D
b250cm9sbGVyX0hlbHBfUHJvdmlkZXIjIENsYXNzIGZvciBjb250ZXh0LXNlbnNpdGl2ZSBoZWxw
IHByb3Zpc2lvbiB2aWEgYSBoZWxwIGNvbnRyb2xsZXIKd3hfVG9vbF9UaXAgCQkJIyBDbGFzcyBp
bXBsZW1lbnRpbmcgdG9vbHRpcHMKd3hfTWVkaWFfQ3RybCAJCQkjIERpc3BsYXkgbXVsdGltZWRp
YSBjb250ZW50cy4Kd3hfR19MX0NhbnZhcyAJCQkjIENhbnZhcyB0aGF0IHlvdSBjYW4gcmVuZGVy
IE9wZW5HTCBjYWxscyB0by4Kd3hfR0xfQ29udGV4dCAJCQkjQ2xhc3MgdG8gZWFzZSBzaGFyaW5n
IG9mIE9wZW5HTCBkYXRhIHJlc291cmNlcy4K
--089e01228d6cb32e1a052a6c873c--
0
jmlynesjr
1/28/2016 10:35:04 PM
perl.wxperl.users 3070 articles. 0 followers. Follow

6 Replies
373 Views

Similar Articles

[PageSpeed] 13

Oh, now *that* is *nice*.

I've been thinking that autoconverting the wxWidgets into wxPerl
documentation should really not be all that difficult, but I've had a
lot of family stuff going on this last couple of weeks. Hopefully in the
week to come I'm going to have a little more time to explore that.

Michael

On 2016-01-28 23:35, James Lynes wrote:
> Ron, Steve, et. al.:
>
> I got to thinking a few days ago about how we could leverage the great
> mass of documentation already produced by the wxWidgets folks,
> especially the member function/method documentation for each widget.
>
> So, I threw together a proof of concept script(attached) for a wxPerl
> Documentation Viewer. Download the wxWidgets html documentation(33mb)
> and the attached files and give it a try. Obviously a lot more could
> be added to this script and several hundred use case files would need
> to be created(and downloaded), but that's a smaller effort than
> recreating all the method documentation.
>
> What say ye? If nothing else, it's another good example program. LOL.
>
> James
>


0
michael
1/28/2016 10:49:48 PM
--B_3536953222_76140355
Content-type: text/plain;
	charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable

Hi James,

Brilliant concept and a huge effort on your part. Did you intend to attach
the file =B3Dummy.usc=B2?

My slight worry is that because you=B9re drawing on WxWidgets documentation,
we would need some sort of validation mechanism that ensures that any
particular class or method does in fact exist in Wx.

Fantastic effort =AD thank you.

Cheers,
Ron.

On 29/01/16 6:35 AM, "James Lynes" <jmlynesjr@gmail.com> wrote:

> Ron, Steve, et. al.:
>=20
> I got to thinking a few days ago about how we could leverage the great ma=
ss of
> documentation already produced by the wxWidgets folks, especially the mem=
ber
> function/method documentation for each widget.
>=20
> So, I threw together a proof of concept script(attached) for a wxPerl
> Documentation Viewer. Download the wxWidgets html documentation(33mb) and=
 the
> attached files and give it a try. Obviously a lot more could be added to =
this
> script and several hundred use case files would need to be created(and
> downloaded), but that's a smaller effort than recreating all the method
> documentation.
>=20
> What say ye? If nothing else, it's another good example program. LOL.
>=20
> James
>=20
>=20


--B_3536953222_76140355
Content-type: text/html;
	charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable

<HTML>
<HEAD>
<TITLE>Re: wxPerl Documentation Viewer Prototype</TITLE>
</HEAD>
<BODY>
<FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-size:12pt'>Hi James,<BR>
<BR>
Brilliant concept and a huge effort on your part. Did you intend to attach =
the file &#8220;Dummy.usc&#8221;?<BR>
<BR>
My slight worry is that because you&#8217;re drawing on WxWidgets documenta=
tion, we would need some sort of validation mechanism that ensures that any =
particular class or method does in fact exist in Wx.<BR>
<BR>
Fantastic effort &#8211; thank you.<BR>
<BR>
Cheers,<BR>
Ron.<BR>
<BR>
On 29/01/16 6:35 AM, &quot;James Lynes&quot; &lt;<a href=3D"jmlynesjr@gmail.c=
om">jmlynesjr@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-siz=
e:12pt'>Ron, Steve, et. al.:<BR>
<BR>
I got to thinking a few days ago about how we could leverage the great mass=
 of documentation already produced by the wxWidgets folks, especially the me=
mber function/method documentation for each widget.<BR>
<BR>
So, I threw together a proof of concept script(attached) for a wxPerl Docum=
entation Viewer. Download the wxWidgets html documentation(33mb) and the att=
ached files and give it a try. Obviously a lot more could be added to this s=
cript and several hundred use case files would need to be created(and downlo=
aded), but that's a smaller effort than recreating all the method documentat=
ion.<BR>
<BR>
What say ye? If nothing else, it's another good example program. LOL.<BR>
<BR>
James<BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE>
</BODY>
</HTML>


--B_3536953222_76140355--


0
rongrw
1/29/2016 3:00:17 PM
--------------010202060502050202060903
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: 8bit



On 2016-01-29 16:00, Ron Grunwald wrote:
> Re: wxPerl Documentation Viewer Prototype Hi James,
>
> Brilliant concept and a huge effort on your part. Did you intend to
> attach the file �Dummy.usc�?
>
> My slight worry is that because you�re drawing on WxWidgets
> documentation, we would need some sort of validation mechanism that
> ensures that any particular class or method does in fact exist in Wx.
I will be doing that this coming week. The documentation issue has
always driven me crazy.

Michael

--------------010202060502050202060903
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="moz-cite-prefix">On 2016-01-29 16:00, Ron Grunwald
      wrote:<br>
    </div>
    <blockquote cite="mid:D2D19F81.1874%25rongrw@yahoo.com.au"
      type="cite">
      <title>Re: wxPerl Documentation Viewer Prototype</title>
      <font face="Helvetica Neue"><span style="font-size:12pt">Hi James,<br>
          <br>
          Brilliant concept and a huge effort on your part. Did you
          intend to attach the file �Dummy.usc�?<br>
          <br>
          My slight worry is that because you�re drawing on WxWidgets
          documentation, we would need some sort of validation mechanism
          that ensures that any particular class or method does in fact
          exist in Wx.<br>
        </span></font></blockquote>
    I will be doing that this coming week. The documentation issue has
    always driven me crazy.<br>
    <br>
    Michael<br>
  </body>
</html>

--------------010202060502050202060903--

0
michael
1/29/2016 3:46:45 PM
--089e0112c270f3e175052a7ed8bc
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Ron:

Yes, I meant to include Dummy.usc(contains a wxRadioBox use case) so there
would be something to display in the use case box.

We will need to cross check the wxWidgets against the wxPerl widgets and
adjust the ListBox accordingly. And generate a use case for each wxPerl
Widget. I can steal a fair number of them from my wxBook Examples(with
learning curve applied since their creation date).

James


On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald <rongrw@yahoo.com.au> wrote:

> Hi James,
>
> Brilliant concept and a huge effort on your part. Did you intend to attac=
h
> the file =E2=80=9CDummy.usc=E2=80=9D?
>
> My slight worry is that because you=E2=80=99re drawing on WxWidgets docum=
entation,
> we would need some sort of validation mechanism that ensures that any
> particular class or method does in fact exist in Wx.
>
> Fantastic effort =E2=80=93 thank you.
>
> Cheers,
> Ron.
>
>
> On 29/01/16 6:35 AM, "James Lynes" <jmlynesjr@gmail.com> wrote:
>
> Ron, Steve, et. al.:
>
> I got to thinking a few days ago about how we could leverage the great
> mass of documentation already produced by the wxWidgets folks, especially
> the member function/method documentation for each widget.
>
> So, I threw together a proof of concept script(attached) for a wxPerl
> Documentation Viewer. Download the wxWidgets html documentation(33mb) and
> the attached files and give it a try. Obviously a lot more could be added
> to this script and several hundred use case files would need to be
> created(and downloaded), but that's a smaller effort than recreating all
> the method documentation.
>
> What say ye? If nothing else, it's another good example program. LOL.
>
> James
>
>
>

--089e0112c270f3e175052a7ed8bc
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div>Ron:<br><br></div>Yes, I meant to include D=
ummy.usc(contains a wxRadioBox use case) so there would be something to dis=
play in the use case box.<br><br></div>We will need to cross check the wxWi=
dgets against the wxPerl widgets and adjust the ListBox accordingly. And ge=
nerate a use case for each wxPerl Widget. I can steal a fair number of them=
 from my wxBook Examples(with learning curve applied since their creation d=
ate).<br><br></div>James<br><br></div><div class=3D"gmail_extra"><br><div c=
lass=3D"gmail_quote">On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald <span d=
ir=3D"ltr">&lt;<a href=3D"mailto:rongrw@yahoo.com.au" target=3D"_blank">ron=
grw@yahoo.com.au</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote"=
 style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<font face=3D"Helvetica Neue"><span style=3D"font-size:12pt">Hi James,<br>
<br>
Brilliant concept and a huge effort on your part. Did you intend to attach =
the file =E2=80=9CDummy.usc=E2=80=9D?<br>
<br>
My slight worry is that because you=E2=80=99re drawing on WxWidgets documen=
tation, we would need some sort of validation mechanism that ensures that a=
ny particular class or method does in fact exist in Wx.<br>
<br>
Fantastic effort =E2=80=93 thank you.<br>
<br>
Cheers,<br>
Ron.<div><div class=3D"h5"><br>
<br>
On 29/01/16 6:35 AM, &quot;James Lynes&quot; &lt;<a href=3D"http://jmlynesj=
r@gmail.com" target=3D"_blank">jmlynesjr@gmail.com</a>&gt; wrote:<br>
<br>
</div></div></span></font><div><div class=3D"h5"><blockquote><font face=3D"=
Helvetica Neue"><span style=3D"font-size:12pt">Ron, Steve, et. al.:<br>
<br>
I got to thinking a few days ago about how we could leverage the great mass=
 of documentation already produced by the wxWidgets folks, especially the m=
ember function/method documentation for each widget.<br>
<br>
So, I threw together a proof of concept script(attached) for a wxPerl Docum=
entation Viewer. Download the wxWidgets html documentation(33mb) and the at=
tached files and give it a try. Obviously a lot more could be added to this=
 script and several hundred use case files would need to be created(and dow=
nloaded), but that&#39;s a smaller effort than recreating all the method do=
cumentation.<br>
<br>
What say ye? If nothing else, it&#39;s another good example program. LOL.<b=
r>
<br>
James<br>
<br>
<br>
</span></font></blockquote>
</div></div></div>


</blockquote></div><br></div>

--089e0112c270f3e175052a7ed8bc--
0
jmlynesjr
1/29/2016 8:26:17 PM
--B_3537038093_79917035
Content-type: text/plain;
	charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable

Hi James,

Would you be able to post the file =B3Dummy.usc=B2? The only attachments that I
received were =B3HtmlDocTest.pl=B2 and =B3ClassList1=B2. Many thanks.

Cheers,
Ron.

On 30/01/16 4:26 AM, "James Lynes" <jmlynesjr@gmail.com> wrote:

> Ron:
>=20
> Yes, I meant to include Dummy.usc(contains a wxRadioBox use case) so ther=
e
> would be something to display in the use case box.
>=20
> We will need to cross check the wxWidgets against the wxPerl widgets and
> adjust the ListBox accordingly. And generate a use case for each wxPerl
> Widget. I can steal a fair number of them from my wxBook Examples(with
> learning curve applied since their creation date).
>=20
> James
>=20
>=20
> On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald <rongrw@yahoo.com.au> wrot=
e:
>> Hi James,
>>=20
>> Brilliant concept and a huge effort on your part. Did you intend to atta=
ch
>> the file =B3Dummy.usc=B2?
>>=20
>> My slight worry is that because you=B9re drawing on WxWidgets documentatio=
n, we
>> would need some sort of validation mechanism that ensures that any parti=
cular
>> class or method does in fact exist in Wx.
>>=20
>> Fantastic effort =AD thank you.
>>=20
>> Cheers,
>> Ron.
>>=20
>>=20
>> On 29/01/16 6:35 AM, "James Lynes" <jmlynesjr@gmail.com
>> <http://jmlynesjr@gmail.com> > wrote:
>>=20
>>> Ron, Steve, et. al.:
>>>=20
>>> I got to thinking a few days ago about how we could leverage the great =
mass
>>> of documentation already produced by the wxWidgets folks, especially th=
e
>>> member function/method documentation for each widget.
>>>=20
>>> So, I threw together a proof of concept script(attached) for a wxPerl
>>> Documentation Viewer. Download the wxWidgets html documentation(33mb) a=
nd
>>> the attached files and give it a try. Obviously a lot more could be add=
ed to
>>> this script and several hundred use case files would need to be created=
(and
>>> downloaded), but that's a smaller effort than recreating all the method
>>> documentation.
>>>=20
>>> What say ye? If nothing else, it's another good example program. LOL.
>>>=20
>>> James
>>>=20
>>>=20
>=20
>=20


--B_3537038093_79917035
Content-type: text/html;
	charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable

<HTML>
<HEAD>
<TITLE>Re: wxPerl Documentation Viewer Prototype</TITLE>
</HEAD>
<BODY>
<FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-size:12pt'>Hi James,<BR>
<BR>
Would you be able to post the file &#8220;Dummy.usc&#8221;? The only attach=
ments that I received were &#8220;HtmlDocTest.pl&#8221; and &#8220;ClassList=
1&#8221;. Many thanks.<BR>
<BR>
Cheers,<BR>
Ron.<BR>
<BR>
On 30/01/16 4:26 AM, &quot;James Lynes&quot; &lt;<a href=3D"jmlynesjr@gmail.c=
om">jmlynesjr@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-siz=
e:12pt'>Ron:<BR>
<BR>
Yes, I meant to include Dummy.usc(contains a wxRadioBox use case) so there =
would be something to display in the use case box.<BR>
<BR>
We will need to cross check the wxWidgets against the wxPerl widgets and ad=
just the ListBox accordingly. And generate a use case for each wxPerl Widget=
.. I can steal a fair number of them from my wxBook Examples(with learning cu=
rve applied since their creation date).<BR>
<BR>
James<BR>
<BR>
<BR>
On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald &lt;<a href=3D"rongrw@yahoo.co=
m.au">rongrw@yahoo.com.au</a>&gt; wrote:<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-siz=
e:12pt'>Hi James,<BR>
<BR>
Brilliant concept and a huge effort on your part. Did you intend to attach =
the file &#8220;Dummy.usc&#8221;?<BR>
<BR>
My slight worry is that because you&#8217;re drawing on WxWidgets documenta=
tion, we would need some sort of validation mechanism that ensures that any =
particular class or method does in fact exist in Wx.<BR>
<BR>
Fantastic effort &#8211; thank you.<BR>
<BR>
Cheers,<BR>
Ron.<BR>
<BR>
<BR>
On 29/01/16 6:35 AM, &quot;James Lynes&quot; &lt;<a href=3D"jmlynesjr@gmail.c=
om">jmlynesjr@gmail.com</a> &lt;<a href=3D"http://jmlynesjr@gmail.com">http://=
jmlynesjr@gmail.com</a>&gt; &gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE=3D"Helvetica Neue"><SPAN STYLE=3D'font-siz=
e:12pt'>Ron, Steve, et. al.:<BR>
<BR>
I got to thinking a few days ago about how we could leverage the great mass=
 of documentation already produced by the wxWidgets folks, especially the me=
mber function/method documentation for each widget.<BR>
<BR>
So, I threw together a proof of concept script(attached) for a wxPerl Docum=
entation Viewer. Download the wxWidgets html documentation(33mb) and the att=
ached files and give it a try. Obviously a lot more could be added to this s=
cript and several hundred use case files would need to be created(and downlo=
aded), but that's a smaller effort than recreating all the method documentat=
ion.<BR>
<BR>
What say ye? If nothing else, it's another good example program. LOL.<BR>
<BR>
James<BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE></BLOCKQUOTE><FONT FACE=3D"Helvetica Neue"><SPAN S=
TYLE=3D'font-size:12pt'><BR>
<BR>
</SPAN></FONT></BLOCKQUOTE>
</BODY>
</HTML>


--B_3537038093_79917035--


0
rongrw
1/30/2016 2:34:48 PM
--047d7b3a88d456261c052a8e6319
Content-Type: multipart/alternative; boundary=047d7b3a88d4562617052a8e6317

--047d7b3a88d4562617052a8e6317
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Ron:

Sorry about that!. Guess I hit send too quick. Thought I had attached it.

Let's try again...

James


On Sat, Jan 30, 2016 at 9:34 AM, Ron Grunwald <rongrw@yahoo.com.au> wrote:

> Hi James,
>
> Would you be able to post the file =E2=80=9CDummy.usc=E2=80=9D? The only =
attachments that
> I received were =E2=80=9CHtmlDocTest.pl=E2=80=9D and =E2=80=9CClassList1=
=E2=80=9D. Many thanks.
>
> Cheers,
> Ron.
>
> On 30/01/16 4:26 AM, "James Lynes" <jmlynesjr@gmail.com> wrote:
>
> Ron:
>
> Yes, I meant to include Dummy.usc(contains a wxRadioBox use case) so ther=
e
> would be something to display in the use case box.
>
> We will need to cross check the wxWidgets against the wxPerl widgets and
> adjust the ListBox accordingly. And generate a use case for each wxPerl
> Widget. I can steal a fair number of them from my wxBook Examples(with
> learning curve applied since their creation date).
>
> James
>
>
> On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald <rongrw@yahoo.com.au>
> wrote:
>
> Hi James,
>
> Brilliant concept and a huge effort on your part. Did you intend to attac=
h
> the file =E2=80=9CDummy.usc=E2=80=9D?
>
> My slight worry is that because you=E2=80=99re drawing on WxWidgets docum=
entation,
> we would need some sort of validation mechanism that ensures that any
> particular class or method does in fact exist in Wx.
>
> Fantastic effort =E2=80=93 thank you.
>
> Cheers,
> Ron.
>
>
> On 29/01/16 6:35 AM, "James Lynes" <jmlynesjr@gmail.com <
> http://jmlynesjr@gmail.com> > wrote:
>
> Ron, Steve, et. al.:
>
> I got to thinking a few days ago about how we could leverage the great
> mass of documentation already produced by the wxWidgets folks, especially
> the member function/method documentation for each widget.
>
> So, I threw together a proof of concept script(attached) for a wxPerl
> Documentation Viewer. Download the wxWidgets html documentation(33mb) and
> the attached files and give it a try. Obviously a lot more could be added
> to this script and several hundred use case files would need to be
> created(and downloaded), but that's a smaller effort than recreating all
> the method documentation.
>
> What say ye? If nothing else, it's another good example program. LOL.
>
> James
>
>
>
>
>

--047d7b3a88d4562617052a8e6317
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div>Ron:<br><br></div>Sorry about that!. Guess =
I hit send too quick. Thought I had attached it.<br><br></div>Let&#39;s try=
 again...<br><br></div>James<br><br></div><div class=3D"gmail_extra"><br><d=
iv class=3D"gmail_quote">On Sat, Jan 30, 2016 at 9:34 AM, Ron Grunwald <spa=
n dir=3D"ltr">&lt;<a href=3D"mailto:rongrw@yahoo.com.au" target=3D"_blank">=
rongrw@yahoo.com.au</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quo=
te" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"=
>



<div>
<font face=3D"Helvetica Neue"><span style=3D"font-size:12pt">Hi James,<br>
<br>
Would you be able to post the file =E2=80=9CDummy.usc=E2=80=9D? The only at=
tachments that I received were =E2=80=9CHtmlDocTest.pl=E2=80=9D and =E2=80=
=9CClassList1=E2=80=9D. Many thanks.<br>
<br>
Cheers,<br>
Ron.<span class=3D""><br>
<br>
On 30/01/16 4:26 AM, &quot;James Lynes&quot; &lt;<a href=3D"http://jmlynesj=
r@gmail.com" target=3D"_blank">jmlynesjr@gmail.com</a>&gt; wrote:<br>
<br>
</span></span></font><blockquote><span class=3D""><font face=3D"Helvetica N=
eue"><span style=3D"font-size:12pt">Ron:<br>
<br>
Yes, I meant to include Dummy.usc(contains a wxRadioBox use case) so there =
would be something to display in the use case box.<br>
<br>
We will need to cross check the wxWidgets against the wxPerl widgets and ad=
just the ListBox accordingly. And generate a use case for each wxPerl Widge=
t. I can steal a fair number of them from my wxBook Examples(with learning =
curve applied since their creation date).<br>
<br>
James<br>
<br>
<br>
On Fri, Jan 29, 2016 at 10:00 AM, Ron Grunwald &lt;<a href=3D"http://rongrw=
@yahoo.com.au" target=3D"_blank">rongrw@yahoo.com.au</a>&gt; wrote:<br>
</span></font></span><blockquote><font face=3D"Helvetica Neue"><span style=
=3D"font-size:12pt"><span class=3D"">Hi James,<br>
<br>
Brilliant concept and a huge effort on your part. Did you intend to attach =
the file =E2=80=9CDummy.usc=E2=80=9D?<br>
<br>
My slight worry is that because you=E2=80=99re drawing on WxWidgets documen=
tation, we would need some sort of validation mechanism that ensures that a=
ny particular class or method does in fact exist in Wx.<br>
<br>
Fantastic effort =E2=80=93 thank you.<br>
<br>
Cheers,<br>
Ron.<br>
<br>
<br></span><span class=3D"">
On 29/01/16 6:35 AM, &quot;James Lynes&quot; &lt;<a href=3D"http://jmlynesj=
r@gmail.com" target=3D"_blank">jmlynesjr@gmail.com</a> &lt;<a href=3D"http:=
//jmlynesjr@gmail.com" target=3D"_blank">http://jmlynesjr@gmail.com</a>&gt;=
 &gt; wrote:<br>
<br>
</span></span></font><span class=3D""><blockquote><font face=3D"Helvetica N=
eue"><span style=3D"font-size:12pt">Ron, Steve, et. al.:<br>
<br>
I got to thinking a few days ago about how we could leverage the great mass=
 of documentation already produced by the wxWidgets folks, especially the m=
ember function/method documentation for each widget.<br>
<br>
So, I threw together a proof of concept script(attached) for a wxPerl Docum=
entation Viewer. Download the wxWidgets html documentation(33mb) and the at=
tached files and give it a try. Obviously a lot more could be added to this=
 script and several hundred use case files would need to be created(and dow=
nloaded), but that&#39;s a smaller effort than recreating all the method do=
cumentation.<br>
<br>
What say ye? If nothing else, it&#39;s another good example program. LOL.<b=
r>
<br>
James<br>
<br>
<br>
</span></font></blockquote></span></blockquote><font face=3D"Helvetica Neue=
"><span style=3D"font-size:12pt"><br>
<br>
</span></font></blockquote>
</div>


</blockquote></div><br></div>

--047d7b3a88d4562617052a8e6317--
--047d7b3a88d456261c052a8e6319
Content-Type: application/octet-stream; name="Dummy.usc"
Content-Disposition: attachment; filename="Dummy.usc"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ik18tzd10

d3hSYWRpb0JveChBIHd4Q29udHJvbCkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIERlc2Ny
aXB0aW9uCiAgICAtLS0tLS0tLS0tLQogICAgQSBncm91cGluZyBvZiBSYWRpbyBCdXR0b25zIHVz
ZWQgdG8gc2VsZWN0IG9uZSBpdGVtIGZyb20gYSBudW1iZXIKICAgICAgICBvZiBtdXR1YWxseSBl
eGNsdXNpdmUgYnV0dG9ucy4gVGhlIGJ1dHRvbnMgbWF5IGJlIG9yZ2FuaXplZAogICAgICAgIGFz
IHJvd3Mgb3IgY29sdW1ucy4gVGhlIGJveCBtYXkgaGF2ZSBhIGxhYmVsLgogICAgVXNhZ2UKICAg
IC0tLS0tCiAgICBteSBAYm94ZXMgPSBxdyhPbmUgVHdvIFRocmVlIEZvdXIgRml2ZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICMgQnV0dG9uIE5hbWVzCiAgICBteSAkY29scyA9IDM7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTnVtYmVyIG9m
IENvbHVtbnMKICAgICRzZWxmLT57cmFkaW9ib3h9ID0gV3g6OlJhZGlvQm94LT5uZXcoJHNlbGYs
IHd4SURfQU5ZLAogICAgICAgICAgICAgICAgICAgIlJhZGlvQm94TGFiZWwiLCB3eERlZmF1bHRQ
b3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwKICAgICAgICAgICAgICAgICAgIFxAYm94ZXMsICRjb2xz
LCB3eFJBX1NQRUNJRllfQ09MUyk7CiAgICAkc2VsZi0+e3NlbGVjdGlvbn0gPSAkc2VsZi0+e3Jh
ZGlvYm94fS0+R2V0U3RyaW5nU2VsZWN0aW9uOyAgICAgICMgUGxhY2UgaW4gRXZlbnQgSGFuZGxl
cgoK
--047d7b3a88d456261c052a8e6319--
0
jmlynesjr
1/30/2016 2:58:43 PM
Reply:

Similar Artilces:

[wxperl-users] wxPerl documentation
Hi, I'm new to wxPerl and I'm finding that I fall into the cracks between wxPerl and wxWindows. I'm not sure what documentation to follow. Specifically, at the moment I'm trying to create a ListBox. I appear to have succeeded, that is, I don't get any errors, but I also don't see a box. How do I give it a position, size, etc? The syntax I'm using is not what's specified in the wxWindows online document (more like Perl), but I don't want to start guessing. I have <CODE> my $list1 = Wx::ListBox->new(); # make a list box, I hope...

[wxperl-users] wxPerl Documentation #2
Regarding wxPerl documentation, please look at the wxGlade/wxPerl demonstration at http://wxglade.sourceforge.net/demo/ It demonstrates the basics of wxGlade with wxPerl and it gives some examples of how to "translate" the wxWidgets documentation for use with wxPerl. I had problems understanding the documentation at first also; however, I now like the fact that I am always going to the core wxWidgets documentation instead of a Perl specific version. For all the controls I have used, the wxPerl exceptions are noted properly in the wxWidgets documentation. The followin...

[wxperl-users] Unoffical wxPerl documentation...
The unoffical wxPerl documentation Graciliano put online does not have all wxPerl's classes listed. I'm wondering why. In particular I'm missing the wxHtmlWindow (and related) classes and the wxFileSystem (and related) classes. Is there a reason why they don't show up there? -- ---------------------------------------------------------------------- | Jouke Visser | http://jouke.pvoice.org (personal) | | | http://www.pvoice.org (pVoice & pStory) | | Perl GUI Geek | http://wxperl.pvoice.org (wxPerl) ...

[wxperl-users] WxPerl Documentation (DEMO)
Hi. Dear People. I have start creating WxPerl Documentation width examples :) If you want to help. please send examples to admin@nur.am :)) 10x to all :) and sorry for my English :))) website: http://xmedia.zero-lan.net/wxperl -- BEST REGARDS: VARELJYAN RUBEN (GNOME) CONTACT INFORMATION ICQ: 132830009 Mob: (37493) 51-84-58 E-Mail: admin@nur.am pc@freenet.am ...

[wxperl-users] wxPerl Documentation
I finished the wxPerl Documentation: ;-P http://wxperl.virtuasites.com.br/docs/index.hpl Classes link and search are working fine. The docs was generated by a script using the wxWindows documentation and testing if the functions exist in wxPerl too. Please, send your feedback about the docs in the wxPerl Mailing. Graciliano M. P. ...

[wxperl-users] wxPerl Wiki => wxPerl Kwiki
Hello all, Once upon a time I installed a Wiki, called it the wxPerl Wiki and didn't look at it anymore. I noticed that only a few people use it, it's been hacked a few times, and to make it work, at least yours truly should put more time and effort in it. This morning I started installing Kwiki, which is a far better Wiki platform than the Wiki that was installed. Apart from the UserPreferences page (working on it), everything works as it should. However, the data people entered in the old Wiki can't be converted to Kwiki automatically. Therefore I need your ...

[wxperl-users] [ wxperl-Bugs-1674941 ] dead link in documentation
Bugs item #1674941, was opened at 2007-03-06 06:48 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115655&aid=1674941&group_id=15655 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summa...

[wxperl-users] Wxtra
Hello folks, I was out of the wxPerl world for a while, but I'm working with it again due a new project here. In this new project we started to make a simple OO framework, that I called Wxtra, to declare easier the classes that inherit from Wx* classes, specially Frames, the App, etc... We did that because we think that the OO of wxWidgets, that bourn in a C++ enverioment, was not good for the Perl world and can be easier, since we are writting Perl code and not C/C++, so, some things can be striped off. In this framework we used the syntax of Class::HPLOO, where we can use ...

Fwd: wxPerl on the Mac; was: [wxperl-users] Re: problems with wxPerl
>To: Jouke Visser <jouke@pvoice.org>, wxperl-users@lists.sourceforge.net >From: Christian Jaeger <christian.jaeger@sl.ethz.ch> >Subject: wxPerl on the Mac; was: [wxperl-users] Re: problems with wxPerl >Date: Sun, 30 Sep 2001 23:08:19 +0100 > >Hello, > >I'm crossposting this reply to the macosx-perl mailing list because >there is some interest, too. Actually I forgot to put the macosx-perl adress on it. >At 14:02 Uhr +0200 24.9.2001, Jouke Visser wrote: >>I wondered if anyone yet tried to compile wxPerl on a Mac. If not, I'...

[wxperl-users] [ wxperl-Bugs-588884 ] wxperl will not compile
Bugs item #588884, was opened at 2002-07-30 17:13 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115655&aid=588884&group_id=15655 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Dan Stahlke (danstahlke) Assigned to: Nobody/Anonymous (nobody) Summary: wxperl will not compile Initial Comment: I cannot get the wxPerl module to compile. It breaks with this message: c++ -c -I/usr/local/lib/wx/include/gtk-2.3 -I/usr/local/include -I. -fno-rtti -fno-exceptions -O2 -DVERSION=\0.10\ -DXS_VERSION=\...

[wxperl-users] [ wxperl-Bugs-1237847 ] wxPerl does not build with wxUniversal
Bugs item #1237847, was opened at 2005-07-13 23:24 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115655&aid=1237847&group_id=15655 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Mattia Barbon (mbarbon) Assigned to: Nobody/Anonymous (nobody) Summary: wxPerl does...

[wxperl-users] [ wxperl-Bugs-1407418 ] wxPerl crashes in Debug Mode
Bugs item #1407418, was opened at 2006-01-16 16:25 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115655&aid=1407418&group_id=15655 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Outaspace (outaspace) Assigned to: Nobody/Anonymous (nobody) Summary: wxPerl crashe...

[wxperl-users] [ wxperl-Bugs-1163248 ] wxperl webpage is appalling broken
Bugs item #1163248, was opened at 2005-03-14 12:24 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=115655&aid=1163248&group_id=15655 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Karl Palsson (kpalsson) Assigned to: Nobody/Anonymous (nobody) Summary: wxperl webpage is appalling broken Initial Comment: Despite loudly proclaiming to be XHTML 1.0 and having the link to invite users to prove it http://validator.w3.org/che...

[wxperl-users] [ wxperl-Patches-1430238 ] OSX wxPerl bundle error
Patches item #1430238, was opened at 2006-02-12 11:08 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=315655&aid=1430238&group_id=15655 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: John Ralls (jralls) Assigned to: Nobody/Anonymous (nobody) Summary: OSX wxPerl b...

Web resources about - wxPerl Documentation Viewer Prototype - perl.wxperl.users

GNU Free Documentation License - Wikipedia, the free encyclopedia
The GNU Free Documentation License ( GNU FDL or simply GFDL ) is a copyleft license for free documentation, designed by the Free Software Foundation ...

Facebook Tweaks Documentation For Developers
Facebook continued its focus on developers with its release Thursday of improved documentation for FQL and the software-development kits for ...

Making Our Documentation Better
Over the past several months, our engineering team has been working on improving the quality of our documentation. Today, we are excited to announce ...

Facebook shares new documentation for local currency pricing, sets migration for Q3
Facebook today provided updates regarding its transition from Credits to local currency pricing. The company offered new documentation for game ...

Emergent Documentation: One way that Agile is very different from Waterfall.
(from a 2012 email) One of the questions I always get around the use of Agile is, how do you do the documentation? Many people are very uncomfortable ...

BIMx Pro - Building Information Model eXplorer for complete project documentations on the App Store on ...
Get BIMx Pro - Building Information Model eXplorer for complete project documentations on the App Store. See screenshots and ratings, and read ...

Documentation in Software Development
There is currently a trend to produce “just enough” documentation in software development. We should however not forgot that what we might estimate ...

The Documentation Dilemma
Back when 37signals was consulting, we gradually weaned ourselves off of documentation. It’s normal practice in the design world to produce lots ...

Apple publishes OS X Mavericks and iOS 7 Core Technologies Overview documentation
A new developer document posted to Apple’s website today details the technologies that power OS X Mavericks. The 36-page document includes information ...

Facebook Releases ThreatExchange API Documentation
... information about malware and other security threats, and the social network announced Friday that the application-programming-interface documentation ...

Resources last updated: 1/31/2016 2:05:48 PM