Using pg_rewind for differential backup

Started by Sameer Kumarabout 11 years ago5 messages
#1Sameer Kumar
sameer.kumar@ashnik.com
2 attachment(s)

Can we tweak pg_rewind to take differential backups in PostgreSQL?

I was wondering can we hack the pg_rewind code to print the details of the
file which have been modified compared to a target server.
The list output can then be used for taking differential backups.

Or perhaps we can add an option/switch in pg_rewind --action

--action=print ---> would print the files which have changed
--action=sync ---> would sync them
--action=copy ---> with this option I can specify an additional optino
--target-dir where I can copy the files which have changed blocks

pg_rewind-
https://github.com/vmware/pg_rewind

Best Regards,

*Sameer Kumar | Database Consultant*

*ASHNIK PTE. LTD.*

101 Cecil Street, #11-11 Tong Eng Building, Singapore 069533

M: *+65 8110 0350 <%2B65%208110%200350>* T: +65 6438 3504 | www.ashnik.com

*[image: icons]*

[image: Email patch] <http://www.ashnik.com/&gt;

This email may contain confidential, privileged or copyright material and
is solely for the use of the intended recipient(s).

Attachments:

image005.jpgimage/jpeg; name=image005.jpgDownload
����JFIF``��C
	
		
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=��C
=)#)==================================================���"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�>;�i5�P��v����x���z<Z��x�\�)���������Y�T��t�t�7��o
���k�"�#"c�8_A]r�����Sn�e��X����o�����+3����#�Y-��
��Y`CV<N�2<�-1��r2C�9�<��;��YA.[���n�-�����������@�#f����B�B�3i����+#�X����k1�����f3�������o�-
A��eX�A�w)�����c�T�II4k��Q������~+y���T�U6�o���t-r=o���p+�	?
�
kQ�q|��]\�d��c��0p������C�������2�r�j�T�7;�zt7Z+#�1�(��
�g)m���d�a*�H�'U�>���4G4�Fv���RQ����!'��_%��x�"�c{prO��(?k�����y�!:R�Z�+�^GU�kO��%U%���J�������<N���]G�lefF����#$*���-���tbm����v��u��k9&�Jjr�7f������Y
�vT�u
]��H<��S�Q�O�+���MMo8$������Z�K�e�uV�H����s��v��Y��x�V������(�����E0\Dn"����g���=85���OguOp�Z��o�+�/,1�/z�I�����N�^04���+�RB2��?*�R}�gW�;:�[�xK	'�J�.~��r���y��_}�m���%m����O���:��Z���_������*"�ff�8���zST]����0uU�;��)#�I^RB)<�'��+MH���w��'��\��������3j9����m�����!�d��}Ke�\�e��!�����&5����gt8������=�:�+��W����=jD�w?g2Ag�`8������������S��-����bP\.I86,���QRw��`+N���)sK�\����������	�F��1��G���K��=��R�Bp�wh[}���.D����o|�F=+7]���=Ao����PP�dR�L���)]����f�>$�otI������J��4���8Dv�&�@z�P24;)H2E��FXpz�����l��"$S�*�3�E������_N�B��(�BI��}+/�������s���n������ViY3oI�-tKia��3+y$m���d���}�
"=5����a(
���}���Ei�b��������������~�,cv1��8���s��!��'
�3��rx���9��+$ah��-�
�Xm�>��=��hwf�#�f~Q��W���E]����}>�8���A#�t`����\q�r��IQ-�"8C,jaA }GZ(���"�����K��!ES��ryc���
image006.jpgimage/jpeg; name=image006.jpgDownload
����JFIF``��C
	
		
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=��C
=)#)==================================================��,
"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��;]�s$��s/V��l�1��4���-������A]s��jJ�S�4S+]=��YcF:.k5�C���*��I>��|O1�C�E�W���E��d���l�[o����
�m����9��k.�����E�����!��pYs���X��t� �B9���i�u�uW@����1}��*���q�5��u0���C*���9���x�N?:��G)��^&�5	�|��"1a��x&�|�����U�
��o�*�|Kdmf�B�4Z6n@�s����^�G*�L��?*<����~T�J9P�����+������&�J�����&�o����|����m��Mo��m�L�gs�z=���5�lF&&A���V��%k#9����	���>s��+�4�k���������q[[ ml��i6�g�+/�T���Gm�	���>s��+�4�k���������q[[���=*������!?7�;=q�SX��o�=����]7�|���W�koL���lV�v�u������{@�p[nU����b+��w����������g9�����������<������y��O���Q��&?����L��?*}r����<������y��O��T<����~Ty1��4���Q��g���O�����y��\����j~0��G!���R���Y���p�`���+_k�H�UK�������F�G�R�K��r�7j9P����������
����	\�+~Uw�������C�O������Zl��<qO����2p2G���}ev���Ef�T����*s�
I�|�](�@t��I�`����J���O��t{e�������i7��py=���������=/���O��O�!�/��7���(qBN�<����~Ty1��4���R�"��KE�h���b��&w���=j�^#��K���A�8�,��W�v�[��Z�~������O��&?����b��wV���An��=����l$����E���h�?d����C���������.����E���$o�1��4���c��i�W7u�;�mF+e6�3$'���������S��%����%�/���$�����}2F~���a{X����O��&?����s�������Skl�B��$��f`��$��[��{�[+9�hD3�tQ��1� �v���;��6v������&?����L��?*��Y�h/�-E�[XX�mP�U���89�M��1���R?��%��<�2�|1��y�F����O��&?����a����������$�#6�����t���/�o����,aH�+*ns!$���#��M�=�F����O��&?����s��������o��sG�,D��p2p��a�����s�H	f')����|�u,�c�t����'G���<������y��J�����t4���3���y��G���O��L�T�&�WTEfc���^�yQ��4��3X����+LG�
X����?�x��tO��0���?��N.�K����2������W]<"�5M��sK?g�\����
_��z��[@�q�����u�Ye�����$!�����Xi:5���h����n�Q�$�GM��3�1\������O+X���AFo��G�����j�nO�}rx3������_��?��?�U�8WL�����O�d^��������;��?��?��?�U�(�%�%��r�����������.�?��o��j����j�6��u%}��s?�����5B{���A���7bV���"=�P�L�rp:���N+S�����i%�Y��ge����]m�����dl�@=��K�h�
� m�\�D0FDd�����Ur��t=Jint�}�W~��A]=r�?�7����uU�J<��V	�P�fW�<��w4i$���Wq�`�r*b[	��cQ��c�3
�(8�oF��]�m;O�����)����zu&��)��m*M�������#�p3���t����;�Zq��z?C��,Me&����N���������*?i�>���kg{w�E`�a��U�r���?��t��*[�����U������s��<�:s������^)�F7���`.6����T9������<x��U����Z�2T<��OC����s����tX���.�9��k������*K�cv�-%-%X�3��x<Mw,Gk�>�>�b�����9\,h��|�<�WI>��J�����VW.���8�)�������&��[~u��5v���p�s�}g�<Nr��|��Q�����i[Y2���Q!l��Q���1�6�����?
��$`�{u�M�G��Q<���%by��i{
����]��^$���C����rNG��6��c)	YR�v�0���][���������d�v���"�t��>X*2|����F��H9%���
O��FUC��q_�n3]����\������B��^A�l��(��N3�Z:$���+�8��Tg8�mB��S�N�B-J������K�=�i����c�������_H�jV��d;D��������u6�U�!�B��,���t�u-�V��K�wIn��� ������f5����(��qN���j���� �h��9�Tq�{�CV��A���Kwq���Q�c��p���kSR�t+�bv��k{�J#�����~c��U�
6�.a��d
o�x�}�����w3�����������4�>V�P�YL�9-�x�}�}}S�������z��s��W,'R�1��a�A���h��kh��t�������������X�,-�C9e�s�������l����62�#s>��]j����\��jHXW�~~��_TE��W}N8�]:lvS�������_�J���	B6������X�^[�u~��O������==H�����J->MFqw*�H��W�zt��Mv�M�_�����\#f	�#;��=��Zt��:�K�<h��� ��0��>��lj������hM����y�6��v1�<Tp\�\�3XC���ps$BO�z{{��Vt�I��4z��r/�v��;8+�3�r8�zKf��o�����Iqp��yr��+63������
}:����h�o��H�$B�����T���k'H�P�
�)��4�����Cc�!�kP|�����8�B�������p���Z�����������i&�A4k��&��Fp�#��?�����p�\��@�<��	���V��s�+(���8�I�F]�M���5���>�������9i�B$����r�:V�2kG�H��)�������$V�@�qq;@�~s�`���������tVpIq�7��+����A�@*�������/�/:��\:6�<m�	���j7W�U�rE�Mr�6s����������G"����
�+���B��&K<�2F�!a��b���	�]
�3�Vq"J��r����XO>�
�[�&{��1���&f�<�g���KX��&��\I�h��$�he1�V$u����)�I�������h����Av�p���'���p�I��&���$�P��qso1�@D�\c �z�jk�"��N,��������C��T
���S������^;��r��n�eC�
F2Ks�������6���i7�l��q�q��D�����
���8#8������sqt#�1���C/sU�q��>cj�nzd������V5���%�H�S)�m��	�&?�A9��)����C�
�Z]�4��o&��o`�1�)�z%����#J������P�b�}�~����yguaioyp&y��1'��@�5kZ�&�����s�:�9}���r���m+�=��u����o�+�<����Y,���
�<3kAm=��S��H��0w�8�J�Mr���e�����)���Y)`�p=s�)�j��AP���������Hs�$�H���P*�'��xv:�>���tiK���h�G����MA�Q��7���x�
Z��l��}������V)9=�R��'dj�����o�\��~�k����^u���z���m�������5�6�qyr��H����=���"��+�5�J�i��>g��]��#��������;[T�<�
?���y}�j�V�&s��������������|����<�\\N�O�����?��M����]��#p7�����+W%{��H�	B<����}�o�7�+8��^�M)#,���=$����Yzb'��W5��K�Ff������kj��M�������"��eu$�u'��>�O��'ys~�G�-���������ja�JI;�dzr��NMZ*���:��mW��e����5VG
�z��Q�}j�������a�����z�fes�g����}[��������`�ZP%E��A�*����^H/�{�i����#@��sYJ���oCHP�v�����29���xWO��me���������8��V�������/m$K����Y�NB1��9�V�E�����;�2,��9�j���D���&��������������R��RaK
�Z���kt2����1��(_M�W*�T����ju����x��l���������_@*k��^X���RMk+0H ������e�0q�����nk)����G��R����.<7k�ys���H�!b�1�3`w���g�W-w<J�g�xM�����������&���	T&VS��}y�b�	����d�g���\v#�����{5������YA$2Oa[����x�����kh�(�wc����T�A^V"z�k���������|A[?�3Rv$��r���1U4�8�i������o��� p=�K�o������5)�tw���EE�Z��-S�����ps�q�C&�2H�7�L,�@!�z��U�����T}����Rw�:�K���S�EH"��;�
�1�y'�4;��,�-������`3��?\
��\���Q���_���Ff����{��$�o���|���L���I�N��������A<g99�3[kE���\���Q�������uU�H����N}s��Z�S�rz/�G���*9��d�����D3��c%[���EB��z+��7 `���Z?kE���\���Vm&.S8Y��]M��r�G9��,_qk[����>O<������=���rz/�E��!r��K;�7�������&�����
�����<�ym������k��*>�'��TY)J�++9�gx�:~��8�\��y������q���qK���_������T�d4�\����OE���\���U����hZ}��-������<p��TM��)�#Z�������U������k��*9�?��p���21������������_���������U?�����k��*9�������D�*I$�����3Y���>�#G������cR
`�n�{�=�Z�kE���[�/�G:���St����Z1pe$�'9# ����=���O��y^` ���ay�������_������Ts�+��x���mc��L���q�}�jU?����T}�OE���@:KV}J��,Q��'qS��������_�������?h����7�%dS$`�b9Pq�}p*/��AQ}�?.,�]�.APH�i�k��*>�'��T{@��=2�O����U�M�YV(fR�uS�~��������k��*=��Wa�zu��i�	*!���C�d~�t�&������BH������rz/�G���_��hB�ivW�][E)���\����JF�,^�^5�&��a^r:��k��*>�'��T{P�@4�%�7�k�<���c?\w�fY�i�a�����
�xc��qM�\���Q��=���*!��{K�V/���[pzc9�qV�����!��$*��2S�T_k��*>�'��T{P�]�:���x�����yfQ�'�v�5����4�IV�W��@?�'����'��U��\�%���4BC��>>�{Bf�"�c/_�X[7D���a�G��_�^}42+��%���9���c��n?�_��C�`C4�����bTvG�Z5+��O�q{i�+�����WW'���$�L�����-s�6|�W�+zu�No�����dY�Z�m�=~��%�Ip�c������9j���g��_��������k�����pUV�%��=�eq���=9�����6D�����O�������_��Ib����Iu9�����@����_��?���N�����c�+9b"f���s��N����G������
�����}�
�U�O������}������
�UE+�_Z'�y���R.�n?�����
��Z6��Q�����(��Cz���D��I�1�(����_��y����J��������
z�P�|�~c�+��C�X�|�p�d�My����=\<��
#2Michael Paquier
michael.paquier@gmail.com
In reply to: Sameer Kumar (#1)
Re: Using pg_rewind for differential backup

On Thu, Nov 27, 2014 at 9:39 PM, Sameer Kumar <sameer.kumar@ashnik.com>
wrote:

Can we tweak pg_rewind to take differential backups in PostgreSQL?
I was wondering can we hack the pg_rewind code to print the details of the
file which have been modified compared to a target server. The list output
can then be used for taking differential backups.

Or perhaps we can add an option/switch in pg_rewind --action

--action=print ---> would print the files which have changed
--action=sync ---> would sync them
--action=copy ---> with this option I can specify an additional optino
--target-dir where I can copy the files which have changed

This discussion is not really adapted on hackers as pg_rewind is not
included in Postgres core code. Please let's discuss your proposal there.
Btw, pg_rewind is not aimed to be used as a tool for a backup facility. You
may find easier to use existing backup solutions instead, or help out with
an in-core solution. There was actually not so long ago a patch to
implement in-core differential backups, with a part called profiles able to
fetch back the list of files modified since a given LSN point (only an
improvement of the core feature though as that's not mandatory to make the
machinery work). The patch has not been added to any of the recent commit
fests though.
Regards,
--
Michael

#3Heikki Linnakangas
hlinnakangas@vmware.com
In reply to: Michael Paquier (#2)
Re: Using pg_rewind for differential backup

On 11/28/2014 09:30 AM, Michael Paquier wrote:

On Thu, Nov 27, 2014 at 9:39 PM, Sameer Kumar <sameer.kumar@ashnik.com>
wrote:

Can we tweak pg_rewind to take differential backups in PostgreSQL?
I was wondering can we hack the pg_rewind code to print the details of the
file which have been modified compared to a target server. The list output
can then be used for taking differential backups.

Or perhaps we can add an option/switch in pg_rewind --action

--action=print ---> would print the files which have changed
--action=sync ---> would sync them
--action=copy ---> with this option I can specify an additional optino
--target-dir where I can copy the files which have changed

This discussion is not really adapted on hackers as pg_rewind is not
included in Postgres core code. Please let's discuss your proposal there.
Btw, pg_rewind is not aimed to be used as a tool for a backup facility. You
may find easier to use existing backup solutions instead, or help out with
an in-core solution.

It also would be quite straightforward to write a separate tool to do
just that. Would be better than conflating pg_rewind with this. You
could use pg_rewind as the basis for it - it's under the same license as
PostgreSQL.

- Heikki

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

#4Robert Haas
robertmhaas@gmail.com
In reply to: Heikki Linnakangas (#3)
Re: Using pg_rewind for differential backup

On Fri, Nov 28, 2014 at 2:49 AM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:

It also would be quite straightforward to write a separate tool to do just
that. Would be better than conflating pg_rewind with this. You could use
pg_rewind as the basis for it - it's under the same license as PostgreSQL.

If we had such a tool in core, would that completely solve the
differential backup problem, or would more be needed?

--
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

#5Sameer Kumar
sameer.kumar@ashnik.com
In reply to: Robert Haas (#4)
2 attachment(s)
Re: Using pg_rewind for differential backup

On Wed, Dec 3, 2014 at 1:32 AM, Robert Haas <robertmhaas@gmail.com> wrote:

On Fri, Nov 28, 2014 at 2:49 AM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:

It also would be quite straightforward to write a separate tool to do

just

that. Would be better than conflating pg_rewind with this. You could use
pg_rewind as the basis for it - it's under the same license as

PostgreSQL.

​Agree. I would want to work on that.​

If we had such a tool in core, would that completely solve the
differential backup problem, or would more be needed?

​In my opinion​ yes.

​This discussion is not really adapted on hackers as pg_rewind is not
included in Postgres core code. Please let's discuss your proposal there.​

​Got it​. But given the above, can we keep this discussion thread here?

Best Regards,

*Sameer Kumar | Database Consultant*

*ASHNIK PTE. LTD.*

101 Cecil Street, #11-11 Tong Eng Building, Singapore 069533

M: *+65 8110 0350* T: +65 6438 3504 | www.ashnik.com

*[image: icons]*

[image: Email patch] <http://www.ashnik.com/&gt;

This email may contain confidential, privileged or copyright material and
is solely for the use of the intended recipient(s).

Attachments:

image005.jpgimage/jpeg; name=image005.jpgDownload
����JFIF``��C
	
		
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=��C
=)#)==================================================���"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�>;�i5�P��v����x���z<Z��x�\�)���������Y�T��t�t�7��o
���k�"�#"c�8_A]r�����Sn�e��X����o�����+3����#�Y-��
��Y`CV<N�2<�-1��r2C�9�<��;��YA.[���n�-�����������@�#f����B�B�3i����+#�X����k1�����f3�������o�-
A��eX�A�w)�����c�T�II4k��Q������~+y���T�U6�o���t-r=o���p+�	?
�
kQ�q|��]\�d��c��0p������C�������2�r�j�T�7;�zt7Z+#�1�(��
�g)m���d�a*�H�'U�>���4G4�Fv���RQ����!'��_%��x�"�c{prO��(?k�����y�!:R�Z�+�^GU�kO��%U%���J�������<N���]G�lefF����#$*���-���tbm����v��u��k9&�Jjr�7f������Y
�vT�u
]��H<��S�Q�O�+���MMo8$������Z�K�e�uV�H����s��v��Y��x�V������(�����E0\Dn"����g���=85���OguOp�Z��o�+�/,1�/z�I�����N�^04���+�RB2��?*�R}�gW�;:�[�xK	'�J�.~��r���y��_}�m���%m����O���:��Z���_������*"�ff�8���zST]����0uU�;��)#�I^RB)<�'��+MH���w��'��\��������3j9����m�����!�d��}Ke�\�e��!�����&5����gt8������=�:�+��W����=jD�w?g2Ag�`8������������S��-����bP\.I86,���QRw��`+N���)sK�\����������	�F��1��G���K��=��R�Bp�wh[}���.D����o|�F=+7]���=Ao����PP�dR�L���)]����f�>$�otI������J��4���8Dv�&�@z�P24;)H2E��FXpz�����l��"$S�*�3�E������_N�B��(�BI��}+/�������s���n������ViY3oI�-tKia��3+y$m���d���}�
"=5����a(
���}���Ei�b��������������~�,cv1��8���s��!��'
�3��rx���9��+$ah��-�
�Xm�>��=��hwf�#�f~Q��W���E]����}>�8���A#�t`����\q�r��IQ-�"8C,jaA }GZ(���"�����K��!ES��ryc���
image006.jpgimage/jpeg; name=image006.jpgDownload
����JFIF``��C
	
		
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=��C
=)#)==================================================��,
"��	
���}!1AQa"q2���#B��R��$3br�	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������	
���w!1AQaq"2�B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��;]�s$��s/V��l�1��4���-������A]s��jJ�S�4S+]=��YcF:.k5�C���*��I>��|O1�C�E�W���E��d���l�[o����
�m����9��k.�����E�����!��pYs���X��t� �B9���i�u�uW@����1}��*���q�5��u0���C*���9���x�N?:��G)��^&�5	�|��"1a��x&�|�����U�
��o�*�|Kdmf�B�4Z6n@�s����^�G*�L��?*<����~T�J9P�����+������&�J�����&�o����|����m��Mo��m�L�gs�z=���5�lF&&A���V��%k#9����	���>s��+�4�k���������q[[ ml��i6�g�+/�T���Gm�	���>s��+�4�k���������q[[���=*������!?7�;=q�SX��o�=����]7�|���W�koL���lV�v�u������{@�p[nU����b+��w����������g9�����������<������y��O���Q��&?����L��?*}r����<������y��O��T<����~Ty1��4���Q��g���O�����y��\����j~0��G!���R���Y���p�`���+_k�H�UK�������F�G�R�K��r�7j9P����������
����	\�+~Uw�������C�O������Zl��<qO����2p2G���}ev���Ef�T����*s�
I�|�](�@t��I�`����J���O��t{e�������i7��py=���������=/���O��O�!�/��7���(qBN�<����~Ty1��4���R�"��KE�h���b��&w���=j�^#��K���A�8�,��W�v�[��Z�~������O��&?����b��wV���An��=����l$����E���h�?d����C���������.����E���$o�1��4���c��i�W7u�;�mF+e6�3$'���������S��%����%�/���$�����}2F~���a{X����O��&?����s�������Skl�B��$��f`��$��[��{�[+9�hD3�tQ��1� �v���;��6v������&?����L��?*��Y�h/�-E�[XX�mP�U���89�M��1���R?��%��<�2�|1��y�F����O��&?����a����������$�#6�����t���/�o����,aH�+*ns!$���#��M�=�F����O��&?����s��������o��sG�,D��p2p��a�����s�H	f')����|�u,�c�t����'G���<������y��J�����t4���3���y��G���O��L�T�&�WTEfc���^�yQ��4��3X����+LG�
X����?�x��tO��0���?��N.�K����2������W]<"�5M��sK?g�\����
_��z��[@�q�����u�Ye�����$!�����Xi:5���h����n�Q�$�GM��3�1\������O+X���AFo��G�����j�nO�}rx3������_��?��?�U�8WL�����O�d^��������;��?��?��?�U�(�%�%��r�����������.�?��o��j����j�6��u%}��s?�����5B{���A���7bV���"=�P�L�rp:���N+S�����i%�Y��ge����]m�����dl�@=��K�h�
� m�\�D0FDd�����Ur��t=Jint�}�W~��A]=r�?�7����uU�J<��V	�P�fW�<��w4i$���Wq�`�r*b[	��cQ��c�3
�(8�oF��]�m;O�����)����zu&��)��m*M�������#�p3���t����;�Zq��z?C��,Me&����N���������*?i�>���kg{w�E`�a��U�r���?��t��*[�����U������s��<�:s������^)�F7���`.6����T9������<x��U����Z�2T<��OC����s����tX���.�9��k������*K�cv�-%-%X�3��x<Mw,Gk�>�>�b�����9\,h��|�<�WI>��J�����VW.���8�)�������&��[~u��5v���p�s�}g�<Nr��|��Q�����i[Y2���Q!l��Q���1�6�����?
��$`�{u�M�G��Q<���%by��i{
����]��^$���C����rNG��6��c)	YR�v�0���][���������d�v���"�t��>X*2|����F��H9%���
O��FUC��q_�n3]����\������B��^A�l��(��N3�Z:$���+�8��Tg8�mB��S�N�B-J������K�=�i����c�������_H�jV��d;D��������u6�U�!�B��,���t�u-�V��K�wIn��� ������f5����(��qN���j���� �h��9�Tq�{�CV��A���Kwq���Q�c��p���kSR�t+�bv��k{�J#�����~c��U�
6�.a��d
o�x�}�����w3�����������4�>V�P�YL�9-�x�}�}}S�������z��s��W,'R�1��a�A���h��kh��t�������������X�,-�C9e�s�������l����62�#s>��]j����\��jHXW�~~��_TE��W}N8�]:lvS�������_�J���	B6������X�^[�u~��O������==H�����J->MFqw*�H��W�zt��Mv�M�_�����\#f	�#;��=��Zt��:�K�<h��� ��0��>��lj������hM����y�6��v1�<Tp\�\�3XC���ps$BO�z{{��Vt�I��4z��r/�v��;8+�3�r8�zKf��o�����Iqp��yr��+63������
}:����h�o��H�$B�����T���k'H�P�
�)��4�����Cc�!�kP|�����8�B�������p���Z�����������i&�A4k��&��Fp�#��?�����p�\��@�<��	���V��s�+(���8�I�F]�M���5���>�������9i�B$����r�:V�2kG�H��)�������$V�@�qq;@�~s�`���������tVpIq�7��+����A�@*�������/�/:��\:6�<m�	���j7W�U�rE�Mr�6s����������G"����
�+���B��&K<�2F�!a��b���	�]
�3�Vq"J��r����XO>�
�[�&{��1���&f�<�g���KX��&��\I�h��$�he1�V$u����)�I�������h����Av�p���'���p�I��&���$�P��qso1�@D�\c �z�jk�"��N,��������C��T
���S������^;��r��n�eC�
F2Ks�������6���i7�l��q�q��D�����
���8#8������sqt#�1���C/sU�q��>cj�nzd������V5���%�H�S)�m��	�&?�A9��)����C�
�Z]�4��o&��o`�1�)�z%����#J������P�b�}�~����yguaioyp&y��1'��@�5kZ�&�����s�:�9}���r���m+�=��u����o�+�<����Y,���
�<3kAm=��S��H��0w�8�J�Mr���e�����)���Y)`�p=s�)�j��AP���������Hs�$�H���P*�'��xv:�>���tiK���h�G����MA�Q��7���x�
Z��l��}������V)9=�R��'dj�����o�\��~�k����^u���z���m�������5�6�qyr��H����=���"��+�5�J�i��>g��]��#��������;[T�<�
?���y}�j�V�&s��������������|����<�\\N�O�����?��M����]��#p7�����+W%{��H�	B<����}�o�7�+8��^�M)#,���=$����Yzb'��W5��K�Ff������kj��M�������"��eu$�u'��>�O��'ys~�G�-���������ja�JI;�dzr��NMZ*���:��mW��e����5VG
�z��Q�}j�������a�����z�fes�g����}[��������`�ZP%E��A�*����^H/�{�i����#@��sYJ���oCHP�v�����29���xWO��me���������8��V�������/m$K����Y�NB1��9�V�E�����;�2,��9�j���D���&��������������R��RaK
�Z���kt2����1��(_M�W*�T����ju����x��l���������_@*k��^X���RMk+0H ������e�0q�����nk)����G��R����.<7k�ys���H�!b�1�3`w���g�W-w<J�g�xM�����������&���	T&VS��}y�b�	����d�g���\v#�����{5������YA$2Oa[����x�����kh�(�wc����T�A^V"z�k���������|A[?�3Rv$��r���1U4�8�i������o��� p=�K�o������5)�tw���EE�Z��-S�����ps�q�C&�2H�7�L,�@!�z��U�����T}����Rw�:�K���S�EH"��;�
�1�y'�4;��,�-������`3��?\
��\���Q���_���Ff����{��$�o���|���L���I�N��������A<g99�3[kE���\���Q�������uU�H����N}s��Z�S�rz/�G���*9��d�����D3��c%[���EB��z+��7 `���Z?kE���\���Vm&.S8Y��]M��r�G9��,_qk[����>O<������=���rz/�E��!r��K;�7�������&�����
�����<�ym������k��*>�'��TY)J�++9�gx�:~��8�\��y������q���qK���_������T�d4�\����OE���\���U����hZ}��-������<p��TM��)�#Z�������U������k��*9�?��p���21������������_���������U?�����k��*9�������D�*I$�����3Y���>�#G������cR
`�n�{�=�Z�kE���[�/�G:���St����Z1pe$�'9# ����=���O��y^` ���ay�������_������Ts�+��x���mc��L���q�}�jU?����T}�OE���@:KV}J��,Q��'qS��������_�������?h����7�%dS$`�b9Pq�}p*/��AQ}�?.,�]�.APH�i�k��*>�'��T{@��=2�O����U�M�YV(fR�uS�~��������k��*=��Wa�zu��i�	*!���C�d~�t�&������BH������rz/�G���_��hB�ivW�][E)���\����JF�,^�^5�&��a^r:��k��*>�'��T{P�@4�%�7�k�<���c?\w�fY�i�a�����
�xc��qM�\���Q��=���*!��{K�V/���[pzc9�qV�����!��$*��2S�T_k��*>�'��T{P�]�:���x�����yfQ�'�v�5����4�IV�W��@?�'����'��U��\�%���4BC��>>�{Bf�"�c/_�X[7D���a�G��_�^}42+��%���9���c��n?�_��C�`C4�����bTvG�Z5+��O�q{i�+�����WW'���$�L�����-s�6|�W�+zu�No�����dY�Z�m�=~��%�Ip�c������9j���g��_��������k�����pUV�%��=�eq���=9�����6D�����O�������_��Ib����Iu9�����@����_��?���N�����c�+9b"f���s��N����G������
�����}�
�U�O������}������
�UE+�_Z'�y���R.�n?�����
��Z6��Q�����(��Cz���D��I�1�(����_��y����J��������
z�P�|�~c�+��C�X�|�p�d�My����=\<��