Skip to content

Instantly share code, notes, and snippets.

@larsenmtl
Created May 21, 2016 16:57
Show Gist options
  • Save larsenmtl/4c5ebcc9bca489f8f530bd163b35f39b to your computer and use it in GitHub Desktop.
Save larsenmtl/4c5ebcc9bca489f8f530bd163b35f39b to your computer and use it in GitHub Desktop.
Getting hover-interaction and brushing to co-exist
license: cc-by-sa-4.0

Trying to get point hover-interaction and brushing to exist. I have found some existing precedence (bug #1604) for this being a weird problem, particular in relation to how D3's brush is implemented. Previous solutions have suggested drawing points on top and passing the event along to the brush, but this does not handle the case where the brush extent needs to be persistent (in the bigger picture, the scatterplot is linked to other components).

As implemented above, the brush draws fine and information can be recovered from points on hover. However, if the brush is started, dragged, or resized with the mouse starting on a point, strange behavior occurs (e.g. trying to translate an extent by clicking on a point will cause the extent to resize instead).

Here's what I've got: in brushstart() defined in D3.js (line 9192), there are two targets of interest: this (which is the element that brush is called on), and eventTarget (the actual element that was clicked). For the different operations (dragging, resizing, and "redrawing"), this should be the parent brush element (in this case, the svg element), and eventTarget should be the child element that was actually clicked (rect.extent for translating the extent, rect with datum for resizing, and rect.background for redrawing/canceling).

I can't seem to set the eventTarget property within brushstart() appropriately. Any ideas?

forked from yelper's block: Getting hover-interaction and brushing to co-exist

forked from larsenmtl's block: Getting hover-interaction and brushing to co-exist

<!DOCTYPE html>
<meta charset="utf-8">
<style>
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.hidden {
opacity: 0.3;
}
.extent {
fill: #000;
fill-opacity: .125;
stroke: #fff;
}
</style>
<body>
<script src="//d3js.org/d3.v3.js"></script>
<script>
var margin = {top: 20, right: 50, bottom: 30, left: 50},
width = 960 - margin.left - margin.right,
height = 350 - margin.top - margin.bottom;
var x = d3.scale.linear()
.range([0, width])
.domain([0, 10]);
var y = d3.scale.linear()
.range([height, 0])
.domain([0, 10]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var curPt = d3.select('body')
.append('p')
.html("Current point: ")
.append('span')
.attr('id', 'curPt');
var svg = d3.select('body').insert('svg', 'p')
.attr('width', width + margin.left + margin.right)
.attr('height', height + margin.top + margin.bottom)
.append('g')
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,'+height+')')
.call(xAxis);
svg.append('g')
.attr('class', 'y axis')
.call(yAxis);
var brush = d3.svg.brush()
.x(x)
.y(y)
.on("brush", function() {
var e = brush.extent(),
c = svg.selectAll('circle');
c.classed('extent', false);
c.classed('hidden', function(d) {
return e[0][0] > d[0] || d[0] > e[1][0]
|| e[0][1] > d[1] || d[1] > e[1][1];
}
);
})
.on("brushend", function() {
if (brush.empty()) svg.selectAll('circle').classed('hidden', false);
});
svg.call(brush);
var data = d3.range(50).map(function() { return [Math.random() * 10, Math.random() * 10]; });
svg.append('g')
.attr('class', 'points')
.selectAll('circle')
.data(data).enter()
.append('circle')
.attr('cx', function(d) { return x(d[0]); })
.attr('cy', function(d) { return y(d[1]); })
.attr('r', 10)
.style('fill', 'steelblue')
.on('mouseover', function(d) {
curPt.html("[" + d[0] + ", " + d[1] + "]");
})
.on('mouseout', function(d) {
curPt.html("");
})
.on('mousedown', function(d){
var e = brush.extent(),
m = d3.mouse(svg.node()),
p = [x.invert(m[0]), y.invert(m[1])];
if ( brush.empty() ||
(e[0][0] > d[0] || d[0] > e[1][0]
|| e[0][1] > d[1] || d[1] > e[1][1] )
) {
brush.extent([p,p]);
} else {
d3.select(this).classed('extent', true);
}
});
</script>
�PNG

IHDR��}��^tEXtSoftwareAdobe ImageReadyq�e<!iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c014 79.151481, 2013/03/13-12:09:15 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC (Windows)" xmpMM:InstanceID="xmp.iid:EC7089991EA511E69C42F04F364136C1" xmpMM:DocumentID="xmp.did:EC70899A1EA511E69C42F04F364136C1"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:EC7089971EA511E69C42F04F364136C1" stRef:documentID="xmp.did:EC7089981EA511E69C42F04F364136C1"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�^G�_�IDATx���[l[W��yޯ͋m�i+vJ��d� h�n������xb�CG�2-?�;/Ǎ.L+�0�b`�P��I3V�9@9�� .��B2v��U�Ew�IJ+�I�Hۼ����2Kb�(�P�["�I~?P�i/ikq����{-m�R����.� @h� ��� �4@���.v3@gÓW/� �] ��7Ώ�i�}#o%�w����֥�� ���� ��ɋ���J��f|�b K��i+�ʎ��ى�g����6�]��ȳ��̥a�r�>o��O�q��h5 ���X���Á�14`��Co��I�8@�����{��������Os-0K����Uc��W�P t]³���˷_�n���������+��-�= �}���:<0���:��{���)�HL���_� 1Z��?4��h�����F/�ݥ�SC����/޹|�� �K�ҹ��G��+���F��h3\v�A/oH%W,��%�VnChu;>��E��o���\=���c���)����o5���j)��T,�g"�q)��w�F�����i˟�J�L^D�R����d�y�6w��~@�޽�"@�Ή�r3��J�݌��n�f#�"4�"力5w�͇{��@�&@@kK��w��]�J���g���z8�~�8�es�N�`O=#�к'�vV,�����>.�b���^OzJ��u�b��@�����▕�$E�V�ů�N����֓�7�k�v'2ۉ���B8����-&[PXJ���W>W�5˷-������|ƌ:&�ye?a1S���-f�@�,�r�Z�+��vn%@�t�\Ay�� �����*���lԳ
�����e M��nT�YN�Z��ze�Zq�� �?4�Ř �}��Vz���V?7�uf�������tpo��|�DZ����n\�^:�zD���]v��˼�+���逴�h@+ �{��u�-�A�p�i���_Ӽ�aY���h+��wK���U,�g"����m6���1o�h�I�D�Ư��{�6z� m"�+�R9�o:_��f68�&��]vS=E�t~��↫�t[�G��AO' @�ߑ+��lq)����h6���h`�D�4@�� @h�stb���W��9u*K������ő ���p��^���Њ��J��$|�́��KÖ�4}k�o�y-<>Tc��M�1@���@���J�X��/��������,�͍���_����:���PT�d:O�T�Ќ_20|�����W�'F�,�����7��t>�o�sE���|���v��j<�u� zz �����ϣ��g�}#�N�w��}�}�:<0@�x��~�ǥ���,,f
�?��i:
�ͿWo�‰3_�뫵[�Dt��Nj�D��-]vs�3{�1��k�B*�WϏ[~y�fz�!��|��Y�K9ơj`h�/�&f�.�_�:s��(�@�T��_��$�\]fꡁ�ҹb,���%)W�� ���>�Ni�<����<7>~�̀��ݢ�hw3�����x����}.z��t.����N��ؽN�B�V�[h��f��BIA�?��~zX/�+��R)W��*��m�m����X*+K�Ք@k䊥/Bq��g�b�p7��A: P�@h��`lf��v�'# ��H��l�x��p��H���i�G�� '��8mJ��Է��~�Z'@�h�C� u�A�翺#���W��A�����?�_��:x�� �Dz1S��$�ȸ�f��D�
P�`�Lʯ��F��n�?�:�������y��H�����/��Kw4H(*)i��:@F���{�UV�������,����F���u�G;+W,�_����1 `w(HVU�������x������;��
��D���Z�Ӯdz�â�?�~8)�0���t��/�Hʬ~^M�2 ����}�r+��:���]����7�]v^����ΣhPB���{��^�>S����=v��jT��n�V(� ��jn�f6�L\��=N��ˬ���N*nKv�y���^�e=B^�� ��@3d���5�g����j�"`2�yl��R"�PϞ��#�m�c�/���c�dҒ�y8�f���Sm�b���f�� `[zaa�~،�[Y�/fK�byMt��{l�r>��W�>�+@>Z�����o4U�t9����P�c"'�U����RC� ���W"��׹4�F&�4�m�X�t�NU�k�{�;J/ܖ�|��l �����L��t-�sY��wYN=���q�v�R�RRΔ��h� � XMK�]���"�J[պ~��X��P<+>>�h>��8{�׮Wj�s����: 9�j���2�DJ�L�jܗ��e����έh���_�O�k���>����'9 b��쳉d��v��o���� NSr#��#�6�wo=�x��2�����9 "������ݛ.Q��j�q�E�6�9�h� ���[� ��ک��y�ɘa��ǡt��Ȼ�<p�.���f�H��zO��粈x���Dh�Mc'|�ol5�em�~":׮�X/S(O�q�4�I�A�ﶊ��?�����:-n���g� ��ﶌ���S ]�h�<�6�����Q���h���� ���߿��Ҭv5ӳ���;������E���ۃq�K*>��9�й<]����W��r廹����T���J���u��H'��y���a� �+�/���>�.�d�Q��]���q#����Ͷ@���7q{���^�VX�w����F���f�f3a @d��_-�U ��꣰�.�Ui��$!4t,��mP �xin��@��Υx � ��.�9�h��#:TT�l�X�������+����p� @@�z�tM�����L��^9(�I��~ꘇ����K�^��;0zi2A�h��yk���*���_�;[M�����9t.��|k��T��<>7ry���&Zi��j��KN�_ϕƏ~�l�-f��8�[�}c�̀S|�>3���0}�=����*$�_��`��@ 14�X�^ͯnL&Fψ�O�vf�K�h ��n�I�����h"�ׅ�ED�{)ˆb�'��V�����]V���򊳍7;qfh<q�ڵsى��3�#}�wK۬O� ��v&߽�PV��^98�w�u@�ڳ�Ɗ�hiͺ��o���ٷ_v�L��"=@kQ�U93K��I�@����[� ��������㷾; �v�����uf�~�}�d/=��9����� }׮-U>'n����O,�Co�[�p��P��9>��~��f��V�^�lfA:%�훼�}9|3six����������h��h����'�xv:,�|��k��,����^:��6МY8��g���s�cNM�ֵ�7���{�HD�7�.U�e5�Xi�Nͩ�v�\�u�{u�%����n ML�a;moi7�3��VJPvB tJ8ڛ�.� @h� ��� �4@���.��m�N���|:_4�f��f6p4���p"�$��r�5_w��>��$ �7������b���w�RN|���"Fsd��t:W�"/�+�7��I )7��4�)�ٽ�4���L0��J����m�,�6���lF[�TԸ[�ޱb���`<W(չ��n�f�v�8���j��Η&n��� �k5����o�(�g��3tE[�A�PL�?=k��9b���~����to��,d
�wo>|�y���.@��d:Id䶚�$��2��N�E$�ED�rˏ�F'n��1@�蘤d,�T������u-Un|,#���`�~tb�V�������Mܞ�J��W>Q�����43�r�b)��ǥ��M 'g
��F�=�j,RK�L ����J�L~ͤ��V��isw��"��g�5��N�}t���c*h��y.&m���La1�ಛ�t3�7��XVa�h����!��jT֐e�U�X*�o��Wĥ\`6JQָ��5����C�����1z-ܼ?Rqv(M�h�PL����T�0 !h����r^�W����_�62�m�鰚��봌@���ɼ�\1��7�8�cW��j�{���49@[�F��O�+1ymjt�������˾��p��:Z�(�������[�nzU~��� ���#�K�yl��ɿ�pO����W�����#�+��p�N�L�a3с-䓯��x�zßH�~����H�����*��[:?k z������ ��0�Q/7�z(^�&��k4�����g�"=�^d{��m>���I�6c�����1��I��&�hţX��%
�����+6Ӌ��[���㴾�wQ��*���`.��M~r�+mW���B��O���;����N������ٓ�6�����z���]�A��l�?�s��e6npF�� �z�}��BXu�hS*W��C�WG��O�)"�[�}�vh;�KD᱓��o?�w�#��-��nL��_��5�Je}�n�^x�6�!rU:WLf
�VDg*eU}�ncE.�Tn���f��}z?����
�G{�o�r�����-�x������<@����-����T��a���籋0MzV9�� v3����I�!�ɕ�C�|i;�T��w~�_#�{�L�ڳo�t�� ��1����|���hf�V�+���6����U����aҿ���`,+��7*埤
~��h�]��A7���M~�Rv�A��*��N�:h�\3�ƒ�H;3���4y�� Pu�� _�E�C �A���<N�j�d�j�u�8���0kLv�W�5x�6Y�z��ɼU.�R>�\]i4P��c��7�J�� �ۦ %:@��`6�_�\�-�2l&Ë�o��o��~���]�h��U��fO,�{�$�[7��i�N����ݭA� |�.�d��R]���rw-����fy�:��`6�Z*@+Ef�@�VKh'2�L^d��tif��f2�d�uZ �j<v���a��e3��� ��>����\�$��f�s1i1SX�l8W(ť����V2����7v��*���c��=T�л�X*O�q�����t�oݝKȝ����+ֿ���t��~� @��M���R��-Ét(�� �;�c;�gK�����An캎����r��2�c��I���[`g�8��t߽����ޯ�>��� Pm�RQ�ni�c�R90�Q��!�qi*b�)�,�`^XFWԐΗ�ŏ�>Y��`���wY:�{�,�*<Y^[��p�[�g��3tE[���'�Y��Y�|ga2S`�`lj��#N�Q=�<�w3]�j�"����`,�)�W��œ�͗��t�"��M:WTܐ 4�8�z4�z�C��w}t7��[Q� ><}|�����W @��l���a2��hx7С���7��\c�L������ŷ^��_��έ�]��5��7��5�I�vz^1���yD���>�:�u�znt*�W�黥��F�E��va3+,_�[X�ЉDtV0�<�q(�/�{ @��U�tΊ�7--L*h�
�x���(����7-Mq1�t�*�ۂ���m�=O��nfЙdU?�HC��:G�Y����ts�:P:_�(-eN���]� z�Gƌ�����7�3mg:g����A�n#^��{�l9m6��:6����߫p1��B��V�]��>�˾���=N� ~����.�9��6��p˽���?�'�+J�b�PZ^�{i� ��`���x@�`��VV����{ @�'��ΰa�7X��g�aR�lЧ���t�=�J8@��N�Z��M�ﵟ:��@��fҟ=�[��"j�=��@�ަD��ű�>���$}@ �;~��s[�(6{��o�-i+�J�����3g.;�/_��~�i�M�1����������t��e�#R0�I��6�������yw;�P��w���_�.�R��ɝ�g��3'�m�.���������&�|���\������+�6�ur0�����X\�]VF� ��:�^�����O��s�� @��t�4q;.��l��=v��P44ZNSj����^��c}�F�Zm���[ zh[?���[�������>����72�9��:wu*�{�y镑K�hG��<
Ʋun�g��l�N���f�hFGG�ot�����ĭU Z� ЊDt����>����:��,�ͪ����a͝�!��:<0��J�K
Z�M�U���Ah@+i�R�Cc=�'���&³��آQ�X�k�=K��M�2_?�����\�\,W�\Q���=]��^��#�:練��oU(��Q���2|�R߳�.�r�o\�����ơ9�H����1�uT|E�������uZ �ؾt�(�a�PrX�f��l��) 6�ƵZF�$U���/��>����{k���K�7l�� tR��h�F��>16:���9���č��� 'ҡ�T*/�o�������LA|���q���<fP�����r+_�[�W\�y�6��ށ}"2�ۡ��+7#d
���-.�������1�,���5,��N�����������H�5ڋ$�����:��u�A��b�fǕ�VBʉ�3���9}M~��̆���W�T�Z�tD��z�C�^�(*�~�?yT@�PEQ�Ld�vz^Q��aC�>�,=��r���';���'�:ӳ曊�������F7�l;C��^;�*�]�X*����-�0��y�Pq����{�<x��+�:�[D�˻�T4��q�"��Ɨ�G{��`��� �>"��Dd߶?=�P,�y�P����r�y�R�r?�섞y_��%+��g
�O��7����=]&����x![�kP^�.��F=Zr�ToWm�nQ�j�� ]�'�|ĥ��z���
@�+���d}5��X�bI\h)hK�ڻg�O6�t����7��:�[�,�?E���'e$3 -eBJ�R�r��J�n�=��]�!��s��r�J�����sp�\i�
��L6�RnU�d��e|땃�.S=�yyK#�+����ķz�VA �`2�*!jIf��+,·�fjמ�-���<����N��=��~����5n7�;�N�r� ���E�`4�g�������,~�U�
�ꁎ�6�aQQ5sG�yVӢ�B��>��j��(k*�u���eݺMz��v� K�̷2k�����w�k��@��<�q(*�z%�h>]��Qw�O}���-��ȥ'��F�A���o�+\�h���W�\u���r�����.v�a,�g}.��.+���Η��y����6e
�wo>�w���1�N �v�8�f4tXM<x�uhY�m_$R��
�8���"w*�4c�ҳ8�������{ξ��{�a=�=��?��ՏO?dzͷ�Ya���m�}Z�qZ)�@mf��f2(:&�m�9c'{���7�豖�4C\'��O�6L�ճ����p�p�Σ��J�J�=��� ���C���FF��m�C=���&�rN\Ե}��L��'{���N�����P��{�Ϳ{�a�PkN���Wn�x�j�e���F���n�6�>��@|xw{��b�b���+�ZK\�)��-j�����7]�T�bK��Э����k|z?�84�ʆ����<]�� Ђ�i�ށ=[�C�L���x~1�8qmVg��8����s��9��y~�g�Q������ϵ�z��|�������ۙ!��P6��g�:4�Z*��]f��3Y�K/�����vƞ!��>W8�E�3��k�#^G֋���ן��n4���*��֨��L�#{m��v{��G{Z�h���µ+7�ۋVc�*[�h��Qz+�w˽R��C����?�'W,I٢�d��j4�t"�8�F�I�QC��Y^���e~�(���ߍ�f�~o�EVQ�Y=������+����~� �"q��m,K�F��o�Ao�ҧ�s��\<<���J\��O�Wh�b�f2P�^��t��xK���ؽ'oYq� %X�� 4�
�~hc�mTCF�<�-~��g���@QR ���?���;ƭH���m\�*_cP�hmei ��.��U%�/&��$�2������sY���A5ghױV�� ��@���;o�]`��֡��&>E���/NG��� ��{�gO�HP�����1ٓ:��$�h�ph+���(�o�A�|��������&I����~�C*$���jf���Bk<� *5��V��đ���G��z�_\�����ֽR#�Lo �o��o����i @�v�>�_� ��Z�ޖ���E���d��H4U�h���L����z���i��+�9hؙ��%QΞ쵙Zx~�t�4!s��L�|�v��*��H��o
����_�KwaWp!�6t��~����wճ��<�~��~�F��f�# C͗���`<�2=���~�U|�� 4�<������s�T~�m�o�A� )�����f"%��h���1P�&�p$��i�121K�h4 ���W�y��S��|����G||"囜��&#=CU�7���T&���D6��͗��t�T}#��k��,-]���./��"��h���s@g�ĵ��q��v/I��S���VK���F�é`,�R���c1z𠃣h�&�p&.�}vh`���[a:v�ܵ'V����M��\�������շ�N/O\���~�yz h�=x>�����1v`��$5wT�^D���'��<���?_�^���}T��8��B�Z�M�E�R�4Q�j�-N����k��sg. �^�U�s�{��_�W�Fݩ���v��|_ICJi�,L�9�8b߽��ǧ�k��~@������̅KC�S���]�@�����?�z�ѾL�,��j��Nq�]|Q�\�A��j��+rljJ�:�6� ���oh�W*���hrX�x˥�E��鯿
�j��I���AYM�򛠙&nω�6YM�|/"�u@{�Dxvlh�����<�]f�ڕ�C"p��O�-�*LZ}�򶿢Sv���Qzh���������� ���@P �T�{^-S(O����� m]Z$��J�j�+^Z����� �������˳C.;�x�q����̽����:3�_�ƭ��^�߿�܉#� ���qV�s�q�2 �e�����t6���2��1D�Qg �Yd�@0�e�_W���ﲈ�s�`��ν��A�Q�"@@�%�/�=�w���<����eT��f��h8]�����P�u+�(~�um�� @@#=��۲��]
C��E����IE�PwX�-VE� n�x@���(X���&P�n��ܪ]m @@�P���.+���9u�#w��^9��8�h�]� ���nz 5v���B�W�y��hm�RQ�niU�c��`^XFW�`,�e�q�o���]��z��"��?�Z^z�;�z� ]�F��
W> �^W�Z�qꘇ�R�=�D��+�h�ݪ����І�Y�����C��2V�y���^9��û��wm�⏸;�"� 4h�$�<�G�m��[��������'{��۔Η�o��b�'R~yiIku�I:� 4h줟����o��,�?������'|�Y%m����U,�ÉL�XJ�R�(��m5��F�Q�u����|x7Zgz�,�,(�_Nd�{i���~���#.�L�o�R��H�T�ΰ�b� >�'O���=���ZF4U���j"�s��^�;P4�3OR���@���b�<Y�K��H���c�n���yh �}6�)�e����ߟ~N�����R ���Z�ez^1�‰4=��{IA� g����X*Wgz����r�� �r�Ta�9���莰\���դT��'9n�{"�� ���7Nd��5X��L!��s�jM�U<t @����\uJ�:���]�W�`e
z�sp�������wY�@z�R9�4+��� m5陽@�ޘA�~@;{��KA�G�t��)�I�:2,I�ߩc�~�����n˛/��~�|�^X�f�E`wtt�[ �ʠ�f��Z��������g�;�Ӡf�X�����7*};ό�e��e|�g�>�͠x ��4�
D�8{�����-3�դ�̿5�~��X��P<+><}|�����Q@h+��wKی+�����J�������i!�N��L����Lq���
xq0/,���|i��\ ��H�^��>F�Z�T������u��{�o�r�f��i�n�2�g�
t�h!��ߝKԿ�٨����VN�É��k$�8����2�;�П|��J���=]&��2x����P������˝_>�<{�b$4��K6S��>������n�sK(���� �����������|���S ������$�3�th ލN˹Y�������h�͎����3W�j���~h_ז����c�N�9h�/�+f����q)'6�Y�����������@Dn�+�ҬH�O��N^:?qG}��u�^<�1���n~��"=��b�<I��u���tu��~<S(�m%�LG��h�f�pd'/O�� in��#lfË���t>�)�%)[�����a51�s �$I�R���B(*�<v��ڬ��+hH�:��:7:{K��ᰙfni�\1���m5����� ��@]�R^Y�{�4�4L�J8Wo �b�U4V,�S�0�.�{�F�t4C�-��o���x�\QYC)G��:V�w��=Vzh�=;19p~x���]�
t^a�V���q���w1f�x���z��_�V�����Wq@��8���ux`���u%Wl9�4����7�݌@-��ƿM��|C��/�+��!:;��\��u[Y����{h���Z4�4f��zAf*�B"+�������.4��l7s��Fc'{e�J�w[D��߀�Ҫ��X��R r�R���Vz���C���-�e<@jM�������{�{�L��A%��7ֳ���?����o=�ڳ�y�h��PT���[��о.��ָ]"@�܇w���� &[������z~/]�]�e'> ՞��k?{�Džh@����Ϯ�j|��j���U+�/�{�au�y�P�c?{�PU�~��X�u�I�t�w�C�A�&@Ci*������l��9��7Z�����>�Y?�A:1�~��a��J܋H�T![Zk���]N4�h�b���I�q��۝=N��m7�~+-Z�~���_'����gm&=�� f�@{��p��{�l8����^g߾�&�g���;��O�B(���s@'� �m��e��)W����)�M���FOq�^9�$�� B3�+~L*k& �޿�qBr�7V *m @@ �3�>I��=@�h�ɡ8#�4����+kH4� ��]� ��� ���[a�1 @�@G{�V�k
�&��;�=@��tO�/��h"�{4�Nt�G֭�bcф~�t��'|uΪ��2���1@��R��q��*ݱ&�K�|)�)��z;�Q�,q0/,�+T���?������<���ɯ����,y��hK25*��q)?�r�Қou[�>��a3�K��x����<
Ʋ����8�I�w[Dt>�c���1�:�\qz~a}t^�������*�n�T��ʷ�e�~A��t{cZu���P�T���!�H/f��N��*v`Lj�Lnl���"�Ryz~a��\%�3�E: �ݹB=��r�T�~ @w�d:Id䶚�$��2�@���)(hU*Wҹ"�@����of���)Hf�݉�|c�b�h�� Љ�K�^��;0z9������εn�q�f:�z5;zu*\���\�4Iǯc3��j Ж��s�ޥϜ��F#��=O� @�cv*��s#Nz~-�ݬ��^�uXYy�Mt"p��Eͅ���z���i���p�à��y������+�ɵ���-t�Z>�=!��_��e7����@35o��;z����������\���"h�:z5����]�tf��pO7G0@��%�й˗�RN|g&��:�x8l��}.�ko�㴾�wQ��|͟����� x��pS6�A�㸔��I��9l&á}]"g�Q�S�×. S]�Q���9,�#�+K�d�`6���`�5�`jb�o���;0|�F�ʼn�>:�>6�A�f��.�4�@ ��,8i��+��f��������gY�΋��� �r�R:W���@7J�T����\AD�R����n��n6z]V�AOPۇw��X&�*LG$�������G\�.�Ů���!b��L$������>���q�uJ8@�`,{�v(�n�]�Qw���S��U��S�A�&@�P,�g"�q)���Vc��=��L�P۽��f2������f�������@D<�7�ﱿ��A�I�o�� �hf/F�:7v������($@X����G�o�t@�� �&߽��΍E���k���d�@�d:_z�R.�ʹ��t�]O��X&�.֥2S�e�{��y$>6�����ɳ��;x��L:_��q����#҇w���y�:�[�R�ƣE��f"I��C!�ޢ���X&�/��A䕉ۡ@pqM(�~2��;�k�X�O�U5�א)�߽���_:@rj3�綬�X{��|����B�[R2SX����J�ʓ�,7mI���w"��Қ@��c?��G ���`��ǡyE���^3�z��y�ez^��g���h����m�2☔�J��}��K�@4 �;F�L�L �%��D]O�#һ7�{�A:_��=��~B�F:_�,�r�t�Ie�t"6Sk�^r<��d����v#vPT�+<r�Yz薔�(|���v��Η~r��-����?��U���;�H�?�Ti�t���mN+�T��|]�����ԉOBr�D���� �R�tF3�Эy�T��%4�^&nυ�����P���ûџ�ff���)z�`tu������m����{���M�@�[����:��G ��U� �v�PE����r͙B�M�5�盆���ā�lF巫ZMD��$��p"�J�C|^,����p��-q*y�0�(mB� \U"@�͙��û�O���߾�t@z%�6���`,�+m@<�ʪ�=]&��M������w����l8�� ������]7+=�V����$w���ܢM�"��h+ߩ�nh��vj���#l�^��g�aW[,� �Fפ�R����X(�;9�ݠ8s�� �@5�V�+��d�{��l�Z�.� �y��׮�`I�f/~9�P*o���\L����E�n6��{�V��\v3+mCq�pC��
e5�U!:]h`��vj0��h�.����\z�8��6$k�d)Wd�� |n�Y�(�^�=��M�mC�<Q��(��Oۤ��w)�����
�-�0;�K���<��]��l���~��p��E��v�������v&�Zy뷡k�� �,
��}�;��W�yX�r3����<I�u�fs�L/t�L[�5���c�N�7�6��Dބ
�h*�����<{�'�ZBd�S�<{�Df?~��z������w RV�X��+2�z�̆�k�C�o��w��M_mF�mpMB��-z+?����)�V���rF+�B�o�쫛_UC���鎢lv] k$ׁ��o_��m�`2S��"X;�F�I�x�*'r��t�ӱ5��Wq���its*MO�b�z&�]��K���]ٖ�G\�x6��W����M>�E�g�6��L+�I$o��л׹z�8�8��Q@}��yY��SĹ�ꋥ�T��մ�"�����+��j\��K��'|���_�����Lŭ歫նT�k��vҩcY�ɞ.S�ކV6�]�,E�&�W>�w����G\�+OD�;�<Kzj�lcrt3�oE�z�)�V�;(���etE���
?��W�rXM��^9ش��t�����Ua��i� <���i.�n�Y�������*�,yf��_>R��X����kcv��������[��k��ןkf)�ͤ?{�WV��������\�m�K�?Iπ,�V��Ґ� ��;��W�� 羰���ҁ])B1��W�����s�вV%9�eg�ݭQ�4%�Z�P]F��k��,��jZ ��}����c'{��Pl���q2����Ҕ\�r��j���6��e75a1�/B�Ō�E��:�`��U���8ֿ�Y����-�������� l3@-��-J�̩l7�8D�n�n�����X��9�w`���)@'&/����=��7�'.�r�A�T����*�/�*|r?�e��lT*X�:�ۺ4#��r�9Ws�A*��ݖ7���>Oc��y��>x�XO��qZ��us��'@�N��p&�&� ��=��[�4��������@$S�x1���[�l��T~�`��l���ф �+�5j9�F�����;���u�ox��4L?;>���� h�N��
Wn����,��jԝ�Sߖ��(�ɗ�|����uh�Ń�F�r�D:�ʭ��6���f����=�Ҕ����������wo=Ʋ[�B�ݛ���gt�l=���L$9��lt��:m�C|�����z��k��F"1�364@���r��#Y�u��PZ΢BuZ��Ų�VR���M�+�� �3鹥t�ֵ����L�v���"@�j�
r��#�4�K��#z3�[o��|��ݯj��u��nTY������7���dh�/��v9q��uSح�_� ��g�6��l%������d:���/�J�n��ú�� ��:@g�oxϝ����h����4�7Et�y��+|g�=.�斗<��`���t͑��<�;7T-}��^�|#A�����ռu5��&��X
�U���+�����%֤��r�����?.T�倊tv������/[�V8[����j-B�:��Q��(V�!�Q�tX2'���B8��r����C0N�VW�� �OV�k� �l�߭|j/O���.��4߈h�k�>�F�P
�$'h����*�c�N��8@[ v��f2�xr�X
E��H"�L�9������+Hn��"��d�%vĻ��?x�*�+r[�<Z�p"@��w��~�I��t�;c��{d '��퍨�H�̋�+���&@����2�=�+�I��~꘧A�����s[�[ D� ���yv~\��ͦ��:y�� t�A�C|Թ�դ?{�����ﰼx��m5n���dx��F����d�Eŷf� @;�{��q�e��n�� ������1���\�t^DR�h�5"7W�t�L���E��� @�P&_ʗʙ|Yʗ�F�Ũ�����A�ͤ���碩�g�8}|��h�^���Ь�!�6��nВ.h-L�|a��. O�Rtų�·�6I�o�;M��i�xƊ�=��~$�N��`,���*����V�& <��Zb!�γ��JE���Z�Jw P@̹e��q)�(�)d��F6�^�W|n�A��P�?�3�L�m�;,��d��y��3��_�⋊����{�y�Ѐ*����b�����B�X��t6��n6(Q?j&��6��z��p�c���v��j����� ��Z���R�/���u�1+� 4V��� �>=�P�dF�����J8�~�8Źh��gUub�����H,� �F7{�+�+_�/��:g��ՙ���ɬ�E_��R��\Lb
[`��n��E� "@c�� ��+��x-Bv=:�dM�O���([�xZ�{�@�2�u��\�:f�9�{�0�h1"���Z��"U�Dko�L�#[�w��L$�c�Hf�
Z)^} hK"��w�8�5���<� #��.��~X^r�K�p"]c �'�Y�!�"�3�]W,�KJW�W�͟vPo�����u��昔��+Ss�L���m5�sX�%4�zD��P%K(*��RVa1�D��
l��H<�����s�Kf+m %��K��L�Y*W��|� �lgxj�+��-��� ���L�ځⰻY��z�4���@'x�'��p� ��b��x�w���Y� �n;uD� �@�Z�vj=��$�����Q�>q�l Y��R�� �Phď��f�T�׭dMA���;0�@��Uq����tjO�˦��uZ��J��&Y��U�}{�� @�1�ԉҹbu�_)W���f�N8f}�Ev�A�}���v��;�n�y�f���Q��a��&��u3�4v>:�D�Ҫ�ە �E�:��`�qW8���I�랈˞YA���{��%d�@������� �;�G�jmy)(^�Dzf=͡�T�8_�V��ki����b�.��pO7��'"�� ��A�����D���T=?M��>=T�X*�D�R�Ƶ_��=�_�����
f��n6pKtG���B���j���E�j~D�C0^�|v��u�Yn�L�g-���[^8劥����R�8BD� [��b�ܓd6�/���P4t�.��K�j<M��usc"t�y���D��o�����ߚLd����z2��H��OR�poY�#���pr��GV[�AW����w$Ԋ�6K����
��ws�t��1�7��u���B����r�m�??�"��f���`��&�Χ�K��&��(��P�]o�*BQ�����Z�75��ꛋ]\.Rc ��:��6q���ȵ�Q/���/�X�l��y���"�%Ӆ�o�v[�v�Q��:0L��NdV�F�CDW����E��˲�f�@�� ��3�x����z��x�4� {��腉��74B�7����Dt+��M�D�'�Z�ćֽn{�M ᰙ�c�շ�ţ��sv,����F���be?h�+UY�zU��A7]�Y#F���[�n\�3z��D�����Ѷѻ�J�?��~�t.&��a� ;�� \�N$����I���� "��8���G�r������� H�'=�d�ɝɍ��A�Tn�i�VNZr���ᓔܢyeq���Fe� ⅋�@�"v��1Υ"��D�5��UX��+��=��A�tp�3� @��,�)b6�"�LdQ��\L�H�9���+N��nh�ﰉ.q�O�ݧ]�f�l�|�ް��\��`b��b�ǴѶs���Z�*q�*�9U��:<0;��jl~��M�8%�-�+��CkpX��s�Lv(�h���qZ�K�s�D�n<�Iy鎥�e?�R��F=S�h�@8<��dy���]f�]�b�� �s7p��m� Bt��A��),����Ck�[ ���'/j����;�_�}V{�j��o��=ݲ"���� b1蕗�og|�F��s���;��BQY��j����ƿ�p���Z�����{��gV ���8��3�{���h��~���#^������q��!2� ~W��m5�xȽ���+���ޝ�PP��|��R�h�W�^9�j�VG:�������K�RN�W��5���t،��p�L�T�`�;�~�F��l����p��;��r|{�Xz������`9�*�:��j�Lf��t�f6��)!�H?x���D��.N`�<<����Ї�u5�� �q�Tn&��q�w[�G��������32;����&[^q}�ƪ76�A Jk��z:_�Jk������!4�"W,}� Vg�@��ڷ����K�$����^���`��L��\1W,��� ��� }?��=-���c'�5�H� ""'3y Dt����_�͸��u5[�Mz��� ��M�D:�6��� ��{�k�V���m�0�h�Huh3�)���ru���P��󵫜��c�g��� t���V&4�M���y�΅@�
E�:ӳP*Wf"�th�C�sŹ�$�I\��R9�@�ЉBQIA��H���t�d&��U�\)���� ��䊥:��Y/�+ҁ4��"e��ज� @h�nQ�B ���:�v��N�� �Uu[�
Z�uZ�t�6I�K�\Q�ſ�r�n6���A簙x���|n�ݹ��V;] @��PTZ�������f�����d�2��i�$2�7��N]�p�J�����nk�ҹ�L$)՜�V���<v�:Y�T�C0�+���X<e^<�~�6 �"=�׹HD��ڷ���E�R:_�� ��@m��y?��g���F�����v\�زX����z���b[��Վ�: Dn~�$��� ���L!)Te}�Ӛ�L��n�s�1���z�<�L~̀W�T��e��@�n^���6d6�_�v6�R��H��(8E�P�\��x![}�D\���ʹ4�x�̋v�e7����f�b���3O��C��v�ZD���얛�u�C���9,��!��Ss��7)��%���i�:�յ]:WT�0����>��zҳP*W<^�K��1Y��;Y���L$I���pɧ��5-y�!�p(*��D�:�����T..��Q{��"���г7Ώ�i�}#o%�+�`d����w@��:g�X��)����"q�U0�Id��<�� ��ɋ���J��f|�b ې'gYy���iXT4����hs�\Q��ӳd��Cg�٫��x~ȩ�8��_z�ҍF�B;���
��m
�ǿyi�;�9�a&tj�n|����7�MX����� HЊCp�ո��y��;U� �:)>�q�D��٩�4}ާ����i�fw���-
�̒�-(�OcG*�P-�e��
?���˩��O-�&�i@�٠wٕ�]��a��o7�w&s��!�NK'@mvc~�������C�� �~qKZ��}��N/�̥�s�����n��c��>��;�E@�yz�{{4̧� �):���pտ�达74��a��Zű4�<4�W�_/�Y�f����z��&Ë��;�W*^��j|����h�=@��@;�����ӧO��w}��9:�T�WM���y��[S�m$�n��/G����m�.s��^gr=�۱�0�u"�+�(g�R@��[ ʊ1�3���Z�7z��n]�X�Љ���q6���<��k��C�����v�����!;=� ���>��lЋ���V�Ÿ��L�3��2t���Թ>�w��ҍ�AK��ͼT�!R�>�e%I�k�n��׽��N[#~i��4,27w:�8�ʚ7V���3�TH��5����K�� ;�E(^��("�o��y��z��گĹ�n(��c�W�����c7s �*�NT$��bR� �F����u]��R,�g"�q)Wc���߻�9�^ZEҹ���� ��{�V��N��c�R��OR뇢�:��iSP- ��J2�O��R�l�������X*�s���`�8?�-F��T7:{��H�V�7r�V�=��a3U/��ng�#=gÓW/� �] w�!���4:��j���&��YM�N����'µ1�7F&f;�H�^ �)��d���K����֦��^'Β�)>�]�U陓���9u�sN�� ��Cu����� � �J%pA3>r��C�֥�� ����j!� �F.O�+�[㚋/w�1� \����M\�4��T��K�'�t�_���T�n��ufx�8<p�etb2S갃�y5^y*�/��Ƞ��.!F^�5|m�R O� �煎{�8"��dX$�q��k�1��I
Rc>����W^����ߜ427���/�9^�D__�3��������7oƿ� =���ұ���/���?��/~�ot�!���\����2��O4�w7�,��?��a��������q/K������zz���sS��F�Á�14��і��7��Fg�mc�85�ipx��?�o`D��f�¿87ґ�B6019tn�S��� o�9w�V��.�{[��;���P�����N{���j~�4$�S���!���_i���kfX���*q�_��u�+؎��T��t�*2�L%��N��_�V2LgS�W��d+�����+��Le����+ce:�|$����ݝŗ��9g��������X,����,h)��eJ����"�}�����0�o���l�n���ZyǨ��A=������kj*��~��������oն���l�����]�v����C�<�t�y�e��m����^EO�@����7�}$vR�R��6�0=y��[��9T ϟ���׋I̢<����|���bQK�DG��IN�G�i%W���i^+tv��v]ɪ5���]���%�Iꑐ��y([5���㻟K�Z/%�r���ͦ����k[���*"��.?\�G{�-�S �M�A�m��r2�.��y߿�8�|Гv���عd�7E�d�4�c'l��`�MT*%%8
ҹj�����Mh���y�]���.�[i�]����)�i�V��/?eK����m��K恰���2%���p��!�����L���5����)E������d]}������у���|_v�&�f�gSY5y�Ȉ�t)�/&������?�vE�VJ�b�����f��d˚��߻�^���6��d�[��p�hE-o��?���u��T��$�S��Z�s'�V�LNI�g@mF��o��=|�M�L��Z�XO�M �� 1�M'�ן����÷_�x�����Kꗀkԛ�=���\��p��pd+��� �ȷ��UO�%Ho�{!�z���;��x��5t+���^G�����;���N���4�v ��5-���g�{��%�q4 ΟE.��1t�~�{]��N� ��ڝz��Q�N%Q��-e~�t�;��Ȉ����E2z�z��=��*<;@��,���ՠޙ������D�~l��|���Y�n�^%�A��ˣ���H�A�ۍ?�u�?�:\��?��'��O�v��% ͂�-?\��0�74@ �@$� 4@ �@� 4@ �@$� 4@M$� 4@ �@$� 4M�@$� 4@ �@$�4@ �@$� 4@ �@� 4��&��ҪŜ����-Ս��[M�y�u�Z����(��2ֶ'�p��%O=�^ʎr0Y��k��d��e��Qr��g/G� {P�U;����/������Ի���G/_0Y�͊�����Z���&�;~���VVʆ��Y]����yb~^��}W����qJ�TrlG�W���ո\��Da�����ߜ�63B�.��%�������'���;�ˬ������2{gwO[mV�d��e_�N��b�oZ�������'�����ėS�����Idu�|�xd�6+�g��FX���Y� 2����.7gG�Ww��Nu|d���:,|w5��|q}7�ӣ��"/ ���̘_��h_��+j}Y��>�۱��9���Z ���f�&N�������y�>n���������^d}}�:9i�~��M�R�a�0��p���(��x�؂.�![�?oL�q}��~xWNL].[�}i�]���G�n3��Ҟ�_N7�<���ǧ�c�D��7�ۙ���UL�y���s\9s�EL�f�OqJ�tƱ�6 4�{#�m4�-����ԕ�Z����î��F���q�<l���߷�g�Rɦe�R�°�x{��P�S�*s���m:����K�_��/].zv綔�a6W���:�r�u�M����9��6{��u�X�p<���K�b�S9u�;�q�sr�j~F���ڷj�rG��R��;�N���bc�+g����k���)NY��۲�����m܊-��Ot�ڮ(�����/‘����J�����j��1ە\�c֋�J.>�rd�h���f�����n�Ζԝ�o��]y>���YZ%׶�E����yz�Z��è�Zg�U��G�+�0���nfK�=��5��w�����u��ꊪϓ���1�1k�kZ��PV��u��~PL}O�ä�==�����^Ͼ��>%0�����d�H�.w��w]��i�\�pg�=j���H�-&�9Nv<w��W���ԮvK�RzV�HbvM��RU�����磅��Ҙc�Y�/����x��Sڧ3D���-� [���B�lot����� 7\o��9�l����n�ߜ�5�n�1�7'�"�8�_��
�Ǘw7�3�K�`�a�a���୻�VA<�4�;�[�>�X�]ogD!�C|q�:��P cj�_��;̙���y�?���l<v��}���`L�؍h�J� #,�����] _5.�˃œ���ZV�u�_n��q��֏^�x<�v�]�a��#���~���?��$:��3�ut�4�wzp���y��r� y�f�qJ�Tzlǵ'C8�{�L�����V�M�l��s�J�p��/��x��1>���?�����v�7q��v�5;�H)���V�\Q܊�ˉJ�[*�+_i��޿�lھp:���Z%�{:Wm�7�~�tB����Ov���b*����*��?�t �R��^ϱܒyq����W:�ρ���T:�G�N������]5����"�tJ��<uI��-�r��8�m�Y�H�m��F����v3�Z0f����6
����p��D����V��}0J���萝���T̲r��/^�k���^'���X�� ���F��{B�No��<|{vE����R�!��?�\��HM ���������<S��_�<<��Gy�\��jղ_��jE�^�E��;�Wf:_3z޽�3���5���#�+Y53u;��9%-[κ�lV��SZ΂�ĵ���>[�rz=�}��Ε������ӭq��c��M���Ƴa'�cF�/b�.gᾐ�k������b��ט@���V��� F���d�Mo�;�>��\i�p��!-�kgԬ�d�a��ԯy1���M�T̗w��ʳ]z�������j�����?U�oku�b�K=�<�V���б��j1/]��rS�x\���r�g�v��C�Ab�^�&�r:g��JvS�����&Ҙ�|i��4���zӇ����_��/c���x_D�k����ݧqI��=x� tpWZ?ܴw�U�vG ��w��&*��o��
� ?��L�+ħJ6�{7�N��]^ʗ��O��O����jW<l4�f��]�S�[��ٍ���n�t���oW�a�m��Pk��.7�*��R{������|���{˅��i��w��\����[�?�ѳ́��������e��,����Fs2��Z�*ִ���?fx��Z#���}����<�����y��`<q��H���;'��Px�}G{�n���dm"�9[9h8�Z8���u4�<����9:��|��z�j��q���c{��������m�
Ad�6�O�&f=�/7W����.����ó뻇�A����ǹaC����9M�G�a����/�O���GS/��Y��D������'���b�c`������ǀ��s�������Z���J����Z&3�5���
GW3'��KMowq��� ��>�����dqe/�f;:�y�R�������Skį�߰aV��b6�M8{9?r�x"�M�~��Â�n"�oN?}8��'c�7�݋���� �Md}}}6:6�*?z�xcz��<��r�� i���y��O%�v�~�Dx�V���;�������/A�0����>��܀%�3����t����\�����G���}���³��(VH����f����/;_���~�O� �wY����()E-�Un �B�?��6�\�:-�`��� h� �H�h��&H�h� �H����?�����)lIEND�B`�
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment