Changeset Extraction v7.0 (was logical changeset generation)
Hello Everyone,
I am pleased to announce the next version of the the changeset
extraction feature.
There's more changes than I can remember, but that's what comes to my
tired mind:
* Initial userlevel docs (including an example session!).
* generalization of the "replication slot" system to also work for
streaming rep, although the user interface for that is mostly missing.
* don't remove WAL still required by a replication slot, be it a slot for
changeset extraction or streaming rep.
* New output plugin interface with one _PG_output_plugin_init dlsym()ed
function filling out the callbacks.
* Renaming of the init and _cleanup output plugins to startup and shutdown.
* Simplification of the prepare_write/write interface for output plugins
(no need to specify LSNs anymore).
* Renaming of the changeset extraction operations to
create_replication_slot/drop_replication_slot/start_replication
... logical.
* moving the SQL changeset functions from a contrib module into core
* Addition of peeking functions for changeset extraction.
* revised error messages
* revised comments
* ...
I've followed Robert's wishes with generalizing the replication slot
interface to not only work for changeset generation, but also streaming
rep - not sure whether that was the right choice, it's been more work
than I expected blocking things a bit but we're there now....
There's no clientside support included except as in the pg_receivexlog
hack attached as the last patch, but I also have tested it via streaming
rep and it mostly works (minus a hot_standby_feedback bug, will report
tomorrow).
What I think is missing:
* The user docs need more work, even though we're in a much better state
than before.
* Replication slots are stored in binary files. I think it might make
sense to store them as text files instead, for easier
extensibility. Especially since we want to use them for streaming rep,
I am pretty sure new attributes will soon come. I don't think it's
critical enough performancwise to store them in binary.
* Contrary to what Robert and I'd discussed I've named the SQL functions
outputting changes decoding_slot_(get|peek)_[binary_]changes instead of
decoding_stream_* - I can change that, but the SQL functions don't
actually support streaming, so I thought that might be
confusing. Opinions?
* Robert complained earlier about the way historical catalog snapshots
are forced in tqual.c - I don't really know yet what the better way
would be here.
* Some functionality probably needs to move between the patches - it's a
bit hard to see where the best boundaries are.
The sources are in my git tree at:
http://git.postgresql.org/gitweb/?p=users/andresfreund/postgres.git;a=summary
branch xlog-decoding-rebasing-remapping.
The last two patches are *not* indendet to be actually applied, but are
useful for testing.
If you want to test, you'll need a clean initdb, set wal_level=logical
and max_replication_slots>0. There's a example SQL session showing how
things can be used....
Testing, Review, Questions welcome!
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
Attachments:
0003-wal_decoding-Introduce-changeset-extraction.patch.gzapplication/x-patch-gzipDownload
����R 0003-wal_decoding-Introduce-changeset-extraction.patch �[ys�F�������5)Q�Z{#���Z_�R^R/�b
�� �����_����!�NT�E�=}_3z�&S���������?V�������:�5P��~�(��=�.��������vO�?��v{��@s"�b?UZ�NU��_��� c���*�����+�����;bO�R�{�;8���V���6���o��N�/�n�/Ew����*�e4����a<>Wq�&~�)�Md<VZeB=d���0����I�E�i���Je$� ��IsS<KU��*�A��gb��������TI��tHcm�j����VLE�*�3��|Ga�����0� �A�_��d&�d,h��$�K@��D��hC��be,FJ@�@�%������6O�X��$�fy&fQ>c�
R �s/�Spf��Q4���n�M�#S�NG
0��0����4����X;�F��v���'u�{1��4?*HB���d��2n��b�&
�,U���J3q)�n^���6o�8����^����x'�L�g�I�[��w*N��k7�A~RE���=��:��?���n^g���Ex�<O|%^���96�?����E8��B�����S���q�Ew2M��JS�Ps{{�)t����T��J�w'J��9��������/��C���R����nOl�g���t�k����*8�_[�������q�d����M����0��e>�M���0#���EL����*���zQ�af���������T@�I/�W(�"��MS5�B�
&��N�� DhYC�zH��%L��S 9RT
������������<�c�eN�<0���ZP������?_�WDd��Hd�]�T4���Tx�`}k��:�c����Y�x2M�|���`�x����?Z\O�"���&���*����VAS��Eh ���,�*�1�����vW�~�W�K��C�Z��1�3d��B�����a����j���!���*���:�j�^ :���Qw�J�JH"u�b0�;X�����xHf�r��19��C�����ezq�U��h����� ]�Yd�{�Hw&�={G�A��ih
�
(A
��G���D���ed����.I�����U�`��D��,��j3���EPm��z��/nj\�0�[
�B�j���4��=������lLuM��f���U�w�Pg�@���@Pb��XF_st�w��[�������F�s��=R��v�)<xq���P�������k��ve�wE����5�w�X(�G%���,|}P���F�o][���� ���M?��=F#%w�������-����=�����j��K�aO�������~�AlS9��!V��~_�!-�Ij%So24bj]!�~L��Y���" Zq��#^�Ra :M�h��]���7}�������F������l�N�r����p��f�2���#&-/bFtL�C�h3E#`�u���"��{�,E�����h�HuG��Xff���J���N���&���3h��Y��X�@�'s]�B�7��_!e
[
c%� P�fmz�y��H����y (�2���D��#`��B��(��%��)��U�E���+j�VY��-R�
q���H����Fe/���}�OGP��"�&A���is�����@��3mH��f�(�q����m+l#����!4���sq��(���?%��
JK�)�9�(�vs��?K�q���4��g-��S1�%��k��6���1�u!���#hT�*?$�P�#�X1/I,n��9 �� `"�����J�]��<��Q���������u������(i��6R��,���;���L���v�\j�>0z!�2�dD���fxyq��?�t��������O���C��-h��v+#D��QV�<�Nx'�����W��Q�p"��6N�c������F�&y �����m}��>����;������������w��������N�=����`���&�1Kt� r�)�[�����f9����>�c��VoLC�IJ�r���|Sk
y�5�l��jA�9\��hW��gY"y�E�-��^f���sm����~ey��n���lI2�@��z��^�SE�`a*�L�>US���%B��������F�vC*���_���@������*�u������V�pB��d�|�������H��.5�G��N�78���J���0cx����}�5���h�z�D>"At��W'y�)q&DUW���\��l��"�����AkM�7KgxX�F�* ��lz��?A��5N,��b����Q$������l7�XJp7�_�sw��\m�, B��{iy�������m:81����I7�B>$�� ����!)J)��8��o�3�+_�C���C�y �i��9�P�O�Y��
�wJU���*�����T��j� )a������ �H��$�2�,C.,����dy,!wr1�<��"�j,a�j�.:(�yy�T����f�pJO������\f��d4��fj��s�6�z�x������I�'"�|hGgS��y����j;�u�Fje��vKg`C$q#/��b�{�c2������p}l��xys��!��d�12U�)����4��2�&���Q�H�On��g8��E������5�ft�����������s�z�gBu���D@^�w��)�^�L���b ;�Q�c��q�&���~go�j�z�������I���w=�� �5J��U�m�A����/��3�i8�d�����f�h`�X3V�=�HV�jK�k�l�w��
�]V�*"��V�6S�F��;��]`���B�|��+��x->�� dj�@8�0�Y�UV�j�AJ�)36����W(u��S
"{��F��h�$z��6��l�����?��xvs�+�K�:�(�����e�9��b�n���Lh<�@��m��)��cRt0�2����'����F37�k�]^#�U)a!��Tv���2 �3(6�S���!�**
��{��9]�OA�TM�o�d ��Y��G�Q4O2G���T"���K`���rcj����g��}m��%�e���A�T�s��DW���K�[S��
�(g�����L�j(�rY2��>��
��S����/��j��b�d$z��H�Rxsr��B��R���.��TIG>|)�� �
|Z� �E�CE%�pEW��B���(f*����bqH�z>M�SY�0����-�w����*6���������/<���X�p��&?�H+�( �!�
����/�����Is{�aZ�:�wD�������z��|eX�$�\� ����
����jV�R�,lQ��f����ui��?�3����
~�f|L1/ �Rxf������9C#��t�Y%Ak��h��c�o�([#�:��:t��6Dx������s����m h�|{�������n�f���g4�t�6�����~NX�{{,�����_#��j�-�7�IZ�3�^+�Gbj%@5����`��A�Gd���O�x�F�;��{���3k-���C6F����bA�����@#��������
���}s����O`8U��J��`��s��#+����l1`�UM+��4%k�Yu*j�o<��,�"y�Ra����UP)"Bm�3���6U��I�;"���!J��b�O������WTTvhu\m�U���7%2����qg ������K����53�W������(����]a4�����~8a�](3u>��z��"�� ���9��.��F��&4:��||�������~�SgG���f"#2R�G ���Hm��m�9��8��FE��tZ���YOuv&Ko���?�tY�����-�����J�����_����L��bwV��,C)�'<-$gN�$���W�5 �� Q��2-x���S��&�������w6���f���gk�����&�|0CR�5V��-�����j�^2pC����B���Q���)���b���s���z"9��[��1�(�.�
Wn�������� U�df��5d���� �B{s���������i���Q7����6�t��iA���-bh?���4����6��{���8G�I�F��l������6`�Z�
m������/9;O��l_�@e�3��w�}����R����5:S�xM4GF>cT`�St^�� ��/(�El�TQ�9��I�����;u��F�����} (�����?=�������P���/��M�H�� ��'ad��=��mk�� Q�O����]m3�%�0S��G(�-d��Y�o��#aw6Uh:���]�oG�������Wl�����h��<Q�L��:93a�x&�'J���$�-m��l2Ng��s&��(S��M�C�i5�TEN���������P[C���� ��J� ��Q����&�%P[%Z��DeS+e��bU�m��U������@=(�U$l$ �T��aLI�p ���0�[���]��Of*v�(�3s�lVH�@SQj=�MQ���:��g�����"+�����dQ#.�?6����Er�#.��S6�!�����!���N���f-����
\{�@r+��}�)k������C�!�|����%4G-^��0��
�E�!��%�� <��� ��m{�Ue�>��u�B�6�\]%aG���t���)i��E`�0��f�(L ��"��X�Rt��Y��p���]Kv�H����fr�Y^�����-�#�[M���/���1 ���*����X(��_��C��K+4�5� �����t�� �M��V��Ii��D��w�
i�y�)��gN��p�2Ul(i��[��B� �2�)�����j1��^Qq3=�:�q�&L�!�1������c��!��,A�,��
l*�S��V�v�t'�=�zi�[��l-�[�6Q4����������#`zC/�N��j'f$Ps=��}���_��/����Ja��B��3��H#L�0X����xIl�T�c�<�-��f�
&���Ne���]���r���J�1to�*� �����4qia��k�vh�f�`��i��^s���<���{����m'cbUj�O���Ds�.�d
�3sU�~Z���8�����!�f{�����C���i��)���S������.�k��~R�@� 3�l9R����8&���(����Q)����y�
&�qh���P#��A Lz���=]���rz�"��k�N����X�d��iM�
��W@��]�:}sg�X�FeeYd�_[���U����m�M�t���rGt;���6ct�vn�� �]W�Gm-.�^>M��L���VW�M��d�#"����t�K^I��'������]����J��Q�� e:
�ZS��B*�� wK��(�fPl^��x'�������o�>�w��?������X�R�4���"���������xW+��,��_+���(D�x�^_��������k4���}�O����*��N���n�s��T~�?���>�,^�p�����PA�����-���/�!�K�����x���^Gl��?�uG��h�X�x|O�%���L���R�����eL��jA�4�_�
nZzs���Z�@\��8(�Ct3�����'�L�-�{�|Qa��!_��w���3@^�!���?J�jk�<u�=w�o� #0��j����z��@I��Lu�������I~��
��8W{�Xl��g�[��Mm��zQ$�������9Iu$����V,��:Yb���r)=R���� ����������x�����#�.b��f���%����f�9�rjL���_6���?{���D���~�E�l@Y
��z�m�����MAOM?:))m� )�J ��������-#u1Tu���g�.��������.$$��]��GjZ���#��x�d�9��o3��"���_��i��O-�[��@e��M����#���}[m(�W���5�C� xn����}5�q���=��l�^d<B����
\
�M��2d�pj�@��J��$
{���WQ6��c�w
�F����(�M5�"��g-����l����Ho|����Aa�4*#��_��K��y���K��C����q��:��������K>�C�O��-u����t��ecq�����c�{�P�<�- k !���CC,5�>?&$D�@������;��vq=*����� �B��Q�(���jf��j��������J<�n%������p����
0F�nc����D��F6�`�>�l�}���FS[`(���h���Y��K|=���;��������!c������~��RX��&��������!�
�-�BL�f���#�����i��F/>��BN��p:��C�1�jh�}s��'o%)c���h%���o1��^�
\Kg&� �F�31W�]���E�+K��R����J�+h��5h����G�8����.+��H&M�
>O��4�}Wf�n��Lb#���Te�m�m�?����7��S
�fD�~m6�������(������r����������A��fc���j����+Sb�"F� /������z���)%4���� ����S�o��t����Odu�Yw��F\�&"m����gj�B*�/��������ti!��b W�8sh�L�s�c9�Y��RH�+dJ$ZO� �8���I`��l�����h��\���;�]�}����b���1RH�:��q6����%dp�c�-���$���8d������L�h<��<��6C�5Mn�/:���%��������}��Z������3}�>F��fgb��>��j�aG�w$M��Y���I�V�������?�LlE�Wa�8�}��z����h����5|!���s��}���u�>���O������?�>����ig���� <����_V�3_����YI��0�5����,J���MZ�gK�sJ�&I�x�s� Wq�z
�i�`c����P�Qq��Q���s���5T;�H/<��C�y��#rG�� ��4��y�Z�e,�L�c����3�J�����e��;���Xje�x�O��YY�P@��Vb
�� $l&�.l|y&4��.u��0�^�.�X�=_���sc&��x��7��������s�����\H�4��>����Qx�S�&2���l���B�<hxk��Ja��;2|`� ���.#��iz�d]��3=�?�� ��$_�jc���Rl$e��������!
\�fr�nr�{~�}�����$��Ik� ����H��i�c��������&��H:��( f�a���b������mX�
�(�����zp�H�������O{�������H�aZ~t��nnsH������jW2����v�"���.������5Y{�21 �Y f�����T����n'������KYxZt"k�Wx���Mjp�+KJ&�i�N���?�^$\��K�&U�� h>F�����)V��|��?�}4��d��������3� �sW.7��)����k�j:���Gi����p_&�/��/#|�m��mV�(b(&PR�9�r���XV����>���,�!rO4AP"L�e8J�xJ����}��#���������d��/aH.fp����2�8v������b8@�C>X�D�
L�_r>�Q�
�_��HK�N?$�J�m��D2T��9�t����g^yWl�U�GFz���lD���������-��uo������Ay�a��
����N(0bA��B��X0�}�;#�N�^���s�u�������F��R�hg�Nj�v����:@��QHi�'c������S��E�
~��`~2������N6^���O.���*���X�am\�q��-��"���#�T���
D��8��=t�EC��L�1qi)�PM Qmt��`\���yY:s�A���b���Pu.Q�Y%�?�buL�_ky�c�����x�t��T|.����MG���T����1.��Gl �z''���R��V'�JN��~������_����]b{+��.���8p*'>y�����Q
���#����x�:
8�^��-��A�kM���Jq�����,����V2�gx����&�TBZ��H:p�(+���A���8Z4��Q��Z�z������4"v�����������V��T �!���}:)f]���S<�C�=���Z�:o�G��E�y4;��=�8�zy6Uc�� Y��XM(]�
����=z���D�E8z�l1t=����rN"���P���C�x�
z�~�j���v�tI�pg����C�������4�~����+�W"��&���I�F2�/�b�����4��0P+v[�����?����wD����'l�pD�OwX����=�o���t�0�gC���������Rh���'�}Pw( s��(��kJWh2�f�E/�D 5�{����z9���� ��E�w������
G3����v��x6�����@��7X?�^�t2�����9v2|Az�e���7��GU������F�.jv�����I�"+��\�v��������VU����
M��O����<�����K����g����f�S������$Mz��3������si�nRxA����b3��6��������Ny��T�a \3�����0��OO�^7�I#c��P�)f*�O��z�V6�+u����jW�0�'�<�XB���.������x���-�K��]g��_v�i O�M��|w:�!���I���v���A����G�����Kr�IL����V��-�2h���#���,�[� ���E-�('*O���y��r'�]�09��g����)����� ���G.����N��&�G�� +�e�F������(�s6�|\���i���\f�N���&�������uw�25�����F��J�U ���?k�s_����J~Rt��g���A/�����im-z%��r0&?I�m��j�u\"����X.��j�b>��_M�,�Yr^+E��4 ����H���������v!p��Z$�Xc��zB�,��G-�3�h�N���?:/�C�JP��3��2�J88�Y{4�,b��?� ^���L[aS�Q"��o3:� 0;��,r���H(h������
��������$s��9��>|w��?|u��$m5�I-�
]K�����Mq!���{��Q�������������>~��?���r�v��
�0}CxV��TO�
�@��3����Ym�5�����Q��`���a�������Bb /z�{A����R�o��`1:����}��Z��Ve6�W���t2��)�
=��6��-"��o�<<��&$��Lp�?�������a��(g@!��d+�J�5�59��|���* ��C�R�F����'�'M�X�L1q7�� s�l8CC-��iK�<8��a������v�W���JBj�"rUH�|���&/M ?c��4@��F��L._B���X���C������q;f~
�XI1�������g'���(�p&a"X���E'����%�����sl]����EF�����rY/���^��e'��i�r|6
2���D$�RM���,_"bM I��F{�~�?$u�~KHt�?��)���|=�q�{KFh����Z���4������y���6s:�}t
��%��A��)��i�l� hU�WJ������.AU�d�1��n&nI�Gz�<>�qDL��G��/0L��A}�!�]�@qY�_:]���>%r����]rSM����I��Q��sT��S��g%��H�gV�����OpYx����%�����dX�w�����f���N�DXf�#��L��$�0�)���A8
:h~��k�� [��
H�^�S^����+��t����\]���`Y7���U�&!���^�����
,6(�+�i��?r���L��]�H��pN ��pjQ�����x=� x@;��-��yS������y��[��#9�*�f���l����L�^^O����c��t"6(���b��|>@�E6�^�*�p�<$z3��yuGhX��y�&���G��F�U�����8���=(�m�'�|Qm��5c
�Zjjj��372�����KM�D�1�����s����
����0��q���/� �'����B Z�V��;y�L"pC~B2���Ca�E����(�����JR��np@�S�}eW�7�a
���"����Z�0����T-
Y�=���n��y��7�*a�~U[0���$W���}|JrJ��td�xQ���T��X�������z�1W��cJ/T�m�������w��r�*�5{��_��P��FSMZ����F?zi��i
������:%\S���L�c=%T�{w4z��;�u�>m����q�$�c"�t!�j#..�=j���S��K��7('D�q��G&�`��<�7,�� r�2r�����r���jN������0���e�>�$"?�~�Z�L@s���_D9_��C2<�c���}�bx�s! ��(��A�����>�uK����#�\�r7��"5�k��4Pzz���������~����=�.���mD���?��O��z���
l��7���<��=��������Y��obN-�h5�[�0�����7�������~R�kHwv���q~��4��S��J��#�iv��\Z�+����)s_73\����cT�:-U��Z�J�]���P�6B+O�O�<L�v������h Z�z�C.^;�Jv��b��)GwC{�bs^���4����o���R�
'��RaV�=����~��x$S1�����%
�����)>�l���x;q���5�����h����d�fG$���o��O�!��3J����
���"cX���W�IdXt����n�@�I
��c��;2�<�������E���\�S�-�%��w�i�m6��Q��S�R��5�0�����Q/�*k�\������f8L6�o3
��k�b�]12�%����A(��%g� �c�
�����~��S0w��h������n�����w��n.�h�w�v�:G/�������a���^%�M���yi���U�w�����w��g�8y��� ���K���D@�Y�v��T�D�2a���".r��F+o��N��K1m\����h� ��|b�OvE�H�AID\��m6b-��?�XS����p�o�<}�>��D��������Ms8�iC���������9E�_�����J\k�s�_��
^H YK1z9�S��L��>Zn��i�R���\�O:�J�1^ �q2��M���oc�~Q/���v���Vh�K{�Omsze�D��4y>���bv����� �U5>�B8^T@��� -K�����������x�v��
>g����@!(�3)���9_M�����h��}\��vq�{�h�����?��.�6�e�@Xt���Q�5#�D0�mC@?����')�s��so�������������'�z�����?���������z�����:9��c7:h&�s|��`��i��y���0;�����'@?��O�H��E�x1j���!_�A�������8�A�b���T����o���t���{��rj�M���r��iL�qGZ�<p���Mf�*�#�,�@���
�Q-��2�ev:l��G���p>�h&�����7��O��h�7�����S��ns�C��[a�[��X7�_�z��������;���������wx��jg1O���'I}|�i�?(g]�]8|�?r�s�v{S����J����}1(�D�V:��^�" DY������<M�5��x�LA���r�V:2�P���t��������,���0rN�w?P���Y�h�x��P���W���NQ����p�"�M(��} �����I]���� ���~��)�}��%2]x���jc.�8eW��4 ���!(� c0���S3��_M)����@
�T&D)����U��7��Gg{��%�K7��I����Q� Z�UB�E��S�������M��lN��� *�e1�p���d�G���*���g=,#�Lq�8�*"��F�b)z�5 �W���G���Q[�*:�
�*ON.l��SZ��mO��1�@4�L
b�*o#�~Q��<ca���_/��R���Me��;t�!�C�)��<�F��<���o7?|�MZ�S����8H^[Lvq��1yI^O��xAOO�����g�n�S���5��2�k��%�BMp�P��lD{���c��)�yQ(��A$>M��V�����
�������<���re�M�yW�j@g�bPi���������y� ;o@j���$�c0��>I�g�T+��9%CG���jba�����g7g��m�����Mw_���_�?���bw]s��n���`v��@n��W��P�wy��f�@<_�;)����#=�+�X�����5�U�#��|�AH�������!��y�G#���^BP��hk*��9t�%"����FB
8���'��A|��Xri��*V}?6�����2������\V��&t=cb����)���"3��Z�!��������������}��F3���$�H��
�t���ASj��
K���3��A2fT�{������~��W�I�Qg�ny�<�}�_���%�����~r�%`N��'��W���\��=�x-n��uR��� nD����f���u�����IY�Q$���J�&W)v;�zf�04P��g
[J���F����A�_nt&��_��:���T8Q9�M,�]k����x>����H����)�C�����i��>�S����}w�I��.,�G��1oo�o����e�>=�>�}���{{-���j�=���������R>1%��8��,�L����0'h�c�=�O�b����Ab1��7�w��_��v�OA��Y�o;���o�/�O���^�����}wp����>8�;xk�T}yv�W��@y��^�V:�|�������f�l������������c.�j��
wr����n%s�����PM,�R'��2�"��g�qh�/��������f�����#�+�������]8y��:{��n��}88��������I�6���N� x��+�w;G��xv�~�;���^��L��fo����������wg�G���-��x���O� y2HD��l�n��'����
H)�������� 5MN���&.y��:�8X<�����N������BMGA��9�����Fwxtt� R��{d�����g;o�_n����W1xp�}��v�l���}�z/x|�wzvt���e ��:~���~x`��y
r�����dz=����-:��������JB"Y�XzCKP��[Q���@����olr�9��3��es�6C�2TK>����Q�H����]��x
��8
3s�&�^=���z�}�����n����������Y 3�p,��~��}���)������A��"���g�W-�� �Fs�R����E���}�����S�hm��t#U3�������6\��Y� ���e���1g���~�t�?��N��_�x����}b�`�`�����kF�}�� eX<��L����6�����j#�@y�v���0dC�:�'{���v�PEG����cK7�����
j���^��n��;�ah��"��� Fo��������1����'�d����� �9��#M��c �!��L�6��l�!�[a5���e��.�r�/�N�F��S�����1�SS7;���qLW���Qj���peWY�����>��`�7�'�K~�����y|-��l-
���&��I�����y���p�y�_����?=�}�v�����e~1��+w[9�9����1Zk�z]��C�i��|7U�~���_Lg(�7r���� W�+�>x �:����M�����p��-��c���g
�Z�,��.<�r&C�����m�;�a���<K��-��-H��i6
����4�hnZ��/� ��?��h�:ti����V�����+�o_�3��Y����J�@��l�9��Fh��H]��0��a-K5�?���>��P/.���V"}�q�F�$���>���[|�)�� ��NL�@���:��o�� ��(������*)�l����X�-��B���i���)�z9�����j�y{�X�-�e�Ula�����d��LUMUk�3o%����Y�
�r�f����tP���g�t��bS9��|���c��|>��G
V��Xl��Y}[�<Wc+�g�x����o���|��A��yO,� E��<����:�Ud
<6�������W�\�
�%=,9�
;`2�ji~x�]���9�Qb
�nS��!
{��.��\��X�����qk���L/��&�qEg#�����I�7�*�Hh��p'�1$�V�R�D^�����^�x�bv����\������/��"#��;��>�����eh?� ;���������6��������`��W���(�eK-s|�>���@�v��%��A*Z��0� T
��h��a��+���f`��$�@��_s�;�����t�|����9�|w�`�+~_b���>�O���*{$.7�:"��D���n���v���xa��S:�+�:��1.����S,���h3D�����p�4�Grb � #}U�"�j�����`{������>U��������r>^I(z���2uks.��q��|�)�8)���
wUy��9}���
���S^ ,���T �����8/�eO'�ErFrBH^��,��^����������@���/l��V�w&i����4��p�2�P�H]?���q0���!qB���[��Tu�U/�w�#;���lj��-r��6��t�w�tH�
9��H8B�I��A�E�d��!�+���L�j$i)���@�� ����G����;(���|�C����7���� R4���n|L��k������FT���nu��wd��UN�+��x�=��bx6
��������P�/�rI@���]en�"
�961�t"�Ci���P�NYf���1�`y9%���c8p�����
'epg�A�#g/��$�+�rC�b��G�0{�F1�Y*���2������)gS��lPn�<X�9�!�^` 6���G&�d� {�����SJ���1�U�������\�a�25������.���Z�0���qa�L�
�S��U�z�s�^�j�)=%�+�`���6.&)�6-��r����s ��{��3���:����Mr�qV�ve ��"�`�,�,�{5"��F����������<K��PK {@�7�b�7�")2�k�m�|!Gv�g���Xa��%/lf����j������i�+���dZD�F5��3�b�����_#7!��>[Om�)��+wO%qBE��"\����{J����X���>������Dp!����4�*L��{�����wc�����g����]��q�2�KZ��xq��g*� ��F��%0���oPL7^�����������0.��/���{G'�{'���^�2������0�������t�e:FT��nu�--By�
�`�!���2E��
����k;G�g��Y2V��;>�:��}�X������s� 2� +�?qU{���3t�E�����f/U����$J��z���kG�Q�(2�f����Y6�"��"��������v�n�y�Len��Q&��C�o��t��B
+D���k�4'"F��1�!*�x�Q���]�a*7O�\���Y�2}pItH�/��@�
�Y�`�~0���/���a4�F��G��f��A����+�2��3l�.-��^�����E��A6�=9e~*���Nix��,�kT���"��������u���y�K���z������m������G��E���Zy��;>�}������ {�^�_�?�&cw��7�+�Vn��n��g��v���������h1�)����?��O ���W�dI~2��3U-)�����(��xH�A�:�����xBu9�����X�����0 k&t{ak��]�q>CK!+�a_������U`'�9=�$��h�D��Ee�6�*�~���:k�����vn�o���+ ;������K�*P&
V�R1���Cg�l� {@+.wY=_@�4���E��oY��{�to\aW����!�Bf�:��c;��+H^��v��XuGG)����2�<������ac�a�M`�U��c\q��O������nxr����J�t�)���F��LS��U_:x���x�p��@��k�v��;zn`�oIO�E[�����R��*�=�����G�&a���ZQ��W�d���H_���^
�*?J��P2�O�!��g��l*>��]j=�ys�)������$��H39}str�}�����+q������Q�0'�1���K��mO��L��6���y~�U�`cq�{��%��(�:�����c.�u t�#
���:���JK��.��f�-yr2++ �Eng�T+`�h�p���n>�9�p��q��V����G:i�o#�����
.�%�d���
~���4��L��l�^��(�Q�����o<���8��%�q�����W����s*$V<mV��L ��t���Q`Lt��X�J\��A����\���'�0���j~�Nr6��1Q��Q$�p����QS��� U����+�7-;'��WtH�������-#17�w�#�v ��ql^��h�X�o��������g[b ��s6��/{��$9�����9.kE������e�K2J=U��eM��b�5F���A���T�m;� �eI�wE�4j����|��+�����|�jW��s�}���m��9�g�
��m5�l�1]0��]
1��������b������S������R�T?(�����_��4�M��0F�gC���$�^X�� �?|�x5���#Wf�������8�����|��X^��\�������zPS�*� �� �K����^��>���N&�u���j��i>(7�W��{�V����/���D�PMA[��V��&�� �{8�T����p� �c}�W��15��`u�����RQ���k�P]�2{IE+�T@��q>:(z��fc�n����v�� ��C������v#3���gN�6*���R����o)h�YX�h �N��8�*�g��d��3�v�3���_�pZ#���3 ��
(��2-�<z��<�Pw���Q��^�)�
��0�|�6�G��~5����,���SV���������s>�����]�Q��;������Z���B��q���|�MV�Mdam3�X����������I,�x[.�S:�t���s +Q�����s�'�F�ZJx�]���J���d���X���:��K.��
���Hv����w������1��;3M��a����-�I���O���&S�� ����j��o�8������2�d��JLbZK�|���s"
���������0���^���zt���8�����
��IC�*�s�/i��9X�������D�(�c�XI�Q�n3�O��Y�e��.�I�p��,g���!����� �F�������t�!r1�x ���;^�i������.����]fzW��
U�#��gm�l>v�����"R<R�`��������%��K�\�S�s(1�fW*��Lm��3��\�E�(P|Ye~���KHW���s����pY{���\NL���wS�M�O�>w�u�h��mA9!��BY�>!7)&��!�L���U���W�����K�9�|:�ax���r!:+/�G�������x�t��q��T����9g
�(0�@��9�ds�z�Z�x�������Z����Q�tt�R7�|�:X��>�]������W����W��X�����>���n�mD�X d�J��i7ar/
`�v�������i{INk�����_]��F'�<�CEjl �c�?����������������5����<��Y�����5/�R�}T����!��we�N���� �W���'�J����o����c*�G��~�H[�G^���w���}�����v�{>`�/Rm!=���X~L�w3w��j�}p���0�k \!�o�Tz��+�1� `��s��R��dI��g>�[�x������Q����|xtNhj��)��4+��1������$8�L���=P�tDV���k���K"OQ{��V����D�
Vn�g���7����@+s���^�������j�B���j�t�
�Wj�=�M*N���Y������f� [�{��sx�~3"�.�vk����jt�dk_�ro�����H f
�������P������
N3������K�2~�5 ���>�gD��z[0JI�
�npK��iH�/V��h������ e�#kU�������|�����g�� ��F���+pe`���K����Z�C�*6/^�Ew�!��j8E��!�p����8���*���
�����_t�/�]�"�\
�P4:�@[�����0�8�2[���@S��;��'�ZFXPB�j�D��~;�&���Ro)m;C��kdY����U����M��q����~������bB�Uh�|�G3C�58,����y��H���s��vx�?>g� ������$��t�O[�������������C�D[���"|���@�C��$��/�_,�����A����B&�Tq�
��Un��{z&��kJ��{���!c7����O����o2 )8HJ�����Nd���^�5�3�;bn%�������1������36����q��Z%���V� >WP�T�E[���F��I���)����k`���A�p�H@�o���� ��'�'J��R[����I�v9������{��G��w�h%� ��@Q����&T�����������go��sxt��?D�����x�����g{&�^����i�"V:���s]��M7M�������6�#.]�4�br�+#5I2z�n* %��t�%���^����#�@Rav9��a4�3��������/(���Y��tt����z&|8�oF
���[��Y���ki�,xU������S���#����b�|6��(a����ob�� �~���"
�!�?��h�������Y�Rr� 7����5��{�P����R�<�f��b�P ������U��^&%\!h�s����j!4�H�`g���?�������n�����TK��x�I|P��#*�{Lut�?v@����~O�� �Ir������c�����c���yK<d�Lw�y�f2��u�)R9��1np��u�_w�p���0�l��V����,n��&�WR�4�2��
Q�lR^�\(�i6��9�1�m��f���]yPx�d��H�SD�>�_�9��?$%���C��}���8Sr��R� +�0�wQL��� ��M�2 �0�K�xd��q��jm�� ���#���uo2)&z2��;�dN\&������y������V��2|��}����O'�������c�_�
�0�`��8|��'���'q��D�m�&E��n�)�N�_��M�����wJ����J��t��N'
$��M������5���B>��2B��gc��:W�[P�%��:��9�K��5~�i���E?F���< V�]C�A�D�c���q�g�0<���?iG�����\��L�����4r[����5��*��fr�L�md��'�O�C�����(�� �H�2&jZ��q������N����g� �*&��b��=��V"�u�Zw�nZ1��A����'N�R�ei2�W%L���R���������R����|���$+)�}��'g������:��C@�[��T!������� �):?���p���w��l�S� ��I� ]&����v��B�_q�T������������C������a7>�*��E�$��]
�z���E�JW6����c���G&����1��91-��������MN�*'�@�����R����E3��S���
��Zs��bi�"(�n'FQ���j*�T������R�k��G��wr
��{����\������5WS=���R�B�FQM����`�)�;-1�����J�����|%��$������m�����-y���t������G^]����E������A�Ie����.����e������X����
�{ �S�~gTJ��|�2��4���P���o�����l�Mg�kB�\�=�q���;u�1C��A~@�$V>C��O�3N/�V��5z]d������MT�<��{@9�kR�������~6�F0R,%�HL�F�`�/vl{���a8]���,��K-�z��|��V���
��g���^��#:I
�� /�;����8��G�����~�n�^:�T����e~K7YN�[
��%z��<(�����|��,&����#�����]��>lP�g�(���O@���F���v�j���w��I0~��9�;>��J5��ppzX�a���),��. �����~0�o<��@w �]���X���fzT4�eGp��l�E|+�jR���1V4C� ,!+�m������sf�X�Je�
A ���-u{�,��]ix�m�}pp�s�w���{������v��t�?����m_����lCW�sq���O���Y���zB�q�������l�7���=�����wQ���{!e;��T��3@FAt�6���T���
����
�O���� ��bHD�SQ������{��g�{���_��/�;�F��/�$����=i��1�x�s5
Wrr�B���K������~W�G)p ��E���o���&L����N�j�>�`B������_;�`IF\�o���D���kO]��:����?��c�����i ��:a�@�|M� �C���b��T^�Z��?A��~z����|��6�w'|["����$��
1H<��M��n����\��7.3M02�F�[��<���(�6�kJ�@�`��������puO3��6��3)�J���z��G�����tD��_`����8��|�j�\��"���.7�����������W�z�6b�PxQ�"0nX1�?P������
���+�O�w�1��C�� �����L������"�ZP�rD����^+������"���n���x]�X���n$A��Tv9
���7��
����8^jQ���^�������������6��D�
�� N.C�BM�_�h7�/�������L\����@����5�eC)�����E�����z�\��o
��j�
G�w���o�4�C�������s�]X�-yN�+
�x���h�.��
���~�9I���;K�;�<�
�-p��f����l|z�T�[����1 �� ��\���'UO�3y�+��� ��>�Q�����o���p��y��1X�`��,79��6�&/��e����((�rc$(�����gZ������N,9�LH����:�1R��AN^ ��s(����L�K��VxLqL�����O=$�~<]��7PWQw�R�F����=(��4�t������z��4g�������R�4E����2z�We��V�%�4'L?����ph��8��(�P��d6�@<�� ����n%KzJo�(�e��n�����,�|"Z����
�J1q��0-�eA���'�p��IjF K'x��t�{����v+�v���_2����jR��R �g4-�{���������d�k��t��(��<.�8��D�B\SL
��-������A������\v�j��e���������1;�S��%���|t=���(��������X�
7�yh4>�$y����Vu�_�wx�Sk+z��)V����R�k�0��s�s]�����\5U0OBW#����B�R��u���?g]���5K����������v�����������Mq��x^�>,/,�@|�����o{_�@��s`������
C�_u��OgcLs�����g.j:ek�(��W����$�|����?�g�X��h�`���8_�X����E��+���K��2,=���'t�11��j�G���)h��#���gu���.LQr��B�U,�Le� +B�k�{����� �^%@��n�����!��V��-����t6��l�F����5�_w^�;�Ar�l��>E���;��.qMVz�?)����#�K�"��fV��R7�����,�x����d%��Ek_##U/��������KV�'g<Na���QdU
S�$�"2�:���}��%u���d�_���LA���T!�e�;;�����C���� o����/��^�&�|��l:�F�K�i3R",��.h�6���5�37���O�����g��� �T�J����������g}c�����VZ�IGX�[��F�s,�����/a�n�^����.�2��.<D7�V�B����#w�����[��SK��az�%�:E(�:%}��m�@�����DL�E��;gP�`h���f=�-�X"�W�D:��C�ah��"-��bN�z��[����|$�q2��8S)�b�H�tM�)qY���8ic���j���
��J�x��f�����s�����v�Y��1��s� X|B���c��a>H ���2���T)�"'Dog�0;�e��M���U�!��� �&��6���Uv(����5|;n�X�d,���c��u�����3��4�8,l�q��`���GT���=�0�-b�=�����l�0
~�S��HR����_����l�2��9�O��9�4o$����W����u�1y��Q�>����G������R�Q���tz����������h�;qJ2 �Y�����B/
>0(��<1�J�Y�mU\�k�0����Um�P�����q6��[G������?'�&p���?�>�s�9UG����H�?�����#P,drQ�8��������#��mc02�~�eA�V��z��j.���^����2h<���:C��]�
��H��y���;��q�f��.�Tu(.��2�%�����;��o�����-W~������M:��igo�����Y���s�~��Y����D�XW}� �J���eOxhfy���c?v�W��_'��� _
���HCp�������@��#�/_(����Z�
ls��[~H���x[�[�Fk�4�%���{����)���"���ew�%hrg����:o/�r����
��E�.L�l�;��+
64c��/�w
��RN6�������3Q��GP�&��&%���Sf�t"`�A�[�;�b�(�
���A��~��\�h�����W�;���;�'�?�����E
��!B�#��$�E�V,M�E���A�B,����� ��
��;�u��0 F��� 2�?f��`�b���g�2�aV��D,��R���ea�5���d��6���^���J!,�d����$L���r��2x�!���``��=���6<�F�v��g��&�w$������~�A�qN��0��u�=r$9�S�q%dH[V�{�����/KdlV?.
q ���6y��&
O�� � ��.���3��P�'�&I|�����+����}��p
�j����������}����*��Fh��+����Bw�]s�p� 58�Z�D���e~k�%�#��&:�-��t���z��} Erzs,��(�1���<9� ���ghp��+t�����{\���z��\������y���S��� 0�3�;���Ne5@����,7=|��@��X/���K�JdI�"��G�)"�Q�=��`�������A=w���M3�D2�2��_�$~@��!������n�B
� �����c34��?c�a.lY�CG���y���?�e�'��j��U(����L� ����h<R7�������`���e�d*��pe�/�8m������f�z��v0l��ej����mi8IH��E��+|v�w(2�1g�Ys��)_��U��Vg �������| ����p�:�:�;�="b���R��7Q'8����Hg����BV�n�]%z���I?�d��"�FJ;�����Q�(��n`lZ��5v<A�XB1:�>��F#Te�������B������*dB-������6'�v4�u6��[��kB��v�N��L����9���^���"F��^��gw���]�����4�����f!LL|%��`0O�Q*t��p-y��H[��U�0������'K��K�-�TQ���1��#1���5&[�G���U��i���
�8�g��7LA�$��S�ohl�oL};�g;o���A�|�wA� ���~O�:goN��7����r__l���La?��c���-k�_1�EE�����_�6a��k�1Xs�t�d�]Z^����w'�����wo|8Tt]���L0?7K�������--sq���\��\���������A���+� �2N�z���
�^L}��N�������7���.�9�9&�����������
2qj� �u��3X������N�}��R*y|��X�X�R!��fS����$$��I#x��Q���\��?�V���Y�a��[I��r ����
�V���uf��y~f0��,f�^v��3�u��4H����Q��[��t}f�|����lr��tx�)�����e3=���[r(X jt�\�Y��VZ5U7��ArM����s+�vl���=8pk#����������
�8���=�@ ��D���,�CSLH�q6���7^`��U���W��������[X� G��9m�j����2�3�����^�g1�9�q����=�������T�}8�Q���{��o��a���`R��>�RE,swY��?���RL�eL�''���u���\��a���I�pw�m#5���A���T&[�}�H%m�e��S��j����Y���"�&��y�8��(MVRs g���@�
>9G����1M#{E+v��C7)����A������L�g�%�3:f����*�iy����", "��_������-/� �g�`�-�M{?��pv���Z(�m�a�Z4l��V�d�����s"����#�#um��Kr'y�g�u����-GB���Rr���4��{�_VX@��~�<yz�p�E�0�!a"06�j���E<��=�y������?��g� 0�7�,/�����Cj%�C�� ��L4l�LX&����LjC�8�E������3�CX-UB>��t�^n�=."�:��P��s'�W�_����|��#�^�
(\�c���1M���0c��d�����V��_`��WBM��E���z�� B)^���f���5m�E��T�0�[���
3n� �gm���iW�Z���BRa���B?�p�>��M=�6�j�������w�Yr������3��[n�V��� ����/R|�j�_�"r�[x^*q���n]LQ�\g��>