Implementation of SASLprep for SCRAM-SHA-256

Started by Michael Paquieralmost 9 years ago16 messages
#1Michael Paquier
michael.paquier@gmail.com
1 attachment(s)

Hi all,

Here is another thread for an issue related to SCRAM
(/messages/by-id/243d8c11-6149-a4bb-0909-136992f74b23@iki.fi),
that can be discussed independently: SASLprep.

RFC5802 (https://tools.ietf.org/html/rfc5802) regarding the
implementation of SCRAM, needs to have passwords normalized as per
RFC4013 (https://tools.ietf.org/html/rfc4013) using SASLprep, which is
actually NFKC. I have previously described what happens in this case
here:
/messages/by-id/CAB7nPqScgwh6Eu4=c-0L7-cufZrU5rULTSdpMOOWiz1YFvGE6w@mail.gmail.com
This way, we can be sure that two UTf-8 strings are considered as
equivalent in a SASL exchange, in our case we care about the password
string (we should care about the username as well). Without SASLprep,
our implementation of SCRAM may fail with other third-part tools if
passwords are not made only of ASCII characters. And that sucks.

To put in short words, NFKC is made of two steps: a canonical
decomposition of the UTF-8 string (decomposition of the string
following by a reordering using the class of each character), followed
by its recomposition.

Postgres does not have any logic on the frontend-side related to
encoding, still it is possible with some of the APIs of wchar.c to
check if a string provided is valid UTF-8 or not. If the string is not
valid UTF-8, we should just use the string as-is in the exchange,
which leads to undefined behaviors anyway as SASL needs to do things
with UTF-8.

I have also implementation a Postgres extension able to do this
operation, which has been useful for testing.
https://github.com/michaelpq/pg_plugins/tree/master/pg_sasl_prepare

Attached is a patch implementing that, the conversion tables are built
from UnicodeData.txt to be minimal in size. I have added an Open Item
on the wiki for this problem as well.

Thanks,
--
Michael

Attachments:

0001-Implement-SASLprep-aka-NFKC-for-SCRAM-authentication.patch.gzapplication/x-gzip; name=0001-Implement-SASLprep-aka-NFKC-for-SCRAM-authentication.patch.gzDownload
#2Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#1)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Tue, Mar 7, 2017 at 10:01 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

RFC5802 (https://tools.ietf.org/html/rfc5802) regarding the
implementation of SCRAM, needs to have passwords normalized as per
RFC4013 (https://tools.ietf.org/html/rfc4013) using SASLprep, which is
actually NFKC. I have previously described what happens in this case
here:
/messages/by-id/CAB7nPqScgwh6Eu4=c-0L7-cufZrU5rULTSdpMOOWiz1YFvGE6w@mail.gmail.com
This way, we can be sure that two UTf-8 strings are considered as
equivalent in a SASL exchange, in our case we care about the password
string (we should care about the username as well). Without SASLprep,
our implementation of SCRAM may fail with other third-part tools if
passwords are not made only of ASCII characters. And that sucks.

Agreed. I am not sure this quite rises to the level of a stop-ship
issue; we could document the restriction. However, that's pretty
ugly; it would be a whole lot better to get this fixed.

I kinda hope Heikki is going to step up to the plate here, because I
think he understands most of it already.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#3Michael Paquier
michael.paquier@gmail.com
In reply to: Robert Haas (#2)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Wed, Mar 8, 2017 at 10:39 PM, Robert Haas <robertmhaas@gmail.com> wrote:

On Tue, Mar 7, 2017 at 10:01 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

This way, we can be sure that two UTf-8 strings are considered as
equivalent in a SASL exchange, in our case we care about the password
string (we should care about the username as well). Without SASLprep,
our implementation of SCRAM may fail with other third-part tools if
passwords are not made only of ASCII characters. And that sucks.

Agreed. I am not sure this quite rises to the level of a stop-ship
issue; we could document the restriction.

I am not sure about that, what we have now on HEAD is still useful and
better than MD5.

However, that's pretty ugly; it would be a whole lot better to get this fixed.

Agreed.

I kinda hope Heikki is going to step up to the plate here, because I
think he understands most of it already.

The second person who knows a good deal about NFKC is Ishii-san.

Attached is a rebased patch.
--
Michael

Attachments:

0001-Implement-SASLprep-aka-NFKC-for-SCRAM-authentication.patch.gzapplication/x-gzip; name=0001-Implement-SASLprep-aka-NFKC-for-SCRAM-authentication.patch.gzDownload
#4Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Michael Paquier (#3)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 03/31/2017 10:10 AM, Michael Paquier wrote:

On Wed, Mar 8, 2017 at 10:39 PM, Robert Haas <robertmhaas@gmail.com> wrote:

On Tue, Mar 7, 2017 at 10:01 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
I kinda hope Heikki is going to step up to the plate here, because I
think he understands most of it already.

The second person who knows a good deal about NFKC is Ishii-san.

Attached is a rebased patch.

Thanks, I'm looking at this now.

- Heikki

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#5Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Heikki Linnakangas (#4)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 04/04/2017 01:52 PM, Heikki Linnakangas wrote:

On 03/31/2017 10:10 AM, Michael Paquier wrote:

On Wed, Mar 8, 2017 at 10:39 PM, Robert Haas <robertmhaas@gmail.com> wrote:

On Tue, Mar 7, 2017 at 10:01 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
I kinda hope Heikki is going to step up to the plate here, because I
think he understands most of it already.

The second person who knows a good deal about NFKC is Ishii-san.

Attached is a rebased patch.

Thanks, I'm looking at this now.

I will continue tomorrow, but I wanted to report on what I've done so
far. Attached is a new patch version, quite heavily modified. Notable
changes so far:

* Use Unicode codepoints, rather than UTF-8 bytes packed in a 32-bit
ints. IMHO this makes the tables easier to read (to a human), and they
are also packed slightly more tightly (see next two points), as you can
fit more codepoints in a 16-bit integer.

* Reorganize the decomposition table. Instead of a separate
binary-searched table for each "size", have one table that's ordered by
codepoint, which contains a length and offset into another array, where
all the decomposed sequences are. This makes the recomposition step
somewhat slower, as it now has to grovel through an array that contains
all decompositions, rather than just the array that contains
decompositions of two characters. But this isn't performance-critical,
readability and tight packing of the tables matter more.

* In the lookup table, store singleton decompositions that decompose to
a single character, and the character fits in a uint16, directly in the
main lookup table, instead of storing an index into the other table.
This makes the tables somewhat smaller, as there are a lot of such
decompositions.

* Use uint32 instead of pg_wchar to represent unicode codepoints.
pg_wchar suggests something that holds multi-byte characters in the OS
locale, used by functions like wcscmp, so avoid that. I added a "typedef
uint32 Codepoint" alias, though, to make it more clear which variables
hold Unicode codepoints rather than e.g. indexes into arrays.

* Unicode consortium publishes a comprehensive normalization test suite,
as a text file, NormalizationTest.txt. I wrote a small perl and C
program to run all the tests from that test suite, with the
normalization function. That uncovered a number of bugs in the
recomposition algorithm, which I then fixed:

* decompositions that map to ascii characters cannot be excluded.
* non-canonical and non-starter decompositions need to be excluded.
They are now flagged in the lookup table, so that we only use them
during the decomposition phase, not when recomposing.

TODOs / Discussion points:

* I'm not sure I like the way the code is organized, I feel that we're
littering src/common with these. Perhaps we should add a
src/common/unicode_normalization directory for all this.

* The list of characters excluded from recomposition is currently
hard-coded in utf_norm_generate.pl. However, that list is available in
machine-readable format, in file CompositionExclusions.txt. Since we're
reading most of the data from UnicodeData.txt, would be good to read the
exclusion table from a file, too.

* SASLPrep specifies normalization form KC, but it also specifies that
some characters are mapped to space or nothing. Should do those
mappings, too.

- Heikki

Attachments:

implement-SASLprep-2.patch.gzapplication/gzip; name=implement-SASLprep-2.patch.gzDownload
���Ximplement-SASLprep-2.patch�;�w���?�_�M�����8������9vnp����p������j��������]i% �{{�OK�vvvv�gv9O�%����}����{����=��
8�����]���,�co���y��CfYC��u-����!{���[�]�a��:����������w><��W�3'�C�#��l���	�B�����C��z�U����n:d������0�c��.�q��<L��t|'@ gW��3b�(a������Y���]'���Z}����
%������r��l��p�|X��Z��_�N��`�d��o4���'�[�>���L���KN�S���Y4cNU�0�aq$|���E� Zs�M}����s��J7��`+�����T����
!�h2'��w�8pQ�i���v�z�KD�����������!��Fl����}7������;��^]F	l2a����u��$�y�<Lk?]=���	7��4c�����^��"vRw�&���L$ng���<�:�?����Z��Y�]&����)pv�s��<DK
�Q����lK�n�5�����|���v���Jg��"���X���:a����lB�:b��OR.R��Y]����"=�?��JB�X����#��/���q����-��x>Y�Q�Ko
��`f������<^���d�FQ :Kq�v������x�xY��K�v�!&�����}����'h�������\���V�������2�3���Z�d�p_
ij���hm���R�v��������W�z�l�Z-� s:�8��#��<~���;��������~8����
=��+UA�_���X���`7�y��������Z��S�,9�a�G'_�b��KD�F)�����8�Sab��	�\8��8}P��9����J��i�w���4�8����v�8%��t�X��#�)���P8�*����O��6��X/'R�X5d�p����L�"Y�s��V����������b��}5�k�hS��X�_��-{z�u{�!�����N�
C���Q�V���l����*�L9��>�Iv�����*��m����s�n���#��`��7��<{��l��wQ�#H$�2z������1k�������������g??{^�o���=��*�����������+v�����v�b�����"��&Q�&��������>~���-@��������o��$���<C���"}Ng�5��B��$�4�
a=��R��~����N`�Q����'M��X	����_Y�y
-g�e(DPo>pQ/�
�*NW��d�~��G(�?}u������f`���,�R��1XdC��M�����f��,�~��N���������C��k����O�T_�
q���6
/���Q����!���'�m-��-Z���I��<?��Z�&���ov�����4�'���1#O�$ ��}�b�@ ����\��M)��]��0
�i���/'�)�T_�d�WED�fN��R��X)�>#�B���6�����>E�\�y�Z��9��F-@�2`�V�����2�F�'����4�:[�i<�tV�%����4����������
�ZP*���m���^������x	�3����@"�������(��O/����%k��e������nw[2"M�pssY�pe
�_J�P1��il��d�2�p��w��R�6�=�b&��g���`����w����;f�plD��8z�n�iC!����(��Z){�$��	���2=�l��30�2D�0S�����r����hr�������_���#����6 �������}E��t
"�P��;�)���2�����;f��\H���0~xj�p7
d�H�n�5�Fa�8���$G�N1�.��a�*tg��!}���$a�]*w/�_:��*Ru�B8w2�PB��4��N@�LcS)�H����h��c	m�M��7v2V)`�
v��M�(�IR�,qO�DtAy�b4v<�Yb;(�]����"��);�i��4�3�_��X����aKIx��B�C-��C�Y��<�F���a�V'z:��`('���j,�����;A
So0�P5��lOr��,`��\���9�p�1ZuE�:�V� +Z�tV��J���c�P�P�#;��0Z���t��^:���������%���S���3Vs�K������4�|���N��������Kv����(-��X��w/��X�VKh*�K��K�4��m��&=����FQ�2}�=.b<��h�������x��x��<��/�X��G��(�??+j;����K�N��/^0I���S����N��.�J
��
G�DU.�Y{���r��������?���������:;��]���
�1�+�{���n��iXn��������cL����������������<0&�o_�kX��=�� ��35��%	�;�
��wo�dY��>��������oh�<Y�!�{�����8@n���`�]E��+��N�����\Z�;��e���6V�"�<$�������<��"����p�yx���"�IMpz���� ��n��cH�T��#4��� �2��O'�g�ms"1|.�)}�
g��X�D�_p!�������7[/��S���X�xA6q]��9}U��*����C|��S��g���+l�$�.��@'%��&��r#�	�I^��- ���>'j�0���Eko�f�������	�f<���	{>��V��Y\8b�f�����
Z`���i�����������|}�ov�K���`rZ���d�`n�-��E��z�d�[����o U���-E�?�c+x?`{	��U�+��DU-������A�PmUt.�s���y
�'�>l�g���h��oj���nS"��/���|l�f�MabyL�5��&�^��<��#@�;���\�r��c�Di�FA���9.T
 3�;_�)Aif�!�eB�Ld�T�e���9~@�����p��1!Cg��D�&�W�7$k�I�TpJ�3L�<��y�������V�)4R�mG��B3E!zg���F������`0�!�v%�"�~�%QVP�����Y�P����=��3Lh��i�j�h��-������!����U(k]\]
��J�e���Z���3���_.�g��`�K�l����d��z��aq�u��?����[I��XW�Ky��r�!�E�*r7��c8��?wvA�3����_z�1���u�����Cw~���o:��k�]�����RC�����v�+$B�]7:�Q�c�TT�/]5���{#g�9"��:?��r*l/;~(;�	D�V�4���]������+��"�����u���������Tt����4�k#2A3.��n�m�d����4E�C��)�Az��w�0(�y����d?��	�n$��J���8Ctq������btzsq}Eld;N����U	:����3�	5�c����m3�qo�Nf\������Q��|�8���#]�{��G��X�,�y<~S�ALr){!���{���U`���Y��:~]�@I?�,�4��s�al[��������0v�&�9=�0����F��n*�����um�~7��]�wm���U��Jd�y�4����"S��a��0*{u���$q�F���#h��J����J����#����q�>�AP-)�/�����	���1���W*N2���ln�&��"S�=�����|�N$�w�,���f�#�������,��9�N�?<s������h��u�p�"F^
yB�����Yb{�"D��O0+���+nl�M����}37h4(zS������rk������_r���<�L'��8_�&��>�����/�A�����`���g�*wA���}+|�>�J�iT���)�i�d7������W��d�{!i��P53}��V��76%�oe���<
�#�W��f
3V����jCa�n�,���e��������%��BGE��c5	�5���(i+x1()����q<E�R�f�C������.�si���������������f�V����\'9����7~�
�<�4��<���K���u'�I��PQBN�{$cBP�	��K�o�9�����O�/�����&�A`Cus��������������{��b���^���	��'El@��6�����%�+�d�V6�Z�P_��j���aJ�j��M����I.��
�|��N��:}!!��h_�:a�A��e��s�<NL���:��:��:�[(g���%����,S�e�'S�����8�*���������������yi����^i��|��o,��G�S"C�a�o���J�M!�x�r6�F�H��qE��8��#:�/�zB]=����:K��}�L�{*����Z�+^�����V�a�:��v���+s>���C1���L$A\u���^l��z���qYV���+ygc
���Pd�w]�6jX�b�y���z�U�	��+X����l6d���zc���[S@?p�L���Nc�K�x.�,��)>��u��}5mv��+���qA�<�$Q"d�?<���9�wo�������	�lz|���{>M��D�s�ZG������p2�-�����5h����vBT�D�����������6�'����T�q��&��.KX��-��M=G'Y���fH
��r5v������f`�^Sv0���ZEE�j�J%9�8���H�)S�JM�@=�IG�j�!�]�hV������`�38�"��lW��<�.���D�;WUz��p���ZB!��O��^�����_`�lr1�\\]^\�������kz|��MX�I�{�����i��
���.Ad��#g������X�{|'4�i��29���Lo���+��;<HuVG���l0��GF���������I��Nv�5?I���������=��_�+�R0�'FQTB� ��hI������I����!��"��������|a8CD�(E]<��?��]���o�{[�E�G���2�����3�"�<�:~��h"6R�4w"Y�y
u9���*6�sC53Q�4%�j��S��c���^��il�G�7��hd�
�������g�|7/e�,� ������Y2c�O�.�`�0R7�
��:��J���:t��������1N���%�p�;�\���������g]�e�`vqw�����%�����i�K}6��MV�xa�O7�Sj�]��)5;;��w&��B)�t��_d^�xK��_�XT��RQ��kp���\��>�YL|T^��r&�V������(]�����)}�@�JMSI.��bl(Q�&�9�r�fI��=�]%m�H��k���$��O����rDD�:$k������Tl��I���G����9����8��d-W|B���R����z�P�0�r���c�;}T���i/kp��J-�;�������G=p�r�U����jV�����Z�i�MTj�rQ��ygpz�7���nb5k�����n��� #���/�'��,���*s�V2�V"2H!�4@^w����ad�����$�:��n�0��X�.���{��=�m\��S��7���G%�����|J<������X>\�f��c��a7-y��|����Dld�vu���u����Y�@ ���2R#�����z?}����Q���V	d��~e����OV���b�������/�����G9���\���q_��J��X�����AZw<�z���l�}��_~v�':�W��H/i��{�����G0���5����Zy�-v��(5�B(>Z���f}�f��?/G����P~�
����(���/�X�;�g/>|��I��I��Hi����2=6�$�(����������g��������;n�rod���zE�|��sY�p?{��aI8��~�y�$����xh����-��q����=��	�y����Or����r�����4���+Dv_�7����=`.{��Q^������}/�@����f���Sk<���}���f�1����kl����m:�����7"G]o>\-��;�u~������������k]����@��?�9�=�j;�r3s���w4g��y��E�H����WG�����pWU������#� ���F�/���}������(9�?[f���S
�#�y<+�����}`%�te^�n�a��Jd�y��a3�gCL���JgM��X���j?wV�P�p_�1
��>[�^��H�|�b��o���>��:n�o����
�c���?���w���4���������J�������������Z���g�������U?����dg}��|��c�
������^~�����]bB��;�����{�X�[���q�'���gnP����w`�Q�+��X��6�y����lwVc����YQ��C�t[�!xzF{��1�.��d�������gk ��-x��O"��lC��]���doV�~��tq��S%�{p��?m�Mv�JXr;�|O��_|���0��C���/���I���'?C��[������Wyo�I`w������������D;�#t�@��`���[��D��(E�R}[,k�e	�+�O�'6k;5)�GOG���^�)<����B?��iO�'St��C=�������s���\��n�0'��M������!{���������n|�����+��5�����v�|;;,r��W/^���g��m��+p���>��d�������^��?���H��2[����x��q0��XE��z/gG�{�n��m7��6�F���b������V����g���b_�^�\x|&��.ga������o6}
uaB��ws���c����d=�~o�����r�V��O_������U����}@�����z�n�?�����?(������w�^����8�y$?����/=cH�����P��������?EO$=��}�7/6Wi��7,�1��������(�7��P�_x�����]���~t��Gx���3
�����j�����\MR��4_���E����!dl��0u�������u2��/��)R���#U�&����*�h�xO�C���.������@��r���t��>y�^P{���T�*�o�'-��S�_����;Om��_���?O��_<�f�=���y�����;*@|�T�m���>/K.��?�4������������ZL���em���>��]�f3��i/���a���ES���O��-}8������W�e����`H��A���N9H%���}/K�*����������z|�<�j��
����M��B��V����I�9�E?�6��F}Z����=�Wz/0��l��-�ew�����1C��)�Th��.U]�s!�)��X���������77���oy?�����6�d�������)�f:^o�~��|���o>J�����u*��t����7^�g��Y�H^�����w��}���5l ��0�����K�Ovl�n��V�w//�9�X��-DwIu��Zt�Qy:}p�����`=:�$f���|����]�y-XR#��o�����&����|���_�S�?�����_���?�l��g��/��������j����'��|h�>��<��E	�]���_���Q_i�� 6��x���6�]�����{��Y@l��$�Z�_WU�q��-�3�K���9����r|�8�6�d?<7��^}��>����� �������������������������O?�?y��~���q��O����x~"<�5���s��8�i�?3]c�$���X��c�������L[c��?�&�|���:}o��T�����^�?��'?����43��g;C�3�j����������������m��u�&�a�_~��?�G
�X�����m���a����4n�OUzV���:C��*}������BWe��_�jc��d������gO���'�_�4���'g{��g�� �_�z�?~��/�I	��np��zs�5s��Y|�x�7� ���.�eh�N�t>��)O�_NO����?}����|����.%��?�?��'��?<M��������������OL_��_���_\~������n��
��y��S��95���t�������ws���g�r���p������=q������?n�M�5
16|c55��|��44��1O�
�_v5��������_��Z��Pc�o�?�c�1�5�O�m��r�UM]>�E�������Ue��VU�g���ZC�j������UU����UU�W�	��
wU!.�����_��*gu�?�U?}\a�5��eE�����Y�V��h6��Z|ZSbWU���?�e����y�/��X5UY����4�l|���������3����6���=-����?��O��fj�n���~��_}����_����_�������5���s-5��u��Y-�1�j���?�ij,�55�_}�~:��8����i����?��<�2Ysd��~��?X~��O?�j�������_�b�$��O�)5��?�]���?�����Y��,O�����w������o���������s����[~���7��_?]a�~m��y���� 8EH�\�����s��L[��k<O��|y�����v
�!���^��������W\���[�q}����x����}o=�9of�3�b����X	����������, {E���M?��
_������L;���|�f�L���9�������/6 c���������?� G��Z8����t*�M�=�w�Qx���U���&���?L#}n�9���e;!�����'�o!�K�����Q.�[`6u��^~
!��g�]��~������>G��b�i��M����@�9����;n�~���^�n�!�{n�{O?>_E�E��Gv���,e<�����%����_����RX������������_�^������J� ������?���|��I���l�e�4���\���Y���y�P���/�X���o�Y�����s�5K���0���
4k�E9�����?�6#�F���9�4|����Y1�_?���op�o����t��D� �%����e����!_m���H�M�������e6?��8���	}�|���/�������"��k?���.��?��W��D���0{�/�|�zs~6f���o���s?����z�3�chk�o�<m����W���O��s�y~��|k�.���������g��vJ�Zu��%-�������3%��3D�kr�et�r��o�|���������Z���/���?��|MU����������o��_����������~�������i���~����O����.
������:������7�y#�y��I��?q�o�����K���xz;|������Z�A���u�m��/�����i�zw�����|��eJn��.�[�#����b����^��%��k��1w���]�5k�;�
l���{z7��r�,�-�����
��������������o�s��S���d���^��w���WT�- ������~��?wk����v����P���^5�W>8cH>{������1�u�9{7+�W���C�h%~���<���+������|��z����-Z=���i��\��f�{�-����;�>�g	�������=8����hvcJK�%8�����Q,���}���������y��_�J�~�n(_|�@<��Y�����
\�R��iC|�e����i�_t#���g����^����������{q�d	��
�~�,���k�K=+���}�3Vo��/�X�?O��o?��o~�Q�y���;�����/��������|�����Q�hx��7utS��v�w~���z"���9�J�������~��1�������������;���c���{�����T��G�Y���|��^����w_>�����m����K��%��^�������i]T�];���������S�O�om�W�����b|�������(g�}���9��Z�����X����>=q�l�����J�>�p
���������9j��O�����|��[�}?�zo��9���^\��KU7�R�T��w+�L�i��+��m�����=.y��K�<9�������D\������//?��?~����5W������l}$�iK�p~��0�o]��[�M��,��V�n��}(F//��4����h�]��ww�o����I�S����*�}q,�����3x#���]��Z[/f�JKU��d���g?�������qP�?���]��=}�����4�`��{~���
���g�LG����?����&�������K���G�����K����^u���D������E�/%��+��trS\H?��>G	~��h��� �W����;��>��n�R�
�K�����K��x�9l�^�^������_���������+����%n6nc~���|����;����V������a��������
�f{a�������o�����"���QP�PP�;��h��J�d��o���%lr��y��%z!\���m�������������uJ�p�z�'���������i��_�-��2v5�*��-	\���>��8f}8;	�K"�S��������m���o�|i[v�c���j�/o|o�6~�����*�W_~��W�!�~~�������������m�g+^2�-��I������������/�8"��������!�:��/�_����<}��_l;��v�0����g��2���G�gx�J]S=�/������gM������#����9����cK��>|�����,~��|y������7��?%h}s�L|��U����/�$�il��e��rh.��>B���500���pR���n�3�?�=��_����B�Z��p���D_g�u����s�t��];(��������v��T�5�����n�7^�>�������������>z��?��~�����/�x�F����k�k�WW����!��Ni�����}��=p�y�p{�n}�f�����������&��^��W�{~�����������{WN87��|�������������ve�j�Q��%��/�/���-�����~b�M������y����=�8xW<��m]ac�����7�o���*�]�y���_����W���e��/�
��l��[o� ��p�w1�����<Y�-^-�C�����������z������g��~������9Y�y>�+���C�gq~	����3��l�^����_������_��������?�q/?yom�����2�������{I��[�D�U���tM���96����������/��<z)��^������G����]�~|q�������.~]j�t�|���u�9#�a���'1��>����^��.?�v���+����#�n���w�l)�����&M���z7;�=�����5��7�����|��o7O��}8���?}�"�s�Wm�W��.���}������*���Du�:}���C�[�r�h������o�*��7�/��pzqz�����^�������o��~{
��=��>�_}���yh���O���J�iG��i��k�����b������R�����������n\����tK���������T�4�}��z��+y��V���~���[�{/�������V����k�����pc^t�o��[�sM��m���r=�_�������W>����o3*��j������=���=x�����,�\�,�/�7�����,CV��&�d�����J�z��Ss<4|����9������9���'n��g��8�{�1��`X59-�����m���=��#p�-�w�7 ������3����i/l�G�\
}/�����P���J�^j�wG�Ka@F�K=��\���\���{)�f�r)���R�m��X��K��i/uX��K��%�BmS�����,3�MYfj���<�6e�y�-�R�-K�cmY:8��,���e��-K'@ms����Yj��"�6g9D�m�r�X[�C�����X[��k��i��,�k��i��,�k������;��u����,�j[���T�X)��'�P���kR�Uf5h;�^���A���Q���I���,��J�hH��b�L`X���
,K��wP,��X���b�"*�UF)�*[)�*E���:�R��J��*E���
�x�R�
f�iD�`g�pK1T����$-��`j�F$�J�`�*E��	�R$�J�`�*E��	F�R$�J� ������IJ-�P�y��I�.�P�ywX����*E�V)��J�`�Uf	�V9J1V9I1V9K1V�H1Ti�
X�����M�Ri.��9t��'�,�)�.dU7h���8h�l'�Xe/�X��Z3+#������5�2"h���=Z=w��s������ut"z��ND������:�<GZG�����N�����@+�d,��:�hE������b������z�ZQ/�C+�EvhE����mF+�E���z�f��^$�V����z� ZQ/D+D�hE�H�h0RU�U��A��V4dy[��A67hE��n�����
��A+d��V4LR�U�R�U.RU��C�1K����F���h���N��J� Z��5����Q��J�7Z��I�R��V*���JE�7Z�(�F+E�h��E�W��8�z�g���^��� ?�vj�;�b�����{>�.�����>�a�{>��w�v,�������]�#�|��������s��:�=��H���z0�J�z a����U,�X��Hd��z �����V,���\&1-�H(��z ����c��q�L���`����q�H���z ����Dj�s�b�2���z a����e��q�Hd��z �����f�3��J� ��H��=jsG���=�s������m��uH�E�!	9\]9\]$\�pu�p���E�EW
	9\
$\���/2rh�%���*�"9��F�H���(��h$�����"��U�#V)3%b�2SZ�R��b�"��y�X����*E�V)���J�w�U�����F�
V/���bV�H����3s�`�����	����	��y�UF)�*[)�*%��`��c�Y��`��c��C�F�
V�i7X=#�V�H����3����v[�r�b�2��wX���a��K�>F"=����'`}�=�c��	X����N�Z�l�	8
��8��e4��X�h$���p��f���0(���5Nh�t��a}0��.��u�Lw���c��v�=�Kf�����~������At3�y����)��IuW���<����<,0v]�w3q���^l���^����^���^����zq_/��c�x�����Z������������������mT�*o��c���w���^�*��c����#S�x�/����V��������m�G\������^=�Z�m��.��������M]��.oS����{�8j��^\��zD��B_+��X+lk�u)���m]��.e[�"�nEl�����\S������o��8�\|�v#D���D��6���S�����
W7]�n�\}�]}�p�����
W�J�>�|}M��5���������(_�Q�n�|}
�m����`}}���`�Y�V�g�S�s�x��H8U�CS/6�������������u�'�}�PW�P�w�+r�[�P�V�n�"�F�8��[�|&��l�l{�	��P�m%�m->vK����V��%��@�J����I@���I����I��Z�;I1T�K�����6 �e{i	�9z	m@P������
�T��Z����j����j����j������A-+-W��D���'���N�)�=�L�bB��N����`�8Y���0���8i�G�B�?�Lf\l2]8���0��e����(���(�D����R��X�B�N��`����tZ
�t��J��Q:��Q:/���4K���IpX�t�a��Q:�#Q:�#Q���F���F���F���F���F;����9����99�
#sr ���06@����X�����JU�*�nF�R�f�*e,#V	�u�R�2b�b�a�rr2`�rr2`�rb�|9A�X�������tX����*E&V)2���,�x�*g)�*)�*�d4����a�rh��|9�GX���P���{
V�J1V��I�����"cr1j[�Uw@���Wg{rH���P�S��U�<�/�����_�]5~���G���G���G���G�WpS�����}5J����������;N����W�����������8}_���.�~�Z�����.��Ymti���P�f�F�J�e�M�_��������X�q-��1�c����S�a-��Q1���f��O`i_-]��{��X��,bUz��t]_��������>���&��6��P���z�>������x}h��)4U?$4U���TJ�Q�J��y,���� 7'"x�AnND�J������9}����s�����cSs��.�6������:�������=a
���P��q��q���B=��1���0���
��[���u��'���|�\ ��f{��!��d��]	�n$k�mM��{'��	��c��� W�#l���"l��8��Ia����<S]y���Lu����3U��0U�0���\7�s���U$���7�e2�e2W}�0�;?�;?W���x��JmU$�~rmU$�V-R�U�,��JmU����d�V�Wb�-��R��Z�����Z����X?C���P\U���>ptuy���]]���DWU�X?���:�c�8+��8��8�uy�� �uy/uy/uy/uy/Uy�u����FmS��mS�`�TE�6UQ�MUTmSU�TE����ZSUk���5uQ����.AS�����T��5u	��M]��S��~����=i����Nu�����������/�m}qm��k[_\��.���l����/�m})n�kn[_s��.��j���
��W�v�+�\l���u����v�.0�\uy���;�f���;�f���;�f�+�n�{�{�{�{�{�{����.��.����K]���w��p^�	�9�yA'��#�t��q�n�hG��c3:_]���>���;c_Q{*h��������~��Q�����P�+?G�~ht�O�����k?����	�����~�9��S�#��tr����k�|R}�ip����U_�	�����@������O��SooD������S_3"������g)���R8V��p�������P�� i&"��
Nf��
�>"�	�P��AG��c������V����]Z8.�(�p\8�Qh��p�Iy��p�8�D4������fw���q%����(	�Z8�GhZ�b��L� 8�k����CN~�C��"�SMD��8U8Au��B�|���b���������Bht>��O�0��uj���������]W/���C�xx�w|�6M�����-]��[����5A�������3�C�����B�y�Fu��r��R�����,�z�����9R�N&��j�B�|q�^�/�<����c�+?����E����r6Z�U,k��F�R�5�L��1K�9G�5��"�
 n�Q�r����ct�$��t`������6e�u�t�8>w_�lJ����P/��S��=��o�v�#����FA�:pY���u��RG�-�c�	viK��}���?f�`�����'��-�c�	6o���}���2�"]�I������'�
;��P�7�����=)kuIm��9m�X���c�f��r,�����|��
W��.���=���A����U\����Z���g2���`4�zU���>����6}Sq��Xt��Z�>W���Z�3����'n�V�j!�T\�s��f�Rq-���kZ*�N�~��m��>dC�'L��Pq*�Kp�Kp�N��3�C�l%���e�%A�T,�.	L�b�_Id�$�J�A���;�A���C2���c�����p��������	��*&`�^�J��C�T\�
C��W*���!Vu{�U�bU��X������aw����I��R1��z�r,k+�8U{6N���S�g��o4����������������������0�TU�q�N�q�����1�����T��E���Hg}I<�K��P_O���x*�w�z8������T������I"�sb�r�+q�������k�8i���'NC8�vN��D����]�:�8����l�'��vr=p�[�nN�����I�.qp��K�����L����T�<h��	W=���Z�A��:Z����<���Z`�9z���h>)��I���N(%�u9���'����dZ���=f~�f�c�i<�Gm]���Z�vO�.���L����j]�����yO������h]�)yj�"h��Y���<���'Z�����ZW��i�)���>}2�N�up�;q2�h�L?��L?-���_��q\?a�����8�Z���Z�c�t�|`�YH>0��+���^/$����|d�;:�q�	}�����]�q������e��&����@�=��a��L�
��=�����t}�U�t}�y��|����hr�Xez�K�]��&\���������~v8Ft}�8FT?q=��~�K=�����35���|�h�h>SA�h>S�B�x>�{����A�n�3M��LM������,}����N�	�����vR��@���4����&�@C�jdd��i�!QSq5�6Uo���j�}���i�������z�c��������j�xkY�R��:^�N��H�t�30������i���z!��]��������CH�uy�#S=�7U�!4S�i��CH��P�T��M�{��.��.����T\��\�w�zB*��{���z=!��]���������J�uyW�c��������7Rq]��
������0W��S��@*�N�Y�6u��L�p��Aq>������E`���I��b/�Xe�b�2c;�U�R�UvR�U�R�UR�U�����gW��Y��Jyx�B��`Ag�Jy�����,�k��*���B��<X�9�R���J���*E��y{�R���J���*E��y�R��J�w�*E�������<�Y�����%�C��,��UJ��.b�"��y�X����*E�-V)�n�J�w�U��;�R��a�"��ywX�<Jz������*�H�j��R9T+�-�r�Wn,5'�A�>f*�z��a�B�Bf*�z[(�z�1�"y;3�c��c�#�c��c����5� 4G������� 9�?Z$�G��@�h������Ur 4K��v����09�?Z&�G��@�h������ur 4O�������@y�?Z(�G�A�h�<������� 4S��v����Py�?Z*�GS�A�h�<������� 4W���J�l�W��f����g7������4h�����A{D�
����m������^x*��<��4h�����A{%�u6
�+y��i�^���M��J^�l�W���*���^E�?���G{A�h�"��U���� �W���*���^E�?���G{A�h�"��U���jA�h�Z�?���������jA�h�Z�?���������jA�h�Z�?���������jA�h�Z�?����������@�h�:�?��������Wr�1h�:�Xo�r�7B9�+�7h������3�7�Z7��B������]�wg�v�7P��A�h�z�#����v�9�]�A�h�z�#����vM�7�Z�A�&)��vMr�7��$o�5�*��k����G�6����
 �k����G�6����
 �k����G�6����
 �k����G�6����
 �k#����G�6����� �k#����G�6����� �k#���(��h���jc�������]�;��E�&)��vMr�7����X�k����h�$%uc�^IN�����|u�E{%y���J�n,�+�b�X�W����h��������@�h�&�?��	���j����@�h�&�?��	���j����A�h�f�?�����j����A�h�f�?�����j����A�h�f�?�����j����A�h�f�?�����j���Z@�h��?�����j���Z@�h��?�����j���Z@�`�����"��^�N��-�[(�P����P��J��T��m��������}����E��
<���'(�zg(�z(�z%0�������ji@�`����ji@���;����^���zA��y:����^�'����|�^-��j1 �W����Z�'`� ����~��3`� ����<#���X/�3b� ����<[����zA?�^-��G�S9���qmx�:����^-�����������+�k{�W��h� ���^A\������G{qm��
�����=�+�k{�W��h� ���^A\������G{qm��
�����=�+�S{�W��h� N��^A�����8�G{qg��
�����=�+�;{�Ww�h� ���^A�������G{�e��
�����=�+�{�W�h� .��^A\������G{qa��
�����=�+�{�W�h� .��^A\������G{qa��
�����=�+�{�W�h�"Ek�#p���l�!m?��_��D� V?g�_�^G����l�P>e�r��P��gG���u@[)�9@�9�U�(s@�Q��V���:D�Zu�2��eh�!���C�9�U�(s@�Q��V���:D�Zu�2��eh�!���C�9�U�(s@�Q��V���:D�Zu�2��eh�!���C�9�U�(s@������C�8�U�@�h�;�?Z���V���U��t@����V���:D�Zu�N���h�!:��Ct:�U��t@����V���:D�Zu�NG����h�!:��Bt:����tD����
���D�#�+�NG�W��h� 
�^A:���(tD{Q������m�$��m�K�qN�R$���	L�5�l���]��!B��B�<���yD����"�m/D�#�^��G��#]��8A+�J�\+�.�
��-�h�!Z��C�<�=�hyD{��������D}9���@<<���xxD�������-?��#Z����N�-�	��F@$<����kD�#�	��F�T��b��b�W��G\M 6q5��x��b�W������|,�_�hy��D�[\wfj�
i�� U�����A����"�-�e	oq-�Hx�kD�[\����p�hY@���-\���Y@��>.�&;��]���Ur��������8����u��������.8������.8������o/8�����fU(8i.�l�5�yw6������1��o�5�/��������rjaP*��:nZ�����-���~^��$�����/�=�c������>`��=�.��w?|��o�����6����b��\r�Y
���*&���4�L�Q�t��^����'�`��F�N��4AZ���Z0���-��d�4����4���JH�t55�#���O��
����u���$���IWX�]-]a-���[�g������~�o���[�g������~�o���[�g������~vT��R�-�fG�N��$N�z��lY�#�u�j]���x��8y�,��g���Q��`h���8��E������[Mp��k��S���Q�:Ac*��
N������v;��b�b��1v���VX����k����z3=�\��P��L��N������v�<�:�Fta-mg*���N�s��v������M��>��o���r�U
�YJ4���������.}���a7�]Cw�M�}~����5�{j5$��8��p(o�9�ZUp��* '���v�i��9�>pr�����DN�Ot���`����6�+j�7fYC�vTMC����z��;��.��5`;������w[�
�x�8i^�t�P���M��uN:z�N>�qL�����2�M��}\�M��s��Fn�	8�h�/����~�Fs�	t���H���H����j�*�gH�������S����t�I3]�P;�l�v^��v�(����p'�3�����#r#�.�S����������@�6<������Xg��#�Pw��	P}���
o����8R��R����_�����D������k�E^���3�c�?�� ��������#-��	$�!2�=��J���!�N���wX��~H�����$H�C+���v�	���'����o�v���R�c�W^�$�[�����h�]�q��qp�`�-�0�#h���}@������x���JM �Z�;�Z\H�-�HO�������8�-�����g-������F�7�4A�[X[Z������$$�2
�� ��i-���h!�?��(�z
���T�����#�K�F�,�A���C���������ym5��*����g�{����Y7r��@��T�_�HN%��Ry'��$w"��J���^�` wU*�����OuL�z�d�D�/�����#9_�r���]��A�����1�B{��B{��1-�����x����^A��]��A��v��QD�������~����_33�Xv#w�
��J�=�c��c�����B)g�!+�=�nY4�B^9������x&�������/^���*������p�9���I:���Vw�A���lq<�^�
d6K�|�r~`UiQ�w#�
dTK����1�y-}��������]������
d|K���4�.}��m �\�>Gd�K��a���l�@1J9x.�P�r��f^���`;(�G(G�N�?��0�|�r����=��z.�X��V�K9��5R�Y�!<.�P��_��^/��
P��F)�X����u7��o�������5�p�}kZ�����iQ�����E��o���w�}kZ��~������u��/�L��@9���B9�C��A��y(�u�a^wbgL��l��X�A9�����X'v��K�#�c'(���R���v'�R��OP��E��A{����B9������z�?��\���� �W=��x������� �c=�?bA�hwz�����q� ���?�������������A��\z(�/Xb��K�#��J�r�(��o��~���\PW�[.��u�-�98z�����o�7�]���������qp�S�8��p�]�3#�O����'������~���'��F������$��O�9r<��H��%n�o��~NT?�JO]
c4qt)��
�1b7�S~���Ka�&~Rc4��b��mO����'�n�81�!��&����#�`C&�2��?����'��3�O�����'���L�=z�1�n~�W1�[���8�����3��s����~��T
�s��	;�~;����E�=D �i*��$/9�PD",D��������z����_~���������-�8�83���[x���������������p������Fw���:����e��s���\��:����e��s���\��:����e��s���\������e��s���\��:����e��s���\��:��������^��^��^��^���>f��tq]�����A0U<�wl� Y�������-���Y���������Riaj���Ria
�I��8��d�JS�d�J��N�J%�8�*��Y��<��IV)�}'���#�����sN�x�.m��G�xQ�r5C��fy2��o�;C�{������t�N���f�k�~z\}��O��!
�Oo!��4D?=��6{��+�t���=��6C�{���P���K����}g�ig�L?����gl`n����d�~"�u�|�4�0��P���//�=��N�c,��� ��g���"'��a�qgH?�p��~�%��s���-������G��y��������39���n8���'����'������8A��]��	���B�yq���s.z��3�����s����������s	8FL?����_F�$� vv�"���=�` v��{!-��I�3x8m��K_�|��q�
g��D?���v����n������{$N����G�&��q�����wD?�`�v��a����U�
gDy2��F���N
��3�&w��s@���~+�g�96X;��g�'�1&��	�s�����e�D?'�N�3q���~FxQ����p�.��L��N�����Q{����8FD?#d�4�FF7A��c�����ia���	c�����
a���!&�0ld�-��FF���a#c�(%��!N���3�����a@y2�3�&���v����qF)1��XZv{'vl�b�4$2���;�?{8Y������2c�c,3V�[c������+	������a/,3V\Z#���:��Z�B3�'N�`�^N��3v/�Et��2c�'�w��X-�~��m0"�2c%N�<���68�Xf��	�d��Z��g��Z���`��'���gkp�2c���,3V��y�2c��(�����Xf��|��v�5N�<�����HXX��� O�C��p�d9��r,,�V�c����jG@.,�V;�ja9��p0�����!,�V;v�!,�V;da9��)���~N����~�u��~�#Xv��.!��~.��g��0F=���G�o4�9�-p���p�s]��~&N��=������D?;x{���?\��HiO��
���g0���L�(O��]�a�D?��~HO�3q���~v���.�)�@����L?��a`�Y��������g�����k��g(��	�6C�v�2�m�w����:�A3�m�}g��O����/���s���P��~��l�n,.e�8AJe�
��\��1��P�����g�g(�n��7�~�h2C�v3���6q�,f(�nF;�P���{C��M�X;���V��l��l��l���e�-�c(�nd��P���i��H�<s�d���)�d�����w	0W�=�'�f;Z���|�B�1BF��\���|�E/�bv�ea��8)@0��"��D��H�/aO������S�������jO��-�;(�z��Ko�����^�/o��rh��z����|�V{*��[�W��4�X���jO��C����j�'��o��r�o���y����)�<=���X/��c� ������;A9��A;�����D\7n���;����{�������4(B����J�k���+�5�T��A?���7�����$�B�hH�0�Z�4��z���������A�#���zG�q��|*�P���C��������I��2���=M2��5y{��C��������i�v�E���hQ�-���N#�c��C��-��A�*o�u�v�E]��hQ������	�:oi����HV�$~Ly,�	�4}���I�i���1�7G�$>A������
dP�4'h�t�I������xM3�����8Q���N�(O�g'N�;��'�������p0M���0L�,'���T?�8�~��yO��ai����}��9'�O��8av0L������ <'��t��`'J��'���i����i ��m&q�<b8��	���`@����`�)b��I�0;&q��`8��	:�p0�t��`�����`'�<��$N�y��I����8A����.�a8��	��p0����`'�'��4�G�6�8A?&I	��p0ic�T?����:�p0�t��`8/�
��$N�%��i�	�����=��9��d8�$O���	���$N��j������<&-�u�8a1L��1b8��Z���`'���$N���8a4&q���~�<�O��N�����~ZX�&�w��I�0F�8A��4Xo��I��w��I��I���c8��	Z�p0
d�J�T?!>�0L��'���I��CyR���GT?;�y��I[h'C�����Io���u��~F�!Q|���0$J�M����hC%�&���|-C��-Y�0$���$�����n:uh��G��N,���F��2"�F��J��
�G(�WNn��=3���B�����;(�c�M��B����[(�c.b(���P���c���^���������l7u��`�L�@9��1P�i$�����i�c��K�7Xo�r�7B9��J��z;(�z{)�X��X��X�E�k������������{�7ys*����s��f,�C;��r�7#z�Q��m�T�f"������G}3��L������������!��n�./��_����aF�qNc(��Z��x�������w*��Z��_+���y�;�Cm��_+�����r����_�p��	���3�cA�pBi��C�N"����g�"]�E8��|r���D�#p��~hEY�3-��A+3�����]f?Q��{�-Vw��hO�����}��g^
�1;B���Q~w�\��G����8�(��s��;����Q~��������������8���#8���w��c���G2aOdx$�

�d���#�'l'?�K�#��V�H&���d����H&�����#�p�cx$��D��G2�Gt��]�Qz�������D�������?Q���kYD- �`DM���e}�x�Zq�u��b�{���kYD���W������_�"����?��\���v�x�|����(nO3,�[�����4���E<��(��;�������(nj'�
��b�4kX��k�Y�)�������=�d�4�BCX6���A���M��-�eY�n3b����i��~,�
k�b�������w�	1,�
���6#D�
�!������$��1�n�qg1��q��b��),q��'�=�rS�;�![@�7s����6c��g�n3��`v��7�-���a��a����n3���f,�#����<v���{D�������Wv�����i`;�~�}Wv��Gl'����,f�}�3<�9�����-�����������������C��3F/�<g��{�s�S�������s��x�x�������w(���8�����#Fq��w}���x�3>0�q�����3��O���D�=0�#������a���E��iNlQ.=��4�iN���C����.�O��O�F9jq_����Sb�U'���WM��5��j�������<8v_5q�g�^�I����Wa'����0�7-{&q�N�Wa'h	{&q���Wa'x��U����$\�Dy.q�<��0�4�<��0����
�8A?��0����
�8A?��0���^�I����Wa'H��
�8aO�^�I�8FT?'�!3��	4y�������'F�f�����'���B�sK�P��A���3���[�8A����]�~����9�
Y�~�0;��3��B�s���P��av,T?gw���;�����'�z���s���By��;�B��v��s{r��B�`jZ��	P��sw.���Xk������/^��K����v��]�=�9B��wS������k��m��m��[��`oZ�Y����1���k!�g������v���'b}��\�tm����l�m#�6�nX�3?�R�
x)���;!�`�:���F������G�����
#�����,kd>u����,`;�k�v��]WXHk��uu�w����yf��uu�m���s82�;����<N��Q
kd�w�=���<c�sk��������B��q�D���)k�.t���&����0���
y��yj��������6�wP���P�����q����=�c�g�7�;wG���P�`,S9��`,S9��`,�rqV�
���9����R���(������p��V����uwGE-�r����>����h���d�������q�u�����t�C�=�'�IZ����|�������7��wR���1��{��2.pd}�@[����1��o�~��E���ci�f��XZD���1��{���1��!��1��{�����\���q��=�Q������X�^6h_��r�7A�e��5x(������w�������=��\e]k�������c��a
(����C��W�W�����������FO�����7w����g�����g�����G�D�#�j���yo����y�������_�A8�����,�d������>�����7�m��o��c����A?��~��wa�_��?
������`\����[���Zm'���N{�<4p�����C��X{�<4�h����b��������#����G��s���@9�gg��!�����{`>�:�=00>�=0<��~���������u�/����t�!�?0�p��=0�"������V'~�A?�?A9���������
���=��oz�7�����oz��
�-}�r�^����~��������'��c�����.���8���{�������O{n�{������H������H�Y����H������H�Y����H������H�w ���H������H�Y����H������H�Y����H������H�Y����H������H�Y����H������H�Y����H����h���:}?��b�p{?��b�p{?��b�q;�����7�#���R\������
������y���������?0�?�E���������������_3���0�1�?1���������N��e��_4��b�w;������$q7��n����3�7����!�`��8��O�����I����8,P����s����z����~��m;?0��u~`>`�a�]r�w������������|�:�w5�<�����r����0G��G(G����z�~�z�&�r�r�#���0G�]���>y�P�]�C����-`/��w�P�]$����tP�����+���^F(��NP�����+�����z��';I�z\T+���P/����^����z�P/��S��]>9y@,qj��s�WU�������VYJ�>J��>2����1q���-\������v�?�����v����M��������U�l��f�sU3�����\��v�jf;W5������U�l���sU����u-�.o����^<U�W��q��5����������CU���
���M�����Cup��*�~�J��"�����C}�����X��y�$�����\�HTY�U�_:�a��-p��aq��^���'����#�Nnex)3q����'Nr+�[��8�+��d�d����,/A��G�����;�K� 'QZ�����4KN��29&N��iM�7L?�]�������g�@���i��v���	��!��fN���4�<����}���^�wvN��-�#�8�+��gCs��(%��AL�L?������)$�^��d�~vs�7D?���&�wh�����O?b;�~�])��f�3,�P3�<2D?���ydX^�b�0D?�zK�,/���lX^,���6D?;��t��ui�~����G,����n�~7����	C//�$N���V���g3���N�����I��
'�'{��
F��N�N3�'{����]��	�!�o2�9-���u����#����X;��8�8�D?[����N�Y���uB|�=q����`�������7�~��h'��8�����"�M��;��Dsw�h�������d����u�$O���uB?="���
{�0L���gXN8����p��	�lAJ�u������^'L���^'lO-�&�+�L`���^UK�L?�9�~N�<{����+��	�� {��Z���u�����S�D�m��~���L;S��lS�\7YN�pj��,�w��7d9��� O���[��XN��.��,��[#���/=����v�	�d��;�8;XN��#XE��;Y#f?�V������c9�cD���N�:��d�����B�a�]9{�0)h{�0�-H��N�M�:ak0�^'�%�:a��q'�����G
�X�����#'��-h{�0�h�����A���N��:��u��A��^'�f����N�'��������y��Z�
�����d��:vf�k�U��,�u�������4����f�A����t�v���!��G�y����d���O��Z�9�n���M6����[����]cD�Z/4���npE`y�#��'N����ay���',�u{Bk��Z��
ay�[7�~������'���:�;[�
zV4����v��n����Z������m��M����h^�W.���/h�Y^�`#���:����q��I����ay��������aA)����j���zk,�u�w���ZG;����}��:.h�X^���`�l�n,H~ ��\c�Mv~��m ��Af��I�G�~v��[������0`;����%N��,F���'�
�~h�f?G<aX|�w��[������K
zA#���TGv���c���9�~.-�#��wg#�?����wz#��G��#=?Z`����M��9��������N��~�{�����6`�i�OpX����3�����N�d���qgY���1������e=�S�dY��4��aY��W��l�^Xo��84l2�zZ�Y��2��wm2�z��.���'��Y�c?b��e=�X��h�z���e=#F�X��4�A�,�q�3�y��8.$��'/$���-��,�qW�#���](zD������aFO�e=������f���G��/�z�z<�eY����8��8-�0�Y��4� O��8D�����a�����m3�����/~��g�<���cY���7��i��������2��l������������8��>�[�����$��3��&[�@��&@d���zz��lyC*qR�)'=�tp������������dpK��~z���a5}�A�3���-�@:�-i
���M��Y���h2�d�<��Y���8���}�3�d�%N��l'[
���8�����y�3b�]'�E�l'�CZ@y���Nq���v�'�t����<�v�=��bA=�����I�D�p�1�=�z����=��H�'�;l'�3 ��g8@�;��--�z�w���G(%f�����pV������������04����,f8��;���C�@�0���0`����g8�07�1`X���\
�;�F�����+j�8�B��j��l���,�g8��w[z��|�KOq����o�&N���Z�d~r����c����c�����9Nl{����w�d�9;l'��%�~2`{:�,f8����1b8x�9q�}\��pVv�=��	c�p�m��&3`;r�g8�vdc�p���;�l��b�l�{���
���;x�7q�}\\`=b8���]$����;�|���6�yb�znDD�z��v������zn�n�z��������M���C�yq��"�
o�"���1�O{������z�n�!�|;�\`=���EOz�N����S���{1����7��e�;�=C��% '��pw=C�x�/q2������!�B�v�!�J��!���fE�~>E�!�g�`G�d;���"� ���S��G��"���E�����!�'�)��C�����+��=C�g�=C��y�1��G�d�Y��B/�0z�z��!�b�q4����'N�s1=x�W�EB/B���Io�`��!��G��!�b�s��!�'���\�H/E��:�����g���v.wm�[8u�B/��&��bGzcD)Q��N��+����0�^��c����g��b��!�����!���"C���r��3�^��c���G����3�^�'�=C���K��+n������[g�r��z���,f�r�Jz�Co �@?)B��=C�u&��p��{��+���W�U1�^�&3�^�g��=�o���b��z���_�Wd�w��y_2��x�r�v�����a����Q��s'�0��;����v�Vay�r����;��`��nq�]5�-�g6��=�7=�wN�g^��kN�g^����E�T�B�d������3�z���?S�|����)�C�~��g�!�?4����y�����3���qhnd&~����������_�z����7�o��<���Q27ru_�e��p����� ����IlW���IlW��Q`y���d�L�#p�U2qN�IV�$%)�)q���{"�y07rs_g���������Wf�yp6����oD���xn��7��������Wdjo�HWdjoX�k�Q�����Wez��_�
��
��7P�7�{_�
����,��F�2}p�w(��~�2}p�w(��-�����p�zp�������|	��jp���3
�1]'��
��o4(�����[o�_�
��c�%4(���KhP����`P������L�s��L�&��w`�S����08N�c�h�s�d>f��|�������
�s�d>f��|���DbNWy��9p���%'K�_r�HL����Sr2����'rr�\���'rr�DN������N�����9�~"'�����8�~�T?N��p�f`��JN��9pR�,8�~�7��>N��'�����g���9pR�,8�~��~����DNn?���O���	7���)9���I�����	���9pr���C�8�~�
��>N���e2�����'�����I���C�8����!}JN��9pr���T?�10�����g�I�����	��!}�T?N��'�O@=�s���YpR�,8�~rj`H���!}'�&���I�����YpR�����>N��#H�!}�T?N��'�O���s�����\?���' d��)9�'q�,fH����Z'�6;�>pr���T�
N�u�����'�:��X��'�:��7�1N�u{D��C�Sr�1��'����ZE��:�1N��x.�2�8�~�T?N��{D�������(�a����`�O��2��jp@,��y���a��DV3�e���{@���X�X7,�cabS���%�)��������~lI@l�r?�$ 6e�[����
q@l�r����=��������������'Yi���l=N��!'_��s|�y1>�Y����a.����<��xz`��b|��r�0p!�������<mQ~�����<mQ~�����:���X�;���t��{`����<0�916�������?bb|-1>��'����?�P~���xB��?�c������w���
��������?6(���4(���4(���4(����h����I���G�'�������<0�a�4���E�=0�-�����P~���{`�;�������������(���G�=0�=�����Q~��'������a�4�B	W���BW���BW���BW�G�=0�q�q\��������-4q�{�����P���q�qA\��������}`�������=�������[���� �[���� ?������-�s�{��-�s����������J��=��������:��=��������*��=����������=�����o���P���q������������������������?�[���?�?��������������`����?0�q�����������?�?���j���Q.��9��!�/���
�}.
�(���������������lx`>�?������������lx`>�?��������������z��l|`=D6>��?X�������������?����������?����������p�x�����������x�����������x�����������x�����m���������t�����l���G�}`��?�>0���m�������g��?�����������l���G�}`��?�>0���m��Oo��O�����w���w���w��t���w���w��t��t��t��t��t��t��t��t��t������������������w�w��G��O�������{����?}���{���Q~w�w��G��O�������{����?}���{��$�����N������{��p��O��������7�=��� �����N�����������������������������������������������������������������������������������������������������������������������������������������������������
�?������������c��7�������B�8�?��L�����������t��op�1�?��������������|��op�1�?�������������������������������������(��?�?�����G�=0�q�q����=��������������[O������I� ��B9�u'����<}o���a����������!��8��5��u���x����<�(��aD�=0#���y�������p��^z�����C��7�/=}������mn��^z������P~�������P~��sB��?��	�w��7'������P~��sB��?�M������w��7
���{��{������� ����;c@~��KO��������G��?��A��?��A��?��E�=0�-����oQ~���{`�[������������w(�����/=}���^�3�w����=���{��{�������(���G�=0�����P~����{`����?���������(��D�=0�#��������{����c��^z��w����=���{��{�������(��?�?�����G�=0�q�q����=����������;��������Q~����������A~��P{.��F�!n?y��o���r�[Y������r����Q�!<m�/� �����<@y���A��w�r�����Y����{~��@����?�����u4����|
 \�������u"���x
 ����bA�h�������������<"�xS<A9�76P��"���h���C�������Cc�r�ol��E��b{(��P���;�w�	���3�cA�G�Z�?��-�p3S�G?��NejA��7� ��L-����8����_���[�/�����bA���� ����u���9���<=�k��r�o�����<=�O]�r�o����P��D��A���r�o7@9�W����O�������"O�jS�r�o�@9�������������q���'6� ��� �eM=��I=�?bA��/�A����}@�o�� ��{�?�j���~���4����D��r�48(�����C�r�� ��(���r���A9�W���(���P���c~�i����@9�w<A9�w�c��i4P�A��_� ��F�?�W#��������G�j�������s9�w;�=�����q/�����\�~�v>{)�l���r���r�������s
�:L�:m��rT���r�L�[ ��c�#p���	��!�%X�2oa�+��8�c	';'{,�d������]��<�`������gN�X��K�l5[���M����m����}�8���x���m�������^<���z�\o�R-�dN����I����7�%s"qZ��s��VZ:'
N>'Z��s�*�e���)���DNqN2'l)O��M��1"�X��5oA�k�`9,y Y8�[�<
�8QJ�Q���fG�3q�9n���;n�a����9'���	���.y���������Zl'��'��'��'{`����=0Qr�&
N��v���'����>�}2�w�pv�����O�>�]������S`g�v�>�]XZ�pvai������g��=�]ZZ�pvii���'��������g��;}8�d@J����)���Of}8����������������h�����>���"���r9L2?����a�����\����'�r�d~�?)��$���I�\,��a&���O��0��|R,�I����b9L2?���a�����X����'�r�d~�?)��$�3F�1��6hg��v���i@����.8���h��3�'}�-F����:���.8���'[�KN��g��v�I1CO�?�]pr�DN������,��v������v���9�~"'�O���3�'�O�����\?����h�\?��?�]pr���?�]pr�DN������Q��v���9�~"'�O���g�N���w�g�N��p 9�g�N�����g�N��p4T?N��'�����'�������g�I�����	@�y��Ypr�DN�����<���'rr����'rr��b����\?���'rr��b����\?���'rr��e����\?���'rr��e����\?�s����T?H5OT?N��'�����'��'��'����?���AxX&��'�����g�I�c�����'r�T?N���"�\?���'rr�DN���"�\?���'rr�DN���"�\?���'rr�DN���"�\?���'X���'rr�K�p�DN�����9��~��2��_�g��/������Y�����,��@�|�q~ �>�8?�~�e\N�T�N~����O�,p�S%�Y.'�����q8��gNz�1�����:���O=p��'�-'z�	���D��!�����3���O=%2�p����K���kw����
���
��'���u����dX��	���v'L��0�]��l�~�^ai�~vai�~�)��P�������	��KC�����	'����	;��P����b�~������//��'x����	>�b�~�������-��'xX���	>�b��=�����@?
�O�i�~:�OC���~2\�	�/��8A?.������L���L�O����"�e�i��q��_8.����2'�'�e&N�O��,0�e8���2t��p�����2,��p�'L��0\f��d���v^.3q�~2\�	�=/��'\�[�O�;,�	�������������a='�'�z&N�O��L����@?9�3�~r�g��XO�_-��8A?9��\��'\�Y8*�q.
��
��nG������BO�v{��P�P�pTh�|kT�r
��P�~ta���	��P����QC�|Fha������P�~a���0Th��^*��#�
M��#z����]�f��&N#z��������t>�{3����gl'�������.F�=�Lc��~�0���g�.R��avD��=��H��k�~�����'����V�H�s��T?M���R��9�.E���|��9�<�~ O�M� O�M:�d8��	��p�����@'�'��&N�O�M� O�M�0�4q���~��2h��1��9�
a8��	��p��%O�sByR�����8����7x��8A�4q�<4q��3h��g8��	�g8��	6��@'��M�0��8av0h����p���������@��C)Q��@Jj�3�m0>�p��6X4qB���s��&N�j�	���@'��j�Y���@'�&��&NM��
��4q��3h��g8��	V��@'����L��p�����@->�0h��d8P��I,�8A?����&N�O������p�����@'�'��&N�O�M����8A?4q�~2$f��dHL��p,��8A?���Cb&N�O�������P�����&'�'CMZ|<da���	��P�����&'�'C8&N�O�pL�����8A?�1q�~2�c��dG���,��8A?1q�~24���]�,�XDx(���Q<`�+�x�""A��E|��M5b(?�1�P~����C�|da(�����L�(��P~���N2����nsj�ZF��dV%���XK����+�����Jy_-�O�v��Z��Tn����Qe�Kk�������*�k����P����~�9��o7�m�e��4�����gB��+��H<�6��=�K���Dj-�e�J�{���1mAX�`�����V6��.]c������;��i�u�k��s����Ji_���A+^�`hZ��6 a��z�N�T^�t������:�Ryu����J�X/�u-���E6����Z2������I[S��s�Qu�I����t��uc�����~�y�9$@{����}����_5;���fw��R�W8��k���}�������j����J�`�J���J���J���J���J���V>�W'�0�!�c��f;�
E~����������_�z����7Y���?r#��iO������1�#7r�\��?r#!��	�#��A���]��HSvU�
�Z��+���(����V��Tzv�*�<_�q����u���Rn����0���,�ky��K�����^��hU��+��Jyu����TO��u7�W��T^]wSy��L�W��W��T^]�Syu�N�S�|�q���t@1��|q�G�D7r�\�4�c��m�D�^����k\uaK���-�W��m�s^�mK�we�@n���m��C��r,�GV�����Y9��EV������{d���Y9�{DV�������gd%q�j��6�����x�W~1�����1��_�����n�G}��c<�+��Q_�������x�W~A����2�-�-F�ch��� �b����b�8�G���	8Z��L���7e��*p��]����_�	h]�m����_�	h]�}����_��h]��������D�W~g&���K3���������LD}��f"�+�8Q_��������D�W~w��]����w��g
��_�)|~��]���w�7h
��_�)|~���]�%��w��h
��_�)|~���]�E��w�7i
��_�)|~���]�e��w��i
��F�t����Q_����w�7j
��_�)|~���]n$PG}�q��-��h�{5���/���YS�.�jM����5�����	�3S8$��L���[3�C���	�7S8$��L����9�&���TB�Q�pHxJ��!�9���'U/�U�pHxZ��!�y���'V/v�����$��C���	O�^8$7�����b��"_�_�����<��LspH�m��C���v�����5����98$�J��!awj	�TspH����C���v������5����98$�j��!awk	M�^:$4�z���4��CB���	M�^:$4�z���T��CBs��	M�^:$4�zL���K���[/}�p��]h���w�)�K���\/}�t��]h���w�i�K���]/}�x��]h���w���K���^/}�|��]h���w���K���_/}����]h^��!���K��fA/]���\�i��r��	����f/�c�b�\�i��r9����5��/�X�<�\ci��r�����5��/�X�@�\ci�r��)��5��/�X�D�\ci�r���������.WC���\
i��r5�i������.WC���\
i��r5�	��%�f�.�8���\�hN�r��I��%�f�.�8���\�h^�r�����%�f�.�8���\�hn�r������9��]��4�w�������&�.��4�w���������.��4�w�r�,���M�|��s������D��?@3}��M�]��nO���=�����)\~��p����u�|
��f�.]���th���u�I�K��f�.]���th���u���K��f�.��4�w�e������&�.���tHh���!���K�dy{����X������c���:,o�uX����=�ay{����������c�w�������G�]<�>���o`d}k���ht����X�[�
�a!,����P����:x=D��s�!������o
5�7��Y�?�o�	Q]n�	Q]8������x�'D��	r}kP���!��!��!��!��!��!��!�D;p$�v��q��$���� A\�=	�"�o���	���	���	���	���	���	��r�`��s�`��s�`��s�`���	�h�	�����W�[��
��
8����z��v���
���
�c��E�D��
��
��
�,���1���1����
�N��7�07po8<�t����������������C��G��D��
�NC�+�c�+�c�+�c�+��9\�o@�P_o@�P_o@�P_o@�P_o@�P_o@�P_9D�X�9D�X�9D�X�9D�X�o@�����a1Z|5,F��O��
���
���
���
���
���
���
�Z�+y�+y�+6�"W�7 rh]n@�P_o@�P_o@�P_o@�P_o@�P_o@�P_9D�pH8D�pH8D�pH8D��
���
���
���
�\1Z�(F��Q	�D���0��b����o@���p�\��p�\��p�\��p�\������u��C}��C}��C}��C}��C}��C}���wa���G��G���O}�]X����r����RT|������@��h�@��h�4�����>�.7���h�5��s<a��p<a���d���C�����
�!��
�!��
�!��
�!��
�!��
�!�+���������\}�]n���zk���h,F���h�5���4�h�4�h�4�h�4�h����c��c��c��c�����
�#��
�#��
�#��
�#��
�#��
�#�+�>��>��>��>��
�#��
�#��
�#��
�#��
�#��
�c1Zo���},F���:���b��?���c��c��c��c�����
�#��
�#��
�#��
�#��
�#��
�#�+�>��>��>��>��
�c1Zo���}����}����}����}����}����}����}����}����}D���������������������r���������5��>Zd}kG��}�����������}D�%������D�%��I6����p&Y��[�=�����h�5�#�_���) �
�%��
�%��
����o
	|��K�y�w	���K���<!�[��7p���7p���7p���7p���<�#�.�C:�w	���K��N�]�t��n@:q�n@:q�n@:q�n@:q�n@:q�n@:q�n@:q�n@:��zk�K��,F���.�C:�w	���K��N�]�t��n@:����t����t����t����t����t����t��rHg��pHg������������r�Y��[�]�
�g1Zo�w	7��8Z7��8Z7��8Z7��8Z7��8Z<�c������u�y���},|����]8���]n�Z�����������������������������������������������r���u���u���u�Z��[�]�
�k1Zo�w	7���hq�������W�.�Z�.�Z�.�Z�.�Z�.7��h]n�_Q_o�_Q_o�_Q_o�_Q_o�_Q_o�_Q_9���]8���]8���]8���]n�_q�n�_q�n�_q�n�_q�n�_q�n�_q�n�_q�n�_q�n�_q�n�_��zk�K����w����w����w����w��E�r���z���z���z���z���z�����������������������r�Z��[�]�
�k1Zo�w	7���h�5�%����h����h����h����h����u����w����w����w����w��E�r���z���z���z���z���z�����������������������B�������Wc�n1��]��L�l�:@���C�HU��P���P(R�v�0��]!,�Y�_
�j;��T��E��mE��mE��mE��mE��mE��mE����"U���E���G}�HU��J��G}�HU���R���Q_)R�����j{�W�T5��
�HU;�hQ����P��p�(R�8Z�j-�T��E������-��C1ZT_�.�j�.�j�.�j�.�j�.�j�.�jG�.�jG�W�T�#�+E����"U���J��vD}�HU;��R��Q_)R�����jG�W�TM���+�������X��K�.T_'lE��@��v���H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{�H��{cH���F����F����F����F����)R���"E��[�H��{��Zxo�"U�-R�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-R�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-2�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-R�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-R�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-R�j��E�T-��H����)R���"E��[�H��{��Zxo�"U�-2�j��E�T-��H����)R���"E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���C��7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T-�7�T=xo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�Zzo�z��(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���(R���h���{��ZK���_���_������������������������������������������������������������������������Zzo�Zxo�z��8����8����8����8����8����8����8�u�i���NC�S��wL�2F�9U-,��jq����'��jq�xNU�C�s����s�Z�0<���	�s���s���E�D��E�D��E�D��E�D�����-��8Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j9Z\_����Z���b�������-��8Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j1Z<�j9Z\_����Z���b�������-��2Z�iE��
�r���J��Rn���+��Jy�R�^)����W��+�����J�|�|��7W��\�ssE��97W��\�ssE�+��Z~E��y6W��\�gsE��y�+�4W�i���\���"sE>��|��4u�lW���Jys��\)�W���r�<T�;W�[������<;W�g����\]��������������V�`Zde�q0#���8�Y�\���X+[b����-���bKl��9��-��%V��HG�X� QbeKl�tD��-��meKl�%v���i�+UB������P(�>���%����u����������\_�Pp}��\,NC
�����Pt���P�*���X��
E����"�KKHa���u����fQzi�(
�4D�^"�B/
E������KCDQ��!�(��Qzi�(
�4DZ^Z���.Z^Z
-/����&���K;@!������rP�p9(�Tm��-���zK}��gK}�P�R	)T�TB��-��"eKu���R](��T
T-��>-
<����BJK}�8���SDg���Y:��Y���,�
�,
<�i���4�	C����4KOa����0�rnQ�e9�(��4�{Yx��,g,T�3�*K��*��M��OHQ���G�����BK;@������r�K�������rwL�����BKCD���!�I:KCD���rL���!�x��Q<ci�(��4D�X"�g,
�3�����-/�3�6��K�E�����x��fQ<c���x���Q<ci�(��4o�WZ
�+�������J�A�|���h��dP4_i2h6��dP�^i2(D�4�W�
�+M���&�B�J�A!z�����dP�^i2(D�4�W�
�+M���&�B�J�A!z�����dP�������FX����?������?������g��z����/�����O�5�y���y�Z�{�� �p�����@!���B��@!���p��~�b������=P8[��B��`���-[��B�Hp@@�m��3�'BB�����VE���/��E� =��=��P�|B��E���xt�s��a���Gw����q@����������@����s#�����=���W*���W���Ow���r��*��l����E�����f�?�p��������:�6����g[��t���g�Y������$��}V%����*��y���Jb}�gU��?�Q_����<��z�W�,�G}�������g=�+�X�����?�Q_���Ag�1��b��~��L�-A���r\�������[���t������L�61���&���o>����b6%���aS����0l���������X�*�=nn�_%��wM������l���_� �aS��S+�=!��M�
z}�aS�������\+
�����V��-~����(�����!+��8��1�}� +��v�Q�������Wg�_%��FV���thX��`}�J�����[D_k�-��]�1��������M�.L_��v�An�=��b{�v�
�a{�`�a3l/�����>�\�^���ql/�����X���$��D_������z�����j��tMa4��:t��k��Z� �P�B;� ���B�� �P�A�!��wz�8,��_0�b���9[Z����f;!+����"+�:n�����M���mA`��"������~FV2Q�"��WV����v��J&��'�VV6QN�2��l�����d���X�81��u��&�����p��3��������	+��&�hv7��	���G�9��eEu���le
���wL�����i^��J]
�/��L���`e���6he���9��R�2�3�b|��Y7����E�����de4XWV���G�9��7(,�����Ub+N��z3��1����"sx�=�b�iO�0��M!��ZWH������q��`��FTm��&V42��M�8��{de�z`u0�ql�{�����i�Q��������{{n�uf����:���dee��
�e�u_��,��6������w�`e������w=Z9X���CV���A�`�u�=�X�>��v�b�f��#+�N_x,��}�J��iGUt�n��b�����-���Pmv�!�*NCv�������>D����n++��v�i��F�8�L_�R���Nh�Ys[T����eee��Z�������_�8^�%,g�o��eL;��F��]���*��WV���)�������,?���~�d%th�����(w����
��g�{��e��}7���|��8���
��c�WlX
	0K9���2]l���V�u8}��?�h���?�g�7!v��6 �.���K,�7��b���XLJv��/�������h+�E�P����"�r�'VTv5��c��L�"��_�9�M!�w+�}:\��
?��c�7�5�2��"�_v��O3�L�XQ�e�T[v��O��L�g���]��e�]��s�%�]��m����"w��fY�m[�
������n�$V�Ev�&���`�l�\��[6���o�;5~^P�;��hI;�8v8���LkN�����_
C���Y��k���~_��	��.�����������P7v&��q`wal;�����~�p�Yno��8�Xno�L����[�"��N�������b���58[��p*�~�`�����S�N��Oh�����X�N����lew��J�34�i�&��h���8=�5�P��5���K�&�	���	�����kB�m+�&L�a��+vM(�S�]
f@�f����p�5�`}�-����v��`���)v;�RP�E����87cy��-��{��s��`���5�e���{ee���WVf){���e����X���b��L]�#��t�_E3��t�>�r�,��;�,Kw����0��
,'w��:>2]���t1�6,�����ig(��,��-
,����y�2}���r�L�����b���L�I8�,�w{�Q�Y�og'��;�ab��;��Z�2}�h��e�=Ne��;��jOyg��G16T;Efy�C,UY^��3x��;�U�����m��������~���x��AC��x�y�S�e��CaY������b��*�,����ad���hd�������������cST�tq(&�����2�
��;B�e��c����a(�,Cw:T0��;���XQ�K��T_�_,���B!e�U	
��<�=�BL��b�2k���P���a�������������nT���aB�b�r��	���!SZdez6���N��"��K&���Y���/�9g���mende�9��0�j��e�8-��1]\�����su8DM�^v�',c�� ��m~e%zOM�d��A��cWx��V��h^�k++�����1�bb���Wx
��k�
�A�,6�_�3���t��f����d��h����q��&��8����g�-X����h�3t :�$F:�2��uCF�(�����x���#<~��2��<�I��#+�3�P��0:��b(��"�
CFW�W�Z��S����RX'v�&z�����!�2L�8��u��qzeA���b�+4�o��2h�-���Y�U��`�@�,�br�s�1t`v���-�3B��{�	�H���3u�c�42T_bE������L?b�42T�+W|�����c�>wB�z�P}�T����p��/��8�Lm�
�0|�Vvk��q�����f2�^�<
������`ul����E�ah��!.�ch<�=K�{����+j/��%��`�,�*�Z�Ve���	8�.����!g�t�`�
y0�]
��a�+v�a��)�y�*��i��������/�^��C��v��C���T4�;Wt�y�S(�c�����"�^S��dH�8���vq.v,������`���EX%]��3�Q%#�Y�@�gK�{G���u�a��Rlf..KQ����w�
5�eB�B��'Dvl�+dJ4�-��t;Bn��bo��p^�]Y��jO�?��m� �cx8�N�$1<\��5���C�-�*���;�E����E_����C�����!�k��L�����C��B�L��]v����kd����b@�����}��
E[����_ezf�������h�:�3T@�-:�F�J�Wk��e�z�b=c���.��km�f���R$��Z�w!�:��!��b�2�\[\�B�����!�Zxp|e�����n���(�������78)��ux��c���Z�i�/��=������n����]>~�n2d������������m��
���U�j-�8C���X�j-��r1�Z���c����C�Pkm�V�g/pu����i����f�b,��4//�ckc9���E���1d������x��c���-<�ls�8�b���-f#C�%V4 #������-E���E�j�pl.1�ck�b�0������n+X��v�h����������2�Z��x�Zk�m+C��C�2c��v,��	��x��c�v�[������s�b��� �a��%0��0��0e�1�Y;���N.�NK1����)`��vF�s��g�R��v��Z]���a�-���+�%t3�^��p��k�����:�-K��c��e�)%D�Wg
���e���U�g��[[��u�X.f�g�+3�f.�������a��[j��-����R\P�P���u�^�a���wu;�-�Sua��.��v��Rc�d�J��ea�N}��L���3�f�eh3��B�B}g���-�P[V��[��xD��P�
�g-z�=C��O�z�$���eL��nY��������uxM�g�27�+����,����1{6��W�=�.o��7wc�	���s��L't)z������e�s#^��8!�t~}�^���k`�������������������r�j�pc]qO�g���rxdez��dez�4E���-�X����;?����������?=���_�����O�����<=}�������go^>O�W��<}���<�����yz���?|�|�/����}��w~��������+Ok��3��O'�f��b�m�(�F	G����)g�������X���j�\e1;K����J�Y�h��q���)��n�(�^���dw�W�,<��~'I3�AHV����V���[�H{�mT���V���r�"�u9�H{]�+�^��f�:i�rh�oio����7�{E���Q�����|h)��U���+�^W���G����p���(��U���7#zE���"�-�������������[�H{���H{��N��v����vV���:�H{]]T�\�4����I�qT��d��4�h�����I}����l�������*ZnK�-�E�i<A#�4��A�Gq6������*4mSC�i��4����m�j�M,�=�Ok�4e�E�NM�Y�]�4��ZT������2
��S4�����&����Yh��.����iz��}��M-~2�A��E�
��Gm��&r���c�i��.����Y�]�;\M�������wB�{��}��i�1���bv��=�]��I��i%d�^���e�0`w���R��c[N.����-� 4iKtH��EGv8���4M�h<��bw��u���7��M���1���Oh���i����
\�����A���;�����i��/�A�n���-f���xv��l��{�3M��Y���_����!���"4�o�Q�bw������y�����U}Y�bw����\�����iV}������i����A�nT4�������Q�D.N���E���w�7����iz7d3M��B��;�i��.��1���]���Y�i����#�:o��������k�\�&r9�V�nT4������bw��y�]n��]����M�n�.;��FM����gbw��)[��q���M���M���|h��i�����������(>�
�uZ|��4����f<���]<��H���<�����_�i������#���Hh��M��L�;�~H�=bwM���<��.������8����Y�]����]4-�et�>8����e�{y$��e��DE�m�w�-����Q����#����&��i*L�m�3*�"�lw��?�!��fmoK3�>d�k������d�;��W;�����&r�4�o���S�F�y�{g������1f������)=�4�����<jM�������i:.�i`w7Z�S�t���/��:�"4��lU�hz?����i���4���O
���7!��ij���G@��~����i��]�M�����H~S�G���]�M��M|�}o2M|)MS������>W�L}�4=�b��y�i���M���&��q����.�&��qO���.���������5���7�L;�������}��r[��n[�����)v7�������'���M�n�.����!������&����tc�E��N�n�~3�]�O�|���;�G>�]��F�����g(>�]����lwm���v���7s[��^�w�-r<jU}B�m�\����jg��v8�%d�kuF���E���|�����}'i�Q�!�]����H[T;����1���ZnK���Qg���
-���k�1����;�]��u"iK{lK������L��;���XM�m�����
-�!�]gU���u^��I[T�]T��m�v�9��lw]��-���������k��Mi����u"M���,���wB�J�7�eZ��.����m����Z.B�r��%i��E����L��+�������w�����-��jZn��3�eV��v��L!-f���������2��� �������(�m_�L��;�������lw��4��p���u����o>�o3�&����%Y�L���e��n�|h�e�+��L���^}�����-�eT�e���Zn��'C[��
c�h�-�����-��o�O��b���f��f3�*���n�gH��-�e�/@�v��E�����F�r[�Q���M?�&rY��lw�m����;�iS����~k� ����E�m��#-���^���������D���~��L���e�x�e��o�D���a�����4�����|����������k���qGZn�����[�k�c�f�;lc������f��������6��q����g���q�M�EE�����1#����
�f�����)�C���������<Fm�����LcF>f�+�%�r[�<~���M����y[o�vn�����6dZ��s��9��v�=����vwq]Z2F��vw������e���������H��6(�������f���������������vw���������\��]����&����w��.��u��K�d����+Yg���J���.��u+mQ���ns:'i]��se���p��+��L���eZw��v7�E��6)Zn���KI�m���
Zn�9'&��Sn���.h�-�t�%-��2�
��c��8��G��b�IS���;c3-�Zw��f�4��iZn�x��t��5�xV}����A|���]M�������������;��j��\��)���jH���4��f,{��M��dZ�������Nh��H����@S�G6�E�w�&g��xO���1G<f�j��p��hp�v<���\M�D.��M���u��D�\M��9I�r�j�U}�-p��h���|���@S�][�������r�6W������������`|5��p�����HT�Y�Y�E��2��x���&����
?
�C�
������G-�OJ�`�+D���B��K v�/A|`�+D���~�q��n�����@@�H��: Q��E�`�+D})?+fy�����W_1�X��*J��d��b�����'�U_QN���v�(��b�����o��N�������0��&:������"JD��GQ"*4(~+D���]�+n�BTXh�
\r�b�!�m��[��)�l����L.�5
(���n����&_uKD�O���C ��!��B��/e���[�D@�����
Qa����K+D���r�P,u�5>Z$�:V�Y�������o������&c��^�8���o��[>M�!K+���%�X�X!��vW@�'�:V�C.B����1�'%
\���W_�tK]!v�/A`�+D���?o�2\���R��Z�^���W�b����r�,u���!���X!���b0�Z\������E�F
YF5p5.K��{�&�����#X�1:������	Q_L� ��;�����(�z<���$7W�^})
K=W���R� �z����������5s�B��]���� ���.S�m9�R� ��t�4r_N�!���b��!�F}	D-!������o+�����B��W��T.,Q#��g5���CG�L���
��/e��R�bT_JW�R��(�:)]K=W�y�u�9_�K��e��Tn/����e *�������o.Q_]"D?� �~T���u����tK���/�`����B��Ki�X��B��K�X�Em����q����f?�+���js*����l�f�|)B��Z��U_��W_1�/Eb���BK�	
&��W+/�������X!�;����vH���\�k=d��_��%�1�!��G�'�D?=d��/E�R��@��_�����_"Q<�c��.��
1���Uic�X��E����*�lT_Q���]�LtD��N���_Nj����DT�3���/!v�K!��Z�t�]��D���C?���~6��#��W�QiB��_JW�W_1������%��W��>���67���is�=��S_JW\�����uk�WDi���Qq� =*�Q_J��U_Q��Q�6[j!Jk}n���
�AF�6��������y�%��KP���b�����3ZE�~Fi��(
��;��t�m��@��/�+�?~�D�N�S.�d��3����3����3����t%���%�����|UO�D����\��$�K�n4^,�U���R[5�^,�U��o�����&�D����4�"J?�R;5�^,�����R;5�^,�J�����|�	Z+����K�����V�-/���QK�2_6r/��������b����Xj�e+�Z�zy��^������&>�Db��^wE,�v
�Xj����b���[��7���}j!B�����es�T>����Z�b�U�����Z�b�������u?�R��g+
��J�������$^,�>%�b���Cb��O�SK��r�JT	��u�Q��DY���.���N����QN~�J��F9�H�h���V��v�(
��(
�(
����| Z��#Q�k�4h�Di�����I�R�fM�-�(��O��F��Xj��S,���)����Km�x��6z<����	>�O���x�O��|j=��S��Km�x��6z<����	�Z�'Xj=�`��x�O�x�O�x����	�Z�'Xj=�`��x����	�Z����A�g�:����j<�D?��(>uP�Oz���$r'P���],uT� ���H�+����j�,tQ,���SnJ���Q���Q�Y��r`&B�r���7�0�z`��r-@?�D�W�@K�t�+�yAG��CZM�
6@�b�G-x'R����|@T{{�Y�����b�U
�&������ :���-(DQ� �u^&���X�JD�~�E���E�����^����(�z9fam�X���m��Z��}�V�9��4Re�p����l���l{�H;����}�tE.
�$D�e��r�PR���y��2��I���>����N�!Bh��^��n!N����$��'B��G�[k�a	e��d��2$f�|#�	�xd��K+�t�k�����
Q1���������B<29y��y�3��/�e~��rK��g&�G"��?��/}M(���s6��
8�����wmkK&��r`�_
Y�i��p?s6Q��^���E���j$�{�m��:����a�y7	1�a�����"��$���$�V�F���[a}8>�#Y��P1���3W�v}���]�V�H0�i��t�Z/L��/�h���"a�g��u&w�MA��%�'x�����R+L�j��)\��D��*��I<E����C����H��y@����dr���b+LGf�y�-"���AQ�/]�������?3���L���K�R.��b����k{[DX�]������B<2�2NW��n�L��k��aw.�hb�D�����L�gw�2��]n�����Kc��"c&���e�p �|Y�s�Y�/�%�����K���g&�
����2����g&�
Q1�6�Q5��mp�kM��]3Y(�(N������A{P
�����bNuWd����Bb�p�)���%��gv.M<*����Q��e	�w���c������@�iUu�A�n��
juk}nP�[�s�Z�Z��W��
������}O����^�3���&������i���A���|?/M�
17h����A����4h��T9}��eb#D��F�Q�;E���:� /D� y^��
�B�
���t��e����-�H��m���BPLF3u��*��(&���b���ULA1	H83E��S���b��=]�G)�u���������pZ���qzl��#��wP����A=R�z�����#�wP�`�4WG0�������v! 6~�N�����(
�(
��(
j��u�h��9i&m����V1)��6����FKn�)�����d����Y`
�II��)&c���%��vE��$_E1)k7�2��"F���\:�L�j�f`P�^d�L�Jm����[fRV�xeo�s��IK|�LZ��b
Z��f��5�����������5����)*�G�OQI<j}j�����VI<j}j�����NI<j}������NI<*}�'-q�O��z�������m����2�IM���v����!���[�{��7�e�[�����iv�\V�N�@K��D���A��?%17�r�� ����$J�t?�4H��J�t?mnP��t�A�Zs�.��$�]�_I�
�A�S���h��e�)^|��"���AQ����_�E���(�|�Az��WD�R�Z����DA<�"Q�l�
������v�J_���+1K��?�f	�z����Ak_�4�Y��
z<���A��.7h�����~v� ��N��������.��<+��A���|�+�j��\v�sV;E����r���fY��D�27hR���ROj�9�����X�I�2'�zRC��ROj�9�����X�Y�O,����K���K�h���^��9���t�*�]���9)o�9������e&�(���|M����bR>��A1)�N�L��q��ybR�0<����'�B������e&����$��a�J��rr]�$���k��O�?�6�A+���|tUw��3k!���zl�5f���Rg���27���u�+ZTg���2���:�V������]������U�����4����=4��;|��L�f���������-�����G���V�	�8���Y�G����;t�8n����-�o��-Nj�2��hq|���hq��uuG����
�$�Ima�	��)V�;H<�:\���'D�����I5\n�������t�x��Z������whNJNJ��i�]N�U:����;��G��s�x;�ZN��_����c����n�t�Rn����c����&g8����#z����R��d��RU��r��a�dg��a���i�a?�h�!�~��02�~m�hH�o���`��$��=B��S�|�)Op	�
�*��WDiP�
B�
�����
j��$����M�r��x�*	���U��]�$��VI��
	�+8�(fb���H�+8�f��D��>�&J��&J�:El�A�&J�FM���(
Z417�Q��+8�hebnP�ekj
:�9lB���/���G�K���#I�N	kbP���e�D1���
�(��^����.�&���M,�;N�����L�(�6EB^7�Q7H$�u�DBA7H$t�DBb��C�P8��=�L�E��!+����C�J�4(h�4(*"�C��(
�4Q���4�>�������X]'���(���������=2e�i��fKI.K��j��h����������Z	�����q�A&�Jpg^�������gf���\Cfj3����������v
��4J%�����.3g&�v��a�=�E�'[+!����i/�0�\�C��w�L����r��W��~��)���C����,�<�_<vd�y�y,�A�rV�3e��KH�����9��8j����~�0��
��w�O�YA�/OB��NY9a����k�z6�E�~�\V8�������90�rR�O�]��>�Qj�����C��9O�� �.���=��G�&wd�i��uP�w:�3�A��f����7N��i>�a�YW�A����)��t _2)��(G94�����L'��c�D!�HkI'�����q�<��[�^�~�W'Lr�sT��r��������v:oV+W'�h�U��K���]<�����-�������/�aZ�\Y
DZ�>:L���)����yU��0�5�jI��0��y�h�����,���
�$�'9B����2aR�f���)I-�6_��]/[a���L�0���r(��'#����:���'8��H��c��+�aOrzd���H|.{�Dfn�1C�b���m�:U�.����i9��U��L�EuD1�#s�����Iz/�����n�=��b����xL7]{+5��hM�������c7�mb�v���q�E�R;�,mj���NG��3������=�N  ���'����xo��z������=O]���Qs���C�� 6��bI����Di��DiP������(7'l����N5�[K�h����W+6�%��5h	Zk��t:��%*G% �d�Xo-a9�(����z-q�C�Z��ULZ�AG���!�e�J�r�%.!���j�����vH9���=���\v6���-�3I�k�F�����;$:���(Wn�$�P!�����*�T#'��F�tqw��|Q�����!�K>5��Q��>���.�5���B����8B�����-��[�������9%�!J�mV�|k�Q����20�&JF��h���&E�����QdK]�0�c�s�$�.ed��*���9j�zj� v��B�������
SP��0uj4�Ip��r0M#��r(��Y[!O���"�=��$DR$F5j@���	QNt��Q
}�g&��	���	9�kmPL�j[D�`N�m�NY$*�Qc:*�i����W<*L����:��%����Tc�����$Fs�<5&I�qX4���0]�x�o��QD��/kk�De
��t��X��������p�D{��j�@bT�D%!���<�#������Uk��uR�G;yN�����eA��������nO�%�^1�2�`m��L������F�������������\X�4��E`��g&�C#�N�����Fn��fBt�8	Q�(���V��90���AN�ne�r��������
Q{7F�z���}2����`���v�M��(�r]{�l�3��t�3&��\�M�@��o;1�'���VQX�����
�_f{�:�!p�l�D��M<�XJ�4R��J�4(("�X�&J�ZM�u���'���ZbA������h	����:B�%��$T$u�FK��-�J�-qH�`�J���D-q�`�J��-�NGh��}%����?���8\�����9)&%q�IsM���X6%q����#l�w��v��A��<K��cZ�Ki�R'��p���������i���� ��t��=WR�'+���}��j	�(C
?{���+&��l;���a��N/(@������^�*��A��m�!�L�����$����������������4o_fT@":E4B����e���e��-�6(#��
�)��gF��bEA	El�AV�AN�A^�AA�A�"v'5�@���(
4Q4j�4h>C�X��N�CJ�rY��J�!����dr���J|rs�_MK�4H�64J��(
R�
M�;��`NJ�!5*@tJ@G���A��
��(����c[%�#Ql��v���(^��A@t�A�4��!Q5hBT
B�j��q�D-�������D-!����D� $�Q��d&!��`G����Q��������*bvlB{:���QDim��m�A�jm�*���;)���3G"��s�(��T����4h8�6�NG��OF;!:E��(
�B���H�:i��Z��#����������=�g�����?�-��g���,�p$b��A�]
�Y��;�Km���b����r�F��Z��VM{�U�o��b�w"~)
R�Sn��-�vE,�N�/�R[5?�VM&���A��y�ePD��X�L�����P�X�L�YT�`������� ��;�K��R�X�L�:�R�]���"���R;=W�R;=W�R�D����!J?[� �g��K�e7�����D��X�L�������Z����[��T����Xj���m�R;eMZ���8�=���X�L��6�A�Z��N�V,�SF�K���j�R;e�Z��N�&�Q
����vQ�V,�S��K��R�X�L�:�R;e�Z��Ny�Xj�<�V,�S�O������Ak�R_v��X�F�Ro��(����n��������L�b�\4���t|�'��f��Iw];�V~A;����m���a��p!��D�j�]�X;��Z�,Ck[��Ck[��Ck;��Kk;��Kk�����2��S����;)�]Z�����	Q{���A����Iy����!�{�h�]Z�h�]Z��Ak����F;:���~|���~E�^��w�Y�W����+�AV�� K����e�sd��^���N-�P�S�&��S�&��'��<�#D�!�WM��W
�~����~�"]	j����HIW�Z5�+A�����WM�����Rw�R�J�iK-+uW������5���-54H[jhP�RK�*�Z��� m��A�RC���v����B����#�����4��p'��/�R#������"���"JW*a�Y�*�uBX���H�����*�?a��DJD��:+a
�S�5�Ni�1r�N�8j|"J���	w���18�����tH��H�/�Z\�K����JXC$��X��"��E�/�Z\��AG�g�j/�
�W{w��W�D��viP��viPT�=4(��^�l�j/v���iO���vwj�o�����iw�N��Pg�V{����v����=���BsR{diPs�{d/Dw$f'�5'�G���{����Q����i�Y�h�C���}|�W{����U�4z_�]|���K���/��u���,
Xj����&R�ZM���i����|�Y��=�R7�����q�x�C��4�Z�"1E�t�T����HEb�Y��U"zE������8��SD�2��d��/�UD��+��/�"���R��mQ���9q��K���enPv��N���LO\>����_���1�D��_����9'�	��=�OL�9yE��q��<�L��,��<<�5�JBH��~"��>W�i��c���"��*s��x}��U��\��p��"W�*sE��U��\����
W�+r�2W�*\e��������"��*s����\1�^�+rI�6W��!�R)5�����J��L�J�C&s%�!�K��JTB�%s%�i/��z�K?���~V,����J��%Di�r3��\e�-/$U���S
��tLB�PG$dO�y!J��'i�R���A��e���}��FG�T�Dn�Q���X��c)��|�NL�b�cb��7���\�C��_����6��JY���:aR.UE�N�Tl�z=�)�^ot����4SP����m���C�1���9I�$��������j�S�qm
kL�bg����U]����Z�*��j;=��R�T��7�~���r]cR�@�t��YW���1AuMm�9��mw;���s����,a��6e0�����.��Izgk��cu�5B��X���7�l�����������7tW���:f��^����D��<X:��F�T��"'q�S-nr��y�	"�G�)
���m�E�����������=V'��c�;�����k�M�0�h�^����b��V���k��&
�Rr��k�I�����e����{��r���[C�;�Ic�jL����69��5����$
w�Q�K�W[c��?^�W�xE�pGa��K����v����^+��Vz'AGO������a�&m�����W�$�Tw���>���u�u�j��tu��p�nU��^�%���t}���t�W���Z�_1)��W��\���KF�����N>�U	F���_����c����2,�����S�WWN`r��"q���W���9���9�:�p����+�=ge��U�#��nc�S�����5&���d����
�0�96]�L�S�/���q�=���
�l��Mu�?��zKP��A�Y��d��#iF��C����S�i�3�w��>����v�N�X0I��r��,;�l���8��vfIq��;Q&x����nbP�I�5��Nt�$�$�Q��Q5('rp��i�W�#U�_�*D
7B�K ������ Q��5��z%�l&�u�D+@ ��O�����9y���L��&����i��bUu��J6rn�u�;W��&�A�=|�����c���*dQ��T�2���5���/��z��U�{�����(�%g�p���Jn+d#�e'�Bv�"������7�
r�O�RA6B��m�.Z�H���B��]�s(;�H�.	�J�9U��~S����FbebP�Q�*C���9i��@C�zo���Q%��:� B.�����Q%��:�$^��D������)�����=�v)����+&��Z�t|�����.�Ij�SL��<^B�����:��$L�'V]+9�2���N'�����<nb�?>�����0�MLZ��Wf��.�����=�.	��II�k}�����'�C$LJ���3�����������$��>�M!aR���OLJ��r�0)}������|���rJ���$�?m�w������������N����D�Q��:%7�N�V���C�B�y�y{��������:S�4L����I����Q�^����'E�G���F)D3�Q��.L�3�����3����}�Srv*�J��_AB���pSQ�h������Mf���Cu��_�7����������9Y.�{�oF)u�Fp���k�EJ��o���/�I�N�����?�q����}7M��\�;��t���V�4��{������o���&x-�����������5��D��}6�J,$�#:��}�&'��Z�	��K��7&'�{��p��������o�t����f�h�t��u9����Bz�����>Ji�[��/4y��� �M�]�e��a�8H��3#c�f����y�7�o���������>o1}��dVl���}s��^���q�$���C�E+��;�f�H��77��t}�
�J�����U��n���on�E9��[@�r�E/6<��$��>�?I���"m�I}�tRjr��_���]#��;����r����������Q$�/��wQ�������������F�����IJs��V�����`��w_GS���|.�Df������N�hX�}�5�����H���a_t����%{D��r���T:�|}�o�����R���},����V���)��}��8A��E;�B�����B��2���S&�[x�t�[A��o|Ll{��`b��`�R�wE&.F������=�|�}�T:Im�������&R�,shw L
����v���L;E�q��������� (������*������;1��AJ����+3+�%������5�7'iY�Kzs^�K;�����t������|��w�{���/^�yz���o�����/����G��G_������7�����i�y���z����u��~�f�}������S���w�������?�����������������
^����o^=��W/?������go^����/����7�~���w������o_�~����?�?���������������?O�O������<}g���_}��Sj��o~�~����/�x�e���_}����?�|������x���C?������x�o��~���W_���4�{/����=�����&7��������|�������/^�~�����|���?]�����co��������MH�|�����={���G_�������-5��o^�a���)�1�=��Y����0�}�������\�%T��\���%8�J���*�y�(u���_���������7/�p����������?�(�������,��|��7���/�|���g_�8}�E�_����������������v�&)~��	�������3g���6���C��yV)%�$>�������}<���o~�����������������K
������������Oo~�����~�\��w~���g�����_=m����o������v�^<s���?�x~��^����u�����W�����~�������������.����_��������w/��_�x��7/��~�������������d����<�_�=[���>��n�~����g_����~����K'�~��4u�mS������tZ-�m�@t�bN#�b��m���@�HJ%L���$H���o����M����(����6���y�k��l�����p���Sf��}X=�\�����Wq]s	r!��VJG\(gY�f���'�H���o��F�j�R�[��Z�n��n��;�E��A��c��������
����������1��cq����\��~t�7:f���i��dp�������EA�[��`�~���i����da��J���v��	`VULC�!���q�!��F��`��5O�{��_c#]�Z��s����h��fl���V�R&���~Gex�6����_������_��3�����������*�U��N��m0�����"Mor���F���m����	�z#rp���-x�r����/L]��eWam�!>���K��Tz����Y�9���D+���'7?��q����Q�g	�t0��/XBB��b��#�m�@��T�T<�Pq�x�`�\��A"L��,����}5��XPqf
��g��_��g!<G1"����	�d��V�2I~;���
#6Michael Paquier
michael.paquier@gmail.com
In reply to: Heikki Linnakangas (#5)
Re: Implementation of SASLprep for SCRAM-SHA-256

fore

On Wed, Apr 5, 2017 at 7:05 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

I will continue tomorrow, but I wanted to report on what I've done so far.
Attached is a new patch version, quite heavily modified. Notable changes so
far:

Great, thanks!

* Use Unicode codepoints, rather than UTF-8 bytes packed in a 32-bit ints.
IMHO this makes the tables easier to read (to a human), and they are also
packed slightly more tightly (see next two points), as you can fit more
codepoints in a 16-bit integer.

Using directly codepoints is not much consistent with the existing
backend, but for the sake of packing things more, OK.

* Reorganize the decomposition table. Instead of a separate binary-searched
table for each "size", have one table that's ordered by codepoint, which
contains a length and offset into another array, where all the decomposed
sequences are. This makes the recomposition step somewhat slower, as it now
has to grovel through an array that contains all decompositions, rather than
just the array that contains decompositions of two characters. But this
isn't performance-critical, readability and tight packing of the tables
matter more.

Okay, no objection to that.

* In the lookup table, store singleton decompositions that decompose to a
single character, and the character fits in a uint16, directly in the main
lookup table, instead of storing an index into the other table. This makes
the tables somewhat smaller, as there are a lot of such decompositions.

Indeed.

* Use uint32 instead of pg_wchar to represent unicode codepoints. pg_wchar
suggests something that holds multi-byte characters in the OS locale, used
by functions like wcscmp, so avoid that. I added a "typedef uint32
Codepoint" alias, though, to make it more clear which variables hold Unicode
codepoints rather than e.g. indexes into arrays.

* Unicode consortium publishes a comprehensive normalization test suite, as
a text file, NormalizationTest.txt. I wrote a small perl and C program to
run all the tests from that test suite, with the normalization function.
That uncovered a number of bugs in the recomposition algorithm, which I then
fixed:

I was looking for something like that for some time, thanks! That's
here actually:
http://www.unicode.org/Public/8.0.0/ucd/NormalizationTest.txt

* decompositions that map to ascii characters cannot be excluded.
* non-canonical and non-starter decompositions need to be excluded. They
are now flagged in the lookup table, so that we only use them during the
decomposition phase, not when recomposing.

Okay on that.

TODOs / Discussion points:

* I'm not sure I like the way the code is organized, I feel that we're
littering src/common with these. Perhaps we should add a
src/common/unicode_normalization directory for all this.

pg_utf8_islegal() and pg_utf_mblen() should as well be moved in their
own file I think, and wchar.c can use that.

* The list of characters excluded from recomposition is currently hard-coded
in utf_norm_generate.pl. However, that list is available in machine-readable
format, in file CompositionExclusions.txt. Since we're reading most of the
data from UnicodeData.txt, would be good to read the exclusion table from a
file, too.

Ouch. Those are present here...
http://www.unicode.org/reports/tr41/tr41-19.html#Exclusions
Definitely it makes more sense to read them from a file.

* SASLPrep specifies normalization form KC, but it also specifies that some
characters are mapped to space or nothing. Should do those mappings, too.

Ah, right. Those ones are here:
https://tools.ietf.org/html/rfc3454#appendix-B.1
The conversion tables need some extra tweaking...

+       else if ((*utf & 0xf0) == 0xe0)
+       {
+           if (utf[1] == 0 || utf[2] == 0)
+               goto invalid;
+           cp = (*utf++) & 0x0F;
+           cp = (cp << 6) | ((*utf++) & 0x3F);
+           cp = (cp << 6) | ((*utf++) & 0x3F);
+       }
+       else if ((*utf & 0xf8) == 0xf0)
+       {
+           if (utf[1] == 0 || utf[2] == 0|| utf[3] == 0)
+               goto invalid;
+           cp = (*utf++) & 0x07;
+           cp = (cp << 6) | ((*utf++) & 0x3F);
+           cp = (cp << 6) | ((*utf++) & 0x3F);
+           cp = (cp << 6) | ((*utf++) & 0x3F);
+       }
I find more readable something like pg_utf2wchar_with_len(), but well...

Some typos:
s/fore/for/
s/reprsented/represented/

You seem to be fully on it... I can help out with any of those items as needed.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#7Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Michael Paquier (#6)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 04/05/2017 07:23 AM, Michael Paquier wrote:

fore

On Wed, Apr 5, 2017 at 7:05 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

I will continue tomorrow, but I wanted to report on what I've done so far.
Attached is a new patch version, quite heavily modified. Notable changes so
far:

Great, thanks!

* Use Unicode codepoints, rather than UTF-8 bytes packed in a 32-bit ints.
IMHO this makes the tables easier to read (to a human), and they are also
packed slightly more tightly (see next two points), as you can fit more
codepoints in a 16-bit integer.

Using directly codepoints is not much consistent with the existing
backend, but for the sake of packing things more, OK.

Oh, I see, we already have similar functions in wchar.c.
unicode_to_utf8() and utf8_to_unicode(). We should probably move those
to src/common, rather than re-invent the wheel.

pg_utf8_islegal() and pg_utf_mblen() should as well be moved in their
own file I think, and wchar.c can use that.

Yeah..

* The list of characters excluded from recomposition is currently hard-coded
in utf_norm_generate.pl. However, that list is available in machine-readable
format, in file CompositionExclusions.txt. Since we're reading most of the
data from UnicodeData.txt, would be good to read the exclusion table from a
file, too.

Ouch. Those are present here...
http://www.unicode.org/reports/tr41/tr41-19.html#Exclusions
Definitely it makes more sense to read them from a file.

Did that.

* SASLPrep specifies normalization form KC, but it also specifies that some
characters are mapped to space or nothing. Should do those mappings, too.

Ah, right. Those ones are here:
https://tools.ietf.org/html/rfc3454#appendix-B.1

Yep.

Attached is a new version. Notable changes since yesterday:

* Implemented the rest of the SASLPrep, mapping some characters to
spaces, leaving out others, and checking for prohibited characters and
bidirectional strings.

* Moved things around. There's now a separate directory,
src/common/unicode, which contains the perl scripts and the test code.
Those are not needed to build from source, as the pre-generated tables
are put in src/include/common. Similar to the scripts in
src/backend/utils/mb/Unicode, really.

* Renamed many things from utf_* to unicode_*, since they don't deal
with utf-8 input anymore.

This is starting to shape up, but still some cleanup work to do. I will
continue tomorrow..

- Heikki

Attachments:

implement-SASLprep-3.patch.gzapplication/gzip; name=implement-SASLprep-3.patch.gzDownload
��Ximplement-SASLprep-3.patch�[ms�8���
�o�6Y�2�_r7WC�l��L.��}��r�eqC�Z������~
t�)����Z���4@���}��*��x�:�UX�����2v������8U�r��U������������6�	�q�Y	l^�?�����x��v��jw]
�_6[��c�����T5������E���0v����:p���;�����/�r|-~��}�����x��������"�x��aI�\�/�]�u���1{'��q4���n7��k���n�0��o��]��e��6����P]��g��������t7������U���t�n_����|*�1�}�����F=d[�j��E5���aa�nh��9L���m�Ww����~U:����Z�u?��A�6�x\5;�}�V�PsQ�Vb�w����������|�+�e1�}�St�/�_w��U[�e��������N\�bs������a5�3L_�M=��g���M��Y�q>��`t]�����m3n`= �V����,�f�loV�j��6��q�Y��b���W��s�[�������ZEg���.������H��`m���]��^7���?f��p�P
����v]/����G�����g8��n>��f�,�U}��5^����\7L}t�7����c?�zW<+/��G�Z8��s9��xi�l�o���o�%�y��0���'��tO�D���i�WR���4���(��Qay��g��>7��&I�h�z��� V��e=��<k2�`<���gM�Y��u�p��,��}����i��b�}Z����H�9�v�:c�������Akxy�
@�R[#p�j&�}
�!� .s� 8����|�[�;���{���������8�>������s�����:��3���l�j�kqv���7���7 ����j��*����bQW�:X�W��V���7g��{~{�g�;��)�u]���3!����3�8����b��:���)���������Z�Wa�{����B���]��Z���xG������f��kf���-�%���� B6��!S-�^C�5n���),��0x�5�~����(�@���i�k�B�
|�����6�U��f�B�H���~�sq%��f���>������ao�I��-p��P#�U��i��J,���
n�/A����e�J��0�����uysW������#����d}������0\�U���h��ew�����asu%�Mcw���������d{����>=��m���-�&`�����o�O������q��8S����|�&�����'���^���d&f����..������^� �����E���n�/����oc���j�.o�����Kh�=���L��\�i����*�� ��o���A���Z��y�`������rc�����c_���^u��������U3^�n�~��N��L����g>}�cQ���*^���v�K8b���}5���W���6�gI`�S�rP�^�g�������Kv��g�p���
���:_�_�w7m��hxk�q����)�!�������1a�`:��/t��������C��W���3��:����8�h%��vu�vcgx-�]����Zk^�0�9+�j�u-��N�v�_?����7�W^���Z�����|�[��.�����L������������������������z��i����xo��q��x�������Fn:����L0��a���z��Y��:,����wpj�������)�C�0^����?���P�_������O}w�gFoT�������>���=���)������N��Y���E�������J#X���=�dXlN�[���^�k"������<���{�{��:��,z��������
���m�l�@�:#�j���_�+Z3<�;0n�[���t��{���)�Mu���NT`�W��[c�������3��������E����t�W�Y��m�z�u��1���&�{J���K�
���w��=��\�O��vg��|�D�����0H��U��b[���<G�����:N�����_�:`<���jX6��ap���&~���7d
��f2������ �j�@�[�+�������F�vv���| �|�����w��hV5���pG6���U/���r���g����[�V������i/����} ERQ����L�rJ���I��	Q,��$�HD��H�e�r���HY"R�$7U����@��]��b|�F���O����1psIhJS��S���"�TZ#9��$�����g�
w��d��������msM��	��
T?���=�F��@�}%���N�o+mT����
�#�S��!�B��2��h���U3�,wZ�{}
��ay�/�u�����T]_�+����'�Ws��������d0
�c�d�NA�������\��jP�h)�B�������������,6:C��G�(v�q�����<t���m���B^��l��Nt;b�5y�.�G:�no�������fG"[�L������;�{�z'�um��u��5�qi�$��\�������x����9�����������s���oYr?p(.�y����@�������������tp�&H���^q��A�(���4�D�%�Y�'�y��i������Q��s���[t��U�����'��vf��"R	���<����`E4�RH�����r�Q��e���T�vPDulW��o�	���9X�eq��g����������?8����xd���������'�?9�����xf���������K�/��+����C1���lz��9��G�-��8����^�����K�:����jD�������a��@���>xo���T����g�bZB�[�A`)�)08�1�20�p2�c������.')��	�J�&�Q����CZB$����2F��$�������5%��!�&tq���X$D�a�X$"��i���ih�a�4�����8�n	�!"��� >#%�D��O��\�'r%!�E�#LK���#�r�B�O�z�
���g�0D��&�����+�p=��4����(����I����">�'��N��J������V�i�^�&�9!�	s&�K��4�Q��N���d����hr����Zs�k�i��ZxJZNe��%3Fh��iTBsV��wQ�N^O�������		�4�O��N3�J#�p��%�'�9S���EbBbF2BrF!V>Y@+"Fh� c���Wf!�	��GNYid1J>c���62��,��HFh.��,E���Z2����%#k��Z����y.����%����F&��m##��8Jd��R���%dX�99{\N��%�Ir���,!gK��r���,!gK��r?d$#��4������s�rNZ�C�&�0�����#�N�z�)&�	������s��9g��b�n-�0B�R^OJ2L�]?���,$$f���eL��\9���%�H�K��\�N)���"$�$9E��`�D>�mC�mH�
I�!�5�#�6tK��d��d	�c�$K���2@i��"�'`>d	2d>��%g+Iz��wIu�d�K��d�K���.I���.��%{�$_�����#Y;���d�H��d�H��T�G���Q%!���v��-���yET�AET�AET�AET�AE�R�/E��X_���X_���Bkc�<W���K���K���K��T��Q)�E��n-"	���zr�]���9!6�(���Eh����
Zs�k�
�`o*��*|��q�g�"�	�!>I�HJH�q�lUP�*R��&���UPD*2�=	���3��^Pd���g'/(��-H�K� �(�/
��n-B�8��8s�SP�Sp-Z�B��|������^&<��S�|J��J��R��Q�]�>�!���K#��HBH�HNHno#�+�)#�9����`�-#x7m��$��������u3�����uK��Q�c�cZBB�	I	I)a>!�
yTH�B���G%4*�Q	�JxTB����d�`=fZ�D�0��F�<J�(��H���Q�F�.<EkVLS�=I�>^J������HDH��ry��g]�!��o���>���������Od�hn������B>��1���"��W�)ZF��r���`�fZ��(^a�h�b�@��y�	�9a9'.�$��$F?M�s�!�b>E��T�4
��?nI�*Y_�K7�<W
��$O)�SJ����HFH��$D2B|�����W��vJ{buKI�dD��K5!4�������e���<
�
\����hm�]��5{N ��=D����$t��2��h$#����]���J�������Qt���]�x����g�7� d�������9rCFB���<�A/J��>�~
O!!!#������Cl���Nuk��+�����#�i-���#^OJ�I�&�7	���b�����C/�7(��Hq_�%�D��y�2�����������N@�.�"XCBK��]z���j�w��w�M�����l��'���}��Q��V��Z> D��"����~|���}���f��Z��Ql���pKK��R�O�	ZF��rK�b���2��-K�1��V�1M��C����"-���#�'E�b�$�9"s�S�i	��FY��'iK�b�z�p�J2M��a��K?gp�DX�eh������h��I��;+�B�)J�����F��D�g��*i_�=��T�B�4�h�D����� R���\%W��j���c[�8S���(6�0a���46������b�6�T�+���c.�k��2����i8�b3��<XO���0�b���K&���&~9��=3�Gi1�������b<oH��1��c~!j��1e1^_H���Xi1�_X~����Sx`��!�C?e����!*�4o,y-���5o�1�g�^OY!s���1������b���',�X4a���	K,�LXj�t�2�e�[,�0i19a�bj�
��ca�����_|���J�Xm�������U��K���M��8�x��s��=y�m��j����j|�eeH��%D�k5����zS����;,��]|�����\z���2�^ZYA8�*�|~eF�1���9���Z���9������R��9�\��%cT�2�}���^;��"x�{�j%N�&�����!�GZ��A�M��L]N�.%S[�SF�5��Ki���tA�M:9%�<p�		���������6����O�-;)Q�n�t[�&�3�����L���#�H��"����|��~�n4������w��w�z����?
�B���h��&��.�/�M\��_��%f�=���g2~	6uH�~Y��m.�L���:�m{v�������n)��>e��-?�O�gG?+��}��{����yM�pW��������P_�����	)��	�����M�!��;�T�)�6�v&����)��W��G���4�OB�Z��Z���dp�I�B�m;���]u��������j�U��<�����|9j�Kv����
Nm�:���@��] ��N[���?�u?�$,�?m�p�������;�~L[h������Z�#a����{p4�������V���B��6o���m;�4��~p������!�?�Z����v%{G|;��x�{������?���?&i�����\����1��T���S��q��]��E8l�1v���H8��N��e8�]�����Qn��KT�������������ae�����cl��0�]�~��f�������{��:?�]����C���w}��k�������0��?��L������y�~����-�s#�T��?�����o���m�iF������_�}���rF���kJ<���������-���P����av����������{�C�{�e������I��$�A��^��a������h��G�m����iC����0^c��`���H}X{J��:����A~�~�	%�x~��<�M�{�D$�������|���3�p������g���!���-�!�� ���P��	�����:{x��t�c:��>x>�1��A�~L�0���!�����C9~�}<���K}�6�0�6{>�����i��������;��g�t��g�f��g�Fg��3�����atF?:c�Ql����������g���_�y:�y:�y:���~�0���1���Gpl��y��
�����^�Q��Gg��C!�`�����`�}{�>j��`
�o��o
�<y�6���M�35��`�M�P
����oN@9y�m
:j���V����������pHs�:_{���7S�GM��=�q&?/�.�������7�Uo
sg�7��B?S�)��QS���q����m3��;���`����p����Ds�7foo��[�*������rl��g�
�Fv{�r���R|�������H�7�S���K����O�������G���"l�����OqM�����epJ���p���V�p�u7Hw�j���y;��GU��u��
�e[k��pD���)'�+��CJ��4!��)��������?,��P��B��W�����U�j�WM���_u����3.?��STH�%����5���U���WC����C�GO3)7�b%+��i~���)*�4>%|%�Wa,�\����f�:��Gn:������l����lVS��Wz�Z��A��RV��	P�[h������^/�&8V�w�C���lB�����C9��	�c��������f�B��SB]�/y�fA�G��B��Wc�Y���4�m�o�V���<������7�p����\���kj�?��_s����a��`1ok��m�)��mB����A�o
��^�.?}��)sp����j�r�OR<�Z��b���/9H��OO���f���G?����]~n)��n��B[~n)������V�v�_����-��)����x^�!E�R���_����m���d�>�
)�O	��}�@�o:W�'��
������m'%�u�$�m^��j���fKY=��(��)PL�5������l6��m�)�8��4�Dz���fVy����VV��j����G�|JV�6�b;��B��Zn)���~K1��{[S�_/��@3����.�?����������$��i�W�7X��jUO���f
v��L������������M�f�	ZR6;j���3x�+�����:����C���STHY�s�	��	��������e5�����i�h5m�W\	��Rh�!Mniu�����Z�����u���f���7j������*���fDHk���M��qi��#���Vch����V��V���z�b�_�--����_B�vd����ni���-u�W�������x8XJ����������Q�q;j=�c�c8�����v<\
1��O�xL+�#����Nq=�T�����x�\oG�*�C)���~ho&�f`��&u�7�O�~��s�m���m|�+�x�9�|��F�h
[<�5�I��r{���|
���������!%_�.���k@�-��������=|��/>���w�������.�����x�r
��^�����7��z������([��>m�b�����o_?\O��������7���������A�_n�v�������?:�<�����k�_J�|�0����CW�/��<��V���������<|X}��b/o�~s������9|�����V�V�'��*)"������Z�����B�������������\����^���8I��L��e��o������[����E�|��p�_��p|��H�/�g�=�����*�'K�������_�����E|yw{���7R�}���N1�����GV��e�+�#����w��k���	?�Ly���/\t�/^/q�nc���7.rW�����&���C,��xaG�GW�!*��>����q��/K�5z�q����5��~h��".�	w�������[8��]x����\|�0�X]�Qn���]�rl�E<>|�n��5��-AR�[y������\������Jk�]��������m_�y�'�Y�k��1��?�_cnx��"���X��^�����{������7������2������v)�n�_=8�R��K�E(���&��Y�T~P!�<��K ��k��m�]08+3���|����%���j	h�����_�3�Uw���.Y�6.�Q<���n���-���bG��&WR��7=�]c�O��_���6;���T���*����XZ���%�����~��g��*������#����}}������2����!8�����X�
!�~�����O� x�Y�����w�-�%�V��r�����K|�5�
0�O��n�����������K+W���.���c)����d)����w������!::^����$�������s�,�0��?� �G�E�������W	[F5_��!�VM����~���]�w�$\��x(w:��Z��^'@6��y1�a+=���E������Dn�<�����~��]��z>^����#{�Bc�@�!�NB���o|�[''�}uw����!��L�p������C<WTN2
�Na0���/��'�c�;{A+=�8i�|�"0.�v
��v�� (T%�t��R`����U�>9lA��W��p��Lmx	B:��!�'B0y�����r�EN��������S%��%@��o_}���+;�_:�j� 	k�����y����Y���y�"wV���z�����.���,oT�-�/���:�%Sb-�oka�T���b�)���{���OJ������/f��E=]�YC�Z6������y�"��������G�l��Q+�{I�Q�[�����N�������bR� z	G����|y���-6�.*���l/�|���&|�
8�4��h������_�p��?��\J��g��%m���2�����wSJ^��zCkF&'�������������e�`^Y}����-��������m�����������Z�l���Z��;m����D'w]�k��r����[�O���	�yU��?D��Z�}��vk��|�x��������r��o������}����yo���9�Y��x|�����.B`1��D������)�L�&���0���|{��SU9�'5-"r��}]���g������i\��'����|y:������d��V����zv�nj����1�we�A��|x\?���cq��)�k(���=�%����/������=�n��X[�K���r���=�������%�����m������?��byP�Q�o�-�g/�l�na�]�K�1J�2/b����o�5p
���={����3X����m}^���MB�p�O���U��������m���ON��p�����mI�� �)V�>���-!����mx��=�������9?��;<Y]#���}y����a��S
w�����W��{�u��������}�h��u�,-���+���k�fq��:����^�pk�����o����uyq�vd7xvg�2uY_�[^��[Ta�����7�/^������_��������z��W&xs�6�^�F����e���[�����]l�Ml�+s-p�<���b�=����_����^�p�{s�b��Y�`��V�w���#;}��1���&�����_�sO�-�w����l�}����7�^o����q[���O������w�I���8| ���^T������o���}����o>���7�o>rYK��@��<u�7����W��
_|��nt�z�������w���������s\}������k�����}^��}�s�����;����2����d-��V����qY��y��
/%�*^/;��/�/!�������{��r8���8�����K�V����b�����}{�$�7u{������z������\�j���]�����]X%�����wn�:� �c�����W�om���|��y���8��%��g�o~��V������|�0/
�;�����A����ww��������o�iv.���a|y�T���W��^
9��>��z������������o^x����[���q�rh=wX���8��Y��;+v�>���j����-?�Ron�k�����Z���f�|��wP���=oU��^K�����?���^��k<���������]l|�9�w�-�����>|�����W�T!�*���
�UQ�*6z��%������P�~���J�)��=��1/{�^\�\hc��j�\�66�/1����z���PWq����,}��������6a'�����$Qh�qs���?�OvW
�����}yb�����X����z����G��k)l?��4��������H+��_m��H+�����
i����^�[/����/���i,~�t����U�����)����[0��|�c���2WG�b@=���P�����5��]b�?��E��>~�����_��{wHF�������G�M���Na��v�����@�{X���'����r�����v�|�6L�i_V���kko��q��-��/^�7e���K^z
k�n_X�oy�����t�����%�������I��x����,';��d3�
���_�����O���#�p�x?L���$���S8������Z�=/��]�������V,�"�Vc����e/������o�&/g�/_�����X�	�AAS}��C�e:�v���-���u���������Gw�����P(�d}�Q���>| ���P�U</1�2��j{~���'��C�m���3���/�|��
hGu�#<x��G�e�8����v���G�(okI��K%��������������3����x�8���~bwX�����������Z����^�ge���K\Mk��p��(�?����_��2gw��)�|q-�}����'����v�p��8�,�����]��p������������7�y����Y[��o^���\����_�^>���}�w��-��ID�y(��ns�8��`]~:n���w����1O~e-l���f-#��c��m=X�������+� ��vLY��{G�Z���������I�WE��ww�;�������y���V�<w�����w/�������D-ST�w��Qh���������^����F]�!����^<�Nu.��w_�������9�����>����?����V����P��Z�Z�*�{��Z��P���=��]����������}�R���Z�<���OY���\������u���^}�����g�>�����
���������1����+��,{���W�,��g�:�5�d_�+bI8���;�����d�m������/����e��u������?qC����{<<t�Y�y��G��!�OYG����M����/�=�L�B#��z���T�J���G������k���H�h���O�^\�������wx��(m1[��N�=^g����o��r��������C�����>���7+����?w$�g��o~�Y7��~����?���S;��|��������m����o�T�|��n-v}m�Gn�u�En[��s��a�s��ai�u����v�x�M���	w(�7������?��L��,������/�?����t�>�>����=��y}[����"�-^������l����
qNW
.�WYz��������lX����w�~t�H?f@~����}�4��e)��!�o~����/��WN�w�!����r���W�mx�)
��Y�����qv��V�]���W���������������;��{�������T���%�	��o~e��{��Q�+r������Le����W�?���+��~z_���G��<[��bf���Wo��z����w�����{���E����2�w��n�	V<Zp�?�`+����7+
7�W���.�����FgR���;t6�S�p�������Z#�o���-����nm5�Oz��s�{��h
w4�����=Tm��W����nV�������j����:�'o�>r��%����TUQ���|��5�3K���xy����}�z�6�?�~���rN����w���p3����7�_�=�g��N;)�{�Op?���$�G�W��{K���}�"V�����������r"��w����y����v�?Y�gZ,��2���p���h�&n��Y�r|�>s�R+O���v9+���?v�����A`�z���v������b�q�Qar�:�N\��;/+�� 0����x���l�r���6��Y�d>:���	�x95^��8���5���E5�P��xm��hp/.����o���h�������J���������e[w�=��`g���V��7^�]����8�\|������v��B����^be{�{U��S��=z�2�j����k�mT��g$��u�XU���gw�������u��g�"��������.H���r��o�:�nQ	v��[���\\���]o�V�~z#�V�]Y��4V�um���?zw���/���h�w�F�wVf�?��1a�=.K�cW����M�EE;���n���'�����9�3�}1{|�����Av
8O����������K'�o�������u���vu�>{~{x�w7_������������1�����>�~���������w����U�N������+Dn
�r�+���y4z�Y�2]�m���A������g�o�
�*�7+�`A�8���
��c�N������%�'	���+�5c������j���^��_j��-�~���P������>I���b=Jq->p[�{����\�E��|��A]�����_������O�����;j�R�����$�Oo'����]��y��mT���Tkm@��_�l�Z������o�1�r��WP7S�����[|�������D\����h6���z���i�e���S�/�U0��_��=+E��1?�,�����s[��0��!��R�����z�b1-���E�V���N����"����v���g�v�(���bY�����7��}�������������$z��7���w�|��^���7m��Gn��/]I?����~�Sf�y?Y����n�WR]���^,m�O���������_x��R���`��G�(q��������������C����3�z������?|���V>{�d>*}����d-)�������/����`hV{a!��z��
���p���G�~��i��w�_<����8/':��Z�)�O��x��5�m)W�x��/W�
��k{���j���_��G��-�&�bU���/|~�`=�wg��������Ow����G������~|��
���;���I	`�������o�}�k��-W�~��������w<f
>7G��p�����xv�������C"}��<�F����������Z��������������������E|�!��
�k��(��_dCY���ep����{��}�;=�������1��8��W���
���p�.������tO����7��tA�������,}|{����i��wO��i�M�~�\l���X,�������7��u]��)7w�5���^\����o����;���7�D���������|q��g�����B����_�������v'8���S���O�����:�9���
�*��������������}�Z�}���z��0�|���!�fx�
�%���w��[m�c���lD%yF���_,�1g���wu������<%+�u�����b}�����%���su1A_�������i�����t�����u��|?ut�����
�2�?s�t�/��.���k����b��n_?X����_�oy����������K��^�,%m��p+��Cn��by>YpzP��q�����w^��>Y��d�x�?{���K��y����������u}I����.B���wg�>\0�o?Y�����l��3xI�,��3wI��I����p����/�}�������..l{���2a����4���?Mg��/����i?.L��x������;k8C��
[���v���w<��H���wx�m���������V��;�
<]K���[������m�%k+-�~lW�������tf����/���f�9�B����]��#@�����{���x�e��`��f��;�_�V(o�=_��[����/��.�1��t����>�������t�l����g����&��
�m6�l�k�@�R8GKP��K&I��eP�B�����i���tv�Y��tv.�-u��W��[���Jo/6���j
/��"/����5z{���Y�/S�������������O�=4q6�p��Cl-�a�E|��_������x�k����:������==��������O6�,�����_�����?�z��9V�'�[.o����V�P��u���+|o��'��/7�_�1[MRo\07V��&]H} �������~�1����A�>>J�*��q�~�����C[�����$����?l����,n���h�[m����}������b|,z��f�/��������*lT���iw����:K��)g�������_n\�wsX�3I�O3���BO6V��|e���veb��g��m��O���'q��|��I��w��������g��G_o�uf�*�q�����G���;����]-4��'E��{�?$������j���N�}�-��>����)�R�-��j�=����7_�����~�~�RW![k����xs(������+���
��F����.LDI���Ol������G�z����~��XK�/v�k�/Um>���a�o���F�����7n��n���X.���~z�v����u��|d�)�V���<�}Zo'K�k[��V��37�Y��py���;?���ct1�&����=�i�o+����8>����������u�[����Z?p�_�b�+��l*�&n����'�WG�r��{v{T���p�;�>��%��-�����<�����������g.,��,+R���*�X�;�r������}�+�J���5KZ�$����:n>���wy��x���
T��?����,��Tdv8�@-gE�y��1S�zx�d��:�`l|�:�??@����N~����Gz���$a������� ;�������'�M�i+��i�G)7co_�����<���(�����>��n�g��S}:V�H�Z/���v�!��~��HoW$���n�xR�Gun7�F~)h���-,a�W�����mx���zm��_9�2�B�������r�9�4�����Z.�L$�<7E��-xoFJK�
�S��a���A����E�������7�Z���X����8�eg�����aa��Xy�(��*[�/�������������b������������j��a
C
�F����Yqo�R����t����w+���y �?�~��#\~:|�C�,N�7�]�
�m����g����X>���a�'����.���V�;�A<�M���?;4�j?��o����t������T��\?�����d��y8L.���b$���~���d�VV��_��%.��\5��*���������������7���-j���/Yn(\��)|�c�K�?�O����,�O�omz�l^�P!�h���[uH|�Xj���e2�����������_n���#?L�l����������?��-����W�����,�1���c�\n�����������x��C@~���J������?��Jz��k�b><��������Y�����6o;�^"8��
�������p����&���2�~K����_��<}��*~�N����Kb)����z�z�c���Y@���	������+�RG9�64x��
!�lu��O_{��D���aa]�w�F���{Ham��q����fq�����������d��mG����?<{�skJ=�#���zCAK�~����pwx�w���3l7� ������L��Y���_��|P�]y_�z����$+��j������~�����Q�'��I{�8�'�;A�0���!Ne4���dd�d��������W�����n\���������������������okd�����si���MK�:f�O&��L�����+�'��)����7�^v���ng���k�-���Bh�k���d����d�������_��^�J&��+��~�f����'��D��qLt��Szv�e�j�H{�����k�F���F�u��wO����������������������0����
�`T{���������|�E�F���"������]n��{�_�zN�
�\�|�90��P�����������y|������NJ�����/��"�K<��5�������w����r�v��w�=���v5w�j?z��Rm���0���������Y��s�.+ahP���.��9~�K�U���B�������n�g�8��(|�����n^~��b��L��}���,���������5!��F�n�D����_#������#QgQg��������<�Z(���

���������������~�	�Y���+H�v;�'�s���}�\r�o/���������A����4
B�%�;�&�
��W��������~m���9}y&k��L��Z��=�|g�q���B���/P�^�����+���?�=~����]���%���PpQ���xy.e;NO-P��706�ls�G�6�������k��,Dy���`Y����{BR�'~���ab)�X�9������?��<\�y�!5�c���/���?|���KYl�>Re�Y.���S\���e��O�fK�>�����w���t�b&����Y��UNq,��
o���
������`X��?�����|��Q���NT!�{�����xvl�q�c_�j������.����<��������YB�����s`������hs��a�TAs���O�mj'�h����F\�z���]��I�(� 1K��u��;X|E�������,9.������x�S�z��h�"�8A� �%z�1J�.��B�_:�p��x�u��u`�K|���m�������,P�����H��4mn�u�����8�q����9����l����|��/��ZD0��1�%bRW����u��.�q��C�U�}�v-��Al���Z�����~u���w���t�/W^���?�|��������������u��W~}�o����G�O%��C�����k����W����u�5�zyz�-�4}kM�����E�^���	?rz���a�N��\���K$(�u�#����>�?��Szf�|}���_�X��r��U��J��~-��
�����s�+7�Z9k�a��q!E��W�T��3�fG.}�I���axh����W�������ma��_���M��z�����V�V|�u�B�Z������yp�����]�U���'/�?�gi��;�T���.����zm,����:�����(>���Wo��\*�/�X�n���C�s'A�i���%w�{�����Y�z�D�6C�9����u�/�C�������u�k�ro����o6;$������8o�B6�������/���+��.������[|��e��Ey<�b���*��r��F��(B!���SC�p������2
�&)�d���Io]������0x��u����8�NO]�Xo���k����p�������^�v/�����������[~����I��'�s
���}s���C����������]4Z���.J~q�����w����e\��	�����f-(u'���>[�q�&�;	���6#����H�/%
iv/?��y�������<]����kEo���sM}{��D���N��qo���?�{�[�\k!&j��v�|X5O�y��ws�����������^��@qYE^.��k��/W�;��������0F�����E����r������j������-����wK���I��&�e_�-��
w��"*����\<��b�� ���W�����B������]?x.|��
��!�o�`�������iFv9e�o�?���8=�����J{��/b-���=�Ww`�����n����@�o��R��_]�[���������"'��W�?�����2��dS�����\���e����W$/6�����~����������^q�?Y��f?�o��v��������e`�7���iq��X���|��P�E���{b���<����J/�l���'g}���B���K�{~������e��*wXn�<�T�z�i�����j����n���r�%)���_ozgM��O���[9�������WO�����P�����r����|����2>�2��J�0	��!����]x�S��jQl���J7
���@�u��]w~��_:�V:����l%$8I:�<_������
��q�@�!�KI�<�|=��v��;.������r�����������9/����e�����c�;y���w���/)���%��s^����8��
������m�E�gYQ���O/?�w������=PT��G����+�~����Dr�r�����.(�T��&;��g��v��Z�ZO-���2��v��|0��j����%��eK�}������o_Iu}����4�Ba~���K\�g�R}�>�����'���?7�m�4���oK������%ayE��g������p���Y�����h�_&���D�Y��~9a�g�m�KP��Mzw]{[�=�G��;���q����a�~v�#[@���3�f�q3�#]�8{�0H�?�����Dvj��~#��-�o#�z�Y�SJW�Z��uojnQ�S�
��}��$��`	x�N3����g-��]��Y�_�����W�B�O����B�~����c�)!IG����������mo���l�d��_/#��~�G�w��W+h��_�
S��=0~��y|>�v�{5���6d�����g)�����)�Y���)6\Y��3�� ��a'�i^X����������x��;�t��{�c]���
~n�/[����5�OH�����1��9��i�Z��>�&T���W��f��4H��;y�zgu<�0��w7^�`�o��t�-�0�or�����a�O]L1���7/�2�"����~��'��
��Sn�R���������;�K�dg�Bw�7&������}=8|�+4~`[S���U���������� ����G��v��G��}������'`G�0Qvw�V�+�e1�N���x��.$p��b\������Ol��?hH����=�n��wc������q����zZ��B=��V!�5���.�]���</qK�{����N�W�T6�\��3������e=�x���tY��x�+u9o[&2�w_���}���7/�vb?�#;�cL���6�[|��(���a���fdQ����0'����o��H��Kv-����������xw�^�q���������y�x��Z[����<�l~����:����'_�<���,����q����
�G�xi
�G�V�������Z����m+aUu���P7��_8�9���Y��(,��n�}��a��z,�q?�a$?���[�Gn����Y��N$e���/��O�I��u�?��&���g4��<�"
��zU�A����C.������!�n�����k_�/��hS��|q|�����7 �{P�U���[�D����?��0P�7��&vnD����wwVMo�C$c���k!�~��$�? �`o�S�=��{��</�M�g��}�^��{���-����7�5;������W���z���Dv>.3�=w��EX�&��~G�t;I���M�F�h�gi������k�R�)I>�6=���S[�o������&��a��ku���$�-�[��`~qUxg���'��Ep��V�����Z��������p�����%�t[�/��5q/xy�c1��M��X}R����J�!�)o�&���G��Xyk6�Q��]`@�%����E����bHi�[�Y����gJ��������������o�e��m@�<n�sU�o��;�p7qy�������oh�/�v����Boo��x��=�_�]���
����/��D%�U�a�O����O?(�E���r��%�b�I����J���M�S��FK�����ERL���y��
�J��[!,�=grSU�������kfr�
�s����eFc�����Wp�������g<h>�_[ypIX���g��D��D_��_��g�~u�s��B����K�~��P���>^�6��Xm�lJq���.[��c��
(�K���^�j$RJJ)����A5|�H5���b�j������| f�J���-��B��
}V��CRH�Bj�bKP� C*�P�T�*�bm&�bm��������u!k�C*�6�T�m�Rk�m
�X�R��1�������j��6�)�m<SX��X[����wp��;k��X[����� ;j��6>�m
|0P��`������i�� ;
���`m�;
���`m�;-���bmAvZ�-�N���g-�6�UG�n�1�����*&c�:&c��E�����Xe���!&c�cL�*G*P+v;�%$G���:FV�f����-$GVI�2�Jb��U�41�lb2V[c���5V[c���5V[c�A+�UF~�����A�3v�c2TYE���R�A�TU���*#5V9����A�UF�2r�`�����4Xe���*#A�T"J,h+�1����w���d�RD~�Xe�w�UF�Xe�`�UF�Xe��8b�CL�*���UN1��c2T)h�J���M�Rv._�9tAFK��U1�D]�6���Am&���Uv1��#��L�Am&���6�qDP���-z�z�����u�!Q;������z��ud=j�:��c��@�X�w�h��h��h��hgjQgjQU�d�RE��U�w�EU�jQy�ZTE��UQ�Q��(��EU�f��*r���D-�"Q���A��:r���D-�EL�*u�U��:������Eu����qw�ZT��
jQ�7�Eu����cL�*���U�1�4��U��A�Z���U��JS�d�2r��	+Q�����o�zv�Xe�7j)��Z�D~��2����L�7j)�����'_��Y��Y��TA=5\�F������%�C}���77�%�K��};��p��!Q/o�K>G���z~��\�9�.�:��{"q=�����E���V��D���� :V$���"q=����A��H\��Zp=�j�� �b$��S�z�15��S�z0F��c�K�z�45��OS�z55��SS�z0���UV��D�L��A����D�L��A����D�L��A����L���*#q=�#q=��68�q���;�|]�/����EwQ��Pt����q�pu���W��.�qu���W��.�q5�����G�w�"���E�"��mE�"��EE�"��E�"���D�"���4Xe�)��3��*#��2���*#��2���*#�[�2���*#�[�2����"�A������@���sR��D�9)�z"�������#V�Vib2V��d�2��+����Xe��X����9&C�"�������D��(�z"zzh===Jb����b2V�D�Xe�e�U�^�����@�����QN@����������(+B)�JA�����Y�5��=��J�(Q�����z���v���
�1^lB+XG�x�	�6�bZ��$��Mh���N�.�X71�Gw������T�q%���������#�����#$W�dQN����������l��M9�-'w����<���r�TN���U��U��U��U��U����o�%;~������rr[N��U:~{���r!c9y*'��d�RJv�>f
t�E�dY.�.'�rr����(U�����vG)�/'��-��e~�2�e����(%�rr������U)Q�M)�)%��,�\�e.�2�eY����e-RoZ�������
h�����0�e�)!����p�������[���T��)/uYu�e�U��./uy���KE]�Juy*�����k�*��*�U�Q���TYG������We����Qe����2K^fO�%O���X�>�uUN�B�k�.���l��� �2�u���e�G�Y��������J���.k+C������?�HEG7p���F��J6��l-6vC��=��&�&G?�e�
6.:l\�4���9��l�1��b����]tm�SKv�%����k�Z��
l���@�KU<Z��������%#FU�SKF�����-�Z2�h\����)\�J�)�}�lS(;�Y<��&�1:<R�����8��{������V����tf�E�������y3���.�}�\�ut|kpQ����bb���(�����Y�2
'�(��Z����%$C����EYG��e�bw�EYG4�e'��*cwj�2v\�u�#hpQ����EY7�5�n�kt����)��uS\�����s�#�_�/����|du<������a�WS
|Uu<^�����Xe����z�`�q,
V	�u�2���*�b����'���:��jX��b��|���a���9�n������<i������<i���s�*���U�1��'���:��
,_u�X��h7�|����TXe�Pa�ML�*�>1��Ts1V��b�&Fi�����Z���l�I9���vJ��h�[��������%���-Z��-Z��-Z��-Z����J�����^�w��+�8UW�q�������W]��]��]q����Hue~wcq��e+�d�e~;c��S+wG#K�E��.��7���mU��r�X��S�Ol�{U�|��b���e�s7��=��]1�19���q����Y���}�[_E�c�����Cy�eIt��������e�.��u�_���z]5���v����I��R[�(�R;������RoN�Ju�9a�*�����T��wV�^�l{a���-����;�<ly��;��3v�n;[7��h�t�\CZ��U����s�e��.���*j@��P��H�}nZ=�ZW��+�V�s��r?C���j`����HV�m.�N`�������I:^	6�M�q�``����o`����R��3��g,�X��,<cq��cqA�SY�Ne�:���T4@�T�~S�'S�'S�v�S��S��S����C�Wb#�,1��3#�,1����,�dFW#�Bed�&3�x�b�ghF�����L������,����	gh�����h��������������(��|�e��$6��,S�cS�c3��=W3��=��=��=��=���m��l5Uq�7U��MUdUSY�TEV5U�UMUdU#��jD�U�(��F�Y%�2��2E����*Q�F�9(�e�O���b�����KC3�yR^\���������6���)/�Myqm�2���������7���)��My�m�2c���k�+tS^���,S��e���^S^�����4S��m����4����f�E��w3�	m7��=��=��=��=��=��=�g�\f�\f�\���,�sQ���6p^�F�����6^67p^�:sc?`��h�G�-c3ZU\���>�-�[uf_������wK$,��uDAg ���0P����SE�����"�����.-U����*�9]W�����SE;��t��m�6m<�6pn�%Y>�>�48�i���O�c(u�"P�(�:y��p�	E��+)���Y
�_������+g)�uW�8��J�����/���a&���u�p����N��� �Wj 8���@
�mX�8.�#�����>*����8.�K\"C8CJ,�c��;G��l�N��4�Ct�5p29��u
�L4�@r��L�8�J��XC�5� 9�<�c�E�k\�8Bu-$�r�g>���|�c<\o�5:]��������{7���:��B��z)b?�S����rr_L���]���eg=�r��';y�����E"(%w����|�u�|������5�aT�9�������?����YO:��q^<����\_��7�4���/8�g%�+��"�3�(�+�u�P{�Y_el4���]��*���.�L�mcfsv��k
�Ef �����������I�	��Ve��4��m�|�4�Tp|.���h�rW���<���brs,'�
�@GvGsS���e����L��H������������:�;���N?��m���O�y����l���:���y(y��c4q�f��Y�6����&��MulJ.�j�Z\R+kJY<V�d�X��WY������ZN��D��mh<��IY������KW�\r�W]�L�&���sWu���L��i�K��&�+4%G�M.��mr���)9:mr��i�K~��s��u_r1������%=g�K.F�\2�lrqu}�n���!�K6�M.��mr��}��}q��G��
��F1:<lr�vE'�M�������q=Uc�4-T���^��1�h�B;b����vl1>���u�]}�v�����QT@_��e�K��6�����/�\�O�)�vo�����l��(�}WP��wf���)���{w��OJ+�0{6���
c�g���h����9���9���9���9���9O#mrQ`��(0�X���X:4��Ee8O#m�(0��E��%�N�%q��_���%q��_�����lrq���r3
�1?F��e��e)���ZDJ��S�5P�('q+n)���	(i���7������n��]�:����d���u��Vg�%��S@I�.�G��o���O.K3P2Y��PRYR ��\UPfM�N���T�H]����@�j*uf\Mo3c�kOJa�D����\�R���J�F~R���O&u\��|��(av�L>���QS]�q4��i�]Q��0���
���R�a�)&ue^���
��"Rg)�K��:��x3l'�b�����v"���%�dRw4�%�O��I\���L+�^%�O�?5�O������a�5�O����Q�,%]�q�5]�q�4�����L>�k&�p�R�K�	��|&�7��Z���\B�[��k�{K�w\7[����Z&������i�gG�E*���d��vG5-�q]�5X�]�qu4^���#�l�V����hA�:&��8�4a56�%*�-�]�
��O\�:&��RG������L�q<�)�:�T�%�T4�#���1��:��3�LA�i<S��$�x�v}�@_l
��Z
��-l'������	N������hrK$d(zF���p��&]ic���M.:����h���}���q({>���x���q(����%�&;O����M.z�������h���.;������=�\�w��M.��x�&��]���e��X��P��c��x�&]�c��7�!��2��2���lr��S����	6���������\�w�z�M.��x�&��]��e������.�P��e~o(��r��R@�\�����6�8�����I��,-$���6�!mr<{��E�\�d�*&c�:&c���
����Xe���.&c�}L�*�����gW��)&c���U	U�Z	U�ZpjO�p�����`A��)>X��Xe�w�UF~+�2�[a���
���VXe���*#�5V�����o�UF~k�2�6S|$�{��d�`�N1�C��C=����Z�UF~7Xe�w�UF~7Xe�w�UF~7Xe�w�UF~�Xe�w�UF~�Xe�w�U�GI�p<;�#�C���M�Z�[6���-�t�7�X�������6����Q�2m:��@:�3=�"�og�t���t�w�t�w�t�w����$��Q
�G}T�Q!���H5�UR
�G�T�Q)���J5��R
�G�T�Q1���L5�US
�G�T�Q9���N5�����~R�TP
��J�QE)�?�(�G%�����������R�TT
���J�QU)�?�*�Ge�������������nV����fU����nV����fU���oV�+�_��������^|)����Q_��:�
�U|���P_��:�
�U|���P_�;�
�U|���P_�?�+�G}e����������2��W�����Q_�?�+�G}e����������2��W�������j�����?���������j�����?���������j�����?���������j�����?���������j����Z�?��6�_����*���U���jH�z
�c����U�B:�{q��J�^k{(��������l%P�u��}��Z|D��Q�u�G�k��Z|D��Q�����@��P�����@�c�W�Z*^	�k1�x%P����k=��Z�G���Q����k=��Z�G���Q����k=��Z�G���Q����k=��Z�G���Q�
��k����G�6�Q�
��k����G�6�Q�
��kC��D�o�V�Z��ZI�k�o%Q�����D�c�W�Z|����bD�J���!�+��*���$�������b\�J���oW�U�b]I�W1�u%Q_�g�+��j�������F�?�����j�������F�?��	���j��������&�?��	���j��������&�?��	���j��������&�?��	���j��������&�?�����j��������f�?�����j��������f�?�����j������_�Ws��W���M�.!]B�����^�Xo�/<�m�
�c�
�c�-�c��c�Q��-�j�N�
���#�c��c�3�C��1^���6��j������
��j������X/���z��5����^�g��?��}5���Y@_���j��W��h����^�O���|j��i�^���z���~��i�^�g���|6X/�'�������M������
�^�t�?������u5�_�F}~�����+�k+�W��V�����P_�_[����B}~m��
��
����+�k+�W��V�����P_�_[����B}~m��
��
����+�S+�W��V���O�P_��Z����B}~g��
��
����+�;+�W�wV�����P_��Y����B}~d��
��
����+�+�W�V���/�P_�_X����B}~a��
��
����+�+�W�V���/�P_�_X����B}~a��
��
����+�+�W����(��h�l�!e7e
%@_}���RC	�kCq���
����(k�C% '�O��8�u����^f�Z���:x�5ju�2k���e������Q���Y�V/�F�^f�Z���:x�5ju�2k���e������Q���Y�V/�F�^f�Z���:x�5ju�2k���e������Q���Y�V/�F�^f�Z���z�G��c�Z���Vo����[�?j���Z���:x�5ju�Nk��������;�Q��wZ�V��F��i�Z���:x�5ju�Nk��������;mPW�w����A�
�i����u x�
j6�N�W��6���;mP_����/�A}^h��
���x�
�+����J�<j��/}�9�A
H������0-���<�}<�A�r��<�u/x�
�^�����	7�{�nP�t�o��@-=p���@*P�����>o�A}�r�����9x�
�s����#�����p����5?��
j~�����7��G��(���F�'���p�kx�
��	7�F�'��1Q���[���"��\M�7np5����|�W��\M�7��j2��{��
�;�-op����K��oXW�C��Z��2��7���'���<�
�e�	op-�����y���7s���g���8���p�w���W�]+���_���
�$;R�V�k�8%�?�P���	%�?�P���	%���P���	%���P�XHY�1����h�7G��c���p� ^�����%��t�a�+��:�	��}�Kd
�?/WAeq�>��\���3����{�N��_��Qk�������
|q���Q0���Z/��U!�C��UZHIc�hUCg���z�RR
&aL�'��RIc��(�C�6\��@I�N!*MC��X	����{D���1�����[�*Kq�i)�
����+��U���|6��������[>�{�gso�l�-�������|6�������R�� K-�`0�-��g�R��0���G��Q��X&�:
���hYP�hY0�-�����Rg@3�h/p�RR�30��+Vi3���&���d�����6�t7�&�����]l�\��m��@�6�-%v���Ed�\��-����69�5i�X�6������&�.���RG�� O,�������6y*'��S�c�2����s��U�UL]U��e�F�����;����+h��t���uW�b�b���nc��=���g)�����<$R��*��k�FJfK��*QUtU�a<�NxG�ejJ)y<�	(��C��*��������(�e��QU�����
Rn���83T��Kc{\��r�
�x�(i\�dOP�")��s���������z>�A�r�X��k��DJ>�a������&���
�F�a46�A�hl`5�il`5�yl`\�<Vq�!
���A�S���'-R�HW��"��g)�=�"�b4\K�� �g"������z@�����+�z
�����/���x����r���b9�j�X��t��2�Z���_�q�<�qMn�{�k:X*�p�����_�A�<.rM��N��������KE��&������&��Gd.=�J�/��!�����wX��~�c���DG?n�Z^_�sm���[������m��� �
����`I�{�������4]�q��~p�`�
)V0�
H��r��b
#���h7�-�Pp������'�B���Sq�;Z��
)6��
H��1���A��^c�����-M������'[��=	��Dh<�>%*@���Z�O���c���A*��B����c�"�Y���kH�z�;B������am���_��&g���h)<�"�m���C��V1����U6�����D�]e��C��.���U6}�t�7�x�#�'3�@�tE�/����E�)��{��l:�V�@{`?&hO
�6��pD�?�h�=
���(�7�g�����X;D�/�����{��;^L�_���	�4��w������c�=�c��_��B#RNHAVy+\2o���r��v,HoM��3���/�_���
���
�����]��p���}<����8[�s���g��q��/ ������{���J�<��- ����b���k��+V/X��M�_�=��r�Z@�7����N����[�"����'A@9�� f[��E����V@mHG���3�t1]`;{H�bHG���=�|��>A:�3C:����K:�Zk������F�t������C�~5^��^�5��!�51�`��_�n��\�U�u�~���r�V5����[� �/�oU���\�U
��r�V5�����%��9h�Vq~�g�n���n%�c;���Z���VC:��6�Qa;H=���|m;H=�F=o������#�c���������C�#�C��QC;���NB:�����_w��������������`���_c����G=��
���z���/��y�G��������h�������q��#��I��K���`�}�/XW�[.����[.���[.(��-����-�9�� ��k���*������������0%?E�����:%�u�=3P��A=P�D�3�sv�Oz������� ��>"����S�|O�9P�I=��XA>G*���G�.�19�����Dq=�S~���Ka�F~Rc4��b���'��x���z�81�!��&����{�A����:d��!#�O\�'*����'*����'*�h9������{��i)��*������|N��V�����
�9�S)����'��;����#�;�0@�S�~�I�5��>�DH�8t����������xw�������wo���8g��:��>��P|�Ie��P|�I��P���)3:�F����:�(��%��s���\��:�(��%��s���\��:�(��%��s���\6��/��%��s���\��:�(��%��s���\��:�(��e���������������.>&��`yr������ X�<�wlu�H�-�k������bfw��vJ�J���J�J��I%i���v�U�.L-P�U�."
(�*e)�$��]D�Kd����J�J�*�;Y��!f����=P�5@��pfh{U�8���R�����^U����U5C��^	�d��W��v2��3H]E�S��;3\��	��|*	~��"�� ���b���T ��� ����_I�%��W�Yb�~%�;�O9I�d��G�L>MsS0�l&�%����[|�S� !��g�R�n(xyQlQ�OP�cfwT��-��	�)�|�3�;C���c��s�y&��8voA
�����5�>p�{\�G�%&��(�������P2���
P2��`�:���$�����0��.���(�|NI��|�U(�|�p63��j��!�|������s���P���D>�����Qh�v�G���gv�B�%(�|j�M[|�����"N��l����V�N�S��Mv�C+���}K	�����z�2�|j��^��-������N�S�����j��4�O&�=��k���TL>��]1��Q{+&�����|���s����|��nq���B��VD>M��OK������%"�^�[�����TD>-%����X�����
��O�#������v��4�c���F�if�HK	c���F�a�H��';3l�Q
��F���a#�6�%&���@��Sw`�h&��G~2�������^b�w���KL>�����1���X��	1L>������NAfvG�t�"��X�C���e��Xd,3���E����dws�g�3��e���������3�o�����4���������i�=��X��,2V����E�j*�H��X�8�"c5�8�R?Yd�F �Yd�FT0;Xd,K��$���A��X���&��e)a��X�$��"c5�%�i���p�8�bh5
 fC�i
����jZ\7Y���3���t�}e1����3������Y�f��bh5J���-H������Y�f4�%&�#�eZ&�z�[&�����453z�;&�s=��|�=�QG�����
eJx\l�6��@�:"���fG���Fl'�����'(�S��lu��$��j��wD>-%���g�'�G����������:"��A�AO��5x���l
Z�=�O3�f��|&vr���A{�g��t�y��m����R���P�m���e��]���l�w�e�vI��|v#R2����3��7?3����2�������P����P�m���l���e�N)�|&�|��m��d�9� �e�N��f([K	���l�	�<C���
��Rb�L>�#hE��m��	��mg��2�m;����l���3C��3`���#����������������K������0
����r�"K^0B"K^�\���r�%K�����K��RR$@�XJ���%,%E������V�M� ����
Mo��t��kH�z����j��
�c���<��n������K��9�[�6�/���6�H�"�A)��v��B:����vy�x�V�M�q��vy�8�V�<���z��
��v*����^���zGH�z[h��z�n.��n��'^~'�0r�~|��z���q{�]IxM^!r�&o��>�G��@�z�������	i��f\���$�X/���z��-�;@�[�w���P�g�&o�
�C�C�Po|oK�k�������<�q��k��8�������&/�#�5��D�_�5j�q�t�w�t�w�v�F��=�Q��G�F�:C;Q���N����X���^��4�gUEO��$vLq$�	ZU]����e
�$v�-sJbX�(��]AIc�Z�(��`)P���z�<��-%r�����I�lK�}'v����;�RB���*���� �����i���g��XJ*��Gh��
�kH��Rb��|�@��f��XJ�c)'������g2�p0�9O����T�a��T�CVc)a1���y�p0 �e�p0����XJ�c)av0���g8K	2�p0`�e�p0�d��`,%�<��XJ�y���� �SA|Y1���d8K	��p0����`*�##+���� �c�}g8;��v*��N�s�g8K	2�p0�����`,%���T��cD�s�Q�an2��'�������`,%�����c�T>+�'������`,%�#����0FSA\+Y1���1b8K	Z��`,%�&��XJ�<�O����)p��|J�<�O	k��X��p0����`,%���`�j��p0���p0V�a;�|*�`c)A����X���'�G*��� ������"?�|��O*�-���g2�p0v+�dH�}j)�M���!Ql�0����:�!Ql�`�1$J=�aH[&���|
5C��-YY1$J=UHI$��G��tjQ{3$�2��h0�O+E|�K��1�/�^C��t�1�Uo��-2��.!]A��t
�-��c5�����t�-�7�c����C:�w�t�o�1V7��u��%�;C:��o�.���DUA:�����b,I'Q�����X���z5�c����&����t������!� �]��B��]��"(�C�\���7�l:�/��+�7!!�)jHyQ��[|����	��7�\�������t�o���(����!^��[�k:�7�����0"�?���Ce���������o���
���2�_�}.���6�+H������,;H���������5�w�t����_�?�P�����5�N"E
��O���t	��T*�����&�����C-�<��o�v|_�P��l������E���x_�E��>�N�/��I]yI��Fl���G�]�r���wyLc� �.�i�Q�n����G�]~~�q����5�uyLc�������{������#���=���L8+���V�d����49�d�Z�=��w��	�'�=�p$�'�w�d�����L��'-[���p���e�kdF����ZW�?`P��x���_���Ay6��e���(�%�\���E��k������������em��_�"���|-3�w��_��#_��
�����j�&g^���&�7��	��M�i�yq�`^�zj�G����J�����0*���Q��`^�zRX;���L1/.�������1i'��1$��i�2/.�n�����%���qL,%�����1�N�)�!�V���|��L�`>d#�����+.���(u��� ��!�#�;�!�;}�C�Ha���v8������d��Y�@����}g��-v���q
f�U�����{@�v�19��6cr!�m��<B���j���g����GTJ���1��ze�U���<����g=���n36���d�S*���6�j� �+,g89������_a9�����r�a��_a9��P������
��F�]a9�)A������
�9��+,g<����}����d4��
KOW��w���������
W�<������W�@�������O��� �����w��������� ��i�i�/��4���b;����
F(�������sC<jp_����cb�U-%���W�� 5����������,8v_�R�e�^���`��Wa,%����0�7-{�R�L�Wa,%H	{�R���Wa,%X��UK��$��D~�R?��0�8?��0����
c)A>��0����
c)A>��0���^���`��Wa,%p��
c)aO�^���8FT>G�!��$y�������'z�&*�#���'���L�sM;S��@�g*����[a)A�g*����|����9���|N0;f*���L�s��1S��`v�T>'w*�3�;�����'�z�����j.!��t�;���Ev��sy�������i�GC:����Z����k$�?Za���G+��������k`�)���QXN��4�+�G��+-��w
��d�7
��$`���I��5�����V~F������oO��kl7�'`�d1R
`��.�pJ!=pM��D,`{D���j��/�h-�(���XN�b�pn&=F�����,)�|j�0�-�GI��(��l%�s���,������w����y&.�u�mC���q<�|oq�z�2N
��^
)�|o5�{���<c�s)/������r�B���c"��vJ��Z��J��\�q�&��y�1�=�Sy�|�|��I	1lmz�X_���>�W8.�#����t����s���~�E��M�q�K�r1�v	��2�N!e]=��b:��ZC:���<�|��X/x5e}�WT�+���.�������)�5Y�������q�u��q�yY���V0�p&)U���v9�~���X�`�����|��i�>)�N��
h�x8y9�R"�M^����s��c,%����K�2y9��~rv9�R�=dy9��~���\�U��[4�K�G;J_��I�+u���W-!�����B����^���o��;t����a~����q]�P�����#�c�~�(R���5GH����^a\y9.Pbdy9.Pbi`<�����n������B�9�O��Wi@�p=0 G������$�^����$�i��
=�b����p�!/��Ix��~��>cLo.�o���\�	��6��/�vps����b?��_�_>�����P�_��|
���8���6��;���P�}^�\>�c���P�?��|
���b���\n��{�W�W��q��~��A>[	����.	\��+���������Aa�.���������]{���}��1I�
����������e�W�/���h�	���#�����X����`���8���A���y��Mw��A���v�@��3���E��D;��\~%���h�K���������.w#��8����C�:�����i�M{Ip��)1���)1J��)1���)1���)1:��)���)1���)1*��)1z��)1���)1��)1j��)1���)1
��)1Z��)1���)1��D���N_�z�;\^�z�;\^�z�c\:���!�7#\^�Rt{C���y�����y���p�<D���Hg���W�C�.GQ:��b��c�b��c�|�h���N���1^>1��/���]�
��e��\�v�x�z�����>��.��w��r�|���f�|���7/�75�����M���1��k��0C:�w�\�k<����s��O���5������Y�+�������F�]nob�69]1���1]������`�y��A:��)��0F��HG�!�r�v�r�&�|�t�#s�/a�89���}�,!�;����A_��6������@:�w�~O�����t�o�����~�y�t�����	�����*�g;����c�����J������������rrWN���C9y,&�K��:> f)	�R@9��*���)�*%��31�yg�X���R���[��q�v���������f*���D9Y�����LE�l��d6SQ2��(��T��f*Jf3%�����LE�l��5SQ���5e)j�7�����<��f?��s2�}��9�)�����/�B�E�s>��i]_��/n�9��ENwC���\�={��31���$��v)	��(b�KI.`����Nw��[����
P��z�����A[Jr+�������R���q	�Mn)��%c�K�^	�7 -%{%4�dq	Z�=b��VI�Y\�i)���6w���5P�5��R��kp�b�����p���UL>��^��C��3��� u�O=V=P�4��Y��.2�������Z�@�^��wd,%}ey��hl����<����g�T1�	��+�Z���v�������d����S0��l'�����%��S u���F�G��g�T0���������Xo����Q���%f����g�C�V��.
�OA�SU=���u8�%�O]0��uB���q,%�Oh+KI���	z�^'l�F��$���#���N�h��^'l�	���N��.���m��L�?����Nh�{D���k'�i�G��g#Q3��	[�:��N�o�[J��w#�;{�P5#�I�S�I;�|�A�X���h`n���Fh�%��A��^'�5���S�07����������jHzD�Swh�:�G�;�O=q���9
�d��I����v��U��Nh�7p��N�,���F��uB��YJ&�]��L>�d��N�H�����F��N��
�M�:��mp��|�=�6�M7c��|��)�O��W=��,��>V�N��H����F�'���$�`,��if�d���{#�[�������#��,��pv���Z��,���68FL��"���R�bz��{���k�'�u�d���=�����V@@����zh���uB-pn��	�� �:��h/��	
��c)�|v�N�?����^'�z)���i@B���f@��^'lZ��uBk���`��jo�:�3p���Vp�m)����[J��O���nP����4�$����0�X\k���Vdq��w�,�u;� !,�u;����V�������z�=�k�l'��mZ�ZMv,���Z�!4�5����l�^�0F4��,@�i\�
W���������{���x���Z7G�6,�u3����'�O��=&�$������w���k-:���g��|gq���eX\����&�k��4���+�k�f��,���t�k�{\�Y\k3H���y�����V�@�i\k=#�h\k\�i\��5���;`�cq���QB�|�m�����X\��X�|���]H�|O����X&;?2x���l!�����#�	�L>[�����U�}g�����lQ�,%}[=�=��#��z�?{��=���0����Z�������``��
�����5Z�;���c���)�|�
���wg�?����wZ����=?�a���Q
�<0�s�������m)����X-%�����S�'�����m�g`Q��=K��O�����},,��:
�;�z��
����qm��[�)��=��,���j��,��n�VdQ�S �z�j��,�����������gQ�����Xk<G`Q���A�X�c�t u,���k�����dQ���@����f6�y��Z��y��ip�fQ����E=nu�#�����E=�Z�,���+�K,���F��,�����������]�����cQ�����E=��dQ��A�
�z��4�z�Tr�����L"��0F�l���E=6b�2��ih���M���2%��l�2S���R�1������d���*��t}$I���f�L������S�����Sk��t����
)KI�g�@`)��f=%;�l����)�<�A7K�����VS5
��!0�Oi�����SG��R`�L��)��i%�&CK�Va;������i���CK�����d����v��poa�0���3��!���C!���R�]�q�v2;��W�p���0��
l'��5�A��=��3`�1�1`=�/�c8@u��L�� j0�T�)�P	�v� ���d8�b;�����*�a�P5�iP���c8@�?B.1=?hw��:�X&��UI��9W�3��f�!�U
���5��:���Yb8@���p�z�����T�z�p�z�#�rU8�hxN:�4uR;��&��8U��d+Wg�����Q ���;�lq�e8@|c�R2�U� %��[�Gh:�6h:@}t���q�pb�1����-%����v2��
�'�6�#�b��{X#����-%����gU�N�c8@;�`��i[�d�lz@�u���l��p��p��x�Y�p���c��9WbU2`��ZJ��33�G�6��d8@}���n�.��1�J#�'v�WO���BOU=��z*�B����1���6�v�gL�d��`~1�����(B/�6)BO)�����c=��<����BO5=���S-�Yt��*����WE������d;�	�`v��f��L>g��u���m?K�,�
N7:����U��K�w���;�q������x��!�����\j@�t�|��"�Z���x�(B�6v�g)aMa=���BO�h�0�^���B/9C�BOO#����4 %��d��z���c��KwX�gL���v.W�R������`��/�z�<YJzC�$�g�<�g4��u�g)��l��xz)BO��1���8C�Sc�l�bp��z��S��!�L��h2�L�w�7�E�(�d�t��zfF_C���;��k$�y��k$z�B�1�?B�iQ+2�^/��C���;��k�{�N��=C�5x��1�^��d���]�zM��u��Kw����
�b��Kw��7�>�B��"�*�#0�^+HG�>�c�t��z�YC��u2C��{p��k�#��Nv��:C��=�1�^��z��x����t�6������v���(���G�0�]}���a��Va�����
G���`��v�A�j��a��{��%�7�w���G^U�k���G^U������6���	S�
�/���jl���R�����H�
|���/8K����������?F_])w�}u&2��������xw�������wo�2��v��r���X��J�}}�0G�;�,�Q�X&�]�R%�]�F��A��=P�U�R@IVIK9%Y%-�`�X$K�%����^���}r�q����>Y����'��� ��
y<]W�A�r�����{3�d��s�f�,x*��H'���3Z�T����M���m����������'�@��y��T-�����"O���-�����"O������������}}���p�����/bS��u��L}}���#����s��
yz�|A�a�-��e O��/�B�^7_t�<�n�h�<�n��yz���yz��0��=��5��{���Q2S�G�g�%�1SJfc�����U�g�%�1SJfc���s���3�����O)Y����xbl���f���apv�\>�����\>���'Rr�DJ.�-Pr�DJ.�H��)�|v��gGI�3����PR���6=���R2�����gBI��i���QR�L(�|&�T>�%0�����gBI�3���9��'Rr���\"%�O�I�3�OJ��>;J*�	%�O��0�����'x��gG��VX���Qr�+�!}v�T>q���>;J*����gG��'���R2�����O���	8��!}v�T>J*�	%�O��������PR�L(�|��gH�%�����gBI��S=C����c)a7��>;J*�	%�����'�Mz���QR���������PR�L(�|��fH�%�O�����T>!�3�OJ��>�f1C������j0X������kE��R�Pr����u�(�����"��(��A���E��QR�3�#*u��Y����E���
(��%�T+�}��E��QR��sQ!fGI�3����PR���GT>��_
��r���_
��t���� ���k����3�}�v�������������ca0b]?_����M�/��h����cK4bS���%�)�������rl�Fl�|�+��)�������+�?�O�+�?�X���a�����(�Z��|-����5
���
����pf
c!�+�)�-�����8��3\����w�<5��+�i���b�6��+�i���b�6��+���w�:�"��X�[���4�'��������b���n�.���Ph��
�9"�.������|��#����o*�����T���������S!�.���B�]>��@�]>��@�]>��@�]>�
  q��7�O�����>iW��'
�����A\1�%����/�W���w����W���w����W���w��W��+��B�]1�������W��'
�����a�4�C	���C���C���C�G�]1�q�q\��w�����94q�{�����P���q�qA\��w������b�������=�������s������s������������sh�����sH���
�?������s(����������s�����������s�����������sh�������?��3�CA�������������C]>�������u��op�������PW���+�?�?��������u������b���C]1�q�������PW��x��\��/3��s��#��th��/���t��7-!�@���Y}�|@{V_1���W��g���Y}�|@{V_1���W��g���Y}�|@{V_��=��X��5W��h��+�C�g��!������E{�\>�[�g����E{�\>�[�g����E{�\>�1�`.��-�������=k.��-�������=k.��-�������=k.��-������E{��|���Cs��o��m���h�6W��g�+�?�����������ls��G{��b��=�\1���m���h�6W��g�+�?�����������������������������������������������������������������������������������������������������������������������������������������_q��]<����������w����#�.���{�����>����x������=����o�G�]<��H�Cw�������/���{�_������������_<��������_q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q��_1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1\1�q�1^1�q�1^1�q�1^1�q�1^1�q�1^1�q�1^1�q�1^1�q�1^>�+�����
��������x���p�1^>����a�|�W��/���?���������_��c�|�W���.���?���������_��c�|�W���.���?������������������������������W��\~o�~���b�����{��{������[�+�\~o�~��^��_f	�������v��������bj�)]~�~���b��������
������#�����w�<4��+��A�]1�������K��+���yQ�������[���u�����K��#����-�����"����-����/������8"�.������|��#����/����������Q!�.����]~/�~���^���w���Z�����������������!���!���!�W����b�K���_"�����w����W���w����W���w��t�=���{��P����������K���.��n�G�]1�������W����b�k���_#�����w��7��+��A�]1�
����o�W�����K��?���������K���.��n��]~/�~���b�����{��{������K��#��������^z-q�q��t�=����/q�q��t�=����K:�EU1�����P�H�~+�v��O�����!�ib:��G�qM����k������}L����cGH��N1��x���C5��u
�������j�?���������������Nh�?����zY��/������_�?�
�o�����:���s��!�k*H�������FB:�����5��5��FC:��H������&��������=�c#�k�w�����c���G�?��
�p3c�G;��Nel��h76����
����8����]���/�����`����7�����u���9��F~*\�Z	�����t�o����xl5�C[�����t�o���tl;H���=�c#?����!�;A:�7�S����!��U����������pn4v��Gv������m�pYc��}R�7�_�?�K:�����q���/�������������2���+��|�s�kH���
�����t�o��/P�}�����t�o��F���!�;@:�7���������������C�?����������G�j��}5�����h_��~��fh?�W��^����wI�y��q�th�?�]������k:������Xo��^�A~P����s��pu��K:
�?�t`���;�O=&>%y,Aa�*�X��� �w���]v@�K8�(�c	G��d�%�����$��<�`)
P��^���Ux����r�('�rr]NV�d]N��"On��m9�+'�����<���r��b�$s���J2'^��$��R%�
�R�9�P�9�%��U�${@�O�N�= r4#P�9!S~�n,%�y�F����;uNQ����Q��@oI�(��D.�G$^B�j"�����:�{�u6�QM��RN@I��R�|�T�p������T�Jl'��%��%��%{`"��5{`"�dL$����d�gOl��?}b�(�����dU�g'�}8;Y��������N�<}8;�����D����MK�N4-{8;�����T������������C�>
w�p�Q����G\�g%��pv2����G��s]��s�����a'�
}/EN���1��tyP���O���1��tyP���O���1��tyP��$���0��O���1��tyP���O���1��tyP���O���1��tyP���O���1������u�?�
��?��P2m�Q��g�J��!�3��vBI<D����N(������g�J� gB�V���>b��?��P�G�����h'�\>���'Rr�;�?��Pr���?��Pr�DJ.�H��l"��vB��)�|"%�O�t�3�	%�O���h'�\>�v��h'�\>���'Rr�k�?��Pr�DJ.�H���j�����'�������'HN�����'�������'M=�����gBI�3�����yO�3����PR�L(�|c��|&�\>���'Rr�K�����\>�r����\>���|"%�O�����\>���|"%�O�����\>�b�|"%�O�����\>�b�|"%�O��|"%�ORM#�����gBI�3����{���gBI�3���#%V���gBI�3����PR�D_�H�3����������'��O�����\>���'��O�����\>���'��O�����\>���'��O���	�{����\>A��\>���'Rr�D���_������Y�����,�tE�|�q�"�>�8]~�e�����2NW�_�g�#?U����*a��TI%=U��|��
������z���O�c�����J~��%=��|���������<(���Q<�����3z&f�����v���a���u>���<����X;���g�v �kg)A>���a_g���� ��O�+��O�.��O8E�+*�p6<WT>��y��|bT>��qT>a�2*��W��O��gA���YP��uT>�f��O��fA�l�YP�kT>���?��T>k�OA���T>k�OA���d��#��.�R�|2\�C�gp� �gp� ��	Ef�������2L?s\&��3�eZJ�O���� ���`�f��Lp03�e&����2-%�'�e&X���2��yf�LK	��p�G�<3\���d��#�{�k*�p1o��|��a�XO��4s�'�'f���� ��i)A>��R�|2�����XO
������c=5�'�z��jfXOK	������RT>����Q�p�s��P�=sT(\u�9*.��z���3G������B
���Q��T(�'C�&����B-%�'C��.G�*����B�F3C�&���B��P�	zf�Py�a�*�Rb��]�k�w�:�q?j)q����f��ZJ�yM�]L�N�Z���D>-%�����vC���������h*��:C����a�|v����������$.�0��OX���d�P��q4�|� K��g�d�|� ���g�����?�R?��<���@-%�'��ZJ�O��� �j)A>�R?�R�,f8PK����9�j�p������:��@-%H2��ZJ�<���I�s��3����3���`�2��If8PK	�d8PK	2�p��d��@-%p��@-%����0;�R�h2�����p��f��ZJw*�3ho����D��.1��p_�p��B�<��J|�`f8PK	}g8P���j)A30��'f����2��gf���0�j)q4�|V��g8PK	2�p��d��@-%hE���0;T�33��ZJ�O���t��p�����@%>'13���d8P�OL�j)A>T��3��ZJ�O��� �j)A>�R�|2���d8PK	�������!1%>�13$���dHL�Os��i)A>S��3CMZJ�O���� �5)�����&-%�'CMZJ�O���� ��h)A>��R�|2����dGK	������!%>�234���dhDK	����w�)0�P<`���x�ccD��������&�%�������B C��
�V��'�����,%��"A�� 3C�	�a;�|*�v�c5�"�TG����.M)��K7'��������������=6]����Qe�����t[z��N��G.]�J����k_Ju4�����`��Vc�2�7���2�U�W�,�O���=y�lz)��K/E���[�q��&��!C@�;7�ZY�3�<��8����%9�P��p'��p��9�����P�tg���ah�3`0�c�t]�t6�8�lzQ�mzq������������n�R$MY��)K�4�`d.����[Q�Z]�F��qL��1i�/@�[�z(V;��T�0��3�=����~PN���uIOU�/��6@Y	���2��T���{�CmjUL�TYL���,
�M/
�M/
�M/
�M/
�M/jy�^����\N����?=	E~��p�������zyx�����#�h���3 N��%����Br&��Bj,�L@���h,D^Y2V�	�r��*a�`M���tS���s��.�P���D�s9}�����D�8�^
���KQ]z����������N�����tq"�8�mzq�����k����M/��6�hv�������M/��6��N�������wqr:����\�8Y���L����������M�*��R�
d�p���XQ6�^\�lzqak�8���v��:R�H���I9��FR��VH���I9�� )�s7H���-�r@w����#)�tH�1�#�rP������XmG�a�(��^�By�c�+��P^�������(�W~9F����1
��_�Q(��~�By�d�+�!�����d�8�6-�MF���NF��hq��=���/�h-~SF�h��2G�����]�e�������]�u�������]�������1(����Ay�wf�+�4cP^��������W~o�����3����1(����Ay�wg��_�Il~{&�]����v��g��_�Il~�&�]���v�wh��_�Il~�&�]�5��v��h��_�Il~�&�]�U��v�wi��_�Il~�&�]��NGy=;��_�Il~�&�]����v�wj��Lu��3�j������W��.�bMb���5�����$��[��.��Lb��;3�A�/�$	�5�$��Lb��{3�A�/�$���3�2�\�A!�����TOS=1HxP�� �Q����UOW=1Hx`�� awhv	��$<
{b��0��Ar&{2Z|�OF�/��h�E>-���h��4;�����$�:�� a�iv	�P�3H����A����v�fg��K5;�����$�Z�� a�jv	�X�3H����A����v�fg�� ��AB���	
��$4�zj��@��AB#��	
��$4�zj��`��AB����n=�]h���v��S��F\Omr=�]h���v�A�S��F]Omv=�]h���v���S��F^Omz=�]h���v���S��F_Om~=�]h���v��S���UO
X=5Hh��t�!��E��,Oy`<]�i��t9�!�����O�c:<]ci��t�����5�FO�X><]ci��t����5�FO�XB<]ci�t��A��5�FO�X<]8i��t5�A����F�NWC�;]
i��t5������F�NWC�;]�hD�t��!��%���N�8�;]�hT�t��a��%���N�8�;]�hd�t�����%���N�8�;������jH�{��!���n�i��t{N#|�k,
��n�i��t{N�|�+7�����4�w�=�q���9
���4�wj�P��=���$����l�����t��{����IL~�'1h���t�!�S����NM�;5h���t�a�S����NM�;5h��t{NC�V���n�i��� ���S����N
�;5H��c��c��c��c��c��c��c��c��cfn�����:(�}D�Eq�#�.�c�vQ����:�}����Xu�X#����1�{��a�,��Hzo����C4����8�MuzxD�{C
�<�D�{��<!��<!���=�8�����h�3 �����3 A�3 A�3 A�3 A�3 A�3 A�3 A�3 A�g@��8Hy�A���+�E^q� .��H��� ��� ��� ��� ��� ��� �+	&�<	&�<	&�<	&��� ���`2Z��3��d�
Pg�8g�|��3p>��8��K��K���K�39�[g r8�g r8�g r8�"�,�"�,�"�,�gpo8a���p���������r|"�Cp"�Cp"�Cp"�������N�39��"�,�"�,�"�,�"�,�g r�������������������������������r�\�s�\�s�\�s�\����%��W�d��j����O���������������������j�Ky�Ky�K6�"��g r�]�@�P^�@�P^�@�P^�@�P^�@�P^�@�P^9D.1H8D.1H8D.1H8D������������\2Z�HF���u"�����D.�{��j�Kl�Kl�Kl�Kl�39�.g r(�g r(�g r(�g r(�g r(�g r(�"��.,8��v�h��v�h��va��w�P��]�`�p�X�����bT�l�3�?�3�?-�zg��8�;���0�{c�&��&�V��]8�0�]�@Q�������������������������r�ab�p�ab�p�ab�p�ab����;��J1�{c�@c2Z�HF��Xu���u���u���u����"h�l�}Ll�}Ll�}Ll�}Ll�3�G�.g��(�g��(�g��(�g��(�g��(�g��(����.���.���.���.g��8Zg��8Zg��8Zg��8Zg��8Zg���h�q������:�3��d��=���c��c��c��c������#���#���#���#���#���#�+�>&��>&��>&��>&���c2Z��p��>�h��>�h��>�h��>�h��>�h��>�h��>�h��>�h��>�v����v����v����v����v9�}D�r���z����`%�����`����9�m���h�h�m�a�h��30�
I�
��g`��h�����}LF��h}|����C@�3�K�3�K�3��I�
�|����q�v�����>��<"��C@�38M��38M��38M��38M�W�m�!�h�h�D�EsH'�.�C:�v�g �8Zg �8Zg �8Zg �8Zg �8Zg �8Zg �8Zg ��h����@:���7�EsH'�.�C:�v�������N�]�H'j�3�N��3�N��3�N��3�N��3�N��3�N�W�Ll�Ll�1�]8�3�]��?���7�E�A&�uo��>��:��:��:��:���q��������.<�cb�������A���r��������������������}Ll�Ml�Ml�Ml�Ml�3�W�3�W�3�W�3��d���w�g���h�����_����@2Z����3�W�.���.���.���.���.g���]��_Q^��_Q^��_Q^��_Q^��_Q^��_Q^9�5�]8�5�]8�5�]8�5�]��_q���_q���_q���_q���_q���_q���_q���_q���_q���_���7�Es�kb�p�kb�p�kb�p�kb�����v9�Ey=�Ey=�Ey=�Ey=�Ey=�Ey����v����v����v����v9�MF��x}������.��5�{�]��+���+���+���+���+j�Ml�Ml�Ml�Ml�3�W�.g��(�g��(�g��(�g��(�g��(�g��(����.���.���.���.�ZI-�2��,�&�2��-�E��e�"Ue�2@���E�HU�&2�$K�	��dI|US��lQ(RU�(�*[�Y�*[�Y�*[�Y�*[�Y�*[�Y�*;�Y�*;�W�T�3JE����"Ue��J��Cy�HU���R���P^)RUv(��*;�W�T��
�HU��hQ���Q�P���q�(RU�8Z�*{-�T�=�E��>a��>-*�}2ZT^{�.�*{�.�*{�.�*{�.�*{�.�*{�.�*�.�*�W�T��+E����"U���J��r@y�HU9��R��P^)RU(��*�W�T��%�+��9���1X*�s".T^GlE��@��r���H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��z�H��zcH���F����F����F����F����f(R5��E�&���H��z3��Xo�"U��P�jb��TM�7C����f(R5��E�&���H��z3��Xo�"U��P�jb��TM�7C����f(R5��E�&���H��z3��Xo�"U��0�jj��TM�7C����f(R5��E�&���H��z3��Xo�"U��P�jb��TM�7C����f(R5��E�&���H��z3��Xo�"U��P�jb��TM�7C����f(R5��E�&���H��z3��Xo�"U��P�jb��TM�7C����f(R5��E�&���H��z3��Xo�"U��0�jj��TM�7C����f(R5��E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���E���C���7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�TM�7�T�Yo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo��Zo����(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��(R5��h���z��ZS���_���_w���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&���&����Zo��Xo����8�5��8�5��8�5��8�5��8�5��8�5��8�u�i���#NCSU&�wL�2��1U%,��*q����'��*q�xLU�C�c���c�J�0<���	�c�&��c���E�D��E�D��E�D��E�D����5-.�8Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j:Z\^��������d���&���5-.�8Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j2Z<�j:Z\^��������d���&���5-.�q���C�
O9bzu"]�H�'����D�>���HoO�w'�������D�t"}.�W'�\��su���	>W'�\��su���XL?���?���N��:���?�	~��'�&N�M���8�q�?��|��|6�>��^�H'�����D�:����m]�[[������l�2?�����.��u�O�(_��l5��AR�k1 )[�����-��N��X
��%eK�#��%V��Yl��6���%VC8"K��X
��,)[b5�#��l������%V���l����N\�!��%�B(�[\�k�
��2i3	��!�a��@��z-z$��:!)�W�\�%��k������L8@�U'����'�Ry������QQ�|�	)b>���k�.���,�BOE������SEDQ��"�(�TQz��(
=UD��*"�BOE����B�S�B� ���B�S�B���v�x�TePx�(:�0V���Ng��MQ���RTo*�4�l*���
!���BH���R�l*.�������B���Z@�������T�SHi*�'�*x��LE�":S��":�Y@��Z@a����0�t�P�f:ah@�t�P�f��)L3�[���-��L��^�
�b/SO�������t�R@ejR@e:�)�2�	)J25�(�1��R�c�(�1���ny)�1U����)�1�S�c��(�1UD4Hg��(�1]�)�1UD��*"�gL�3����SED���"�x�TQ<c���x�TgQ<c��(�1�Y���,�gL�����7�gL��3����R�B��v���T�P4_�2(�/U�����KU�f��
�KU���*�B�R�A!z����TeP�^�2(D/U���
�KU���*�B�R�A!z����TeP�^�2(D/U���
�C�1W�]/"�o>����������/_�=<�y�����7/���P7���+
�X�������`��(@`��&�+
H�h�( absyu����&vW�L�N�d s���h1C��m���5CaF
�?��_2 ������4�@���&fd�w��3:�Hz�CF��!f4I�G�Hz>AF��9f��s��b��G�=q<�#�\H����2��BA�\��h+��0��=
d`�E�V$=� #�9�"��*i�x��iE�������Y�y��L40�0Q�Y�G�?���,`�����(a�Y�D��gk\�������%���*�����X��>�bI�����X��>�2W�Y@����L�!P���g�+0Y����
��?�P^����*��T(��Y@��Z_n�2������( �+T�L!.��L�8_^r�e��M������l/����&������b����$�p�n��j_��)��I*6E�a@R�{�qHJ%�����T�{T[uHJtO�NI��Q�
"6���~�%%�Gk����)�B�O0l�Vm�V�V*�k�`�5�C@�JU5I�d���G����6I�����`0��I��6C�|e���I����2)����I��j��`��T	)��z:&�"�jI�nym�Q���'��D^�I$���U���F�#�,�iF�P��
6��"�mP�������ET}�5��E��$�b�j`{K�4���Q2a�W%��Q�G�b{��J�f]-��� ����Ff��z���\�Y��A#�kp=$L���`p���z08,�����"�G�)hZ17�]OrDRR�%m��L�z��G����o�d0Cd��H�D��nBR2Q�9��w��9�����LO�9R6Q��dp�l�'��d�����8Q��nf�06I��Q'RC����L���LV�NH��WY���K'$f0���q$�Ql[�T�������%�c�W�IuL��.)��q��H��U]B�$��� G:@�f�VsB�$O��%�'��7x%jf�Z;^#)�����H�,ZRqf�JU!���+��T�-)Nf�*1��1�W��"3x�<&�b�)��0��U�f��:��W�p��J8�4�4(������d��kIq0�wO��uGZ����a���Wk)�N9 �y�d2�7�vi�5f��������2Y��e�u�����n7�h�1�������b���9�U���c�uem:$e��*�XWJ��a�u�tB�t�J�k�X��2�T����Ju(���nwTI���kHF������b���f�l�8
�}�5��;(mp�>
B�9R&�����]�PfHH���9i+unQ��(��4(.,����#e��H�\5���]�X/��\5s�2&���#��6�Nv]���Ig+��2�l5�n1���:�������<��	������Ba�LT'��,�jG_�\uG��^�:�{����s��)�c�V&��L�dqG
{������u8������L��������~��E�^v������5��dR��.jNxv���nI[�,J����}5$�(k���(��1j�R�,�Sa���M����R�����2jL{�$o��k�e5���2�'4v����(��4�(��2�g	v�FM�)�L�R/,�L�&�K�L#�d�i`Enq�����&��������(����%E=�n��)�%n�l��b�N��f��� j�<�-3�/��#J/�/��D���2{R����!���Y:�R��]�:qP�]5'����XRT�.�l&�[�-�?����'����1��y��\d���1Y}��J���#�
g+�������j��e��������������X���@��q���?�R�t�*9�a��t�$
 �����&�S�>�&dIq�b��t5b[�5!]%�0vM���ne���H|:���%E��	i�p*�kBZ�(����#�&��J���3�"�N��R��n�]
�2�����Z&�f,n��������7)��b��Y,J�������"�w�LSv'������bQ�um�R�,�-�8��mKE5��t�N�p�(�Z��9X�n��R;q�[�d�,��v`���C�[�UB��S'�v�[��[v��a��U�l�Y�oK���E��&��X�o�q��9v(�,�w-G�[�nb����Z�"}k#��e�jNe����h�agm�G26T:Afq��IUY\om�3x�[�U9G���&-UB�`Q�m�^�[7**���[�b,������xk@�;R&�m����x�vJ���b����`8��[w#��[UR��>�P[���eX����!�"t�!��Y�n�'��[�-
�����E������kp��`/&���BF�e&U;�PF����>���!�G���zH0T,�����e�E=���e�E=��2�������zD��e�F��I����b���a����%����i�	�-�/�I'g��Q&menz$e�9
�0�j[%�e�8���1Y���n���:����^v�G�CB� �m��93�*i2������+<�vK�J$��5G� �GD2��hIq����&m+��ID�LU'��r����M�ft[�P�&�&��-��#$6�^���h�p"�`r&�����h���>C��J���e(C#�_�2�����h�PN�gh����������>M���I���5�5C�Za�������M��W�ZM��4-C�9�N�Z�Q���;\�!�2��8��e1)�^�APc+��	����URh/�*X�>��]�(������:1�[�4�Nm
��@
X��!��5h&�"�5�X ��e�>c�����,)�D��'e�a������t�g�>���Z�����_o��>&+~
R�v�g�:a8�LM��0|�Rvk��~�V���d2��i2B����V�ud����A�ah<�".�eh��J,zT�t5N8����(��gI������Jj�
{�d�D`H;�!j��D�j��3�����a�L���{gI�{W�D�k��d[��vf��1�����2�5L8DigIq�1���I`���N0k}�Iu���<&\d�kL��ig�D���L�����e��h/Ds�V�:����T(��,i ��9��
�L�:�0sfN63g�9��HU�8�[�R��j@3!F�5D��#"[��NxJ$�I���B�������Wy)�U��-��5��W�G\��������>�H^	h����w`w��/pv�n��!�R�V��m�4)����&� z��u�e&U�.[�ukDb5����Tt����J ���x�>i+��fW*�3�'meg�bB%�����h�����h�FVI�����z�r�L�]!��d3�r�L�H���2oB���2�\#���rMr=�e�F&;��k��qG
V��`�L{^.�+C��J��d������-C�Y���L�T���`�L��uk��o;���u�!�j����!�j���m�.���-C���q@j�����Pk������g-C�YR"�Zkt��29�x��e8��qMc8�FO�0
gL�V&y&qx1[c��e�����!�j�p��!���Z�lk��a��Z%g[��4�ld�6K�
d��f0�lR�0�l��2[���5M�{������v-���v:i���>���:��2�Z�%�x�Zk�	u+C�5}�<c��fH����x��e�f�[�-��5��s�b��� �a��%0�#Q�#�0e�2�Y3&����=.��s2����*`��fB�s��g����6���.��N��&I[�&���h����?m�VUB
�QB-���2p���)���jE����&�9k��j����r19k��0��a���a�Z��9�,���n��r�=rqF�Cqb���M��[�j���2l�����&����{0	#`�j�&�U�K`,3;w��R���	g<��-��fu�r�
��a��&�B1lYJ�1lY��ewD�J2�>k�������T�cH��M[����6��i�vH��4\��$;�-��!!�u�#C���[�2���:)�����v�y�zH;�,�aJJe�8�I�!�ov,^=�e�����U`��U������n�.)8�n��[�1��]P�n�M��v7fW��L�����L��*���Y&�
��~�����}���������~��������77;���G���y����|y�����Jq�����x�}����_�wt��������n���m)}A�}�v��9"��}N��T>G�s��9����������J���$b#	5/��b)f#Y�$�q�-����v�*���2��[�����ft[Vl��1I�f�]������K�em��&��Z(c3�]]u�emu�2����U���U�fL;��������f(�em�P*���R&��Z�B3���������,kk�VY�V��P{�����^SeY�WFfY[3���6n�em-4y36�mb3����f�y��,kk|c����M�em-lc3����,k��UY�VWk��PWl�^z�cl�^|������������&����Y���**P��U�,/��RY^hKT�f?U��f��**T�ggU��A{�\^c^�Su��%6��L����M���D�����2�Yg��d��	y*�.����!���w!�k��E��y�z�H��9���wa����y^�����\���l��c�3��L�
���\�����[P�y^�}��6���w���p�<��N��v�]��:w��&}�����A�g��re�%q����m�� ���wA&��,���%��m9����m9�����
��wu��l�?�����
{�8�]�����b�Q��<Of�
!Oe��<�����2��w�&���C��:�S��b���y^��������������ly�ed^�6C��M� �:�_b^nd�!/�_b^�o���Q��,/�������wM����?��5y^���k��z��y2�.���wM�g���>D�k���w�~
Q��</�����|����w�L�������y���L�]�����W�3�r{7��[�.���n������K���1/�KX;���y�/{�AF�k���w�~�#��5y���m�zWu�� ��5Y^�������z��y*�.�Y��&��t]�Ae���1��l� /�G�|����,o���n��_�� �~��6���u����i�k#|g�k#����0�B�������v]�������G1/�/1/�/!/��q�C���zw��T�]�Q��y^�}����zw��d�]��E�;�y�-C��C������>����E�,/�e��m���|�.��Q����gyQ^���Mtr-2�K�z���}����>���R�Y����~�e�y�~o����'�y&�E��y��1���l��Tn{T������}Vu��S��fr������8��,/��</�K�!/�K�<��>�
e�.]���/�����2�K,���/����C�M���y�~����1���L�3�y�����G��:�+S������w�L�n���G��|=
y�����]�������!/�Ry^��y"�@^��m�!/�K���#��y��S3�2��uz���h��y^\��{������KhK��/1/�b��lC�~��T��y�> ������0�Q������wC��v��w��p8z�z7|N�t��>�mm���NV:k��
�g��������2�����N�+��z�����~mTA��v�����mv���������]^fh�����6oK<�Y}1/��������v�+�=_t�����H���C�����p����}����=�u��2�Ct���3�]9�}]:�����n]eg�A����]��u��Y��w����3���Lh�����n-��t���w1/�E�y�-2�{��1/�!��Zf}z�VY�����������n]g}z�>�9���d��z��tVflK��h����|��d�]��V�w1�d2���(��[�:B"B[�l���/1/�K��|1��&�%��e�y���<�}�l��B^�������</�e��m�2~�[/�0��[�y^hK��u�S�|�y&�.�����W���y2�.��������w�:��|��yQ��y���mL��M�����j��g�����w���!/����
y2|�e�em11�������!�.��P���x;����,/�������e��f�m�`��m���<�d�������L��Y^h��/���E0�mU��"D�����"_�}^���?w�q�������������e��t"�m��}^���\��b;��������-��3!�dym��yA�v�������z�W:��}��z7~��n����5A��~�1/����0FM����u�al��w{?������e�;�k����;x;yU���2�21�dy��v�7`�����@�A����c�&�������wa���wGo��C@>������}����7����L~����	zw|^�����Uv'�g���>�`��w�z��9`$��wg��y[[fU������}�y2��Y^l�����
zw6�>��n����&�����k5���������;��������������A��m���w�.�u��s��:����x���d���nu\����a�lz���k^/�w&��,�
y�>o��6���d�������K���������%&&�������N�B[�p�i^h�:�����)b^���y�#�|&�E?f����	���;�k�����s�</�e��m�������Y9���Y�w�}������w���������g�~7����I1�����mm��ml�=��*�tB^����t��w1/;?�m����������y�Lx��i��b��l�\M�e���<8W��A�p���E�4Y��/y^��.� ���y�9I�r�jy���m�s�,/��=���]����qls�.��s���C<X�
���=d�G��i�_�xw�o�	���i��Ag13��b�x3��i��S&�W!s/�63��B������G��n3�Z�=<f�E\�T��&f��K�l�_�@2#���XP������]����������#�A)2���XlT�s!Sf_61Se_BfX��=��f�%+v����p�6Sf_Bf<������x�]�l�/�`������cfv����@gyf��'�G�L2�0"����A��[�����+p��23,t�
\r3�� C2��������4u��!���(P��n��Y�U��f3�~�X����)�_�[�4�/����7�gxomVp��23l������6��-�����M!3�G�EMm
�A������W���h��U;�5F�Y����~��q���6��v�%v����9���}QS�Bf�!�L��y&�����Tp
�2U�e������K`h�Bf���>��2�)d������y&�������B�)d���x�4u!�����L!S���
���Bf����L�E�*����j\�d������������R���<��Q���%�13���I���WpEn�3���{�
.�M�L�}5�T�l�/#���
�����{�W����G!��]���3!j�cv�:���_F&DM}��G�x_.~��L�%d����	������C����9��me(6��3��cW
�!3GC�9�2��q3\��
�2�2Y��S!�d_��DM=��QS�/cW���
�a���^s�Dg3���*Q��$��!3�[����f��o.@f~u!f��c���BfD������ts!����
��B����
��z.d��������<S�}�0�;\�����$3��.����uU�OV�f]�22!h��%d�����Ze_B����L��:|3��������V^�a�2�W�L!3�����]f�e�x����!����ed|�~���E�G�O�����!3*�22!h��%d��/�}AS�/13Z��;\�3�L������@f���L(�����^�bM�%dF��v�&d�D�2���M���
v�zg3������U�l�/c�����5D���/13��C?# ���Y����U��g33Iw������/!������v�%d�8d*�g��cf��
�����AU>�����]���K��(�����2ck���|T���|TT�}�d�%dF|��Z4u���U�A"��
9o�M=g�5�p1��L���D��/!3h�pg�id��ib��Q1�A���6�2v���/!S����4j�%f�!k�~��"!3�3��g��g�S�2�`S�/cW�M���v�e�J�����8dY?�e���VEM���T��2O5���SEM-��7������������STYf�g��u6�*j�<�������SEM������p�	Z5u��6j�:�����������G%j�,�e���{@�����LS���U����U�����S/5��y���Ke�_bf��.�J���Q����"[V*jj��m��7��3��1�����&4(��Y���u�����p����Z����Z���w����p�/�g�K|��J���)���:?%QQS�\EM����m�� ������}}v�Q���q-��ep�o���~y�Uf������2#3�	+��h��,l�:��
Ryfl��3c�L����)3#3c��<36��3c��<36h�2��>Nyfl��gF{(���E>�QS�|<���xFM-����Z��5���l�|<����l�|<����l�|<����3jj��g��"O����M��'h�|<AS��mj��g��u>�����M��'h�|<AS��	�:O���xF�Zg�i�M���4�����4�����4����x�c�t�S�x'0f���QS�L����%f�+�y?��Aq�3QS��x���1b@����1���c��/�L�3�(n�-Z�z`13����'�]f
���M6����cf��r1�3g�5��3���V�xO0�c��lo�FM�[&j�,�@e���2�+:rh���m���D�]Gv^��/��,d��#o����� �m��AQS��`O���z�Ga�L��[&����e��&��Ak��#D��
�P��4�����6k�6F������������,v%^ ����gY��x�0�<�/���L16�l_�`Sg3���fD&4��������:���&a�|3����[+r�9$2�(e��q|������uB��I���8�wb<x������@�o?Cf[���������3d�����������3d6�L(V�u�����S�W�
���!3�Ao]�m�������$��O�\�������XM��8vD&r�������6�`��x��������A���]��"t#�������Y��DQ����(��0#
'zM+Nm�gw{��8F��	QN�OW�"�:YE��?W�����4Q}�M:M�M��8�,��D�d��H���"��I"Y�x���E�oc�.dfD{$�QE~@�b�}	�d}���D{���B["T����&_����h���m!sO����DfE�A��������hO���-�Y���������'j�T8����U����
�qi3E�iBf�gn�r5��n�����lC������bs*b�	�M����~�)�e=!��X.��L�g�����g�4��=QuD���g����(�AY���:�Z�R�]�)������1�
��R�T�2���+q������0Jz/S"����y?�q)�^�D��g3s���C���
���������j���U�AM�Z���U�AM�Z��
�r1��A��3C����:r(�9���
js�3�A�F�~�������>��	
�s�3�A}.}� ��>��Bf3U�)b��2e�l����P�7H���A�y�6o���y�����A�2&�~����y� � �������dFT�����TF�r�&#�Q	"��Q��������3=%!���N���{[��:grurD�|l��#�Nw0!u���H���GL��`>r�t�4y��4�~�E����uvm���F�����X�!�hf�p���PwW���z��0�Ks���H�����jv!O���3$�$�D"�H$n�jK)����@�v:1���� ���D`C�AC��c"�l,����$����N+"j��:�F:��#"��:�F:������4�QSkK\G+�����
�5Q'�����ac�z�CgBDV�8�����z�M��J�l���z�M��*O�fZ'���7L��Q`�L��1K|ODl�"�:uLL�X�"I<�>E�xd}J$����H���)��#�S&�G��L��O�$I�l�'}�j�����S�a����� D��
�HD��_4o��\v� �v�)��N��������p��<mE��^@��0t:�3���Q�h���V�9���q=-�zZa(p=�0t��sP:��9(����3�2�������S����@�R��*>�R
C��z�2�!n��	T)��,���X�"1�6
C��$
Ci�JR)��5W%����m	����0�a�K���{Y�6��I�p/����{YC\����q=�0��z�Y.;=x6��-i���ARM9�e�{��`&P[�r�n�^&g��R
C������9X���K=P/s��5�����9X�5��z�����St��{nlX�=��zO
�`�Kw��(�V;��}��7��#"r��sjBD���g��K����@�""H=�&D���zz>�'�L"��]HDDN�z&M���u�$�s�D�xON�K$���.����O���w����$�]��mb�_&��
K���mis�"q��,/hQ��+�[$6\��21+�bs�zB]��ML�uC=<F��n��9��s�O:��^����D�ej��vl*}mq�.�����s"��k�����-��e�x�����'���8#Od�}mq|�A_[��\\mq�u� ��x�Ma��D��+��-��}m~B4\\�$������R����]%��w4���dh����D�������%}%q�:j�P�h8hL%��]����_��*�������j+�v;R�P�����9C�����:�C���d�r�jFj9m��	u�o��,�:�3w�P����}�P��RyX�a���Y�M�6�f=!B4�D�{��@Y��\-@K��	C�
�!Y��J�!HJ-�Nb��gP���$��w-IH-�Z��Z��$��ABrG;�fM
��v�z���A0C��mC[���A0�gP�I|8��-���ekZ���LB����e��� y�d$v$��@�"�M�904�{LM���n�^nWw���r���DO���6�V@H�3C 3	yf
�$�!H&�,*	�j����c�ds�bhV�A0C�@��C�A^����_Yb��_Yr�����>������&J5��6	�5���r�$����I�r�oO?#J��+�8y��$��~�:
���w!�D���(	���n�9oD�Sq;A\������[g!";�K����ET��Bx%Q!*��������r,�Q��XR)����� 
5�n�����r�E�c]�b�F���X�k%�HC��P���B,���-�#eMa����h��#b,�H�@.v��	[5[����7��"�����fUk�lew�h��j^�T��QD�)=��R���DCUqE,rSI�%���`���D�&*9
(����RU�B���B���B��'Xm��v�Vte����V���r�d����h��x���L���6�(`�XK2�w�SU�;�Xx*����a*P2*8ai�V�e����H��u����F�[4�1����u�%b}�-*D�h�������hmH�UG��i����#��TJ����a��r^���u�X �TnS:����Z�2�DT���X�D�������e�6WD{A����f����mUED��"y�����*���4l��vX��Tq��k��	!NK��X����-��b����(�D�J�w�*����T"5�xq#�`� ���PRq�l+����<���(������Z���	���o�RE$j��s��*�;��D�2�o�&kWir�{�8l������dW����
���P�%��'�NS���Q_o)��U�s�UTq"��C�A0����@����A0����,)�{�Yb���l�?'�XK�r��%�8����|C����z���1�>#����%�9�����X����,q�2�o,A���*;�����`�zJ�l)� �(7
x�8�l$�j
"D���h	�Xu��l���r	c���~nT�y��`�UN��������&�`���C����K[��>�|�.lP5SB^!���a���*+�~�D�������A�8�t=@��v���l�)��A4��A�P@Pr��az6v�!;�����;G�Ir���P�HN��$�@_����������mo%�-5H�(��D�����5	n�����{����0�^;�=1!�r����M��H���L�+��k
����od[�0��}M�9n�-�(,��*sZ��L�C�d9ZD�r���,�:�� �jg;Z��gaAO-�\w��f�<-"\�Q
���(�!Z	��!Q-"��*g��$k�A�q
��L�VY���J�-��.S�4Dh0R++�$��<��p�@��IB���Y'�v���5m�r�!�!�1(� �:����_P��iD�+�hEK��i���C�U������(<��
����4K����2�8�) x����\~���Y��
@G��V���J+
dN�m����[�kY;��Y��	 {7 �E(��9v;�E�����z�)���0	��^]-ngxGj�;��M�
��os�p�����.�:]i����jn�&�o{6�f���j��6����b�9��jKd%�Pf��q��%8^���a	���$#GhX�|MBC��#4,���t������,J<��D�����,J<s��%�9BC���\H���
I\�P�.k��#"��W�I�$q��^6��:���e�Dj�],���A��n���$�����_�����*��E��\�7:P�2�:|-w%��`���I`�T�QaR�m�f�D���v������(
,<��������"�Ul'�
@'���
�r(�V�:������`(����+`����~�)�H)�P?�����@G �Sv��`����	Y��cy�P`%sG��@0�fmC[����x�~G�t���*~G�
2��;�m������pr��M� "����Z�`�d�D�-&'���o�P�(��j���8�az%�HA�&hj��]�`�Ax��C
t��9bH���6$�4Ha�3xfH�,� KH���YB��@i�� 1d�&�2@f��1��5@0���C1(�MH]
*n�!�&bHq�����M�@p�;�m65����@p��!�mC����u5�2cg��k�`h[!v�U�=�����N	�v�2��T�*[��ar�u�b�"[��wC
�2���,�����*%,���a�-�l��na�-u{��	�o:[X���`��'N����7]X�������'N��S
C���,e ������.�*�Z@��@�^K=�q5C��Te�R�2a�D����(u��`��Xj�}������T
@�3C���R����n7�U��U��U��.���Z@�6u��M�����&XjG�$�R��j�&Xj�mO)na��K��H%XjGF*�R;2R	���o�1����v����vd�,��(�Z@�	K���%XjGF��v�a$XjG�o���R�*K}�u�� @X��@X�i�?q�|�v:i|����0-�����H4/D{&���	�c�HD\uv�-r`gY���{W�y���N���;���e�-;���D���6�����������;�egYq����6��nsG�;��{� {�k�`hSs�;���m��x��g��������R��������4�W���@������q��%�BI��_�,�`����=3�gwf���q���0��t4j*r4j*�gFM<�:�y�D==1����e2�9� ��h�RU	<H�*�FMU�@���J�QUaK��:���H��Rc��
K��4,5��-�b�-�b�-�b�a��P�R�!k(��R+��R+��Xj�5,u��Q�Cu�b)��S��:r�:k���R������NIQ�2��4�;��Pe��F=��@����*[��;�rXe6�(���L0TG.\����� ���Sa�:81�`��#�jP��4������*��$�a
]&ET���HhpU��"�ly��ay�w]\�G�'�`(��E�C�G{��x��J���\���.-O�]��'���4��23������v��y�We��!����P���t5(N��;�#�ly�,��{�Q���92���@={����<�#���)
O�TJ�u���f�R��C��<�@J{f��������:R�,5u��q�w��G�����(u�>�b�/�Y\�Y�TJ0���"��
�+��������P��'p
Px�1N��"��������RzR�2�RfR�L=�H)�������@�RgQ��"�\��)�%P������FUJH���9</p
�����5�'p	��&�>dzj2�#:<<$��A��c]O
���bL��W���}��}����Wp��Wp��Wp��Wp��Wp��Wp��Wp��Wp��W���}����Wp.��W������v����\��x�!���Z��@J��J�^�����W5�Rje���D�����������=���Z��a�Q��J���������/$5��&C�*����9	�3��!�'ia�MI����e����{�Q�����6����������8�`"�6���M41��;-��b""6�d���#We�K����@�����@��z�p�<{rL(~�h��&���6P�E�N�+9�'D�����E��4t��a��5�L�*�GuV_���0��]n����Rv*p�M����\G�u��B��t�oYW"rKD���5�T��T�6Wm���%���g�x�F����z1'�B�D��m�:���5��e]�k�7��f��v���s�o����3$����"��ee�px�,�*r��w��7��	?�����6�����O��(K��.j�r+0[N����L�X&�1O;Q���;^#"U\�!`&�1Qo�"9���9"������LY������rdU������<����T50xr�����&���"J9�?NSc��o��?��:��]�	s[������6��6j����S<E�R7�x[t���87p";�������("^������+���"Z9A�e����RN���[9=��}��B�DDV�G��/�q�dx�$K�|�U	�F�FN���W3�s�F��9���O�.�����*tC�*��yr���rRs�EY��Z�p�s68,J\q�pjC������"��s"^L�+D .�7l��<3��N��8q���iwCPq�IdR�$�s'FP�� f�%'k�D`���A�lu��At�)�w��Fw�3���@�I������;3)�����V�n)Q!�'�� :x���n08lm�.���L
�&�=@^MU 1$�9u��1�IBXRU��\���`��
���@�L4��G���(�Gb(hc2	02C���F���\������^{��d��{;�X�����v�M���������^���f��S���C��i��?YX;�p�e
U�pn����?�j4�"�P89yt�S6���v
x80�}<riK�3H3�kS�g��`m�n�`�����b=X;]7�M�H�z�H�`�U��n�
E
�m/w�h�@� �7�����9X]5�]V�����9X]5��.q�<9e"���v�~���i"OD������T�v�vI-9"���t�R!�_�u8����U�p����t:�;Q�<�H��Fu8j��}���%^�2�p�D���.�/���8MD��O�$�I�p�D�O�~FW�j"��'}�I��>���H�r���HD���A "}��%N�$��l�;-��o"��i��	(U/��2�f��� ��6g �1�2q7j���{U��y�k�`��2h�M�`����)�z�(N/L���xR�<b�A��j���Z	/����3�3"��V����END����)�������r��i�W4UNa�L�+�Ly�F��8�9�2�6]�]����u2�j�W�o���W���V��{|-��uk�r(��u�������t�L�M�I�Gv������>om�[����R�~P�|���RVa���-��Y�I�l�E,D�U_K�����+2���Z�f������l�-�Z�������v���������R7��J7/�B��V.�K���R�uB����m���=8+���
�V�����J�vj�K��^�J��I}��2��r�����k���k�������Y�!��E��17�������<���(��U���#V�N�=�����r�K�^��\��a���r�"���.Y���A.Y�}����W�r(u���>��������k�>����$�`h|��+u[+�����I�6�5��m�:|����-�j&��qt��Ti^��YVG-�������,AeM��-����<�Aw��ZR"�&D%�2�_7����f3J�_!u/u�X�U����K���{��vP<��E������AiA��������xo�Z�C������F[��&��Z7����z���7�z�e�.u�o�G�(�L�L����kb��C*�I��J��F���2i��q��� �2�:>�r(u�N�"���fH���L�|-�1�7=K��5^��rz�����_�6��u�5���/Y���x��?]��������|������|������|{y}x�xw����#v���������������+c���������&�/��q`��w���������w��������}�V������.V�>zy}~|�������������������������_�<.��?�}|�|�z>������/���|y|8}����/��//�to��c��+����_?�v"����p*�������[Y�<�]?�>����_��9<??>�����������0x���������w���U���l����t?|��W���G��7��s����()�G�{����0V�b�o�c������y������b�?�������G����/����_��|��X�����}���6����i������������v%���5�X���������o��������}����;p~{x?*�/���Ea�L��<���G��~�&Q|������o_�����=�Q��bu��OECV���=��?G�wi������������������|�5pu�px�t�z����o��r����L;r9�(*�\q�Z�;�
]k���42�z{���yR��t�U�+�	Vu�����?6����������=Y��]}�������?����7���06���#K�6�.�~=o�������g��S���w����\�s��z�g���r=��P��w�������>>���]��O������������/��-����n�M��������������\`I�(N������G:���_�V_
�(��_�W?<}>�����h�^��������
Mu��p{����G��F����|���&�c�����K�
����_�o^�y����c_������1_^���-
��"��|��|������m��1�ZU^G��G�x9<s9�������W|��q_i�Y�`�S*���<G�����h�^��z?>���<>y����oJ������c�.�����]\��P����
#8Michael Paquier
michael.paquier@gmail.com
In reply to: Heikki Linnakangas (#7)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Thu, Apr 6, 2017 at 1:33 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

Attached is a new version. Notable changes since yesterday:

* Implemented the rest of the SASLPrep, mapping some characters to spaces,
leaving out others, and checking for prohibited characters and bidirectional
strings.

* Moved things around. There's now a separate directory, src/common/unicode,
which contains the perl scripts and the test code. Those are not needed to
build from source, as the pre-generated tables are put in
src/include/common. Similar to the scripts in src/backend/utils/mb/Unicode,
really.

* Renamed many things from utf_* to unicode_*, since they don't deal with
utf-8 input anymore.

This is starting to shape up, but still some cleanup work to do. I will
continue tomorrow..

Thanks for the new patch, that's looking nice. Now I was not able to
compile it as saslprep.h is missing from what you have sent...

There is for example this portion in the new tables:
+static const Codepoint prohibited_output_chars[] =
+{
+   0xD800, 0xF8FF,             /* C.3, C.5 */

----- Start Table C.5 -----
D800-DFFF; [SURROGATE CODES]
----- End Table C.5 -----
This indicates a range of values. Wouldn't it be better to split this
table in two, one for the range of codepoints and another one with the
single entries?

+   0x1D173, 0x1D17A,           /* C.2.2 */
This is for musical symbols. It seems to me that checking for a range
is what is intended.
-- 
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#9Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Heikki Linnakangas (#7)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

Another version attached.

I think this is now in committable state, but there's been a lot of
small changes here and there, so please have one more look over it if
you have a chance. I'm planning to push this tomorrow, after sleeping on it.

The code-organization issue with the utf8 functions, pg_utf_mblen,
pg_utf8_islegal, unicode_to_utf8, and utf8_to_unicode, is still kind of
unresolved. The way I have it in this version is that the functions are
in wchar.c, like they've always been, and saslprep.c uses them from
there. This is ugly from a code organization point of view. as we now
have functions in src/common depending on functions in
src/backend/utils/mb/wchar.c. I think wchar.c deserves some
re-organization, as most of the functions there are also used in
frontend code. Perhaps it should be moved to src/common as whole.

Libpq already compiles with wchar.c, so all those functions that
src/common/saslprep.c requires are already available in libpq. So I
don't think that's urgent, but something we nevertheless ought to clean
up at some point.

Another thing I'd like some more eyes on, is how this will work with
encodings other than UTF-8. We will now try to normalize the password as
if it was in UTF-8, even if it isn't. That's OK as long as we're
consistent about it, but there is one worrisome scenario: what if the
user's password consists mostly of characters, that when interpreted as
UTF-8, are in the list of ignored characters. IOW, is it realistic that
a user might have a password in a non-UTF-8 encoding, that gets silently
mangled into something much shorter? I think that's highly unlikely, but
can anyone come up with a plausible example of that?

- Heikki

Attachments:

implement-SASLprep-4.patch.gzapplication/gzip; name=implement-SASLprep-4.patch.gzDownload
#10Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Michael Paquier (#8)
Re: Implementation of SASLprep for SCRAM-SHA-256

(sorry, I didn't notice your email until after I just sent version 4!)

On 04/06/2017 10:32 AM, Michael Paquier wrote:

On Thu, Apr 6, 2017 at 1:33 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

Attached is a new version. Notable changes since yesterday:

* Implemented the rest of the SASLPrep, mapping some characters to spaces,
leaving out others, and checking for prohibited characters and bidirectional
strings.

* Moved things around. There's now a separate directory, src/common/unicode,
which contains the perl scripts and the test code. Those are not needed to
build from source, as the pre-generated tables are put in
src/include/common. Similar to the scripts in src/backend/utils/mb/Unicode,
really.

* Renamed many things from utf_* to unicode_*, since they don't deal with
utf-8 input anymore.

This is starting to shape up, but still some cleanup work to do. I will
continue tomorrow..

Thanks for the new patch, that's looking nice. Now I was not able to
compile it as saslprep.h is missing from what you have sent...

D'oh. Here's a new version, with saslprep.h included.

There is for example this portion in the new tables:
+static const Codepoint prohibited_output_chars[] =
+{
+   0xD800, 0xF8FF,             /* C.3, C.5 */

----- Start Table C.5 -----
D800-DFFF; [SURROGATE CODES]
----- End Table C.5 -----
This indicates a range of values. Wouldn't it be better to split this
table in two, one for the range of codepoints and another one with the
single entries?

I considered that, but there are relatively few singular codepoints in
the tables, so it wouldn't save much space. In this patch, singular
codepoints are represented by a range like "0x3000, 0x3000".

+ 0x1D173, 0x1D17A, /* C.2.2 */
This is for musical symbols. It seems to me that checking for a range
is what is intended.

Can you elaborate?

- Heikki

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#11Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Heikki Linnakangas (#10)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 04/06/2017 08:42 PM, Heikki Linnakangas wrote:

D'oh. Here's a new version, with saslprep.h included.

And here it is for real. Sigh.

There is for example this portion in the new tables:
+static const Codepoint prohibited_output_chars[] =
+{
+   0xD800, 0xF8FF,             /* C.3, C.5 */

----- Start Table C.5 -----
D800-DFFF; [SURROGATE CODES]
----- End Table C.5 -----
This indicates a range of values. Wouldn't it be better to split this
table in two, one for the range of codepoints and another one with the
single entries?

I considered that, but there are relatively few singular codepoints in
the tables, so it wouldn't save much space. In this patch, singular
codepoints are represented by a range like "0x3000, 0x3000".

+ 0x1D173, 0x1D17A, /* C.2.2 */
This is for musical symbols. It seems to me that checking for a range
is what is intended.

Can you elaborate?

Oh, I think I understand the confusion now. All the arrays represent
codepoint ranges, not singular codepoints. I renamed them to "*_ranges",
to make that more clear.

- Heikki

Attachments:

implement-SASLprep-6.patch.gzapplication/gzip; name=implement-SASLprep-6.patch.gzDownload
#12Michael Paquier
michael.paquier@gmail.com
In reply to: Heikki Linnakangas (#11)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Fri, Apr 7, 2017 at 2:47 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

On 04/06/2017 08:42 PM, Heikki Linnakangas wrote:

There is for example this portion in the new tables:
+static const Codepoint prohibited_output_chars[] =
+{
+   0xD800, 0xF8FF,             /* C.3, C.5 */

----- Start Table C.5 -----
D800-DFFF; [SURROGATE CODES]
----- End Table C.5 -----
This indicates a range of values. Wouldn't it be better to split this
table in two, one for the range of codepoints and another one with the
single entries?

I considered that, but there are relatively few singular codepoints in
the tables, so it wouldn't save much space. In this patch, singular
codepoints are represented by a range like "0x3000, 0x3000".

I am really wondering if this should not reflect the real range
reported by the RFC. I understand that you have grouped things to save
a couple of bytes, but that would protect from any updates of the
codepoints within those ranges (unlikely to happen I agree).

+ 0x1D173, 0x1D17A, /* C.2.2 */
This is for musical symbols. It seems to me that checking for a range
is what is intended.

Can you elaborate?

Oh, I think I understand the confusion now. All the arrays represent
codepoint ranges, not singular codepoints. I renamed them to "*_ranges", to
make that more clear.

Thanks! Yes I got confused by the name.

+/* Is the given Unicode codepoint in the given table? */
+#define IS_CODE_IN_TABLE(code, map) is_code_in_table(code, map, lengthof(map))
[...]
+static bool
+is_code_in_table(pg_wchar code, const pg_wchar *map, int mapsize)
+{
+   Assert(mapsize % 2 == 0);
+
+   if (code < map[0] || code > map[mapsize - 1])
+       return false;
+
+   if (bsearch(&code, map, mapsize / 2, sizeof(pg_wchar) * 2,
+               codepoint_range_cmp))
+       return true;
+   else
+       return false;
+}
Those could be renamed to range_table as well to avoid more confusion.

The SASLprep implementation depends on the UTF-8 functions from
src/backend/utils/mb/wchar.c. So to use it, you must also compile and link
that. That doesn't change anything for the current users of these
functions, the backend and libpq, as they both already link with wchar.o.
It would be good to move those functions into a separate file in
src/commmon, but I'll leave that for another day.

Fine for me.

You may want to add a .gitignore in src/common/unicode for norm_test
and norm_test_table.h.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#13Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Michael Paquier (#12)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 04/07/2017 05:30 AM, Michael Paquier wrote:

On Fri, Apr 7, 2017 at 2:47 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

On 04/06/2017 08:42 PM, Heikki Linnakangas wrote:

There is for example this portion in the new tables:
+static const Codepoint prohibited_output_chars[] =
+{
+   0xD800, 0xF8FF,             /* C.3, C.5 */

----- Start Table C.5 -----
D800-DFFF; [SURROGATE CODES]
----- End Table C.5 -----
This indicates a range of values. Wouldn't it be better to split this
table in two, one for the range of codepoints and another one with the
single entries?

I considered that, but there are relatively few singular codepoints in
the tables, so it wouldn't save much space. In this patch, singular
codepoints are represented by a range like "0x3000, 0x3000".

I am really wondering if this should not reflect the real range
reported by the RFC. I understand that you have grouped things to save
a couple of bytes, but that would protect from any updates of the
codepoints within those ranges (unlikely to happen I agree).

It just means that there will be some more work required to apply the
changes to the current lists. I constructed the lists manually to begin
with, copy-pasting the lists from the RFC, and moving and merging
entries by hand. I wouldn't mind doing that by hand again, if the lists
change. But as you said, it seems unlikely that they would change any
time soon.

You may want to add a .gitignore in src/common/unicode for norm_test
and norm_test_table.h.

Added, and pushed, with some more comment fixes.

Many thanks, Michael!

- Heikki

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#14Michael Paquier
michael.paquier@gmail.com
In reply to: Heikki Linnakangas (#13)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Fri, Apr 7, 2017 at 8:58 PM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

On 04/07/2017 05:30 AM, Michael Paquier wrote:

I am really wondering if this should not reflect the real range
reported by the RFC. I understand that you have grouped things to save
a couple of bytes, but that would protect from any updates of the
codepoints within those ranges (unlikely to happen I agree).

It just means that there will be some more work required to apply the
changes to the current lists. I constructed the lists manually to begin
with, copy-pasting the lists from the RFC, and moving and merging entries by
hand. I wouldn't mind doing that by hand again, if the lists change. But as
you said, it seems unlikely that they would change any time soon.

Yeah, I don't mind either. That's simple enough to change should that happen.

You may want to add a .gitignore in src/common/unicode for norm_test
and norm_test_table.h.

Added, and pushed, with some more comment fixes.

Nice. There are still a couple of important items pending for SCRAM,
so I would think that it is better to not do the refactoring now (but
rework it in PG11), but polish a bit more the documentation. Your
thoughts on that?
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#15Heikki Linnakangas
hlinnaka@iki.fi
In reply to: Heikki Linnakangas (#9)
1 attachment(s)
Re: Implementation of SASLprep for SCRAM-SHA-256

On 04/06/2017 07:59 PM, Heikki Linnakangas wrote:

Another thing I'd like some more eyes on, is how this will work with
encodings other than UTF-8. We will now try to normalize the password as
if it was in UTF-8, even if it isn't. That's OK as long as we're
consistent about it, but there is one worrisome scenario: what if the
user's password consists mostly of characters, that when interpreted as
UTF-8, are in the list of ignored characters. IOW, is it realistic that
a user might have a password in a non-UTF-8 encoding, that gets silently
mangled into something much shorter? I think that's highly unlikely, but
can anyone come up with a plausible example of that?

I did some testing on what the byte sequences for the Unicode characters
that SASLprep ignores mean in other encodings. I created a text file
containing every ignored character, in UTF-8, and ran "iconv -f <other
encoding> -t UTF-8//TRANSLIT" on the file, using all supported server
encodings. The idea is to take each of the ignored byte sequences, and
pretend that they are in some other encoding. If converting them to
UTF-8 results in a legit character, then that character means something
in that encoding, and could be misinterpreted if it's used in a password.

Here are some characters that seem plausible to be misinterpreted and
ignored by SASLprep:

-------
EUC-JP and EUC-JISX0213:

U+00AD (C2 AD): 足 (meaning "foot", per Unihan database)
U+FE00-FE0F (EF B8 8X): 鏝 (meaning "trowel", per Unihan database)

EUC-CN:

U+00AD (C2 AD): 颅 (meaning "skull", per Unihan database)
U+FE00-FE0FF (EF B8 8X): 锔 (meaning "curium", per Unihan database)
U+FEFF (EF BB BF): 锘 (meaning "nobelium", per Wikipedia)

EUC-KR:

U+FE00-FE0F (EF BB BF): 截 (meanings "cut off, stop, obstruct,
intersect", per Unihan database
U+FEFF (EF BB BF): 癤 (meanings "pimple, sore, boil", per Unihan database)

EUC-TW:
U+FE00-FE0F: 踫 (meanings "collide, bump into", per Unihan database)
U+FEFF: 踢 (meaning "kick", per Unihan database)

CP866:
U+1806: саЖ
U+180B: саЛ
U+180C: саМ
U+180D: саН
U+200B: тАЛ
U+200C: тАМ
U+200D: тАН
-------

The CP866 cases seem most likely to cause confusion. Those are all
common words in Russian. I don't know how common those Chinese/Japanese
characters are.

Overall, I think this is OK. Even though there are those characters that
can be misinterpreted, for it to be problem all of the following have to
be true:

1. The client is using one of those encodings.
2. The password string as whole has to look like valid UTF-8.
3. Ignoring those characters/words from the password would lead to a
significantly weaker password, i.e. it was not very long to begin with,
or it consisted almost entirely of those characters/words.

Thoughts? Attached is the full results of running iconv with each
encoding, from which I picked the above cases.

- Heikki

Attachments:

saslprep-confusing-chars.txt.gzapplication/gzip; name=saslprep-confusing-chars.txt.gzDownload
#16Michael Paquier
michael.paquier@gmail.com
In reply to: Heikki Linnakangas (#15)
Re: Implementation of SASLprep for SCRAM-SHA-256

On Mon, Apr 10, 2017 at 5:11 PM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

Here are some characters that seem plausible to be misinterpreted and
ignored by SASLprep:
EUC-JP and EUC-JISX0213:

U+00AD (C2 AD): 足 (meaning "foot", per Unihan database)
U+FE00-FE0F (EF B8 8X): 鏝 (meaning "trowel", per Unihan database)

Those are common words, but I still have to see those characters used
in passwords. For user names, I have seen games or apps using Kanjis,
so they could be used in such cases. But any application can be
careful in controlling the encoding used by the client, so I would not
worry much about them.

EUC-CN:

U+00AD (C2 AD): 颅 (meaning "skull", per Unihan database)
U+FE00-FE0FF (EF B8 8X): 锔 (meaning "curium", per Unihan database)
U+FEFF (EF BB BF): 锘 (meaning "nobelium", per Wikipedia)

EUC-KR:

U+FE00-FE0F (EF BB BF): 截 (meanings "cut off, stop, obstruct, intersect",
per Unihan database
U+FEFF (EF BB BF): 癤 (meanings "pimple, sore, boil", per Unihan database)

EUC-TW:
U+FE00-FE0F: 踫 (meanings "collide, bump into", per Unihan database)
U+FEFF: 踢 (meaning "kick", per Unihan database)

Not completely sure about those ones. At least I think that the two
set of characters of Chinese Taipei are pretty common there.

CP866:
U+1806: саЖ
U+180B: саЛ
U+180C: саМ
U+180D: саН
U+200B: тАЛ
U+200C: тАМ
U+200D: тАН
-------

The CP866 cases seem most likely to cause confusion.

No idea about those.

Those are all common
words in Russian. I don't know how common those Chinese/Japanese characters are.

Overall, I think this is OK. Even though there are those characters that can
be misinterpreted, for it to be problem all of the following have to be
true:

1. The client is using one of those encodings.
2. The password string as whole has to look like valid UTF-8.
3. Ignoring those characters/words from the password would lead to a
significantly weaker password, i.e. it was not very long to begin with, or
it consisted almost entirely of those characters/words.

Thoughts? Attached is the full results of running iconv with each encoding,
from which I picked the above cases.

I am not much worrying about such things either. Still I am wondering
though if it would be useful to give users the possibility to block
connection attempts from clients that do not use UTF-8 in this case.
Some people use open instances.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers