�����JFIF��XX����������    $.' ",#(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�8������ds|\���Ҿp6�Ҵ���]��.����6���z<�v��@]�i%������������������������$j��~����g��J>��no����pM[me�i$[�����������s�o�ᘨ�˸ nɜG-�ĨU�ycP���3.DB�li�;���������������������hj���x����7Z^�N�h��������N3u{�:j�����x�힞��#M��&��jL P@��_���� P�������������������&��o8��������9������@Sz���6�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*-i�H��g�D�)� E�m�|�ؘbҗ�a���Ҿ����������������t4�����o���G��*oCN�rP���Q��@z,|?W[0���������:�n,j���WiE��W������$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S���������������VN;���}�s?.����� w��9��˟<���Mq4�Wv'������{)0�1mB����V����W[��������8�/<� �%���wT^�5���b��)iM� p�g�N�&ݝ������������VO~��q���u���9��� ����!��J27�����$����O-���! �:���%H��� ـ�������y�ΠM=t{!S�� �oK8�������t<����è��������:a��������[������ա�H���~��w��Qz`�p����o�^ ������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�_�uX�6��3?nk��Wy�f;^*B� ��@���~a�`��Eu�������+�����6�L��.ü>��}y���}_�O�6�͐�:�Yr���G�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�!0�39C� �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 Xp�3�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@:)ִ�:�]��h���v�E��w���T�l�������P����"Ju�}��وV ��J��G6��. J/�Qgl߭�e�����@�z�Zev2u����)]կ���������7x�������s�M�-<ɯ�c��r��v�����@��$�ޮ}lk���a����'����>x��O\�Z������Fu>������ck#��&:��`�$��ai�>2Δ����l���oF[h�������lE�ܺ�Π���k:)���`������� $[6�����9�����kOw�\|�����8}������ބ:��񶐕��������I�A1/���=�2[�,�!��.}gN#�u����b���� ~���������݊��}34q�����d�E��L��������c��$���"�[q�U�硬g^��%B ��z���r�p�������J�ru%v\h�����1Y�ne`������ǥ:g����pQM~�^��Xi� ��`S�:V2������9.�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&�����Ú����2�g�}&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��f2�������������������������4;�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)*P�t����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���#y�w��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���/$�WP�w���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��B�S�('$�ɻ� �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 : 103.30.72.248  /  Your IP : 216.73.216.61
Web Server : Microsoft-IIS/10.0
System : Windows NT WIN-CARKG80MF9A 10.0 build 17763 (Windows Server 2019) AMD64
User : IUSR ( 0)
PHP Version : 8.2.7
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Windows/System32/BestPractices/v1.0/Models/Microsoft/Windows/FileServices/FSRM/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Windows/System32/BestPractices/v1.0/Models/Microsoft/Windows/FileServices/FSRM//FSRM.ps1
��#

# ----------------------------

# XSD SCHEMA DEFINATION

# ----------------------------

#







#

# -----------------------------

# SCHEMATRON RULES DEFINITION

# -----------------------------

#





#

# -----------------------------

# TRANSLATIONS DEFINITION

# -----------------------------

#

data _system_translations {

    ConvertFrom-StringData @'

    # check FSRM service status

    FSRMServiceStatusCheck_Title=The File Server Resource Manager service should be running

    FSRMServiceStatusCheck_Problem=The File Server Resource Manager service is not started.

    FSRMServiceStatusCheck_Impact=File Server Resource Manager features will not work.

    FSRMServiceStatusCheck_Resolution=Start the File Server Resource Manager service and set it to start automatically.

    FSRMServiceStatusCheck_Compliant=The FileServices Best Practices Analyzer scan has determined that you are in compliance with this best practice.



    # check FSRM service status on cluster

    FSRMServiceStatusCheckOnCluster_Title=File Server Resource Manager should be installed on all nodes of a failover cluster

    FSRMServiceStatusCheckOnCluster_Problem=File Server Resource Manager is not installed on all nodes of the failover cluster.

    FSRMServiceStatusCheckOnCluster_Impact=File Server Resource Manager (FSRM) will not function properly when resources fail over to nodes that do not have FSRM installed.

    FSRMServiceStatusCheckOnCluster_Resolution=Install the File Server Resource Manager role service on each node of the failover cluster. Alternatively, remove the role service from all nodes.

    FSRMServiceStatusCheckOnCluster_Compliant=The File Server Best Practices Analyzer scan has determined that you are in compliance with this best practice.



    # check FSRM service status on cluster: not all nodes are reachable

    FSRMServiceStatusCheckOnCluster_NotReachableNode_Title=All nodes in a failover cluster should be reachable

    FSRMServiceStatusCheckOnCluster_NotReachableNode_Problem=The following nodes in a failover cluster cannot be verified because the nodes are not reachable, or because the BPA scan was performed against a remote failover cluster: {0}

    FSRMServiceStatusCheckOnCluster_NotReachableNode_Impact=The Best Practices Analyzer will not be able to check the status of File Server Resource Manager on the following nodes: {0}

    FSRMServiceStatusCheckOnCluster_NotReachableNode_Resolution=Confirm that the nodes are online, log on to the nodes locally (or by using Remote Desktop), and then run the Best Practices Analyzer scan again. If this doesn't resolve the issue, use Windows PowerShell to troubleshoot the problem.

    FSRMServiceStatusCheckOnCluster_NotReachableNode_Compliant=The File Server Best Practices Analyzer scan has determined that you are in compliance with this best practice.    



    # check classification schedule present            

    FSRMClassificationSchedulePresent_Title=Classification rules should have schedules    

    FSRMClassificationSchedulePresent_Problem=One or more classification rules do not have schedules.

    FSRMClassificationSchedulePresent_Impact=Classification rules will only be applied to files when an application or a file management task queries the classification properties on a file. This may severely slow down the performance of the application or file management task.

    FSRMClassificationSchedulePresent_Resolution=Use File Server Resource Manager to set up a schedule for automatic classification that runs before applications or file management tasks need the information.

    FSRMClassificationSchedulePresent_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check property definition count

    FSRMPropertyDefinitionCount_Title=There should be fewer than 200 classification properties

    FSRMPropertyDefinitionCount_Problem=There are more than 200 classification properties.

    FSRMPropertyDefinitionCount_Impact=File classification will consume more time and server resources.

    FSRMPropertyDefinitionCount_Resolution=Use File Server Resource Manager to delete all properties that aren't used in any classification rules.

    FSRMPropertyDefinitionCount_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check quota definition count

    FSRMQuotaCount_Title=There should be fewer than 10000 quotas configured on the server

    FSRMQuotaCount_Problem=There are more than 10000 quotas configured on the server.

    FSRMQuotaCount_Impact=The File Server Resource Manager user interface will perform slowly.

    FSRMQuotaCount_Resolution=Use File Server Resource Manager to delete unneeded quotas or to consolidate individual quotas. If this is not possible, use command-line tools or scripts to administer quotas.

    FSRMQuotaCount_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check file screen count

    FSRMFileScreenCount_Title=There should be fewer than 1000 file screens configured on the server

    FSRMFileScreenCount_Problem=There are more than 1000 file screens configured on the server.

    FSRMFileScreenCount_Impact=The File Server Resource Manager user interface will perform slowly.

    FSRMFileScreenCount_Resolution=Use File Server Resource Manager to delete unneeded file screens or to consolidate individual file screens. If this is not possible, use command-line tools or scripts to administer file screens.

    FSRMFileScreenCount_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check cache not active.

    FSRMCacheEnabled_Title=The cache for classification properties should be active

    FSRMCacheEnabled_Problem=The cache for classification properties is disabled.

    FSRMCacheEnabled_Impact=File Server Resource Manager will reclassify files every time an application or Windows queries the classification of a file. This will result in reduced performance for applications, file management tasks, and reports that query classification properties for files.

    FSRMCacheEnabled_Resolution=Use a script to enable the system cache module.

    FSRMCacheEnabled_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check for adequate cache size

    FSRMCacheSizeAdequate_Title=Alternate data streams should be large enough to store classification properties 

    FSRMCacheSizeAdequate_Problem=The alternate data stream size is too small to store classification properties.

    FSRMCacheSizeAdequate_Impact=File Server Resource Manager will reclassify files every time Windows or an application queries the classification of a file. This will result in reduced performance for applications, file management tasks, and reports that query classification properties for files.

    FSRMCacheSizeAdequate_Resolution=Use Registry Editor to increase the size of the alternate data stream cache. 

    FSRMCacheSizeAdequate_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check for orpahned logs

    FSRMNoOrphanedLogs_Title=Log files for file management tasks should be properly deleted

    FSRMNoOrphanedLogs_Problem=A log file used to track which notifications were sent by a file management task was not deleted when the task was deleted. 

    FSRMNoOrphanedLogs_Impact=The log files can consume a significant amount of disk space.

    FSRMNoOrphanedLogs_Resolution=Delete the log files. The following log files do not belong to an existing file management job:\n\n\tLogs: {0}

    FSRMNoOrphanedLogs_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check for read only files

    FSRMFewReadOnlyFiles_Title=Classified files should have read/write attributes

    FSRMFewReadOnlyFiles_Problem=File Server Resource Manager (FSRM) is configured to classify read-only files, and cannot save classification properties for the files. 

    FSRMFewReadOnlyFiles_Impact=FSRM will reclassify the read-only files every time an application or Windows queries the classification of a file. This will reduce performance for applications, file management tasks, and reports that query classification properties for files. 

    FSRMFewReadOnlyFiles_Resolution=Remove the read-only attribute from the files or exclude them from the classification rules. To view the affected files, see the following log file: {0}

    FSRMFewReadOnlyFiles_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check for V2 schedules

    FSRMV2Schedules_Title=On a non-cluster Server, all file management jobs, reports, and the classification schedule should be compatible with the V2 scheduling API. 

    FSRMV2Schedules_Problem=One or more file management jobs, reports, or the classification use schedules that are in-compatible with the V2 schedule API. 

    FSRMV2Schedules_Impact=V1 schedules will continue to run, but cannot be updated, only replaced.

    FSRMV2Schedules_Resolution=Please create new schedules for the following: \n\nFile Management Jobs:\n{0}\n\nStorage Reports:\n{1}\n\nClassification (if version = V1):\nVersion = {2}

    FSRMV2Schedules_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check firewall

    FSRMFirewall_Title=Access Denied Remediation requires port 5985 be open in the firewall 

    FSRMFirewall_Problem=Access Denied Remediation is enabled, but port 5985 is not open in the firewall. 

    FSRMFirewall_Impact=Access Denied Remediation is enabled on this server, but port 5985 must be opened in the firewall to allow remote clients to interact with the server. 

    FSRMFirewall_Resolution=Open port 5985 in the firewall on this server or disable Access Denied Remediation

    FSRMFirewall_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.



    # check WinRm

    FSRMWinRm_Title=Access Denied Remediation requires remote management be enabled on this server

    FSRMWinRm_Problem=Access Denied Remediation is enabled on this server, but remote management is not enabled. 

    FSRMWinRm_Impact=Remote clients cannot use Access Denied Remediation on this server. 

    FSRMWinRm_Resolution=Ensure that Remote Management is enabled for this server or disable Access Denied Remediation. For more information see http://msdn.microsoft.com/en-us/library/aa384372(v=VS.85).aspx.

    FSRMWinRm_Compliant=The File Server Best Pratices Analyzer scan has determined that you are in compliance with this best practice.

'@

}



Import-LocalizedData -BindingVariable _system_translations -filename FSRM.psd1



$windir = $env:Windir

. $windir\System32\BestPractices\v1.0\Models\Microsoft\Windows\FileServices\fscommon.ps1



#

# ------------------

# FUNCTIONS - START

# ------------------

#



function CheckFSRMClassificationSchedulePresent

{

    $CM = new-object -com("Fsrm.FsrmClassificationManager")

    $rules = @($CM.EnumRules(1))

    

    # if there are no rules we don't care about the schedule

    if ($rules.Count -lt 1)

    {

        return $true

    }



    $cls = Get-FsrmClassification

    $clsTask =  $cls.Schedule

    

    if ($clsTask -eq $null)

    {

        return $false

    }

    

    return $true

}



function CheckFSRMPropertyDefinitionCount

{

    $CM = new-object -com("Fsrm.FsrmClassificationManager")

    $propertyDefs = @($CM.EnumPropertyDefinitions(0))

    if ($propertyDefs.Count -ge 200)

    {

        return $false

    }

    

    return $true

}



function CheckFSRMQuotaCount

{

    $QM = new-object -com("Fsrm.FsrmQuotaManager")

    $Quotas = @($QM.EnumQuotas())

    if ($Quotas.Count -ge 10000)

    {

        return $false

    }

    

    return $true

}



function CheckFSRMFileScreenCount

{

    $FSM = new-object -com("Fsrm.FsrmFileScreenManager")

    $FileScreens = @($FSM.EnumFileScreens())

    if ($FileScreens.Count -ge 1000)

    {

        return $false

    }

    

    return $true

}



function CheckFSRMCacheEnabled

{

    $CM = new-object -com("Fsrm.FsrmClassificationManager")

    $StorageModules = @($CM.EnumModuleDefinitions(1))

    foreach($module in $StorageModules)

    {

        if ($module.StorageType -ne 1)

        {

            continue

        }



        $moduleParams = @($module.Parameters)

        $staticModuleParam = "StaticModuleName"

        $adsStaticModuleName = "System Cache Storage Module"

        foreach($moduleParam in $moduleParams)

        {

            if ($moduleParam.SubString(0, $staticModuleParam.Length) -ieq $staticModuleParam -and $moduleParam.SubString($staticModuleParam.Length + 1) -ieq $adsStaticModuleName)

            {

                if ($module.Enabled -eq $false)

                {

                    return $false

                }

                

                break

            } 

        }

    }            

    

    return $true

}



function CheckFSRMOrphanedFMJLogs

{

    $FMJM = new-object -com("Fsrm.FsrmFileManagementJobManager")

    $FMJs = @($FMJM.EnumFileManagementJobs())

    

    $orphanedFiles = ""



    $volumes = @(Get-WMIObject Win32_Volume)

    foreach ($volume in $volumes)

    {

        $logFiles = @()

        $path = ""

        

        # We can only check volumes with a drive letter because the PS cmdlets

        # cannot handle device ids.

        if ($volume.DriveLetter.Length -gt 0)

        {

            $path = $volume.DriveLetter + "\system volume information\srm\FileManagementTasks"

            if (test-path $path)

            {

                $logFiles = @(Get-ChildItem $path -Exclude "*.xml")

            }

        }

        

        foreach ($logFile in $logFiles)

        {

            $orphaned = $true

            

            foreach ($FMJ in $FMJs)

            {

                if ($FMJ.Id.Guid -ieq  $logFile.Name.Substring(0, $logFile.Name.Length - $logFile.Extension.Length))

                {

                    $orphaned = $false

                }

            }

                

            if ($orphaned)

            {

                if ($orphanedFiles -ne "")

                {

                    $orphanedFiles = $orphanedFiles + "; "

                }

                

                $orphanedFiles = $orphanedFiles + "'" + $path + "\" + $logFile.Name + "'"

            }

        }

    } 



    $orphanedFiles    

}



function FsrmCheckIsErrorLogEnabled

{

    $CM = new-object -com("Fsrm.FsrmClassificationManager")

    $loggingFlags = $CM.Logging

    if ($loggingFlags -band 0x2)

    {

        return $true

    }

    

    return $false

}



function FsrmReplaceEnvMacros

{

    param(

        [string] $path

        )



    $envSystemDrive = "%systemdrive%"

    $envHomeDrive = "%homedrive%"



    $path = $path.ToLower()    

    $path = $path.Replace($envSystemDrive, "$env:systemdrive")

    $path = $path.Replace($envHomeDrive, "$env:homedrive")

    

    if (-not ($path.EndsWith("\")))

    {

        $path = $path + "\"

    }

    

    $path

}



function FsrmGetLastErrorLog

{

    $errorSuffix = '\fileclassification*error.xml'

    $classificationLogSuffix = '\fileclassification*.xml'

    $latestLog = ""

    

    if (FsrmCheckIsErrorLogEnabled)

    {

        $RM = new-object -com("Fsrm.FsrmReportManager")

        $pathScheduled = $RM.GetOutputDirectory(2)

        $pathScheduled = FsrmReplaceEnvMacros $pathScheduled

        $pathInteractive = $RM.GetOutputDirectory(3)

        $pathInteractive = FsrmReplaceEnvMacros $pathInteractive



        $errorFilePathScheduled = $pathScheduled + $errorSuffix

        $classificationFilePathScheduled = $pathScheduled + $classificationLogSuffix

        $errorFilePathInteractive = $pathInteractive + $errorSuffix

        $classificationFilePathInteractive = $pathInteractive + $classificationLogSuffix

        





	$classificationLogs = @()



        $classificationLogs = @(@(dir $classificationFilePathScheduled) | sort LastWriteTime -Descending)



        $latestClassificationLog = ""



        if ($classificationLogs.Length -gt 0)

        {

            $latestClassificationLog = $classificationLogs[0]

        }



        $allErrorLogs = @()

        

        $allErrorLogs = @(@(dir $errorFilePathScheduled) | sort LastWriteTime -Descending)



        if ($allErrorLogs.Length -gt 0)

        {

            $diff = $latestClassificationLog.LastWriteTime.Subtract($allErrorLogs[0].LastWriteTime)



            if ($diff.TotalMinutes -lt 10) 

            {

                $latestLog = $allErrorLogs[0]

            }

        }

        

        $classificationLogs = @(@(dir $classificationFilePathInteractive) | sort LastWriteTime -Descending)

        if ($classificationLogs.Length -gt 0)

        {

            if ($latestClassificationLog.LastWriteTime -lt $classificationLogs[0].LastWriteTime)

            {

                $latestClassificationLog = $classificationLogs[0]

            }

        }





        $allErrorLogs = @(@(dir $errorFilePathInteractive) | sort LastWriteTime -Descending)



        if ($allErrorLogs.Length -gt 0)

        {

            $diff = $latestClassificationLog.LastWriteTime.Subtract($allErrorLogs[0].LastWriteTime)



            if (($allErrorLogs[0].LastWriteTime -gt $latestLog.LastWriteTime) -and ($diff.TotalMinutes -lt 10))

            {

                $latestLog = $allErrorLogs[0]

            }

        }

    }

    

    $latestLog

}



function CheckFsrmErrorLogAlerts

{

    $errorADSReadOnly = "System Cache Storage Module::0x80070005"

    $errorADSCachSize = "System Cache Storage Module::0x800700df"



    $okAtCount = 2000

    

    $okReadOnly = $true

    $okCacheSize = $true



    $ErrorCountTable = @{}

    

    # We must put the whole of log parsing in a script block so the file is properly parsed on the machine running the BPA, which may be remote

    invoke-command -scriptblock { param($lastErrorLogParam)



                    function GetFsrmLocalizedModuleName

                    {

                        param

                        (

                            [string] $nonLocalizedName

                        )

                        

                        $CM = new-object -com("Fsrm.FsrmClassificationManager")

                        $StorageModules = @($CM.EnumModuleDefinitions(1))

                        $staticModuleParam = "StaticModuleName"

                        $localizedName = ""

                        

                        # get table of module names and static names

                        foreach($module in $StorageModules)

                        {

                            $moduleParams = @($module.Parameters)

                            foreach($moduleParam in $moduleParams)

                            {

                                if ($moduleParam.SubString(0, $staticModuleParam.Length) -ieq $staticModuleParam)

                                {

                                    if ($nonLocalizedName -ieq $moduleParam.SubString($moduleParam.IndexOf('=') + 1))

                                    {

                                        $localizedName = $module.Name

                                        break

                                    }

                                } 

                            }

                        }   

                        

                        return $localizedName

                    }



                    Function ParseFsrmErrorLog

                    {

                    	Param

                    	(

                    		[string]$ErrorLogFilePath,

                    		[int]$TimeOutInSeconds

                    	)



                    	Begin

                    	{

                            # Look for the localized name since that is what is in the log files

                            # but write the nonlocalized name so we don't have to convert it again later

                            $nonlocalizedSystemCache = "System Cache Storage Module"

                            $localizedSystemCache = GetFsrmLocalizedModuleName $nonlocalizedSystemCache

                            $interestingErrors = @("0x80070005", "0x800700df")

                            

                    		$ErrorEntryCount = 0



                    		$StartTime = Get-Date



                    		$TimeoutTimeSpan = new-object System.TimeSpan(0, 0, $TimeOutInSeconds)



                    		$ExpectedEndTime = $StartTime.Add($TimeoutTimeSpan)



                    		$TimedOut = $False

                    	}



                    	Process

                    	{

                            # use the stream reader because it is memory efficient unlike get-content

                            $xr = [System.Xml.XmlReader]::Create($ErrorLogFilePath)

                            

                            if ($xr -eq $null)

                            {

                                return

                            }

                            

                            $xr.ReadToFollowing("Item")

                            

                            do

                            {

                                $foundInterestingError = $false

                                

                                # Look for the localized module name since that is what is in the log files

                                # but write the nonlocalized name so we don't have to convert it again later

                                if ($xr.GetAttribute("Module") -eq $localizedSystemCache)

                                {

                                    foreach ($error in $interestingErrors)

                                    {

                                        if ($xr.GetAttribute("Message").Contains($error))

                                        {

                                            $ErrorCodeKey = $nonlocalizedSystemCache + "::" + $error

                                            $foundInterestingError = $true

                                            break

                                        }

                                    }

                                }

                                    

                                # didn't find an interesting error so move on

                                if ($foundInterestingError -eq $false)

                                {

                                    continue

                                }

                                

                    			$NoOfOccurences = 1

                    	

                    			if ($ErrorCountTable.ContainsKey($ErrorCodeKey))

                    			{	

                    				$NoOfOccurences = $ErrorCountTable.Get_Item($ErrorCodeKey) + 1

                    				$ErrorCountTable.Set_Item($ErrorCodeKey, $NoOfOccurences)

                    			}

                    			else

                    			{

                    				$ErrorCountTable.Add($ErrorCodeKey, $NoOfOccurences)

                    			}

                                

                    			$ElapsedTime = Get-Date



                    			if ($ElapsedTime.CompareTo($ExpectedEndTime) -ge 0)

                    			{

                    				$TimedOut = $True

                    				break

                    			}	

                    		} while ($xr.ReadToNextSibling("Item"))



                    	}



                    }



                    ParseFsrmErrorLog $lastErrorLogParam -TimeOutInSeconds 60 } -ArgumentList (FsrmGetLastErrorLog)

                    # end of script block for invoke-command

                    

    if ($ErrorCountTable[$errorADSReadOnly] -gt $okAtCount)

    {

        $okReadOnly = $false

    }

    

    if ($ErrorCountTable[$errorADSCachSize] -gt 0)

    {

        $okCacheSize = $false

    }

    

    $warnings = @{}

    

    $warnings.Add("readonly", $okReadOnly)

    $warnings.Add("cachesize", $okCacheSize)

    

    $warnings

}



function CheckAllV2Schedules

{

    $strV1 = "V1"

    $strV2 = "V2"

    

    $V1Fmjs = ""

    $V1Reports = ""

    $V1Classification = $strV2

    

    $V1ObjectsExist = $false



    # To determine if an object's schedule is V2 we see if its

    # schedule object's legacy name is empty



    # Check FMJs

    $FMJs = Get-FSRMFileManagementJob



    foreach ($fmj in $FMJs)

    {

        $fmjTask = $fmj.Schedule.LegacyTaskName

        

        if ($fmjTask.length -gt 0)

        {

            write-host "Found V1 FMJ: " $fmj.Name



            if ($V1Fmjs.length -ne 0)

            {

                $V1Fmjs = $V1Fmjs + "`n"

            }

            

            $V1Fmjs = $V1Fmjs + $fmj.Name

        }

    } 



    # Check Reports

    $Reports = Get-FsrmStorageReport

    

    foreach ($report in $Reports)

    {

        $repTask = $report.Schedule.LegacyTaskName

        

        if ($repTask.length -gt 0)

        {

            write-host "Found V1 Report: " $report.Name

            

            if ($V1Reports.length -ne 0)

            {

                $V1Reports = $V1Reports + "`n"

            }

            

            $V1Reports = $V1Reports + $report.Name

        }

    } 

    

    # Check Classification

    $cls = Get-FsrmClassification

    $clsTask =  $cls.Schedule.LegacyTaskName

    

    if ($clsTask -ne $null)

    {

        if ($clsTask.length -gt 0)

        {

            write-host "Classification is V1"

            $V1Classification = $strV1

        }

    }



    # If any of our objects are V1 we need to set the flag for our return object

    if ($V1Fmjs.length -gt 0 -or

        $V1Reports.length -gt 0 -or

        $V1Classification.CompareTo($strV2) -ne 0

        )

    {

        $V1ObjectsExist = $true

    }

        

    #Build the return object

    $v1Objects = @{}

    

    $v1Objects.Add("hasV1Schedules", $V1ObjectsExist)

    $v1Objects.Add("fmjs", $V1Fmjs)

    $v1Objects.Add("reports", $V1Reports)

    $v1Objects.Add("classification", $V1Classification)

    

    $v1Objects

}



function CheckFsrmFirewall

{

    # We want to see if there are any rules enabled where the local port

    # is 5985 and the protocol is TCP.  This is required for WMI to work remotely

    

    $firewall = New-Object -ComObject hnetcfg.fwpolicy2 



    $enabledRules = $firewall.rules | ?{$_.Protocol -eq 6 -and $_.LocalPorts -eq 5985 -and $_.Enabled -and $_.Action -eq 1 -and $_.Direction -eq 1}

    

    $enabledRules.Count -gt 0

}



function CheckFsrmWinRm

{

    # We want to make sure that win rm is enabled.  We'll check the value at

    # WSMan:\localhost\Service\AllowRemoteAccess to verify that.

    

    $allowedPair = Get-Item "WSMan:\localhost\Service\AllowRemoteAccess"

    

    [System.Convert]::ToBoolean($allowedPair.value)

}



function GetFSRMXml($xmlDoc, $ns)

{	

    $fsrmNode = $xmlDoc.CreateElement("FSRM", $ns)   

    [void]$xmlDoc.DocumentElement.AppendChild($fsrmNode)    

    

    $computerName = [System.Net.Dns]::GetHostName()

    $fsrmServiceStatus = Check-ServiceStatus $computerName "srmsvc"

    Append-XmlElement $xmlDoc $fsrmNode $ns "ServiceStarted" (Formalize-BoolValue $fsrmServiceStatus)

    

    if(Get-ServerInClusterStatus -eq $true)

    {

        $clusterElement = $xmlDoc.CreateElement("Cluster", $ns)

        [void]$fsrmNode.AppendChild($clusterElement)

        

        $isServiceInstallationConsistent = Check-ServiceInstalationOnCluster "File Server Resource Manager"

        Append-XmlElement $xmlDoc $clusterElement $ns "ServiceInstallationOnClusterConsistent" $isServiceInstallationConsistent[0]

        if($isServiceInstallationConsistent[0] -eq "NA")

        {

            Append-XmlElement $xmlDoc $clusterElement $ns "NotReachableNodes" $isServiceInstallationConsistent[1]

        }        

    }

    

    $fsrmClassificationSchedulePresent = CheckFSRMClassificationSchedulePresent

    Append-XmlElement $xmlDoc $fsrmNode $ns "ClassificationSchedulePresent" (Formalize-BoolValue $fsrmClassificationSchedulePresent)

    

    $fsrmPropertyDefinitionCount = CheckFSRMPropertyDefinitionCount

    Append-XmlElement $xmlDoc $fsrmNode $ns "PropertyDefinitionCount" (Formalize-BoolValue $fsrmPropertyDefinitionCount)

    

    $fsrmQuotaCount = CheckFSRMQuotaCount

    Append-XmlElement $xmlDoc $fsrmNode $ns "QuotaCount" (Formalize-BoolValue $fsrmQuotaCount)

    

    $fsrmFileScreenCount = CheckFSRMFileScreenCount

    Append-XmlElement $xmlDoc $fsrmNode $ns "FileScreenCount" (Formalize-BoolValue $fsrmFileScreenCount)

    

    $fsrmCacheEnabled = CheckFSRMCacheEnabled

    Append-XmlElement $xmlDoc $fsrmNode $ns "CacheEnabled" (Formalize-BoolValue $fsrmCacheEnabled)

    

    $fsrmOrphanedLogsNode = $xmlDoc.CreateElement("OrphanedLogs", $ns)

    [void]$fsrmNode.AppendChild($fsrmOrphanedLogsNode)

    

    $fsrmOrphanedLogs = CheckFSRMOrphanedFMJLogs

    if($fsrmOrphanedLogs.length -gt 0)

    {

        Append-XmlElement $xmlDoc $fsrmOrphanedLogsNode $ns "NoOrphanedLogs" (Formalize-BoolValue $false)        

    }

    else

    {

        Append-XmlElement $xmlDoc $fsrmOrphanedLogsNode $ns "NoOrphanedLogs" (Formalize-BoolValue $true)        

    }

    Append-XmlElement $xmlDoc $fsrmOrphanedLogsNode $ns "Logs" ($fsrmOrphanedLogs)



    $fsrmErrorLogAlerts = CheckFsrmErrorLogAlerts

    Append-XmlElement $xmlDoc $fsrmNode $ns "LatestLogFile" (FsrmGetLastErrorLog)

    Append-XmlElement $xmlDoc $fsrmNode $ns "FewReadOnlyFiles" (Formalize-BoolValue $fsrmErrorLogAlerts.readonly)

    Append-XmlElement $xmlDoc $fsrmNode $ns "CacheSizeAdequate" (Formalize-BoolValue $fsrmErrorLogAlerts.cachesize)

    

    $fsrmV2SchedulesNode = $xmlDoc.CreateElement("V2Schedules", $ns)

    [void]$fsrmNode.AppendChild($fsrmV2SchedulesNode)

    

    $fsrmV2Schedules = CheckAllV2Schedules

    Append-XmlElement $xmlDoc $fsrmV2SchedulesNode $ns "HasV1Schedules" (Formalize-BoolValue $fsrmV2Schedules.hasV1Schedules)

    Append-XmlElement $xmlDoc $fsrmV2SchedulesNode $ns "FMJs" ($fsrmV2Schedules.fmjs)

    Append-XmlElement $xmlDoc $fsrmV2SchedulesNode $ns "Reports" ($fsrmV2Schedules.reports)

    Append-XmlElement $xmlDoc $fsrmV2SchedulesNode $ns "Classification" ($fsrmV2Schedules.classification)

    

    $fsrmFirewall = CheckFsrmFirewall

    Append-XmlElement $xmlDoc $fsrmNode $ns "Firewall" (Formalize-BoolValue $fsrmFirewall)

    

    $fsrmWinRm = CheckFsrmWinRm

    Append-XmlElement $xmlDoc $fsrmNode $ns "WinRm" (Formalize-BoolValue $fsrmWinRm)

}

#

# End FSRM functions

#



#

# ------------------

# FUNCTIONS - END

# ------------------

#



#

# ------------------------

# SCRIPT MAIN BODY - START

# ------------------------

#



#

# Initialize to perform querying Role information

#

Setup



# 

# Set the Target Namespace to be used by XML

#

$tns="http://schemas.microsoft.com/bestpractices/models/FileServices/FSRM/2011/04"

#

# Create a new XmlDocument

#

$doc = Create-DocumentElement $tns "FSRMComposite"



$fsrmInstalled = Check-FeatureInstallStatus "FS-Resource-Manager"

if($fsrmInstalled -eq $true)

{   

    GetFSRMXml $doc $tns

}    



#

# Role Information obtained.

#

TearDown



$doc

$doc.Save([Environment]::SystemDirectory + "\BestPractices\v1.0\Models\Microsoft\Windows\FileServices\tempFSRM.xml")




Youez - 2016 - github.com/yon3zu
LinuXploit