[Zope-dev] Zope 2.6.0 ZMI Problem for CJK(Collector 623) patch.

Yusei TAHARA yusei@domen.cx
Sat, 30 Nov 2002 14:39:54 +0900


--Multipart_Sat_Nov_30_14:39:54_2002-1
Content-Type: text/plain; charset=US-ASCII

Hi.

> As I understand it, you dont want to do anything in unicode. You store, 
> manipulate, process, and output strings as 8-bit pre-encoded strings. You  
> are making an assumption that these 8-bit strings use some specific character 
> encoding. The scope of this assumption is quite broad. It has to cover:
> 1. All strings stored by your ZODB
> 2. All strings stored by your RDB.
> 3. All processing performed by Zope products. (must follow your assumptions, 
> or be encoding neutral)
> 
> Anything that beaks these assumptions will need special treatment.
> 
> Am I right so far?
yes.
why I don't want to use ustring, because there are two problems for me.

1. the original encoding is not clear anymore.

   It does not know that it will change at once. there is no encoding
   which raise unicode error other than utf-8. but utf-8 is not common
   encoding in japanese. almost all PDAs or cellular phones are not
   supporting utf-8.

   Probably, automatic encoding detection will be required in order to
   become practical.

2. ustring can not join or replace to 8-bit strings other than ascii.

   I have an same experience in Plone i18n with Localizer and TranslationService.




> Zope's approach is that your application (excluding the ZMI for now) should 
> work as in 2.5, provided you dont use any unicode values. Can you confirm 
> that this is working OK?
yes.
If I input values by  PythonScript without using property tab, it works well.


> Zope 2.5 left ZMI character encoding down to browser autodetection, and as a 
> result most ZMI-controlled properties are encoding-neutral. For compatability 
> with unicode pages, which are seen as the long term future, the ZMI has to 
> specify *some* character encoding. By default in 2.6 this is latin-1, a 
> change which I think was announced mid-way through the 2.5 development cycle. 
> I understand that some users are very happy overriding this with a 
> management_page_charset property on their root folder. Ive never used this, 
> and it wasnt designed to work this way, but it looks like it works due to 
> happy coincidence. Note that this doesnt work for management pages which 
> explicitly set their own character encoding, or management pages which 
> 'accidentally' encounter a unicode string.
I think management_page_charset is very useful, if it function correctly.


> One area where this went wrong for you is the properties page, which is 
> explicitly set to utf8 to allow unicode properties to be set. Im not yet sure 
> on the best way to fix this for you, but I agree it needs fixing.

I made monkey patch for myself, when management_page_charset is not
"UTF-8", this patch remove ":utf8:" from non unicode type input field.
because if input values are not latin-1, then unicode error raised.

I think that every encoding can be used it satisfactory:-)

Please consider whether it can merge into Zope2.6.1.


Thank you

-- 
Yusei Tahara			"So it goes"
yusei@domen.cx


--Multipart_Sat_Nov_30_14:39:54_2002-1
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="properties.dtml"
Content-Transfer-Encoding: base64

PGR0bWwtbGV0IHV0Zj0idGhpcygpLmdldFByb3BlcnR5KCdtYW5hZ2VtZW50X3BhZ2VfY2hhcnNl
dCcsJ3V0Zi04JykubG93ZXIoKT09J3V0Zi04JyI+CjxkdG1sLWNhbGwgIlJFUVVFU1Quc2V0KCdt
YW5hZ2VtZW50X3BhZ2VfY2hhcnNldCcsJ1VURi04JykiPgo8ZHRtbC1pZiB1dGY+CjxkdG1sLXZh
ciAidScgJyI+CjwvZHRtbC1pZj4KPGR0bWwtdmFyIG1hbmFnZV9wYWdlX2hlYWRlcj4KPGR0bWwt
d2l0aCAiXyhtYW5hZ2VtZW50X3ZpZXc9J1Byb3BlcnRpZXMnKSI+CjxkdG1sLXZhciBtYW5hZ2Vf
dGFicz4KPC9kdG1sLXdpdGg+Cgo8ZHRtbC1pZiBQcmluY2lwaWEtVmVyc2lvbj4KPHA+CjxlbT5Z
b3UgYXJlIGN1cnJlbnRseSB3b3JraW5nIGluIHZlcnNpb24gPGR0bWwtdmFyIFByaW5jaXBpYS1W
ZXJzaW9uPjwvZW0+CjwvcD4KPC9kdG1sLWlmIFByaW5jaXBpYS1WZXJzaW9uPgoKPGZvcm0gYWN0
aW9uPSI8ZHRtbC12YXIgVVJMMT4iIG1ldGhvZD0icG9zdCI+CjxkdG1sLWlmIHByb3BlcnR5TWFw
Pgo8cCBjbGFzcz0iZm9ybS1oZWxwIj4KUHJvcGVydGllcyBhbGxvdyB5b3UgdG8gYXNzaWduIHNp
bXBsZSB2YWx1ZXMgdG8gWm9wZSBvYmplY3RzLiBUbyBjaGFuZ2UgCnByb3BlcnR5IHZhbHVlcywg
ZWRpdCB0aGUgdmFsdWVzIGFuZCBjbGljayAmcXVvdDtTYXZlIENoYW5nZXMmcXVvdDsuIAo8L3A+
Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIiBib3JkZXI9IjAiPgo8dHIg
Y2xhc3M9Imxpc3QtaGVhZGVyIj4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiB3aWR0
aD0iMTYiPgogICZuYnNwOwogIDwvdGQ+CiAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+
CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgTmFtZQogIDwvZGl2PgogIDwvdGQ+CiAgPHRk
IGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAg
VmFsdWUKICA8L2Rpdj4KICA8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgog
IDxkaXYgY2xhc3M9ImZvcm0tbGFiZWwiPgogIFR5cGUKICA8L2Rpdj4KICA8L3RkPgo8L3RyPgoK
PGR0bWwtaW4gcHJvcGVydHlNYXAgbWFwcGluZz4KPHRyPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFs
aWduPSJ0b3AiIHdpZHRoPSIxNiI+CiAgPGR0bWwtaWYgIidkJyBpbiBfWydzZXF1ZW5jZS1pdGVt
J10uZ2V0KCdtb2RlJywgJ2F3ZCcpIj4KICA8ZHRtbC1pZiB1dGY+CiAgPGlucHV0IHR5cGU9ImNo
ZWNrYm94IiBuYW1lPSJfaWRzOnV0Zjg6c3RyaW5nOmxpc3QiIHZhbHVlPSI8ZHRtbC12YXIgaWQg
aHRtbF9xdW90ZT4iCiAgIGlkPSJjYi08ZHRtbC12YXIgaWQ+Ij4KICA8ZHRtbC1lbHNlPgogIDxp
bnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iX2lkczpzdHJpbmc6bGlzdCIgdmFsdWU9IjxkdG1s
LXZhciBpZCBodG1sX3F1b3RlPiIKICAgaWQ9ImNiLTxkdG1sLXZhciBpZD4iPgogIDwvZHRtbC1p
Zj4KICA8ZHRtbC1lbHNlPgogIDwvZHRtbC1pZj4KICA8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIg
dmFsaWduPSJ0b3AiPgogIDxkaXYgY2xhc3M9ImZvcm0tbGFiZWwiPgogIDxsYWJlbCBmb3I9ImNi
LTxkdG1sLXZhciBpZD4iPjxkdG1sLXZhciAicHJvcGVydHlMYWJlbChpZCkiPjwvbGFiZWw+CiAg
PC9kaXY+CiAgPC90ZD4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KCiAgPGR0bWwt
aWYgIid3JyBpbiBfWydzZXF1ZW5jZS1pdGVtJ10uZ2V0KCdtb2RlJywgJ2F3ZCcpIj4KICA8ZHRt
bC1pZiAidHlwZSA9PSAnaW50JyI+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IjxkdG1sLXZh
ciBpZD46PGR0bWwtdmFyIAogICB0eXBlPiIgc2l6ZT0iMzUiIHZhbHVlPSI8ZHRtbC1pZiAiaGFz
UHJvcGVydHkoaWQpIj48ZHRtbC12YXIgCiAgICInJXMnICUgZ2V0UHJvcGVydHkoaWQpIiBodG1s
X3F1b3RlPjwvZHRtbC1pZj4iPgogIDxkdG1sLWVsaWYgInR5cGUgPT0gJ2xvbmcnIj4KICA8aW5w
dXQgdHlwZT0idGV4dCIgbmFtZT0iPGR0bWwtdmFyIGlkPjo8ZHRtbC12YXIgdHlwZT4iIHNpemU9
IjM1IgogICB2YWx1ZT0iPGR0bWwtaWYgImhhc1Byb3BlcnR5KGlkKSI+PGR0bWwtdmFyIAogICAi
KCclcycgJSBnZXRQcm9wZXJ0eShpZCkpIiBodG1sX3F1b3RlPjwvZHRtbC1pZj4iPgogIDxkdG1s
LWVsaWYgInR5cGUgaW4gKCdmbG9hdCcsICdkYXRlJykiPgogIDxkdG1sLWlmIHV0Zj4KICA8aW5w
dXQgdHlwZT0idGV4dCIgbmFtZT0iPGR0bWwtdmFyIGlkPjp1dGY4OjxkdG1sLXZhciB0eXBlPiIg
c2l6ZT0iMzUiCiAgIHZhbHVlPSI8ZHRtbC12YXIgImdldFByb3BlcnR5KGlkKSIgaHRtbF9xdW90
ZT4iPgogIDxkdG1sLWVsc2U+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IjxkdG1sLXZhciBp
ZD46PGR0bWwtdmFyIHR5cGU+IiBzaXplPSIzNSIKICAgdmFsdWU9IjxkdG1sLXZhciAiZ2V0UHJv
cGVydHkoaWQpIiBodG1sX3F1b3RlPiI+CiAgPC9kdG1sLWlmPgogIDxkdG1sLWVsaWYgInR5cGUg
aW4gWydzdHJpbmcnLCd1c3RyaW5nJ10iPgogIDxkdG1sLWlmIHV0Zj4KICA8aW5wdXQgdHlwZT0i
dGV4dCIgbmFtZT0iPGR0bWwtdmFyIGlkPjp1dGY4OjxkdG1sLXZhciB0eXBlPiIgc2l6ZT0iMzUi
CiAgIHZhbHVlPSI8ZHRtbC12YXIgImdldFByb3BlcnR5KGlkKSIgaHRtbF9xdW90ZT4iPgogIDxk
dG1sLWVsc2U+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IjxkdG1sLXZhciBpZD46PGR0bWwt
dmFyIHR5cGU+IiBzaXplPSIzNSIKICAgdmFsdWU9IjxkdG1sLXZhciAiZ2V0UHJvcGVydHkoaWQp
IiBodG1sX3F1b3RlPiI+CiAgPC9kdG1sLWlmPgogIDxkdG1sLWVsaWYgInR5cGU9PSdib29sZWFu
JyI+CiAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8ZHRtbC12YXIgaWQ+OmJvb2xlYW4i
IHNpemU9IjM1IgogICA8ZHRtbC1pZiAiZ2V0UHJvcGVydHkoaWQpIj5DSEVDS0VEPC9kdG1sLWlm
Pj4KICA8ZHRtbC1lbGlmICJ0eXBlIGluIFsndG9rZW5zJywndXRva2VucyddIj4KICA8ZHRtbC1p
ZiB1dGY+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IjxkdG1sLXZhciBpZD46dXRmODo8ZHRt
bC12YXIgdHlwZT4iIHNpemU9IjM1IgogICB2YWx1ZT0iPGR0bWwtaW4gImdldFByb3BlcnR5KGlk
KSI+PGR0bWwtdmFyIHNlcXVlbmNlLWl0ZW0gaHRtbF9xdW90ZT4gPC9kdG1sLWluPiI+CiAgPGR0
bWwtZWxzZT4KICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPGR0bWwtdmFyIGlkPjo8ZHRtbC12
YXIgdHlwZT4iIHNpemU9IjM1IgogICB2YWx1ZT0iPGR0bWwtaW4gImdldFByb3BlcnR5KGlkKSI+
PGR0bWwtdmFyIHNlcXVlbmNlLWl0ZW0gaHRtbF9xdW90ZT4gPC9kdG1sLWluPiI+CiAgPC9kdG1s
LWlmPgogIDxkdG1sLWVsaWYgInR5cGUgaW4gWyd0ZXh0JywndXRleHQnXSI+CiAgPGR0bWwtaWYg
dXRmPgogIDx0ZXh0YXJlYSBuYW1lPSI8ZHRtbC12YXIgaWQ+OnV0Zjg6PGR0bWwtdmFyIHR5cGU+
IiByb3dzPSI2IiBjb2xzPSIzNSI+PGR0bWwtdmFyCiAgICJnZXRQcm9wZXJ0eShpZCkiIGh0bWxf
cXVvdGU+PC90ZXh0YXJlYT4KICA8ZHRtbC1lbHNlPgogIDx0ZXh0YXJlYSBuYW1lPSI8ZHRtbC12
YXIgaWQ+OjxkdG1sLXZhciB0eXBlPiIgcm93cz0iNiIgY29scz0iMzUiPjxkdG1sLXZhcgogICAi
Z2V0UHJvcGVydHkoaWQpIiBodG1sX3F1b3RlPjwvdGV4dGFyZWE+CiAgPC9kdG1sLWlmPgogIDxk
dG1sLWVsaWYgInR5cGUgaW4gWydsaW5lcycsJ3VsaW5lcyddIj4KICA8ZHRtbC1pZiB1dGY+CiAg
PHRleHRhcmVhIG5hbWU9IjxkdG1sLXZhciBpZD46dXRmODo8ZHRtbC12YXIgdHlwZT4iIHJvd3M9
IjYiIGNvbHM9IjM1Ij48ZHRtbC1pbgogICJnZXRQcm9wZXJ0eShpZCkiPjxkdG1sLXZhciBzZXF1
ZW5jZS1pdGVtIGh0bWxfcXVvdGU+PGR0bWwtaWYKICAgc2VxdWVuY2UtZW5kPjxkdG1sLWVsc2U+
PGR0bWwtdmFyICInXG4nIj48L2R0bWwtaWY+PC9kdG1sLWluPjwvdGV4dGFyZWE+CiAgPGR0bWwt
ZWxzZT4KICA8dGV4dGFyZWEgbmFtZT0iPGR0bWwtdmFyIGlkPjo8ZHRtbC12YXIgdHlwZT4iIHJv
d3M9IjYiIGNvbHM9IjM1Ij48ZHRtbC1pbgogICJnZXRQcm9wZXJ0eShpZCkiPjxkdG1sLXZhciBz
ZXF1ZW5jZS1pdGVtIGh0bWxfcXVvdGU+PGR0bWwtaWYKICAgc2VxdWVuY2UtZW5kPjxkdG1sLWVs
c2U+PGR0bWwtdmFyICInXG4nIj48L2R0bWwtaWY+PC9kdG1sLWluPjwvdGV4dGFyZWE+CiAgPC9k
dG1sLWlmPgogIDxkdG1sLWVsaWYgInR5cGU9PSdzZWxlY3Rpb24nIj4KCiAgICA8ZHRtbC1pZiAi
aGFzUHJvcGVydHkoc2VsZWN0X3ZhcmlhYmxlKSI+CiAgICA8ZGl2IGNsYXNzPSJmb3JtLWVsZW1l
bnQiPgogICAgPGR0bWwtaWYgdXRmPgogICAgPHNlbGVjdCBuYW1lPSI8ZHRtbC12YXIgaWQ+OnV0
Zjg6dGV4dCI+CiAgICA8ZHRtbC1lbHNlPgogICAgPHNlbGVjdCBuYW1lPSI8ZHRtbC12YXIgaWQ+
OnRleHQiPgogICAgPC9kdG1sLWlmPgogICAgICA8ZHRtbC1pbiAiZ2V0UHJvcGVydHkoc2VsZWN0
X3ZhcmlhYmxlKSI+CiAgICAgICAgIDxvcHRpb24KICAgICAgICAgIDxkdG1sLWlmICJfWydzZXF1
ZW5jZS1pdGVtJ109PWdldFByb3BlcnR5KGlkKSI+U0VMRUNURUQ8L2R0bWwtaWY+CiAgICAgICAg
ICA+PGR0bWwtdmFyIHNlcXVlbmNlLWl0ZW0gaHRtbF9xdW90ZT48L29wdGlvbj4KICAgICAgPC9k
dG1sLWluPgogICAgPC9zZWxlY3Q+CiAgICA8L2Rpdj4KICAgIDxkdG1sLWVsaWYgIl8uaGFzX2tl
eShzZWxlY3RfdmFyaWFibGUpIj4KICAgIDxkaXYgY2xhc3M9ImZvcm0tZWxlbWVudCI+CiAgICA8
ZHRtbC1pZiB1dGY+CiAgICA8c2VsZWN0IG5hbWU9IjxkdG1sLXZhciBpZD46dXRmODp0ZXh0Ij4K
ICAgIDxkdG1sLWVsc2U+CiAgICA8c2VsZWN0IG5hbWU9IjxkdG1sLXZhciBpZD46dGV4dCI+CiAg
ICA8L2R0bWwtaWY+CiAgICAgIDxkdG1sLWluICJfW3NlbGVjdF92YXJpYWJsZV0iPgogICAgICAg
ICA8b3B0aW9uCiAgICAgICAgICA8ZHRtbC1pZiAiX1snc2VxdWVuY2UtaXRlbSddPT1nZXRQcm9w
ZXJ0eShpZCkiPlNFTEVDVEVEPC9kdG1sLWlmPgogICAgICAgICAgPjxkdG1sLXZhciBzZXF1ZW5j
ZS1pdGVtIGh0bWxfcXVvdGU+PC9vcHRpb24+CiAgICAgIDwvZHRtbC1pbj4KICAgIDwvc2VsZWN0
PgogICAgPC9kaXY+CiAgICA8ZHRtbC1lbHNlPgogICAgPGRpdiBjbGFzcz0iZm9ybS10ZXh0Ij4K
ICAgICAgIE5vIHZhbHVlIGZvciA8ZHRtbC12YXIgc2VsZWN0X3ZhcmlhYmxlPi4KICAgIDwvZGl2
PgogICAgPC9kdG1sLWlmPgoKICA8ZHRtbC1lbGlmICJ0eXBlPT0nbXVsdGlwbGUgc2VsZWN0aW9u
JyI+CgogICAgPGR0bWwtaWYgImhhc1Byb3BlcnR5KHNlbGVjdF92YXJpYWJsZSkiPgogICAgPGRp
diBjbGFzcz0iZm9ybS1lbGVtZW50Ij4KICAgIDxkdG1sLWlmIHV0Zj4KICAgIDxzZWxlY3QgbmFt
ZT0iPGR0bWwtdmFyIGlkPjp1dGY4Omxpc3QiIG11bHRpcGxlCiAgICA8ZHRtbC1lbHNlPgogICAg
PHNlbGVjdCBuYW1lPSI8ZHRtbC12YXIgaWQ+Omxpc3QiIG11bHRpcGxlCiAgICA8L2R0bWwtaWY+
CiAgICAgIHNpemU9IjxkdG1sLXZhciAiXy5taW4oNywgXy5sZW4oZ2V0UHJvcGVydHkoc2VsZWN0
X3ZhcmlhYmxlKSkpIj4iPgogICAgICA8ZHRtbC1pbiAiZ2V0UHJvcGVydHkoc2VsZWN0X3Zhcmlh
YmxlKSI+CiAgICAgICAgIDxvcHRpb248ZHRtbC1pZiAKICAgICAgICAgImdldFByb3BlcnR5KGlk
KSBhbmQgKF9bJ3NlcXVlbmNlLWl0ZW0nXSBpbiBnZXRQcm9wZXJ0eShpZCkpIgogICAgICAgICA+
IFNFTEVDVEVEPC9kdG1sLWlmCiAgICAgICAgID4+PGR0bWwtdmFyIHNlcXVlbmNlLWl0ZW0gaHRt
bF9xdW90ZT48L29wdGlvbj4KICAgICAgPC9kdG1sLWluPgogICAgPC9zZWxlY3Q+CiAgICA8L2Rp
dj4KICAgIDxkdG1sLWVsaWYgIl8uaGFzX2tleShzZWxlY3RfdmFyaWFibGUpIj4KICAgIDxkaXYg
Y2xhc3M9ImZvcm0tZWxlbWVudCI+CiAgICA8ZHRtbC1pZiB1dGY+CiAgICA8c2VsZWN0IG5hbWU9
IjxkdG1sLXZhciBpZD46dXRmODpsaXN0IiBtdWx0aXBsZQogICAgPGR0bWwtZWxzZT4KICAgIDxz
ZWxlY3QgbmFtZT0iPGR0bWwtdmFyIGlkPjpsaXN0IiBtdWx0aXBsZQogICAgPC9kdG1sLWlmPgog
ICAgICBzaXplPSI8ZHRtbC12YXIgIl8ubWluKDcsIF8ubGVuKF9bc2VsZWN0X3ZhcmlhYmxlXSkp
Ij4iPgogICAgICA8ZHRtbC1pbiAiX1tzZWxlY3RfdmFyaWFibGVdIj4KICAgICAgICAgPG9wdGlv
bjxkdG1sLWlmIAogICAgICAgICAiZ2V0UHJvcGVydHkoaWQpIGFuZCAoX1snc2VxdWVuY2UtaXRl
bSddIGluIGdldFByb3BlcnR5KGlkKSkiCiAgICAgICAgID4gU0VMRUNURUQ8L2R0bWwtaWYKICAg
ICAgICAgPj48ZHRtbC12YXIgc2VxdWVuY2UtaXRlbSBodG1sX3F1b3RlPjwvb3B0aW9uPgogICAg
ICA8L2R0bWwtaW4+CiAgICA8L3NlbGVjdD4KICAgIDwvZGl2PgogICAgPGR0bWwtZWxzZT4KICAg
IDxkaXYgY2xhc3M9ImZvcm0tdGV4dCI+CiAgICBObyB2YWx1ZSBmb3IgPGR0bWwtdmFyIHNlbGVj
dF92YXJpYWJsZT4uCiAgICA8L2Rpdj4KICAgIDwvZHRtbC1pZj4KICA8ZHRtbC1lbHNlPgogIDxl
bT5Vbmtub3duIHByb3BlcnR5IHR5cGU8L2VtPgogIDwvZHRtbC1pZj4KICA8ZHRtbC1lbHNlPgog
IDx0YWJsZSBib3JkZXI9IjEiPgogIDx0cj48dGQ+PGR0bWwtdmFyICJnZXRQcm9wZXJ0eShpZCki
IGh0bWxfcXVvdGU+PC90ZD48L3RyPgogIDwvdGFibGU+CiAgPC9kdG1sLWlmPgogIDwvdGQ+CiAg
PHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0ibGlzdC1pdGVtIj4K
ICAmZHRtbC10eXBlOwogIDwvZGl2PgogIDwvdGQ+CjwvdHI+CjwvZHRtbC1pbj4KPHRyPgogIDx0
ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgogIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3Ai
PgogIDxkaXYgY2xhc3M9ImZvcm0tZWxlbWVudCI+CiAgPGlucHV0IG5hbWU9Im1hbmFnZV9lZGl0
UHJvcGVydGllczptZXRob2QiIHR5cGU9InN1Ym1pdCIgCiAgIGNsYXNzPSJmb3JtLWVsZW1lbnQi
IHZhbHVlPSJTYXZlIENoYW5nZXMiIC8+CjxkdG1sLWlmIHByb3BlcnR5X2V4dGVuc2libGVfc2No
ZW1hX18+CiAgPGlucHV0IG5hbWU9Im1hbmFnZV9kZWxQcm9wZXJ0aWVzOm1ldGhvZCIgdHlwZT0i
c3VibWl0IiAKICAgY2xhc3M9ImZvcm0tZWxlbWVudCIgdmFsdWU9IkRlbGV0ZSIgLz4KICA8L2Rp
dj4KICA8L3RkPgogIDx0ZD4KICA8ZHRtbC1jb21tZW50PgogIFRoaXMgbmVlZHMgc29tZSBjb21t
dW5pdHkgcmV2aWV3IGJlZm9yZSBleHBvc2luZyBpdCBvZmZpY2lhbGx5LgogIDxpbnB1dCB0eXBl
PSJzdWJtaXQiIG5hbWU9Im1hbmFnZV9wcm9wZXJ0eVR5cGVGb3JtOm1ldGhvZCIgdmFsdWU9IkNo
YW5nZSBOYW1lcy9UeXBlcyI+CiAgPC9kdG1sLWNvbW1lbnQ+CiAgPC90ZD4KPGR0bWwtZWxzZT4K
ICA8dGQ+Jm5ic3A7PC90ZD4KPC9kdG1sLWlmPgogIDwvdGQ+CjwvdHI+CjwvdGFibGU+Cgo8ZHRt
bC1lbHNlPgo8cCBjbGFzcz0iZm9ybS1oZWxwIj4KUHJvcGVydGllcyBhbGxvdyB5b3UgdG8gYXNz
aWduIHNpbXBsZSB2YWx1ZXMgdG8gWm9wZSBvYmplY3RzLiBUaGVyZSBhcmUgCmN1cnJlbnRseSBu
byBwcm9wZXJ0aWVzIGRlZmluZWQgZm9yIHRoaXMgaXRlbS4gPGR0bWwtaWYgCnByb3BlcnR5X2V4
dGVuc2libGVfc2NoZW1hX18+VG8gYWRkIGEgcHJvcGVydHksIGVudGVyIGEgbmFtZSwgdHlwZSAK
YW5kIHZhbHVlIGFuZCBjbGljayB0aGUgJnF1b3Q7QWRkJnF1b3Q7IGJ1dHRvbi4KPC9kdG1sLWlm
Pgo8L3A+Cgo8L2R0bWwtaWY+CjwvZm9ybT4KCjxkdG1sLWlmIHByb3BlcnR5X2V4dGVuc2libGVf
c2NoZW1hX18+Cgo8Zm9ybSBhY3Rpb249IjxkdG1sLXZhciBVUkwxPi9tYW5hZ2VfYWRkUHJvcGVy
dHkiIG1ldGhvZD0icG9zdCI+Cgo8cCBjbGFzcz0iZm9ybS1oZWxwIj4KVG8gYWRkIGEgbmV3IHBy
b3BlcnR5LCBlbnRlciBhIG5hbWUsIHR5cGUgYW5kIHZhbHVlIGZvciB0aGUgbmV3IApwcm9wZXJ0
eSBhbmQgY2xpY2sgdGhlICZxdW90O0FkZCZxdW90OyBidXR0b24uIAo8L3A+Cgo8dGFibGU+Cjx0
cj4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KICA8ZGl2IGNsYXNzPSJmb3JtLWxh
YmVsIj4KICBOYW1lCiAgPC9kaXY+CiAgPC90ZD4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0i
dG9wIj4KICA8ZHRtbC1pZiB1dGY+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlkOnV0Zjg6
c3RyaW5nIiBzaXplPSIzMCIgdmFsdWU9IiIvPgogIDxkdG1sLWVsc2U+CiAgPGlucHV0IHR5cGU9
InRleHQiIG5hbWU9ImlkOnN0cmluZyIgc2l6ZT0iMzAiIHZhbHVlPSIiLz4KICA8L2R0bWwtaWY+
CiAgPC90ZD4KICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiBjbGFzcz0iZm9ybS1sYWJl
bCI+CiAgVHlwZQogIDwvdGQ+CiAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRp
diBjbGFzcz0iZm9ybS1lbGVtZW50Ij4KICAgIDxzZWxlY3QgbmFtZT0idHlwZSI+CiAgICAgIDxv
cHRpb24+Ym9vbGVhbjwvb3B0aW9uPgogICAgICA8b3B0aW9uPmRhdGU8L29wdGlvbj4KICAgICAg
PG9wdGlvbj5mbG9hdDwvb3B0aW9uPgogICAgICA8b3B0aW9uPmludDwvb3B0aW9uPgogICAgICA8
b3B0aW9uPmxpbmVzPC9vcHRpb24+CiAgICAgIDxvcHRpb24+bG9uZzwvb3B0aW9uPgogICAgICA8
b3B0aW9uIHNlbGVjdGVkPnN0cmluZzwvb3B0aW9uPgogICAgICA8b3B0aW9uPnVzdHJpbmc8L29w
dGlvbj4KICAgICAgPG9wdGlvbj50ZXh0PC9vcHRpb24+CiAgICAgIDxvcHRpb24+dG9rZW5zPC9v
cHRpb24+CiAgICAgIDxvcHRpb24+dXRleHQ8L29wdGlvbj4KICAgICAgPG9wdGlvbj51dG9rZW5z
PC9vcHRpb24+CiAgICAgIDxvcHRpb24+dWxpbmVzPC9vcHRpb24+CiAgICAgIDxvcHRpb24+c2Vs
ZWN0aW9uPC9vcHRpb24+CiAgICAgIDxvcHRpb24+bXVsdGlwbGUgc2VsZWN0aW9uPC9vcHRpb24+
CiAgICA8L3NlbGVjdD4KICA8L2Rpdj4KICA8L3RkPgo8L3RyPgo8dHI+CiAgPHRkIGFsaWduPSJs
ZWZ0IiB2YWxpZ249InRvcCI+CiAgPGRpdiBjbGFzcz0iZm9ybS1sYWJlbCI+CiAgVmFsdWUKICA8
L2Rpdj4KICA8L3RkPgogIDx0ZCBjb2xzcGFuPTIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4K
ICA8ZHRtbC1pZiB1dGY+CiAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZhbHVlOnV0Zjg6dXN0
cmluZyIgc2l6ZT0iMzAiIC8+CiAgPGR0bWwtZWxzZT4KICA8aW5wdXQgdHlwZT0idGV4dCIgbmFt
ZT0idmFsdWUiIHNpemU9IjMwIiAvPgogIDwvZHRtbC1pZj4KICA8L3RkPgogIDx0ZCBhbGlnbj0i
cmlnaHQiIHZhbGlnbj0idG9wIj4KICA8ZGl2IGNsYXNzPSJmb3JtLWVsZW1lbnQiPgogIDxpbnB1
dCBjbGFzcz0iZm9ybS1lbGVtZW50IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9
IiBBZGQgIiAvPgogIDwvZGl2PgogIDwvdGQ+CjwvdHI+CjwvdGFibGU+CjwvZm9ybT4KPC9kdG1s
LWlmPgoKPGR0bWwtdmFyIG1hbmFnZV9wYWdlX2Zvb3Rlcj4KPC9kdG1sLWxldD4KCg==

--Multipart_Sat_Nov_30_14:39:54_2002-1--