����JFIFXX�����    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222����"��4�� ���,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu���#ډb���_�N�?��wQ���5-�~�I���8����TK<5o�Iv-�����k�_U_�����~b�M��d����Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�?_�'ϔ��_�Ջt��=||I ��6�έ"�����D���/[�k�9���Y�8ds|\���Ҿp6�Ҵ���]��.����6�z<�v��@]�i%��$j��~�g��J>��no����pM[me�i$[����s�o�ᘨ�˸ nɜG-�ĨU�ycP�3.DB�li�;��hj���x7Z^�N�h������N3u{�:j�x�힞��#M&��jL P@_���� P��&��o8������9�����@Sz6�t7#O�ߋ �s}Yf�T���lmr����Z)'N��k�۞p����w\�Tȯ?�8`�O��i{wﭹW�[�r�� ��Q4F�׊���3m&L�=��h3����z~��#�\�l :�F,j@�� ʱ�wQT����8�"kJO���6�֚l����}���R�>ډK���]��y����&����p�}b��;N�1�m�r$�|��7�>e�@B�TM*-iH��g�D�)� E�m�|�ؘbҗ�a��Ҿ����t4���o���G��*oCN�rP���Q��@z,|?W[0�����:�n,jWiE��W��$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S����VN;�}�s?.����� w�9��˟<���Mq4�Wv'��{)0�1mB��V����W[�����8�/<� �%���wT^�5���b��)iM� pg�N�&ݝ��VO~�q���u���9� ����!��J27����$O-���! �:�%H��� ـ����y�ΠM=t{!S�� oK8������t<����è:a������[�����ա�H���~��w��Qz`�po�^ ����Q��n� �,uu�C�$ ^���,������8�#��:�6��e�|~���!�3�3.�\0��q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y�|�y��� ~�6�@c��1vOp�Ig����4��l�OD���L����� R���c���j�_�uX6��3?nk��Wy�f;^*B� ��@�~a�`��Eu������+���6�L��.ü>��}y���}_�O�6�͐�:�YrG�X��kG�����l^w���~㒶sy��Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2��#I/�׍qz��^t�̔���b�Yz4x���t�){ OH��+(E��A&�N�������XT��o��"�XC��'���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�|Lp�d�H��}�(�.|����k��c4^�"�����Z?ȕ ��a<�L�!039C� �Eu�C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf���M}7����]����s2tcS{�\icTx;�\��7K���P���ʇ Z O-��~��c>"��?�������P��E��O�8��@�8��G��Q�g�a�Վ���󁶠�䧘��_%#r�>�1�z�a��eb��qcPѵ��n���#L��� =��׀t� L�7�`��V���A{�C:�g���e@�w1 Xp3�c3�ġ����p��M"'-�@n4���fG��B3�DJ�8[Jo�ߐ���gK)ƛ��$���� ���8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`���?��K����QK�d����B`�s}�>���`��*�>��,*@J�d�oF*����弝��O}�k��s��]��y�ߘ��c1G�V���<=�7��7����6�q�PT��tXԀ�!9*4�4Tހ3XΛex�46���Y��D ����� �BdemDa����\�_l,��G�/���֌7���Y�](�xTt^%�GE�����4�}bT���ڹ�����;Y)���B�Q��u��>J/J �⮶.�XԄ��j�ݳ�+E��d ��r�5�_D�1 ��o�� �B�x�΢�#���<��W�����8���R6�@g�M�.��� dr�D��>(otU��@x=��~v���2� ӣ�d�oBd��3�eO�6�㣷�����ݜ6��6Y��Qz`��S��{���\P�~z m5{J/L��1������<�e�ͅPu�b�]�ϔ���'������f�b� Zpw��c`"��i���BD@:)ִ�:�]��hv�E�w���T�l��P���"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u�)]կ�����7x���s�M�-<ɯ�c��r�v�����@��$�ޮ}lk���a���'����>x��O\�ZFu>�����ck#��&:��`�$�ai�>2Δ����l���oF[h��lE�ܺ�Πk:)���`�� $[6�����9�����kOw�\|���8}������ބ:��񶐕��I�A1/�=�2[�,�!��.}gN#�u����b��� ~��݊��}34q����d�E��Lc��$��"�[q�U�硬g^��%B �z���r�pJ�ru%v\h1Y�ne`ǥ:g���pQM~�^�Xi� ��`S�:V29.�P���V�?B�k�� AEvw%�_�9C�Q����wKekPؠ�\�;Io d�{ ߞo�c1eP����\� `����E=���@K<�Y���eڼ�J���w����{av�F�'�M�@/J��+9p���|]�����Iw &`��8���&M�hg��[�{��Xj��%��Ӓ�$��(����ʹN���<>�I���RY���K2�NPlL�ɀ)��&e����B+ь����( � �JTx���_?EZ� }@ 6�U���뙢ط�z��dWI�n` D����噥�[��uV��"�G&Ú����2g�}&m��?ċ�"����Om#��������� ��{�ON��"S�X��Ne��ysQ���@Fn��Vg���dX�~nj�]J�<�K]:��FW��b�������62�=��5f����JKw��bf�X�55��~J �%^����:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v���g�8�1��f24;�V���ǔ�)����9���1\��c��v�/'Ƞ�w�������$�4�R-��t���� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃������A��20�c#��@ 0!1@AP"#2Q`$3V�%45a6�FRUq��� ����^7ׅ,$n�������+��F�`��2X'��0vM��p�L=������5��8������u�p~���.�`r�����\���O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;������S�T���1���i[U�ɵz�]��U)V�S6���3$K{�ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u�!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ���D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v�����멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$�JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4�[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ�dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il��d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J��oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.���3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N�����#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%���JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$���L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)�H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>�dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\�y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7��ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz��)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)'��8Ϣ�ٔ��ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'�L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3�������QT��a����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3�,#c�co��q�a)*Pt����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O���������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l�O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m���PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~�|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q��nxҍ!U�f�!eh�i�2�m���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{/ �?�͟��|1�:�#g��W�>$����d��J��d�B��=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l����l�cGs�ځ�������y�Ac�����\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6����N6�q������N ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td�� ?���N����a��3��m���C���w��������xA�m�q�m���m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4���r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�����Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q�(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9��3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#yw��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa����Q�#� WeF��ŮNj�p�J* mQ�N����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]��陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WPw���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp�BGv[]�u�Ov���0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R��� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(�>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG��{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>e]�����Q�r�:����g�,i"�����ԩA�*M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f�����֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ���˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)��h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������ G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W�I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��BS�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c���]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪�\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W�����6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}�����6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@�P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6�����m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw�k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e��R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN��ĕ��0 !01@Q"2AaPq3BR������?���@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j�ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^���ԯ̾9Z��F��������n��1��� ��]�[��)�'������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0��;_��3 !01"@AQa2Pq#3BR������?��ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6����������4B>��o��](��$B���m�����a�!=��?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a�84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b��$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7��k�� 403WebShell
403Webshell
Server IP : 97.74.90.209  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux live.indianstaffingfederation.org 4.18.0-553.54.1.el8_10.x86_64 #1 SMP Tue May 27 22:49:52 EDT 2025 x86_64
User : indianstaffing ( 1003)
PHP Version : 8.3.22
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/opt/nydus/ops/attr/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/opt/nydus/ops/attr/__pycache__/_make.cpython-39.pyc
a

Nh#h�y�@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlmZddlmZmZmZddlmZmZmZddlmZmZmZmZmZmZdd	lm Z m!Z!m"Z"m#Z#e$j%Z&d
Z'dZ(dZ)e
�*i�Z+e$�Z,e�-ej.ej/�Z0Gd
d�dej1�Z2e2j3Z3Gdd�de4�Z5e3ddddddddddddddfdd�Z6d�dddddd�dd�Z7d�dddddd�dd �Z8dd!d"d#�d$d%�Z9Gd&d'�d'e�Z:d(d)�Z;d*d+�Z<d,d-�d.d/�Z=d0d1�Z>d'd-�d2d3�Z?d4d5�Z@d6d7�ZAd8d9�ZBd:d;�ZCGd<d=�d=�ZDd>d?�ZEd@dA�ZFd�dBdC�ZGd�dDdE�ZHeHZIdFdG�ZJd"dddH�dIdJ�ZKd"dKdLdLdMdN�dOdP�ZLd"dKdQ�dRdS�ZMdTdU�ZNdVdMdW�dXdY�ZOdZd[�ZPd�d\d]�ZQdMd-�d^d_�ZRd�d`da�ZSdbdc�ZTddde�ZUdfdg�Z/dhdi�ZVdjd-�dkdl�ZWdddLddm�dndo�ZXdddLdpddq�drds�ZYdddLddt�dudv�ZZdddLdpddq�dwdx�Z[dLdLdydz�d{d|�Z\dKdLdLdLdLdLdLdydLdLdLddjd}�
d~d�Z]ddd��d�d��Z^Gd�d��d��Z_d�d��e_j`D�ZaeMeQeSe_ead��d�d��eaD�d��d�d��eaD�d��Z_Gd�d��d��ZbeQeSeb��ZbGd�d��d��Zcd�d��ecj`D�ZdeMeQeSecedd��edd��edd��ZcGd�dp�dp�Zed�d��d�D�ZdeMeQeSeeedd��edd��edd��Zee$fdfd�d��ZfeHddd��Gd�d��d���Zgd�d��Zhd�d��Z-dS)��)�annotationsN)�Callable�Mapping)�cached_property)�Any�
NamedTuple�TypeVar�)�_compat�_config�setters)�PY_3_10_PLUS�PY_3_11_PLUS�PY_3_13_PLUS�_AnnotationExtractor�_get_annotations�get_generic_base)�DefaultAlreadySetError�FrozenInstanceError�NotAnAttrsClassError�UnannotatedAttributeErrorz__attr_factory_%s)ztyping.ClassVarz
t.ClassVar�ClassVarztyping_extensions.ClassVarZ_attrs_cached_hashc@s(eZdZdZe��Zdd�Zdd�ZdS)�_NothingaF
    Sentinel to indicate the lack of a value when `None` is ambiguous.

    If extending attrs, you can use ``typing.Literal[NOTHING]`` to show
    that a value may be ``NOTHING``.

    .. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False.
    .. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant.
    cCsdS)N�NOTHING���selfrr�;/opt/nydus/tmp/pip-target-wgfnss67/lib/python/attr/_make.py�__repr__Jsz_Nothing.__repr__cCsdS)NFrrrrr�__bool__Msz_Nothing.__bool__N)	�__name__�
__module__�__qualname__�__doc__�enum�autorrrrrrrr=s
rc@s"eZdZdZed�dfdd�ZdS)�_CacheHashWrappera
    An integer subclass that pickles / copies as None

    This is used for non-slots classes with ``cache_hash=True``, to avoid
    serializing a potentially (even likely) invalid hash value. Since `None`
    is the default value for uncalculated hashes, whenever this is copied,
    the copy's value for the hash should automatically reset.

    See GH #613 for more details.
    NrcCs||fS�Nr)rZ_none_constructor�_argsrrr�
__reduce__esz_CacheHashWrapper.__reduce__)r r!r"r#�typer)rrrrr&Ysr&TFcCs�t|||d�\}}}}|dur:|dur:|dur:d}t|��|	durr|turVd}t|��t|	�sjd}t|��t|	�}|dur~i}t|
ttf�r�t	j
|
�}
|r�t|ttf�r�t|�}|r�t|ttf�r�t
|�}t|||d||||||
|||||
|d�S)a�
    Create a new field / attribute on a class.

    Identical to `attrs.field`, except it's not keyword-only.

    Consider using `attrs.field` in new code (``attr.ib`` will *never* go away,
    though).

    ..  warning::

        Does **nothing** unless the class is also decorated with
        `attr.s` (or similar)!


    .. versionadded:: 15.2.0 *convert*
    .. versionadded:: 16.3.0 *metadata*
    .. versionchanged:: 17.1.0 *validator* can be a ``list`` now.
    .. versionchanged:: 17.1.0
       *hash* is `None` and therefore mirrors *eq* by default.
    .. versionadded:: 17.3.0 *type*
    .. deprecated:: 17.4.0 *convert*
    .. versionadded:: 17.4.0
       *converter* as a replacement for the deprecated *convert* to achieve
       consistency with other noun-based arguments.
    .. versionadded:: 18.1.0
       ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionchanged:: 19.2.0 *convert* keyword argument removed.
    .. versionchanged:: 19.2.0 *repr* also accepts a custom callable.
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.3.0 *kw_only* backported to Python 2
    .. versionchanged:: 21.1.0
       *eq*, *order*, and *cmp* also accept a custom callable
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 22.2.0 *alias*
    TNF�6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.)�default�	validator�repr�cmp�hash�init�	converter�metadatar*�kw_only�eq�eq_key�order�	order_key�
on_setattr�alias)
�_determine_attrib_eq_order�	TypeErrorr�
ValueError�callable�Factory�
isinstance�list�tupler�pipe�and_�
_CountingAttr)r,r-r.r/r0r1r3r*r2�factoryr4r5r7r9r:r6r8�msgrrr�attribisR7��
�rH��strzdict[str, Any] | NonezMapping[str, object] | None�None)�script�globs�locs�filename�returncCst||d�}t|||�dS)z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    �execN)�compile�eval)rLrMrNrO�bytecoderrr�_compile_and_eval�s
rUzdict[str, Any])rLrOrM�localsrPc	Csz|durin|}d}|}t|�d|�d�|f}tj�||�}||krFqh|dd��d|�d�}|d7}qt||||�|S)zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr	T����-�>)�len�
splitlines�	linecache�cache�
setdefaultrU)	rLrOrMrVrN�count�
base_filenameZlinecache_tupleZold_valrrr�_linecache_and_compile�s
�
raz	list[str]r*)�cls_name�
attr_namesrPcCsF|�d�}i}t|�D] \}}|fdd�}t|�||<qt|tf|�S)z�
    Create a tuple subclass to hold `Attribute`s for an `attrs` class.

    The subclass is a bare tuple with properties for names.

    class MyClassAttributes(tuple):
        __slots__ = ()
        x = property(itemgetter(0))
    Z
AttributescSs||Sr'r)r�irrr�gettersz&_make_attr_tuple_class.<locals>.getter)�	enumerate�propertyr*rB)rbrcZattr_class_name�bodyrd�	attr_namererrr�_make_attr_tuple_classs

rjc@s&eZdZUded<ded<ded<dS)�_Attributesr*�attrs�list[Attribute]�
base_attrs�dict[str, type]Zbase_attrs_mapN)r r!r"�__annotations__rrrrrks
rkcCs2t|�}|�d�r(|�d�r(|dd�}|�t�S)z�
    Check whether *annot* is a typing.ClassVar.

    The string comparison hack is used to avoid evaluating all string
    annotations which would put attrs-based classes at a performance
    disadvantage compared to plain old classes.
    )�'�"r	rW)rJ�
startswith�endswith�_CLASSVAR_PREFIXES)Zannotrrr�
_is_class_var"srvcCs
||jvS)zR
    Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
    )�__dict__)�clsZattrib_namerrr�_has_own_attribute3sryz'tuple[list[Attribute], dict[str, type]]�rPcCs�g}i}t|jdd��D]H}t|dg�D]6}|js*|j|vr@q*|jdd�}|�|�|||j<q*qg}t�}t|�D](}|j|vr�qv|�d|�|�	|j�qv||fS)zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r	rW�__attrs_attrs__T��	inheritedr)
�reversed�__mro__�getattrr}�name�evolve�append�set�insert�add)rx�taken_attr_namesrn�
base_attr_map�base_cls�a�filtered�seenrrr�_collect_base_attrs:s"

r�cCsng}i}|jdd�D]N}t|dg�D]<}|j|vr6q&|jdd�}|�|j�|�|�|||j<q&q||fS)a-
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.

    N.B. *taken_attr_names* will be mutated.

    Adhere to the old incorrect behavior.

    Notably it collects from the front and considers inherited attributes which
    leads to the buggy behavior reported in #428.
    r	rWr{Tr|)rr�r�r�r�r�)rxr�rnr�r�r�rrr�_collect_base_attrs_broken[s

r�c	s0|j�t|��|dur$t|���}n�|dur�dd����D�}g}t�}���D]H\}	}
t|
�rbqP|�|	���|	t�}|j	t
ur�t|�}|�|	|f�qP||}|r�t
dd�t|�fdd�d	��d
��ntdd����D�d
d�d	�}tj���fdd�|D�}
|�r&t|dd�|
D��\}}nt|dd�|
D��\}}|�r`dd�|
D�}
dd�|D�}||
}|du�r�t|||��}d}dd�|D�D]H}|du�r�|jtu�r�d|��}t|��|du�r�|jtu�r�d}�q�|D]$}|j�s�t�|�dt|j���q�dd�|D�}t|j|�}t||�||�S)a3
    Transform all `_CountingAttr`s on a class into `Attribute`s.

    If *these* is passed, use that and don't look for them on the class.

    If *collect_by_mro* is True, collect them in the correct MRO order,
    otherwise use the old -- incorrect -- order.  See #428.

    Return an `_Attributes`.
    NTcSsh|]\}}|jtur|�qSr��	__class__rE��.0r��attrrrr�	<setcomp>�s
�z#_transform_attrs.<locals>.<setcomp>z1The following `attr.ib`s lack a type annotation: �, cs��|�jSr')�get�counter)�n)�cdrr�<lambda>��z"_transform_attrs.<locals>.<lambda>)�key�.css$|]\}}|jtur||fVqdSr'r�r�rrr�	<genexpr>�s
�z#_transform_attrs.<locals>.<genexpr>cSs
|djS�Nr	)r�)�errrr��r�cs"g|]\}}�||��|���qSr)r�)r�ri�ca)�anns�fcarr�
<listcomp>�sz$_transform_attrs.<locals>.<listcomp>cSsh|]
}|j�qSr�r��r�r�rrrr��r�cSsh|]
}|j�qSrr�r�rrrr��r�cSsg|]}|jdd��qS�T)r4�r�r�rrrr��r�cSsg|]}|jdd��qSr�r�r�rrrr��r�Fcss&|]}|jdur|jdur|VqdS)FN)r1r4r�rrrr��r�zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: r:cSsg|]
}|j�qSrr�r�rrrr��r�)rwrrA�itemsr�rvr�r�rr�rErHr�r�join�sorted�	Attribute�from_counting_attrr�r�rBr,r=r:�_OBJ_SETATTR�__get__�_default_init_alias_forr�rjr rk)rx�these�auto_attribsr4�collect_by_mro�field_transformerZca_listZca_namesZannot_namesrir*r�ZunannotatedZ	own_attrsrnr�rlZhad_defaultrGrcZ
AttrsClassr)r�r�r�r�_transform_attrsws�
�

������	��
�

r�cCsngd�}|dur|�d�n|�gd��|�ddg�t|d�}|tj|d�}td�|�||d	|id
�dS)N)	zdef wrapper(_cls):z    __class__ = _clsz�    def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):z+         func = cached_properties.get(item)z         if func is not None:z!              result = func(self)z1              _setter = _cached_setattr_get(self)z#              _setter(item, result)z              return resultz,         return original_getattr(self, item))z
         try:z2             return super().__getattribute__(item)z         except AttributeError:z4             if not hasattr(super(), '__getattr__'):z                 raisez-             return super().__getattr__(item)zY         original_error = f"'{self.__class__.__name__}' object has no attribute '{item}'"z-         raise AttributeError(original_error)z    return __getattr__z__getattr__ = wrapper(_cls)r�)�cached_properties�_cached_setattr_get�original_getattr�
�_cls)rV�__getattr__)r��extend�_generate_unique_filenamer�r�rar�)r�r�rx�linesZunique_filename�globrrr�_make_cached_property_getattr�s.
��
��
���r�cCs,t|t�r$|dvr$t�|||�dSt�dS)z4
    Attached to frozen classes as __setattr__.
    )�	__cause__�__context__�
__traceback__�__suppress_context__�	__notes__N)r@�
BaseException�__setattr__r�rr��valuerrr�_frozen_setattrssr�cCs*t|t�r"|dvr"t�||�dSt�dS)z4
    Attached to frozen classes as __delattr__.
    )r�N)r@r��__delattr__r)rr�rrr�_frozen_delattrs(sr�c	Os�z
|\}Wn,ty6dt|��d�}t|�d�Yn0|j}t|�}|D].}|jsVqJ|j}|j}||vrJt||�||<qJ|fi|��S)a
    Create a new instance, based on the first positional argument with
    *changes* applied.

    .. tip::

       On Python 3.13 and later, you can also use `copy.replace` instead.

    Args:

        inst:
            Instance of a class with *attrs* attributes. *inst* must be passed
            as a positional argument.

        changes:
            Keyword changes in the new copy.

    Returns:
        A copy of inst with *changes* incorporated.

    Raises:
        TypeError:
            If *attr_name* couldn't be found in the class ``__init__``.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    .. versionadded:: 17.1.0
    .. deprecated:: 23.1.0
       It is now deprecated to pass the instance using the keyword argument
       *inst*. It will raise a warning until at least April 2024, after which
       it will become an error. Always pass the instance as a positional
       argument.
    .. versionchanged:: 24.1.0
       *inst* can't be passed as a keyword argument anymore.
    z*evolve() takes 1 positional argument, but z were givenN)	r=rZr<r��fieldsr1r�r:r�)	�args�changes�instrGrxrlr�riZ	init_namerrrr�3s %
�r�c@s�eZdZdZdZdd�dd�Zdd�Zd	d
�dd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d+d,�d-d.�Zd+d+d,�d/d0�Zd1S)2�
_ClassBuilderz(
    Iteratively build *one* class.
    )�_add_method_dunders�_attr_names�_attrs�_base_attr_map�_base_names�_cache_hashr��	_cls_dict�_delete_attribs�_frozen�_has_custom_setattr�_has_post_init�
_has_pre_init�_is_exc�_on_setattr�_pre_init_has_args�_repr_added�_script_snippets�_slots�
_weakref_slot�_wrote_own_setattrr*�rxcCst||||||�\}}}||_|r,t|j�ni|_||_dd�|D�|_||_tdd�|D��|_	||_
||_||_|	|_
tt|dd��|_d|_|jr�|j}t�|�}t|j�dk|_tt|dd��|_t|�|_|
|_||_|
|_d|_|j|jd	<|�rt|jd
<t|jd<d|_n�|tt j!t j"fv�r�d}}|D]8}|j#du�rPd}|j$du�r`d}|�r<|�r<�qv�q<|tk�r�|�s�|�r�|t j!k�r�|�r�|t j"k�r�|�s�d|_|�r�|�%�\|jd
<|jd<g|_&d|_'t(|jd��r�t(|jd��s|j)|_*n|j+|_*dS)NcSsh|]
}|j�qSrr�r�rrrr��r�z)_ClassBuilder.__init__.<locals>.<setcomp>css|]}|jVqdSr'r�r�rrrr��r�z)_ClassBuilder.__init__.<locals>.<genexpr>�__attrs_pre_init__Fr	�__attrs_post_init__r{r�r�T�__getstate__�__setstate__r!r"),r�r��dictrwr�r�r�r�rBr�r�r�r�r��boolr�r�r�r��inspect�	signaturerZ�
parametersr�r�r�r�r�r�r�r��_DEFAULT_ON_SETATTRr�validate�convertr-r2�_make_getstate_setstater�r��hasattr�_add_method_dunders_safer��_add_method_dunders_unsafe)rrxr��slots�frozen�weakref_slot�getstate_setstater�r4�
cache_hash�is_excr�r9Zhas_custom_setattrr�rlrnZbase_mapZ
pre_init_funcZpre_init_signatureZ
has_validatorZ
has_converterr�rrr�__init__�s��
	


�
����������
z_ClassBuilder.__init__cCsd|jj�d�S)Nz<_ClassBuilder(cls=z)>)r�r rrrrr�sz_ClassBuilder.__repr__rKrzcCsld�dd�|jD��}i}|jD]\}}}|�|�q t|t|jd�|�}|jD]\}}}||j|�qPdS)z=
        Evaluate any registered snippets in one go.
        r�cSsg|]}|d�qS)rr)r�Zsnippetrrrr��r�z0_ClassBuilder._eval_snippets.<locals>.<listcomp>�methodsN)r�r��updaterar�r�r�)rrLrM�_Z
snippet_globsrN�hookrrr�_eval_snippets�s
�z_ClassBuilder._eval_snippetscCsT|��|jdur|��}n|��}tr2t�|�}t|dd�rPd|jvrP|�	�|S)z�
        Finalize class based on the accumulated configuration.

        Builder cannot be used after calling this method.
        T�__attrs_init_subclass__N)
rr��_create_slots_class�_patch_original_classr
�abcZupdate_abstractmethodsr�rwr)rrxrrr�build_class
s



��z_ClassBuilder.build_classc	Cs�|j}|j}|jrj|jD]P}||vrt||t�turt�t��t	||�Wd�q1s^0Yq|j
��D]\}}t|||�qt|j
s�t|dd�r�d|_|js�t|_|S)zA
        Apply accumulated methods and return the class.
        N�__attrs_own_setattr__F)r�r�r�r�r��	_SENTINEL�
contextlib�suppress�AttributeError�delattrr�r��setattrr�rr�r�r�)rrx�
base_namesr�r�rrrr"s&
��*�z#_ClassBuilder._patch_original_classc
s��fdd��j��D�}�jsTd|d<�jsT�jjD]��j�dd�r4t|d<qTq4i}d}�jj	dd�D]:��j�dd	�d	ur�d
}|�
�fdd�t�dg�D��qlt�j
���j}�jr�dt�jdd
�vr�d|vr�|s�|d7}dd�|��D�}g}|�r�t�j�}|��D]F\}}	||f7}||=|�|	�t�|	�j}
|
tjju�r|
||<�q|�d�}|d	u�rx|�|�t||�j�|d<�fdd�|D���fdd�|��D���fdd��D��|�
���j�r��t�t��|d<�jj|d<t�j��jj�jj|�}t�|j� �|�D]�}
t!|
t"t#f��rHt|
j$dd	�}n(t!|
t%��rdt|
j&dd	�}nt|
dd	�}|�sz�q$|D]8}z|j'�ju}Wnt(�y�Yn0|�r~||_'�q~�q$|S)zL
        Build and return a new class with a `__slots__` attribute.
        cs2i|]*\}}|gt�j��d�d�Rvr||�qS)rw�__weakref__)rBr��r��k�vrrr�
<dictcomp>Js�z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>Frr�r	rWrNTcsi|]}|t�|��qSr�r��r�r�)r�rrris��	__slots__r)rcSs"i|]\}}t|t�r||j�qSr)r@r�func)r�r�Zcached_proprrrrzs
�r�csg|]}|�vr|�qSrrr)rrrr��r�z5_ClassBuilder._create_slots_class.<locals>.<listcomp>csi|]\}}|�vr||�qSrr)r�ZslotZslot_descriptor)�
slot_namesrrr�s�csg|]}|�vr|�qSrrr)�reused_slotsrrr��r�r"�__closure__))r�r�r�r�r��	__bases__rwr�r�rr�r�r�r�r�r�rr�r�r��return_annotation�	Parameter�emptyr�r��_HASH_CACHE_FIELDrBr"r*r �	itertools�chain�valuesr@�classmethod�staticmethod�__func__rg�fget�
cell_contentsr=)rr�Zexisting_slotsZweakref_inherited�namesr�Z&additional_closure_functions_to_updateZclass_annotationsr�r�
annotationr�rx�itemZ
closure_cells�cell�matchr)r�rrrrrrFs�
�

��
�����





�
�


�z!_ClassBuilder._create_slots_classcs8t�j|�\}}�fdd�}�j�|||f�d�_�S)Ncs��|d�|d<dS)Nr�r���cls_dictrMrrr�_attach_repr�sz,_ClassBuilder.add_repr.<locals>._attach_reprT)�_make_repr_scriptr�r�r�r�)r�nsrLrMr1rrr�add_repr�s
z_ClassBuilder.add_reprcCs.|jsd}t|��dd�}|�|�|jd<|S)Nz3__str__ can only be generated if a __repr__ exists.cSs|��Sr'�rrrrr�__str__�sz&_ClassBuilder.add_str.<locals>.__str__r6)r�r=r�r�)rrGr6rrr�add_str�sz_ClassBuilder.add_strcs<tdd�|jD����fdd�}|j���fdd�}||fS)zF
        Create custom __setstate__ and __getstate__ methods.
        css|]}|dkr|VqdS)rNr)r�Zanrrrr��sz8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>cs�fdd��D�S)�9
            Automatically created by attrs.
            csi|]}|t�|��qSrrrrrrr�r�zQ_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate.<locals>.<dictcomp>rr)�state_attr_namesrr�slots_getstate�sz=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstatecsft�|�}t|t�r4t�|�D]\}}|||�qn �D]}||vr8||||�q8�rb|td�dS)r8N)r�r�r@rB�zipr )r�stateZ_ClassBuilder__bound_setattrr�r��Zhash_caching_enabledr9rr�slots_setstate�s

z=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate)rBr�r�)rr:r>rr=rr��s�z%_ClassBuilder._make_getstate_setstatecCsd|jd<|S�N�__hash__)r�rrrr�make_unhashables
z_ClassBuilder.make_unhashablecsHt�j�j�j�jd�\}}dddd��fdd�}�j�|||f��S)N�r�r�r�rK)r0rNrPcs��|d�|d<dSr?r.)r0rNrrr�attach_hashsz+_ClassBuilder.add_hash.<locals>.attach_hash)�_make_hash_scriptr�r�r�r�r�r�)rrLrMrCrrr�add_hashs�
z_ClassBuilder.add_hashcs`t�j�j�j�j�j�j�j�j�j	�j
�jdd�\}}���fdd�}�j�
|||f��S)NF��
attrs_initcs |d}�|_��|�|d<dS)Nr��rpr��r0rMr1�rrrr�_attach_init2sz,_ClassBuilder.add_init.<locals>._attach_init��_make_init_scriptr�r�r�r�r�r�r�r�r�r�r�r�r�)rrLrMrKrrJr�add_init"s"�z_ClassBuilder.add_initcCs|�dd��|jd<|S)Nc[st|fi|��Sr'r�)rr�rrrr�=r�z+_ClassBuilder.add_replace.<locals>.<lambda>�__replace__)r�r�rrrr�add_replace;s�
z_ClassBuilder.add_replacecCstdd�|jD��|jd<dS)Ncss |]}|jr|js|jVqdSr')r1r4r�)r��fieldrrrr�Bs�z/_ClassBuilder.add_match_args.<locals>.<genexpr>�__match_args__)rBr�r�rrrr�add_match_argsAs�z_ClassBuilder.add_match_argscs`t�j�j�j�j�j�j�j�j�j	�j
�jdd�\}}���fdd�}�j�
|||f��S)NTrFcs |d}�|_��|�|d<dS)N�__attrs_init__rHrIrJrr�_attach_attrs_initXsz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initrL)rrLrMrUrrJr�add_attrs_initHs"�z_ClassBuilder.add_attrs_initcs>�j}t�j�\}}�fdd�}�j�|||f�t|d<�S)Ncs��|d�|d<dS)N�__eq__r.r/rrr�
_attach_eqfsz(_ClassBuilder.add_eq.<locals>._attach_eq�__ne__)r��_make_eq_scriptr�r�r�rY)rr�rLrMrXrrr�add_eqasz_ClassBuilder.add_eqcs>�j}�fdd�t�j�j�D�\|d<|d<|d<|d<�S)Nc3s|]}��|�VqdSr'r.)r��methrrrr�rs�z*_ClassBuilder.add_order.<locals>.<genexpr>�__lt__�__le__�__gt__�__ge__)r��_make_orderr�r�)rr�rrr�	add_orderos

�z_ClassBuilder.add_ordercs�i�|jD],}|jp|j}|r
|tjur
||f�|j<q
�s@|S|jrRd}t|���fdd�}d|jd<|�	|�|jd<d|_
|S)Nz7Can't combine custom __setattr__ with on_setattr hooks.csDz�|\}}Wnty&|}Yn0||||�}t|||�dSr')�KeyErrorr�)rr��valr�r�nval�Zsa_attrsrrr��s
z._ClassBuilder.add_setattr.<locals>.__setattr__Trr�)r�r9r�r�NO_OPr�r�r=r�r�r�)rr�r9rGr�rrfr�add_setattrys


z_ClassBuilder.add_setattrr)�methodrPcCs6|jj|_|jj�d|j��|_d|jj�d�|_|S)z@
        Add __module__ and __qualname__ to a *method*.
        r��$Method generated by attrs for class )r�r!r"r r#�rrirrrr��s

�z(_ClassBuilder._add_method_dunders_unsafecCs�t�t��|jj|_Wd�n1s*0Yt�t��&|jj�d|j��|_Wd�n1sj0Yt�t��"d|jj�d�|_Wd�n1s�0Y|S)zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr�rj)r
rrr�r!r"r r#rkrrrr��s(40z&_ClassBuilder._add_method_dunders_safeN)r r!r"r#rr�rrrrrr4r7r�rArErNrPrSrVr[rbrhr�r�rrrrr�ms.k$
)
 r�cCst|dur(t|du|duf�r(d}t|��|dur8||fS|durD|}|durP|}|durl|durld}t|��||fS)��
    Validate the combination of *cmp*, *eq*, and *order*. Derive the effective
    values of eq and order.  If *eq* is None, set it to *default_eq*.
    N�&Don't mix `cmp` with `eq' and `order`.FT�-`order` can only be True if `eq` is True too.��anyr=)r/r5r7�
default_eqrGrrr�_determine_attrs_eq_order�srrc	Cs�|dur(t|du|duf�r(d}t|��dd�}|durP||�\}}||||fS|durd|d}}n||�\}}|dur�||}}n||�\}}|dur�|dur�d}t|��||||fS)rlNrmcSs t|�rd|}}nd}||fS)z8
        Decide whether a key function is used.
        TN)r>)r�r�rrr�decide_callable_or_boolean�sz>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanFTrnro)	r/r5r7rqrGrsZcmp_keyr6r8rrrr;�s"r;cCsF|dus|dur|S|dur(|dur(|S|D]}t||�r,dSq,|S)ap
    Check whether we should implement a set of methods for *cls*.

    *flag* is the argument passed into @attr.s like 'init', *auto_detect* the
    same as passed into @attr.s and *dunders* is a tuple of attribute names
    whose presence signal that the user has implemented it themselves.

    Return *default* if no reason for either for or against is found.
    TFN)ry)rx�flag�auto_detectZdundersr,Zdunderrrr�_determine_whether_to_implement�s
rvcs��dur"ddl}|jtd�dd�t|||d�\��|dur@|�	t�
ttf�rXtj�
��
����������	�
���
�������fdd�}|dur�|S||�S)a�
    A class decorator that adds :term:`dunder methods` according to the
    specified attributes using `attr.ib` or the *these* argument.

    Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will
    *never* go away, though).

    Args:
        repr_ns (str):
            When using nested classes, there was no way in Python 2 to
            automatically detect that.  This argument allows to set a custom
            name for a more meaningful ``repr`` output.  This argument is
            pointless in Python 3 and is therefore deprecated.

    .. caution::
        Refer to `attrs.define` for the rest of the parameters, but note that they
        can have different defaults.

        Notably, leaving *on_setattr* as `None` will **not** add any hooks.

    .. versionadded:: 16.0.0 *slots*
    .. versionadded:: 16.1.0 *frozen*
    .. versionadded:: 16.3.0 *str*
    .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``.
    .. versionchanged:: 17.1.0
       *hash* supports `None` as value which is also the default now.
    .. versionadded:: 17.3.0 *auto_attribs*
    .. versionchanged:: 18.1.0
       If *these* is passed, no attributes are deleted from the class body.
    .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained.
    .. versionadded:: 18.2.0 *weakref_slot*
    .. deprecated:: 18.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a
       `DeprecationWarning` if the classes compared are subclasses of
       each other. ``__eq`` and ``__ne__`` never tried to compared subclasses
       to each other.
    .. versionchanged:: 19.2.0
       ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider
       subclasses comparable anymore.
    .. versionadded:: 18.2.0 *kw_only*
    .. versionadded:: 18.2.0 *cache_hash*
    .. versionadded:: 19.1.0 *auto_exc*
    .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
    .. versionadded:: 19.2.0 *eq* and *order*
    .. versionadded:: 20.1.0 *auto_detect*
    .. versionadded:: 20.1.0 *collect_by_mro*
    .. versionadded:: 20.1.0 *getstate_setstate*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionadded:: 20.3.0 *field_transformer*
    .. versionchanged:: 21.1.0
       ``init=False`` injects ``__attrs_init__``
    .. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__``
    .. versionchanged:: 21.1.0 *cmp* undeprecated
    .. versionadded:: 21.3.0 *match_args*
    .. versionadded:: 22.2.0
       *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
    .. deprecated:: 24.1.0 *repr_ns*
    .. versionchanged:: 24.1.0
       Instances are not compared as tuples of attributes anymore, but using a
       big ``and`` condition. This is faster and has more correct behavior for
       uncomparable values like `math.nan`.
    .. versionadded:: 24.1.0
       If a class has an *inherited* classmethod called
       ``__attrs_init_subclass__``, it is executed after the class is created.
    .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*.
    NrzQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.�)�
stacklevelcs"�p
t|�}�duot|t�}�o*t|d�}|r@|r@d}t|��t|��|�t|��d�d����|��
|��}t|��d�r�|����dur�|��t|��d�}|s�|dur�|�	�|s�t|��d�r�|�
��s�|���	dur��dur�t|d	�r�d
�	�	du�r(�	d
u�r(�	du�r(d}t|���	d
u�sL�	du�rF|d
u�sL|�r`��r�d}t|��nL�	du�s��	du�r�|du�r�|du�r�|�
�n��r�d}t|��|��t|�
�d
��r�|��n|����r�d}t|��t�r�t|d��s�|��t�r��rt|d��s|��|��S)NTr�z/Can't freeze a class with a custom __setattr__.)r�r�)r,r5)rWrY)r]r^r_r`r@Fr+zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.�r�zFInvalid value for cache_hash.  To use hash caching, init must be True.rOrR)�_has_frozen_base_class�
issubclassr�ryr=r�rvr4r7r[rbrhr<rErArNrVrrPr
rSr)rx�	is_frozenr�Zhas_own_setattrrGZbuilderr5�r�ru�auto_excr�r�Zeq_r�r�r�r0r1r4�
match_argsr9Zorder_r.�repr_nsr�rJr�r�rr�wrap�s�����
�����$

���
�
���zattrs.<locals>.wrap)	�warnings�warn�DeprecationWarningrrr@rArBrrC)Z	maybe_clsr�r�r.r/r0r1r�r�r�rJr�r4r�r~r5r7rur�r�r9r�r�unsafe_hashr�r�rr}rrls"\��
4nrlcCs
|jtuS)zV
    Check whether *cls* has a frozen ancestor by looking at its
    __setattr__.
    )r�r�r�rrrrzsrz)rx�	func_namerPc	Cs$d|�d|j�dt|d|j��d�S)zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated � r�r"rY)r!r�r )rxr�rrrr�
s��r�rmr�ztuple[str, dict])rxrlr�r�rPcstdd��D���d}tt|d���i�d}d�d�|sB|d7}n |d	7}|d
7}d���d7�|g�������fd
d�}|r��|dt�d��|r�|dt�d�|d���|dd�n|dt�d�|d���|dt���n
|d|�d���}|�fS)Ncss0|](}|jdus$|jdur|jdur|VqdS)TN)r0r5r�rrrr�sz$_make_hash_script.<locals>.<genexpr>�        r0zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(�)c	s���||�|d��d�g��D]Z}|jrhd|j�d�}|j�|<��|d|�d|j�d��q&��|d|j�d��q&��|d��d	S)
z�
        Generate the code for actually computing the hash code.
        Below this will either be returned directly or used to compute
        a value which is then cached, depending on the value of cache_hash
        r��,r�_key�(self.z),�
        self.�    N)r�r6r�r�)�prefix�indentr��cmp_name�rlZclosing_bracesrMZ	hash_funcZmethod_linesZ	type_hashrr�append_hash_computation_lines/s
��
�z8_make_hash_script.<locals>.append_hash_computation_lineszif self.z	 is None:zobject.__setattr__(self, '�', rw�self.� = zreturn self.zreturn r�)rBr0r�r�r r�)rxrlr�r��tabZhash_defr�rLrr�rrDs>�
��

rD)rxrlcCs6t||ddd�\}}t||t|d�d�|d|_|S)z%
    Add a hash method to *cls*.
    FrBr@�rO)rDrUr�r@�rxrlrLrMrrr�	_add_hash\s�
�
r�cCs|�|�}|turtS|S)z^
    Check equality and either forward a NotImplemented or
    return the result negated.
    )rW�NotImplemented)r�other�resultrrrrYjs
rYrA)rlrPcCs�dd�|D�}gd�}i}|r�|�d�|D]�}|jrxd|j�d�}|j||<|�d|�d|j�d	|�d
|j�d�	�n|�d|j�d
|j���||dur,|d�d�|d<q,|�d�n
|�d�d�|�}||fS)z6
    Create __eq__ method for *cls* with *attrs*.
    cSsg|]}|jr|�qSr)r5r�rrrr�zr�z#_make_eq_script.<locals>.<listcomp>)zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz
    return  (rr�r�r�z) == z(other.r�r�z
 == other.rWz andz    )z    return Truer�)r�r6r�r�)rlr�rMr�r�rLrrrrZvs&

 �

rZcsVdd��D���fdd���fdd�}�fdd�}�fd	d
�}�fdd�}||||fS)
z9
    Create ordering methods for *cls* with *attrs*.
    cSsg|]}|jr|�qSr)r7r�rrrr��r�z_make_order.<locals>.<listcomp>cs tdd��fdd��D�D��S)z&
        Save us some typing.
        css"|]\}}|r||�n|VqdSr'r)r�r�r�rrrr��s�z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>c3s |]}t�|j�|jfVqdSr')r�r�r8r���objrrr��s)rBr��rlr�r�attrs_to_tuple�s

��z#_make_order.<locals>.attrs_to_tuplecs |j|jur�|��|�kStS�z1
        Automatically created by attrs.
        �r�r��rr��r�rrr]�sz_make_order.<locals>.__lt__cs |j|jur�|��|�kStSr�r�r�r�rrr^�sz_make_order.<locals>.__le__cs |j|jur�|��|�kStSr�r�r�r�rrr_�sz_make_order.<locals>.__gt__cs |j|jur�|��|�kStSr�r�r�r�rrr`�sz_make_order.<locals>.__ge__r)rxrlr]r^r_r`r)rlr�rra�s				racCsB|dur|j}t|�\}}t||t|d�d�|d|_t|_|S)z5
    Add equality methods to *cls* with *attrs*.
    NrWr�)r{rZrUr�rWrYr�rrr�_add_eq�s�
r�c
Cs�tdd�|D��}dd�|D�}t|d<t|d<t|d<g}|D]N\}}}|rVd|n
d	|d
}|tkrvd||fnd|||f}	|�|	�q@d
�|�}
|dur�d}n|d}ddddddddddddd|�d|
�d�dd g}d!�|�|fS)"zC
    Create the source and globs for a __repr__ and return it.
    css6|].}|jdur|j|jdur"tn|j|jfVqdS)FTN)r.r�r1r�rrrr��s
�z$_make_repr_script.<locals>.<genexpr>cSs$i|]\}}}|tkr|d|�qS)�_repr)r.)r�r��rrrrrr�sz%_make_repr_script.<locals>.<dictcomp>r
rrr�zgetattr(self, "z", NOTHING)z	%s={%s!r}z%s={%s_repr(%s)}r�Nz1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z
    return f'�(z)'z
  finally:z$    already_repring.remove(id(self))r�)rBr
rrr.r�r�)
rlr3Zattr_names_with_reprsrMZattribute_fragmentsr�r�rd�accessor�fragmentZ
repr_fragmentZcls_name_fragmentr�rrrr2�sN�����
�r2cCs>|dur|j}t||�\}}t||t|d�d�|d|_|S)z%
    Add a repr method to *cls*.
    Nrr�)r{r2rUr�r)rxr3rlrLrMrrr�	_add_reprs�
r�cCsvt|�}|dur&t|t�s&d}t|��t|dd�}|durr|dur`t|dd�}|dur`||_|S|�d�}t|��|S)aG
    Return the tuple of *attrs* attributes for a class.

    The tuple also allows accessing the fields by their names (see below for
    examples).

    Args:
        cls (type): Class to introspect.

    Raises:
        TypeError: If *cls* is not a class.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        tuple (with name accessors) of `attrs.Attribute`

    .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
       by name.
    .. versionchanged:: 23.1.0 Add support for generic classes.
    N�Passed object must be a class.r{�! is not an attrs-decorated class.)rr@r*r<r�r{r)rxZgeneric_baserGrlrrrr�,s
r�cCsJt|t�sd}t|��t|dd�}|dur<|�d�}t|��dd�|D�S)a�
    Return an ordered dictionary of *attrs* attributes for a class, whose keys
    are the attribute names.

    Args:
        cls (type): Class to introspect.

    Raises:
        TypeError: If *cls* is not a class.

        attrs.exceptions.NotAnAttrsClassError:
            If *cls* is not an *attrs* class.

    Returns:
        dict[str, attrs.Attribute]: Dict of attribute name to definition

    .. versionadded:: 18.1.0
    r�r{Nr�cSsi|]}|j|�qSrr�r�rrrrtr�zfields_dict.<locals>.<dictcomp>)r@r*r<r�r)rxrGrlrrr�fields_dictZs

r�cCsDtjdurdSt|j�D]&}|j}|dur|||t||j��qdS)z�
    Validate all attributes on *inst* that have a validator.

    Leaves all exceptions through.

    Args:
        inst: Instance of a class with *attrs* attributes.
    FN)rZ_run_validatorsr�r�r-r�r�)r�r�rrrrr�ws	
r�cCs|�|�}|od|jvS)z>
    Check if the attribute name comes from a slot class.
    r)r�rw)Za_namer�rxrrr�
_is_slot_attr�s
r�ztuple[str, dict, dict]c
Cs|
duo|
tju}|r&|r&d}
t|
��|p,|}g}i}|D]b}|jsP|jturPq:|�|�|||j<|jdur�|dur�d}
t|
��d}q:|r:|jtjur:d}q:t	|||||||||	|||r�dnd�\}}}|j
tjvr�|�
tj|j
j�|�
t|d��|�r
tj|d<|||fS)Nz$Frozen classes can't use on_setattr.TrTr�)r�	attr_dictr�)rrgr=r1r,rr�r�r9�_attrs_to_init_scriptr!�sys�modulesr�rwr�r�)rxrl�pre_init�pre_init_has_args�	post_initr�r�r�r�r�Zcls_on_setattrrG�has_cls_on_setattrrG�needs_cached_setattrZfiltered_attrsr�r�rLrMrrrrrM�sP�



�

rM�ri�	value_var�has_on_setattrrPcCsd|�d|�d�S)zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    �
_setattr('r�r�r�rir�r�rrr�_setattr�sr��	Converter�rir�r�r2rPcCsd|�d|�||��d�S)zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    r�r�r�)�_fmt_converter_call�rir�r�r2rrr�_setattr_with_converter�sr�)rir�r�rPcCs |rt||d�Sd|�d|��S)zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Tr�r�)r�)rir�r�rrr�_assign�sr�cCs*|rt||d|�Sd|�d|�||���S)z�
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Tr�r�)r�r�r�rrr�_assign_with_converter�sr�ro)r�r�r�cs`|durV|durdttfSddddd��fdd�}dddddd	��fd
d�}d||fSdttfS)
zg
    Determine the correct setter functions based on whether a class is frozen
    and/or slotted.
    TrrJr�r�cs&t|��rt|||�Sd|�d|��S�N�_inst_dict['z'] = )r�r�r��r�rr�
fmt_setters
z&_determine_setters.<locals>.fmt_setterr�r�cs4|st|��rt||||�Sd|�d|�||���Sr�)r�r�r�r�r�rr�fmt_setter_with_converters
�z5_determine_setters.<locals>.fmt_setter_with_converter)z_inst_dict = self.__dict__)r�r�r�r�)r�r�r�r�r�rr�r�_determine_setters�s
�r�)
rlr|�
is_slotted�
call_pre_initr��call_post_init�does_cache_hashr�r�r�r��method_namerPc$
Cs�|r
dgng}|	r|�d�t|||�\}
}}|�|
�g}g}g}i}ddi}|D�]�}|jrj|�|�|j}|jdup�|jtjuo�|
}|j}t	|j
t�}|r�|j
jr�dnd}|j
dur�t	|j
t�s�t|j
�}n|j
}|jdu�r�|�r`t|jf}|du�r4|�|||d|�d	�||��|j
||�|j�<n|�|||d|�d	�|��|j
j||<nT|du�r�|�||d
|�d�||��|j
||�|j�<n|�||d
|�d�|���n�|j
tu�r@|�s@|�d|�d�}|j�r�|�|�n
|�|�|du�r*|�|||||��|j
||�|j�<n|�||||���nb|�r@|�d
�}|j�rd|�|�n
|�|�|�d|�d��t|jf}|du�r�|�d|||||��|�d�|�d|||d|d	||��|j
||�|j�<nB|�d||||��|�d�|�d|||d|d	|��|j
j||<nb|j�rT|�|�n
|�|�|du�r�|�|||||��|j
||�|j�<n|�||||��|jdurT|jdu�r�|du�r�|j||<qT|durT|jrT|j||<qT|�rRt|d<|�d�|D]L}d|j}d|j}|�d|�d|�d|j�d	��|j||<|||<�q|�rb|�d�|�r�|�r�|�r�dt�d�}ndt�d�}ndt�d�}|�|�|�r�d �d!d"�|D��} |�d#| �d	��d$�|�}|}!|�r@||�r�d$nd�d%d$�|���7}d$�d&d'�d(d"�|D�D��}"|!|!�r2d$nd7}!|!|"7}!|�r\|�r\d)|!�d	�|d*<d+}#d,|�d|�d-|�r~|#�|�nd.�d/�||fS)0z�
    Return a script of an initializer for *attrs*, a dict of globals, and
    annotations for the initializer.

    The globals are required by the generated script.
    zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)rPNrrIFr�r�zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:r�zelse:Trz#if _config._run_validators is True:Z__attr_validator_Z__attr_z(self, z, self.zself.__attrs_post_init__()r�z', None)r�z	'] = Noner�z = Noner�css |]}|jrd|j��VqdS)r�N)r1r�r�rrrr�	r�z(_attrs_to_init_script.<locals>.<genexpr>zBaseException.__init__(self, r�z*, cSsg|]}|�d|���qS)�=r)r�Zkw_arg_namerrrr�	s�z)_attrs_to_init_script.<locals>.<listcomp>css|]}|�d�dVqdS)r�rN)�split)r�Zkwarrrr�	r�zself.__attrs_pre_init__(rz
    zdef z):
    �passr�)r�r�r�r-r�r9rrgr:r@r,r?�
takes_selfr2r�r1�_INIT_FACTORY_PAT�_get_global_namerFrr4r*�_first_param_typerr r�)$rlr|r�r�r�r�r�r�r�r�r�r�r�Zextra_linesr�r�r�Zkw_only_argsZattrs_to_validateZnames_for_globalsrr�rir�Zarg_nameZhas_factoryZ
maybe_selfr2Zinit_factory_name�argZval_nameZinit_hash_cache�valsZ
pre_init_argsZpre_init_kw_only_args�NLrrrr�.sj��




�
��	���

��	�
��

���


���
���
��
���

���



 



"����r�)r�rPcCs
|�d�S)z�
    The default __init__ parameter name for a field.

    This performs private-name adjustment via leading-unscore stripping,
    and is the default value of Attribute.alias if not provided.
    r)�lstripr�rrrr�2	sr�c
@s\eZdZdZdZddd�Zdd�Zedd	d
d�dd
��Zdd�Z	dd�Z
dd�Zdd�ZdS)r�a�
    *Read-only* representation of an attribute.

    .. warning::

       You should never instantiate this class yourself.

    The class has *all* arguments of `attr.ib` (except for ``factory`` which is
    only syntactic sugar for ``default=Factory(...)`` plus the following:

    - ``name`` (`str`): The name of the attribute.
    - ``alias`` (`str`): The __init__ parameter name of the attribute, after
      any explicit overrides and default private-attribute-name handling.
    - ``inherited`` (`bool`): Whether or not that attribute has been inherited
      from a base class.
    - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The
      callables that are used for comparing and ordering objects by this
      attribute, respectively. These are set by passing a callable to
      `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also
      :ref:`comparison customization <custom-comparison>`.

    Instances of this class are frequently used for introspection purposes
    like:

    - `fields` returns a tuple of them.
    - Validators get them passed as the first argument.
    - The :ref:`field transformer <transform-fields>` hook receives a list of
      them.
    - The ``alias`` property exposes the __init__ parameter name of the field,
      with any overrides and default private-attribute handling applied.


    .. versionadded:: 20.1.0 *inherited*
    .. versionadded:: 20.1.0 *on_setattr*
    .. versionchanged:: 20.2.0 *inherited* is not taken into account for
        equality checks and hashing anymore.
    .. versionadded:: 21.1.0 *eq_key* and *order_key*
    .. versionadded:: 22.2.0 *alias*

    For the full version history of the fields, see `attr.ib`.
    )r�r,r-r.r5r6r7r8r0r1r3r*r2r4r}r9r:NFcCs�t||p
|
|p|d�\}
}}}t�|�}|d|�|d|�|d|�|d|�|d|
�|d|�|d|�|d	|�|d
|�|d|�|d|�|d
|	r�t�t|	��nt�|d|
�|d|�|d|�|d|�|d|�dS)NTr�r,r-r.r5r6r7r8r0r1r2r3r*r4r}r9r:)r;r�r��types�MappingProxyTyper��_EMPTY_METADATA_SINGLETON)rr�r,r-r.r/r0r1r}r3r*r2r4r5r6r7r8r9r:�
bound_setattrrrrr�~	s4�











��



zAttribute.__init__cCst�dSr')rr�rrrr��	szAttribute.__setattr__rJrE)r�r�cCst|dur|j}n|jdur.d|�d�}t|��|||j|j|jd|j|jd|j||j|j	|j
|j|j|j
|j|j�S)Nz>Type annotation and type argument cannot both be present for 'z'.F)r*r=�_default�
_validatorr.r0r1r3r2r4r5r6r7r8r9r:)rxr�r�r*rGrrrr��	s2
�zAttribute.from_counting_attrcKst�|�}|�|���|S)a

        Copy *self* and apply *changes*.

        This works similarly to `attrs.evolve` but that function does not work
        with :class:`attrs.Attribute`.

        It is mainly meant to be used for `transform-fields`.

        .. versionadded:: 20.3.0
        )�copy�	_setattrsr�)rr��newrrrr��	s
zAttribute.evolvecst�fdd��jD��S)�(
        Play nice with pickle.
        c3s*|]"}|dkrt�|�nt�j�VqdS)r3N)r�r�r3rrrrr��	s�z)Attribute.__getstate__.<locals>.<genexpr>�rBrrrrrr��	s�zAttribute.__getstate__cCs|�t|j|��dS�r�N)r�r;r�rr<rrrr��	szAttribute.__setstate__cCsLt�|�}|D]8\}}|dkr*|||�q|||r@t�t|��nt�qdS)Nr3)r�r�r�r�r�r�)rZname_values_pairsr�r�r�rrrr��	s
��zAttribute._setattrs)
NNNFNNNNNN)N)
r r!r"r#rr�r�r$r�r�r�r�r�rrrrr�=	s(,�
7	r�cCs2g|]*}t|tddddd|dkddt|�d��qS)NTFr3)r�r,r-r.r/r5r7r0r1r}r:)r�rr�rrrrr�
s��r�r�cCsg|]}|jdkr|�qSr|r�r�rrrr�
r�cCs g|]}|jr|jdkr|�qSr|)r0r�r�rrrr�
r�c@sneZdZdZdZgedd�dD���eddddddd	dd	ddd	dd	dd
��RZdZdd
�Z	dd�Z
dd�ZdS)rEa
    Intermediate representation of attributes that uses a counter to preserve
    the order in which the attributes have been defined.

    *Internal* data structure of the attrs library.  Running into is most
    likely the result of a bug like a forgotten `@attr.s` decorator.
    )r�r�r:r2r�r5r6r0r1r4r3r9r7r8r.r*ccs8|]0}t|t|�tddddddddddddd�VqdS)NTF�r�r:r,r-r.r/r0r1r4r5r6r7r8r}r9)r�r�rrrrrr�=
s$��z_CountingAttr.<genexpr>)	r�r�r.r5r7r0r1r9r:r3NTFr�rcCsttjd7_tj|_||_||_||_||_||_||_|
|_	||_
||_||_||_
|	|_|
|_||_||_dSr�)rE�cls_counterr�r�r�r2r.r5r6r7r8r0r1r3r*r4r9r:)rr,r-r.r/r0r1r2r3r*r4r5r6r7r8r9r:rrrr�o
s"z_CountingAttr.__init__cCs$|jdur||_nt|j|�|_|S)z�
        Decorator that adds *meth* to the list of validators.

        Returns *meth* unchanged.

        .. versionadded:: 17.1.0
        N)r�rD�rr\rrrr-�
s
z_CountingAttr.validatorcCs |jturt�t|dd�|_|S)z�
        Decorator that allows to set the default for an attribute.

        Returns *meth* unchanged.

        Raises:
            DefaultAlreadySetError: If default has been set before.

        .. versionadded:: 17.1.0
        T)r�)r�rrr?r�rrrr,�
s
z_CountingAttr.default)r r!r"r#rrBr�r{r�r�r-r,rrrrrE!
s:����1%rEc@s.eZdZdZdZddd�Zdd�Zdd	�Zd
S)r?a�
    Stores a factory callable.

    If passed as the default value to `attrs.field`, the factory is used to
    generate a new value.

    Args:
        factory (typing.Callable):
            A callable that takes either none or exactly one mandatory
            positional argument depending on *takes_self*.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument.

    .. versionadded:: 17.1.0  *takes_self*
    �rFr�FcCs||_||_dSr'r�)rrFr�rrrr��
szFactory.__init__cst�fdd��jD��S)r�c3s|]}t�|�VqdSr'rrrrrr��
r�z'Factory.__getstate__.<locals>.<genexpr>r�rrrrr��
szFactory.__getstate__cCs&t|j|�D]\}}t|||�qdSr�)r;rr)rr<r�r�rrrr��
szFactory.__setstate__N)F)r r!r"r#rr�r�r�rrrrr?�
s

r?cCs(g|] }t|tddddddddd�
�qS�NTF)
r�r,r-r.r/r5r7r0r1r}�r�rrrrrr��
s
��c@sZeZdZdZdZddd�dd�Zeddd�d	d
��Zdddd�dd
�Zdd�Z	dd�Z
dS)r�ae
    Stores a converter callable.

    Allows for the wrapped converter to take additional arguments. The
    arguments are passed in the order they are documented.

    Args:
        converter (Callable): A callable that converts the passed value.

        takes_self (bool):
            Pass the partially initialized instance that is being initialized
            as a positional argument. (default: `False`)

        takes_field (bool):
            Pass the field definition (an :class:`Attribute`) into the
            converter as a positional argument. (default: `False`)

    .. versionadded:: 24.1.0
    )�__call__r�Z_global_namer2�takes_fieldr�F�r�r�cs�|�_|�_|�_t|�}|���_�js@�js@�fdd��_nF�jr\�js\�fdd��_n*�jsx�jrx�fdd��_n�fdd��_|��}|dur�|�jjd<dS)Ncs
��|�Sr'�r2)r�r�__rrrr�r�z$Converter.__init__.<locals>.<lambda>cs��||�Sr'r�)r��instancer�rrrr�s�cs��||�Sr'r�)r�r�rQrrrr�s�cs��|||�Sr'r�)r�r�rQrrrr�#s�rP)	r2r�r�r�get_first_param_typer�r��get_return_typerp)rr2r�r��ex�rtrrrr�s
zConverter.__init__rJ)rirPcCs
d|��S)zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Z__attr_converter_r)rirrrr�+szConverter._get_global_name)rir�rPcCs�|js"|js"|�|��d|�d�S|jrJ|jrJ|�|��d|�d|�d�S|jrf|�|��d|�d�S|�|��d|�d|�d�S)z�
        Return a string that calls the converter for an attribute name
        *attr_name* and the value in variable named *value_var* according to
        `self.takes_self` and `self.takes_field`.
        r�r�z, self, attr_dict['z'])z, self)z
, attr_dict[')r�r�r�)rrir�rrrr�3szConverter._fmt_converter_callcCs|j|j|jd�S)zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        �r2r�r�r�rrrrr�Ds�zConverter.__getstate__cCs|jfi|��dS)z+
        Load instance from state.
        Nryr�rrrr�OszConverter.__setstate__N)r r!r"r#rr�r%r�r�r�r�rrrrr��
s	cCs(g|] }t|tddddddddd�
�qSr�r�rrrrr�Vs
��r�c
slt�d|�}t|t�r|}n*t|ttf�r:dd�|D�}nd}t|��|�dd�}|�dd�}|�dd�}	i�|dur���|�|dur�|�d<|dur�|�d<|	dur�|	�d<t	�
||i�fd	d
��}
t�t
t��&t�d�j�dd
�|
_Wd�n1�s0Y|�dd�}t||�d�|�d�d�\|d<|d<tfd|i|��|
�}dd�|��D�|_|S)a
    A quick way to create a new class called *name* with *attrs*.

    .. note::

        ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define`
        which means that it doesn't come with some of the improved defaults.

        For example, if you want the same ``on_setattr`` behavior as in
        `attrs.define`, you have to pass the hooks yourself: ``make_class(...,
        on_setattr=setters.pipe(setters.convert, setters.validate)``

    .. warning::

        It is *your* duty to ensure that the class name and the attribute names
        are valid identifiers. ``make_class()`` will *not* validate them for
        you.

    Args:
        name (str): The name for the new class.

        attrs (list | dict):
            A list of names or a dictionary of mappings of names to `attr.ib`\
            s / `attrs.field`\ s.

            The order is deduced from the order of the names or attributes
            inside *attrs*.  Otherwise the order of the definition of the
            attributes is used.

        bases (tuple[type, ...]): Classes that the new class will subclass.

        class_body (dict):
            An optional dictionary of class attributes for the new class.

        attributes_arguments: Passed unmodified to `attr.s`.

    Returns:
        type: A new class with *attrs*.

    .. versionadded:: 17.1.0 *bases*
    .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained.
    .. versionchanged:: 23.2.0 *class_body*
    .. versionchanged:: 25.2.0 Class names can now be unicode.
    �NFKCcSsi|]}|t��qSr)rHr�rrrr�r�zmake_class.<locals>.<dictcomp>z(attrs argument must be a dict or a list.r�Nr�r�cs
|���Sr')r�)r3�rhrrr��r�zmake_class.<locals>.<lambda>r	r �__main__r/r5r7Tr�cSs"i|]\}}|jdur||j�qSr')r*rrrrr�s)�unicodedata�	normalizer@r�rArBr<�popr�r��	new_classr
rrr=r��	_getframe�	f_globalsr�r!rrr�r�rp)
r�rl�basesZ
class_bodyZattributes_argumentsr0rGr�r�Z	user_init�type_r/rxrr�r�
make_classksN0

�&���r)r�r�c@seZdZdZe�Zdd�ZdS)�
_AndValidatorz2
    Compose many validators to a single one.
    cCs|jD]}||||�qdSr')�_validators)rr�r�r�rrrrr��s
z_AndValidator.__call__N)r r!r"r#rHrr�rrrrr�srcGs6g}|D] }|�t|t�r |jn|g�qtt|��S)a
    A validator that composes multiple validators into one.

    When called on a value, it runs all wrapped validators.

    Args:
        validators (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of validators.

    .. versionadded:: 17.1.0
    )r�r@rrrB)Z
validatorsr�r-rrrrD�s��rDcs�tdd��D��}|r$�fdd�}n�fdd�}�sPtd�}|j�||d��nTt�d���}|rn||jd	<�d
}ts�t|t�r�|j	}t|��
�}|r�||jd<|r�t|ddd
�S|S)a�
    A converter that composes multiple converters into one.

    When called on a value, it runs all wrapped converters, returning the
    *last* value.

    Type annotations will be inferred from the wrapped converters', if they
    have any.

        converters (~collections.abc.Iterable[typing.Callable]):
            Arbitrary number of converters.

    .. versionadded:: 20.1.0
    css|]}t|t�VqdSr'�r@r�)r��crrrr�
r�zpipe.<locals>.<genexpr>cs,�D]"}t|t�r||||�n||�}q|Sr'r	)rdr�rQr
��
convertersrr�pipe_converters�zpipe.<locals>.pipe_convertercs�D]}||�}q|Sr'r)rdr
rrrr
s
�A)rdrPrrdrWrPTr�)rprrpr�rr�rr@r�r�r�)rZreturn_instancer
r�t�lastr�rrrrC�s&


rC)NrI)N)T)NNNNNNNFFTFFFFFNNFFNNNTN)N)NN)i�
__future__rrr
r�r$r�r!r\r�r�r��collections.abcrr�	functoolsr�typingrrrrIr
rrr
rrrrr�
exceptionsrrrr�objectr�r�r�rur r�r�r	rCr�r�r��Enumrr�intr&rHrUrarjrkrvryr�r�r�r�r�r�r�r�rrr;rvrlr�rzr�rDr�rYrZrar�r2r�r�r�r�rMr�r�r�r�r�r�r�r�rZ_arEr?�_fr�rrrDrrrr�<module>s. 		
�
n��#!l4:N,�
�
d
H%8
9
.E

/&K�
��	'
�d
���
k


Youez - 2016 - github.com/yon3zu
LinuXploit