refactor: use Composer to manage php dependencies #5216

Merged
merged 15 commits into from Jan 1, 2017

Projects

None yet

5 participants

@murrant
Contributor
murrant commented Dec 21, 2016

DO NOT DELETE THIS TEXT

Please note

Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

Build a proper composer.json with required versions
Force php version 5.3.9, so we don't accidentally install unsupported deps.
Add post-autoload-dump to avoid changed files when composer update is run
Run composer dump-autoload --optimize
Update docs
I couldn't think of a good solution for influxdb-php (version 0.1.3 does support php 5.3), so left it on it's own for now.

murrant added some commits Dec 21, 2016
@murrant murrant refactor: Use composer autoloading
Build proper composer.json with required versions
Try to exclude dev-packages so they don't get added
2983c4c
@murrant murrant Update documentation 7b3448d
@murrant murrant Refine composer.json, force php version 5.3.9
Update docs to be more correct
add post-autoload-dump to avoid changed files when composer update is run.
run composer dump-autoload --optimize
cf0f3da
@murrant murrant Fix password hash, silly git submodule business
5f40907
@murrant murrant update scrutinizer.yml ignore
0489b30
@murrant murrant referenced this pull request Dec 22, 2016
Merged

refactor: Move OS definitions into yaml files #5189

2 of 2 tasks complete
@laf
Member
laf commented Dec 22, 2016

I'm assuming that what we're doing here is using composer locally and pushing all the of the files that get included rather than relying on users to have composer installed for each install?

@murrant
Contributor
murrant commented Dec 22, 2016 edited

laf: correct. Use composer to manage dependencies and autoloading, but do not require users to have composer.

It gets a little tricky when you run composer update locally as some files will show modified even though they are "ignored". That is why I added the post-autoload-dump script.

@laf
Member
laf commented Dec 22, 2016

Mind if we merge the yaml pr first? I'm going to rebase that shortly and start looking at this.

@murrant
Contributor
murrant commented Dec 23, 2016 edited

@laf That is just fine with me.
This isn't as big as it seems. But some library versions might change minorly, should have some bugfixes.
Main file is composer.json. Then in init.php we stop using our custom autoloader and just use the composer one. We also clean up some of the includes for jpgraph (in the two billing files) and few other left over library includes.

You ignore any changes in /vendor, /html/lib, and /lib. You may want to test adding a new library as I outlined in the docs to make sure they are correct I went through it a few times, and think it worked out.

Also, influxdb. This might cause conflicts for us down the road, I left it out of composer for now. If it works, it might be a good idea to downgrade to the 0.1.3 version of influxdb-php for now (with php 5.3 support).

@laf
Member
laf commented Dec 23, 2016

Running on my home install now.

With this we have /vendor skipped for lint checks, does "platform": {"php": "5.3.9"} mean it will only allow libraries compatible with that version?

@laf
Member
laf commented Dec 23, 2016

Accurate graphs in billing not working, checking now.

@laf
Member
laf commented Dec 23, 2016

It's output html as well as the png doc:

<br />
<b>Notice</b>:  Undefined index: 95th in <b>/opt/librenms/html/billing-graph.php</b> on line <b>232</b><br />
<br />
<b>Notice</b>:  Undefined index: 95th in <b>/opt/librenms/html/billing-graph.php</b> on line <b>250</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/librenms/includes/common.php</b> on line <b>59</b><br />
�PNG
�

IHDR�¦ú����Ø. IDATx�íÝ{|Tå�øñgn�[îWÃ�$ ���R) �RV�kTê�ýµRíªmW´[JwÕÚ­�¶Òí¾ºþjÁmûóek»¶XÅvÛ \��Å_�1�±1�@HHÈm®Ifæ÷ÇSÏo<3s2�Ìõäó~ùò5sÎ�çû='3�ùÎó�ç�B¡�è�1Ó	R���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t++J¾U�P-�ÜLc-@%ó%ߪU«ê>¡�rr¡ªÆS-�hË|ÉWWW§Z"«;¹JÖx�KÂ7NW¦�cÌ�NàÿSêºä¾¤¡¡a�I�@:ÔÔÔ¤¢Ùl)ùRTïI):v*ÍÍÍ�'N$���D ���@�"���D áJ]OUæ�v��ê=�m�' \æK¾ÈzOã�>ÕÆT} !+�v��má5^du�Ù��k9 ó%_¬j-ju7äc�"ó�;�)BÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�a¨¯¯Ït
���/cr®|òz½B�3gÎd:�ñ¢äË�®®.!D___¦���¯×k0�dærB¶�|«V­
��.Ö6iÍ/Ùd±çñx2�È0øý~�Á088�éD�çv»3���VæL' D´ú­®®.r�ºº:ùÿtå�B��Çh4öööVUUe:�x
�L¦`0èv»�Ng¦Ó�690µ«««¤¤$Ó¹i�ù^¾¨U�ª�OÙFV}ª-Ó�gr��Á¼¼¼@ �éD�Áëõ��F³Ù�£c;eÉ�[�i���2�B¡Lç ħ�¿ÈDZ�ÄÓé×ÐÐ`·ÛS�¹"���L¦x¶���ôx<��e`` °°0u�FH�¨¯¯O>
�����É�ÒÛÛët:Ó°G>�¯¿¿ß`0$1ùX2õ7"P��õöö&ðQM ÐH��@�"���D ��äõzkjjRÑrVìT�sèfü�<ËËËG�Q\ÚÚÚâtæÌ�£Ñ���ßÕÕ�@nñ��!U ¾¾>�Íf±X�K;*Ùa888���®­­­��!�
¥áèÉC×ØØ8eÊ�4�Ji��¹ÝnùÃDb?�eá���@�"���D ,tâÄ��µ�ù��	��ä�+Ün·ÙlV�g6�ø�B!ù��ÕjmjjJJ�½½½��!=�\åô3â���©&ÿ²9:��á|>�ò�����%_ÔÙ\äBUÏ^�V}òB>!�ÑhÌ�ï�r¢N£Ñ(�p8�B�ÎÎÎ�7���ÌfszJ¾P(d0��F£ËåJC8�Ïg0�z{{Ó��)%Ç�ûýþL'���Ì�ì�£E�QWW�^È)�^¬+÷rn�Ï���!�Åb�B��F·Û]VV�é¤�¦t�IEEE]]]��Ç3¦Ñår��yMcÒ��M�|&�ÉívWTT¤:\��¿ÑhÌ­�z��ßïÏ¡_gT2_òE­Ö�\�ëqös¹\²¯L�a2�ÒSí�\��¿jI^^^ssóÄ��#7nkk�BtvvF­	�jPÎ�cµZÓv�B�Á����¹/©à÷û-�K0�t¹\ùùùi���	��V«5=o��¤ËÆ��ú¦Ì{)��%AfóQ466j¬���P*UÉétÊz&rc·Ûm±X¢Þ�¡½½]ù¿Ïç��\��©�l©tÑÈþÕ4TÚÁ`Ðb±�L¦³gϦ:�RÍjµfÉäÆ�"­­­Úß�ä®ÑRòeÏY,��ȪC|R~´¶¶&ÐNr÷HÎ2"{ç¢òù|ª�O�a·ÛÏ�9�Ù�Á`ÈÏÏ�ZͺÝn«Õêv»ûûûC¡�Õj�B��TwôÉ˱äã´]Îg±Xrîî�P�ÓðÈ�ir¥O^7Ünwb§GÃÕØØ800`0�¸{- K£¥ä3�ÍÇ���µ6²|Ò.¨4Öj¯jllTê�©¤¤d`` ê«4��_�bM �@z½½½f³Y5}¨ÏçS¶����%�Õj5��²ËNÑÝÝm³Ù��F£Q�¡,´äì/���Jo§Á`Hõ,�á×"�L¦Tÿ�¦�y²w�1�¹Kù±#
ïR�ëîî�BÄ:=�H¢ÖÖV³Ù\PP`4�Óv©��t�-%_AA��s2Rss³Á`�¯[ÚÛÛ
�Csss�Û�¿Pù�ä*�ÉTRRRRR���Ãáøøã�UÛkäàõz­Vë�#'ã_���l6�Á`Pn*ÐØØ��KJJä÷-å�
*���.�Kù%Þëõ�B!YòE�íììì�����Åçó)½���!Õ�\�����Õb±¤ºç-���_±)¿¼"�Éix��LÚ�f===F£Q~�Màç­xPL��×ë-((�B�Íf~Û�tixӷĺ#BNL ";ú&L��¾Ðår��A»Ý�ÞÁåv»ív»×ë��x#êöá/�£�£®Ò¸�³��"<=��|>�Ùlv8�Qïù¦�CÔUòün±Xl6[wwwII�üÁOv�)U_Ô�OnÐ×××ØØh·Ûûûû�BNf¨úRUXX(�p:�ýýýÊ�IÃÌ�~¿ßl6Ë˱Ò0aLx§¨ÅbÉ¡»/BENÃ#�0�L|�J'åC$�<���JÖ�}}}ò«êpÉ�¨tuuEþ��*ò_|ù8//�߶]�^/_Ý'�Ç"Gê=�££ïÌ�3v»]�´�Ã�åÿ­VkÔ�Õ"·WÈÆå¨EÕ*¥Míô��@OOÏ�9���ù�G{ädÔ�¢®êíí�å�Íf��B^¯WùÁO�_����¢&/G¨���ð�µ$�ªME�oï��ª�R©cS$�*áìv{(�â�¤�%§á�B�L¦ì�lI÷äµ¾Ê�@£�ù¾¾¾�\�ìv»¹s& ºøÄ'ÿÐSõ�ú�ÈM�Âï��[·ÅSuôµ··��FY�Y,�ÎÎÎüü|eð¡Õjõûýííí����Û+�+�\�«�6µ���wvvz<�¥©È�Z[[�kÒ"�ü��9�+�ÈU��G�Å�kO�>�YÝÅóCxb¿µK��£§§§³³³¿¿ßëõ�Íf§ÓYVVÖÚÚêõzív{uuugg§Ûí����Oå*eKíöC¡�Ùl�¯ùë>ípr�¹PÕl¬�B¡Pø_<¼#4²�x�'�ÿ*
ª�9äö²�:ÖÁ�n��Û�_Aª�ú��¿Ípá�ÖxÞâ�i�Ìf³Ïç�ú�×8�ò�­üéã�Ó�ù��ò¾�9­··7üâaùóVYYYø
?åÍ3�îz�c˹Î�£\x��$g8�_uâ¹Å.���ùûò¥SAA�j¨¡RÉ8�Ne��|(�tuu�÷�EÝ^át:c­RÚÔ&k�@  �C�#'�µJ)ùòó󻺺FR¼%LÞÞÝl6���x<�¾¾¾���ùTÖKF£Ñb±���ȧª-�l_£�Õ�'·��#Û���ªÈ�íDm$�á�Å¿J�ê`�¹½¼¥a¬�?Ü�4¶7��¿/D}�Äßf8¥�ð!Óñ¼��Û{Dþŵߴ��¡¸¸x¸oZí¿¸�B���-ä4�Ë�~��ùóVOO�ü¥fÊ�)���F£q$�ÐB¡��aÎx]�f^¯WuÊ5�L.�Kþ¢üÚ�©ô$K"%�ìÙ���¼|RN£·*êªø·�Z�& ²ÜJ,Pb«�\�RJh9U¡:&áOU[&F;�ÆÂX9ĺ	Ä�kéÈ�+uKÂ-ÇùB�Ë%wSãà�7�¨ÛG=t�o�xÚ�R�;�ëý©Ý�Ü£ÄÞ´±2éîîöù|:.ùT=xòç-yüeÕ'�re�Zä°ù¨½�ÊÂÞÞ^9\Âd21¶�£VSSSägÇb±x½ÞÆÆFå÷)UÉG×����ìåË­2�ôÄh4êøb�y��j¾(Õ�À]]]²r���¦hmm5����üñäÉ���òÛ­ü¶êv»eûyyy��')¿��Ù/¼Z�s�D¾ùågò��9Q�,�Ó�,�dJ°äSMÝI��ic2�t\òõõõEÞ�TEùÒ©B�_+Ǫõõõ)�o+ßn��Gcc£Á`�£Ùm6�×ëõù|)Ù� �(×0O�2E^��«x�_�>¶�z�È]#�¾��f&�i`` ÓY¤�×ëU®.�����¾D��¢   »»»§§Çãñ��»���J����îînƪA÷äűrh´¼Z8�WÉ+iåU¯Ô{@î�]Ó·��DÖ9z�
�â/ùä 4Õ$7Ê�S9
rä·[ÕS³Ù���OÕ�}Sî�;¬ÊM�í�3W¥&/é0¼ûòIªé[é$¯C�¼Ñ¨�$0ÆRãþ�rm��úĺ]gggg�oã©ÑTcc£êV«#Ì¡µµuX¯�ÛÇÊAc�rB �Pnò4,ñ��d­��v�O_ÎÇ8OH'�ÁàóùÂo°©�ýýý�}+M�ðªOÞ�ñøñãÁ`P¹9�jû¨·O��Ã�QV¹ÝîXMÉ«¤zzzúúú&M��Þ²F�Qo�ªÜ
Rvoª^¥�³Ü^ÉA#½ø�)²�r×�£P�7iHz�£Ð��Æ�zøT¦³��\Ì9Ü´ïOËéü��%_�(��ò¦�V«UöoDí��zûÄðq¤ªUòî�Q��/)**
¯Ö�Ì!êíC�»A*-G¦§�³��Fz��¥¨¨(ÎûÍ"K(�;��BI�±�
0�÷ÿá~�Ýñ£Ý?ºwù½�Î%^¿{÷w�ù��þüÒ]_Ü�é\�ñrýË��å¡ÿyè¡�x(Ó¹#e4�=�O¦³H¾ÁÁÁ!§ëL�!o�ª±e¬UÊm'5.��Ó��7�Õöªû[F¾J{�^x�QW¹ÝîÎÎÎ����ÉÔßß���§Ñ�²DÂ�;�è@"ÿ²Ê�;�\×��='÷Ì�:{÷�Ý�Nd�v�´{êø©B��þç¡Lç��½�Û[QZ±§uO¦���Àd2ér��ßïÏ�����Ngqqq~~~0�liiijjêèèÈtR�B(�Êt
2&[þe�¬�µ�ät�ùÖñ·zúznX~ñ¦c�Îe��û�§��ú�/ÿàgû�vÝϯKV³c���¬¦´ýmàos¦Î9öqú�yÚv
£�ÉdÒå�¸`0HÉ�+,����jµZ].WcccKKK___¦óBtÁ`�^>`ÔÊ��Y£VwªþÃÈ%¹ëñW�_8káÔê©B�×�_Ït:ñjio�5q��âÅG^´UØ�RÏ\÷óëJ�J�ÝõèÈ��RK{KÍ��é�§§§�rÛ�Û�vÇ�ÏÝ��X��,��.K>!�¼«�r�Íf+*****�Bttt|üñÇmmmº�Q6§Qò�£�!±/
I¼�O©å�v"�k,�ò¾ð


ãÇ�·Ùí#I�B�_´û�¶µµUUU¥!:��¤ã@'N�¨©©IEË	þ��Ä)[FÒÔ�õ�ÔÑÑ1~�øhÓG	��G�ã�~yè�O¿÷ôOîþ��bçá��<ðÇ�ëw¦"ÐpM}lªê���úÃû�xlßcOýÓSá�ÜùïwnZ¼éó³>¯jêº�®ëu÷N<gâÖ�[U«nþÕÍ-ý-ÓÆOÛºrëÍ¿ºÙQåøêÚ¯^óÀ5©þë|xæÃk�½æÙo=k0�Ò�.�^ú�.½~ùõ¿�í÷WO¹ú�Å÷¤.PzFÁ�æ@÷½t߫ͯ®�±nóÊÍ)
4\~¿ßf³)3g���y¿¾TK] `0èr¹¬V«ò4ÛÞ��V ÁÁÁ`0�
�L&�Õj�Iÿ­�ÞÞ��Ô××g0�ä´±QÝü«���?�Ï¿�Ö��n¦í�N��HÇ�R$ñ�;ãìdK�øC��7nÝeëÖ½¸îÏ·ü9ê���+Û�i×^2äÚîîîÂÂB��Vn®\<eq�¹où¼åò[Ú��^ñäóON}lª�"òU±��'ÐpWÝõÛ»ÆT�Q�¢µ?]{ðøA¹ý���Æ�3N5-Û=×ÜóØöÇÖ/Z�¾ðùw�?yæäÏ¿ñó5�Ö�Öª§ð>xüà�ÇvÈU���Üq×�!Ä´ÉÓ~øÚ��¾òá¨9'Å�¿�¨,­�BäååM�<=Õẻ»O�>¹bî��àÀ�û_Ø|y"¥B��Ò3Oúh�´ÿôþ%�,Ùwj_b�¥n�Î�=kµZÇ��+�677��7.��TR�¨¯¯Ïív+�+�ß�J P �p¹\^¯×`0���TWW'P�êàí�ñ@Ç���¿¥�JåæÊ��WL
NÚúöÖû.½O»Í��
�@©F �é8PCCC�ZN|ÆNù8�××
+ôm�ÝÖÒÖòü;ÏG®�÷�óæL�sÃ�7(Kj·Õ�?íüy?��µ©ÈíÃ_8ö�±±V­X¸ÂZn=üáá��ߤ,ßñØ�ù_åæJÕö©È!Öª='öܹöÎðCT¹¹Ò^eW�û[ÿߦ��ªzÕ�©�ÆU�»ë·w�/|ð��墳G�±ò3+U±äA�«æýÇ<ùX�ñÙY�Ýu*µ7~8Ø|p\Õß?«Kæ,Iu¸_¾ý˱Uc��«ç¯>Ûsöµ¿½�ÒpH�ù�¸{íÝé�ø'N&�Éívg:�dòù|\k¤?&�©¨¨¨¼¼Üétº\®£G�644äúïå¹(�
Å*¶çýǼoÜü��×l�[3w×é�¼��mY1}��RË)µeä�Õ�ñ¸§ö��_yPµ°v[íô	Ó�ùÒ#¯¾ùª²p_ã¾G¿ôèy�Î�¬�¢n�þ§þé©X«6^³qã5�w<¶#jzªªO#�õÏ­O8�¨«ä�Ú�S�(�héÖ¥·�þö¯®ùª�XK[ËìI³#Ûüî­ß}þ�ç+7WVn®¬ÝV{×oï�W5nÁÔ�B�{kï}õÍWå*ù�<�rÕÉÓ'åc!ÄÚ�Ö¦úûô©À©s«Ï��k�Õ�ûøXí¶ÚÔ�ÛÙ°súÄéòñ��W<þæã©���ÚzdëòyË��Ó'O�àå�2�Χ�Íf�ݧ!ã÷aGJÙl¶ÒÒÒ��
³ÙÜÑÑQ__ßÔÔ¤³�-²Y(��úù�_l��¿L�±ìüeG��¦=5)�ù�oÕªUJ9§Ôoª)[¢.	_�O È.©­û·6¹�dá¡tI)=Q÷ÖÞ{ìø±§ö=¥½½býsë�.¬X½[ÚdqU»­V;��þ�±r�ïF���ò¥V�¢Å?Z,�¨]ôÿ+¢��í8ÓyF�rQÓ�ÿYË­Ï¿óüwoýnä*å¿ðU�û.ó¬Ü\9÷ñ¹òëµ|*˳�^~`îãs�§ÃÒÚÑ:cü�ðpÖr«R�j�S
ÚÈfUÙ*Zú[�ÔüýpmX½áÍ÷Þ�a���Xü«4÷`>ºëQ�í���Æöë�[�þ3Aø6Ú9Ç��ÒÈ´ïO�ç
ð×ú¿ÞvÙmâ�Îá¨�qí7í%ÿû�åi¬7�öî¨v\®�BX,���|��'òê&Õ��8W!�åçç��������677�=zôÔ©S�NjT�ìå�ÿb#�¨�S#�PF¦ð��t#ó3v¦ZCCCMMÍË�/˧k6­	_�^x(«¢.�rUøZ�UCÚòû-¯¾ùªF ß}çwÊô��å �Þ�MkäS¿ß¯�J)%Ð�MkV,\±ñ��Û�l�ýðëÇ>>&�Êc2}òô%s�Ô.ª�O��eÇc;bí�v8¹MÔ ªlUáÂ�&�³*�F�Ãm�¸�sÚäiKç,�µýpsÐØ~ùEËï¿ö~åiø6Ú9Ç��ÒHø�!�7��öþ��«�E³�]·ä:ùTã
£±;ª�_±pÅ�Æ#ß^þí�çßxæÌ��3gÊ�477O�8Q£ÍdI] £G�æåå)×�uwwOûþ´��Y�
��»ú9ÕƵÛj?ìþpÙ�eO~áÉÄÂ)×6www����$ó8�(*¯×ëõz��@^^^iiiiiiä6:x{g<P}}}aa¡ê�ÁÊÍ�ª�­�~öáªPÕÓ7=]¹¹rÞÌyçæ��ù��u-�^�����¶@²lIEË	�|9DUò¥Nú�$���@£3�ò�L�¡T}ÍÍÍ6�­··w``@©�õµµuvvF]�K}}}äöò_¾¨«´�*++Ó�äú��>p:�öOî©£|�]³iMÔ	®¾³á;?Ùþ�÷ï{?²©¨SU�/¬ÝVk-·¾úæ«í�´çV�¤ã@}}}~¿?�
9�Ϊª*�ͦ¬Òß�»��|³~4+üs�Yï	!þü�ÿüÒþ��Z�v<¶ãí�Þ�ü�Un®m�òÕQÇ��@�ÒAÉ�àÀÎðA��t:oÂy�óýM>®¨¨¨¯¯¯¯¯w»Ý]]]f³Y.Q½¤¡¡¡««Kµª­­­¡¡¡¾¾¾¹¹92J}}}Ô¦´W577×××744´µµ©¶ïêê:zT}�Px�¡PH�Ç�ãö�³kþ~ý°���>,V�T�£Í#çå�W#«Æ¤©�ÊK�å�r9Ê7Û®Õ��


ÊËË���ûûû�����;vúôéL'¥�'{N�Íæ¥[�ʧQë=!Äêù«e½'��ü�Åz��,�ÈM���¡�?MjV��æ�;ï�½/(Oå «ðþ�ÈzÌn·Ëµá«�F£Õj-..îîî�¬ßd³QK;�U��¥¢¢Âåruuuuvv�o_VVær¹T/	ÏA¾\.ßub×���A>¾·ö^9ªvÇ�;¶�ؾëð®c��ÛqÇ�!ÄòyË·�ÙzÝÜë��ÿ~Eå¢ÚÚEµ��þÞ­§Z¸xÊbåújeÈ÷}OÝ·tëÒ×¾ü©ùu�xù���¼xªçTÔÛÛÔn«Ý׸oñ�ÅÛ7l�gÕúçÖ�<~Pcû¯,þJÔûÇ<ðò�?Ý÷ÓÈ��ô4ÚT½jÈ�cåP¹¹rLÑ�«f_�Ò;Ü�!,��|¯z<�îîny3��F�%Nõ�²Ûìâ�·�Få�¾*ü#F½�ä®Äï�
È��15~¿¿élÓ¤ÒI±¶�z±M¬UÚcóTÛËÚL;J~~~~~~üËU9¼uü­�¾�%3�(K�/�²lS�ßvÙmk6­Què)�ïxlGå¦ÊÈ�k6­��c¸'î|bû�íª¦¦O�~ùòË�êQ�EÊZY�nùý�ðrHn�¾JÙ~ùEËwÜ¥µ½Rv��fs��[PZ ÷%|`ê¾Æ}Jz²M¹ý�/?ðÂá�N÷��mÊW)Åá�9GÍA~×�õvåæÊ2gÙÅ�.¾uá­ó*¢ßI()���Ãá���.�Ëï÷�ðÁ�ùùùUUUª;Ä"�Á`°µ¯Õfµ=qç�Ê�ûñ�ÿ�Qï�¹+�kù�^¾�ß�=�\ËG ��H��îùÉ=×ϸ>ü�É9zùVTòB»»¯¼;«þFÊü=Qתæï�2P¬í·�Øþô����¿çöÏß®T¹Êä[Q£¨&
Ï<r:¢aå ú®ÿ�¿þåà���~|4��Í�{Ŭ+¾~É×íyöØ�o¤º»»ív»Çã���4�ÍÅÅÅ��)�LR���É@ýýý�~½éw�¿{òk	Nw�îʲ+c��yãC"��t�(ë¦oÉÝ�;S'׿A��@�Ê¡@[~¿Å`0üúó¿V�è©ä�ò½)�Þñè�â19ý7�
���8¶ÿèþ¿6üµ©¥©ÐZ¸pâÂ�/¼ùò��'=Pø»Îívû|¾`0h³Ù***�)^�B�ß e �Çsç/î<Ôsè�wüpämRò��@)�º�/Á��Y^æ��¾Í�4ë¥ý/e:��غ�kQ~ÑäªÉ~¿?Ó¹`��*'M�?ý�«¾(�xõð«o|ðƽ;î½ë÷wU;«W�·ú«Ë¾Zê�rÇ��r:�N§3��¸\®����ÁPPPP]]�yÓ9(���»¼]N�3Ó�È��K¾\�Õ	ºtaÍ�?{ág�Î"%~óáo�Í[�é,0l+æ¬X1g��âxÇñ=�÷Ô5ÔýôÑ�:,��Ç_xÃü�j/¨�²�a1�LEEEB��Ïçr¹��=j±XJJJÊËË��H���@�·+¿"ú�´t/��ÄTõ�wk�4++(³Z­¯ýíµ¡7Í5�?<|Óò�2���7¡|Âú�ë·Ü¹å�ßûÃ]_¸+P�øvÝ·'<<aá��7ïØ|²çdrÃÙl¶ÒÒÒ��
³ÙÜÑÑQ__ßÔÔäv»��%×���Pq(ßNÉ��R�ÏØIÿ�dиªq/�yié¹K3�H2=ðò�Ó'OÏt�H�¥3�.�¹T�ÑÖÝö껯îûpß/·ü2Ï�7wÜÜ/ÌÿÂ�óoLb,9�ìàà Ûínnn6�����cÆ�Ib�Ü���Ü^÷¤s&e:��ÁM� 'M�?­¾#ÊÍÐsÚ®S»�ÌY2ôvÈ5UÅU7.»ñÆe7
!Þ8öÆþ÷÷®é���mIDAT�o÷÷¾ñâ7ª�U+¦­¸cñ�5�É�±Àl6Ë��^¯·¯¯¯¾¾>//¯´´´´4ùW�æ�@ àñ{
�É�ê�@�I¤äË¡;4�^Í�2gÿ{û3�E��ûøØ�w>�é,�Z�O¿øâé��!:û:w½»ëбC+�\i��æ��sÍ�×|ñâ/&%�Ýn·ÛíB�¾¾¾¶¶¶Ó§O;�Ϊª*�Í��ösK0�ôú½E�¢L'� 3F:c'õ�dÄÂ���w<�é,��Q�£MYAÙuK®�·�|û£·_�ÿõ��ãß¿ýÇoW8*�×,ß°hÃùcÎ�y����������·ÛÝØØ(ç}9ç�sFÞr�	��^�·$¿$Ó�È�v�@®ÚñØ�ÊM�í�´Ë§�¼üÀ�G^<Õsjñ�ÅÛ7l�ß2ê*�í��µÛj÷5îKlÕ�¢1W;êá+�ÖX��CG¨�Q�£Ö�©��L] �èóö½òÎ+o�{kíÓk���YÕ³®�sõ
³n�aû��EÞÙÏãñtww�={Öjµ���¥çn��ç÷ûýýþâüQ±³"Qò�@��U�|<}òôË�_^»¨vËï·Tn®ß,ê*�í��+�®ØqÇ�ÄVm?°}×á]ÊÚ¨�#s8ö&£:!
ì�W/ºúêEW�!�7�~íÈk?{ûg�ýé¡rgù�)Kn_tûE�.�Iû��Ãáp��A�ËÕÚÚÚÚÚ���_UU����¤=ÈF¡PÈßï/Í�Õ�4�£�!�
e:�Ô�·±�¹óåT�òûýV«5ÕQ�D ���@��m�úÜ}{ÞßóÖÑ·�5�ë÷õO¯�~Õ쫾¾üë#oÙï÷{<�ÁÁA³Ù\\\ìõz'N�8òf�ÔÜÜ�Î@ï¾ÿîüÿ�ÿâ#/&¥Í+Ë®��()ík#��t�H�-©h�^>�ÕòÌyk�®Y³p��â���ì=²÷�÷�ùÞ_¾Wæ,ûìäÏÞºðÖeS�%Ö²Õj�U«Ûí>{öl0�lll¬¨¨((ÐÕä�Ç»�ë»���¶l,ùT÷vWf�	����B���f��1cü!D0�¬{§îà��oÿïÛEH�u�½bÖ�÷.¿7Ï�Hmãt:�Ngwww0�lii1����ÕÕÕF£1Ù{��­½­¶¼Ñ8U))�K>�m"PYãQé�!�Ñh\=�õêù«���µ~´ç½=Û�¶oÙµ¥Ø^¼pâÂ[.ºeõy«�hVÞÖÏçó¹\®£G�Z,����òòò$g�^§zOÙ¬�|Àè�`É�êÒKéèSÝý/²ê£��`��Z=ujõTñ9!�xõÝW�Ô�øÚ�¾Öÿ|ÿØü±«Ï[ýÕK¾Zì�Þd�6�MÞÁÏårutt´··;����
§Ó��üS­ÃÕa·Ù3����I¤äKC��çÎ83iiié7õ'-¹ØúûÓ��@�"���D �ŲdÆ�%3��!Nt�Ø{dï�>úÓ��>é0;æ��»nκ+λBûå½½½ª%��%�ú|¾ææf�Á`±X�r?÷����7�g 3�3�«#Y�¬X�§s��D ½�J�l�Ø�g=��åY^^nîKù���Íé8��"���D ��hH�«&O®�,V
!Äkï¿öÆ�o|gÏw¾ù?ß<ÇqÎeÓ/ûÊâ¯T�V«^âr¹���F�~¿ßçóõööZ,�¢¢¢ÂÂÂáf%µµµ¥g°¨ÔåérÚ�Éúc��DÉ<Í{D �é2Ð��'RÔr"�þ,¹¦.KÒYn鬥Kg-�B´vµî~o÷Þ�÷þâÇ¿°�­sÇνnîu_�û�8Û	�á³³³³££Ãn·���eù|�=þ�giN�I���	�ì���W3¹uWd!§TwªUT} ~Õ%Õ7^rã��Ü(�8pôÀ���<²ç�oîøf¥£òÒ�K×Ï]?+�V<íÈ�ú���|>_KK�ÑhÌÏÏÏÎY^�Á`¨(TàÐÕm'K�½|IÏCÕ¾jú��»º£ê�	XtÞ¢Eç-�Btôvìzo×ÛÇÞþÍ/�c�¦ó«Ï¿vε·\tË�-X,��Å">�á³··7//¯¨¨(«në��=>O�=�R��f�ÏØ)RYûEmYÕ¿§½1@<Ê�Ë×-^·nñº���ÃÍ�÷ÕïÛòÆ�oÿéÛ�Î�eç.»}Ñí3«fj· gø��^¯·£££££Ãáp���¥çZGm�@Àãó�;�7g)=I|ÆN¥#�N6 ��¦.X0u��¢×ÓûÊáWÞ>ööÚ§×��C3Ï�yõ�«7\¼AãµF£Q�ðéõz��?n2�


JKKÓ�}4�@Àë÷�:��i���dþÇ'�lSè(¬½¸¶öâZ!Ä»Mïî{�ßSo?õ�?�§ÜQ¾dÊ�ÿµð�-�¿ Ök���^¯····»»Ûjµ���gä¶~�@Àç÷�ä�¤?4�,AÉ� å�I�\0é�!�oÀ·ó��o�}ë�go�ð��WuÞÚYkï^zw¬�Úív»Ý��=�O{{»�Âét¦y��@ àë÷�8)ù�Ñ+ñ�4�Ô_Ñ��=l�Û��Ö¬¹h��¢þDýëG^�æýg�ÙùH�£lѤE·.¼uñäÅ�¯�óy
!ü~¿×ëmjj2�ÝÝÝÅÅ鸾.�ö÷÷��drp)�ÌJ°��2��f3ÇÏ�9~¦�"��ì|wç�Gß¼ý¿o÷z½5�5W̸âk˾f6ª¿e)·õëéééêê:{ö¬Íf+))±Ûí©Ëó�ë�Ñh´�-©�� Ë�hÆN�ò��Z&�iõüÕ«ç¯�B|ÔúÑÞ÷öþ®áwOì~¢Ø^¼pÂÂõ�­_Q³"ò%ùùù���>�¯µµUÎûRQQ��ô�:�¬yÖT´ W$>cg¬§£ÓÔê©S«§�Ï	!Ä+ï¾rðèÁ{þpÏ``p�cÌ?Ìø�{�Þ�oÍW66�ÍÊ�O·ÛÝ××g±X���
��9»æ©�S�|À(Çô-É·ò��+/X)�hnoÞóÞ���^þÉë?)È+¸pÂ�WϼúÚù×*[*�>ÝnwgggGG�Ýn/++ËËË�y�'»NÚ¬¶�·� w%>}�ìÙ£��@ÃÄÊ�·®¼õÖ�·
!ö¾¿÷@ý��w?øÍ?�ó�Ç9�M¿ìî%wWäÿ}H§r[?�Ï×ÒÒ"ç}�á�m®6�Í1ò½�»��Ø)Â.çS�Pû�h¸dÖ%�̺d``àLß�Ý�wïiØó_[þËf²Í�7�ÝÜu×^p­�»­�Ïçs¹\½½½yyyEEE���	DìôtRò�£\�½|IÏ�`ô�S:æ¦å7Ý´ü&!Ä�£�ö×ï�x÷Ã÷ï¸ÿ�Ç9�Ö\zçgï�X:Ñf³Ùl¶`0èõz;:::::��GYY�Ù<�ïo]�.gA�n�� {p-�@&-:oÑ¢ó�	!:z;^y÷�7�ÞüÕ�¿2�ó�1s®»àº��ܤøôz½Ç��7�L���¥¥qÝj/P�ÈÏË�z;úEÉ���Ê�˯_zýõK¯�B¼ÕðÖþúý?Øÿ�oýñ[��ÊeS�m¸xÃyUç	!¼^ooooww·Õj-..��a,.¯«¢8%·��+(ù²ÎE5�]Ts��¢Ûݽëð®CÇ�]ñô�" f�3ûêó¯þÒÅ_
����§½½]�át:ËËË�Fcd;��§Ð�Ì»>È9�|Ù«ØY\»¨¶vQ­�â¯��Ý÷þ¾'ß~òÁ??Xá¬X2eÉ�>ó¥�å3¼^oSS�Ùl.,,,..��¹Çï)r�e(wY��� 7Ì�2oÞ�yB�·ßýÊ;¯�úðкgÖ
ö�Ψ�±vöÚÛæÝÖÕÕuöìY�ÍVRRb·Û��>¿����å(ùr�Óê¼ê3W]õ�«��ï��ÿµ÷_ûÅá_üÛ_þ­ÜY~ñÄ�¯?ÿúy¾yF£Ñh4úü¾�ü�Lç� ��,ù¸�;@6�5aÖ¬	³������ïì|ëè[ÿ¸ã�}^ßÔò©��ú9�¿¿4?®¹=�èU�·b�¯÷¨ú2Îb²\¾àòË�\.�øðÔ�{�ì}¡á�þþ~zù�Q.ñ��TzÙiÚ�iÓÆL�¸tÀb±d:��6*®åëèè�è���@�¾4�!���D ���@�ÊX ��Gôå�Ñ�'���¤ã@)�HÉ�>�3'úúÆ��×~º ÕQ\®¾üü�G!���D ���@�Rél÷�oîmiî;}ÒÕvÊÕÑæé<ãíîôõtùݽýo·~9�±Æ��eþÏæææqãÆ%1J,�"���544¤¨å�{ù�2/ûë=�\çõ47ö�<Þwª¥ïôI÷�6Og»§«Ã×Óåsõô��CyyÆüü¼��[U�cܸ�%ó«§O/­¨�¸íöýï�j»àªLï����éÀÎ�èå�È~Ç?îiiî=y¼ïô)w[«»³Ýsö�·ç¬¿·Û?8�4��Ãa)*²VTØÇ�É�yá����Ù³Ë.¸ ²´Ô�µÁæææ1�
�¼s����ÍF4c§øô Oh�#0��:Î�����ÙÛåwõö�L��Í\P�WVf¯®vÎ�R:õsÅ3f�^pAåäÉ	ÞN½Ä�×ðÁÙäî��Ü2*¦o�H�e�æÉ�}m§ÜgN{:ϨG`:�¦²2gø�Ì9sÊçÍKIGÜüù�¯ìkIEËrÅðJ¾U«V©��.ç�£Lü#0Ç��2�³¹¹yâÄ�éIõÒK'<óë�Ò��@v�^É�C³t�$,Ö��©���"k×�ÛqÚ�é,dR�7iHz�é�9�óL�»ç¬_{�ÌÔ�ÀL�òs�LÚ	�f\Ë�tkX#0ÇÏ(¼ðÂ	3gjÍ����´��å�Pò1Î�dJg»çøǽ-'�0�3��Ø¥��v�£Ü°§o�weHQ6*^Ï`KSGÔ90ûºû���Õjt:õ0�3E�´��å��¾E|úr>*@È��îÛûÒ¯�ÉÇs�V]¶vÊÍ�f�/ÔX¥±½�bíMÓ�zâ�ÄV=»íÈÎ���¿Ù¦±0j�o·~y���¹m¸s`N�^2sfÙ¼y�ÅÅú���"LÚ	�rI�¾�Q����ª·.[6>�º_�ÑÜÜüã�7þö©#[þõ�²P±qã®ÈUQ�*�/ÿMxû�æææÛn{#ê*åUãÆ�¬[7íÝ�ë5�FæP9Öyè�S�^<fÄ��YJ��ÙÚÒ×Þê>sÚs¶#®��Fc·.Ç[¦
�v�£�Ó·@Nzè¾½ko�öâ³W)K¶l¹tË�K£n�u�ÆöB�Ý»¯OÖ*�íÃs¸ð�_�>ÔNÉ�Ó4îB�>�³´ÔVYé�?¾`é�¸F`67w§m�ô�I;�ÑlØ%��Æ�~E�½|�~/ýêXd'[N«.²�{¿3ÓY`hÊ�Ì�ã=�gü�ÀÌ	LÚ	�f�Lß">=K'3v�@�É.¾Lg�dK��Ûú��d*zÔK
��2�³°Ð4aBI6ß��
&í�F3�v�@îÑ_���âÊ+§<üo�Ò�÷ñ�9ôÇß|�õRÃäJÛ
ô��#Ǥ�ÀhFÉ�9F�]|B�Ù³Ë��'Oô��_�ÿ«�ToU-�gÖPejÐ�Õ[/¾¸B�õ3 "'í�hW~(´_�u�ßÔ&
 ��¼�Oäà½�â��\.��>qU�!'.�?=��f_Tù¹«ÎMî¼êÊ·�g·�Ùò¯�22OzÔÄ�HµS:��Ô	¯
2�I8½�(Õ�
Þyótü%ß�þàÐg/�¿¯îSÓÃ9k¨�âÙmGnÞ0ûÙmGæ,¬zî¹!¾õ�: 'íì=éQÎ�òC±ñ»�TU\ø¹.ê�¿z=ÿ:�à}ùrN<ó�«N�ño/Å3qyÔÂO��ñÏi¾aÃ�	Ì«®½Ê`øáÛ­_þâç_�B�B÷˧r°�²�F��^Ï�ÿã�ë×÷È�pÅJ,Y�¯úÍ�þàÐmÿ8==á�­üõ�þàÐÝ߸0Õáô7|+Û�M>ï鿼Ôø¹µSêv4N�Vüñ±
)
�iò´â÷ß=såµ5�Û�ÿ2õ§ç?úþ÷�ª6�rÖÐ��wí|©ñæ
³w¾Ô¸rñ¸d$�äÕ?CòC1~üS;_jüù�þ>÷ï�ê­±þµÒ�ã�@6�-�;�uþ�s>ñHCN\.�®xJ��¦þõ_/ضíªXk��W]�y÷Þ»@î�|�>Øé�Ï<#�����Ò	�¾�Ê?�QÿÙPÊÎ�ÿxŵËþûw{Ö	!�ÿ�Cª¹æ�î�o;ÿ�¿ý�,ù®]þü�~té?ýÓ�Ô�»~íØïÿè�Yò¥!�RgRuþþÝ'>·vʾ]-ç_X�étôïܪ�Cõg"�+?�É_¦î½wÁ�?ÿâ�÷Í�BÜrËÌáFÙ²åR�á�B�Ão¶½{p}ssó���rÕ��wnܸKù���<@���N`tÙ½ûú[n�ùÕõÿ#�Ê!I��X:�B÷�W³¡ÐýÏ=·\yºrñ¸�/5�o¿ zëo�:²rñ¸Pèþð]8qâÎ��ÇÅú�p÷îëåö_ûÚüIc
�ºo��â�¿ù(¥õ�øäKá[ûÛ�ºoïù�*R]�ÕÖN�B�ØÛ��pH�ÚÚ�÷�µ�!Þ{»}ÅEc3��þ]vÙÄ��=ª�ò|Ò{Ò³ zëÊÅãÞ=¸^�¬~ô��+/��X 9�«¾qÇÎ9��°��[¶\�
Ý/ÿËt.R"�{ùTW	F½�DîÞ�â�g®�3ñ©�{[�]2.ê�¤ì¤ü(.iü�q�ýصëúÉç=ý��þxÅõç&'KM+/�¿uË{~ï`�có��÷��¾åõ¤)�Räk_�ÿõ¯¿*�h:ÖEé��×]7mݺ�Ã�(g�Õ¯cï�\o0üð£÷¿�X ��Çmûù�
_d"
�þei/_]�¹DÖx97gLTßÿÞÒï}ãõ�{[DBC�2eΪg·��CÕ{ÃòñÑÛßÚsòÉÇç'¥5mÏ<sűw;ÒV�=óÌ��¼�¾pH�IÓK¶<üƤiÅ�Nd´��îWÆ�}ñó/Þ{oÌJ{$'¢-[.íëösa�`4ÈÒ�oÕ'�§²ö�¬úr±�¼å���§�ÿà_�$<$)#äØÎ$Ö{R:��45­K[,Á��z1©:�ß«\È�V²ê{þ��!Dêª2>¡�QÂ�
�2��ZäÎXKâ�ÞÙÐÐ`·ÛS�±�B�@ `2�âß~üøçN�¸!
����(á���(E�D ��ý×�}øÈ£�7}óü
�¦§4Ð�é/P�N8�ôwè�D ���@¹�ÈëõÖÔhÍY�°Ì_Ë�yå^��éÅ�9_yyy"�
S[[Û°�y½÷¤'PÂ"�%�óp�¥����@ �þçò��ü¿�6-Nu �Ò_ ¦¦u:Û#���@�"��4�8q"E-g¾äKx��8{ù`�Rôc�@�dãµ|��ç)�ð©j<ÝLè�©�ù^¾Há��RàÅêÓ£¯�bÉÆ�OÄ�í©êßÓÞ����;�IAÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�º�-%ߪU«�µ$r-@%+J¾¨Õ]]]�ªÆS-�hË|É'k¹¨K��/rIøÆiL�r�!�
e:�!>]øE>�µ$²\�ÔÐÐ�º´� )jjjRѬ9��jPuÊ
Y°i7�ÏËStà û¥»ä�I��ÙT�U��N�¿�/�Æ%|ª��	]@Cæ¯å�5ÔScZ��ÇEæK>@�dãÀN@RPò��nQò��nQò��nQò��nQò��nQò��nQò��n�3�@"V­Z%�¨««�r��öÆ���ªF�¹²Gª<EìTÙ£ÒÓ».ê	!§Ï��ÉçúßKµG:øLé~�D�¿ëb%�»g�¨{¤³¿Q®��FÃ�ÅZ¨ýZí-ÓI�g�øå^/_äçGC]]]¬O]�PÞdqæ�ý{$Õ��gK�Å{�ÿ¾�o/²x�ôô®��RN�%"ÓÈõ¿W¬4r÷,�õk\N�%tö®��|î��¢î�.ÿF"gÏQ÷(§Ï£ç]�»g�aɱ^¾U«VÕÕÕ�ä(�ä��T�y¸lÛ#U�	DÏÎ=�a'�Ä^(eÕ�%,Kö(ê	!§Ï�Q�Ïé³�Æ�#GÏ�Úo°\<K�ü#�«Yåq6�÷rúÌ�UN��4äè�A[.��R$�{�µeý��bɱ^¾��µ¤üb�t«>!�¿�Ù¹G#��µ{�0ö(u¢~^rú,�+ùÜ=Khd�£g�TüãÍ�%��Bµp$mfá���?3ÄJ8wÏIÿ(±GI�ù�Éé3ðäX/_Rh�úTüË7$%¨|�&�CVíQR"fÕ�I	ÿD�þò¨2ò7RNy	˪=JºlÛ;Î��²j�$Î�*�Ý#%z�ceÛ�åú�AµG:83D}×åô�!òo�Óg���d¢Êª³w,£±äË�£�,ìQö˶=
?ë�°�]ÒßÞ±GÙ/Ûö(§Ï�#ü���{�DìQ�²m�rúÌ�"9±G96°3�¢þJ1ò�.��F��b����HÒ��Ù°Gºü�¥B�ì�þþ^úÛ#ÁYb�M¥t�RôÍ;¼ýlØ#ýý�ô·G�Ë�h?�ö(×ÿF)=�fÉÙ;�C(�Êt�Ã�yÔb}�T[FýMB{aÚÄ��=�§Í��ó��s{4dô,ߣ¨'��>KÄJ>wÿ^£m�rñ,1JþF��"·d���3�ö˳a�¢�Êé3ðäXÉ��ßè�Ø	ºGÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºEÉ�ºeÎt��D��ð§¡Ph¸¯
�IÔ%Ãj3Î�Ĺ��æ�%Kv�Õ��I��=>	4�zB/�ä¤P($¿Å*�â$¿þ�B!å»rä��Ñ�#³¡³í¨*ù÷�©�mÇGiDÕ�dʪU«�X�jôò�@�}ë[ß�ºüÑG��V;ò믪çD£�DcI¬��¨¯
ß@;z<Û$�>�j�ù$@ßÇ'2·v��@ÆQò�@æmܸQµdË�-	´£|ßU�¨¾þÆÙ�ªÏ$òkt¬�Ä�¤�Þ¥£zyb�Æã²�¹Lµdç¿íL ��Õ8óI̺¯oR-ùï�?�@;Ùv|¢6K±� ¥d�^]]�j�²P>Um¦Ú&u(ù@?�ïµ�ý-áOÃ{<�Û��ô¯ÎÙ?�/Û�j¶U/Ùv| ÍV­Z�^×Iáu]]]]]]�²�êUªÇ©@É�º¥ê'�Ñz<2Û���aöËþ£�Y��£�¬ëäãx®ÜKÛÕ}�| �I¬¦�8-gÔ«¶rH��jÎÉìñ��]�Ç�@�RõàÅÚ,Õã9�ÌØ	º%ûR�þº�>y�á��M©ÂE}U¬m"Ë¿¬-�Ó|T³ühDJçñ�Ü&jô�S��a�¬î¢Ö{é�º�^>Èaªïµ��D>Ðxa<K�ÌgÈ�âÏ0Ͳê¨j�ÒL�¨l>>±�füM�@Ç�ñ���T�#W¥4CJ>ȼÄæç�¶Äæç�=�����I©Ù4���Ò.m�;�äºÅµ| [�| [�| [�| [�| [ÿ�ú�µ¥�÷y=IEND®B`�
@laf
Member
laf commented Dec 23, 2016

This patch 'fixes' it. Not sure why it's printing php warnings when no debug is in place

diff --git a/html/billing-graph.php b/html/billing-graph.php
index d0c5fa7..1b3459c 100644
--- a/html/billing-graph.php
+++ b/html/billing-graph.php
@@ -14,6 +14,7 @@ use Amenadiel\JpGraph\Plot\LinePlot;

 ini_set('allow_url_fopen', 0);
 ini_set('display_errors', 0);
+ini_set('html_errors', 0);

 if (strpos($_SERVER['REQUEST_URI'], 'debug')) {
     $debug = '1';
@@ -229,7 +230,7 @@ $lineplot_out->SetColor('darkblue');
 $lineplot_out->SetFillColor('lightblue@0.4');
 $lineplot_out->SetWeight(1);

-if ($_GET['95th']) {
+if (isset($_GET['95th'])) {
     $lineplot_95th = new LinePlot($per_data, $ticks);
     $lineplot_95th->SetColor('red');
 }
@@ -247,7 +248,7 @@ $graph->Add($lineplot);
 $graph->Add($lineplot_in);
 $graph->Add($lineplot_out);

-if ($_GET['95th']) {
+if (isset($_GET['95th'])) {
     $graph->Add($lineplot_95th);
 }

diff --git a/includes/common.php b/includes/common.php
index 4bf3779..a54c12b 100644
--- a/includes/common.php
+++ b/includes/common.php
@@ -56,6 +56,7 @@ function format_number_short($number, $sf)
     // This formats a number so that we only send back three digits plus an optional decimal point.
     // Example: 723.42 -> 723    72.34 -> 72.3    2.23 -> 2.23

+    $number = sprintf("%01.2f", $number);
     list($whole, $decimal) = explode(".", $number);

     if (strlen($whole) >= $sf || !is_numeric($decimal)) {
@laf
Member
laf commented Dec 23, 2016

Seems error_reporting is getting reset after init is called.

@laf
Member
laf commented Dec 23, 2016

jpgraph is setting it - somewhere.

@laf
Member
laf commented Dec 23, 2016

Setting ini_set('error_reporting', 0); in html/billing-graph.php after Graph new fixes it.

@laf
Member
laf commented Dec 23, 2016

But not a proper fix btw. Might need to move the set debug section below that.

- - Add the code to integrate it in a separate commit. Include:
- - code to update it in Makefile
- - Scrutinizer exclusions to .scrutinizer.yml (not needed if added to lib/ folder).
+ - Add the code to integrate it in a separate commit.
@laf
laf Dec 23, 2016 Member

I don't personally do this, it makes it a pain to test as you have to merge to branches to try things. I'd get rid.

@murrant
murrant Dec 27, 2016 Contributor

The problem is the commits for updating /vendor can be a little tricky. It is nice to separate them from your actual code changes (but keep in the same PR)

@murrant
murrant Dec 27, 2016 Contributor

Also, I was trying to change that part of the docs as little as possible...

@laf

Tested API + Auth (mysql) all seems good.

@laf
Member
laf commented Dec 23, 2016

Have just seen the jpgraph being used dropped support for php < 5.4

@murrant
Contributor
murrant commented Dec 27, 2016

The composer should limit the version to one that supports PHP 5.3.

Thanks for looking into this laf,. I'll review all your comments soon I hope. Been busy with holidays.

@murrant
Contributor
murrant commented Dec 27, 2016

@laf: as for the jpgraph, yes they did drop 5.4, but we aren't using that version of the library. To support php 5.3 many of our libraries have to be unsupported or old versions...

murrant added some commits Dec 27, 2016
@murrant murrant Update phpmailer to 5.2.19
a2fff74
@murrant murrant Add our php requirement to composer.json
ce659ec
@murrant murrant Some billing graphing fixes.
Disable debug in vendor/amenadiel/jpgraph/src/includes/jpgraph.php
eb4a2d7
@murrant murrant Merge remote-tracking branch 'upstream/master' into composer
e62ee45
@murrant murrant Add ComposerHelper to simplify using composer a6622b6
@murrant murrant Move yaml dependency to composer
c504558
@murrant
Contributor
murrant commented Dec 28, 2016

It won't matter where the ini_set is compared to init.php. The class isn't pulled in until it is needed. So, I think modify jpgraph directly?

@murrant murrant Fix tests
0b68efb
@murrant murrant Remove custom classloader
cc353da
@murrant murrant Update phpmailer to 5.2.21
20cb15f
@scrutinizer-notifier

The inspection completed: 658 Issues, 18 Patches

@laf
Member
laf commented Dec 28, 2016

Updated and running again.

@laf
Member
laf commented Dec 28, 2016

Tested ok here, no gaps in graphs. Checked various webui elements and all seems good.

@librenms/reviewers anyone else?

@Rosiak
Contributor
Rosiak commented Dec 29, 2016

No issues seen on my install.
Seems good from here.

@laf laf merged commit e20a242 into librenms:master Jan 1, 2017

2 checks passed

Auto-Deploy Build finished.
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@murrant murrant deleted the murrant:composer branch Jan 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment