�PNG  IHDR����Q�gAMA�� �a cHRMz&�����u0�`:�p��Q<�bKGD�������gmIDATx���w�U���ﹻ�& �^C��X(�����J I@� ���"% (** B�X� �+*�i��"]j(IH�{~�R)��[��~��>h��{�}g�y�)I�$I��j��� ������.I�$I�$�ʊ�y@�}x�.�: �$I�$I��i}��V�Z�����PC)I�$I��F� ����^��0ʐJ�$I�$�Q^���}{�"���r�=��OzI��$gR�ZeC.�IO����vH eK��X� �����$IM�px��sk�.��쒷/��&���r�[޳����<���v|�� ��.I���~�)@������$�up��dY�R�����a�$I �|�M�.�e ��Jaֶ�pS�Y�R��6j��>h�%IR��ز�� �i�f&���u�J)������M�����$I vL���i���=�H;�7UJ�,�]�,X��$I��1��AҒ�J����$ X�Y� XzI��@G����N��ҥR���T)E��@��;��]K*�M�w;#�5_�wO�n~\ DC&�$(A�5 �R�R��FkvIR���}�l��!�RytRl;��~^Ƿ�Jj� �اy�뷦BZ��Jr����&ӥ�8�P�j��w~�vn�����v ���X���^�(I;�4�R=�P[�3]J�,�]ȏ�~��:�3�?��[��� ��a��&e)`�e*����P[�4]�T��=Cq�6�R[ ~ޤ����r�XR Հg(�t�_HZ�-Hg �M�$�ãm�L5�R� �u��k�*`%C-�E6/����%[�t X.{��8�P9Z�������.vk����XŐKj����gKZ��Hg�(����aK9ڦ��mKj��Ѻm�_ \�#�$5�,)- � �61eJ�,��5m|� ��r�'��=��� ��&ڡd���%-]J �on�� X���m|�{ ��R�Ҟ����e $eڧY X��Y�����rԮ-a�7�RK�6h���>n$5A�V�ڴ�i��*�ֆ�K)���mѦ���tm�r�1p| �q:흺,)O�����i��*�ֺ�K)���ܬ�֦����K-5�r�3�>0ԔHj��Jئ�EZ��j�,%��r�e��~�/��z��%j�V��M��ڸ�mr��t)��3]J�,���T ��K֦O�vԒg��i�i��*�����bK�i�NO~�%�P��W���0=�d��i�i�������2�t�J9��J����ݕ�{�7�"I P��9�JK�Tb�u,%��r���"�6�RKU��}�Ij�2����HK�Z�XJ�,妝�� X��Y�����rP��� ެ�2�4�c��%i��^���IK|.H�,%��r�b���:XR�l��1X��4Pe/`����x��&����P��8�Pj��28��M��z���s��x���2���r�\���zR��P�z�4J����}�y���P[g=�L)��� .Q[�6Rj�Wgp ��FI�H�*-`I�����M�RaK9T��X��c�q�����*I� y���[j��E>cw%��gL�R���ԕi�F�Cj�-��ď�a`������#e~���I�� j�,%��r�,)?[gp �FI˨���mn��WX#��>mʔ X�A��� �DZf9,�nKҲz�����I��Z�XJ�,�L#��k�i��P�z�4JZF�����,�I,`���61%�2s �$���,�VO��Ϛ2��/U��FJ�fy��7����K�> X�+�6� S�TX����Ie�����JI���Lz�M�fKm ��L�RaK9�%|��4p9L�w�JI��!`N����sia���zĔ)������%-� X��M���q�>�pk�$-$�Q���2����x#�N� ؎�-�QR��}ᶦHZ�ډ��)�J�,�l#��i@y�n3������L��N`���;�nڔ X�����u����X5��p��F)��m|��^�0(��>B�H���F9(c�զE��er��JI rg��7 ��4I@z�0\�JI��������i�䵙���RR��0�s;�$�s6eJ�,�`n �䂦���0�a�)S)�A������ ���1eJ�,堌#�6�35R��I�gpN��Hu������TH���_S���ԕqV�����e `� ��&S)���>�p;S$魁eKI����uX��`I�����4��춒�o}`m�$1"��:�PI���<[�v9�^�\p��TJj�r�iRŭ ��P{#�{R2,`)e-`mgj�~�1�ϣ�L��Kam�7�&U\j�/�3mJ�,�`F��;M��'�䱀�� .KR#��)y�h�Tq�;p���cK9(���q!w�?����u�RR,n.yw�*UXj#�\�]ɱ���(q�v2=R���q����f����B#i��Jm�m�L����<]�Y����͙�#�$5� ��u�TU�7��Ӧ�X�R+q�,`I}����qL�����'���`��6�K�ͷ�6���r�,�]����0S$-���� ��[RKR3���o��iRE����|�nӦ�X�R.�(i�:�L��D�L��TJj�Y��%o�:����)�����6���r�x���zҒ��q��TJj��h㞦I���.�$Y�R.ʼ�n�GZ�\ֿ��f:%5�5 ��I�˼!�6����dK�x��m��4E�"mG�_�� �s? �.e*��?L�RfK9��%�����q�#�uh$�)�i���3U�����L�RfK9yx��m܌b�j�����8��4���$�i��1U��^@Wbm��4uJ�,�����Ҫ�A�>���_Ij�?1�v�3�2����[�gL�R��D��9�6�o�Ta�R���׿��N7%�����L�2�� NT�,`)7�&�Ɲ��L�*꽙��yp���_$���M�2�#�A�����S�,`)7�$r��k�TA���29�_���Iy�e"�|/0�t)�$�n X�T2���`Y���J���;�6��J�x"�����.e�<�`�����$)� P�I$��5�V4]���29���SRI>�~�=@j�]��l�p�2`K9Jaai�^" Ԋ��29�O�RI%��:X�V5]J��m��N9���]�H;1U���C39���NI%���Xe78�t)a��;���O��i Ҙ�>X�t�"~G>�_mn:%���|~ޅ_�+]�$�o���)�@��ǀ{hgN;�IK�6�G&�rp�)�T2�i�୦K�Ju���v*���T��=�T��O�SV�>(��~D�>d�����m�,I*��Ɛ�:���R�#��ۙNI%��D>G��.n��$�o��;�+#��R�R��!��.e�U��˽���TRI�2��8�t)1L��WϚ>IJ�a3�oF��b��u&���:�tJ*��(F7��y�0�Z�R ^�p���'Ii� ����L�24x�| X��RI%�ۄ>S1]J�y��[z��L�$�adB7��.eh4��%���%�누>W�E���Tf+3�����IR:�I�3Xה)3אO�ۦSR�O'�ٺ�)S�}"��q�O��r[B7�ϙ.edG�)^E���TR"R��t��R�ݜh���0}������<�S����ɧx�.6,)�&���)SI�p��j�'I��?���A�L�"���L����.\TZV�N���!�'I�Y.��pAS����5}� �TRbNL�3��”�d�����b�e��)��4]��Mg/S���Z{ni����,)=k����Д�d��p��ǦO��uLb7�ߛ2%lO�}u�)���K��]le�T�P��j�eS(I�Z���ִ��R�^eJ%%*�/\ Ke�̈́�-O�M�$����|.5eJ��o�s)^]oJ%%,�㚃R� <�p��LS��� �*����`GӦ�tdt<�5���o'��/�6�٧�� _��BIJ�kH��_�6%d ���rQ�b�gZ%%n�ڍ9o1mj�U�g���JR>�L�F�VӦD�B^k_���J�Dj��\����=�L���S(I������v─a���T�eZ%e�U����A�M-�0;�~˃@�i��|l�� �@S���4y���7��2��>���sX-vA�}�ϛBI���!ݎߨ����W�l�*)3{'�Y|�iS�lEڻ(��5�����K��t��SI�$��Uv0��2���,~��ԩ~�x��;�P��4��ց��C�r�O%ty�n4��25:���KM��l�D� ^���4JR������xS��ه�F_}شJ�T�S��6uj�+ﷸk�$e���Z�O%�G�*^�V2�����u3E�Mj�3��k%)ok��I]d�T����)�UR�K���DS� �7�~�m@�TJR�~�荪�f�T"�֛L�� �\���s��M��� �-0��T �K�f�J��z+��n�إK�r� �L�����&j��(��)�[�E&I����� ߴ>e �FW�_�kJR�|!���O�:5�/2跌3��T-�'|�zX�� r�yp0��J����S ~^�F�>-�2�< �`*%�ZFP�)����bS��n"���L�� :)���+pʷf(pO���3��TMW$~����>@~ū:����TA�IsV�1}�S2�<���%��ޟ�M�?@�iT ,E�ū�oz%i�~��g�|`wS(�]�oȤ��8��)�$�� �� ntu`өe�`6y�Pl� Iz�MI{�ʣ�z����ʨ�� �)IZ�2��= ld:5+���請M�$-ї���;�U�>_���g��sY��$Á����N�5��W���z�W�fIZ��)�-��y�u�XI�fp���~S*IZ��dt�;�t�>K�ū��KR�|$���#Lc�Ԁ+2�\�;kJ��`]�Y���ǔ��M1B)��U�bG"IRߊ���<x����ܾ��ӔJ�������0�Z����=��'�Y��嵤����� Le�v�e�g��)�$��z���n����V-º����^�3Ւ�o�f��#0�Tfk�^�Z�s[�*I꯳3{���)�ˬ����W�4Ւ4 �Odp��bZ��R���S��|�*I� �����5��5�#��"�&�-IvT&��/��윚Ye:��i�$ �9��{�Lk�u�R���e�[��I~�_�\��ؠ%�>�GL�$iY�8 �9ܕ��"�S���`kS.I�l���C;Ҏ4���x&�>�u_0J��Lr����<��J�2�(^��$5��L� s�=Mg�V� �~�,Ij�u��>�� 7��r2�)^=G���$�1:��3�G< �`J�3�~�&IR%�� 6���T�x�/�rIj���3�O< �ʔ&#f�_yX��J�i�ގN��Sz;�� T�x�(��i���8%���#���4 �~�AS+Ij��e���r�I�U�rIj�����3�62��v8��8�5�+Ij�A�h�K__5���X��%�n�V%Iͳ-y��|7��XV��2��v4���fzo��_6��8���"�S/I-qbf��;� Lk��F�)K���SM�$���� Ms�>K� W�N���V����}�^`��-�큧3����2Œ�Vؙ�G��d��u�,^�^m�%��6���~��N�n�&�͓��3Œ�V�Z����MsRpfE�W���%I�wd���ǀ�Lm[��7���W&�bIR��L�@Q�|�)*�� ����i ImsI�����MmKm�y��V`�i�$��G+R� 0�t�V'����!���V�)֏���28����v���U�7͒�v���H����ꦼt���x�ꗞ�T ;S���}��7�M�f���+��fIR���H��N��ZUk�U�x5��SA�Jㄌ�9��Mq��μ���AIRi|�j�5��)o����*^���'<$�T����w���I�1��hE�U�^c�_�j�?���Е$%d`z� �c�y�f��,X���O IJ�nTg����A�� �����U�XRD��������� ���}�������{�H�}��^�S,P5��V��2���\����Xx`p�Z����|Y�k:����$e�� ��~ ��@nW�L�.j�+��ϝ���Y��b퇪��bZ� �BV�u�)�u�������/IJ_ �1�[�p.p60�bC�� >|X����9�1P�:��N\�!�5�qUB}5�a5ja `ub��c�VxYt1N�0�Z����z���l4����]7­gKj�]�?�4ϻ� ���*���[��b��g$)+À���*x쳀ogO$~,5� �ز���U��S�����9���� lq3�+5�mgw@��n�p1��sso Ӻ=����|�N6 /�g(�Wv7U��;��zωM=��wk�,0���u��T��g�_��`_�P`�uz?�2�yI��!b��`�k���ĸSo��+Q���x%!\��ο����e����|�އ���ԁK��S-s6��pu���_����(ֿ�$�i+��+�T8=�e�Y;��� �צ��P�+p��h�x��WQ���v���*���|p1��. ��ά. XRk�IQ�Y�P,���d�r�Z�� |����� ��������B�%������w��P|�S5`��~́@�i�޾��� E�;��Չaw{o'�Q��?%�iL{u D��?���������N1��B��D������!�o��w�����PHRe��FZ�*�� ���k�_-~����{����E9�b-��~P�`��f��E{AܶB�J�A�FO��� wx6��R�ox�5 K5����=�W����we�������hS8 (��J���C���l�J���~ p+���F���i�;ŗo+��:�bD�#g(��C��"�wA^�� r.�F�8L;�dzd�IH�U�X��݆�Ϟ�X�g� �)I�F����q��e�m��%I�4�d�j&pp�T�{���'{�HO���x�( Rk���6^C�٫����O.�)�3�:s(��۳(Z�?~ٻ8�9�zmT"�PL�tw䥈��5��&b<8GZ-�Y��&�K�?e8,`I��6���e�����(֍x�b8�3 � `���r�����zX�j��)F�=l($I�j� �2*�(F�?h(/9ik:��I`m#�p3�Mg���L�aKj�c�/U��#�n5����S�# �������m(^)=y=đ�x8Ŭ����I���[U]����~S�цA�4�p���$-F �i(��R�,�7C�x�;X��=�c����I��>���{���Km�\ �o(T��v�2������v�x�2q�i����iDJ�N�,���Ҏ����!1f� �5quB�j��1��!�8 �r���D�Fd(���!���W���Ql��,g�S��k����L��1Bx��g'�'�՞�^���ǘ;�p����Q ���P(c���_ IRu����j�g(�W�z ����b�s�#�P�­rz�>���� k�� c&nB=�q+��ؔX���n#r5����)co���*Ũ�+G��?7��<�� |�P�����Q��ӣ'�G�����`uO�d>%M�ct�z�#�� Ԫ�����ڞ�&�7��CaQ��~N�'��-P�.�W`Oedp0�3C!IZc�I�AMP��U�ۀ5�J�<��\u~+�{�9�(Fb�b���y�A�e�B����hOS���ܳ�1� b��È���T�#��ŠyDžs�����,`5�}��D���C�-�`��̞%r&�ڙa��8�7Q����W����W����p6e7� ��Rϫ/�o����Y� ꇅ N��ܶ�ը��tc��!��L���A ���T�7�V4�J�sū� I-�0����P��x�z7�QN�F���_�i����Z�g�úW�k�G���83� ���0e�Wr9 X����]㾮݁#���Jˢ C�}0��=3�ݱ��tB��i�]�_ ��&�{�{[/�o[�~ \q�鯜�0��0��٩���|��cD��3�=4��B_b� ���RY��b$ó�BR���sf�&������l�L�X#M*��C����_�L܄:gx�)WΘs���GSb���u��L ���rF$9�'�;\4�Ɍ�q�'�n�[%p.�Q`�������u ��h���N�b`eCQyQ|���l�_���C>L���b꟟3h��Sb�� �#��x��N��xS���������s^�� 88�|�Mz�)��}:�](vbۢ�amŖ࿥� ��0)Q����7���@�0���=?^k(*�J�����}�3ib�kF�n H�jB׻���NO���� �z�� �x}�7p 0�t��f����D����X�.lw��gȔ��h�Ծ�Ų� }6�g� E� |�Lk��LZ���t��eu+=���q���\I�v0쮑�)��Q�ٵpH8�/2?Σ�o�>�J�vpp��h�������o~�f>%bM��M���}���\�//��":�PT��c(v���9v���!��g�ո��Q ��)��U�fV��G��+!� ��35{=�x\�2�+��k�i,y$���~A1��iC�6#)v��C�5�^>�+gǵ�@1�Hy٪7����u;p ps�ϰ�u���/S�� <��aʸ����Gu't�D1�ԝI��<��p��g|����6�j��'p:�tպ�h��X�{�o(7v],��*�}��6�a_����<�u`��Ȯ�r.E�;ˑ�q�io�p�R��"������26�2E�8j�� ]����U��鿍ǜ�v���D��,2���վ�8ϫ�:�e/^AQ����T�H{�WgRl���̊���2Yx���"1�Q�> �wX�Rk,O�]�Lܳ���~V<�����F���8��a��_g~�o.�XCD�?S�t���h���梫A�o�%���~K1ݵ��O1�LyZ�bJ�� E��Q���xpq�i�Cpv��a6��_�:�wejT����]����"����<��u`"���� 2>���o4��5rp"N5k��;�m���{���rZ�b������Φ${#)��`(��Ŵ�g�,;j���%�6�j���.�pyYT��?}-��kB������D���c3q����A`��N��WQ���ū2�0�/^A��Z�W%�N�Q��� ��MI�.��X#P��#����,^Eb�c&��?X�R tA�V�|Y���.�1����!�����؅�⨉ccww���>���i��v��l(J��T�~� �u`��ٵDm �q)���+���Ri�� x/�x��8cyFO�!�/���*�!/��&��,7�<.���N���,�������YDŽ�&ܑ�Q�F1�Bz��)F���P�ʛ�?5����d� �6`�����kQձ �λc�؎�%58�2��Y��&nD�_$Je4��>a��?��!� ��ͨ�|�Ȏ�WZ��S�s��v���8� �j����(�I��&��y�j� �Jb5��m��?��H������Wp��=����g}�G��3��#�|I��,5v珿�] H~�R3�@B��������[☉9Ox~��oMy�=J���;�xUVoj�� �b�U�s�l_��35�t-�(Ճɼ�RB7�U!�q��c��+�x�4�H�_�Q�o֮$[���GO<��4`��&č�\GO�c[�.[*�A�f%m��G/� ň�M�/�r ��W�/Nw~B1U3������J�?��P&���Y�� �)`�ѓ����Z�����1���p]�^l“��W#)lWZ�i����l�U�Q�u`��-����m|xĐ,������_�ƪ|9i:�_��{*(3G�ѧ}�Uo�D+�>m_�?V��Pۅ�15���&}2�|���/p�IOʵ�>���� G�Z9�cmíت�mnz��)yߐb���D�������� �>e}:�)� �r|@�R5q�V�S�����A�10�C%�E�_��'^�8c��������R��7O;�6�[���eKeP�������G������ϦX7�j���b}��OT�GO^j��n*媓����7n����GMC�� � ���t,�k31�R�b �(v�yܴ�ʭ�!��iTh8~�ZY�Z�p��(q��s���RL ?�b���}����c�Ũ�ʊGO^���!��rP�JO��1��5�MJ[��c&~������Z`"��ѓޔ����H1���C&����^|��Ш|�rʼ,�A�wĴ?�����b��5)�t��L��U��)F�|�� �&��g٣O]���oqSU����j���y(��x<��Ϳ3 ���.���FS�k���oYg�2� \_#w��j�{u'r�Q������>���o���;���%n�|�F�*�O�_��L�"�e�9um��Dds�����?.��fu�u����Qb��IW�z |4\0� s�b;�O�v��xOS�s�; G%����T4g��FR�u�rj���(֍ڑb �u�ԖK�D���u��1MK{���1^ q;�� �C=�6\8��F��R��艇�!���%\Y�Ô�U| �88�m��)֓��Nc��L�ve�� C�6z;��o&�X x5�9�:q���6�1�Z��(T����7���>C?�g�c�ļ�x�ѐ�� Z� ���o�o-�0�8j�ہ �x�,�`���'��� ��Ҕ���Oc��Rl��f��~���`�����jj�"�.N�v+���sM������_��]������Z�k��� �g( UOP���������y�εx%�pU����h�2�������(���@��il0���ݽ��QXxp�px-�N�S��( W�O+�轾 n��Fߢ����3M��<;z�)��FBZ�j����c�i��u�/�Q�oF�� �7R�¥ Z��F�L�F�~��#����ȣ��ߨ^<쩡�ݛк���v�џ)��)���M��E>ώ�x4�m#!-�m���!L;vv#~Y[��đ��K�����m����x�9.[,��U����FS �����C���VkZ ���+���ߟ�r�Y٧��IZd/�io�i$�%��͝ب_ֶX�3���ܫ��hNU �� Z����Z�g�k�=���]��=������b���b��JS[�w��j�U(��)���*I =ώ:}-蹞�l�Uj�:��1��}����M�W��m�=̛���� _�� ¾,8��{__�����m{_�P��V���K^n3�e����sw5�ӫh�#�$-�q=�A̟> ,^I}P�^�J$�qY~Q[ Xq���9�<�r�d�sߏǜs�#������%/���y����kKZ�������b��?� S�k�tc�񫝶L���&I ���W!�b �>{#�&�T.^����G��Vj�_���_R��K�p����n,b=`�ż����Y@�^՝��;z�{p�aV��Kk����QXj�/�)y� ��TI�c&F�;FB�G�7w����g� ZZD�G��!����x�� �r_�t��Ƣ!�}�i�/�V��=M����/��#��n��B8 Xx�Ы ^�@�CR�<{䤭����Y��CN��)�e���K��OSƟa $��&�g[i3�.C�6x�rOc���8�TI���;�o�� ��hH6�P�&L{�@�q��6�[���� �G��zp�^���71�j��(�l�`�J�}]���e6�X����☉#͕� ���׈$A�B1�Vj��h㭦IRs��qFBj�w�Q_7�Xk��>y"������N=�M�B0� ��,�C #�o6MR��c���0��|�$�)�ف����"1����!i���xY<���B��9mx�� ��`���,��t�A�>)5ػ�Q���?j��Q�?�cn�>Y�Z�e�� �Tis���v���h�#�� �GMމȇ���p�:���ԴVuږ�8ɼH��]C.���5C!UV;F`m�b��Bk��� ��L�TM�vP���ʍϤj�?��ԯ/Q�r1���N�B`9s"����s�� �TYs����z��� ��&�9S%U԰�> �{��<�ؿ���SM���xB��|H�\3�@!U�|�� �k']������$U�+>��� |�HHM����Lޢ�?��V9i�D!-�@��x�� �TI���î�%�6Z��*��9X�@HMW#�?��n�N� ,o�e6�?tQw��ڱ�.�]-����y����'�:mW�0#!�J82qF�jH -`�ѓ�&��M��0����u� Uγmxϵ��^-��_�\�]����)@0R���t.8�/?ٰ�C��Y]�x���}=sD3�o��j�ަ���Ы�N���uS%U��}Ԥw��HH�>ڗ�jܷ_3gN �����q7�[q���2�l���a���*����A�r���Ǔ��Ԗ+p�8���/��R��GM�� ]j�a����c�d(�JhWko�6��ڎb�j�]i���5���Bj�����3+�3�!\j��1�����U�Z���L��s��L�T�v8�HHmup<��U���\��GMމ�3�R+��w4R�����6�j� XW�M�T!��u(�*!��Pz�,����#���Sq���*�8?vww )kO���a��$�[&��?�*�bB�X� �@���%�����8�]�=���R�r)kO��w�0j��i��M�Tq�� ng$�2\�q�8f�:���e�N1�R�xr<��5 ������;��M��p^�@;��7]R��ꎾ�JtER�.�/(5�v3�R[�@=�h�l����?����l�@;���.���[]�Q*�Z\�4��"1P�'Y��w��x��# ���ǀg���{��5�i��_IUR���z�RɞsyS5q�E����=�@�Y���っ �����v�k��6 ��&��5�1E�o0�|�kp�c��#�j=`�D���WRU�����j̟���J'P� �����w2 �S� �v�:��p�g�3Rv�},�#�����8�b��Z~�&��(F�=�i�><�>gK�M���Jj����0�@H%��,����W�΃�7�R) "�>c�,����� x�ix������ј���^ ��aܖ>�H[�i.UI�Hc �U�1=y�W\���=��S*���G���R~�)AF���=�`�&�����2��h`�D�z���T��󑓶�����J+����?�W+}��C�%��P:|�0H���܆��}-�<;O����C[�~o.��$~��i�}��~�HQ�� �Tv�X������Έ�r=b}$��v����i�z�L��4�:�ȰT|4�~����*��!o�X�QR6��L�k+�#������t/g �lԁߖ����[��Jڶ_N$�k���������*"�.� ���x���s��xX���7jRVbA��A�ʯKҎ��U3����)�zS�NN �_�'��s�?f����)��6������X���!%s�s�A���kʱ>���qƷ�b ��h�g� %n���� �~p�1RE��GM���HH�=�������B�Jiy[<�5 ���ǁJҖ�����g�K���R��*�倳��e��~�HUy��)A���g,K)`�V�w6bRR:��q����L#\�r���cl��K��/�$�s�h�*$�� ������6�����덤�� ����KԖc� 3��Z�9��=�Ɣ�=o>�X � �Ώ�"1�� )a��`�S��JJ�6�k<��U�������-]�� b�m`��{r�y;����T���u��_GR5���*�%6�do�#XRg#���-!nl��$u�3��A�� L+Q{��9�x~�a-�|�H� �vbq[\�NJT%�]���rO8,��E�-F�����w)+?(Y{�Lz�n6����׀��?C������R�~�,)m�䎧�R�7���cww����qpW�ڳ=i.��U`Xf�F�b=�V��LJ��H^LI}��%�} ��|��w���� aG�$�,��^�R^�6 k2�^B�{7��t�������V�%@G�q� p�%R�zģN_ ��HHI[7�ֱ�>(��<�c e�{%kϊ����P�+��SL'�T�cM���J����WR���m ���ŏ�"�w)qc e�f�꒵i?��b7�b����(�'�"��2r%��������~�HUS�1���\<��(`�1�W����x��9�=�8HY9��m:X��1�8�b��g�����D1��u ���~|H��;K��-��U�ep�,,� C�1 RV.���M�R�5�άh����,�t��W�O8W���C�$ XRV�sQS]3G�J|�1��2����� [�v�M� ������:��k�#����~tH�3�0Rf-�����HYݺ-`I�9�%l�I��D�T�m\ ����S�{]��9�gO���ڒ�M���NCV\��G��*����2���J�R�Ũ;�R��ҏ^���ڽ�̱�mq�1E�u?�To�3I���)��y^��#�j�J�w���^�Ń�j��^�v����vl����B_��⋌�P�4x>0$�c>���K†A�ļ9s_V���jT��t0l�#������m��>E��-�,�,�x�,��-�W��)������سo&�9�6�R�E XR.6b���Xw�+)G���A�����E�v�L�)�͞K4�$p=�Ũ��i_ѱ�O�j��b�� HY����/���+@�θH9޼]�N�ԥ��%n�{����� �&zjT�?�� �Ty) s^�U��L�����lb�,�P�iTf�^���<À�]������� ��62R^V��7)S!nl�l��S�6~�͝�V�}�-=%*� ʻ>���G�� ���������D��nK��<��y��&>L����Py7'r=Hj���� ���9��V`[c"�*��^�8H��pc�����O�8�b�nU�`4���J��ȪA�Ƌ#��1_\ XϘH��PR���gi�k(�~G�~��0��D���A���A����_2�p�|�J�묭a����2���\N�C�r�]����M���_0 �^T��%e#����vD��^��%��x��y-n���}�-E�\�3�aS%�yN!�r_��{ �)s���A��w ���ڼp1pEAk�~v�<�:`'ӭ^�5 �����A�r���X�������OI驻��T �(��dk�)�_�\<��w���^��W�I��"�RFj3��V# ���M<,o�J��.H��#�\�SK���s]���� )��9> P��u�������A�*�B�Y�]����y�B�"�l�\�ey��� ��hH���*t��b�K)3��� IK�Z��򹞋X�jN�� �n� �*n>k�]��X�_��d�!�ry��BH� � ]��*R�� ��0(#'�7 ������%es9??��ښFC��,ՁQP��������j�����AR��J�\Ρw� �K��#��j���ah�g�w�;�2$�l*�)� ��%���Xq5�!U᢯�6Re] |�0����[�_�����_64�c�h�&�_}��i�L8K��Eg�Ҏ�7 M��/�\`|.p,�~`�a���=�BR?x�ܐrQ���8K� XR���2M�8�f ?�`s�gW�S%�"� ������Ԉ 7R%���$� N������}��?QL1|-э�ټwI�Z��%���pv�L���3Hk>,I����m�g�W���7{��E�� x�PHx�7�3R�����A�� ���@R�S�� CC���� �������!\ȟ���5I��XR^Z���xHл�$Q[��ŝ�40 (�>�+� �_C ���>���BR�t��<,T�r�T �������{���O�����/�H��+˟Pl6 I ���B)/�V���C��<6���a��2����~�����(�XwV4�g�n���XR� ϱ5�ǀHٻ?tw�똤Eyxp���{�#���WK��� �q����G%5���]�,���(�0ӈH����� HZ���])ג=K1j��&��G(FbM�@����)%�I` XR�����g ʔ�� KZ�G(v��P,�<`�[� K���n^ ��SJR���sAʠ�5xՅF`�0&R�b�V� ��t��x�:Ea�UE�/{�f��i�2;.I����A��wW8��/��t�T�x�A��GOo��N�?�G���}�l L�(���n�����`�Zv?���p�B��8K�_g�����I�+ܗ � #��i��?���ޙ�.��) p����$�u�tc �~DžfՈE�o3��l/)I-U�?a�ԅ�^��j�x�A�r����A�� ΧX��������}�DmZ@QLےbTXGd�.^|x�KHR{���|Ε�W_h]�� ���I��J`[�G9�{��)�.y�)�� ��<���D�*��zk�(ּ���Ya����O���8S����?��2-��� ������H13����#pK"���I`]`O� ��h�&=�S���F1Z�/Ie����D1R�W�a�"t'�x?!)Ou:��1 ��|��6��gt\s�����7�=�z_;�ؠ��>�0X Y��A1]q�p?�p�_���k+J*��Y�@HI>�^��?�g�t.06R�n ��,��`�� ��?)�;p pSF9����Z����X���L�����BJP�W���j���gQ|�&)7!�� Hj��Q��t���<| ؅��W�5 x �W��� �� HIz�Y���oV���M�G�P��� Hj��n`+�\�(d��N���W)F+I�rS�[���|��/a�����`K��|�ͻ�0Hj�{�R,���Q=��\� (F�}\�W�������R)A�g��SG`I��s�n���AR�=|�8�$}�G(v��C��$)s���� FBJ�?]�_�u XRv�ύ��6z�� �Ũ�G[��3��6-�T9�H��z��p����W�̞ú������� X�����g�큽�=�7C�u������fzI���$��)�k�i���^q��k��-) � ���0H*�N` �QZ��k�k]/���t���nn���sI�^Gu't=��7$�� Z;�{���8�^��jB��%� ��IItR�QS7�[�ϭ���3 �$�_���O�Q�J`7�!�]���W��"��W,)�����Iy �W��� �AJA�;K���WG��`IY�{8���k$I�$�^��%����9�.�^(`��N|���LJ�%�@�$I�}ֽp���=FB*�xN��=gI?Q{٥�4B)m���w �$I���gc~d��Z@G�9K��� X�?7)a�K�%�݅K�$IZ��-`I���p����C ������U��6�$I��\0��>!��9�k}��� Xa� ����II�S���0H�$I �H ?1R��.�Ч�j���:�4~R�w���@p�$I����r��A*�u��}��W�j�WFPJ����$I�➓/���6#!�� L�Ӿ��+ X36�x�8J �|+L;v���$I���o�4����3���0����1�R2�0��M� I�$-E}��@����,pS�^ޟR[���/����s¹'��0H�$IKyf��Ÿ���f�������VO�π�FT*�����a$I��>��H��e��~����V���Y/3�R�/�)��>d$I��>2��8`Cj���w�,n@�FU*�9tt�f$I��~<;��=�/4RD~����@��� X��-�ѕ�z��ἱI�$��:� ԍ��R �a�@��b X��{��+�Qx��u�q�$I�Л�z�o���� /~3\8����ڒ���4B������N7�$IҀ���j �V]n1�8H�$I��YFBj�3��̚�̵���ja ����p���p��� �$I���s/3R� Ӻ�-�Yj+L;�.0�R�́��I�$�A���v?� #!5�"��aʄ��j}���U���Km�ɽ��H�$Ij��C���Ys?h$I��Dl8�4��3���.��v�}���m���7�UiI=�&�=0L�g0$I��4���: ���emb�e��`���� e�Qbm�0u�? �$I�T!Sƍ'�-���s��v�)s#C��0�:�XB���2���a� w I�$�zbww�{�."p��Pz�O� �=�Ɔ�\����[� �����o($I������aw]�`���E���).K���v�i�:�L�*#gР7[��$I�����yG���PI=@��R� �4�y��R~�̮�´cg I�$I/<�t�P�ͽ ��h�Dg�o� 94����Z^k盇�΄8��I���56��^�W�$I�^�0���̜�N�?4*�H`237}g��+h���x�o��q)��SJ@p|�`�� �$I��%>������-�h���O�0e�O�>��\ԣNߌZ��D6��R�=K ����~n($I�$��y�3��D>o4�b#px�2���$��yڪt���z���W���~a�� �$I��~?�x<��e{W���g��ô�{�x$/�=�{t�G�0�7��e���a���B�$IҀ�yG��^S�卆�"puS��3��*�E=洣��,`9�>��'���Bww�pH�$IZ��ݑ�nC�㧄���Pc�_9��sO gw����J=l1�:mKB�>�����Ab<4L�p���$I�����b �o1Z���Q�@8�5�b�̍ S'�F���,�F��e���,^I�$Ij���E�dù{�l4� �8�Ys_�s� Z8.��x �m"+{~��?q,��Z D�!I�$��ϻ�'|X�h��B�)=��…'�]��M�>��5��� r�g���otԎ 獽�PH�$Ij����IP���hh)n#�cÔq���A'�ug5qw���U�&r�F|1��E%I�$%����]��!'�3�AFD/;C�k_`�9��� �v�!ٴt�PV�;��x`�'��*b�Qa� w I�$I�x�5� �����FC�3D����_��~��A�_�#O݆���Dv��V?<���q�w�+I�$I�{��=�Z�8"�.#RI���Y�yj���Ǫ����=f�D�l�9�%�M�,�����a8$I�$��Yw�i[�7�ݍFe�$�s��1��ՋBV�A?�`�]#!��oz����4zjLJ���o8$I�$%�@3j�A��a4��(�o�� �;�p,,dya�=��F9ً[��LS���PH�$IJ�Y�Љ+3��> 5"���3�9�aZ�<ñh!�{T�pB�G��k��j}��S�p��� �$I��lvF��.���F$I� ��z<� '\���K*qq��.f�<���2�Y�!�S"-\I�$I��Yw�č��jF$ w9��� \ߪB�.�1�v!Ʊ���?+��r�:�^�!I�$�BϹ�B� ����H��"�B�;L��'G[ 4�U�����#5>�੐�)|#�o0��aڱ���$I���>�}��k&�1`U#�V��?��Ys��V x���>�{t���1�[�I~D���&(I�$I/{��H�0fw�"�q"���y�%��4����� I�X�y�E~��M�3 8Xψ��L}q�������E�$I���[�> �nD�?~�s����f��� �����]o�΁� �cT��6"?'�_�Ἣ� �$I��>�~��.f�|'!������N�?�⟩����0��G KkX�Z�E��]�ޡ;�����/����&�?k�� O�ۘH�$IR��������ۀw�XӨ��<�7@��P��nS��04�a����Ӷ�p�.��:��@���\IWQ�J6�s�S%I�$���e��5��ڑ���v`�3:���x'�;��w��q_�vp�gHyX�Z� ��3�gЂ7{{���E�����uԹ�n�±��}�$I�$��������8t;b|��5��91n��ء����Q"�P������6���O�5�i���� }�i�R�̈́���%�Q�̄p!�I䮢�]��������O{�H�$IR�ϻ�9��s֧�� a=`-� aB\X��0"+5"C�1�H�b?߮����3x��3�&�g�ş�g��g����l��_���h�����Z^,`5�?���ߎ��vĸ%�̀M!�OZC2#0x ����LJ��0�� �G�w����$I�$I�}�<�{Eb�+y���;�iI,`����ܚ��F�����:�5��ܛ�A�8���-O�-|�8�K�7��s�|#�Z8�a&�>���<��a&����/V��tb�t��L��ʌI�$I�$I�$I�$I�$I�$IRj���D��D�%tEXtdate:create2022-05-31T04:40:26+00:00�!Î%tEXtdate:modify2022-05-31T04:40:26+00:00�|{2IEND�B`�Mini Shell

HOME


Mini Shell 1.0
DIR:/usr/lib/python3/dist-packages/gyp/generator/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/gyp/generator/__pycache__/ninja.cpython-311.pyc
�

K��b�����ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlZddlmZddlZ	ddlmZn#e$r	ddlmZYnwxYwddlmZddlmZdddddd	d
ddd
ddddd�Zgagagada ej!�"��Z#d�Z$d�Z%d�Z&d�Z'Gd�de(��Z)Gd�de(��Z*d�Z+d�Z,d�Z-d(d�Z.d �Z/d!�Z0d"�Z1d#�Z2d$�Z3d%�Z4d&�Z5d'�Z6dS))�)�print_functionN)�
OrderedSet)�StringIO)�GetEnvironFallback��libz.a�$!INTERMEDIATE_DIRz$!PRODUCT_DIR/gen�
$!PRODUCT_DIR�$|CONFIGURATION_NAME�${root}�
${dirname}�	${source}�${ext}�${name})�EXECUTABLE_PREFIX�EXECUTABLE_SUFFIX�STATIC_LIB_PREFIX�STATIC_LIB_SUFFIX�SHARED_LIB_PREFIX�INTERMEDIATE_DIR�SHARED_INTERMEDIATE_DIR�PRODUCT_DIR�CONFIGURATION_NAME�RULE_INPUT_ROOT�RULE_INPUT_DIRNAME�RULE_INPUT_PATH�RULE_INPUT_EXT�RULE_INPUT_NAMEc�^�|�|��r|t|��d�S|S�N)�
startswith�len)�arg�prefixs  �5/usr/lib/python3/dist-packages/gyp/generator/ninja.py�StripPrefixr&Is0���^�^�F�����s�6�{�{�|�|���	�*�c��tjd|��r|S|dkrtj�|��Sd|�dd��zdzS)zTQuote a string such that it will be interpreted as a single argument
  by the shell.z^[a-zA-Z0-9_=.\\/-]+$�win�'z'"'"')�re�match�gyp�msvs_emulation�QuoteForRspFile�replace)r#�flavors  r%�QuoteShellArgumentr2Os]��
�X�&��,�,���J��u�_�_���-�-�c�2�2�2�	�s�{�{�3� 2�3�3�	3�s�	:�:r'c��|dkr&|�ddtd��z��}ttjd|z��|��S)zYTakes a preprocessor define and returns a -D parameter that's ninja- and
  shell-escaped.r)�#z\%03oz-D)r0�ordr2�ninja_syntax�escape)�dr1s  r%�Definer9[sL���u�_�_�	
�	�	�#�x�#�c�(�(�*�+�+�A�	�L�/��q��9�9�6�	B�	B�Br'c�X�tj�|��\}}|�d|�|��S)z&Adds an arch string to an output path.�.)�os�path�splitext)�output�arch�	extensions   r%�AddArchrBes1���g�&�&�v�.�.��&�)��f�f�d�d�I�I�	.�.r'c�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TargetazTarget represents the paths used within a single gyp target.

  Conceptually, building a single target A is a series of steps:

  1) actions/rules/copies  generates source/resources/etc.
  2) compiles              generates .o files
  3) link                  generates a binary (library/executable)
  4) bundle                merges the above in a mac bundle

  (Any of these steps can be optional.)

  From a build ordering perspective, a dependent target B could just
  depend on the last output of this series of steps.

  But some dependent commands sometimes need to reach inside the box.
  For example, when linking B it needs to get the path to the static
  library generated by A.

  This object stores those paths.  To keep things simple, member
  variables only store concrete paths to single files, while methods
  compute derived values like "the last output of the target".
  c��||_d|_d|_d|_d|_d|_d|_d|_d|_d|_	dS)NF)
�type�preaction_stamp�precompile_stamp�
actions_stamp�binary�bundle�component_objs�compile_deps�
import_lib�uses_cpp)�selfrFs  r%�__init__zTarget.__init__�s]���D�I� �D��!�D���D���D�K��D�K��D���D���D�O��D�M�M�Mr'c��|jdvS)z;Return true if this is a target that can be linked against.)�static_library�shared_library)rF�rPs r%�LinkablezTarget.Linkable�s���9�<�<�<r'c�2�|dks|jrdS|jdvS)zOReturn true if the target should produce a restat rule based on a TOC
    file.r)F�rT�loadable_module)rKrF�rPr1s  r%�UsesToczTarget.UsesToc�s&������$�+��
�U��9�=�=�=r'c��|�|��r|���dzS|���p|jS)z^Return the path, if any, that should be used as a dependency of
    any dependent action step.�.TOC)r[�FinalOutputrGrZs  r%�PreActionInputzTarget.PreActionInput�sI���|�|�F���)�
�
�
�
�
�&�
(�(������5��!5�5r'c��|jp|jS)z_Return the path, if any, that should be used as a dependency of
    any dependent compile step.)rIrHrUs r%�PreCompileInputzTarget.PreCompileInput�s����6��!6�6r'c�,�|jp
|jp|jS)zKReturn the last output of the target, which depends on all prior
    steps.)rKrJrIrUs r%r^zTarget.FinalOutput�s���;�;�$�+�;��);�;r'N)
�__name__�
__module__�__qualname__�__doc__rQrVr[r_rar^�r'r%rDrDksx��������,���>=�=�=�>�>�>�6�6�6�7�7�7�
<�<�<�<�<r'rDc��eZdZ	d*d�Zd*d�Zd�Zd*d�Zd+d�Zd*d�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d*d�Zd�Zd�Z	d*d�Zd�Zd�Zd*d�Zd*d�Zd*d�Zd �Z 	d,d"�Z!d#�Z"d$�Z#d%�Z$d*d&�Z%d*d'�Z&d(�Z'	d*d)�Z(dS)-�NinjaWriterNc
��||_||_||_||_t	j|��|_||_||_||_	d|_
|	�Btj�
tj�|	|����|_
|dkrdnd|_|dkri|_dD]}
d|
z|j|
<�t"j�||	��}tj�||��|_t"j�||	��}tj�||��|_dS)z�
    base_dir: path from source root to directory containing this gyp file,
              by gyp semantics, all input paths are relative to this
    build_dir: path from source root to build output
    toplevel_dir: path to the toplevel directory
    Nr)z.objz.o)�x86�x64zenvironment.)�hash_for_rules�target_outputs�base_dir�	build_dirr6�Writer�ninja�toplevel_build�output_file_namer1�
abs_build_dirr<r=�abspath�join�obj_ext�win_envr-�common�InvertRelativePath�
build_to_base�
base_to_build)
rPrmrnrorp�output_filersrtr1�toplevel_dirr@�build_to_top�base_to_tops
             r%rQzNinjaWriter.__init__�s8��)�D��(�D���D�M��D�N��$�[�1�1�D�J�(�D��,�D���D�K��D�����7�?�?�2�7�<�<��8A�,C�,C�D�D�d��#�u�_�_�6�6�$�D�L�
�����d�l� �3�3�$�+�d�2���T����:�0�0��L�I�I�L�����l�H�=�=�D���*�/�/��,�G�G�K�����k�9�=�=�D���r'c��d}||vra|r|�||��}nH|�|dzd��}|�|dzd��}|�|d��}d}||vrK|�d��}|�|tj�|pd|����}d}|�||j��}|S)	z�Expand specials like $!PRODUCT_DIR in |path|.

    If |product_dir| is None, assumes the cwd is already the product
    dir.  Otherwise, |product_dir| is the relative path to the product
    dir.
    r
�/r�\r;r	�genr)r0�GypPathToUniqueOutputr<r=rw�config_name)rPr=�product_dirrr�int_dirrs       r%�
ExpandSpecialzNinjaWriter.ExpandSpecial�s���"�K��d���	�.��|�|�K��5�5����|�|�K�#�-�r�2�2���|�|�K�$�.��3�3���|�|�K��-�-��+���4����*�*�5�1�1�g��\�\�*��'�,�,�{�'8�b�'�B�B�D�D�d�0���<�<�*�D�,<�=�=�D��Kr'c��|jdkr!|j�||j���}|�t
d|��}|�t
d|��}|�t
d|��}|�t
d|��}|�t
d|��}|S)Nr)��configrrrrr)r1�
msvs_settings�ConvertVSMacrosr�r0�generator_default_variables)rPr=�root�dirname�source�ext�names       r%�ExpandRuleVariableszNinjaWriter.ExpandRuleVariabless����{�e���
�
�
/�
/�
�t�'�0�)�)�d��<�<�3�4E�F��M�M�D��<�<�3�4H�I��!�!�D��<�<�3�4E�F��O�O�D��<�<�3�4D�E�s�K�K�D��<�<�3�4E�F��M�M�D��Kr'c�2�|rW|jdkr!tj�||��}n+|jdkr tj�||��}|�d��rA|�|��}|jdkrtj	�
|��}|Sd|vr|�|��}d|vs
J|���tj	�
tj	�|j|����S)z�Translate a gyp path to a ninja path, optionally expanding environment
    variable references in |path| with |env|.

    See the above discourse on path conversions.�macr)z$!z$|�$)
r1r-�xcode_emulation�
ExpandEnvVarsr.�ExpandMacrosr!r�r<r=�normpathrwr|)rPr=�env�expandeds    r%�GypPathToNinjazNinjaWriter.GypPathToNinja)s���
�:�	
���	�	��"�0�0��s�;�;����;�%����!�.�.�t�S�9�9�����t�����#�#�D�)�)�h�	
���	�	��7�#�#�H�-�-��
�o��t�|�|�
�
�
��
%�
%�d��d�?�?�?�D�?�?�?�
�7���B�G�L�L��);�T�B�B�C�C�Cr'Tc���|�|��}|�d��r
J|���d}|jdkr
|d|jzz
}tj�|��\}}tj�|��r
Jd|z���|r
|jdz|z}tj�tj�	||j
||����S)a%Translate a gyp path to a ninja path for writing output.

    If qualified is True, qualify the resulting filename with the name
    of the target.  This is necessary when e.g. compiling the same
    path twice for two separate output targets.

    See the above discourse on path conversions.r��obj�targetr;z5'%s' can not be absolute path (see crbug.com/462153).)r�r!�toolsetr<r=�split�isabsr�r�rwro)rPr=�	qualifiedr��path_dir�
path_basenames      r%r�z!NinjaWriter.GypPathToUniqueOutput=s������d�#�#�D����s�#�#�)�)�T�)�)�)��C��|�x���	�S�4�<�
��c� �g�m�m�D�1�1��H�m��w�}�}�X�&�&�L�L�?�(�J�L�L�L��6��i�#�o�
�5�m�
�7���B�G�L�L��d�m�X�)6�8�8�9�9�9r'c�@�|d�|D��ks
J|���t|��dkr|rJ�dSt|��dks|rO|�|dz��}|j�|d||���}|j���|dS)z�Given a list of targets, return a path for a single file
    representing the result of building all the targets or None.

    Uses a stamp file if necessary.c��g|]}|�|��Srgrg)�.0�ts  r%�
<listcomp>z:NinjaWriter.WriteCollapsedDependencies.<locals>.<listcomp>gs��/�/�/�Q�Q�/�q�/�/�/r'rN��.stamp�stamp��
order_only)r"r�rr�build�newline)rPr��targetsr�r�s     r%�WriteCollapsedDependenciesz&NinjaWriter.WriteCollapsedDependenciesas����/�/�'�/�/�/�/�/�/��/�/�/�
�7�|�|�q�������
�T�
�7�|�|�a���:���(�(����9�9�e��
� � ����Z� �P�P�g�
�j�������1�:�r'c�f�tj�|j��d}|�d|�d�S)Nrr;�.ninja)r<r=r>rt)rPr@�output_file_bases   r%�_SubninjaNameForArchz NinjaWriter._SubninjaNameForArchqs5���w�'�'��(=�>�>�q�A��,�,�,�d�d�d�3�3r'c	�^
��|�_|d�_|d�_|d|}t|d���_t|�dd�����_|�dd���_tj
��j|���_
d	x�_�_�jd
krHtj
�|���_|�dd	��}|r|�j_�jdkr�tj�||���_�j�|��}�j�d
�j|���j�dd|z���j�dd|z���j�dd|z���j�dd|z���j�dd|z���jd
kr\�j�|���_t5�j��dkr%t7�fd��jD�����_g}g}d|vr�|dD]}	|	�jvrt�j|	}
|�|
��j����|�|
� ����|
j!rd�j_!��d�|D��}d�|D��}��"d|��}��"d|��}|�j_#|�j_$g}g}��%||||���j_&�jj&p|}
g}	||�dg��z}n\#tN$rOtQdtS|����tQdtS|�d�������wxYw|�rw�jd
krOt5�j��dkr7�jD]/}�j�*��+|�����0d	}�jdkrdtj�,|�j-|�j.��tj�/�j|�j.�j0�j1��}n.tj
�2�j�j.�fd ���}��3�j||||
||��}�fd!�|D��}|rM�jd
kst5�j��dkr|�fd"�|D��z
}nUtQd#|dz��n<�jd
kr1t5�j��dkrtij5tl��}�jj&p|}�jdkr(�jj7d$kr|�j_8|�j_9d	}|o|}|s�jj&s|r5��:|||||��}�j
r|�|���j
r��;|||��}|sd	S�j�<��s
J|����jS)%z�The main entry point for NinjaWriter: write the build rules for a spec.

    Returns a Target object, which represents the output paths for this spec.
    Returns None if there are no outputs (e.g. a settings-only 'none' type
    target).�target_namer��configurationsrF�standalone_static_libraryr�target_rpathz\$$ORIGIN/lib/Nr��mac_toolchain_dirr)r@�ccz$cl_�cxx�cc_host�cxx_host�asmz$ml_r�c3���K�|]^}|tjttj��j��|����d����fV��_dS)�wN)r6rq�
OpenOutputr<r=rwrsr�)r�r@rPs  �r%�	<genexpr>z(NinjaWriter.WriteSpec.<locals>.<genexpr>�s������#$�#$�
�	�<�&��2�7�<�<��(;�(,�(A�(A�$�(G�(G�I�I�� � �!�!�
"�#$�#$�#$�#$�#$�#$r'�dependenciesTc��g|]}|�|��Srgrg�r�r8s  r%r�z)NinjaWriter.WriteSpec.<locals>.<listcomp>����9�9�9�q�q�9��9�9�9r'c��g|]}|�|��Srgrgr�s  r%r�z)NinjaWriter.WriteSpec.<locals>.<listcomp>�r�r'�actions_depends�compile_depends�sourceszextra_sources: zspec.get("sources"): c�:����|dz|z��S)N�-)r�)r=�langrPs  �r%�<lambda>z'NinjaWriter.WriteSpec.<locals>.<lambda>�s���t�9�9�$��*�t�:K�L�L�r'c�H��g|]}|��j���|��Srg)�endswithrx�r��frPs  �r%r�z)NinjaWriter.WriteSpec.<locals>.<listcomp>�s,���D�D�D�1�1�:�:�d�l�+C�+C�D�Q�D�D�Dr'c�:��g|]}��|����Srg�r�)r��orPs  �r%r�z)NinjaWriter.WriteSpec.<locals>.<listcomp>�s'���D�D�D�1��+�+�A�.�.�D�D�Dr'zdWarning: Actions/rules writing object files don't work with multiarch targets, dropping. (target %s)rS)=r�r�r�rDr��bool�get�is_standalone_static_libraryr�r-r��IsMacBundler1�
is_mac_bundle�xcode_settingsr��
XcodeSettingsr�r.�MsvsSettings�GetArchrr�variablery�GetActiveArchs�archsr"�dict�arch_subninjasrn�appendr_rarOr�rGrH�WriteActionsRulesCopiesrI�	TypeError�print�str�subninjar��VerifyMissingSourcesrur��PrecompiledHeaderr�rx�MacPrefixHeader�WriteSources�collections�defaultdict�listrFrLrM�WriteTarget�WriteMacBundler^)rP�specr��generator_flagsr�r�r@r�r��depr��
extra_sources�mac_bundle_depends�compile_depends_stamp�	link_depsr��pch�obj_outputsrMr?�is_empty_bundles`                    r%�	WriteSpeczNinjaWriter.WriteSpecus<���#�D���]�#�D�I��	�?�D�L�
�"�
#�K�
0�F���f��&�&�D�K�(,����,�a�0�0�)2�)2�D�%�(�+�+�N�<M�N�N�D���,�8�8���d�K�K�D��/3�3�D��$�,��{�e����/�=�=�d�C�C�d��)�-�-�.A�4�H�H��	�B�0A���-��{�e����-�:�:�4�;J�L�L�d��
�
�
'�
'��
4�
4�d�
�j���&�$�,�t�"4�5�5�5�
�j���$���
�.�.�.�
�j���%��$��/�/�/�
�j���)�V�d�]�3�3�3�
�j���*�f�t�m�4�4�4�
�j���%��$��/�/�/��{�e����&�5�5�k�B�B�d�j�	�T�Z���1�	�	�"�#$�#$�#$�#$�
�
�#$�#$�#$�$�$����O��O������n�%�(�(�#��$�%�%�%��&�s�+�&�
�
 �
 ��!6�!6�t�{�!C�!C�
D�
D�
D�
�
 �
 ��!7�!7�!9�!9�
:�
:�
:�
�_�(�#'�D�K� ��9�9�O�9�9�9�o�9�9�O�9�9�9�o��7�7�8I�8G�I�I�o��7�7�8I�8G�I�I�o�$3�d�k�!�%4�d�k�"�
�M��� $� <� <��m�_�.@�!B�!B�D�K��"�[�6�I�/���I�������B� 7� 7�7�g�g��������s�=�1�1�2�2�2��#�S����)�)<�)<�%=�%=�>�>�>�������0�	
���	�	�#�d�j�/�/�A�"5�"5��J�	?�	?�D�
�*�
�
�d�7�7��=�=�
>�
>�
>�
>��c�	
���	�	���/�/��T�'��$�:M�	O�	O�	O�� �2�2����T�-@��&���6�6����!�1�1����!4�L�L�L�L�N�N���#�#�
�*�k�6�7�4I�3�
���i�E�D�D�D��D�D�D�k�	�%��;�%���3�t�z�?�?�a�#7�#7�
�D�D�D�D��D�D�D�
D�)�)�
�;��]�#�$�%�%�%��
���	�	�#�d�j�/�/�A�"5�"5��)�$�/�/�i��;�,�?��L��{�e����� 0�4D� D� D�#,�d�k� �!-�d�k���F�#�m�>�,>�(>�O��*�D�K�-�*��*�����k�6�9� ,�.�.�f�	
�	�*��!�!�&�)�)�)���N��"�"�4�);�_�M�M�f���
�T��;�"�"�$�$�,�,�f�,�,�,��;�s
�)O�APc�����	��j���j��\�	}}}���	���	d	�	��fd�	���	fd�|D��}�fd�|D��}|�d�	f��|�d|f�������}�j�|d|||���|�|��dS)
zhHandle the implicit VS .idl rule for one source file. Fills |outputs|
    with files that are generated.Nc�H��tj��|��}tj����\}}tj�|��\}}��|||�||��}|r tj�||��}|Sr )r<r=rwr�r>r��relpath)	r=�relr��basenamer�r��outdirrPr�s	      ���r%�fix_pathz)NinjaWriter._WinIdlRule.<locals>.fix_paths����
�W�\�\�&�$�
'�
'�d��'�-�-��/�/��g�x��'�"�"�8�,�,�i�d�C�
�
%�
%�
��g�v�s�H�6�6�d�	�*��w���t�S�)�)��
�kr'c�2��g|]\}}|�|���f��Srgrg)r�r��valuerrs   ��r%r�z+NinjaWriter._WinIdlRule.<locals>.<listcomp>s.���D�D�D���e�T�8�8�E�6�*�*�+�D�D�Dr'c�&��g|]
}�|����Srgrg)r��prs  �r%r�z+NinjaWriter._WinIdlRule.<locals>.<listcomp>s!���
*�
*�
*�a�h�h�q�k�k�
*�
*�
*r'r�idlflags�idl��	variablesr�r )r��GetIdlBuildDatar�r�r�rrr��extend)
rPr��prebuild�outputsr?�vars�flags�inputrrs
``      @@r%�_WinIdlRulezNinjaWriter._WinIdlRules'������#'�"4�"D�"D��� �#"�#"��F�F�D�%�
�
 �
 ��
(�
(�F���������E�D�D�D�D�t�D�D�D�D�
*�
*�
*�
*�6�
*�
*�
*�F��K�K��6�"�#�#�#��K�K��U�#�$�$�$�����'�'�E��J���V�U�E��8��-�-�-��N�N�6�����r'c��|jdksJ�|j�|��rgSg}td�|d��D]}|�|||���|S)z3Writes rules to match MSVS's implicit idl handling.r)c�,�|�d��S)Nz.idl�r���xs r%r�z.NinjaWriter.WriteWinIdlFiles.<locals>.<lambda>*s��1�:�:�f�#5�#5�r'r�)r1r��HasExplicitIdlRulesOrActions�filterr)rPr�rrr�s     r%�WriteWinIdlFileszNinjaWriter.WriteWinIdlFiles$sy���;�%�������6�6�t�<�<��
�i��G��5�5�t�I��G�G�2�2��
���v�x��1�1�1�1��Nr'c��g}|jr|�dg��dd�}ng}g}d|vr!||�|d|||��z
}d|vr"||�|d||||��z
}d|vr ||�|d||��z
}d|vr$|jdkr||�||��z
}|jr0|j���r|�	|||��|�
d|��}|jrE|�||z|��}	|�|	|��}
|�
|
|��|S)	zkWrite out the Actions, Rules, and Copies steps.  Return a path
    representing the outputs of these steps.�mac_bundle_resourcesN�actions�rules�copiesr�r)�actions_rules_copies)r�r��WriteActions�
WriteRules�WriteCopiesr1r$r��IsIosFramework�WriteiOSFrameworkHeadersr��WriteMacBundleResources�WriteMacXCassets�WriteMacInfoPlist)rPr�r�rr�rr&�extra_mac_bundle_resourcesr��xcassets�partial_info_plists           r%r�z#NinjaWriter.WriteActionsRulesCopies.s����G��� �!�X�X�&<�b�A�A�!�!�!�D�����!#���D���
��"�"�4�	�?�M�8�#=�?�?�?�g��$���
�����g��
�x�!5�!;�=�=�=�g��4���
��!�!�$�x�.�(�<N�O�O�O�g��D���T�[�E�1�1�
��&�&�t�X�6�6�6�g���=�t�2�A�A�C�C�=�
�#�#�D�'�8�<�<�<��+�+�,B�G�L�L�E���E��-�-�
$�';�
;�=O�Q�Q�h��0�0��;M�N�N��
���/�1C�D�D�D��Lr'c��|jdkr
|d|jzz
}|r|�d|�|����S|�d|j�d|��S)z�Generate and return a description of a build step.

    |verb| is the short summary, e.g. ACTION or RULE.
    |message| is a hand-written description, or None if not available.
    |fallback| is the gyp-level name of the step, usable as a fallback.
    r�z(%s)� z: )r�r�r�)rP�verb�message�fallbacks    r%�GenerateDescriptionzNinjaWriter.GenerateDescriptionSsc���|�x���
�f�t�|�#�#�d��7����d�0�0��9�9�9�
:�:� �D�D�$�)�)�)�X�X�
6�6r'c
���������g}|D�]�}|d�d�j��}��d|�dd��|��}�jdkr�j�|��nd}	|d}
|�dd��}|r��|��}t|�d	d
����rdnd}��	||
||	�||���\}
}��fd
�|dD��}t|�dd����r||dz
}t|�dd����r||dz
}��fd�|dD��}�j
�||
||���||z
}�j
������|S)N�action_name�_�ACTIONr9r)F�action�depfile�ninja_use_consoler�console)rAc�<��g|]}��|�����Srgr��r��ir�rPs  ��r%r�z,NinjaWriter.WriteActions.<locals>.<listcomp>ws)���F�F�F���#�#�A�s�+�+�F�F�Fr'�inputs�process_outputs_as_sourcesr�'process_outputs_as_mac_bundle_resourcesc�<��g|]}��|�����Srgr��r�r�r�rPs  ��r%r�z,NinjaWriter.WriteActions.<locals>.<listcomp>|s)���H�H�H���$�$�Q��,�,�H�H�Hr'r�)
�GetToolchainEnvrmr;r�r1r��IsRuleRunUnderCygwinr��int�WriteNewNinjaRulerrr�r�)rPr'r�rr3�all_outputsr@r��description�	is_cygwin�argsrA�pool�	rule_namer>rGrr�s`                @r%r+zNinjaWriter.WriteActionsas�����
�
�
 �
 �C��K������}�-�-�-�t�/B�/B�
C�d��,�,�X�-3�Z�Z�	�4�-H�-H�-1�3�3�k��k�U�*�*��%�:�:�6�B�B�B�05��
�H�
�d��
�
�9�d�+�+�g�	�.��$�$�W�-�-���f�j�j�)<�a�@�@�A�A�
K�Y�Y�t�d��+�+�D�$��,5�s�D�4;�,�=�=�l�i��G�F�F�F�F�V�H�5E�F�F�F�f�	�V�Z�Z�4�e�
<�
<�	=�	=�+���	�*�*�
�	�V�Z�Z�A�5�
I�
I�	J�	J�8�"�f�Y�&7�7�"�H�H�H�H�H�f�Y�6G�H�H�H�g��j���w�	�6�"*��,�,�,��W��k�
�j��������r'c�(	�������� ������g}|D�]o}d|vr|�dg��s�|d�d�j��}|d}	��d|�dd��dtdz|z��}
�jd	kr�j�|��nd
�t|�dd����rd
nd}��	||	|
��|��\}}	d}
tdg��}|	D]#}|
D]}d|z|vr|�|����$t|��}�fd�}��fd�|�dg��D��}|�dg��}t|��}|r|dz
}|dkr4t|��dkr!��|d||���g}g}|D�]�� tj�� ��� tj�� ��\��tj����\�������� fd�|dD��}t|�dd
����r||z
}� |v}|s#t|�dd
����r||z
}|r|�� ��g}|D�]}|dkr!|�d|���f���*|dkr<����j��}|�d||��f���l|dkr<��� �j��}|�d||��f����|dkr|�d�f����|dkr!|�d|���f����|dksJt1|���������fd�|D��}�jd	krS|�d t3jt7j|d�������f���j�||�� � ��|||�!��|�!|�������q|S)"Nr@�rule_sourcesrUr>�RULEr9z%s rr)FrBrrC)r�r�r�r�r�r�z${%s}c�8���r|�dd��S|S)Nr�r�)r0)r=rRs �r%�cygwin_mungez,NinjaWriter.WriteRules.<locals>.cygwin_munge�s$����	)����d�C�(�(�
(��r'c�<��g|]}��|�����Srgr�rEs  ��r%r�z*NinjaWriter.WriteRules.<locals>.<listcomp>�s)���L�L�L���#�#�A�s�+�+�L�L�Lr'rGr��r�c
�D��g|]}��|���������Srg)r�)r�r�r
r�r�r�rPr�s  ������r%r�z*NinjaWriter.WriteRules.<locals>.<listcomp>�sH���-�-�-���+�+�A�t�W�,2�C��C�C�-�-�-r'rrHrIr�r�r�r�c�<��g|]}��|�����Srgr�rKs  ��r%r�z*NinjaWriter.WriteRules.<locals>.<listcomp>�s)���@�@�@�1�4�&�&�q�#�.�.�@�@�@r'�unique_name��implicitr�r)"rLr�rmr;r�r1r�rMrNrO�set�add�sortedr"r�r<r=r�r�r>�remover�r�r}�repr�hashlib�md5�six�
ensure_binary�	hexdigestrrr�r�r)!rPr(r�rr&r3rP�ruler�rSrQrTrU�special_locals�needed_variables�argument�varrZrGr��
num_inputsr�was_mac_bundle_resource�extra_bindings�dirname_expanded�source_expandedr
r�r�r�rRr�r�s!`                         @@@@@@@r%r,zNinjaWriter.WriteRules�s�����������
�
�
�
 �
 �C��K��o$�o$��	��	�	�d�h�h�~�r�&B�&B�	���[�)�)�)�4�+>�+>�
?�d�
�(�^�d��,�,�
�
�(�(�9�d�
#�
#��.�/@�A�A�T�
I�K�K�k�
�k�U�*�*��%�:�:�4�@�@�@�05���d�h�h�':�A�>�>�?�?�
I�Y�Y�T�d��.�.�
��k�9�c�4�9�9�o�i��D�n��h�Z�����&�&�(�!�	&�	&�C�
�s�]�h�
&�
&�� � ��%�%�%��	&� � 0�1�1�������M�L�L�L�L�T�X�X�h��5K�5K�L�L�L�f�
�����,�,�g��v�;�;�j�	���a��
�	�a���C��L�L�1�,�,��1�1�
�{�
�V��2�:�:�;�����9$�9$�&���!�!�&�)�)���G�M�M�&�1�1�����G�$�$�X�.�.�	��c�-�-�-�-�-�-�-�-�-� ��O�-�-�-���t�x�x�4�e�<�<�=�=�	#�
�7�
"�-�"(�,@�"@��"�	0�����B�E�J�J�K�K�	0�
$��
/�
$�%�0� �'�'��/�/�/���#�	*�	*�C�
�F�]�]��!�!�6�<�<��+=�+=�">�?�?�?�?��i��� $�1�1�'�4�;M�N�N���!�!�9�l�l�;K�.L�.L�"M�N�N�N�N��h���#�0�0���9K�L�L�O��!�!�8�\�\�/�-J�-J�"K�L�L�L�L��e�|�|��!�!�5�#�,�/�/�/�/��f�}�}��!�!�6�<�<��+A�+A�"B�C�C�C�C��$�;�;�;��S�	�	�;�;�;�;�@�@�@�@�@��@�@�@���;�%���
�
�
���k�#�+�G�A�J�7�7�8�8�B�B�D�D�!F�G�G�G�	
�
����)�T�-@�-@��-H�-H�"(�$,�#1�	�	3�	3�	3�
	���7�#�#�#�#�s9$�v�r'c	���g}|jr0|j���}|�|���}n|���}|D�]
}|dD�]}tj�|��}tj�|��d}	|�||��}
|�tj�|d|	��|��}||j	�
|d|
|���z
}|jrA|�|j�
����r|�|������|S)N��additional_settings�filesr��destination�copyr�)r��GetPerTargetSettingsrLr<r=r�r�r�rwrrr�r�r!�GetBundleContentsFolderPathr�)rPr)rr�r�	extra_envr�r{r=r
�src�dsts            r%r-zNinjaWriter.WriteCopies�sV���G���#��%�:�:�<�<�i�� � �Y� �?�?�c�c�� � �"�"�c��+�+���w�-�+�+�$��w����%�%���7�=�=��&�&�q�)���!�!�$��,�,���!�!�"�'�,�,�t�M�/B�H�"M�"M�"%�'�'���4�:�#�#�C����#�J�J�J����	+��^�^�D�/�K�K�M�M�
N�
N�+��%�%�c�*�*�*��!+�$�Nr'c	�r�|���}|d}|d}|�d��}||j_t	|jt
d�|����}d|fdt	|j|��fg}	|�|j�	|d||	|�����d	S)
zFPrebuild steps to generate hmap files and copy headers to destination.r��mac_framework_headerszheaders.hmapc�,�|�d��S)Nz.hrr s r%r�z6NinjaWriter.WriteiOSFrameworkHeaders.<locals>.<lambda>"s��a�j�j�$�&8�&8�r'�	framework�copy_headers�compile_ios_framework_headersrN)
�ComputeMacBundleOutputr�r��header_map_path�mapr�r#rrrr�)
rPr�rrr��all_sourcesr�r?�all_headersrs
          r%r/z$NinjaWriter.WriteiOSFrameworkHeaderss����+�+�-�-�I��y�/�K��/�0�L�
�
'�
'��
7�
7�F�*0�D��'��d�)��8�8�+�F�F�H�H�K��y�)� �#�d�&9�<�"H�"H�I�K�I��N�N�4�:�#�#��/����$�2�2�3�3�3�3�3r'c
��g}|j���}|�|���}|�|��}|j�|j��}tj�td|jt|j|����D]�\}}|�|��}tj�|��ddkr;|j�|d|dd|fd|fg�	��|�|���~|�|����|S)
z.Writes ninja edges for 'mac_bundle_resources'.rwr���z	.xcassets�mac_tool)�mactool_cmdzcopy-bundle-resourcer�rJ�r)r�r|�GetSortedXcodeEnv�ComputeExportEnvString�IsBinaryOutputFormatr�r-r��GetMacBundleResourcesr�r�r�r�r<r=r>rrr�r�)	rP�	resources�bundle_dependsr4r~r��isBinaryr?�ress	         r%r0z#NinjaWriter.WriteMacBundleResources)sI���H��#�8�8�:�:�I�
�
 �
 �Y�
 �
?�
?�C�
�
%�
%�c�
*�
*�C��"�7�7��8H�I�I�H��*�@�@�#�M�2���S��!4�i�@�@�B�B�
�
�����!�!�&�)�)�f�	��	�	�&�	!�	!�"�	%��	4�	4��
�����S�$K�%*�C�L�8�X�2F�$H�	�	I�	I�	I�	���f�%�%�%�%����������Or'c
��|sdSi}ddd�}|jj|j}|���D]!\}}|�|��}|r|||<�"d}	|r|�d��}	|	|d<g}
|
�tj�|j�	��d����|	r|
�|	��ttj|��|j
��}|j���}|�|���}
|�|
��}
|�|j�|
d	|d
|
fd|fg�����|	S)
a�Writes ninja edges for 'mac_bundle_resources' .xcassets files.

    This add an invocation of 'actool' via the 'mac_tool.py' helper script.
    It assumes that the assets catalogs define at least one imageset and
    thus an Assets.car file will be generated in the application resources
    directory. If this is not the case, then the build will probably be done
    at each invocation of ninja.Nzapp-iconzlaunch-image)�XCASSETS_APP_ICON�XCASSETS_LAUNCH_IMAGEz!assetcatalog_generated_info.plistzoutput-partial-info-plistz
Assets.carrw�compile_xcassetsr��keysr�)r�r��itemsr�r�r�r<r=rw�GetBundleResourceFolderr2�json�dumpsr1r|r�r�rrrr�)rPr4r��extra_arguments�settings_to_arg�settings�settings_key�arg_namerr5rr�r~r�s              r%r1zNinjaWriter.WriteMacXCassets?s����
��f��O�'�!/���O��"�1�$�2B�C�H�"1�"7�"7�"9�"9�*�*���h��l�l�<�(�(�e�	�*�$)���!�����H��5�5�
-�/�/��5G�o�1�2��G��N�N�
������7�7�9�9��	�	�����)�
�n�n�'�(�(�(��d�j��9�9�4�;�G�G�D��#�8�8�:�:�I�
�
 �
 �Y�
 �
?�
?�C�
�
%�
%�c�
*�
*�C����$�*�*�*��#�X��3�<�&�$��0�+�2�2�3�3�3��r'c	���tj�td�j�j��\}}}}|sdS��|��}|rt��tj	�
|����}d��fd�|D����}�j�
|d|d|fg���}��|���}��|��}|r3��d	��}�j�
|d
||g��}�j��j��}	t%t'j|	���j��}	�j��j��}
�j�
|d|d|fd
|	fd|
fg���|�|��dS)z.Write build rules for bundle Info.plist files.rNr7c�:��g|]}t|�j����Srg�r9r1�r�r8rPs  �r%r�z1NinjaWriter.WriteMacInfoPlist.<locals>.<listcomp>ys%���B�B�B�Q�&��D�K�0�0�B�B�Br'�preprocess_infoplist�definesr�rwzmerged_info.plist�merge_infoplist�copy_infoplistr�r�rJ)r-r��GetMacInfoPlistr�r�r�r�r�r<r=r
rwrrr�r�r��GetExtraPlistItemsr�r2r�r�r1r�r�)rPr5r��
info_plist�outr�r~�intermediate_plistr�r�r�s`          r%r2zNinjaWriter.WriteMacInfoPlistms����*-�*=�*M�*M�#�M�2���T�0�+2�+2�'�J��W�i��
��f�
�
�
�S�
!�
!�C��+��5�5�
�'�
�
�:�
&�
&�(�(�����B�B�B�B�'�B�B�B�C�C�g��:�#�#�
�4�j���(�)�$�+�+�j��
 �
 �Y�
 �
?�
?�C�
�
%�
%�c�
*�
*�C��,��5�5�6I�J�J���:�#�#�
�/��z�
*�,�,�j���1�1�$�2B�C�C�D��d�j��.�.���<�<�D��"�7�7��8H�I�I�H��J���S�*�J�!&���v�t�n�!)�8� 4� 6��7�7�7����#�����r'c	�r���������jdkr��j�dd���j�dd���j�dd���j�dd	���j�d
d���j�dd
���j�dd���jdkst	�j��dkr ���j��������St�������fd��jD����S)�.Write build rules to compile all of |sources|.�host�arz$ar_hostr��$cc_hostr��	$cxx_host�ldz$ld_host�ldxxz
$ldxx_host�nmz$nm_host�readelfz
$readelf_hostr�r�c3�l�K�|].}|���j|������|���fV��/dS)�r@N)�WriteSourcesForArchr�)	r�r@r�r��precompiled_header�
predependsrPr�r�s	  �������r%r�z+NinjaWriter.WriteSources.<locals>.<genexpr>�so�����"�"����1�1����%�{�F�G�Z���4�2�1�1�2�"�"�"�"�"�"r')r�rrr�r1r"r�r�r�)rP�
ninja_filer�r�r�r�r�r�s` ``````r%r�zNinjaWriter.WriteSources�se����������|�v���
�j���$�
�+�+�+�
�j���$�
�+�+�+�
�j���%��-�-�-�
�j���$�
�+�+�+�
�j���&�,�/�/�/�
�j���$�
�+�+�+�
�j���)�_�5�5�5��{�e���s�4�:���!�3�3�
�
%�
%�
�*�k�6�7�J�
�d�$�$�$��"�"�"�"�"�"�"�"�"�"��j�"�"�"�"�"�"r'c	
�n��'�g}	�jdkr��j�||���}
�j�|��}�j�|��}dg�j�|��z}
dg�j�|��z}�n��jdk�r`�j�|��}�j�|��}
�j�|��}�j�|��}�j�	|��}	�j�
|�j��x}}|sld}�jdkr
|d�jzz
}tj�tj�|�j�j����}|d	z}|d
z}��|d|g����|d|g����|d
�jg��nB|�dg��}
|�dg��}|�dg��}�jdkr�tj�dd�����tj�dd�����z|z}tj�dd�����tj�dd�����z|z}nۉjdkr�tj�dd�����tj�dd�����z|z}tj�dd�����tj�dd�����z|z}|�dg��|	z}��|d�fd�|D�����jdkrk��|dt/�j|������|d�fd��j�|�j��D����|�dg��}�����'�jdkr�j�||��}��|d�'�fd �|D�����jdkrU|�d!g��}�j�||��}��|d"�'�fd#�|D����|�|��}�jdkr6d$D]3\}}|�||��}|r|�||���4|�d%g��}��|dt/�j|
������|dt/�j|������|dt/�j|�����jdkrT��|d&t/�j|
������|d't/�j|������|d%t/�j|����|� ��g}d(}|D�]�}tj�!|��\}}|d)d*�}�j"} |d+vrd,}!d-�j#_$n�|d.ks|d/kr�jdkrd0}!n�|d1kr�jdkrd2}!n}�jdkr%|d3kr�j�%|��sd3}!d4} nM�jdkr	|d5krd6}!n9�jdkr|d7krd8}!d-�j#_$n�jdkr
|d9krd9}!d:} d-}n���|��}"��&|| z��}#|�tO|#|��}#|�(|"g|#g|��}$g}%�jdkr$|�)|"|#|$|!||�j��\}%}#}$|�*|#|!|"d;�|$D��||%�<��|�+|#�����|r:|�d=|��}&��|d>�'�fd?�|&D������,||��|� ��|S)@r�r�r�z	$cflags_cz
$cflags_ccr)r�r�r;z.c.pdbz.cc.pdb�	pdbname_c�
pdbname_cc�	pchprefix�cflags�cflags_c�	cflags_cc�CPPFLAGSr�CFLAGS�CXXFLAGSr��
CPPFLAGS_host�CFLAGS_host�
CXXFLAGS_hostr�c�:��g|]}t|�j����Srgr�r�s  �r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>�s%���D�D�D�q�F�1�d�k�2�2�D�D�Dr'�asmflags�rcflagsc�`��g|]*}t��|���j����+Srg)r2r�r1r�s  �r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>�sI���H�H�H���d�0�0��3�3�T�[�A�A�H�H�Hr'�include_dirs�includesc	�h��g|].}td��|���z�j����/S�z-I�r2r�r1rEs  ��r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>�sJ���	 �	 �	 �
�
�D�4�#6�#6�q�#�#>�#>�>���	L�	L�	 �	 �	 r'�midl_include_dirs�
midl_includesc	�h��g|].}td��|���z�j����/Sr�r�rEs  ��r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>�sJ���'�'�'���d�T�%8�%8��C�%@�%@�@�$�+�N�N�'�'�'r'))�c�cflags_pch_c)r��
cflags_pch_cc)�m�cflags_pch_objc)�mm�cflags_pch_objcc�arflags�cflags_objc�cflags_objccFr�N)r��cppr�r�Tr��Sr��s�cc_sr�z_asm.objr��objcr��objcxx�rcz.resc��g|]\}}}|��	Srgrg)r�r>�gchs   r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>6s�� ?� ?� ?���A�s�� ?� ?� ?r'r`�resource_include_dirs�resource_includesc	�h��g|].}td��|���z�j����/Sr�r�rEs  ��r%r�z3NinjaWriter.WriteSourcesForArch.<locals>.<listcomp>=sJ���+�+�+���d�T�%8�%8��C�%@�%@�@�$�+�N�N�+�+�+r')-r1r��	GetCflags�
GetCflagsC�GetCflagsCC�
GetCflagsObjC�GetCflagsObjCCr��GetAsmflags�GetComputedDefines�GetCompilerPdbNamer�r�r<r=r�rwror��WriteVariableListr��environr�r��
GetRcflagsr�rL�AdjustIncludeDirs�AdjustMidlIncludeDirs�GetPchBuildCommands�
GetIncluder�r�r>rxr�rO�HasExplicitAsmRulesr�rB�GetObjDependencies�GetFlagsModificationsr�r��WritePchTargets)(rPr�r�r�r�r�r�r�r@�
extra_definesr�r�r�r�r�r��	pdbpath_c�
pdbpath_ccr��pdbpathr�r�r��pch_commandsr�rp�includer�r�
has_rc_sourcer��filenamerx�commandrr?rarr�r�s(`                                      @r%r�zNinjaWriter.WriteSourcesForArch�s$
�����M��{�e����"�,�,�[�t�,�D�D�f��$�/�/��<�<�h��%�1�1�+�>�>�i� �M��'�5�5�k�B�B�C�k�"�^��(�7�7��D�D�E�l�l�	
���	�	��#�/�/��<�<�h��!�+�+�K�8�8�f��#�.�.�{�;�;�h��$�0�0��=�=�i��(�;�;�K�H�H�m�#�1�D�D�
�t�)� +� +�+�i�*�
�)����<�8�#�#�

��t�|�#�
#�#��'�"�"�2�7�<�<��T�]�D�I�#N�#N�O�O���h�&�	��y�(�
�
���Z��y�k�B�B�B�
���Z��
�|�D�D�D�
���Z��t�y�k�B�B�B�B��z�z�(�B�'�'�f����J��+�+�h��*�*�[�"�-�-�i��|�x����*�.�.��R�0�0�6�6�8�8��*�.�.��2�.�.�4�4�6�6�7�9A�B�h��:�>�>�*�b�1�1�7�7�9�9��:�>�>�*�b�1�1�7�7�9�9�:�<E�F�i�i�	
���	�	��*�.�.��"�5�5�;�;�=�=��*�.�.���3�3�9�9�;�;�<�>F�G�h��:�>�>�/�2�6�6�<�<�>�>��:�>�>�/�2�6�6�<�<�>�>�?�AJ�K�i��j�j��B�'�'�-�7�G����:�y�D�D�D�D�G�D�D�D�F�F�F��{�e���
���Z�� ��!3�X�>�>�@�@�@�
���Z��H�H�H�H��&�1�1�+�26�2E�G�G�H�H�H�I�I�I�
�:�:�n�b�1�1�L�
�
�
�
 �
 �C��{�e����'�9�9�,�:E�G�G�l����:�z�	 �	 �	 �	 �	 ��	 �	 �	 �!�!�!��{�e��� �*�*�%8�"�=�=���,�B�B�
�[�*�*��
���Z��'�'�'�'�'�%�'�'�'�(�(�(�&�9�9�$�?�?�L��{�e���M�6�6�(�#�s�$�/�/��T�:�:���5�J�'�'��W�5�5�5���j�j��B�'�'�G����:�x��t�1�6�:�:�<�<�<����:�z��t�1�8�<�<�>�>�>����:�{��t�1�9�=�=�?�?�?��{�e���
���Z�� ��!3�[�A�A�C�C�C�
���Z�� ��!3�\�B�B�D�D�D����:�y��t�1�7�;�;�=�=�=��������G��M��*�*���g�&�&�v�.�.�m�h������G�c���g�	�$�	$�	$���#������#�:�:�#��*�*����)=�)=�����#�:�:�$�+��.�.�����K�5� � �S�E�\�\��"�6�6�t�<�<�&2�������;�%���C�3�J�J�����;�%���C�4�K�K���#������;�%���C�4�K�K������
�
�	��!�!�&�)�)�e��)�)�(�W�*<�=�=�f�	
�	����&�&��#�6�6��w���$�O�O�h��i�	
���	�	�&8�&N�&N��6�8�W�h�	���' �' �#�	�6�8����v�w�� ?� ?�h� ?� ?� ?�",�	��C�C�C��n�n�V������,�$�j�j�)@�,�O�O��
���Z�)<�+�+�+�+�+�)�+�+�+�,�,�,�	����\�2�2�2��������Nr'c��|sdS|D]L\}}}}ddddd�|}ddd	d
d�}|�|��}	|�||	|||fg����MdS)z-Writes ninja rules to compile prefix headers.Nr�r�r�r�)r�r�r�r�r�r�r�r�r�)r�r�)
rPr�r
r��	lang_flagr�r�var_namer��cmds
          r%rzNinjaWriter.WritePchTargetsEs����
��f�'3�
K�
K�#��Y��e�
��
� �	��
	
��h��u�6��D�D�c��G�G�D�M�M�c����s�C��H�i�3H�2I��J�J�J�J�
K�
Kr'c�
��������jdkst�j��dkr���j�������S�����}������fd��jD��}g}|}	�js��|�||���ddvrB�js;|�d|f���j�	||dzgd||�	��n�j�	|	d
||�	��|S)�0Write out a link step. Fills out target.binary. r�r�c�j��g|]/}���j|����|�|�����0S)r�)�WriteLinkForArchr�)r�r@rMr�r�rrPr�s  ������r%r�z)NinjaWriter.WriteLink.<locals>.<listcomp>]s\���(�(�(���%�%�d�&9�$�&?��&1�6�9�T�?�&2��&�?�?�(�(�(r'rFrXrr]�solipor��lipo)
r1r"r�rrr�
ComputeOutputr��AppendPostbuildVariabler�r�)
rPr�r�r�rrMr?rGrs�build_outputs
``````    r%�	WriteLinkzNinjaWriter.WriteLinkVso���������{�e���s�4�:���!�3�3�
�
"�
"�
�*�d�K���L�J�J�J��!�!�$�'�'�f�(�(�(�(�(�(�(�(�(�!�J�(�(�(�f��n��l�
�
�K��$�$�^�T�6�6�J�J�J��v�,�?�
?�
?�� �@����u�f�o�.�.�.��
���&�&�6�/�2�H�f�$�	�	&�	&�	&�	&�	
�
����v�v���P�P�P�
�mr'c	����dddd�|d}d}	t��}
t��}t��}|r|�|��d|v�r�t��}
|dD�]k}�j�|��}|s� |���}|r�g}�jdkrJ|jrC�j����r)|j}|j	r|�|j	��nu�jdkr|j
r	|j
g}nZ|��j��r8|�|j��|
�|jd	z��n|jg}|D]0}||
vr*|
�|��|�
|���1|���}|r||jkr|
�|����mg}�jjr �jdkr|�
d
����||��}|��js��||||��|ddk}�jd
kr3t*j�dd�����}n=�jdkr2t*j�dd�����}�jdkrG�j����t6d���j|��}||z}�n��jdk�r����|����}�j���j�j|||�j��\}}}||z}�� |d|��|
�!|��}
|r�� |d|g��tE�j�#�����}	�j�$�j��}|r|
�|��n�||�dg��z}|rttK|��red}�jd
kr#|�jz
}|�
d|z��n|�
d�j&z��|�
d|z���� |dtO�j|����|�dg��}�jdkr��fd�|D��}�fd�|D��}n�fd�|D��}tPj)�*tO�j|�dg������}�jdkr�j�+|���}n%�jdkr�j�+|��}�� |d||z��|} |d v�r�|�
d!t*j,�|��d"f��|�
d#tPj)�-|��f���jdkr{|}!�jr�j�.��}!|r|!d$|zz
}!|!d%z
}!|!�/d&d'��}!|�
d(tPj)�-|!��f���jdkr�|�
d)|f��d*|vr��j�0���s||d+z�j_
|�
d,d-�jj
zf���j�1��j|d.z��}"|�jj
g}|"r|�
|"��na�js||d	zg}nR|d/z}nL�jdkrA|�
d)|f���j�1��j|d.z��}"|"r||"g}tK|��rA|�
d0tPj)�2tg|����f��|�4|||	z|tg|
��tk|��|�1��| S)2r�link�
solink_module�solink)�
executablerYrTrFrr�r)r])r�z$ldxxNr!r��LDFLAGSr��LDFLAGS_hostr�r�	manifests�intermediatemanifest�ldflagszlib/z-Wl,-rpath=\$$ORIGIN/%sz
-Wl,-rpath=%sz-Wl,-rpath-link=%s�library_dirsc�F��g|]}�j�|�����Srg)r�r�)r��lr�rPs  ��r%r�z0NinjaWriter.WriteLinkForArch.<locals>.<listcomp>�s<���-�-�-���(�8�8��K�H�H�-�-�-r'c�f��g|]-}dt��|���j��z��.S)z	/LIBPATH:r��r�r)rPs  �r%r�z0NinjaWriter.WriteLinkForArch.<locals>.<listcomp>�sS���-�-�-��"�$6�t�7J�7J�1�7M�7M�7;�{�%D�%D�D�-�-�-r'c�f��g|]-}td��|��z�j����.S)z-Lr�r+s  �r%r�z0NinjaWriter.WriteLinkForArch.<locals>.<listcomp>�sM���-�-�-��)���0C�0C�A�0F�0F�)F�)-��6�6�-�-�-r'�	libraries�libs)r r�sonamer�rr;z.rspr7r>�link_file_listrJz/NOENTRYz.lib�
implibflagz
/IMPLIB:%sz.pdb�_notoc�solibsr`)6rbrcrnr�rVr1rLr��IsUseLibraryDependencyInputsrMrNr[rJr�r^r�rOrr�rr�r<r�r�r��
GetLdflagsr�r�r�r��ComputeOutputFileNamersr��union�_GetWinLinkRuleNameSuffix�IsEmbedManifest�
GetDefFiler"r�r�r-rz�uniquer�AdjustLibrariesr=�EncodePOSIXShellArgument�GetWrapperNamer0�GetNoImportLibrary�
GetPDBName�EncodePOSIXShellListrdr�r�)#rPr�r�r�r�rrMr@r�command_suffix�
implicit_depsr3�
order_deps�extra_link_depsr�r��linkable�new_deps�new_dep�final_outputrsr?�
is_executable�env_ldflagsr&�manifest_base_name�intermediate_manifest�manifest_files�def_file�rpathr'r-�
linked_binaryr0�pdbnames#`  `                               r%rzNinjaWriter.WriteLinkForArchqs�	���� �(�!����6�l�	�G�
�N��E�E�M�
�U�U�F����J��#��n�n�\�"�"�"�����
���o��n�%�*�*�#��$�(�(��-�-���	�
��?�?�$�$���	(��(��k�U�"�"��#�#�� �=�=�k�J�J�#��,�H��"�
2��n�n�V�0�1�1�1���{�e�#�#��(9�#��)�*�H�H��~�~�d�k�*�*�'��J�J�v�}�%�%�%����f�m�f�4�5�5�5�5��
��H�!�(�(�g��o�-�-��!�!�'�*�*�*����w�'�'�'���)�)�+�+���	*�<�6�=�8�8�
�
�
�L�
)�
)�
)���N��{��-���u� 4� 4����O�,�,�,�
�
�
��d�
+�
+�F��|�D�.�|�
�"�"�>�4���H�H�H���L�L�0�M��|�x����J�N�N�9�b�1�1�7�7�9�9�k�k�	
���	�	��J�N�N�>�2�6�6�<�<�>�>�k��{�e����#�.�.�{�
�
�
�8��G�
H�
H�
�
�t�%�%�g��g�%�g�g�	
���	�	��5�5�
�
$�
$�T�
*�
*�,�,���
�
'�
'��T�5H�(,�(:�<N�(.�
�(,�(;�=�=�5�g�$�n�
�g�%�g�
���Z��n�E�E�E�#�)�)�.�9�9�m�	�I�����.�1F�0G�	I�	I�	I�0�
�
�
,�
,�[�
9�
9�;�;�n��#�.�.�t�/B�C�C�h�	�$����(�#�#�#���f�j�j��B�7�7�7�g�	�5�3�v�;�;�5����<�8�#�#�
�4�<�
�%�
�.�.�3�e�;�
<�
<�
<�
<�
�.�.��4�+<�<�
=�
=�
=����+�e�3�4�4�4����:�y��t�1�7�;�;�=�=�=��:�:�n�b�1�1�L��{�e���-�-�-�-�-�+�-�-�-�l�-�-�-�-�+�-�-�-�l�l�-�-�-�-�+�-�-�-�l��
�"�"�3�t�'9�'+�x�x��R�'@�'@�$B�$B�C�C�I��{�e����%�5�5�i��M�M�i�i�	
���	�	��$�4�4�Y�?�?�i����:�v�|�i�/G�H�H�H��M��-�-�-����X�r�w�}�}�V�'<�'<�Q�'?�@�A�A�A����U��J�?�?��G�G�I�J�J�J�	
���	�	�����	@� �.�=�=�?�?�.��	'�
�C�$�J�
&�.��&� ��
(�/�/��S�9�9�������J�/�/��?�?�A�	B�	B�	B�
���	�	����x��0�1�1�1��g�%�%��"�5�5�k�B�B�
&�#)�F�?�$�+�
 �
�
�
��!-���0F�!F�!H�I�I�I��&�1�1��4�-�v���@�@�'��D�K�2�3�&�
�#��M�M�'�"�"�"���!�%��&�6�/�*����H�$���	
���	�	����X�v�.�/�/�/��"�-�-�
�t�)�6�F�?�<�<�g�	�#��'�"���6�{�{�<����X�

�*�
)�
)�&��.�.�
9�
9�;�<�<�<����V�W�~�5�y�$�]�3�3� $�Z� 0� 0�-��/�/�/��r'c�4��t�fd�|�dg��D����}|ddks|s|s|�j_d�j_�n3|ddk�r��|���j_�jdvr1�js*�j�	�jjd||����n�g}�j
r3�j
�|��}|r|�d	|f���j
r7�j
�|�j��}	|�d
|	f���jdkst!�j��dkrV��||�jj�jj���j�	�jjd
|||���n�g}
�jD]X}��||��}�j|�	|d
||||���|
�|���Y��||�jj�jj���j�	�jjd
|
|���n#��|||||���j_�jjS)Nc3��K�|]9}|�jv��j�|�����V��:dSr )rnr�rV)r�r�rPs  �r%r�z*NinjaWriter.WriteTarget.<locals>.<genexpr>/sZ�����9�9�!� �D�$7�7�7��-�1�1�#�6�6�?�?�A�A�7�7�7�7�9�9r'r�rF�nonerS)r��openbsd�netbsdr)�
alink_thinr��
libtool_flags�libflagsr�r��alink)r�rr�)�anyr�r�rJrFrr1r�rrr�r��GetLibtoolflagsr�r��GetLibFlagsr�r"r�rr�r)
rPr�r�r�rrMrErrYrZrGr@r?s
`            r%r�zNinjaWriter.WriteTarget.s����9�9�9�9�%)�X�X�n�b�%A�%A�9�9�9�9�9�O��F�|�v���i����(�d�k���d�k���	
�f��)�	)�	)��-�-�d�3�3�d�k��
�+�@�
@�
@�
�
+�A��
�����+�\�9�$0�	�	2�	2�	2�	2��	���	?��-�=�=�k�J�J�-�
�?����o�}�=�>�>�>���	3��'�3�3�K�48�4G�I�I�(�
�
�
�J��1�
2�
2�
2��;�%���3�t�z�?�?�a�#7�#7�
�
&�
&�y�$�'+�{�'9�4�;�;M�O�O�O�
�*�
�
�4�;�-�w�	�&2�i��I�I�I�I��&��j�"�"�d��'�'��d�3�3�F����%�+�+�F�G�Y�t�_�7C�6?�
,�
A�
A�
A�
�M�M�&�!�!�!�!��
&�
&�y�$�'+�{�'9�4�;�;M�O�O�O�
�*�
�
�4�;�-�w��&/��0�0�0�0�
 �>�>�$��V�Y�*6�8�8�d�k���;��r'c��|jsJ�|ddv}|���}|r|dz
}g}|�||||jj|���|r�|s�|ddkr+|jjr|j�|d||���nk|�	d|j�
��f��|j�|d	||���n|j�|d
||���||j_|S)NrFrXr�)�is_command_startrT�package_ios_frameworkr��version�package_frameworkr�)r�r�rr�rJr��isIOSrrr�r��GetFrameworkVersionrK)rPr�r��is_emptyrcr?rs       r%r�zNinjaWriter.WriteMacBundlebsh��������V��(M�M��
�
(�
(�
*�
*�F������f��I�� � ��D�&�$�+�:L�6G�2G�!�I�I�I��
,��
,�	
�f��)�	)�	)�d�.A�.G�	)��
����!8�:L�#,�	�	.�	.�	.�	.�	���)�T�%8�%L�%L�%N�%N�O�P�P�P��
����!4�6H�#,�	�	.�	.�	.�	.��j���v�w�(:�!*��,�,�,��D�K���Mr'c�t�|�|���}|jdkr|�|���}|S)z:Returns the variables toolchain would set for build steps.rwr))r�r1�GetMsvsToolchainEnv)rPrxr�s   r%rLzNinjaWriter.GetToolchainEnvysH��
�
 �
 �5H�
 �
I�
I�C��{�e����$�$�1�
%�
3�
3�c��Jr'c�D�|j�d|j���S)z>Returns the variables Visual Studio would set for build steps.r
r�)r��
GetVSMacroEnvr�)rPrxs  r%rhzNinjaWriter.GetMsvsToolchainEnv�s-����+�+�O�48�4D�,�F�F�Fr'c���|jsJ�|j}tj�|j|t
j�||j��|j	|��S)z6Returns the variables Xcode would set for build steps.)
rur-r�r�r�r<r=rwr|r�)rPrxrus   r%r�zNinjaWriter.GetSortedXcodeEnv�sZ��������&�M���0�0���]�
����]�D�$6�7�7��9I����r'c�t�i}|j�d��}|r||d<|�|���S)z:Returns the variables Xcode would set for postbuild steps.�CHROMIUM_STRIP_SAVE_FILErw)r��GetPerTargetSettingr�)rP�postbuild_settings�strip_save_files   r%�GetSortedXcodePostbuildEnvz&NinjaWriter.GetSortedXcodePostbuildEnv�sR�����)�=�=�"�$�$�O��G�7F��3�4��!�!�6H�!�I�I�Ir'Fc�l�|�||||��}|r|�d|f��dSdS)zAAdds a 'postbuild' variable if there is a postbuild for |output|.�
postbuildsN)�GetPostbuildCommandr�)rPrr�r?rJr`�	postbuilds       r%rz#NinjaWriter.AppendPostbuildVariable�sO���(�(��v�v�?O�P�P�I��2�����i�0�1�1�1�1�1�2�2r'c�V�|jr|ddks|sdSt||j��}tj�|d���}|��|j�|jtj	�
tj	�|j|����ttj	�
tj	�|j|����|j��|d���}|sdS|�
dtj�d|jg����|�|�����}|d	zd
�d�|D����z}|d|zzd
z}|rd|zd
zSd|zS)z�Returns a shell command that runs all the postbuilds, and removes
    |output| if any of them fails. If |is_command_start| is False, then the
    returned string will start with ' && '.rFrUrT)�quietNr�cdz (z && c�6�g|]}tj|����Srg)r6r7)r�rs  r%r�z3NinjaWriter.GetPostbuildCommand.<locals>.<listcomp>�s#��L�L�L�g�\�(��1�1�L�L�Lr'z$); G=$$?; ((exit $$G) || rm -rf %s) z&& exit $$G)�(z$ && ()r�r2r1r-r��GetSpecPostbuildCommands�AddImplicitPostbuildsr�r<r=r�rwr}�insertrzrAr|r�rq)	rPr�r?�
output_binaryr`rsr��commands�command_strings	         r%rtzNinjaWriter.GetPostbuildCommand�s������$�v�,�&�"8�"8��"8�
�R�
����
4�
4�F��$�=�=�d�$�=�O�O�J�� ��&�<�<�
�
�
�'�
�
�2�7�<�<��(:�F�C�C�
D�
D�
��g���r�w�|�|�D�,>�
�N�N�O�O��k����D�
=�"�"�j���
�R����a���8�8�	
�t�!�"�$�$�%�%�%�
�
%�
%�d�&E�&E�&G�&G�
H�
H�C��T�z����L�L��L�L�L�M�M�N�H��"3�5;�"<�<�>L�M�N��'�
�>�
!�F�
*�*�
��
&�&r'c���g}|D]P\}}|�d|�dtjtj�|�����d����Qd�|��S)z�Given an environment, returns a string looking like
        'export FOO=foo; export BAR="${FOO} bar;'
    that exports |env| to the shell.zexport �=�;r7)r�r6r7r-rzr=rw)rPr��
export_str�k�vs     r%r�z"NinjaWriter.ComputeExportEnvString�s����J��L�L���1������1�1�l�!�#�*�"E�"E�a�"H�"H�I�I�I�I�K�L�L�L�L��8�8�J���r'c���|jsJ�td}|�tj�||j�������S)zDReturn the 'output' (full output path) to a bundle output directory.r)r�r�r�r<r=rwr�r>)rPr=s  r%r�z"NinjaWriter.ComputeMacBundleOutput�sX�������&�}�5�D����
����T�4�.�=�=�?�?�@�@�B�B�Br'c�T�|s|d}tjt��}t|d|ji��|d|d|d|dd�}|�d|�|d����}|d	|d	|d
|dd�}|�d��}|rd
|z}n|�|d��}d|vr	|d}n|d}|dkrt|d��}|dvr|�|�|��S|dkrd|zSt
d|z���)z@Compute the filename of the final output for the current target.rFr1rrr)rYrTrSr!�product_prefixr�SHARED_LIB_SUFFIXrr�product_extensionr;�product_namer�r)rSrYrTr!rUz%s.stampzUnhandled output type %s)r{r��CalculateVariablesr1r�r&�	Exception)	rPr�rF�default_variables�DEFAULT_PREFIXr$�DEFAULT_EXTENSIONrAr�s	         r%r6z!NinjaWriter.ComputeOutputFileName�s�����
�&�\�d��	�"=�>�>���(�8�T�[�*A�B�B�B�
+�+>�?�)�*=�>�)�*=�>�%�&9�:�	��N��X�X�&��(:�(:�4��(D�(D�
E�
E�F�
-�-@�A�+�,?�@�+�,?�@�'�(;�<�	������,�-�-�I��2��	�/�i�i�#�'�'��b�1�1�i������N�#�f�f��M�"�f�	�5����V�U�+�+���&�&�&�������
3�3�	
����
�&�
 � ��0�4�7�8�8�8r'c���|d}|jdkr)|j�|j|j��}|r|S|�)|jdkr|dvr|j���}n|�||��}|�?d|vr;tj	�
|d|��}|�|��Sddg}|jdkr|jd	kr|d
dgz
}n|jdkr|jd	kr|d
gz
}|�cd}|jd	kr(tj	�
dd
|jz��}tj	�
|t||����S||vs|j
r|S|d
krUd}	|jd	kr(tj	�
dd
|jz��}	tj	�
|	|��S|�|d���S)z2Compute the path for the final output of the spec.rFr)Nr�)rSr!rTrYr�r!rYr�rTrSr@z%srF)r�)r1r��
GetOutputNamer�r�r��GetExecutablePathr6r<r=rwr�rBr�r�)
rPr�r@rF�overrider
r=�type_in_output_root�archdir�libdirs
          r%rzNinjaWriter.ComputeOutputs����<�D��{�e����#�1�1�$�2B�26�2D�F�F�h�	�����|���u�,�,��:M�2M�2M��$�6�6�8�8�h�h��+�+�D�$�7�7�h��|�
��-�-�
�W�\�\�$�}�-�x�
8�
8�d�
�
�
��
%�
%�%�(�):�;���{�e������ 8� 8��.�0@�A�A���	
���	�	�$�,�(�":�":��.�/�/�����g�	
���	!�	!��'�,�,�v�t�d�l�':�;�;��
�W�\�\�'�7�8�T�#:�#:�
;�
;�;�	
�$�	$�	$��(I�	$�
�o�	
�!�	!�	!��f�	
���	!�	!�����e�T�D�L�%8�9�9��
�W�\�\�&�(�
+�
+�+�
�
'�
'��E�
'�
B�
B�Br'c��t|t��rJ�|�g}|�|d�|����dS)Nr7)�
isinstancer�r�rw)rPr�rp�valuess    r%r�zNinjaWriter.WriteVariableList5sJ���&�#�&�&�&�&�&�
�~��f�����S�X�X�f�-�-�.�.�.�.�.r'c
�����jdkr0�fd�|D��}�j�|�j���}n9�jdkr.�fd�|D��}tj�|���}�j}�jdkr
|d�jzz
}|d|zz
}tj
dd	|��}gd
�}	dd�ttj
|	����zd
z}	tj
|	dzd	|��}d}
d}�fd�|D��}�jdkrk|dz}
|rdn	d�jz}|r!�j�|�j��}ntj�|��}dt$jz|
z|z}
nD������tj�|��}
d�jz�z|
z}
�j�||
||d||
|����j���||fS)z�Write out a new ninja "rule" statement for a given command.

    Returns the name of the new rule, and a copy of |args| with variables
    expanded.r)c�^��g|])}�j�|�j�j�����*S)r�)r�r�r}r��r�r#rPs  �r%r�z1NinjaWriter.WriteNewNinjaRule.<locals>.<listcomp>CsP�������� �0�0��t�)�$�2B�1�D�D���r'r�r�c�P��g|]"}tj�|�����#Srg)r-r�r�)r�r#r�s  �r%r�z1NinjaWriter.WriteNewNinjaRule.<locals>.<listcomp>Js,���
J�
J�
J�c�c�!�/�/��S�9�9�
J�
J�
Jr'r�r;z
[^a-zA-Z0-9_]r>)rr
rrrz(?!�|�)z\$Nc�F��g|]}��|�j����Srg)r�r}r�s  �r%r�z1NinjaWriter.WriteNewNinjaRule.<locals>.<listcomp>bs,���H�H�H�C�D���s�D�$6�7�7�H�H�Hr'z.$unique_name.rsprr7z%%s gyp-win-tool action-wrapper $arch zcd %s; T)rA�restatrT�rspfile�rspfile_content)r1r�r�r�r-r�r�r�r�r+�subrwr�r7r|�BuildCygwinBashCommandLiner.�EncodeRspFileList�sysr!r�rzrArrrlr�)rPr�rSrQrRr�rTrArU�protectr�r��run_inrs`    `        r%rOzNinjaWriter.WriteNewNinjaRule;s�����{�e�����������d��&�6�6�
�d�.�7�0�0�k�k�	
���	�	�
J�
J�
J�
J�T�
J�
J�
J�d��'�5�5�k�3�G�G�k�
�	�I��|�x����3���%�%�i�
��t���I�����Y�7�7�I�
L�K�K�G��c�h�h�s�2�9�g�6�6�7�7�7�#�=�G��&��5��#�{�;�;�K�
�G��O�H�H�H�H�4�H�H�H�D��{�e����/�/�g��<�r�r�C�$�*<�$<�f�	�E��,�G�G��$�$�&�&����,�>�>�t�D�D��8�3�>�I���!�"�g�g�
�'�'��,�,�c��
�/�/��5�5�g��D�.�.��4�w�>�g�
	�J�O�O�I�w��W��d�#�_��F�F�F�	�J�������d�?�r'r )T)F))rcrdrerQr�r�r�r�r�r�rrr$r�r;r+r,r-r/r0r1r2r�r�rrrr�r�rLrhr�rqrrtr�r�r6rr�rOrgr'r%riri�s�������!�#>�#>�#>�#>�J����<
�
�
�D�D�D�D�("9�"9�"9�"9�H���� 4�4�4�U�U�U�n���0���#�#�#�J7�7�7�$�$�$�Lu�u�u�n���8
3�
3�
3����,,�,�,�\ � � �D"�"�"�.FJ�^�^�^�^�@K�K�K�"���86:�{�{�{�{�z2�2�2�h���.����F�F�F�F�
����	J�	J�	J�05�2�2�2�2�"'�"'�"'�H � � �B�B�B�09�09�09�09�d+C�+C�+C�+C�Z/�/�/�!%�@�@�@�@�@�@r'ric�@�tj�|��}|dkr�|�dd��|�dd��|�dtd��|�dtd��dd	lmcm}t|d
g��a	t|dg��a
t|dg��ad	S|d
kr�tjj
}|�dd
��d|dz|d<d|d<d|dz|d<d|d<d|dz|d<dd	lmcm}t|d
g��a	t|dg��a
tj�||��d	S|}|dkrd}|�d|��|�dd��|�dt$j�dd����|�dt$j�dd����d	S)zDCalculate additional variables for use in the build (called by gyp).r��OSr�z.dylib�SHARED_LIB_DIRr�LIB_DIRrN�+generator_additional_non_configuration_keys�"generator_additional_path_sections�!generator_extra_sources_for_rulesr)r;r!rrrrSrrrT�android�linuxz.sor
rr�)r-rz�	GetFlavor�
setdefaultr��gyp.generator.xcode�	generator�xcode�getattrr�r�r��MSVSUtil�TARGET_TYPE_EXT�gyp.generator.msvs�msvsr.�CalculateCommonVariablesr<r=rw)r��paramsr1�xcode_generator�exts�msvs_generator�operating_systems       r%r�r�~s����:����'�'�&��u�_�_�� � ��u�-�-�-�� � �!4�h�?�?�?�� � �!1�!<�]�!K�M�M�M�� � ��!<�]�!K�M�M�M�
2�1�1�1�1�1�1�1�1�29�/�5�r�3;�3;�/�)0��,�b�*2�*2�&�)0��+�R�)1�)1�%�%�%�
�����<�'�D�� � ��u�-�-�-�-0�4��3E�-E��)�*�-/��)�*�-0�4�8H�3I�-I��)�*�-/��)�*�-0�4�8H�3I�-I��)�*�0�/�/�/�/�/�/�/�/�29�.�5�r�3;�3;�/�)0��,�b�*2�*2�&���/�/�0A�6�J�J�J�J�J���
���� ��� � ��'7�8�8�8�� � �!4�e�<�<�<�� � �!1�!#����o�u�!E�!E�G�G�G�� � ��!#����o�u�!E�!E�G�G�G�G�Gr'c�(�tj�|djpd��}|�di���dd��}tj�tj�||����S)zEReturns the path from the toplevel_dir to the build output directory.�optionsr;r��
output_dirr�)r<r=r�generator_outputr�r�rw)r��
generator_dirr�s   r%�ComputeOutputDirr��sr���'�/�/�&��"3�"D�"K��L�L�-��z�z�+�R�0�0�4�4�\�5�I�I�*�
��	�	�"�'�,�,�}�j�A�A�	B�	B�Br'c��|dj}tj�tj�|t|��d����}||d�adS)zBCalled by __init__ to initialize generator values based on params.r��gypfiles)�toplevel�qualified_out_dirN)rr<r=r�rwr��generator_filelist_paths)r�r�r�s   r%�CalculateGeneratorInputInfor��sf���I�
�
+�(��g�&�&�r�w�|�|�� ��(�(�*�(6�(6�7�7��
�,�����r'r�c�`�tj�|��t||��S)z;Open |path| for writing, creating directories if necessary.)r-rz�EnsureDirExists�open)r=�modes  r%r�r��s(���*���T�"�"�"�	
�d�D�	�	�r'c�F�|�|d��}|r|dz|zS|S)Nrr7)r�)r�wrappers�prog�wrappers    r%�CommandWithWrapperr��s1���L�L��b�!�!�'�� ��S�=�4���	
�+r'c
�z�
�ttj�dd����}|r|Stjdvr�ddl�
G�
fd�d�
j��}|��}�
�|��|_	�
j
j��
�
|����td|jdz��}tdttj�d	d
������}t!||��Stj�d��r�tj�d��r�t)d��5}t+jd
��}|D]Z}|�|��}|s�tdt|�d����dz��ccddd��S	ddd��n#1swxYwYdStjdkr?	tt3jgd�����}	td|	d
z��S#YdSxYwdS)z6Returns a best-guess for a number of concurrent links.�GYP_LINK_CONCURRENCYr)�win32�cygwinNc
���eZdZd�jfd�jfd�jfd�jfd�jfd�jfd�jfd�jfd	�jfg	Zd
S)�1GetDefaultConcurrentLinks.<locals>.MEMORYSTATUSEX�dwLength�dwMemoryLoad�ullTotalPhys�ullAvailPhys�ullTotalPageFile�ullAvailPageFile�ullTotalVirtual�ullAvailVirtual�sullAvailExtendedVirtualN)rcrdre�c_ulong�c_ulonglong�_fields_)�ctypess�r%�MEMORYSTATUSEXr��sw�������	�V�^�$�	���(�	��+�,�	��+�,�	�V�/�0�	�V�/�0�	�F�.�/�	�F�.�/�	#�V�%7�8�
�h�h�hr'r�r�l�GYP_LINK_CONCURRENCY_MAXlr�z
/proc/meminfoz^MemTotal:\s*(\d*)\s*kBi��darwin)�sysctlz-nz
hw.memsize)rNr<r�r�r��platformr��	Structure�sizeofr��windll�kernel32�GlobalMemoryStatusEx�byref�maxr��minr!r=�existsr�r+�compiler,�group�
subprocess�check_output)�	pool_sizer��stat�	mem_limit�hard_cap�meminfo�memtotal_re�liner,�avail_bytesr�s          @r%�GetDefaultConcurrentLinksr�s�����"�*�.�.�!7��;�;�<�<�)������\�(�(�(��M�M�M���������)�����>���D��M�M�$�'�'�D�M�
�M��/�/����T�0B�0B�C�C�C��A�t�(�]�;�<�<�I��1�c�"�*�.�.�)C�U�K�K�L�L�M�M�H��y�(�#�#�#�
�|���w�'�'�
�	�w�~�~�o�&�&�@��� � �@�G��j�!;�<�<���	@�	@�D��#�#�D�)�)�%�����Q��E�K�K��N�N�+�+�
�>�?�?�
?�
?�@�@�@�@�@�@�@�@�	@�@�@�@�@�@�@�@�@�@�@�@����@�@�@�@�
�1�
�|�x�����
�/�0N�0N�0N�O�O�P�P�k���K�M�2�
3�
3�3���
�Q�Q����
�1s� A%G�G#�&G#�=5H3�3H8c��|rdndS)zwReturns the suffix used to select an appropriate linking rule depending on
  whether the manifest embedding is enabled.�_embedrrg��embed_manifests r%r8r8s��$�	+����+r'c	����fd�}t���}ttj�dd����dk}d|���z}tj�d|�d�}||dd	��}|�d
|z||ddd
d���|�d|z||ddd
d���tj�d|�d�}||dd��}|�d|zd|���z|ddd���dS)z7Adds link rules for Windows platform to |master_ninja|.c�D��ddd�|}dtj|||�d�zS)N�1�2)�exe�dllz�%(python)s gyp-win-tool link-with-manifests $arch %(embed)s %(out)s "%(ldcmd)s" %(resname)s $mt $rc "$intermediatemanifest" $manifests)�pythonr��ldcmd�resname�embed)r�r!)rr��binary_type�
resource_namers    �r%�FullLinkCommandz)_AddWinLinkRules.<locals>.FullLinkCommandsK���
�
�����M������'�&�)�)�)�)r'�GYP_USE_SEPARATE_MSPDBSRV�0rzLINK%s(DLL) $binaryz! gyp-win-tool link-wrapper $arch z7 $ld /nologo $implibflag /DLL /OUT:$binary @$binary.rspz$binaryrr z$binary.rspz$libs $in_newline $ldflagsT�	link_pool)rQrr�r�r�rTrz& $ld /nologo /OUT:$binary @$binary.rsprrzLINK%s $binaryz$in_newline $libs $ldflags)rQrr�r�rTN)	r8rNr<r�r��upperr�r!rl)�master_ninjarr�rule_name_suffix�use_separate_mspdbsrv�dlldesc�dllcmd�exe_cmds `      r%�_AddWinLinkRulesr#s����)�)�)�)�)�/�~�>�>��	�"�*�.�.�4�c�
:�
:�;�;�q�@��!�$4�$:�$:�$<�$<�<�'�"�n�n�n�.C�.C�.C�
E�&��?�6�9�e�4�4�&����H�/�/� '��)�$@��$��&�&�&����O�&6�6� '��)�$@��$��&�&�&��~�~�~�4�4�4�6�'�
�O�G�Y��6�6�'����F�-�-� 0�3C�3I�3I�3K�3K� K�#�)�$@�$��&�&�&�&�&r'c�N%���|d}tj�|��}|�di��}tj�tj�t|�������}tj�|j	|��}	ttj�|	d����}
tj|
d���}tj�
||	|��|dkrd}d}
d}d	}d
}nd}d}
d
}d}d}d}d}|}d}d}d}d}d}d}d}d}d}tj�|d��\}}}||�dg��}tj�||j	��} i}!|D�]7\}"}#|"dkr tj�| |#��}|"dkr tj�| |#��}|"dkr7tj�| |#��}
|
�d��r|
}|"dkr tj�| |#��}|"dkr"tj�| |#��}|#}|"dkr"tj�| |#��}|#}|"dkr tj�| |#��}|"dkr tj�| |#��}|"dkr tj�| |#��}|"d kr tj�| |#��}|"d!kr tj�| |#��}|"d"kr tj�| |#��}|"�d#��r9tj�| |#��|!|"dt#d#���<��9tj���D]}\}"}#|"����d#��rQ|"dt#d#���}$t+jd$d%|$��}$tj�| |#��|!|$<�~|�d&d��}%|%rd'|%z|!d(<|dkr��fd)�|D��}&d}'|�d*d��s tj�|&|��}'tj�|	||'t��}(t5|(�����D]P\})}*|r|}*t7d|!t9|*d����}+|r
|+|)d+krd,nd-z
}+|�d.|)z|+���Qt=d/dg|
��}
|�dt7d|!|
����t=d0dg|��}|�d1t7d|!|����|dkr�|�d2|��|�d3d4��|�d|��|�d5d6��|�d7d8��|�d9d:��|�d;d<��n�|�d2t7d(|!|����|�d=t7d(|!|����|�dt=d>dg|����|d?krL|�dt=d@dg|����|�dt=dAd!g|����t>�r�|s|
}|s|}|�dBt=dCg|����|�dDt=dEg|����|�dFt=dGg|����t=dHg|��}t=dIg|��}dJ|vr|r|� dJ|
��}dK|vr|r|� dK|��}|�dLt7d|!|����|�dMt7d|!|����|dkr|�dN|��nJ|�dNt7d(|!|����|�dOt7d(|!|����|�!��|�"dPtG���Q��|�!��|dkrdRndS},|dkrM|�$ddTdUdV|,�W��|�$dXdTdY�Z��|�$d1d[d\dV|,�W��n�d]}-d^}.|�$ddT|-d_d`|,�a��|�$d1d[|.d_db|,�a��|�$d3dcddtJj&z�Z��|�$d5dedftJj&z�Z��|�$dgdhditJj&z�Z��|d?kr�|dkr�|�$djdkdl�Z��|�$dmdkdn�Z��dodpdqdr�z}/|�$dsdtdu|/dvdwizdxdydP�z��|�$d{d|du|/dvdwizdxd}dP�z��|�$d~dd�dP�����n?|dkrK|�$djd�d�tJj&zd_d�����tO|du����tO|d������n�|�$d�d�d�dV|,�W��|�$d�d�d�dV|,�W��|�$djd�d��Z��|�$d�d�d��Z��|�$d�d�d�d�d�iz�Z��d�}0d�|0d�dr�z}/d�}1|�$dsd�du|/|1d�d��zdxd�dP�z��|�$d�d�du|0|1d�d��zdxd�dP�z��|�$d{d�du|/|1d�d��zdxd�dP�z��|�$d�d�du|0|1d�d��zdxd�dP�z��|�$d~d�d�dP����|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|�$d�d�d��Z��|dkr&|�$d�d�d�tJj&z�Z��n|�$d�d�d��Z��|dkr&|�$d�d�d�tJj&z�Z��n7|d�kr|�$d�d�dŬZ��n|�$d�d�dƬZ��|�!��tQ��}2|d�D]X}tj�)|�tj�|����D]}3|2�*|3����YtQ��}4i}5i}6tQ��}7tQ��}8|D�]�}9tj�|9��\}}:};||�dg��}<||<ksJd�|<�d�|������|9}=|d?kr&tj+�,|||=��tj�-||j	d���}tj�.||:|;��}>|>�/dʦ�}>taj1|>���2��}?tj�3|��}@d�}A|;d�kr|Ad�|;zz
}Atj�|A|@|:d�z��}Bti��}Ctk|?|5|@||C|	|B||j	�Ϧ	�	}D|D�6|=�|��}3|C�7��dkr�ttj�|	|B����5}E|E�8|C�9����ddd��n#1swxYwY|C�:��|�;|B��|3r�|:|3�<��kr5|=d�d�kr)|6�=|:g���>|3��|3|5|9<|9|2vr'|4�*|3�<����|8�*|:�����|7�*|:�����|6rb|�!��|�?dѦ�t5|6��D])}F|�@|Fd�dӄ|6|FD�����*|7|8z
}7|7rQ|�!��|�?dԦ�t5|7��D]}:|�@|:dҦ��|4ra|�!��|�@d�d�t5|4����|�A|�d�dզ���|
�:��dS)�Nr�r�zbuild.ninja�x)�widthr)zlib.exe�UNSETzlink.exez$ldr�r�zc++z$ccz$cxxr�r�r�r�r�make_global_settings�ARzAR.host�CCzclang-cl�CXXzCC.hostzCXX.host�LDzLD.host�NMzNM.host�READELFzREADELF.host�_wrapperz\.HOST$z.hostr�zexport DEVELOPER_DIR='%s' &&�LINKc�8��g|]}�|d���S)r�rg)r��qualified_targetr��target_dictss  ��r%r�z+GenerateOutputForConfig.<locals>.<listcomp>�s:���4�4�4�#��,�-�.>�?��L�4�4�4r'�"ninja_use_custom_environment_filesrkz -m32z -m64�cl_�	CC_target�
CXX_targetr�r�rzmidl.exer�zrc.exe�ml_x86zml.exe�ml_x64zml64.exe�mtzmt.exer��	AR_targetr��	NM_target�READELF_target�ar_host�AR_host�nm_host�NM_host�readelf_host�READELF_host�CC_host�CXX_hostz$(CC)z$(CXX)r�r��ld_host�	ldxx_hostr)�depth�msvc�gcczCC $outzU$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $outz$out.d)rQrrA�depsr�zE$cc $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $out)rQrzCXX $outzX$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc $cflags_pch_cc -c $in -o $outz_ninja -t msvc -e $arch -- $cc /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_c zaninja -t msvc -e $arch -- $cxx /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_cc z$out.rspz$$defines $includes $cflags $cflags_c)rQrr�r�rKz%$defines $includes $cflags $cflags_cczIDL $inzd%s gyp-win-tool midl-wrapper $arch $outdir $tlb $h $dlldata $iid $proxy $in $midl_includes $idlflagszRC $inzU%s gyp-win-tool rc-wrapper $arch $rc $defines $resource_includes $rcflags /fo$out $inr�zASM $outzS%s gyp-win-tool asm-wrapper $arch $asm $defines $includes $asmflags /c /Fo $out $inr[zAR $outz'rm -f $out && $ar rcs $arflags $out $inrXz(rm -f $out && $ar rcsT $arflags $out $inz�if [ ! -e $lib -o ! -e $lib.TOC ]; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz;$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)szI{ $readelf -d $lib | grep SONAME ; $nm -gD -f p $lib | cut -f1-2 -d' '; })r �extract_tocr zSOLINK $libT�suffixz@$link_file_listz$link_file_listz<-Wl,--whole-archive $in $solibs -Wl,--no-whole-archive $libs)rQr�rr�r�rTrzSOLINK(module) $libz3-Wl,--start-group $in $solibs $libs -Wl,--end-grouprz	LINK $outzH$ld $ldflags -o $out -Wl,--start-group $in $solibs $libs -Wl,--end-group)rQrrTzLIB $outzU%s gyp-win-tool link-wrapper $arch False $ar /nologo /ignore:4221 /OUT:$out @$out.rspz$in_newline $libflags)rQrr�r�r
Fr�z	OBJC $outz[$cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc $cflags_pch_objc -c $in -o $outr�zOBJCXX $outz^$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_objcc $cflags_pch_objcc -c $in -o $outzLIBTOOL-STATIC $out, POSTBUILDSzarm -f $out && ./gyp-mac-tool filter-libtool libtool $libtool_flags -static -o $out $in$postbuildsrzLIPO $out, POSTBUILDSz6rm -f $out && lipo -create $in -output $out$postbuildsrzSOLIPO $out, POSTBUILDSz\rm -f $lib $lib.TOC && lipo -create $in -output $lib$postbuilds &&%(extract_toc)s > $lib.TOCrLz]{ otool -l $lib | grep LC_ID_DYLIB -A 5; nm -gP $lib | cut -f1-2 -d' ' | grep -v U$$; true; }z($ld %(type)s $ldflags -o $lib %(suffix)sz�if [ ! -e $lib -o ! -e $lib.TOC ] || otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz@$link_file_list$postbuildszSOLINK $lib, POSTBUILDSz-shared)rMrFz$in $solibs $libs�solink_notoczSOLINK(module) $lib, POSTBUILDSz-bundle�solink_module_notoczLINK $out, POSTBUILDSz1$ld $ldflags -o $out $in $solibs $libs$postbuildsr�zPREPROCESS INFOPLIST $outzT$cc -E -P -Wno-trigraphs -x c $defines $in -o $out && plutil -convert xml1 $out $outr�zCOPY INFOPLIST $inz:$env ./gyp-mac-tool copy-info-plist $in $out $binary $keysr�zMERGE INFOPLISTS $inz-$env ./gyp-mac-tool merge-info-plist $out $inr�zCOMPILE XCASSETS $inz.$env ./gyp-mac-tool compile-xcassets $keys $inr�z2COMPILE HEADER MAPS AND COPY FRAMEWORK HEADERS $inz�$env ./gyp-mac-tool compile-ios-framework-header-map $out $framework $in && $env ./gyp-mac-tool copy-ios-framework-headers $framework $copy_headersr�zMACTOOL $mactool_cmd $inz1$env ./gyp-mac-tool $mactool_cmd $in $out $binaryrcz"PACKAGE FRAMEWORK $out, POSTBUILDSzG./gyp-mac-tool package-framework $out $version$postbuilds && touch $outraz&PACKAGE IOS FRAMEWORK $out, POSTBUILDSzC./gyp-mac-tool package-ios-framework $out $postbuilds && touch $outr�z
STAMP $outz%s gyp-win-tool stamp $outz${postbuilds}touch $outr{z
COPY $in $outz)%s gyp-win-tool recursive-mirror $in $out�zoszrm -rf $out && cp -fRP $in $outz>ln -f $in $out 2>/dev/null || (rm -rf $out && cp -af $in $out)�build_filesz;make_global_settings needs to be the same for all targets. z vs. zutf-8r�r�r;r�)rr�zShort names for targets.�phonyc�6�g|]}|�����Srg)r^)r�r!s  r%r�z+GenerateOutputForConfig.<locals>.<listcomp>�	s2��/O�/O�/O�1�q�}�}���/O�/O�/Or'z(Empty targets (output for completeness).�all�default_target)Br-rzr�r�r<r=r�rwr�rr�r6rq�CopyTool�ParseQualifiedTargetr{r�r"r�r��lowerr+r�r.�ExtractSharedMSVSSystemIncludes�GenerateEnvironmentFilesrdr�r2r�r�$generator_supports_multiple_toolsetsr0r�rTrrlr�r!r#rb�
AllTargetsrcr��MergeGlobalXcodeSettingsToSpec�RelativePath�QualifiedTarget�encodergrhrkr�rrir�tell�write�getvalue�closer�r^r�r��commentr��default)G�target_listr3�datar�r�r�r1r�rprs�master_ninja_filerr�r�r�r�rFr�rGr>r�r��cc_host_global_setting�cxx_host_global_setting�clang_clr�r@r�rB�
build_filer>r(�
build_to_rootr��keyr�
key_prefixr��configs�shared_system_includes�cl_pathsr@r=rrK�
cc_command�cxx_command�mtime_preserving_solink_base�solink_base�
solink_suffix�all_targetsr�rPrn�target_short_names�empty_target_names�non_empty_target_namesr2r�r��this_make_global_settingsr��qualified_target_for_hashrm�	base_pathr�r~�ninja_output�writerr��
short_namesG `  `                                                                  r%�GenerateOutputForConfigr�Hs=�����9��'��:����'�'�&��J�J�0�"�5�5�/��g����g�l�l�#�F�+�+�[�9�9�;�;�)��7�<�<�� 4�i�@�@�.� �����n�m�!L�!L�M�M���$�%6�c�B�B�B�,��*���f�n�o�>�>�>��u�_�_�	�B�
�B�
�C�	�B��G�G�	
�B�	
�B�
�C�	�B��D��G��I��'��'�
�(��� ��
�(��"��'��'��,��Z�4�4�[��^�D�D��*�a���j�)�-�-�.D�b�I�I���*�/�/�	�07�0D�F�F�-�
�(�(�L�L�j�c�5�
�d�{�{�
�7�<�<�
�u�-�-�b�
�i�������]�E�2�2�g�
�d�{�{�
�7�<�<�
�u�-�-�b�	���Z�	 �	 ����
�e�|�|��G�L�L���.�.�c�
�i�������]�E�2�2�g�$��
�j�������m�U�3�3�h� %��
�d�{�{�
�7�<�<�
�u�-�-�b�
�i�������]�E�2�2�g�
�d�{�{�
�7�<�<�
�u�-�-�b�
�i�������]�E�2�2�g�
�i�������]�E�2�2�g�
�n����W�\�\�-��7�7�l�
�|�|�J���L�)+����m�U�)K�)K�h�s�$�S��_�_�$�$�%�&���J�$�$�&�&�@�@�j�c�5�
�y�y�{�{���J�'�'�@��(��Z���(�(�)�j��6�*�g�z�:�:�j��W�\�\�-��?�?�h�z���%�)�)�*=�t�D�D���J�5�8I�I�H�V���u�_�_�4�4�4�4�4�'2�4�4�4�G�!�����C�Q�G�G�(�

�
�
<�
<���(�(���!�:�:���)?��M�M�H��X�^�^�-�-�.�.�	3�	3�
��d�	����"�4��
�T�5�
)�
)�+�+�g�	�;��t�u�}�}�G�G�'�:�����E�D�L�'�2�2�2�2��;��-�r�2�2�"�����0��x��D�D�E�E�E��L�%�0�#�6�6�#�����1�%��3�G�G�H�H�H��u�_�_����$��#�#�#����%��,�,�,����$��#�#�#����$��)�)�)����(�H�-�-�-����(�J�/�/�/����$��)�)�)�)����$� 2�6�8�R� H� H�I�I�I����&�"4�V�X�t�"L�"L�M�M�M����$� 2�K��3F�� K� K�L�L�L�
�������
�"�K��#6��;�;�=�=�=����
�'�)9�9�(E�w�O�O�Q�Q�Q�*�(����g����h����)�%7���W�%M�%M�N�N�N����)�%7���W�%M�%M�N�N�N����.�,�n�-=�|�L�L�N�N�N� �)��g�6�6�G�!�:�,��9�9�H��'���4��&�.�.�w��;�;�g��8��� 7��(�0�0��3�?�?�h����)�,�Y��'�J�J�L�L�L����*�,�Z��8�L�L�N�N�N�
�������I�w�/�/�/�/����I�'9�
�(�G�(%�(%�&�&�&����K�);�
�(�I�*'�*'�(�(�(����������K�'@�'B�'B��C�C�C��������U�?�?����$��u�_�_����
��-���
���������-��/�/�/�
�����.���
�����<�J�>�K����
����<��
�����������=��
���������*�,/�N�;��=�=�=����
��L��~��	� � � ������I��~��� � � ��u�_�_��5������
��7��9�9�9������8��:�:�:�	�L�:�<�<�		<�!������
�*�h�8J�-K�K��
H����������'�
�*�h�8J�-K�K��K�����������E����������������@��� ��/��1�1�1��\�$�7�7�7�7��\�%�8�8�8�8�8������1���
���������2���
�������
�3����������)�F��H�H�H�����+�'��I�
J�J�	�L�L�L�=�K�	
�"�G�H�H�	H�!�&2�M�����+�
�*�
�6?�.A�.A�A��)����������+�
��m�Y�G�G�G��)����������3�
�*�
�6?�.A�.A�A��)����������3�
��}�i�H�H�H��)����������)�.����������-�0��2�2�2�
����&�J��L�L�L�����(�=��?�?�?�����(�>��@�@�@����%�F�D��E�E�E�����,�A��C�C�C�����6������
����:������
�u�_�_����
��*�S�^�;��=�=�=�=�
���
��'��)�)�)��u�_�_�����!�9�C�N�J��L�L�L�L���������!�/��1�1�1�1�
����!�N��P�P�P����������+��=�)���j��*�'�'��(4�(*��(8�(8��(D�(D�F�F�����o�o�f���������+��.���
�u�u���5�5��%�6#�6#��	�
�'�'�(8�9�9��J��g�!%�Z� 0� 4� 4�5K�R� P� P���#<�<�<�<�<�	"�	"�	"�$8�$8�	:�=�<�<��(�)�D�
����	��8�8��j�9I�4�P�P�P�
��(�(��W�5I�).�0�0�J�!$�
� :� :�:�t�;B�!D�!D�� 9� @� @�� I� I���[�!:�;�;�E�E�G�G�N�����
�+�+�I�
�C��(���	�S�7�]��c��'�,�,�s�I�t�h��?�?�K��:�:�L�
����I�%�'���g�.B�D�D�D�F�
�
�
�d�K��
A�
A�F������Q����b�g�l�l�>�;�?�?�@�@�2�J�����.�.�0�0�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2����������K�(�(�(�
�#�	
��#�#�%�%�	%�	%�$�y�/�X�*E�*E��%�%�d�B�/�/�6�6�v�>�>�>�)/�n�%�&�	�[�	(�	(�����*�*�,�,�-�-�-�� � ��&�&�&�&����T�"�"�"�"��P����������3�4�4�4��/�0�0�P�P�
�����W�/O�/O�/A�*�/M�/O�/O�/O�P�P�P�P�*�,B�B���(����������C�D�D�D��)�*�*�(�(������w�'�'�'�'��G����������u�g�v�k�':�':�;�;�;�����,�,�-=�u�E�E�F�F�F��������s�A(AB�BAB	�BAB	c���|d}|D]V}tj�|jd|��}dd|g}t	d|�d|����tj|���WdS)Nr�r�rrz-Cz
Building [z]: )r<r=rwrr�r��
check_call)rhr�r�r�r��builddir�	argumentss       r%�PerformBuildr��	sz���9��'��%�%�f��w�|�|�G�0�%��@�@�H��$��)�I�	�E������
3�4�4�4���)�$�$�$�$�	%�%r'c��tjtjtj��|\}}}}}t|||||��dSr )�signal�SIGINT�SIG_IGNr�)�arglistrgr3rhr�r�s      r%�CallGenerateOutputForConfigr��	sF��	�-��
�v�~�.�.�.�;B�8�;��d�F�K��+�|�T�6�;�O�O�O�O�Or'c���tj�|��}|�di���dd��}tj�|��dkr6t
j||��\}}t
j||t��\}}|rt|||||��dS||dd}|dr�	tjt|����}g}|D]}|�|||||f���|�t |��dS#t"$r}	|���|	�d}	~	wwxYw|D]}t|||||���dS)Nr�r�r)rr��parallel)r-r��&CloneConfigurationForDeviceAndEmulatorr�rzr�r��ShardTargets�InsertLargePdbShimsr�r��multiprocessing�Poolr"r�r�r��KeyboardInterrupt�	terminate)
rgr3rhr��user_config�config_namesrT�arglistsr��es
          r%�GenerateOutputr��	s����$�K�K����,��
�
�,�b�1�1�5�5�h��E�E�+��Z���&�!�!�U�*�*� (� 5�k�<� P� P��K�� (� <��\�#>�!@�!@��K���-��K��t�V�'�)�)�)�)�)� ��A��/�0@�A�L�
�j��-�	��#�C��$5�$5�6�6����'�	F�	F�K�
�/�/��L�$���D�F�F�F�F����,�h�7�7�7�7�7��
��������������������&�-�-�+���\�4�� +�	-�	-�	-�	-�-�-s�AD6�6
E�E�E)r�)7�
__future__rr�r{rgr�r��os.pathr<r+r�r�r�rir-�
gyp.commonr�gyp.msvs_emulation�gyp.MSVSUtilr��gyp.xcode_emulation�	cStringIOr�ImportError�ior�gyp.ninja_syntaxr6r�r�r�r�r�rz�CrossCompileRequestedr[r&r2r9rB�objectrDrir�r�r�r�r�rr8r#r�r�r�r�rgr'r%�<module>r�s-��
&�%�%�%�%�%�������������������������	�	�	�	�
�
�
�
�����
�
�
�
�
�
�
�
�
�
�
�
�����!�!�!�!�!�!���������������� � � � � � � ������������������*�)�)�)�)�)�'�'�'�'�'�'������+�0� �.�
�$� ���=���D/1�+�%'�"�$&�!���'*�z�'G�'G�'I�'I�$�
�
�
�	;�	;�	;�C�C�C�/�/�/�S<�S<�S<�S<�S<�V�S<�S<�S<�\b�b�b�b�b�&�b�b�b�J-2G�2G�2G�h
C�
C�
C�����������4
�4
�4
�n,�,�,�.&�.&�.&�bJ	�J	�J	�Z%�%�%�P�P�P�-�-�-�-�-s�A�A%�$A%