Mini Kabibi Habibi

Current Path : C:/Windows/System32/
Upload File :
Current File : C:/Windows/System32/bdechangepin.exe

MZ����@���	�!�L�!This program cannot be run in DOS mode.

$E������������ػ����ؼ����ؽ����ع�������f���ذ�9���ظ�����G����غ����Rich���PEd�A�Ù�"�b��@


 �;`� p�T���P��@��0�T���0.text�� `.rdata�����@@.data�0@�.pdata�@@@.rsrc��P� @@.reloc��@B��������H��H�L�RH�T$xL����D$0A��D$4I�BI��
H�D$8H�AH�H�AH�T$(��JH�
l��BL�RA��BH�R�+��BI�K H�T$0�D$x�D$p�D$ H�~�DH��H���������������������@SH��@L��$�H��M��t\L�\$p�…�t#��u"A�ȸ��M�JE��M�ZE�A��A�"I�B(H��t!I�J0H�L$0H�L$xH�L$(H��L�\$ ��H��@[���������H�\$H�t$WH��@H�r H3�H�D$0H�AL�I H��H�P���L��@�H�a(H�a0H�L$ �D$ H�ŜD�؅�t�؁����N��L�G�H�O E�H���D��H�L$0H3��pH�\$XH�t$`H��@_�����������H�\$ WH��@3�H�Q�DH��uH� �D���H�0�DH��H�H�H�������H�ʝDH��H�L$`H���DH��DH�
F��D$0H�L$(L��H�
��E3�H�L$ 3�H�L$XH���D��uRH�%%H�D$PH�D$(�T0�؅�xCH�|$PH��H�W�D�؅�x	H�=�$� H�H��H�@X�C��H�D$X3�H��$H�L$`H��D��H�\$hH��@_����������������������H�\$H�l$H�t$WH��0I��A��H��H��H���DH;�u�C��;�uH��@H��t�xL��D��H��H��H�\$@H�l$HH�t$PH��0_H�%U��������������H�\$WH�� H�OH��H���H��H��tH�4�DH��H��D@��tH���jH��H�\$0H�� _���������H�\$WH�� H��H��I��H��D��H��H�ؚDH�H�\$0H�����%@�H�� _����������H�\$ WH��@3�H�śDH��uH�l�D���H���DH��H�H�H��}�����H�F�DH��H�L$XH�*�DH�^�DH�
��D$0H�L$(L��H�
��E3�H�L$ 3�H�L$`H��D��uAH�D$PH�D$(��,�؅�x.H�|$PH��H�ۚD�؅�yH�H��H�@X�Р�3�H�L$XH���D��H�\$hH��@_�����������H��H�XH�hL�H VWAVH��0H�` H��H�>�D�A� H��H��DH��H���H��H��DH�L$pH�}L�t$xH��H�&E3Ƀ�E3�H�L$(H��I�&H��H�d$ H�H��D�؅�y�H��H��D�H�d$ E3�E3�H��3�H��H�ĘD�؅�xdL�:!L�
s�H���H���D�؅�x<H�H�D$hH�D$(H�-�H�d$ E3�L��H�z�D�؅�x
I�>���H�l$X��H�\$PH��0A^_^���������H��H�XH�xUH��H��`H�`�H���`�E3�H�e H�E HcڹD��H�D$ 3�H��D��uZH�E�H�]�H�D$0E3Ƀd$(H�E 3�H�D$ �9A���H���D��uH���D�؁����N��mH��H�U(H�σ��tYL�3��J����؅��@L�=�H��H�U��-����؅��#L�8�H��H�U������؅��L�C��WL�b����؅���L�t�H��H�U������؅���L�w�H��H�U�����؅���L���H�U�H������؅���H�M(�LJH���DH�M(�H���DH�M���H���DH�U H�M�H���DH�M�H�m�DH�M�3�H�S�DH�M�H�I�DH�M H��DH�|$x��H�\$pH��`]�����������H�\$WH��`H�gH3�H�D$XL�آH��H�T$ ���3���x@H�L$ D�GH�T$(H��D��yf�|$(H��L�D$(H��d���*H�L$XH3�� hH�\$xH��`_����������H�\$WH��`H��H3�H�D$XL�\�H��H�T$ ����3���x@H�L$ D�GH�T$(H�L�D��yf�|$(H��L�D$(H�����I*H�L$XH3��gH�\$xH��`_����������H�\$WH��PH�<H3�H��$@L��H��H�T$ �y���3���xBH�L$ H�T$0A�H���D��yf�|$0H��L�D$0H�����)H��$@H3���fH��$hH��P_���������H�\$WH��PH��H3�H��$@L���H��H�T$ ����3���xBH�L$ H�T$0A�H��D��yf�|$0H��L�D$0H�����	)H��$@H3��IfH��$hH��P_���������H�\$H�t$WH��H��H3�H��$pH��H�T$ 3�H��9��ttL�����������H�L$ H�T$`�D��H�N�D��yf�|$`H��L�D$`H���H���M(����H��������xtH������jL��������xZH�L$ H�T$(�D��H�ޒD��yf�|$(H��L�D$(H��:H����'��xH�������xH���	���H��$pH3��eL��$�I�[I�s I��_���������H�\$H�|$UH��H��@��L��H�U�H���������L�
�H��H�U���������L��H��H�U�������iL��H��H�U�������NL�)�H��H�U ������3L�6�H��H�U(�n���������1������1�������������������������������������twH��H������t0H�]�H��H�1�DH�M H�ѢH��DH�M(�OH�]�H��H��DH�M�H���H��DH�M��H�] H���H�]�H����H�]��H�]�H��H�i�H���DH�H��H����j�H�\$PH�|$XH��@]�����������@USVWH�l$�H��H�egH��H��W�3�H��E�H�EH�p�DH�����������H���!(��H�΅�y�������H�������H��L���H�Uǀ��������L���H��H�U��|������L���H��H�U��_�����gL���H��H�U��B�����JL�%�H��H�U��%�����-L�8�H��H�Uw������L�;�H��H�Uo��������L�>�H��H�U���������H�Mw3�H��DH�M3�H�	�DH�M�3�H���DH�M�3�H��DH�M׻������H���DH�MߍSH���DH�Mo��H���DH�Mo3�H���DH�]�3�H��H�Z�D�H��H�q�DH�H��H�������H��H��H�X�D����H�MgH��t
H�H�@�ՔH�Eg�D��H�D$ L�
��3�H�
��H���D����H�}gH�����Mf�]�H��E�E��M')Ed��E�H�ȒDE3�A�����H��H��H�EH�D$(H�E�H�D$ H�C0�0�H���DE3ɹ�H��E�A�H�~�DH�}gH��tH�egH��H�H�@��H�ĸ_^[]��������@USWH��H��PH��H��H��H��DH���+������H���+&��H�υ�y���W��H���E�����H��L���H�U0ǀ��;����L���H��H�U8� ����L�͙H��H�U������L�ڗH��H�U������oL�W�H��H�U������TL�|�H��H�U(����9L���H��H�U�����L�ΙH��H�U �~���L�әH��H�U��c����H�M(3�H���DH�M03�H���DH�M83�H���DH�M�3�H�|�DH�Mػ������H�=�DH�M�SH�*�DH�M�3�H�@�DH�M ��H��DH�M 3�H��DH�]�3�H��H�ߊD�H��H���DH�H��H��������H��H��H��P_[]H�%֎��������������@SH�� H��H��H��H���DH��E3�E3�ǀ�A�QH��H���DH��H��H�� [H�%c������������H�\$VWAVH��0L���H��H�T$ ��3����GL��H��H�T$X�����+L�"�H��H�T$`�����L�.�H��H�T$h�e�����H�D$ H�|$X�����f95�u4H�H��H��h�F�E3�E3�H�Ⱥ�H���Df��H�H��H��h��E3�E3�H�Ⱥ�H�}�DH�t$`H��H�H��h��E3�E3�H�Ⱥ�H�K�DL�t$hI��I�H��h���E3��H�H���H��h���E3�D��H�Ⱥ�H���DH�t$`��H��H�H��h�S�E3�D��H�Ⱥ�H���DL�t$h��I��I�H��h��D��E3ɺ�H��H���DH�H��H��h���3�H��D��H�a�DH�H��H��h���D��3�H��H�:�DI�I��H��h���D��3�H��H��DH�\$PH��0A^_^���������H�\$H�t$WH�� �zH��H����H�L$8H���DL�L9G��H�H�
1����H��Df;�u
H������H�H�
�����H�܆Df;�u
H�������xH�H�
�����H���Df;�tNH�H�
����H���Df;�t,H�H�
Z����H�l�Df;�uH���r����H������GH��H��H�\$0H�t$@H�� _H�%������������������H�\$H�t$WH�� �zH��H�����z��f�z u
����f�z 
��H�H�
����H�ÅDf;��\H�H�
�����H���Df;��6H�H�
�����H�w�Df;��H�H�
�����H�Q�Df;���H�H�
����H�+�Df;���H�H�
k����H��Df;���H�H�
u����H�߄Df;�trH�H�
{����H���Df;�tPH�H�
����H���Df;�t&H�H�
ߒ���H�y�Df;��H���s���H������H�����G������H�H�
)����H�#�Df;���H�H�
#����H���Df;���H�H�
����H�׃Df;�tmH�H�
����H���Df;�tDH�H�
)����H���Df;�t"H�H�
/����H�q�Df;�u��3�H���H��H��H�\$0H�t$8H�� _H�%����������������H�\$VH�� L�3�H��H�T$@���؅�x}L���H��H�T$8����؅�xcH�L$@�����H�
�DH�L$83�H���DH�L$@3�H��DH��H�L$8���t3���H��D��H�\$0H�� ^�����������@USVWH��H��XH��H������OL�R�H�U(�5��ؾ����L�S�H��H�U0���؅���L�f�H��H�U8���؅���L�q�H��H�U@����؅�xuL���H��H�U����؅�x\H�M(�V�H��DH�M0��H�ցDH�M8�V�H�ÁDH�M@��H���DH�M��H���D����H��3�9��uYL���H��H�U(�2��؅�x@L���H��H�U0���؅�x'H�M(�����H�?�DH�M0��H�-�D���CH�e(L�E0H�e0�}�%H�u0�؅���H��E3�E3�H�֋HH�E�H�D$0H�E(�d$(H�M�%H�D$ H�E�H���D��uH���D�؁����N��-L�l�H��H�U0�D��؅�xH�U(H�M0H�{�DH��tH���
OH�M(H��D���dH���������UH�e0L�E(H�e(�s���t���$H�u(�؅���H��E3�E3�H�֋H�E�H�D$0H�E0�d$(H�M�%H�D$ H�E�H���D��uH���D�؁����N��-L�I�H��H�U(�I��؅�xH�U0H�M(H��DH��tH���NH�M0H�#�D��xmL�+�H��H�U(���؅�xTL���H��H�U0����؅�x;H�M03�H�3DH��H�M(���t3���H�
D��H��X_^[]�����������H�\$WH�� ��H�\�L�݊H��LD�H�T$@�`�����x#��tH�L$@3�H��~D��H�\$0��H�� _�����������@USWH��H��0H��3�H!]8H��9����H�U 9����L�Ɖ����؅��rL��H��H�U0���؅��UL�ˉH��H�U����؅��8L���H��H�U(���؅��H��H��H�ށDH�����؅���H���C���H����y	H�H�������E�A��A�ƒ�L�����؅���L��H��H�U0����؅���L���H��H�U�����؅��iL�W�H��H�U(���؅��LH��H��H��DH�����؅��H���<��؅���A������L��A���tI����.$��u@I����I��d�$��u'I����$��uH�M 3�H�L|D�L�E8A���2 �؅�xtH�M �H�|DH�M �H�|DH�M03�H��{DH�U8H�M(H��{DH�M(�H��{DH�M���H��{DH��H��H��D��H��0_[]��������������������L��I�[I�kI�sI�{ ATAVAWH��H���H3�H��$pL��$�I���3�3�I������A�D��[3�H�\$0M��uE3��N��N�EH���<�F��������+I��H�nH��H�DL�F0�H�L$@���H�ͅ�yH��~D��D���H��~D���L�L$H��L���
Ƀ���J�L$ H��$P�0������H�T$0H�L$H�_#����x{H�ƋE��H���I��HD�I�H��h���D�|$(L��$PH�d$ H���H��L��H�&DH�\$0��H��H��~D��uI���D��H�\$03���AI�H��tH��H�n~D��H��$pH3��'LL��$�I�[ I�k(I�s0I�{8I��A_A^A\����������������������H��(��NuM��tA�@�������u���H��(����������H�\$ UVWH��H�� L�>�H��H�U �����؅��H�E H�5u���L�>�H��H�U H��PH��X����؅���H�E H�U H��H��PH��XH������0L����U���؅���L�؅H��H�U(�8���؅��rL��H��H�U0����؅��UH�u L�҇H�E(H�U H��H��@H��@H�E0H��@�����؅��H�E H�
����H��PH��XH�����t9L���H��H�U ����؅���H�M �H��wDH�����u/L�U�H��H�U �U���؅���H�M 3�H��wDH�H���hL�.��%���؅�xcL�<�H��H�U(����؅�xJL�;�H��H�U0�����؅�x1H�M H�E(H��@H��@H�E0H��@H�H�����}��H�\$XH�� _^]����������H�\$H�l$H�t$WH�� H��L���H��3�3ɍSH�i{DH��H�z{DD��H��tRA��
�E��AN�=��u6H��H�4{DH��3�H��{DH��tH��H��{D�H�>�H�l$8��H�\$0H�t$@H�� _���������H��H�XH�pH�xUATAUAVAWH�����H��H�_�H3�H���
fo��3�H�M��H��H�M��\$aD��D��CH�]��E�D��H���H�\$pH�]�H�\$x�E�f�pH��yD��������D�󉅘���f���f�]�f���f��f��>���H�=��H��yDH��u
�@��H�T$dH��H�>zDL��H��u"H��yD��D�������N����|$d�ω|$d������H�H�
�I��H���T3҅�u�r�H��H��H��f9Cu�H����H��H��f9Cu�H��wp�H�*zD3҅�tWHc|$dI��f�y:uKE�����	H��yDL����H���f����h	�؅��A��|$d�ω|$d�Dž��1���H�M�H�1xD��H�M��9
�؅���=��u%��H�H��H�H�D$x�J�@�D��@���E3�H�D$xL�t$0E3�D�t$(D��3�H�D$ �H�hxD��A�FDE�3�H�xDA��3�H��H�E�H�D$8�H�D$0���D$(E�AH�D$xH�D$ H�hrDH�M�H�`wDE��A��H�L$pH��wDE��tH�L$xH��wDE��tH�zsDE��tH�
���H�jsD@��tH��yDH�M�H���tH�cwDH�M�H��vD3�H����P���H�����H��>����H���
H3���DL��$�I�[0I�s8I�{@I��A_A^A]A\]�̺E��t$L���H�M��[E3��؅�x H�M����L�E�H����7E3���H�M�H�'vD�������3�H��xD�؅�������H�f��D��@�|$ D��@���O
H��qD�؅����OD��H��qD�؅��kH����tL�E�H�E�D���[H�u��؅��+H�E�E3�H�D$0E3�H�D$pD�t$(H��H�D$ �%H��uD��uH��uD�؁����N���H�T$pH�M�������uH�M���@���H�GvD���H�4vD3ɋ�H�LuD�D$(�D��H�ȉ\$ �D����H��uDH��t�A��H�M�H�L$PL��H�L$p3��D$H�D$@�D�t$8D�L$0D�L$(D�L$ H��pD�؅���2�������������H�E�H�M�H�L$(H�L$hH�L$ H�H�!������H�}�H�E�H�M�H��H��sDH������H��H��H��sDH�υ�y�T$hH�pD�f�H��oD�T$hH��H��oDH���,����؅�x4H�M�H��H��oDH�M��H��oDH��oDH�������H���=��D�|$a���E�����������@SH�� H�3�H��H�����uH�nsDL��3�H��H�� [H�%Es���������������������H�%�o������������������������̸@������������@SH�� H�3�H��H����5uH��rDL��3�H��H��rDH�%��H�� [��������H�%o�������������������������H�\$H�l$H�t$WH�� I�!I��I��H��H�xrD�A�HH��H�VrDH��H��tYH��H�_pDH��@H�[NL��H�L�źH��H�cnD����xH��3�H��H�?mD���H�\$0��H�l$8H�t$@H�� _���������H�\$H�t$WH��0H�t$hH�&H��qD�H��D�BH��qDH��H����H��H��mD�d$(H��OH�d$ L�DxE3�H�H�g���H��H��mD����xH��<H�3�H��H����hsH�!qDL��3�H��H��pD���H�\$@��H�t$HH��0_��������H�\$H�t$WH��0H�t$hH�&H��pD�H��D�BH��pDH��H����H��H��lD�d$(H�uNH�d$ L�8wE3�H�H�{���H��H��lD����xH��<H�3�H��H����|rH�5pDL��3�H��H�pD���H�\$@��H�t$HH��0_��������������������H�\$WH�� ��H��H�BlD��tH����9H�\$0H��H�� _�����������H�\$WH�� ��H��H��mD��tH���9H�\$0H��H�� _�����������H�1����������H�\$3�H�B�A����D��I;�A�W�EG�E��xKH��t&L+�L+�I�H��tA�f��t
f�H��H��u�H��H�A�HE�H��E�A��A��z�f��H��tf�H�\$A�������������L�D$L�L$ SUVWH��(3�H�B�H=���H��W�G���x;H�Z�H��H��L�L$h��H��oD��xH�H;�wuf�,^�f�,^�z��H��tf�.��H��(_^][��������L��I�[I�kI�sI�{ AVH��0E3����L�Q0M�s�H��O�L��~I�C�H����I��E��M+�H�����H��tA�f��tf�I��H��H��u�H��H�A�HE�I�I�IE�fD�0H��H��I�,J�H+�Ӂ�z�H��tD�����H;�����H��A��H�3mD����H��mD�؁����N؅���H����؅�xz3�H�L$ �H�t$(�؅�xVE3�H�N(L��A�QS���؅�x�����v���x)H�WH�L$ ��؅�xH���D�������H��tH���H�l$H��H�\$@H�t$PH�|$XH��0A^��;��J���fD�u�@����������������H�\$WH�� 3�H��9��t
�@��2L��:�M��t:D��I��f98t
H��I��u�I��A�W�H����A#�M��tH��I+��H���H�D$0A�W�A�څ�HH���H��s
����L��dM��t1L��I��f98t
H��I��u�I��H����A#�M��tI+��
H���H�L$0A�څ�HH�xp�H;�s����bL���M+�A�C�+�uI����u�t����8��x4L��dH�J0I����؅�y�CH�0lD�����Eً�H�\$8H�� _���������H�\$WH�� 3�H��9��t
�@��2L����M��t:D��I��f98t
H��I��u�I��A�W�H����A#�M��tH��I+��H���H�D$0A�W�A�څ�HH���H��u
����L���M��t1L��I��f98t
H��I��u�I��H����A#�M��tI+��
H���H�L$0A�څ�HH�xq�BH;�s����bL���M+�A�C�+�uI����u�t����8��x4L���H�J0I����؅�y�CH��jD���	��Eً�H�\$8H�� _���������H�\$H�t$WH��
H�s�H3�H��$�
H��H�L$ H�dDH�W0H�L$ H��cD3ۋ�xU9��uH���H�L$ H��cD��x/�D$ ���t	�}��t�����D$ �������H�L$ H��cD��H��$�
H3���6L��$�
I�[I�s I��_������������������̋��$��������̋��$��������̋D$(�A3�f�AH���L�AD�I���������������������̋��	$��������̋��$��������̋��$��������̊A��$�������̋��$��������̋��$��������̋��$��������̋��$���������@t
�A�t���2������������̊$��������������u�A��;�v2Ҋ��������̋���t	�����t2���������������������������̋��$��������̋��$��������̋��$��������̋��$��������̋A�������������������������̋��$��������̋��$���������̋�#�;��������������������̋��$��������̋��$��������̋��$��������̃y}���$�:�t���t2Ɋ��������������������̋��$��������̋��������������Af��f���������������������̊A��$�������̋��������������H�A�����������̋A�������������H���������������H��JI��������������̋�H�BH�A�B�A�B�A�Bf�AH���������������@SH�� A��
H���@H��H�� [��������H��H�XH�pH�x UH�h�H��H�"�H3�H�EO3�f�EK3�H�uW�H�E?H�EH�uH��H�D$(E3�H�t$ E3�H�uH�hr�uG3ɋ�EE/H�zeD��t�؁����N��H�MH�UH�/eD��u�H�EE3�H�D$PH�MG�t$H��t$@�t$8E�A�t$0�t$(�t$ H��^D��uH��dD�H�M��E3҉E+H�EH�E?H�EH�D$0D�J
�t$(D�BH�t$ H�E#H��dD���:���H�EH�H�uH9utH�MH�dDH�uH�MH��tH�.^DH�uH9utH�MH�DdD��H�MOH3��1L��$�I�[I�s I�{(I��]���������H�\$H�t$H�|$ AVH��H�Y�H3�H��$�I��H��L��H�d$@H�L$@���؅���L�ǿ��H�L$X���؅�x|L�Ƌ�H��$����؅�xd�D$8H��$�H�D$0H�D$XH�D$(L�t$ L�L$@E3��W�H�
�FH�DcDH��H�D$P�D$H��ȁ����NȋىL$HH�|$@tH�L$@H�cDH�|$X3��P*���H��$�����H��$�H3��x0L��$�I�[I�s I�{(I��A^�����������H�\$H�t$H�|$ AVH��H�
�H3�H��$�I��H��L��H�d$@H�L$@����؅���L�ǿ��H�L$`��؅�x}L�Ƌ�H��$p��؅�xe�D$8H��$pH�D$0H�D$`H�D$(L�t$ L�L$@E3�A�PH�
�EH��aDH��H�D$P�D$H��ȁ����NȋىL$HH�|$@tH�L$@H��aDH�|$`3�����H��$p����H��$�H3��)/L��$�I�[I�s I�{(I��A^����������������@SH�� H��H�aDL�úH��H�� [H�%�`��������������������@SH�� H��H��`DL��3�H��H�� [H�%�`�����������H��H�XH�pH�x H�HAVH�� H�`3�I��M����H�
9�L�@E3�H�CaDHc؅�uH��`D�؁����N��H9|$0u�@��sH�����L�s�I��H��fH@�H���H9H��H��u���>O�63�H���';L�D$0L��I��H���<�؅�x
H�>��@�H��tH����)H�t$@��H�\$8H�|$HH�� A^��������H�\$E3�H�B�H=���E�ӻW�DG�E��xZI�����vD���QH��t&L+�L+�I�H��tA�f��t
f�H��H��u�H��H�A�HE�H��E�A��A��z�fD��	H��tfD�H�\$A������������@SH���H���H3�H��$�3�D�BpH�L$@�:�H�mkH�D$ L�
oL�bo�H��$�����؉D$0��xU�D$@p�d$DH��$�H�D$X�D$pH�L$@H�_D��uH��^D�؁����N؉\$0��H��$�H3��,H���[�����������@SH�� H��H�L$8H��_D��x	�T$8��=%�u�#3���H��_D����
���N�H�� [�����������H�\$H�t$WH��PH�k�H3�H��$@3�H�L$ A���83�3ɍ_D�ÍSH�"]D�SƄ$:L��H�L$ H��H�8_D��y&L��Ƅ$:�SH�L$ H�_D��I��ߋ�H��$@H3��*L��$PI�[I�sI��_������������E3�E��f��tA�Qf�� f��^wD�B�Af��u�A�ы�����������f�����������H�\$H�t$H�|$ATAVAWH�� E3�H��L��A��A��A�H��t2A��H��fD98t
H��H��u�H��H�����%W�H��t
I��H+���W���IH���L�'mI��H���p��xpM��I��H���^��x^H��t2I��H��fD98t
H��H��u�H��H�����%W�H��t
I��H+���W���IH�x�f�<^\u	�|f�^H��H;�r�H�\$@H�t$HH�|$PH�� A_A^A\�����������H�\$WH��@H�@�H3�H��$0��lH���tlH�ىD$(H�L$.�ml3�A�f�D$,�D$ �y6H�T$ H���x����؅�x>E3�L�L$ 3�A�PH��ZDH��uH�0[D�؁����N��H���H��$0H3��(H��$PH��@_����������H�\$3�L��M��D��A�W�H��I�B�H=���EG�E��x6I��H��M��tf9t
H��H��u�H��H��E�A��E#�H��tM��L+��L��E��x\I��J�BI+�t2H��M�����I+�L�L+�M��tA�f��tf�I��H��H��u�H��H�B�HE�H��E�A��A��z�f�H�\$A������������@SH�� H�G<H��H�H���H��t
�xH���H����tH����hH����\H�Kp�SH�KX�JH�KH�AH�K8�8H�K(�/H�K�&H���b#H��H�� [����������������������H�\$H�t$WH�� ��H��H��_���c2H��H����H�c H�k;H�c0��H�c@H�cPH�c`H�cxH���H���H���H���H�H��:H�CH�z:H�Ch�K�K�K(�K8�KH�KX�Kp����������3�H��u���1��H��������xH�NH��t�m���H�^3�H��tH���Z���H�\$0��H�t$8H�� _���������������������H�I�7�������H�I�w�������@SH�� H�IH��H���D$0H�T$0�EE3���x�L$0�Ƀ�A��D�H�� [�����������������@SH�� H�IH��H���D$0H�T$0�3Ʌ�x
�|$0���H�� [��������H��H�XH�pL�@WH�� H�qH��H�PH�NH�D�������|$@t��q�NH��t ��t��tA�@��X��������E3�H�NHL�Nj��D����x-���=�v"��E3�H�@H��?�ȃ��uA�����H�\$0A��H�t$8H�� _�����������H�IH��h��������������������@SH�� H�ك���]�QH��\�(�/H��tH�`H�
�8H�`H��@�@ H���H��u
���'3�H���V����KH���������KH�C �@�KH���������K(H�C0�@�KH���������K8H�C@�@�KH���������KHH�CP�@�KH������tv�KXH�C`�@�KH������t\�KpH�Cx�@�KH������tB���H����@�KH������t"���H����@�S3�H������u�W�����H����AH�� [��������������������@SH�� H���D$0H�T$0H����E3���x�L$0�Ƀ�A��D�H�� [���������������������@SH�� H���D$0H�T$0H���3Ʌ�x
�|$0���H�� [������������H��h�G�������@SH�� H��H�IH��t
��H�cH�� [�����������H��H�XH�hH�pH�x ATAVAWH�� H�IM��Hc�M��Ӿ���=���H�[3�L�5�;M�4�M��u
����A����I��A��f9t	H��H+�u�H��H����ׁ�W�H��tL+��L��H��H��H�I#�H��t_H�����H�H��H��YH@�H���,H��H��u���CM��H��H��������x
I�4$H��I�/H��tH�����x�����xH�D$`H��t�0H�\$@��H�|$XH�l$HH�t$PH�� A_A^A\����������H�\$WH�� 3�H��H9yv'H�H��H��t
�H�H�$�H��H��H;{r��H�	H��t�W�H�\$0H�� _�����������H�\$H�l$H�t$WH�� H�II��Hc�I��տ�W
=�u)H�mH�H�;�ȃ��u�����3�3����xH��t�;H�\$0H�l$8H�t$@H�� _��������H��H�XH�pWH�� �`I��H�|$PIc��uLL��L�@���K��������D$8��t'��t��t
��u�������#3��XH�vH�V:�ȃ��u����>��t.��t!��t��t�W��$�������#3�H��t!H�\$0H�t$@H�� _����������H��H�XH�pWH�� �`I��H�|$PIc��u;L��L�@���k�����xt�D$8��t��t
��u�����#3��KH�vH��9�ȃ��u����1��t!��t��t�W�������#3�H��t!H�\$0H�t$@H�� _��������H��H�XH�pWH�� �`I��H�\$PIc��u)L��L�@�������xU�D$8��t��u
�3��3��>H�vH��8�ȃ��u����$��t��t�W����3��3�H��t!H�\$0H�t$@H�� _�����������������������H�\$WH�� H��3�H�T$H�\$H�C��x$D�D$HE��tA��t
A��t�@����H�\$0H�� _�����������������H��H�XH�hH�pWH�� �` I��H��E3�H�P H��3�����xCD�D$HE��t*A��tA��t�@��&�L��L�Ƌ�H������H��t�'H�\$0H�l$8H�t$@H�� _����������������������H��H�XH�hH�pWH�� �` I��H��E3�H�P H��3��1��x=D�D$HE��t*A��tA��t�@�� �L��L�Ƌ�H����	!>H��t!;H�\$0H�l$8H�t$@H�� _������������H�\$H�t$H�|$UAVAWH��H��@�e�M��H�e�L��H�e�H�U�e�M��I��H���+�����xt�}�uA�H��tb�#�]L�M�H��L�E�H�U��zH�}��x2�}�uH��t�#H��tH�U�H��tM��M��H���:���A�&H��tH���EH�\$`��H�t$hH�|$pH��@A_A^]�����������H�\$L�L$ UVWATAUAVAWH�� M��L��E3�H��E�A��E�xD�|$`H��u��E3�M��u�E3�M���(�I�ŋ�fD9t	H��I+�u�H��H���Ӂ�W�H��tH+��I��H��H��M�L#�H�����H��I��H����H�,0H;���J�vH;�t�3H;�v�)H;�v�E3�f�?;tfD9tH;�u^H;�wwL��A��L+�M��I��J�vH;�t��E3�M;�uM��I��H��H��KDI;�t+E3�f�?;H�wA��DD$`D���D$`H��A��E��t�i���H�D$x��
�����H�\$hH�� A_A^A]A\_^]�����������������������D�AE3�E��t$A��tA��tA�@����������A�������������������������D�AE3�E��t$A��tA��tA�@����������A�������������������������D�AE3�E��t$A��tA��tA�@����������A�������������������������D�AE3�E��t$A��tA��tA�@�������A�������������������������H�\$H�t$WH��0H��I��H�T$XH�������xD�D$XH�KL��H�|$ 3���H�\$@H�t$HH��0_�������������������H��H�XH�hH�pWH��@��I��H�P�I��H�������xD�D$0H�KL��H�|$ ���L���H�\$PH�l$XH�t$`H��@_��������H��H�XH�hH�pWH��@��I��H�P�I��H���x�����xD�D$0H�KL��H�|$ �����H�\$PH�l$XH�t$`H��@_��������H��H�XH�hH�pWH��@H��I��H�P�I��H���g�����x�T$0H�KL��H�|$ L����H�\$PH�l$XH�t$`H��@_�����������H�\$L�D$WH�� H�ڋ��t��t
��ub�zx��x��zE3�L�D$@��������xn�D$@��ta��tT��tG��H�@H�71�ȃ��u����@3���t!��t��t�@��)��!��!������#3�H�\$0H�� _��������������H��HHc�L�ғ��M��L�@Kc���H�…�xc��~��uYH�I�H�IO����H�T$XH�T$0I��¸�L�L$(A�H�d$ �D$XH�fAD�ȁ����N���W���H��H��������������H��H�XH�hVWATAVAWH��P�`H�-���Hc�M��M��L�@Jc���L��ո������~���H�q�H�qJ���țH��$��H�D$0D��H�d$(L��H�d$ I��H��H��@D�؁����N؅�����$���u
�@��H�ȉD$@H��H��H��H�����H��LH@�H���H��H��u���eH�D$@A�H�D$0L��H�|$(I��H�d$ H��H�@D�؁����N؅�x�D$@I�?3�H��I�H��tH������W�L�\$P��I�[0I�k@I��A_A^A\_^����������������H�\$H�t$H�|$ UATAUAVAWH��H��PE3�Hc�L�5����D�m8W�M��A��L�@Kc�ΰ�E�M��ָ����;��~���-H�y�H�yO��θ�H�E8A� H�D$0M��L�l$(I��H��L�l$ H�?D�؁����N؅����E8��u
�@���H�ȸH��H��H�����H�FKH@�H���H��H��u
���H�E8A� H�D$0M��H�t$(I��H��L�l$ H�w>D�؁����N؅��MfD9.I��M��HE�I��H��t9I��I��H��t&fD9(t I��H��fD9,Hu�H��H�H�f��H�H#�H��H��uǸL�u�I��H��JI@�H���1H�E�H��u
����fD9.I��M��HE�H����M;���H��H��H��fD9,_u�H�øH��H�JH@�H����H�M�J��H������L��H��H������؅�xWI��H��t(fD9/t"H��H��fD9,Gu�H�HH�O�f��H�H#�I��H��H���d���E�W��A$M���W�L9m�t	H�M��@�H��tH���L�\$P��I�[0I�s@I�{HI��A_A^A]A\]�����������̸2������������H��H�XH�pH�x UATAVH��h���H��H�O�H3�H��pH��H���H�L$PD��3��H�d$8H��`D��3��H�d$HI���H��H���kH!t$@H!t$0� H���dH�D$@A�E��H�D$ E3�H��fI��H�
<D�ؾ�ޅ�N؅�xVH�D$0E��E3�H�D$ H��fI��H��;D��ޅ�N؅�x"H�D$@3�H�G3�H�D$0H�GH�T$@H�L$0�
H�T$@H�L$0H��tH��H�~;DH�L$0H��tH�h;D��y,H��fI��H�~;DH�fI��H�h;DH�L$8H��tH�";DH�L$HH��tH�;D��H��pH3���L��$�I�[(I�s0I�{8I��A^A\]���H���A�H�L$PA��L���E���؅��L���L��dA��H�L$P����؅��.���H�L$PH�)@D���u
������L��H��`I�������؅���L��dI��H��`�w��؅�����H��`H��?D���t�L�D$PI��H�JeH�;:D�ؾ�ޅ�N؅������L��`I��H��dH�:D��ޅ�N؅��Y���H�D$8A�E��H�D$ E3�H��dI��H��9D��ޅ�N؅�����H�D$HE��E3�H�D$ H�#dI��H�a9D��ޅ�N؅����H�D$83�H�GH�D$HH!L$HH�GH�L$8�G ����������@SH�� H��H�IH��tH��8DH�KH��tH��8DH�cH�cH�� [����������@SH�� �y H��t4H��cH��H��8DH�XcH��H��8D�C H�� [�����������̸��A����������������������H�\$WH�� H�ك���y��u$H��tH�� H�����H���R���H���H�\$0��H�� _����������������������H�\$H�t$WH�� I��H��E3�H�T$HH���3҅�x�|$HL��L��H�����OH�\$0H�t$8H�� _��������H�\$H�t$WH��0I��H��E3�H�T$XH���c��xI�K3҃|$X�…�t!��t��t�@��'A�\�A�[�A�ZL��H�|$ H�K�F�H�\$@H�t$HH��0_�����������������������H��H�XH�hH�p WH��0H�iL�@�I��L�HH��H��3�A�������xC�T$@���u"L�L$@H�t$ A����H������x�T$@;�t��u3ۉ��@�H�\$HH�l$PH�t$XH��0_���������������D�AE3�E��t$A��tA��tA�@���Y��X��WA�������������������������H�\$H�t$WH��0H��I��H�T$XH�������xD�D$XH�KL��H�|$ 3����H�\$@H�t$HH��0_�������������������D�AE3�E��t$A��tA��tA�@���_��^��]A�������������������������H��H�XH�hH�pWH��@��I��H�P�I��H�������xD�D$0H�KL��H�|$ ���<�H�\$PH�l$XH�t$`H��@_��������@SH�� Hc/���L���I¹H��f9Ht�f9Hu�HP�P�3�3�H�D$PA�A�H�ӉI��H�g:D��t;�H��х�t�€<\t��u���ʸ;�t+��QD��H�H����H�� [����������H��H�XH�pH�xUATAUAVAWH������H��@H�߷H3�H��0H��E3�H�
�A��E��H��9DH�߽H��tH9;t	H�[H��u�H��uM� �J H��9DH��H���ZH�8H��8DH�
��-a��CL�cH�KH�z��C�CH��8D+C=`��
H��8D�CL�L$8H�D$0H�U H�D$ �K����D$4D��t!H�9���H;�r�T$0H�H;�v	H;�w+��A���{�H�
��6�������D9%�����U �p�D$X�'D���D$\Ȓ'NE���D$`�i��D$dE�T���tIM��L�e ��H� :DBD4XI��A�O��I�FA�$E�D#���M�L#�u�D�t$4E3�L�L$@E3�3�H�L$XH��2D��u-H�L$@E3�3�H�p2DH�L$@��AE�H��2DH�
E�L�%>�D�%�H�`2DH�
<��/������t�=(��FH�@H�!��/H��H#�H;���C�D$L�C�D$PA���D�l$4A�Ɖt$Hɉ|$T!L$0���D$@
H�D$4H�EH�E�!L$8H�D$HH�EH�M H�D$LH�EH�E�E��H�D$PH�E�H�E�H�A^HD�H�E�H��H��D8$u���H�MЉE�H��aH�D$0D�e�H�E�H�
4�H�D$8H�E�H�E�E3�H�D$TH�E�H�E�E3�H�D$@H�E�H�E�H�D$pH�D$(�D$ H�E�謒��H�
��L�%�D�%DzH��0DE��t��t��H��5DD�cH�
>�H�'6DH��0H3��#L��$@I�[0I�s8I�{@I��A_A^A]A\]�����������H��8H�L$8���H��8������������������H��(�MZf9��t3��SHc
���H�́��Hȁ9PEu�f9At�f9Au�3����v9���3��ytv	9������������6H�
�6H��H�M�H�N�����H�
�6����*�=�u
H�
�l63�H��(��������������H��8���L��D�
��H����H�
�H��H�D$ ��5�زH��8��������H��H�XH�pH�xL�p AWH��E3�D�t$ H�H��4�eH�%0H�XA��3��H�v�tH;�u	�������{3�ػ�V�;�u����!�l�>���uW�4�L�=�6H�=n6H�|$0A�ƉD$$I;�s$��u$L97tH�H�
*6�щD$$H��H�|$0�ׅ�t���a�ٱ��ҷ;�uH�6H�
�5�q�����u
I��H���L95��t*H�
������tE3�A�P3�H���L�
�5A��H��4H�H��u
����H�L$(�T$ �f�� wtf��t��ukf+�f;�wH��H�L$(���\$|��$�A�
DE�L��3�H�
�~���#�����D95
�u��4D95ݰu�4�˰�Of��"uA�ƅ����ЉD$ H��H�L$(�a�������=��u	���3̃=��u��3�z�L��$�I�[I�sI�{ M�s(I��A_�������������H��(�+H��(�~�����������������������ff�H;
ѯuH��f����u�H���B������@SH�� H��3�K1H��J1�41H�Ⱥ	�H�� [H�%1��������H�L$H��H�
}���3H�h�H�D$HE3�H�T$PH�L$H�x3H�D$@H�|$@tBH�D$8H�D$XH�D$0H�D$`H�D$(H�'�H�D$ L�L$@L�D$HH�T$P3�33�#H���H�H��H���H��H�~�H�װH�H�H��$�H�I���	����#��Hk�H�
�H��Hk�H�
�H�d�H��Hk�H�
�H�Q�H��Hk�H�
5�H�Lh�Hk�H�
(�H�LhH�
\�[���H�Ĉ�������%31�������������������H��(H��8csm�u#�xu�H ���l�v��@�u��1�3�H��(��������H��(H�
�����?/3�H��(�������%�0��������H��3�H�A�H���w<�MZf9u*9Q<|%�y<sHcA<H�H�$�8PEHE�H��H�$�3�H�$H��H�����������@SH�� ��3�P/H��t(H�����H��t�f9H\u���f�x\�t��H�� [�������%/0�������3���������������LcA<E3�L�L��A�@E�XH��I�E��t�PL;�r
�H�L;�rA��H��(E;�r�3��������������H�\$WH�� H��H�=�z��H���D��t"H+�H��H�����H��t�@$���Ѓ��3�H�\$0H�� _�������������������̸MZf9u HcA<H��8PEu�f9Hu��3���������H�\$ UH��H�� H�eH�2��-�+H���H;���H�M�-H�EH�E�-��H1E�-��H1E��,��H��H1E��,��H�MH3EH3�H�M H�E��,�E H�������H�� H3E H3EH#�H��H;�u
H�3��-�+H��H�
�H�\$HH��H��H�� ]�������%�.������%�.����������������������������������������������%j(����������%j(����������%z(����������%r(����������%)����������%)����������%
)����������%)����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%�(����������%z(����������%r(����������%j(����������%b(����������%Z(����������%R(����������%J(����������%B(����������%:(����������%2(����������%*(����������%"(����������%(����������%(����������%
(����������%(����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%�'����������%z'����������%r'����������%j'����������%b'����������%Z'����������%R'����������%J'����������%B'����������%:'����������%2'����������%*'����������%"'����������%'����������%'����������%
'����������%'����������%�&����������%�&����������%�&����������%:'����������%�&����������%�&����������%�&����������%�&����������%�&����������%�&����������%�&����������%�&����������%�&����������%�&����������%2&����������%2"����������%"����������%"����������%�!����������%�!����������%�!����������%�!����������%�!����������%�!����������%�!����������%�!��������������H��8H�D$ �����Z��H�D$PH��8����������H�\$WH�� ��H����'��tH���r�H�\$0H��H�� _�������%�'��������H�\$WH�� H���H���4��tH���H��H��t�H��H�\$0H�� _�������%�'������%�'�������H��(M�A8H��I����H��(��������@SE�H��A��L��A�L��tA�@McP��L�Hc�L#�Ic�J�H�C�HH�C�Dt�D���L�L3�I��[�U����������H��H�XH�hH�pH�x AVH�� M�Q8H��M��H��I��H��I��A�H��I�L�C�Z����E$f�ظ��ЅStL��M��H��H��Y&H�\$0H�l$8H�t$@H�|$HH�� A^�������%z&������%f&������%R&������%f&������������ff�����������������@UH��0H��H��0]��������@UH�� H��H�H�ы��H�� ]��������������@UH�� H��H�3Ɂ8�����H�� ]��������H�T$UH�� H��H�ePH�n���H�� ]��02@�2@p�@@D@p�@`�@P�@@�@0�@0@ �@�@�@�@�@Љ@��@��@��@��@��@p�@`�@P�@0�@@�@0�@ �@�@�@�@�@Ј@��@��@��@��@��@�D@p�@`�@P�@@�@0�@ �@�@�@�@�@�@Ї@��@��@��@��@��@p�@`�@P�@@�@P�@`�@PA@p�@��@��@��@0A@��@��@Ќ@�@@�@�@�@�@ �@0�@D@P�@`�@�@@p�@��@��@��@�@@��@��@Ќ@`@@�@�@�@�@ �@0�@D@�@p�@��@��@@�@0�@��@ �@��@)@�@�@��@�'@Њ@�@��@��@p�@`�@P�@�@@�@0�@�@�@�@�@�@�@�@ �@0�@@�@P�@`�@p�@`�@P�@@�@0�@ �@�@�@�@ �@��@��@��@��@��@Ћ@�@�@�@�@ �@0�@@�@`�@�R@ S@�7@b�@
n�@��@�Z@�[@�[@\@P\@`]@��@pd@�d@pe@f@�h@�h@0i@�i@�i@0j@�j@�j@x�@v@w@�w@Px@�w@�x@��@�]@ _@p_@�_@@�@ l@�l@Pn@0q@�u@�u@@q@ �@��@��@`�@P�@�@h�@�@h�@h�@h�@�@��@p�@!L�@ H�@@rP�@�@rL�@P�@��@�@0�@��@��@@(rL�@P�@�P�@�P�@� @
 (rP�@P�X�@�P�@�@ PrL�@X�@�P�@�@ HrP�@P�P�@P�P�@�`��U��d��� �f]������+H`�@]������+H`�@0�@b�@3qq��7I�����6�@@(rP�@�L�@P�@�P�@� @ rL�@P�@�P�@�@(rP�@P�P�@�@0rH�@Ȗ@Ȗ@P�@� P�@�(��@��@(�@`�@��@0�@ �@��@��@��@��@��@�@@�@x�@�@�����@������@����@�@����T�@������@������@������@����P�@������@�����@����|�@������@������@�����@������@�����@�����@�����@����P�@������@������@������@������@����x�@�@�����@������@����@�@����T�@������@������@������@����P�@������@�����@����|�@������@������@�����@������@�����@�����@�����@����P�@������@������@������@������@����x�@�@�����@������@����@�@����T�@������@������@������@����P�@������@�����@����|�@������@������@�����@������@�����@�����@�����@����P�@������@������@������@������@������@��@��@��@�@�@8�@P�@p�@��@��@��@��@��@�@(�@P�@p�@��@��@��@��@�@8�@p�@��@��@0�@p�@��@��@0�@X�@��@��@��@��@0�@P�@x�@��@��@��@�@8�@p�@X�@��@ �@��@X�@��@H�@��@��@��@��@��@��@�@�@(�@(�@@�@`�@��@��@��@X�@��@p�@8�@��@0�@�@��@`�@��@p�@�@��@��@X�@��@�@@�@x�@��@��@��@��@X�@�@��@p�@��@P�@�1@(�@0�@��@�uAp�@vhXB&����������X��\��rD$�T��V������J�T���� h��B~��,b���r��&:b��~��(`���$\��
>��	*	^	�	�	
V
�
�
D���(Z���0
�
�
@x��"n���>���J~��P��D`|��N���:t��P���B��Z���,\��*`�������~jV8
�
 " : R p � � � � � � � ����p�\�J�:�,��
�����!�!>",""�!`�P�^!���������"�0�!�v�j�^�P�~�����������������&!0!F!$��"|"r"f"�"\"<�p!�!�!����������@`�@�~@~@�@Q\RY�����]��0��')�3�5`@�@�@�@0APAD@D�D K0K@KpK�K�K�K�K�K�K�K�KL L@L`LpL�L�L�L�L�L�L�LM M0M@MpM�M�M�M�M�M�M�MN NPN�R S�Z�[�[\P\`]�] _p_�_pd�dpef�h�h0i�i�i0j�j�j l�lPn0q@q�u�uvw�w�wPx�x~�~��@�Ѓ����� �0�@�P�`�p�����������Ї���� �0�@�P�`�p�����������Ј���� �0�@�P�`�p�����������Љ���� �0�@�P�`�p�����������Њ���� �0�@�P�`�p�����������Ћ���� �0�@�P�`�p�����������Ќ���� �0�p�"����0� PassphraseEditCDUIHostmainerrortextpanelstatustextstatustexterroriconasciiwarningiconpinerrortextpanelpinstatustextpinstatustexterroriconpinwarningiconexistingpineditnewpineditnewpinconfirmeditexistingpassphraseeditnewpassphraseeditnewpassphraseconfirmeditconfirmationtextpanelchangepinbuttoncancelbuttonclosebuttonpassphraseconfirmationtextpanelchangepassphrasebuttonshowpassphraseboxpinchangepanelpassphrasechangepanelmanagebitlockerlinkmanagebitlockerpassphraselinkpassphrasehelplinkpinconstraintstextpassphraseconstraintstextchangepassphrasedialogtitlechangepassphrasenonosdialogtitle%s %copenelevationiconLocal\BitLockerChangePinTaskDialogMutex\\.\x:-pw627551BitLockerWizardElev.exeBitLockerWizard.exev�&n�]I��305.1i5��H�H�����+��*PI��6%X���ncalrpc0%\[L�[%\�%
%\�%
%\\�]������+H`dH 2LF
AApH 2F
AHpH(2F
AHHp H02G
A 2H p(H(2F
AHHp H2D
ApH 2@D
AP!P!pH2D
ApH2D
ApH	2D
ApH
2$D
AP!pH2F
ApH 2$E
AP! Hp0`��,\����dhttp://go.microsoft.com/fwlink/?LinkID=%s%s\\.\IdentificationFieldFVEWIZ_INIT|Local\EncryptionMethodEncryptionMethodNoDiffuserEnabledUseAdvancedStartupEnableBDEWithNoTPMUseTPMUseTPMPINUseTPMKeyUseTPMKeyPinMinimumPINUseEnhancedPinRDVDenyCrossOrgOSRecoveryFDVRecoveryRDVRecoveryOSRecoveryPasswordFDVRecoveryPasswordRDVRecoveryPasswordOSRecoveryKeyFDVRecoveryKeyRDVRecoveryKeyOSManageDRAFDVManageDRARDVManageDRAOSActiveDirectoryBackupFDVActiveDirectoryBackupRDVActiveDirectoryBackupOSRequireActiveDirectoryBackupFDVRequireActiveDirectoryBackupRDVRequireActiveDirectoryBackupOSActiveDirectoryInfoToStoreFDVActiveDirectoryInfoToStoreRDVActiveDirectoryInfoToStoreOSHideRecoveryPageFDVHideRecoveryPageRDVHideRecoveryPagePreferCspUsageSelfSignedCertificatesCertChainErrorStatusMaskOSAllowUserCertFDVAllowUserCertFDVEnforceUserCertOSEnforceUserCertRDVAllowUserCertRDVEnforceUserCertFDVPassphraseRDVPassphraseFDVEnforcePassphraseRDVEnforcePassphraseFDVDenyWriteAccessRDVDenyWriteAccessRDVConfigureBDERDVAllowBDERDVDisableBDEFDVNoBitLockerToGoReaderRDVNoBitLockerToGoReaderRecoveryKeyMessageSourceEncryptionMethodWithXtsOsEncryptionMethodWithXtsFdvEncryptionMethodWithXtsRdvIdentificationFieldStringSecondaryIdentificationFieldDefaultRecoveryFolderPathFDVDiscoveryVolumeTypeRDVDiscoveryVolumeTypeRecoveryKeyMessageRecoveryKeyURL18OSAllowSoftwareEncryptionFailoverOSPassphraseComplexityFDVHardwareEncryption62223FDVEncryptionTypeOSBcdAdditionalExcludedSettingsRDVHardwareEncryptionRDVAllowSoftwareEncryptionFailover20OSAllowSecureBootForIntegrityFDVAllowSoftwareEncryptionFailoverOSHardwareEncryptionFDVRestrictHardwareEncryptionAlgorithmsDisableExternalDMAUnderLockRDVRestrictHardwareEncryptionAlgorithms84OSUseEnhancedBcdProfile5921FDVPassphraseLengthRDVAllowedHardwareEncryptionAlgorithms14010OSAllowedHardwareEncryptionAlgorithms11RDVPassphraseComplexity12OSEncryptionType157OSPassphraseASCIIOnlyFDVAllowedHardwareEncryptionAlgorithmsOSPassphraseOSEnablePrebootInputProtectorsOnSlatesDisallowStandardUserPINResetFDVPassphraseComplexity19RDVEncryptionTypeOSEnablePreBootPinExceptionOnDECapableDevice213OSBcdAdditionalSecurityCriticalSettings3RDVPassphraseLengthTpmAutoResealOSPassphraseLengthOSRestrictHardwareEncryptionAlgorithms16117\Windows\System32\Config\SOFTWARE\Windows\System32\Config\SYSTEMBitLockerSystemRootSoftwareSystemPolicies\Microsoft\FVEBitLockerSoftwareRootPolicies\Microsoft\FVE\OSPlatformValidation_BIOSPolicies\Microsoft\FVE\OSPlatformValidation_UEFICurrentControlSet\Policies\Microsoft\FVEPolicies\Microsoft\FVE\PlatformValidation<unknown>A�Ù)����A�Ù
�����A�Ù$����p0����@��p0����������8������0����@(�X���0(���P���0����(1����@@����(1����@@��0�x��0����@���0����@������1����@h�X1��@��X1����@����ETW0��+��@uAssertassertVersionrvatimestampimageSizeimageNamecounttotalHitsModuleCollectionGlobalCollection8���A�
J;A��_KMicrosoft.Windows.Security.BitLocker.CSP.State.UpdatesPOω�G�����v���G��K�Y?*�-�JMicrosoft.Windows.Security.BitLocker.EncryptionDelaysPOω�G�����v�b�zI�o�F�r�h�q�5DMicrosoft.Windows.Security.BitLocker.BcdUpdatesPOω�G�����v��$m�F���
�Ur%TelemetryAssertsPOω�G�����v��|��v�N����[�z+TelemetryAssertDiagTrackRSDS�|L3���˂<�sӛbdechangepin.pdbGCTL�.text�p}.text$mnP� .text$mn$00p��.text$x��.rdata$brc��0.idata$5(�.00cfg8�.CRT$XCA@�.CRT$XCAAH�.CRT$XCZP�.CRT$XIAX�.CRT$XIAA`�.CRT$XIYh�.CRT$XIZp� .gehcont���.gfids��!.rdata��8.rdata$r��.rdata$zETW0���.rdata$zETW1Q�n.rdata$zETW2��.rdata$zETW9��.rdata$zzzdbg���.xdatap�T.edata���.idata$2��.idata$3��0.idata$4��'.idata$60p.data$brcp0@.data$r$brc�1P.data2�.bss@�.pdataP .rsrc$01 T��.rsrc$02 �|L3���˂<�sӛ�{`oշ�6ݓ�A�Ù

4

rpd
T	4Rp

4
2pT4
R�p`t4�P
4
�p�X
4M
Jp�@$dT4SPp�pt4
rPp`0P�p0P20

4

R	�p`d42pd42p

4
2`�p`0PRp0P2
 t� d� T� 4� �����pB42p`PdT42p7
&t�&d&4~&x����P��d	4Rp4Bp
`P0
td
T	4R�

4
2p$dZ4YVp��
)	td4P��*	td4����PQQ�*	t�d�4�����R\R\R�t	d42�	Z0��$U�Up��RP$d-4,*p�@
t
d	42���
4�
�p�0�r0d4rp�0d42ptd
T	42���d42p
td
4r��P
4
2����
p`PdT4
rp42p
T4����
p`td4�����P3"t�"d�"4�"���P�pdT
4	Rp7
&tP&dO&4N&H����P�0b	�td4�ʆoY���Y�2P	"ʆL�����	

4
2pʆ]�������

4	
2P
b�������������@֏8U�

2P����0
t	dT42�A�Ù(�((��8����M@KPN NN@M�M�M�M�K�K�K�K M�K�K�KpK@L�M�M�L�L�LpM�LpLML�K K`L L0M0K�L�M�L8��L9�U���������#�O�~������8�c������� �K�s������� �F�p��������1�W��������&�U�y���	

 !"#$%&'bdechangepin.exe??0VolumeFveStatus@@IEAA@XZ??0VolumeFveStatus@@QEAA@K_KJW4_FVE_WIPING_STATE@@@Z??4BuiVolume@@QEAAAEAV0@AEBV0@@Z??4VolumeFveStatus@@QEAAAEAV0@$$QEAV0@@Z??4VolumeFveStatus@@QEAAAEAV0@AEBV0@@Z?FailedDryRun@VolumeFveStatus@@QEBA_NXZ?GetExtendedFlags@VolumeFveStatus@@QEBA_KXZ?GetLastConvertStatus@VolumeFveStatus@@QEBAJXZ?GetStatusFlags@VolumeFveStatus@@QEBAKXZ?HasExternalKey@VolumeFveStatus@@QEBA_NXZ?HasPBKDF2RecoveryPassword@VolumeFveStatus@@QEBA_NXZ?HasPassphraseProtector@VolumeFveStatus@@QEBA_NXZ?HasPinProtector@VolumeFveStatus@@QEBA_NXZ?HasRecoveryData@VolumeFveStatus@@QEBA_NXZ?HasRecoveryPassword@VolumeFveStatus@@QEBA_NXZ?HasSmartCardProtector@VolumeFveStatus@@QEBA_NXZ?HasStartupKeyProtector@VolumeFveStatus@@QEBA_NXZ?HasTpmProtector@VolumeFveStatus@@QEBA_NXZ?IsConverting@VolumeFveStatus@@QEBA_NXZ?IsCsvMetadataVolume@VolumeFveStatus@@QEBA_NXZ?IsDEAutoProvisioned@VolumeFveStatus@@QEBA_NXZ?IsDecrypted@VolumeFveStatus@@QEBA_NXZ?IsDecrypting@VolumeFveStatus@@QEBA_NXZ?IsDisabled@VolumeFveStatus@@QEBA_NXZ?IsEDriveVolume@VolumeFveStatus@@QEBA_NXZ?IsEncrypted@VolumeFveStatus@@QEBA_NXZ?IsEncrypting@VolumeFveStatus@@QEBA_NXZ?IsLocked@VolumeFveStatus@@QEBA_NXZ?IsOn@VolumeFveStatus@@QEBA_NXZ?IsOsCriticalVolume@VolumeFveStatus@@QEBA_NXZ?IsOsVolume@VolumeFveStatus@@QEBA_NXZ?IsPartiallyConverted@VolumeFveStatus@@QEBA_NXZ?IsPaused@VolumeFveStatus@@QEBA_NXZ?IsPreProvisioned@VolumeFveStatus@@QEBA_NXZ?IsRoamingDevice@VolumeFveStatus@@QEBA_NXZ?IsSecure@VolumeFveStatus@@QEBA_NXZ?IsUnknownFveVersion@VolumeFveStatus@@QEBA_NXZ?IsWiping@VolumeFveStatus@@QEBA_NXZ?NO_DRIVE_LETTER@BuiVolume@@2IB?NeedsRestart@VolumeFveStatus@@QEBA_NXZ��� �X�D�����0��8�v�x��������еH����X���� �`�������P"@�vhXB&����������X��\��rD$�T��V������J�T���� h��B~��,b���r��&:b��~��(`���$\��
>��	*	^	�	�	
V
�
�
D���(Z���0
�
�
@x��"n���>���J~��P��D`|��N���:t��P���B��Z���,\��*`�������~jV8
�
 " : R p � � � � � � � ����p�\�J�:�,��
�����!�!>",""�!`�P�^!���������"�0�!�v�j�^�P�~�����������������&!0!F!$��"|"r"f"�"\"<�p!�!�!����������FormatMessageWjGetLastError�LocalFree�WaitForSingleObject�CloseHandle�CreateMutexW�GetCommandLineW�GetModuleHandleW�GetProcessHeapSHeapAllocWHeapFreeKERNEL32.dllGetActiveWindow�NotifyWinEvent�PostMessageWSendMessageW"InvalidateRectFindWindowW8SetForegroundWindow\LoadImageW�GetSystemMetricsUSER32.dlli_vsnwprintfoiswalpha�towupperLfreeU_XcptFilter�_amsg_exit�__wgetmainargs�__set_app_type2exit_exit�_cexit�__setusermatherr}_inittermW__C_specific_handler�_wcmdln'_fmode�_commodemsvcrt.dll/?terminate@@YAXXZ�ShellExecuteW	CommandLineToArgvWSHELL32.dll+CoCreateInstance`CoInitialize�CoUninitializeole32.dll�RtlCaptureContext�RtlLookupFunctionEntry+RtlVirtualUnwindntdll.dllCOMCTL32.dll1?ContentProp@Element@DirectUI@@SAPEBUPropertyInfo@2@XZ?OnPropertyChanged@Edit@DirectUI@@UEAAXPEBUPropertyInfo@2@HPEAVValue@2@1@Z�??0HWNDElement@DirectUI@@QEAA@XZ�??1HWNDElement@DirectUI@@UEAA@XZH?Destroy@DUIXmlParser@DirectUI@@QEAAXXZ�?FindDescendent@Element@DirectUI@@QEAAPEAV12@G@Z�StrToIDg	?Initialize@HWNDElement@DirectUI@@QEAAJPEAUHWND__@@_NIPEAVElement@2@PEAK@ZI?Destroy@Element@DirectUI@@QEAAJ_N@Zt?Create@DUIXmlParser@DirectUI@@SAJPEAPEAV12@P6APEAVValue@2@PEBGPEAX@Z2P6AX11H2@Z2@Zg?SetXMLFromResource@DUIXmlParser@DirectUI@@QEAAJIPEAUHINSTANCE__@@0@Z�?CreateElement@DUIXmlParser@DirectUI@@QEAAJPEBGPEAVElement@2@1PEAKPEAPEAV32@@Z�
?SetLayoutPos@Element@DirectUI@@QEAAJH@Z[?SetVisible@Element@DirectUI@@QEAAJ_N@ZS
?SetContentString@Element@DirectUI@@QEAAJPEBG@Z:?GetEncodedContentString@Element@DirectUI@@QEAAJPEAG_K@Z�
?SetKeyFocus@Element@DirectUI@@UEAAXXZn
?SetEnabled@Element@DirectUI@@QEAAJ_N@Zk?GetHWND@HWNDHost@DirectUI@@UEAAPEAUHWND__@@XZ?Click@Button@DirectUI@@SA?AVUID@@XZ�
?OnEvent@HWNDElement@DirectUI@@UEAAXPEAUEvent@2@@Z�
?OnInput@HWNDElement@DirectUI@@UEAAXPEAUInputEvent@2@@Zj?GetHWND@HWNDElement@DirectUI@@UEAAPEAUHWND__@@XZ�
?SetKeyFocus@HWNDHost@DirectUI@@UEAAXXZ�InitProcessPriv�InitThread�?Create@NativeHWNDHost@DirectUI@@SAJPEBGPEAUHWND__@@PEAUHICON__@@HHHHHHIPEAPEAV12@@Z�?EndDefer@Element@DirectUI@@QEAAXK@Z	?Host@NativeHWNDHost@DirectUI@@QEAAXPEAVElement@2@@Z�?ShowWindow@NativeHWNDHost@DirectUI@@QEAAXH@Z�StartMessagePump�UnInitThread�UnInitProcessPriv@?Register@HWNDElement@DirectUI@@SAJXZd??0CritSecLock@DirectUI@@QEAA@PEAU_RTL_CRITICAL_SECTION@@@ZF?GetFactoryLock@Element@DirectUI@@SAPEAU_RTL_CRITICAL_SECTION@@XZ�??1CritSecLock@DirectUI@@QEAA@XZ?ClassExist@ClassInfoBase@DirectUI@@SA_NPEAPEAUIClassInfo@2@PEBQEBUPropertyInfo@2@IPEAU32@PEAUHINSTANCE__@@PEBG_N@Z6?Register@ClassInfoBase@DirectUI@@QEAAJXZ:?Register@Edit@DirectUI@@SAJXZZ	?Initialize@ClassInfoBase@DirectUI@@QEAAJPEAUHINSTANCE__@@PEBG_NPEBQEBUPropertyInfo@2@I@Z`	?Initialize@Edit@DirectUI@@QEAAJIPEAVElement@2@PEAK@Z`?GetClassInfoPtr@HWNDElement@DirectUI@@SAPEAUIClassInfo@2@XZZ?GetClassInfoPtr@Edit@DirectUI@@SAPEAUIClassInfo@2@XZ^??0ClassInfoBase@DirectUI@@QEAA@XZ�??1ClassInfoBase@DirectUI@@UEAA@XZ?CreateHWND@Edit@DirectUI@@MEAAPEAUHWND__@@PEAU3@_N@Z�?EraseBkgnd@HWNDHost@DirectUI@@MEAA_NPEAUHDC__@@PEA_J@Z
?CreateHWND@Edit@DirectUI@@MEAAPEAUHWND__@@PEAU3@@Zb?SetWindowDirection@HWNDHost@DirectUI@@UEAAXPEAUHWND__@@@Zo
?OnAdjustWindowSize@HWNDHost@DirectUI@@UEAAHHHI@Zb?OnWindowStyleChanged@HWNDHost@DirectUI@@UEAAX_KPEBUtagSTYLESTRUCT@@@Zw
?OnCtrlThemeChanged@HWNDHost@DirectUI@@UEAA_NI_K_JPEA_J@ZS?OnSinkThemeChanged@HWNDHost@DirectUI@@UEAA_NI_K_JPEA_J@ZU?OnSysChar@HWNDHost@DirectUI@@UEAA_NG@Z�
?OnMessage@HWNDHost@DirectUI@@UEAA_NI_K_JPEA_J@Z?OnNotify@Edit@DirectUI@@UEAA_NI_K_JPEA_J@Z�?GetUiaFocusDelegate@Element@DirectUI@@UEAAPEAV12@XZ�?HandleUiaEventListener@Element@DirectUI@@UEAAXPEAUEvent@2@@Z�?HandleUiaPropertyChangingListener@Element@DirectUI@@UEAAXPEBUPropertyInfo@2@@Z�?HandleUiaPropertyListener@Element@DirectUI@@UEAAXPEBUPropertyInfo@2@HPEAVValue@2@1@Z�?HandleUiaDestroyListener@Element@DirectUI@@UEAAXXZ/?GetElementProviderImpl@Element@DirectUI@@UEAAJPEAVInvokeHelper@2@PEAPEAVElementProvider@2@@Z�?GetUIAElementProvider@Element@DirectUI@@UEAAJAEBU_GUID@@PEAPEAX@Z??DefaultAction@Element@DirectUI@@UEAAJXZ?GetAccessibleImpl@HWNDHost@DirectUI@@UEAAJPEAPEAUIAccessible@@@Z�?GetKeyFocused@HWNDHost@DirectUI@@UEAA_NXZ�?RemoveTooltip@Element@DirectUI@@MEAAXPEAV12@@Z�?ActivateTooltip@Element@DirectUI@@MEAAXPEAV12@K@Z$?UpdateTooltip@Element@DirectUI@@MEAAXPEAV12@@Z\?OnUnHosted@HWNDHost@DirectUI@@MEAAXPEAVElement@2@@Z�
?OnHosted@HWNDHost@DirectUI@@MEAAXPEAVElement@2@@Z�?_SelfLayoutUpdateDesiredSize@Element@DirectUI@@MEAA?AUtagSIZE@@HHPEAVSurface@2@@Z�?_SelfLayoutDoLayout@Element@DirectUI@@MEAAXHH@Z�?GetImmersiveFocusRectOffsets@Element@DirectUI@@UEAAXPEAUtagRECT@@@Z�?QueryInterface@Element@DirectUI@@UEAAJAEBU_GUID@@PEAPEAX@ZE
?MessageCallback@Edit@DirectUI@@UEAAIPEAUtagGMSG@@@Z�?RemoveBehavior@Element@DirectUI@@UEAAJPEAUIDuiBehavior@@@Z�?AddBehavior@Element@DirectUI@@UEAAJPEAUIDuiBehavior@@@Z�?EnsureVisible@Element@DirectUI@@UEAA_NHHHH@Z?GetAdjacent@Element@DirectUI@@UEAAPEAV12@PEAV12@HPEBUNavReference@2@K@Z�?Remove@Element@DirectUI@@UEAAJPEAPEAV12@I@Z�	?Insert@Element@DirectUI@@UEAAJPEAPEAV12@II@Z�?Add@Element@DirectUI@@UEAAJPEAPEAV12@I@Z�?GetContentSize@Edit@DirectUI@@UEAA?AUtagSIZE@@HHPEAVSurface@2@@Z|?Paint@HWNDHost@DirectUI@@UEAAXPEAUHDC__@@PEBUtagRECT@@1PEAU4@2@Z�
?OnEvent@HWNDHost@DirectUI@@UEAAXPEAUEvent@2@@Z
?OnDestroy@HWNDHost@DirectUI@@UEAAXXZ�
?OnMouseFocusMoved@Element@DirectUI@@UEAAXPEAV12@0@Z�
?OnKeyFocusMoved@Element@DirectUI@@UEAAXPEAV12@0@Z�
?OnInput@Edit@DirectUI@@UEAAXPEAUInputEvent@2@@Z�
?OnGroupChanged@Element@DirectUI@@UEAAXH_N@Z?OnPropertyChanged@Element@DirectUI@@UEAAXPEAUPropertyInfo@2@HPEAVValue@2@1@Z4?OnPropertyChanging@Element@DirectUI@@UEAA_NPEAUPropertyInfo@2@HPEAVValue@2@1@Z5?OnPropertyChanging@Element@DirectUI@@UEAA_NPEBUPropertyInfo@2@HPEAVValue@2@1@Z�?GetContentStringAsDisplayed@Edit@DirectUI@@UEAAPEBGPEAPEAVValue@2@@Z�	?IsContentProtected@Edit@DirectUI@@UEAA_NXZ�	?IsRTLReading@Element@DirectUI@@UEAA_NXZ�??1Edit@DirectUI@@UEAA@XZo??0Edit@DirectUI@@QEAA@XZ�	?IsContentProtected@Element@DirectUI@@UEAA_NXZ?GetContentStringAsDisplayed@Element@DirectUI@@UEAAPEBGPEAPEAVValue@2@@Z?OnPropertyChanged@HWNDElement@DirectUI@@UEAAXPEBUPropertyInfo@2@HPEAVValue@2@1@Z�
?OnGroupChanged@HWNDElement@DirectUI@@UEAAXH_N@Z~
?OnDestroy@HWNDElement@DirectUI@@UEAAXXZ{?Paint@Element@DirectUI@@UEAAXPEAUHDC__@@PEBUtagRECT@@1PEAU4@2@Z�?GetContentSize@Element@DirectUI@@UEAA?AUtagSIZE@@HHPEAVSurface@2@@ZF
?MessageCallback@Element@DirectUI@@UEAAIPEAUtagGMSG@@@Z�
?OnHosted@Element@DirectUI@@MEAAXPEAV12@@Z[?OnUnHosted@Element@DirectUI@@MEAAXPEAV12@@Z%?UpdateTooltip@HWNDElement@DirectUI@@UEAAXPEAVElement@2@@Z�?ActivateTooltip@HWNDElement@DirectUI@@UEAAXPEAVElement@2@K@Z�?RemoveTooltip@HWNDElement@DirectUI@@UEAAXPEAVElement@2@@Z�?GetKeyFocused@Element@DirectUI@@UEAA_NXZ�?GetClassInfoW@HWNDElement@DirectUI@@UEAAPEAUIClassInfo@2@XZ?GetAccessibleImpl@HWNDElement@DirectUI@@UEAAJPEAPEAUIAccessible@@@ZX?OnThemeChanged@HWNDElement@DirectUI@@UEAAXPEAUThemeChangedEvent@2@@Z�
?OnImmersiveColorSchemeChanged@HWNDElement@DirectUI@@UEAAXXZ�
?OnNoChildWithShortcutFound@HWNDElement@DirectUI@@UEAAXPEAUKeyboardEvent@2@@Z�
?OnGetDlgCode@HWNDElement@DirectUI@@UEAAXPEAUtagMSG@@PEA_J@Zg?OnWmThemeChanged@HWNDElement@DirectUI@@UEAAX_K_J@Zf?OnWmSettingChanged@HWNDElement@DirectUI@@UEAAX_K_J@Zv
?OnCompositionChanged@HWNDElement@DirectUI@@UEAAXXZ?CanSetFocus@HWNDElement@DirectUI@@UEAA_NXZ�	?IsMSAAEnabled@HWNDElement@DirectUI@@UEAA_NXZ$?CreateStyleParser@HWNDElement@DirectUI@@UEAAJPEAPEAVDUIXmlParser@2@@ZD?WndProc@HWNDElement@DirectUI@@UEAA_JPEAUHWND__@@I_K_J@Z�?GetWindowClassNameAndStyle@HWNDElement@DirectUI@@UEAAXPEAPEBGPEAI@Z�?_OnUIStateChanged@HWNDElement@DirectUI@@MEAAXGG@Z�?AddRef@ClassInfoBase@DirectUI@@UEAAXXZp?Release@ClassInfoBase@DirectUI@@UEAAHXZ�?EnumPropertyInfo@ClassInfoBase@DirectUI@@UEAAPEBUPropertyInfo@2@I@Z6?GetByClassIndex@ClassInfoBase@DirectUI@@UEAAPEBUPropertyInfo@2@I@Z�?GetPICount@ClassInfoBase@DirectUI@@UEBAIXZc?GetGlobalIndex@ClassInfoBase@DirectUI@@UEBAIXZ�?GetName@ClassInfoBase@DirectUI@@UEBAPEBGXZ�	?IsValidProperty@ClassInfoBase@DirectUI@@UEBA_NPEBUPropertyInfo@2@@Z�	?IsSubclassOf@ClassInfoBase@DirectUI@@UEBA_NPEAUIClassInfo@2@@Z�?GetModule@ClassInfoBase@DirectUI@@UEBAPEAUHINSTANCE__@@XZ�	?IsGlobal@ClassInfoBase@DirectUI@@UEBA_NXZ�?AddChild@ClassInfoBase@DirectUI@@UEAAXXZ�?RemoveChild@ClassInfoBase@DirectUI@@UEAAXXZ<?GetChildren@ClassInfoBase@DirectUI@@UEBAHXZ�?AssertPIZeroRef@ClassInfoBase@DirectUI@@UEBAXXZDUI70.dll??0BuiVolume@@QEAA@XZ??1BuiVolume@@QEAA@XZ6?Init@BuiVolume@@QEAAJPEAG@Z;?IsCurrentPINEnhanced@BuiVolume@@QEAAJPEAH@ZBDEUI.dll4FreeSid AllocateAndInitializeSid)EventWriteTransfer�RegOpenKeyExW^RegCloseKey�RegGetValueW"EventSetInformation!EventRegister#EventUnregister�RegLoadKeyW�RegUnLoadKeyW EventProviderEnabledADVAPI32.dll�Sleep�GetStartupInfoW�UnhandledExceptionFilter�SetUnhandledExceptionFilter GetCurrentProcess�TerminateProcessTQueryPerformanceCounter!GetCurrentProcessId%GetCurrentThreadId�GetSystemTimeAsFileTimeGetTickCountlInitializeCriticalSectionDeleteCriticalSection8EnterCriticalSection�LeaveCriticalSection�GetSystemWindowsDirectoryW�VerSetConditionMaskOGetFileAttributesW�CreateEventW�RtlCompareMemory|GetModuleFileNameA�LocalAlloc�ReleaseSRWLockExclusiveAcquireSRWLockExclusivegLoadStringW�toupper[__CxxFrameHandler3??1type_info@@UEAA@XZ�ShellExecuteExW�RtlCheckPortableOperatingSystemRtlNtStatusToDosError*RtlVerifyVersionInfo�NdrClientCall3vRpcBindingFromStringBindingWRpcStringBindingComposeW�RpcBindingSetAuthInfoExWRpcStringFreeWtRpcBindingFreeRPCRT4.dll�malloc�_callnewh�memcpy�memmove�memsetwcscmp��@n�@�@.?AVCFvePolicy@@�@.?AVCFveRecoverySettings@@�@.?AVCFvePolicyImpl@@�@.?AVCFveHardwareEncryptionSettings@@�@.?AVCFvePolicySettings@@�@.?AVCFvePolicyReader@@�@.?AVIFvePolicyReader@@2��-�+�] �f������)��0�����0����
��`��h�������7�@� ��` �h4��4���L���h��R"x�X"�$���$2%��8%�'���'�(��)�+���+�,���,0���0�0���0�3���3�5���56�$6h8$�p8%94�,9Z@H�`@�@���@*A��PAB4�BCp�C�Cp�D7D��@DwD���DE��E�E���ESG��\G�H���H%J��,JK��PNnN��tN9P��@P�Q���Q�R,��RS�� SNS��TSZT`�`T�T���T�Ut��U+V��4V�V��DW[X��dX4Y��<YZ��Z�Z���Z�[��\A\��P\�\���\W]��]_�� _]_��p_�_���_�_���_0a(�8a�a���ab4� b�bD�c�cD��c[dD�pd�d���d\e4�pe�e4�f�fT��f{hl��ijp�0j�j���j�j���jKk��Tkl�� l�l���lBn��Pn&q��@q�t���t0u��8u�u���u�u��vbv��hv�vp�w�w���w?xp��x�x��y�y���y�}��}�}8�~�~��~98�@��@����������8���@�����Ѓ	���(��<�������݄��P����������H�g���p�����������)��0���H����P�`�b���p���������t���Џt�֏��8��@��X�p�����0��H�
`�x������������	 �
8�P�h�
��������	�	�			 	0	@	P	`	p	�	�	�	�	�	�	�	���YV0�h������h�(���8�������h�����%���8��	��h(��� T�UIFILEMUI<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly
    xmlns="urn:schemas-microsoft-com:asm.v1"
    manifestVersion="1.0"
    >
  <assemblyIdentity
      name="Microsoft.BitLocker.BitLockerChangePin"
      processorArchitecture="*"
      type="win32"
      version="1.0.0.0"
      />
  <description>BitLocker Drive Encryption PIN Change Tool</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          language="*"
          name="Microsoft.Windows.Common-Controls"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          type="win32"
          version="6.0.0.0"
          />
    </dependentAssembly>
  </dependency>
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
            level="asInvoker"
            uiAccess="false"
            />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
<duixml>

<stylesheets>

#pragma once

#pragma warning(push)

#pragma warning(disable:4668) 

#pragma once

#pragma region Input Buffer SAL 1 compatibility macros

#pragma endregion Input Buffer SAL 1 compatibility macros

#pragma once

#pragma once

#pragma once

#pragma warning(pop)

#pragma warning(push)

#pragma warning(disable:4668)    

#pragma warning(disable:4820)    

#pragma warning(disable:4201)    

#pragma once

#pragma warning(push)

#pragma warning(disable:4001) 

#pragma once

#pragma warning(push)

#pragma warning(disable:4001) 

#pragma once

#pragma warning(pop)

#pragma warning(pop)

#pragma region Application Family or OneCore or Games Family

typedef   long HRESULT;

typedef unsigned int ALG_ID;

typedef ULONG_PTR HCRYPTPROV;

typedef ULONG_PTR HCRYPTKEY;

typedef ULONG_PTR HCRYPTHASH;

typedef struct _CMS_KEY_INFO {

DWORD       dwVersion;                      

ALG_ID  Algid;                              

BYTE    *pbOID;                             

DWORD   cbOID;                              

} CMS_KEY_INFO, *PCMS_KEY_INFO;

typedef struct _HMAC_Info {

ALG_ID  HashAlgid;

BYTE    *pbInnerString;

DWORD   cbInnerString;

BYTE    *pbOuterString;

DWORD   cbOuterString;

} HMAC_INFO, *PHMAC_INFO;

typedef struct _SCHANNEL_ALG {

DWORD   dwUse;

ALG_ID  Algid;

DWORD   cBits;

DWORD   dwFlags;

DWORD   dwReserved;

} SCHANNEL_ALG, *PSCHANNEL_ALG;

typedef struct _PROV_ENUMALGS {

ALG_ID    aiAlgid;

DWORD     dwBitLen;

DWORD     dwNameLen;

CHAR      szName[20];

} PROV_ENUMALGS;

typedef struct _PROV_ENUMALGS_EX {

ALG_ID    aiAlgid;

DWORD     dwDefaultLen;

DWORD     dwMinLen;

DWORD     dwMaxLen;

DWORD     dwProtocols;

DWORD     dwNameLen;

CHAR      szName[20];

DWORD     dwLongNameLen;

CHAR      szLongName[40];

} PROV_ENUMALGS_EX;

typedef struct _PUBLICKEYSTRUC {

BYTE    bType;

BYTE    bVersion;

WORD    reserved;

ALG_ID  aiKeyAlg;

} BLOBHEADER, PUBLICKEYSTRUC;

typedef struct _RSAPUBKEY {

DWORD   magic;                  

DWORD   bitlen;                 

DWORD   pubexp;                 

} RSAPUBKEY;

typedef struct _PUBKEY {

DWORD   magic;

DWORD   bitlen;                 

} DHPUBKEY, DSSPUBKEY, KEAPUBKEY, TEKPUBKEY;

typedef struct _DSSSEED {

DWORD   counter;

BYTE    seed[20];

} DSSSEED;

typedef struct _PUBKEYVER3 {

DWORD   magic;

DWORD   bitlenP;                

DWORD   bitlenQ;                

DWORD   bitlenJ;                

DSSSEED DSSSeed;

} DHPUBKEY_VER3, DSSPUBKEY_VER3;

typedef struct _PRIVKEYVER3 {

DWORD   magic;

DWORD   bitlenP;                

DWORD   bitlenQ;                

DWORD   bitlenJ;                

DWORD   bitlenX;                

DSSSEED DSSSeed;

} DHPRIVKEY_VER3, DSSPRIVKEY_VER3;

typedef struct _KEY_TYPE_SUBTYPE {

DWORD   dwKeySpec;

GUID    Type;

GUID    Subtype;

} KEY_TYPE_SUBTYPE, *PKEY_TYPE_SUBTYPE;

typedef struct _CERT_FORTEZZA_DATA_PROP {

unsigned char   SerialNumber[8];

int             CertIndex;

unsigned char   CertLabel[36];

} CERT_FORTEZZA_DATA_PROP;

typedef struct _CRYPT_RC4_KEY_STATE {

unsigned char Key[16];

unsigned char SBox[256];

unsigned char i;

unsigned char j;

} CRYPT_RC4_KEY_STATE, *PCRYPT_RC4_KEY_STATE;

typedef struct _CRYPT_DES_KEY_STATE {

unsigned char Key[8];

unsigned char IV[8];

unsigned char Feedback[8];

} CRYPT_DES_KEY_STATE, *PCRYPT_DES_KEY_STATE;

typedef struct _CRYPT_3DES_KEY_STATE {

unsigned char Key[24];

unsigned char IV[8];

unsigned char Feedback[8];

} CRYPT_3DES_KEY_STATE, *PCRYPT_3DES_KEY_STATE;

typedef struct _CRYPT_AES_128_KEY_STATE {

unsigned char Key[16];

unsigned char IV[16];

unsigned char EncryptionState[11][16];      

unsigned char DecryptionState[11][16];

unsigned char Feedback[16];

} CRYPT_AES_128_KEY_STATE, *PCRYPT_AES_128_KEY_STATE;

typedef struct _CRYPT_AES_256_KEY_STATE {

unsigned char Key[32];

unsigned char IV[16];

unsigned char EncryptionState[15][16];      

unsigned char DecryptionState[15][16];

unsigned char Feedback[16];

} CRYPT_AES_256_KEY_STATE, *PCRYPT_AES_256_KEY_STATE;

typedef struct _CRYPTOAPI_BLOB {

DWORD   cbData;

BYTE    *pbData;

} CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,

CRYPT_UINT_BLOB, *PCRYPT_UINT_BLOB,

CRYPT_OBJID_BLOB, *PCRYPT_OBJID_BLOB,

CERT_NAME_BLOB, *PCERT_NAME_BLOB,

CERT_RDN_VALUE_BLOB, *PCERT_RDN_VALUE_BLOB,

CERT_BLOB, *PCERT_BLOB,

CRL_BLOB, *PCRL_BLOB,

DATA_BLOB, *PDATA_BLOB,

CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB,

CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB,

CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB,

CRYPT_DER_BLOB, *PCRYPT_DER_BLOB,

CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB;

typedef struct _CMS_DH_KEY_INFO {

DWORD               dwVersion;                      

ALG_ID          Algid;                              

LPSTR           pszContentEncObjId; 

CRYPT_DATA_BLOB PubInfo;            

void            *pReserved;         

} CMS_DH_KEY_INFO, *PCMS_DH_KEY_INFO;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptAcquireContextA(

HCRYPTPROV  *phProv,

LPCSTR    szContainer,

LPCSTR    szProvider,

DWORD       dwProvType,

DWORD       dwFlags

);

BOOL

__stdcall

CryptAcquireContextW(

HCRYPTPROV  *phProv,

LPCWSTR    szContainer,

LPCWSTR    szProvider,

DWORD       dwProvType,

DWORD       dwFlags

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptReleaseContext(

HCRYPTPROV  hProv,

DWORD       dwFlags

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptGenKey(

HCRYPTPROV  hProv,

ALG_ID      Algid,

DWORD       dwFlags,

HCRYPTKEY   *phKey

);

BOOL

__stdcall

CryptDeriveKey(

HCRYPTPROV  hProv,

ALG_ID      Algid,

HCRYPTHASH  hBaseData,

DWORD       dwFlags,

HCRYPTKEY   *phKey

);

BOOL

__stdcall

CryptDestroyKey(

HCRYPTKEY   hKey

);

BOOL

__stdcall

CryptSetKeyParam(

HCRYPTKEY   hKey,

DWORD       dwParam,

const BYTE  *pbData,

DWORD       dwFlags

);

BOOL

__stdcall

CryptGetKeyParam(

HCRYPTKEY   hKey,

DWORD   dwParam,

BYTE    *pbData,

DWORD   *pdwDataLen,

DWORD   dwFlags

);

BOOL

__stdcall

CryptSetHashParam(

HCRYPTHASH  hHash,

DWORD       dwParam,

const BYTE  *pbData,

DWORD       dwFlags

);

BOOL

__stdcall

CryptGetHashParam(

HCRYPTHASH  hHash,

DWORD   dwParam,

BYTE    *pbData,

DWORD   *pdwDataLen,

DWORD   dwFlags

);

BOOL

__stdcall

CryptSetProvParam(

HCRYPTPROV  hProv,

DWORD       dwParam,

const BYTE  *pbData,

DWORD       dwFlags

);

BOOL

__stdcall

CryptGetProvParam(

HCRYPTPROV  hProv,

DWORD   dwParam,

BYTE    *pbData,

DWORD   *pdwDataLen,

DWORD   dwFlags

);

BOOL

__stdcall

CryptGenRandom(

HCRYPTPROV  hProv,

DWORD   dwLen,

BYTE    *pbBuffer

);

BOOL

__stdcall

CryptGetUserKey(

HCRYPTPROV  hProv,

DWORD       dwKeySpec,

HCRYPTKEY   *phUserKey

);

BOOL

__stdcall

CryptExportKey(

HCRYPTKEY   hKey,

HCRYPTKEY   hExpKey,

DWORD   dwBlobType,

DWORD   dwFlags,

BYTE    *pbData,

DWORD   *pdwDataLen

);

BOOL

__stdcall

CryptImportKey(

HCRYPTPROV  hProv,

const BYTE  *pbData,

DWORD       dwDataLen,

HCRYPTKEY   hPubKey,

DWORD       dwFlags,

HCRYPTKEY   *phKey

);

BOOL

__stdcall

CryptEncrypt(

HCRYPTKEY   hKey,

HCRYPTHASH  hHash,

BOOL    Final,

DWORD   dwFlags,

BYTE    *pbData,

DWORD   *pdwDataLen,

DWORD   dwBufLen

);

BOOL

__stdcall

CryptDecrypt(

HCRYPTKEY   hKey,

HCRYPTHASH  hHash,

BOOL        Final,

DWORD       dwFlags,

BYTE        *pbData,

DWORD       *pdwDataLen

);

BOOL

__stdcall

CryptCreateHash(

HCRYPTPROV  hProv,

ALG_ID      Algid,

HCRYPTKEY   hKey,

DWORD       dwFlags,

HCRYPTHASH  *phHash

);

BOOL

__stdcall

CryptHashData(

HCRYPTHASH  hHash,

const BYTE  *pbData,

DWORD   dwDataLen,

DWORD   dwFlags

);

BOOL

__stdcall

CryptHashSessionKey(

HCRYPTHASH  hHash,

HCRYPTKEY   hKey,

DWORD   dwFlags

);

BOOL

__stdcall

CryptDestroyHash(

HCRYPTHASH  hHash

);

BOOL

__stdcall

CryptSignHashA(

HCRYPTHASH  hHash,

DWORD       dwKeySpec,

LPCSTR    szDescription,

DWORD       dwFlags,

BYTE        *pbSignature,

DWORD       *pdwSigLen

);

BOOL

__stdcall

CryptSignHashW(

HCRYPTHASH  hHash,

DWORD       dwKeySpec,

LPCWSTR    szDescription,

DWORD       dwFlags,

BYTE        *pbSignature,

DWORD       *pdwSigLen

);

BOOL

__stdcall

CryptVerifySignatureA(

HCRYPTHASH  hHash,

const BYTE  *pbSignature,

DWORD       dwSigLen,

HCRYPTKEY   hPubKey,

LPCSTR    szDescription,

DWORD       dwFlags

);

BOOL

__stdcall

CryptVerifySignatureW(

HCRYPTHASH  hHash,

const BYTE  *pbSignature,

DWORD       dwSigLen,

HCRYPTKEY   hPubKey,

LPCWSTR    szDescription,

DWORD       dwFlags

);

BOOL

__stdcall

CryptSetProviderA(

LPCSTR    pszProvName,

DWORD       dwProvType

);

BOOL

__stdcall

CryptSetProviderW(

LPCWSTR    pszProvName,

DWORD       dwProvType

);

BOOL

__stdcall

CryptSetProviderExA(

LPCSTR pszProvName,

DWORD dwProvType,

DWORD *pdwReserved,

DWORD dwFlags

);

BOOL

__stdcall

CryptSetProviderExW(

LPCWSTR pszProvName,

DWORD dwProvType,

DWORD *pdwReserved,

DWORD dwFlags

);

BOOL

__stdcall

CryptGetDefaultProviderA(

DWORD   dwProvType,

DWORD   *pdwReserved,

DWORD   dwFlags,

LPSTR pszProvName,

DWORD   *pcbProvName

);

BOOL

__stdcall

CryptGetDefaultProviderW(

DWORD   dwProvType,

DWORD   *pdwReserved,

DWORD   dwFlags,

LPWSTR pszProvName,

DWORD   *pcbProvName

);

BOOL

__stdcall

CryptEnumProviderTypesA(

DWORD   dwIndex,

DWORD   *pdwReserved,

DWORD   dwFlags,

DWORD   *pdwProvType,

LPSTR szTypeName,

DWORD   *pcbTypeName

);

BOOL

__stdcall

CryptEnumProviderTypesW(

DWORD   dwIndex,

DWORD   *pdwReserved,

DWORD   dwFlags,

DWORD   *pdwProvType,

LPWSTR szTypeName,

DWORD   *pcbTypeName

);

BOOL

__stdcall

CryptEnumProvidersA(

DWORD   dwIndex,

DWORD   *pdwReserved,

DWORD   dwFlags,

DWORD   *pdwProvType,

LPSTR szProvName,

DWORD   *pcbProvName

);

BOOL

__stdcall

CryptEnumProvidersW(

DWORD   dwIndex,

DWORD   *pdwReserved,

DWORD   dwFlags,

DWORD   *pdwProvType,

LPWSTR szProvName,

DWORD   *pcbProvName

);

BOOL

__stdcall

CryptContextAddRef(

HCRYPTPROV  hProv,

DWORD       *pdwReserved,

DWORD       dwFlags

);

BOOL

__stdcall

CryptDuplicateKey(

HCRYPTKEY   hKey,

DWORD   *pdwReserved,

DWORD   dwFlags,

HCRYPTKEY   *phKey

);

BOOL

__stdcall

CryptDuplicateHash(

HCRYPTHASH  hHash,

DWORD       *pdwReserved,

DWORD       dwFlags,

HCRYPTHASH  *phHash

);

#pragma endregion

#pragma region Desktop Family or Games

BOOL

__cdecl

GetEncSChannel(

BYTE **pData,

DWORD *dwDecSize

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

#pragma once

#pragma warning(push)

#pragma warning(disable:4820) 

#pragma region Desktop Family or OneCore or Games Family

typedef   LONG NTSTATUS;

typedef NTSTATUS *PNTSTATUS;

typedef struct __BCRYPT_KEY_LENGTHS_STRUCT

{

ULONG   dwMinLength;

ULONG   dwMaxLength;

ULONG   dwIncrement;

} BCRYPT_KEY_LENGTHS_STRUCT;

typedef BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_AUTH_TAG_LENGTHS_STRUCT;

typedef struct _BCRYPT_OID

{

ULONG   cbOID;

PUCHAR  pbOID;

} BCRYPT_OID;

typedef struct _BCRYPT_OID_LIST

{

ULONG       dwOIDCount;

BCRYPT_OID  *pOIDs;

} BCRYPT_OID_LIST;

typedef struct _BCRYPT_PKCS1_PADDING_INFO

{

LPCWSTR pszAlgId;

} BCRYPT_PKCS1_PADDING_INFO;

typedef struct _BCRYPT_PSS_PADDING_INFO

{

LPCWSTR pszAlgId;

ULONG   cbSalt;

} BCRYPT_PSS_PADDING_INFO;

typedef struct _BCRYPT_OAEP_PADDING_INFO

{

LPCWSTR pszAlgId;

PUCHAR   pbLabel;

ULONG   cbLabel;

} BCRYPT_OAEP_PADDING_INFO;

typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO

{

ULONG       cbSize;

ULONG       dwInfoVersion;

PUCHAR      pbNonce;

ULONG       cbNonce;

PUCHAR      pbAuthData;

ULONG       cbAuthData;

PUCHAR      pbTag;

ULONG       cbTag;

PUCHAR      pbMacContext;

ULONG       cbMacContext;

ULONG       cbAAD;

ULONGLONG   cbData;

ULONG       dwFlags;

} BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO, *PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;

typedef struct _BCryptBuffer {

ULONG   cbBuffer;             

ULONG   BufferType;           

PVOID   pvBuffer;             

} BCryptBuffer, * PBCryptBuffer;

typedef struct _BCryptBufferDesc {

ULONG   ulVersion;            

ULONG   cBuffers;             

PBCryptBuffer pBuffers;       

} BCryptBufferDesc, * PBCryptBufferDesc;

typedef PVOID BCRYPT_HANDLE;

typedef PVOID BCRYPT_ALG_HANDLE;

typedef PVOID BCRYPT_KEY_HANDLE;

typedef PVOID BCRYPT_HASH_HANDLE;

typedef PVOID BCRYPT_SECRET_HANDLE;

typedef struct _BCRYPT_KEY_BLOB

{

ULONG   Magic;

} BCRYPT_KEY_BLOB;

typedef struct _BCRYPT_RSAKEY_BLOB

{

ULONG   Magic;

ULONG   BitLength;

ULONG   cbPublicExp;

ULONG   cbModulus;

ULONG   cbPrime1;

ULONG   cbPrime2;

} BCRYPT_RSAKEY_BLOB;

typedef struct _BCRYPT_ECCKEY_BLOB

{

ULONG   dwMagic;

ULONG   cbKey;

} BCRYPT_ECCKEY_BLOB, *PBCRYPT_ECCKEY_BLOB;

typedef struct _SSL_ECCKEY_BLOB

{

ULONG   dwCurveType;

ULONG   cbKey;

} SSL_ECCKEY_BLOB, *PSSL_ECCKEY_BLOB;

typedef enum

{

BCRYPT_ECC_PRIME_SHORT_WEIERSTRASS_CURVE    = 0x1,

BCRYPT_ECC_PRIME_TWISTED_EDWARDS_CURVE      = 0x2,

BCRYPT_ECC_PRIME_MONTGOMERY_CURVE           = 0x3

} ECC_CURVE_TYPE_ENUM;

typedef enum

{

BCRYPT_NO_CURVE_GENERATION_ALG_ID = 0x0

} ECC_CURVE_ALG_ID_ENUM;

typedef struct _BCRYPT_ECCFULLKEY_BLOB

{

ULONG                   dwMagic;

ULONG                   dwVersion;              

ECC_CURVE_TYPE_ENUM     dwCurveType;            

ECC_CURVE_ALG_ID_ENUM   dwCurveGenerationAlgId; 

ULONG                   cbFieldLength;          

ULONG                   cbSubgroupOrder;        

ULONG                   cbCofactor;             

ULONG                   cbSeed;                 

} BCRYPT_ECCFULLKEY_BLOB, *PBCRYPT_ECCFULLKEY_BLOB;

typedef struct _BCRYPT_DH_KEY_BLOB

{

ULONG   dwMagic;

ULONG   cbKey;

} BCRYPT_DH_KEY_BLOB, *PBCRYPT_DH_KEY_BLOB;

typedef   struct _BCRYPT_DH_PARAMETER_HEADER

{

ULONG           cbLength;

ULONG           dwMagic;

ULONG           cbKeyLength;

} BCRYPT_DH_PARAMETER_HEADER;

typedef struct _BCRYPT_DSA_KEY_BLOB

{

ULONG   dwMagic;

ULONG   cbKey;

UCHAR   Count[4];

UCHAR   Seed[20];

UCHAR   q[20];

} BCRYPT_DSA_KEY_BLOB, *PBCRYPT_DSA_KEY_BLOB;

typedef enum

{

DSA_HASH_ALGORITHM_SHA1,

DSA_HASH_ALGORITHM_SHA256,

DSA_HASH_ALGORITHM_SHA512

} HASHALGORITHM_ENUM;

typedef enum

{

DSA_FIPS186_2,

DSA_FIPS186_3

} DSAFIPSVERSION_ENUM;

typedef struct _BCRYPT_DSA_KEY_BLOB_V2

{

ULONG                                   dwMagic;

ULONG                                   cbKey;

HASHALGORITHM_ENUM                      hashAlgorithm;

DSAFIPSVERSION_ENUM                     standardVersion;

ULONG                                   cbSeedLength;

ULONG                                   cbGroupSize;

UCHAR                                   Count[4];

} BCRYPT_DSA_KEY_BLOB_V2, *PBCRYPT_DSA_KEY_BLOB_V2;

typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER

{

ULONG   dwMagic;

ULONG   dwVersion;

ULONG   cbKeyData;

} BCRYPT_KEY_DATA_BLOB_HEADER, *PBCRYPT_KEY_DATA_BLOB_HEADER;

typedef struct _BCRYPT_DSA_PARAMETER_HEADER

{

ULONG           cbLength;

ULONG           dwMagic;

ULONG           cbKeyLength;

UCHAR           Count[4];

UCHAR           Seed[20];

UCHAR           q[20];

} BCRYPT_DSA_PARAMETER_HEADER;

typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2

{

ULONG                   cbLength;

ULONG                   dwMagic;

ULONG                   cbKeyLength;

HASHALGORITHM_ENUM      hashAlgorithm;

DSAFIPSVERSION_ENUM     standardVersion;

ULONG                   cbSeedLength;

ULONG                   cbGroupSize;

UCHAR                   Count[4];

} BCRYPT_DSA_PARAMETER_HEADER_V2;

typedef struct _BCRYPT_ECC_CURVE_NAMES

{

ULONG   dwEccCurveNames;

LPWSTR  *pEccCurveNames;

} BCRYPT_ECC_CURVE_NAMES;

typedef enum {

BCRYPT_HASH_OPERATION_HASH_DATA = 1,

BCRYPT_HASH_OPERATION_FINISH_HASH = 2,

} BCRYPT_HASH_OPERATION_TYPE;

typedef struct _BCRYPT_MULTI_HASH_OPERATION {

ULONG                           iHash;          

BCRYPT_HASH_OPERATION_TYPE      hashOperation;  

PUCHAR                          pbBuffer;       

ULONG                           cbBuffer;

} BCRYPT_MULTI_HASH_OPERATION;

typedef enum{

BCRYPT_OPERATION_TYPE_HASH = 1,     

} BCRYPT_MULTI_OPERATION_TYPE;

typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT

{

ULONG   cbPerObject;

ULONG   cbPerElement;           

} BCRYPT_MULTI_OBJECT_LENGTH_STRUCT;

NTSTATUS

__stdcall

BCryptOpenAlgorithmProvider(

BCRYPT_ALG_HANDLE   *phAlgorithm,

LPCWSTR pszAlgId,

LPCWSTR pszImplementation,

ULONG   dwFlags);

typedef struct _BCRYPT_ALGORITHM_IDENTIFIER

{

LPWSTR  pszName;

ULONG   dwClass;

ULONG   dwFlags;

} BCRYPT_ALGORITHM_IDENTIFIER;

NTSTATUS

__stdcall

BCryptEnumAlgorithms(

ULONG   dwAlgOperations,

ULONG   *pAlgCount,

BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList,

ULONG   dwFlags);

typedef struct _BCRYPT_PROVIDER_NAME

{

LPWSTR  pszProviderName;

} BCRYPT_PROVIDER_NAME;

NTSTATUS

__stdcall

BCryptEnumProviders(

LPCWSTR pszAlgId,

ULONG   *pImplCount,

BCRYPT_PROVIDER_NAME    **ppImplList,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptGetProperty(

BCRYPT_HANDLE   hObject,

LPCWSTR pszProperty,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   *pcbResult,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptSetProperty(

BCRYPT_HANDLE   hObject,

LPCWSTR pszProperty,

PUCHAR   pbInput,

ULONG   cbInput,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptCloseAlgorithmProvider(

BCRYPT_ALG_HANDLE   hAlgorithm,

ULONG   dwFlags);

VOID

__stdcall

BCryptFreeBuffer(

PVOID   pvBuffer);

NTSTATUS

__stdcall

BCryptGenerateSymmetricKey(

BCRYPT_ALG_HANDLE   hAlgorithm,

BCRYPT_KEY_HANDLE   *phKey,

PUCHAR   pbKeyObject,

ULONG   cbKeyObject,

PUCHAR   pbSecret,

ULONG   cbSecret,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptGenerateKeyPair(

BCRYPT_ALG_HANDLE   hAlgorithm,

BCRYPT_KEY_HANDLE   *phKey,

ULONG   dwLength,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptEncrypt(

BCRYPT_KEY_HANDLE hKey,

PUCHAR   pbInput,

ULONG   cbInput,

VOID    *pPaddingInfo,

PUCHAR   pbIV,

ULONG   cbIV,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   *pcbResult,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDecrypt(

BCRYPT_KEY_HANDLE   hKey,

PUCHAR   pbInput,

ULONG   cbInput,

VOID    *pPaddingInfo,

PUCHAR   pbIV,

ULONG   cbIV,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   *pcbResult,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptExportKey(

BCRYPT_KEY_HANDLE   hKey,

BCRYPT_KEY_HANDLE   hExportKey,

LPCWSTR pszBlobType,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   *pcbResult,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptImportKey(

BCRYPT_ALG_HANDLE hAlgorithm,

BCRYPT_KEY_HANDLE hImportKey,

LPCWSTR pszBlobType,

BCRYPT_KEY_HANDLE *phKey,

PUCHAR   pbKeyObject,

ULONG   cbKeyObject,

PUCHAR   pbInput,

ULONG   cbInput,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptImportKeyPair(

BCRYPT_ALG_HANDLE hAlgorithm,

BCRYPT_KEY_HANDLE hImportKey,

LPCWSTR pszBlobType,

BCRYPT_KEY_HANDLE *phKey,

PUCHAR   pbInput,

ULONG   cbInput,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDuplicateKey(

BCRYPT_KEY_HANDLE   hKey,

BCRYPT_KEY_HANDLE   *phNewKey,

PUCHAR   pbKeyObject,

ULONG   cbKeyObject,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptFinalizeKeyPair(

BCRYPT_KEY_HANDLE   hKey,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDestroyKey(

BCRYPT_KEY_HANDLE   hKey);

NTSTATUS

__stdcall

BCryptDestroySecret(

BCRYPT_SECRET_HANDLE   hSecret);

NTSTATUS

__stdcall

BCryptSignHash(

BCRYPT_KEY_HANDLE   hKey,

VOID    *pPaddingInfo,

PUCHAR   pbInput,

ULONG   cbInput,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   *pcbResult,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptVerifySignature(

BCRYPT_KEY_HANDLE   hKey,

VOID    *pPaddingInfo,

PUCHAR   pbHash,

ULONG   cbHash,

PUCHAR   pbSignature,

ULONG   cbSignature,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptSecretAgreement(

BCRYPT_KEY_HANDLE       hPrivKey,

BCRYPT_KEY_HANDLE       hPubKey,

BCRYPT_SECRET_HANDLE    *phAgreedSecret,

ULONG                   dwFlags);

NTSTATUS

__stdcall

BCryptDeriveKey(

BCRYPT_SECRET_HANDLE hSharedSecret,

LPCWSTR              pwszKDF,

BCryptBufferDesc     *pParameterList,

PUCHAR pbDerivedKey,

ULONG                cbDerivedKey,

ULONG                *pcbResult,

ULONG                dwFlags);

NTSTATUS

__stdcall

BCryptKeyDerivation(

BCRYPT_KEY_HANDLE hKey,

BCryptBufferDesc     *pParameterList,

PUCHAR pbDerivedKey,

ULONG                cbDerivedKey,

ULONG                *pcbResult,

ULONG                dwFlags);

NTSTATUS

__stdcall

BCryptCreateHash(

BCRYPT_ALG_HANDLE   hAlgorithm,

BCRYPT_HASH_HANDLE  *phHash,

PUCHAR   pbHashObject,

ULONG   cbHashObject,

PUCHAR   pbSecret,   

ULONG   cbSecret,   

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptHashData(

BCRYPT_HASH_HANDLE  hHash,

PUCHAR   pbInput,

ULONG   cbInput,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptFinishHash(

BCRYPT_HASH_HANDLE hHash,

PUCHAR   pbOutput,

ULONG   cbOutput,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDuplicateHash(

BCRYPT_HASH_HANDLE  hHash,

BCRYPT_HASH_HANDLE  *phNewHash,

PUCHAR   pbHashObject,

ULONG   cbHashObject,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDestroyHash(

BCRYPT_HASH_HANDLE  hHash);

NTSTATUS

__stdcall

BCryptHash(

BCRYPT_ALG_HANDLE   hAlgorithm,

PUCHAR              pbSecret,   

ULONG               cbSecret,   

PUCHAR              pbInput,

ULONG               cbInput,

PUCHAR              pbOutput,

ULONG               cbOutput );

NTSTATUS

__stdcall

BCryptGenRandom(

BCRYPT_ALG_HANDLE   hAlgorithm,

PUCHAR  pbBuffer,

ULONG   cbBuffer,

ULONG   dwFlags);

NTSTATUS

__stdcall

BCryptDeriveKeyCapi(

BCRYPT_HASH_HANDLE  hHash,

BCRYPT_ALG_HANDLE   hTargetAlg,

PUCHAR              pbDerivedKey,

ULONG               cbDerivedKey,

ULONG               dwFlags);

NTSTATUS

__stdcall

BCryptDeriveKeyPBKDF2(

BCRYPT_ALG_HANDLE   hPrf,

PUCHAR              pbPassword,

ULONG               cbPassword,

PUCHAR              pbSalt,

ULONG               cbSalt,

ULONGLONG           cIterations,

PUCHAR              pbDerivedKey,

ULONG               cbDerivedKey,

ULONG               dwFlags);

typedef struct _BCRYPT_INTERFACE_VERSION

{

USHORT MajorVersion;

USHORT MinorVersion;

} BCRYPT_INTERFACE_VERSION, *PBCRYPT_INTERFACE_VERSION;

typedef struct _CRYPT_INTERFACE_REG

{

ULONG dwInterface;

ULONG dwFlags;

ULONG cFunctions;

PWSTR *rgpszFunctions;

}

CRYPT_INTERFACE_REG, *PCRYPT_INTERFACE_REG;

typedef struct _CRYPT_IMAGE_REG

{

PWSTR pszImage;

ULONG cInterfaces;

PCRYPT_INTERFACE_REG *rgpInterfaces;

}

CRYPT_IMAGE_REG, *PCRYPT_IMAGE_REG;

typedef struct _CRYPT_PROVIDER_REG

{

ULONG cAliases;

PWSTR *rgpszAliases;

PCRYPT_IMAGE_REG pUM;

PCRYPT_IMAGE_REG pKM;

}

CRYPT_PROVIDER_REG, *PCRYPT_PROVIDER_REG;

typedef struct _CRYPT_PROVIDERS

{

ULONG cProviders;

PWSTR *rgpszProviders;

}

CRYPT_PROVIDERS, *PCRYPT_PROVIDERS;

typedef struct _CRYPT_CONTEXT_CONFIG

{

ULONG dwFlags;

ULONG dwReserved;

}

CRYPT_CONTEXT_CONFIG, *PCRYPT_CONTEXT_CONFIG;

typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG

{

ULONG dwFlags;

ULONG dwReserved;

}

CRYPT_CONTEXT_FUNCTION_CONFIG, *PCRYPT_CONTEXT_FUNCTION_CONFIG;

typedef struct _CRYPT_CONTEXTS

{

ULONG cContexts;

PWSTR *rgpszContexts;

}

CRYPT_CONTEXTS, *PCRYPT_CONTEXTS;

typedef struct _CRYPT_CONTEXT_FUNCTIONS

{

ULONG cFunctions;

PWSTR *rgpszFunctions;

}

CRYPT_CONTEXT_FUNCTIONS, *PCRYPT_CONTEXT_FUNCTIONS;

typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS

{

ULONG cProviders;

PWSTR *rgpszProviders;

}

CRYPT_CONTEXT_FUNCTION_PROVIDERS, *PCRYPT_CONTEXT_FUNCTION_PROVIDERS;

typedef struct _CRYPT_PROPERTY_REF

{

PWSTR pszProperty;

ULONG cbValue;

PUCHAR pbValue;

}

CRYPT_PROPERTY_REF, *PCRYPT_PROPERTY_REF;

typedef struct _CRYPT_IMAGE_REF

{

PWSTR pszImage;

ULONG dwFlags;

}

CRYPT_IMAGE_REF, *PCRYPT_IMAGE_REF;

typedef struct _CRYPT_PROVIDER_REF

{

ULONG dwInterface;

PWSTR pszFunction;

PWSTR pszProvider;

ULONG cProperties;

PCRYPT_PROPERTY_REF *rgpProperties;

PCRYPT_IMAGE_REF pUM;

PCRYPT_IMAGE_REF pKM;

}

CRYPT_PROVIDER_REF, *PCRYPT_PROVIDER_REF;

typedef struct _CRYPT_PROVIDER_REFS

{

ULONG cProviders;

PCRYPT_PROVIDER_REF *rgpProviders;

}

CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

NTSTATUS

__stdcall

BCryptQueryProviderRegistration(

LPCWSTR pszProvider,

ULONG dwMode,

ULONG dwInterface,

ULONG* pcbBuffer,

PCRYPT_PROVIDER_REG *ppBuffer);

NTSTATUS

__stdcall

BCryptEnumRegisteredProviders(

ULONG* pcbBuffer,

PCRYPT_PROVIDERS *ppBuffer);

NTSTATUS

__stdcall

BCryptCreateContext(

ULONG dwTable,

LPCWSTR pszContext,

PCRYPT_CONTEXT_CONFIG pConfig); 

NTSTATUS

__stdcall

BCryptDeleteContext(

ULONG dwTable,

LPCWSTR pszContext);

NTSTATUS

__stdcall

BCryptEnumContexts(

ULONG dwTable,

ULONG* pcbBuffer,

PCRYPT_CONTEXTS *ppBuffer);

NTSTATUS

__stdcall

BCryptConfigureContext(

ULONG dwTable,

LPCWSTR pszContext,

PCRYPT_CONTEXT_CONFIG pConfig);

NTSTATUS

__stdcall

BCryptQueryContextConfiguration(

ULONG dwTable,

LPCWSTR pszContext,

ULONG* pcbBuffer,

PCRYPT_CONTEXT_CONFIG *ppBuffer);

NTSTATUS

__stdcall

BCryptAddContextFunction(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

ULONG dwPosition);

NTSTATUS

__stdcall

BCryptRemoveContextFunction(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction);

NTSTATUS

__stdcall

BCryptEnumContextFunctions(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

ULONG* pcbBuffer,

PCRYPT_CONTEXT_FUNCTIONS *ppBuffer);

NTSTATUS

__stdcall

BCryptConfigureContextFunction(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

PCRYPT_CONTEXT_FUNCTION_CONFIG pConfig);

NTSTATUS

__stdcall

BCryptQueryContextFunctionConfiguration(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

ULONG* pcbBuffer,

PCRYPT_CONTEXT_FUNCTION_CONFIG *ppBuffer);

NTSTATUS

__stdcall

BCryptEnumContextFunctionProviders(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

ULONG* pcbBuffer,

PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer);

NTSTATUS

__stdcall

BCryptSetContextFunctionProperty(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

LPCWSTR pszProperty,

ULONG cbValue,

PUCHAR pbValue);

NTSTATUS

__stdcall

BCryptQueryContextFunctionProperty(

ULONG dwTable,

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

LPCWSTR pszProperty,

ULONG* pcbValue,

PUCHAR *ppbValue);

NTSTATUS

__stdcall

BCryptRegisterConfigChangeNotify(

HANDLE *phEvent);

NTSTATUS

__stdcall

BCryptUnregisterConfigChangeNotify(

HANDLE hEvent);

NTSTATUS __stdcall

BCryptResolveProviders(

LPCWSTR pszContext,

ULONG dwInterface,

LPCWSTR pszFunction,

LPCWSTR pszProvider,

ULONG dwMode,

ULONG dwFlags,

ULONG* pcbBuffer,

PCRYPT_PROVIDER_REFS *ppBuffer);

#pragma endregion

#pragma region Application Family or OneCore Family

NTSTATUS

__stdcall

BCryptGetFipsAlgorithmMode(

BOOLEAN *pfEnabled

);

#pragma endregion

#pragma region Desktop Family

BOOLEAN

CngGetFipsAlgorithmMode(

VOID

);

#pragma endregion

#pragma warning(pop)

#pragma endregion

#pragma region Application Family or OneCore or Games Family

#pragma warning(push)

#pragma warning(disable:4820) 

typedef LONG SECURITY_STATUS;

typedef LPVOID (__stdcall *PFN_NCRYPT_ALLOC)(

SIZE_T cbSize

);

typedef VOID (__stdcall *PFN_NCRYPT_FREE)(

LPVOID pv

);

typedef struct NCRYPT_ALLOC_PARA {

DWORD                   cbSize;     

PFN_NCRYPT_ALLOC        pfnAlloc;

PFN_NCRYPT_FREE         pfnFree;

} NCRYPT_ALLOC_PARA;

typedef BCryptBuffer     NCryptBuffer;

typedef BCryptBuffer*    PNCryptBuffer;

typedef BCryptBufferDesc NCryptBufferDesc;

typedef BCryptBufferDesc* PNCryptBufferDesc;

typedef ULONG_PTR NCRYPT_HANDLE;

typedef ULONG_PTR NCRYPT_PROV_HANDLE;

typedef ULONG_PTR NCRYPT_KEY_HANDLE;

typedef ULONG_PTR NCRYPT_HASH_HANDLE;

typedef ULONG_PTR NCRYPT_SECRET_HANDLE;

typedef  

struct _NCRYPT_CIPHER_PADDING_INFO

{

ULONG       cbSize;

DWORD       dwFlags;

PUCHAR      pbIV;

ULONG       cbIV;

PUCHAR      pbOtherInfo;

ULONG       cbOtherInfo;

} NCRYPT_CIPHER_PADDING_INFO, *PNCRYPT_CIPHER_PADDING_INFO;

typedef struct _NCRYPT_PLATFORM_ATTEST_PADDING_INFO {

ULONG  magic;  

ULONG  pcrMask;

} NCRYPT_PLATFORM_ATTEST_PADDING_INFO;

typedef struct _NCRYPT_KEY_ATTEST_PADDING_INFO {

ULONG   magic;  

PUCHAR  pbKeyBlob;

ULONG   cbKeyBlob;

PUCHAR  pbKeyAuth;

ULONG   cbKeyAuth;

} NCRYPT_KEY_ATTEST_PADDING_INFO;

typedef struct _NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES

{

ULONG Version; 

ULONG Flags;   

ULONG cbPublicKeyBlob;

} NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES, *PNCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES;

typedef struct _NCRYPT_VSM_KEY_ATTESTATION_STATEMENT

{

ULONG Magic;        

ULONG Version;      

ULONG cbSignature;  

ULONG cbReport;     

ULONG cbAttributes; 

} NCRYPT_VSM_KEY_ATTESTATION_STATEMENT, *PNCRYPT_VSM_KEY_ATTESTATION_STATEMENT;

#pragma warning(disable:4214) 

typedef struct _NCRYPT_VSM_KEY_ATTESTATION_CLAIM_RESTRICTIONS

{

ULONG Version;            

ULONGLONG TrustletId;     

ULONG MinSvn;             

ULONG FlagsMask;          

ULONG FlagsExpected;      

ULONG AllowDebugging : 1; 

ULONG Reserved : 31;      

} NCRYPT_VSM_KEY_ATTESTATION_CLAIM_RESTRICTIONS, *PNCRYPT_VSM_KEY_ATTESTATION_CLAIM_RESTRICTIONS;

#pragma warning(default:4214) 

#pragma warning(disable:4214) 

typedef struct _NCRYPT_EXPORTED_ISOLATED_KEY_HEADER

{

ULONG Version;         

ULONG KeyUsage;        

ULONG PerBootKey : 1;  

ULONG Reserved : 31;   

ULONG cbAlgName;       

ULONG cbNonce;         

ULONG cbAuthTag;       

ULONG cbWrappingKey;   

ULONG cbIsolatedKey;   

} NCRYPT_EXPORTED_ISOLATED_KEY_HEADER, *PNCRYPT_EXPORTED_ISOLATED_KEY_HEADER;

#pragma warning(default:4214) 

typedef struct _NCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE

{

NCRYPT_EXPORTED_ISOLATED_KEY_HEADER Header;

} NCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE, *PNCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE;

typedef struct __NCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT

{

UINT32 Magic;  

UINT32 Version;  

UINT32 HeaderSize;  

UINT32 cbCertifyInfo;

UINT32 cbSignature;

UINT32 cbTpmPublic;

} NCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT,*PNCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT;

typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT

{

ULONG Magic;        

ULONG Version;      

ULONG pcrAlg;       

ULONG cbSignature;  

ULONG cbQuote;      

ULONG cbPcrs;       

} NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT, *PNCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT;

SECURITY_STATUS

__stdcall

NCryptOpenStorageProvider(

NCRYPT_PROV_HANDLE *phProvider,

LPCWSTR pszProviderName,

DWORD   dwFlags);

typedef struct _NCryptAlgorithmName

{

LPWSTR  pszName;

DWORD   dwClass;            

DWORD   dwAlgOperations;    

DWORD   dwFlags;

} NCryptAlgorithmName;

SECURITY_STATUS

__stdcall

NCryptEnumAlgorithms(

NCRYPT_PROV_HANDLE hProvider,

DWORD   dwAlgOperations,

DWORD * pdwAlgCount,

NCryptAlgorithmName **ppAlgList,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptIsAlgSupported(

NCRYPT_PROV_HANDLE hProvider,

LPCWSTR pszAlgId,

DWORD   dwFlags);

typedef struct NCryptKeyName

{

LPWSTR  pszName;

LPWSTR  pszAlgid;

DWORD   dwLegacyKeySpec;

DWORD   dwFlags;

} NCryptKeyName;

SECURITY_STATUS

__stdcall

NCryptEnumKeys(

NCRYPT_PROV_HANDLE hProvider,

LPCWSTR pszScope,

NCryptKeyName **ppKeyName,

PVOID * ppEnumState,

DWORD   dwFlags);

typedef struct NCryptProviderName

{

LPWSTR  pszName;

LPWSTR  pszComment;

} NCryptProviderName;

#pragma region Desktop Family or OneCore Family

SECURITY_STATUS

__stdcall

NCryptEnumStorageProviders(

DWORD * pdwProviderCount,

NCryptProviderName **ppProviderList,

DWORD   dwFlags);

#pragma endregion

SECURITY_STATUS

__stdcall

NCryptFreeBuffer(

PVOID   pvInput);

SECURITY_STATUS

__stdcall

NCryptOpenKey(

NCRYPT_PROV_HANDLE hProvider,

NCRYPT_KEY_HANDLE *phKey,

LPCWSTR pszKeyName,

DWORD  dwLegacyKeySpec,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptCreatePersistedKey(

NCRYPT_PROV_HANDLE hProvider,

NCRYPT_KEY_HANDLE *phKey,

LPCWSTR pszAlgId,

LPCWSTR pszKeyName,

DWORD   dwLegacyKeySpec,

DWORD   dwFlags);

typedef struct __NCRYPT_UI_POLICY

{

DWORD   dwVersion;

DWORD   dwFlags;

LPCWSTR pszCreationTitle;

LPCWSTR pszFriendlyName;

LPCWSTR pszDescription;

} NCRYPT_UI_POLICY;

typedef struct __NCRYPT_KEY_ACCESS_POLICY_BLOB

{

DWORD   dwVersion;

DWORD   dwPolicyFlags;

DWORD	cbUserSid;

DWORD	cbApplicationSid;

}NCRYPT_KEY_ACCESS_POLICY_BLOB;

typedef struct __NCRYPT_SUPPORTED_LENGTHS

{

DWORD   dwMinLength;

DWORD   dwMaxLength;

DWORD   dwIncrement;

DWORD   dwDefaultLength;

} NCRYPT_SUPPORTED_LENGTHS;

typedef struct __NCRYPT_PCP_HMAC_AUTH_SIGNATURE_INFO

{

DWORD       dwVersion;

INT32       iExpiration;

BYTE        pabNonce[32];

BYTE        pabPolicyRef[32];

BYTE        pabHMAC[32];

} NCRYPT_PCP_HMAC_AUTH_SIGNATURE_INFO;

typedef struct __NCRYPT_PCP_TPM_FW_VERSION_INFO

{

UINT16      major1;

UINT16      major2;

UINT16      minor1;

UINT16      minor2;

} NCRYPT_PCP_TPM_FW_VERSION_INFO;

typedef struct __NCRYPT_PCP_RAW_POLICYDIGEST

{

DWORD   dwVersion;

DWORD   cbDigest;

} NCRYPT_PCP_RAW_POLICYDIGEST_INFO;

SECURITY_STATUS

__stdcall

NCryptGetProperty(

NCRYPT_HANDLE hObject,

LPCWSTR pszProperty,

PBYTE pbOutput,

DWORD   cbOutput,

DWORD * pcbResult,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptSetProperty(

NCRYPT_HANDLE hObject,

LPCWSTR pszProperty,

PBYTE pbInput,

DWORD   cbInput,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptFinalizeKey(

NCRYPT_KEY_HANDLE hKey,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptEncrypt(

NCRYPT_KEY_HANDLE hKey,

PBYTE pbInput,

DWORD   cbInput,

VOID *pPaddingInfo,

PBYTE pbOutput,

DWORD   cbOutput,

DWORD * pcbResult,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptDecrypt(

NCRYPT_KEY_HANDLE hKey,

PBYTE pbInput,

DWORD   cbInput,

VOID *pPaddingInfo,

PBYTE pbOutput,

DWORD   cbOutput,

DWORD * pcbResult,

DWORD   dwFlags);

typedef struct _NCRYPT_KEY_BLOB_HEADER

{

ULONG   cbSize;             

ULONG   dwMagic;

ULONG   cbAlgName;          

ULONG   cbKeyData;

} NCRYPT_KEY_BLOB_HEADER, *PNCRYPT_KEY_BLOB_HEADER;

typedef struct NCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER

{

DWORD magic;

DWORD cbHeader;

DWORD cbPublic;

DWORD cbPrivate;

DWORD cbName;

} NCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER, *PNCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER;

SECURITY_STATUS

__stdcall

NCryptImportKey(

NCRYPT_PROV_HANDLE hProvider,

NCRYPT_KEY_HANDLE hImportKey,

LPCWSTR pszBlobType,

NCryptBufferDesc *pParameterList,

NCRYPT_KEY_HANDLE *phKey,

PBYTE pbData,

DWORD   cbData,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptExportKey(

NCRYPT_KEY_HANDLE hKey,

NCRYPT_KEY_HANDLE hExportKey,

LPCWSTR pszBlobType,

NCryptBufferDesc *pParameterList,

PBYTE pbOutput,

DWORD   cbOutput,

DWORD * pcbResult,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptSignHash(

NCRYPT_KEY_HANDLE hKey,

VOID *pPaddingInfo,

PBYTE pbHashValue,

DWORD   cbHashValue,

PBYTE pbSignature,

DWORD   cbSignature,

DWORD * pcbResult,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptVerifySignature(

NCRYPT_KEY_HANDLE hKey,

VOID *pPaddingInfo,

PBYTE pbHashValue,

DWORD   cbHashValue,

PBYTE pbSignature,

DWORD   cbSignature,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptDeleteKey(

NCRYPT_KEY_HANDLE hKey,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptFreeObject(

NCRYPT_HANDLE hObject);

#pragma region Desktop Family or OneCore Family

BOOL

__stdcall

NCryptIsKeyHandle(

NCRYPT_KEY_HANDLE hKey);

SECURITY_STATUS

__stdcall

NCryptTranslateHandle(

NCRYPT_PROV_HANDLE *phProvider,

NCRYPT_KEY_HANDLE *phKey,

HCRYPTPROV hLegacyProv,

HCRYPTKEY hLegacyKey,

DWORD  dwLegacyKeySpec,

DWORD   dwFlags);

#pragma endregion

#pragma region Desktop Family or OneCore Family

SECURITY_STATUS

__stdcall

NCryptNotifyChangeKey(

NCRYPT_PROV_HANDLE hProvider,

HANDLE *phEvent,

DWORD   dwFlags);

#pragma endregion

SECURITY_STATUS

__stdcall

NCryptSecretAgreement(

NCRYPT_KEY_HANDLE hPrivKey,

NCRYPT_KEY_HANDLE hPubKey,

NCRYPT_SECRET_HANDLE *phAgreedSecret,

DWORD   dwFlags);

SECURITY_STATUS

__stdcall

NCryptDeriveKey(

NCRYPT_SECRET_HANDLE hSharedSecret,

LPCWSTR              pwszKDF,

NCryptBufferDesc     *pParameterList,

PBYTE pbDerivedKey,

DWORD                cbDerivedKey,

DWORD                *pcbResult,

ULONG                dwFlags);

SECURITY_STATUS

__stdcall

NCryptKeyDerivation(

NCRYPT_KEY_HANDLE   hKey,

NCryptBufferDesc    *pParameterList,

PUCHAR pbDerivedKey,

DWORD               cbDerivedKey,

DWORD               *pcbResult,

ULONG               dwFlags);

SECURITY_STATUS

__stdcall

NCryptCreateClaim(

NCRYPT_KEY_HANDLE   hSubjectKey,

NCRYPT_KEY_HANDLE   hAuthorityKey,

DWORD               dwClaimType,

NCryptBufferDesc    *pParameterList,

PBYTE pbClaimBlob,

DWORD               cbClaimBlob,

DWORD               *pcbResult,

DWORD               dwFlags);

SECURITY_STATUS

__stdcall

NCryptVerifyClaim(

NCRYPT_KEY_HANDLE   hSubjectKey,

NCRYPT_KEY_HANDLE   hAuthorityKey,

DWORD               dwClaimType,

NCryptBufferDesc    *pParameterList,

PBYTE pbClaimBlob,

DWORD               cbClaimBlob,

NCryptBufferDesc    *pOutput,

DWORD               dwFlags);

#pragma warning(pop)

typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;

typedef ULONG_PTR HCRYPTPROV_LEGACY;

typedef struct _CRYPT_BIT_BLOB {

DWORD   cbData;

BYTE    *pbData;

DWORD   cUnusedBits;

} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;

typedef struct _CRYPT_ALGORITHM_IDENTIFIER {

LPSTR               pszObjId;

CRYPT_OBJID_BLOB    Parameters;

} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;

typedef struct _CRYPT_OBJID_TABLE {

DWORD   dwAlgId;

LPCSTR  pszObjId;

} CRYPT_OBJID_TABLE, *PCRYPT_OBJID_TABLE;

typedef struct _CRYPT_HASH_INFO {

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_HASH_BLOB             Hash;

} CRYPT_HASH_INFO, *PCRYPT_HASH_INFO;

typedef struct _CERT_EXTENSION {

LPSTR               pszObjId;

BOOL                fCritical;

CRYPT_OBJID_BLOB    Value;

} CERT_EXTENSION, *PCERT_EXTENSION;

typedef const CERT_EXTENSION* PCCERT_EXTENSION;

typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {

LPSTR               pszObjId;

CRYPT_OBJID_BLOB    Value;

} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE;

typedef struct _CRYPT_ATTRIBUTE {

LPSTR               pszObjId;

DWORD               cValue;

PCRYPT_ATTR_BLOB    rgValue;

} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;

typedef struct _CRYPT_ATTRIBUTES {

DWORD                cAttr;

PCRYPT_ATTRIBUTE     rgAttr;

} CRYPT_ATTRIBUTES, *PCRYPT_ATTRIBUTES;

typedef struct _CERT_RDN_ATTR {

LPSTR                   pszObjId;

DWORD                   dwValueType;

CERT_RDN_VALUE_BLOB     Value;

} CERT_RDN_ATTR, *PCERT_RDN_ATTR;

typedef struct _CERT_RDN {

DWORD           cRDNAttr;

PCERT_RDN_ATTR  rgRDNAttr;

} CERT_RDN, *PCERT_RDN;

typedef struct _CERT_NAME_INFO {

DWORD       cRDN;

PCERT_RDN   rgRDN;

} CERT_NAME_INFO, *PCERT_NAME_INFO;

typedef struct _CERT_NAME_VALUE {

DWORD               dwValueType;

CERT_RDN_VALUE_BLOB Value;

} CERT_NAME_VALUE, *PCERT_NAME_VALUE;

typedef struct _CERT_PUBLIC_KEY_INFO {

CRYPT_ALGORITHM_IDENTIFIER    Algorithm;

CRYPT_BIT_BLOB                PublicKey;

} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;

typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO{

DWORD                       dwVersion;  

CRYPT_DER_BLOB              PrivateKey; 

LPSTR                       szCurveOid; 

CRYPT_BIT_BLOB              PublicKey;  

}  CRYPT_ECC_PRIVATE_KEY_INFO, *PCRYPT_ECC_PRIVATE_KEY_INFO;

typedef struct _CRYPT_PRIVATE_KEY_INFO{

DWORD                       Version;

CRYPT_ALGORITHM_IDENTIFIER  Algorithm;

CRYPT_DER_BLOB              PrivateKey;

PCRYPT_ATTRIBUTES           pAttributes;

}  CRYPT_PRIVATE_KEY_INFO, *PCRYPT_PRIVATE_KEY_INFO;

typedef struct _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO{

CRYPT_ALGORITHM_IDENTIFIER  EncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedPrivateKey;

} CRYPT_ENCRYPTED_PRIVATE_KEY_INFO, *PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO;

typedef BOOL (__stdcall *PCRYPT_DECRYPT_PRIVATE_KEY_FUNC)(

CRYPT_ALGORITHM_IDENTIFIER Algorithm,

CRYPT_DATA_BLOB EncryptedPrivateKey,

BYTE* pbClearTextKey,

DWORD* pcbClearTextKey,

LPVOID pVoidDecryptFunc);

typedef BOOL (__stdcall *PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC)(

CRYPT_ALGORITHM_IDENTIFIER* pAlgorithm,

CRYPT_DATA_BLOB* pClearTextPrivateKey,

BYTE* pbEncryptedKey,

DWORD* pcbEncryptedKey,

LPVOID pVoidEncryptFunc);

typedef BOOL (__stdcall *PCRYPT_RESOLVE_HCRYPTPROV_FUNC)(

CRYPT_PRIVATE_KEY_INFO      *pPrivateKeyInfo,

HCRYPTPROV                  *phCryptProv,

LPVOID                      pVoidResolveFunc);

typedef struct _CRYPT_PKCS8_IMPORT_PARAMS{

CRYPT_DIGEST_BLOB               PrivateKey;             

PCRYPT_RESOLVE_HCRYPTPROV_FUNC  pResolvehCryptProvFunc; 

LPVOID                          pVoidResolveFunc;       

PCRYPT_DECRYPT_PRIVATE_KEY_FUNC pDecryptPrivateKeyFunc;

LPVOID                          pVoidDecryptFunc;

} CRYPT_PKCS8_IMPORT_PARAMS, *PCRYPT_PKCS8_IMPORT_PARAMS, CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS, *PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS;

typedef struct _CRYPT_PKCS8_EXPORT_PARAMS{

HCRYPTPROV                      hCryptProv;

DWORD                           dwKeySpec;

LPSTR                           pszPrivateKeyObjId;

PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc;

LPVOID                          pVoidEncryptFunc;

} CRYPT_PKCS8_EXPORT_PARAMS, *PCRYPT_PKCS8_EXPORT_PARAMS;

typedef struct _CERT_INFO {

DWORD                       dwVersion;

CRYPT_INTEGER_BLOB          SerialNumber;

CRYPT_ALGORITHM_IDENTIFIER  SignatureAlgorithm;

CERT_NAME_BLOB              Issuer;

FILETIME                    NotBefore;

FILETIME                    NotAfter;

CERT_NAME_BLOB              Subject;

CERT_PUBLIC_KEY_INFO        SubjectPublicKeyInfo;

CRYPT_BIT_BLOB              IssuerUniqueId;

CRYPT_BIT_BLOB              SubjectUniqueId;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} CERT_INFO, *PCERT_INFO;

typedef struct _CRL_ENTRY {

CRYPT_INTEGER_BLOB  SerialNumber;

FILETIME            RevocationDate;

DWORD               cExtension;

PCERT_EXTENSION     rgExtension;

} CRL_ENTRY, *PCRL_ENTRY;

typedef struct _CRL_INFO {

DWORD                       dwVersion;

CRYPT_ALGORITHM_IDENTIFIER  SignatureAlgorithm;

CERT_NAME_BLOB              Issuer;

FILETIME                    ThisUpdate;

FILETIME                    NextUpdate;

DWORD                       cCRLEntry;

PCRL_ENTRY                  rgCRLEntry;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} CRL_INFO, *PCRL_INFO;

typedef struct _CERT_OR_CRL_BLOB {

DWORD                   dwChoice;

DWORD                   cbEncoded;

BYTE                    *pbEncoded;

} CERT_OR_CRL_BLOB, * PCERT_OR_CRL_BLOB;

typedef struct _CERT_OR_CRL_BUNDLE {

DWORD                   cItem;

PCERT_OR_CRL_BLOB       rgItem;

} CERT_OR_CRL_BUNDLE, *PCERT_OR_CRL_BUNDLE;

typedef struct _CERT_REQUEST_INFO {

DWORD                   dwVersion;

CERT_NAME_BLOB          Subject;

CERT_PUBLIC_KEY_INFO    SubjectPublicKeyInfo;

DWORD                   cAttribute;

PCRYPT_ATTRIBUTE        rgAttribute;

} CERT_REQUEST_INFO, *PCERT_REQUEST_INFO;

typedef struct _CERT_KEYGEN_REQUEST_INFO {

DWORD                   dwVersion;

CERT_PUBLIC_KEY_INFO    SubjectPublicKeyInfo;

LPWSTR                  pwszChallengeString;        

} CERT_KEYGEN_REQUEST_INFO, *PCERT_KEYGEN_REQUEST_INFO;

typedef struct _CERT_SIGNED_CONTENT_INFO {

CRYPT_DER_BLOB              ToBeSigned;

CRYPT_ALGORITHM_IDENTIFIER  SignatureAlgorithm;

CRYPT_BIT_BLOB              Signature;

} CERT_SIGNED_CONTENT_INFO, *PCERT_SIGNED_CONTENT_INFO;

typedef struct _CTL_USAGE {

DWORD               cUsageIdentifier;

LPSTR               *rgpszUsageIdentifier;      

} CTL_USAGE, *PCTL_USAGE,

CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;

typedef const CTL_USAGE* PCCTL_USAGE;

typedef const CERT_ENHKEY_USAGE* PCCERT_ENHKEY_USAGE;

typedef struct _CTL_ENTRY {

CRYPT_DATA_BLOB     SubjectIdentifier;          

DWORD               cAttribute;

PCRYPT_ATTRIBUTE    rgAttribute;                

} CTL_ENTRY, *PCTL_ENTRY;

typedef struct _CTL_INFO {

DWORD                       dwVersion;

CTL_USAGE                   SubjectUsage;

CRYPT_DATA_BLOB             ListIdentifier;     

CRYPT_INTEGER_BLOB          SequenceNumber;     

FILETIME                    ThisUpdate;

FILETIME                    NextUpdate;         

CRYPT_ALGORITHM_IDENTIFIER  SubjectAlgorithm;

DWORD                       cCTLEntry;

PCTL_ENTRY                  rgCTLEntry;         

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;        

} CTL_INFO, *PCTL_INFO;

typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO {

LPSTR                   pszTimeStampAlgorithm;   

LPSTR                   pszContentType;          

CRYPT_OBJID_BLOB        Content;

DWORD                   cAttribute;

PCRYPT_ATTRIBUTE        rgAttribute;

} CRYPT_TIME_STAMP_REQUEST_INFO, *PCRYPT_TIME_STAMP_REQUEST_INFO;

typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR {

LPWSTR      pwszName;

LPWSTR      pwszValue;

} CRYPT_ENROLLMENT_NAME_VALUE_PAIR, * PCRYPT_ENROLLMENT_NAME_VALUE_PAIR;

typedef struct _CRYPT_CSP_PROVIDER {

DWORD           dwKeySpec;

LPWSTR          pwszProviderName;

CRYPT_BIT_BLOB  Signature;

} CRYPT_CSP_PROVIDER, * PCRYPT_CSP_PROVIDER;

BOOL

__stdcall

CryptFormatObject(

DWORD dwCertEncodingType,

DWORD dwFormatType,

DWORD dwFormatStrType,

void *pFormatStruct,

LPCSTR lpszStructType,

const BYTE *pbEncoded,

DWORD cbEncoded,

void *pbFormat,

DWORD *pcbFormat

);

typedef LPVOID (__stdcall *PFN_CRYPT_ALLOC)(

size_t cbSize

);

typedef VOID (__stdcall *PFN_CRYPT_FREE)(

LPVOID pv

);

typedef struct _CRYPT_ENCODE_PARA {

DWORD                   cbSize;

PFN_CRYPT_ALLOC         pfnAlloc;           

PFN_CRYPT_FREE          pfnFree;            

} CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA;

BOOL

__stdcall

CryptEncodeObjectEx(

DWORD dwCertEncodingType,

LPCSTR lpszStructType,

const void *pvStructInfo,

DWORD dwFlags,

PCRYPT_ENCODE_PARA pEncodePara,

void *pvEncoded,

DWORD *pcbEncoded

);

BOOL

__stdcall

CryptEncodeObject(

DWORD dwCertEncodingType,

LPCSTR lpszStructType,

const void *pvStructInfo,

BYTE *pbEncoded,

DWORD *pcbEncoded

);

typedef struct _CRYPT_DECODE_PARA {

DWORD                   cbSize;

PFN_CRYPT_ALLOC         pfnAlloc;           

PFN_CRYPT_FREE          pfnFree;            

} CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA;

BOOL

__stdcall

CryptDecodeObjectEx(

DWORD dwCertEncodingType,

LPCSTR lpszStructType,

const BYTE *pbEncoded,

DWORD cbEncoded,

DWORD dwFlags,

PCRYPT_DECODE_PARA pDecodePara,

void *pvStructInfo,

DWORD *pcbStructInfo

);

BOOL

__stdcall

CryptDecodeObject(

DWORD dwCertEncodingType,

LPCSTR lpszStructType,

const BYTE *pbEncoded,

DWORD cbEncoded,

DWORD dwFlags,

void *pvStructInfo,

DWORD *pcbStructInfo

);

typedef struct _CERT_EXTENSIONS {

DWORD           cExtension;

PCERT_EXTENSION rgExtension;

} CERT_EXTENSIONS, *PCERT_EXTENSIONS;

typedef struct _CERT_AUTHORITY_KEY_ID_INFO {

CRYPT_DATA_BLOB     KeyId;

CERT_NAME_BLOB      CertIssuer;

CRYPT_INTEGER_BLOB  CertSerialNumber;

} CERT_AUTHORITY_KEY_ID_INFO, *PCERT_AUTHORITY_KEY_ID_INFO;

typedef struct _CERT_PRIVATE_KEY_VALIDITY {

FILETIME            NotBefore;

FILETIME            NotAfter;

} CERT_PRIVATE_KEY_VALIDITY, *PCERT_PRIVATE_KEY_VALIDITY;

typedef struct _CERT_KEY_ATTRIBUTES_INFO {

CRYPT_DATA_BLOB             KeyId;

CRYPT_BIT_BLOB              IntendedKeyUsage;

PCERT_PRIVATE_KEY_VALIDITY  pPrivateKeyUsagePeriod;     

} CERT_KEY_ATTRIBUTES_INFO, *PCERT_KEY_ATTRIBUTES_INFO;

typedef struct _CERT_POLICY_ID {

DWORD                   cCertPolicyElementId;

LPSTR                   *rgpszCertPolicyElementId;  

} CERT_POLICY_ID, *PCERT_POLICY_ID;

typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO {

DWORD                   cCertPolicyId;

PCERT_POLICY_ID         rgCertPolicyId;

CRYPT_BIT_BLOB          RestrictedKeyUsage;

} CERT_KEY_USAGE_RESTRICTION_INFO, *PCERT_KEY_USAGE_RESTRICTION_INFO;

typedef struct _CERT_OTHER_NAME {

LPSTR               pszObjId;

CRYPT_OBJID_BLOB    Value;

} CERT_OTHER_NAME, *PCERT_OTHER_NAME;

typedef struct _CERT_ALT_NAME_ENTRY {

DWORD   dwAltNameChoice;

union {                                             

PCERT_OTHER_NAME            pOtherName;         

LPWSTR                      pwszRfc822Name;     

LPWSTR                      pwszDNSName;        

CERT_NAME_BLOB              DirectoryName;      

LPWSTR                      pwszURL;            

CRYPT_DATA_BLOB             IPAddress;          

LPSTR                       pszRegisteredID;    

} DUMMYUNIONNAME;                                   

} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY;

typedef struct _CERT_ALT_NAME_INFO {

DWORD                   cAltEntry;

PCERT_ALT_NAME_ENTRY    rgAltEntry;

} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO;

typedef struct _CERT_BASIC_CONSTRAINTS_INFO {

CRYPT_BIT_BLOB          SubjectType;

BOOL                    fPathLenConstraint;

DWORD                   dwPathLenConstraint;

DWORD                   cSubtreesConstraint;

CERT_NAME_BLOB          *rgSubtreesConstraint;

} CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO;

typedef struct _CERT_BASIC_CONSTRAINTS2_INFO {

BOOL                    fCA;

BOOL                    fPathLenConstraint;

DWORD                   dwPathLenConstraint;

} CERT_BASIC_CONSTRAINTS2_INFO, *PCERT_BASIC_CONSTRAINTS2_INFO;

typedef struct _CERT_POLICY_QUALIFIER_INFO {

LPSTR                       pszPolicyQualifierId;   

CRYPT_OBJID_BLOB            Qualifier;              

} CERT_POLICY_QUALIFIER_INFO, *PCERT_POLICY_QUALIFIER_INFO;

typedef struct _CERT_POLICY_INFO {

LPSTR                       pszPolicyIdentifier;    

DWORD                       cPolicyQualifier;       

CERT_POLICY_QUALIFIER_INFO  *rgPolicyQualifier;

} CERT_POLICY_INFO, *PCERT_POLICY_INFO;

typedef struct _CERT_POLICIES_INFO {

DWORD                       cPolicyInfo;

CERT_POLICY_INFO            *rgPolicyInfo;

} CERT_POLICIES_INFO, *PCERT_POLICIES_INFO;

typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE {

LPSTR   pszOrganization;

DWORD   cNoticeNumbers;

int     *rgNoticeNumbers;

} CERT_POLICY_QUALIFIER_NOTICE_REFERENCE, *PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE;

typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE {

CERT_POLICY_QUALIFIER_NOTICE_REFERENCE  *pNoticeReference;  

LPWSTR                                  pszDisplayText;     

} CERT_POLICY_QUALIFIER_USER_NOTICE, *PCERT_POLICY_QUALIFIER_USER_NOTICE;

typedef struct _CPS_URLS {

LPWSTR                      pszURL;

CRYPT_ALGORITHM_IDENTIFIER  *pAlgorithm; 

CRYPT_DATA_BLOB             *pDigest;    

} CPS_URLS, *PCPS_URLS;

typedef struct _CERT_POLICY95_QUALIFIER1 {

LPWSTR      pszPracticesReference;      

LPSTR       pszNoticeIdentifier;        

LPSTR       pszNSINoticeIdentifier;     

DWORD       cCPSURLs;

CPS_URLS    *rgCPSURLs;                 

} CERT_POLICY95_QUALIFIER1, *PCERT_POLICY95_QUALIFIER1;

typedef struct _CERT_POLICY_MAPPING {

LPSTR                       pszIssuerDomainPolicy;      

LPSTR                       pszSubjectDomainPolicy;     

} CERT_POLICY_MAPPING, *PCERT_POLICY_MAPPING;

typedef struct _CERT_POLICY_MAPPINGS_INFO {

DWORD                       cPolicyMapping;

PCERT_POLICY_MAPPING        rgPolicyMapping;

} CERT_POLICY_MAPPINGS_INFO, *PCERT_POLICY_MAPPINGS_INFO;

typedef struct _CERT_POLICY_CONSTRAINTS_INFO {

BOOL                        fRequireExplicitPolicy;

DWORD                       dwRequireExplicitPolicySkipCerts;

BOOL                        fInhibitPolicyMapping;

DWORD                       dwInhibitPolicyMappingSkipCerts;

} CERT_POLICY_CONSTRAINTS_INFO, *PCERT_POLICY_CONSTRAINTS_INFO;

typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY {

LPSTR               pszObjId;

DWORD               cValue;

PCRYPT_DER_BLOB     rgValue;

} CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY, *PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY;

typedef struct _CRYPT_CONTENT_INFO {

LPSTR               pszObjId;

CRYPT_DER_BLOB      Content;

} CRYPT_CONTENT_INFO, *PCRYPT_CONTENT_INFO;

typedef struct _CRYPT_SEQUENCE_OF_ANY {

DWORD               cValue;

PCRYPT_DER_BLOB     rgValue;

} CRYPT_SEQUENCE_OF_ANY, *PCRYPT_SEQUENCE_OF_ANY;

typedef struct _CERT_AUTHORITY_KEY_ID2_INFO {

CRYPT_DATA_BLOB     KeyId;

CERT_ALT_NAME_INFO  AuthorityCertIssuer;    

CRYPT_INTEGER_BLOB  AuthorityCertSerialNumber;

} CERT_AUTHORITY_KEY_ID2_INFO, *PCERT_AUTHORITY_KEY_ID2_INFO;

typedef struct _CERT_ACCESS_DESCRIPTION {

LPSTR               pszAccessMethod;        

CERT_ALT_NAME_ENTRY AccessLocation;

} CERT_ACCESS_DESCRIPTION, *PCERT_ACCESS_DESCRIPTION;

typedef struct _CERT_AUTHORITY_INFO_ACCESS {

DWORD                       cAccDescr;

PCERT_ACCESS_DESCRIPTION    rgAccDescr;

} CERT_AUTHORITY_INFO_ACCESS, *PCERT_AUTHORITY_INFO_ACCESS,

CERT_SUBJECT_INFO_ACCESS, *PCERT_SUBJECT_INFO_ACCESS;

typedef struct _CRL_DIST_POINT_NAME {

DWORD   dwDistPointNameChoice;

union {

CERT_ALT_NAME_INFO      FullName;       

} DUMMYUNIONNAME;

} CRL_DIST_POINT_NAME, *PCRL_DIST_POINT_NAME;

typedef struct _CRL_DIST_POINT {

CRL_DIST_POINT_NAME     DistPointName;      

CRYPT_BIT_BLOB          ReasonFlags;        

CERT_ALT_NAME_INFO      CRLIssuer;          

} CRL_DIST_POINT, *PCRL_DIST_POINT;

typedef struct _CRL_DIST_POINTS_INFO {

DWORD                   cDistPoint;

PCRL_DIST_POINT         rgDistPoint;

} CRL_DIST_POINTS_INFO, *PCRL_DIST_POINTS_INFO;

typedef struct _CROSS_CERT_DIST_POINTS_INFO {

DWORD                   dwSyncDeltaTime;

DWORD                   cDistPoint;

PCERT_ALT_NAME_INFO     rgDistPoint;

} CROSS_CERT_DIST_POINTS_INFO, *PCROSS_CERT_DIST_POINTS_INFO;

typedef struct _CERT_PAIR {

CERT_BLOB    Forward;        

CERT_BLOB    Reverse;        

} CERT_PAIR, *PCERT_PAIR;

typedef struct _CRL_ISSUING_DIST_POINT {

CRL_DIST_POINT_NAME     DistPointName;              

BOOL                    fOnlyContainsUserCerts;

BOOL                    fOnlyContainsCACerts;

CRYPT_BIT_BLOB          OnlySomeReasonFlags;        

BOOL                    fIndirectCRL;

} CRL_ISSUING_DIST_POINT, *PCRL_ISSUING_DIST_POINT;

typedef struct _CERT_GENERAL_SUBTREE {

CERT_ALT_NAME_ENTRY     Base;

DWORD                   dwMinimum;

BOOL                    fMaximum;

DWORD                   dwMaximum;

} CERT_GENERAL_SUBTREE, *PCERT_GENERAL_SUBTREE;

typedef struct _CERT_NAME_CONSTRAINTS_INFO {

DWORD                   cPermittedSubtree;

PCERT_GENERAL_SUBTREE   rgPermittedSubtree;

DWORD                   cExcludedSubtree;

PCERT_GENERAL_SUBTREE   rgExcludedSubtree;

} CERT_NAME_CONSTRAINTS_INFO, *PCERT_NAME_CONSTRAINTS_INFO;

typedef struct _CERT_DSS_PARAMETERS {

CRYPT_UINT_BLOB     p;

CRYPT_UINT_BLOB     q;

CRYPT_UINT_BLOB     g;

} CERT_DSS_PARAMETERS, *PCERT_DSS_PARAMETERS;

typedef struct _CERT_DH_PARAMETERS {

CRYPT_UINT_BLOB     p;

CRYPT_UINT_BLOB     g;

} CERT_DH_PARAMETERS, *PCERT_DH_PARAMETERS;

typedef struct _CERT_ECC_SIGNATURE {

CRYPT_UINT_BLOB     r;

CRYPT_UINT_BLOB     s;

} CERT_ECC_SIGNATURE, *PCERT_ECC_SIGNATURE;

typedef struct _CERT_X942_DH_VALIDATION_PARAMS {

CRYPT_BIT_BLOB      seed;

DWORD               pgenCounter;

} CERT_X942_DH_VALIDATION_PARAMS, *PCERT_X942_DH_VALIDATION_PARAMS;

typedef struct _CERT_X942_DH_PARAMETERS {

CRYPT_UINT_BLOB     p;          

CRYPT_UINT_BLOB     g;          

CRYPT_UINT_BLOB     q;          

CRYPT_UINT_BLOB     j;          

PCERT_X942_DH_VALIDATION_PARAMS pValidationParams;  

} CERT_X942_DH_PARAMETERS, *PCERT_X942_DH_PARAMETERS;

typedef struct _CRYPT_X942_OTHER_INFO {

LPSTR               pszContentEncryptionObjId;

BYTE                rgbCounter[4];

BYTE                rgbKeyLength[4];

CRYPT_DATA_BLOB     PubInfo;    

} CRYPT_X942_OTHER_INFO, *PCRYPT_X942_OTHER_INFO;

typedef struct _CRYPT_ECC_CMS_SHARED_INFO {

CRYPT_ALGORITHM_IDENTIFIER  Algorithm;

CRYPT_DATA_BLOB             EntityUInfo;    

BYTE                        rgbSuppPubInfo[4];

} CRYPT_ECC_CMS_SHARED_INFO, *PCRYPT_ECC_CMS_SHARED_INFO;

typedef struct _CRYPT_RC2_CBC_PARAMETERS {

DWORD               dwVersion;

BOOL                fIV;            

BYTE                rgbIV[8];

} CRYPT_RC2_CBC_PARAMETERS, *PCRYPT_RC2_CBC_PARAMETERS;

typedef struct _CRYPT_SMIME_CAPABILITY {

LPSTR               pszObjId;

CRYPT_OBJID_BLOB    Parameters;

} CRYPT_SMIME_CAPABILITY, *PCRYPT_SMIME_CAPABILITY;

typedef struct _CRYPT_SMIME_CAPABILITIES {

DWORD                   cCapability;

PCRYPT_SMIME_CAPABILITY rgCapability;

} CRYPT_SMIME_CAPABILITIES, *PCRYPT_SMIME_CAPABILITIES;

typedef struct _CERT_QC_STATEMENT {

LPSTR               pszStatementId;     

CRYPT_OBJID_BLOB    StatementInfo;      

} CERT_QC_STATEMENT, *PCERT_QC_STATEMENT;

typedef struct _CERT_QC_STATEMENTS_EXT_INFO {

DWORD                   cStatement;

PCERT_QC_STATEMENT      rgStatement;

} CERT_QC_STATEMENTS_EXT_INFO, *PCERT_QC_STATEMENTS_EXT_INFO;

typedef struct _CRYPT_MASK_GEN_ALGORITHM {

LPSTR                       pszObjId;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

} CRYPT_MASK_GEN_ALGORITHM, *PCRYPT_MASK_GEN_ALGORITHM;

typedef struct _CRYPT_RSA_SSA_PSS_PARAMETERS {

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_MASK_GEN_ALGORITHM    MaskGenAlgorithm;

DWORD                       dwSaltLength;

DWORD                       dwTrailerField;

} CRYPT_RSA_SSA_PSS_PARAMETERS, *PCRYPT_RSA_SSA_PSS_PARAMETERS;

typedef struct _CRYPT_PSOURCE_ALGORITHM {

LPSTR                       pszObjId;

CRYPT_DATA_BLOB             EncodingParameters;

} CRYPT_PSOURCE_ALGORITHM, *PCRYPT_PSOURCE_ALGORITHM;

typedef struct _CRYPT_RSAES_OAEP_PARAMETERS {

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_MASK_GEN_ALGORITHM    MaskGenAlgorithm;

CRYPT_PSOURCE_ALGORITHM     PSourceAlgorithm;

} CRYPT_RSAES_OAEP_PARAMETERS, *PCRYPT_RSAES_OAEP_PARAMETERS;

typedef struct _CMC_TAGGED_ATTRIBUTE {

DWORD               dwBodyPartID;

CRYPT_ATTRIBUTE     Attribute;

} CMC_TAGGED_ATTRIBUTE, *PCMC_TAGGED_ATTRIBUTE;

typedef struct _CMC_TAGGED_CERT_REQUEST {

DWORD               dwBodyPartID;

CRYPT_DER_BLOB      SignedCertRequest;

} CMC_TAGGED_CERT_REQUEST, *PCMC_TAGGED_CERT_REQUEST;

typedef struct _CMC_TAGGED_REQUEST {

DWORD               dwTaggedRequestChoice;

union {

PCMC_TAGGED_CERT_REQUEST   pTaggedCertRequest;

} DUMMYUNIONNAME;

} CMC_TAGGED_REQUEST, *PCMC_TAGGED_REQUEST;

typedef struct _CMC_TAGGED_CONTENT_INFO {

DWORD               dwBodyPartID;

CRYPT_DER_BLOB      EncodedContentInfo;

} CMC_TAGGED_CONTENT_INFO, *PCMC_TAGGED_CONTENT_INFO;

typedef struct _CMC_TAGGED_OTHER_MSG {

DWORD               dwBodyPartID;

LPSTR               pszObjId;

CRYPT_OBJID_BLOB    Value;

} CMC_TAGGED_OTHER_MSG, *PCMC_TAGGED_OTHER_MSG;

typedef struct _CMC_DATA_INFO {

DWORD                       cTaggedAttribute;

PCMC_TAGGED_ATTRIBUTE       rgTaggedAttribute;

DWORD                       cTaggedRequest;

PCMC_TAGGED_REQUEST         rgTaggedRequest;

DWORD                       cTaggedContentInfo;

PCMC_TAGGED_CONTENT_INFO    rgTaggedContentInfo;

DWORD                       cTaggedOtherMsg;

PCMC_TAGGED_OTHER_MSG       rgTaggedOtherMsg;

} CMC_DATA_INFO, *PCMC_DATA_INFO;

typedef struct _CMC_RESPONSE_INFO {

DWORD                       cTaggedAttribute;

PCMC_TAGGED_ATTRIBUTE       rgTaggedAttribute;

DWORD                       cTaggedContentInfo;

PCMC_TAGGED_CONTENT_INFO    rgTaggedContentInfo;

DWORD                       cTaggedOtherMsg;

PCMC_TAGGED_OTHER_MSG       rgTaggedOtherMsg;

} CMC_RESPONSE_INFO, *PCMC_RESPONSE_INFO;

typedef struct _CMC_PEND_INFO {

CRYPT_DATA_BLOB             PendToken;

FILETIME                    PendTime;

} CMC_PEND_INFO, *PCMC_PEND_INFO;

typedef struct _CMC_STATUS_INFO {

DWORD                       dwStatus;

DWORD                       cBodyList;

DWORD                       *rgdwBodyList;

LPWSTR                      pwszStatusString;   

DWORD                       dwOtherInfoChoice;

union  {

DWORD                       dwFailInfo;

PCMC_PEND_INFO              pPendInfo;

} DUMMYUNIONNAME;

} CMC_STATUS_INFO, *PCMC_STATUS_INFO;

typedef struct _CMC_ADD_EXTENSIONS_INFO {

DWORD                       dwCmcDataReference;

DWORD                       cCertReference;

DWORD                       *rgdwCertReference;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} CMC_ADD_EXTENSIONS_INFO, *PCMC_ADD_EXTENSIONS_INFO;

typedef struct _CMC_ADD_ATTRIBUTES_INFO {

DWORD                       dwCmcDataReference;

DWORD                       cCertReference;

DWORD                       *rgdwCertReference;

DWORD                       cAttribute;

PCRYPT_ATTRIBUTE            rgAttribute;

} CMC_ADD_ATTRIBUTES_INFO, *PCMC_ADD_ATTRIBUTES_INFO;

typedef struct _CERT_TEMPLATE_EXT {

LPSTR               pszObjId;

DWORD               dwMajorVersion;

BOOL                fMinorVersion;      

DWORD               dwMinorVersion;

} CERT_TEMPLATE_EXT, *PCERT_TEMPLATE_EXT;

typedef struct _CERT_HASHED_URL {

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_HASH_BLOB             Hash;

LPWSTR                      pwszUrl;    

} CERT_HASHED_URL, *PCERT_HASHED_URL;

typedef struct _CERT_LOGOTYPE_DETAILS {

LPWSTR                      pwszMimeType;   

DWORD                       cHashedUrl;

PCERT_HASHED_URL            rgHashedUrl;

} CERT_LOGOTYPE_DETAILS, *PCERT_LOGOTYPE_DETAILS;

typedef struct _CERT_LOGOTYPE_REFERENCE {

DWORD                       cHashedUrl;

PCERT_HASHED_URL            rgHashedUrl;

} CERT_LOGOTYPE_REFERENCE, *PCERT_LOGOTYPE_REFERENCE;

typedef struct _CERT_LOGOTYPE_IMAGE_INFO {

DWORD                       dwLogotypeImageInfoChoice;

DWORD                       dwFileSize;     

DWORD                       dwXSize;        

DWORD                       dwYSize;        

DWORD                       dwLogotypeImageResolutionChoice;

union {

DWORD                       dwNumBits;      

DWORD                       dwTableSize;    

} DUMMYUNIONNAME;

LPWSTR                      pwszLanguage;   

} CERT_LOGOTYPE_IMAGE_INFO, *PCERT_LOGOTYPE_IMAGE_INFO;

typedef struct _CERT_LOGOTYPE_IMAGE {

CERT_LOGOTYPE_DETAILS       LogotypeDetails;

PCERT_LOGOTYPE_IMAGE_INFO   pLogotypeImageInfo; 

} CERT_LOGOTYPE_IMAGE, *PCERT_LOGOTYPE_IMAGE;

typedef struct _CERT_LOGOTYPE_AUDIO_INFO {

DWORD                       dwFileSize;     

DWORD                       dwPlayTime;     

DWORD                       dwChannels;     

DWORD                       dwSampleRate;   

LPWSTR                      pwszLanguage;   

} CERT_LOGOTYPE_AUDIO_INFO, *PCERT_LOGOTYPE_AUDIO_INFO;

typedef struct _CERT_LOGOTYPE_AUDIO {

CERT_LOGOTYPE_DETAILS       LogotypeDetails;

PCERT_LOGOTYPE_AUDIO_INFO   pLogotypeAudioInfo; 

} CERT_LOGOTYPE_AUDIO, *PCERT_LOGOTYPE_AUDIO;

typedef struct _CERT_LOGOTYPE_DATA {

DWORD                       cLogotypeImage;

PCERT_LOGOTYPE_IMAGE        rgLogotypeImage;

DWORD                       cLogotypeAudio;

PCERT_LOGOTYPE_AUDIO        rgLogotypeAudio;

} CERT_LOGOTYPE_DATA, *PCERT_LOGOTYPE_DATA;

typedef struct _CERT_LOGOTYPE_INFO {

DWORD                       dwLogotypeInfoChoice;

union {

PCERT_LOGOTYPE_DATA         pLogotypeDirectInfo;

PCERT_LOGOTYPE_REFERENCE    pLogotypeIndirectInfo;

} DUMMYUNIONNAME;

} CERT_LOGOTYPE_INFO, *PCERT_LOGOTYPE_INFO;

typedef struct _CERT_OTHER_LOGOTYPE_INFO {

LPSTR                       pszObjId;

CERT_LOGOTYPE_INFO          LogotypeInfo;

} CERT_OTHER_LOGOTYPE_INFO, *PCERT_OTHER_LOGOTYPE_INFO;

typedef struct _CERT_LOGOTYPE_EXT_INFO {

DWORD                       cCommunityLogo;

PCERT_LOGOTYPE_INFO         rgCommunityLogo;

PCERT_LOGOTYPE_INFO         pIssuerLogo;        

PCERT_LOGOTYPE_INFO         pSubjectLogo;       

DWORD                       cOtherLogo;

PCERT_OTHER_LOGOTYPE_INFO   rgOtherLogo;

} CERT_LOGOTYPE_EXT_INFO, *PCERT_LOGOTYPE_EXT_INFO;

typedef struct _CERT_BIOMETRIC_DATA {

DWORD                       dwTypeOfBiometricDataChoice;

union {

DWORD                       dwPredefined;

LPSTR                       pszObjId;

} DUMMYUNIONNAME;

CERT_HASHED_URL             HashedUrl;      

} CERT_BIOMETRIC_DATA, *PCERT_BIOMETRIC_DATA;

typedef struct _CERT_BIOMETRIC_EXT_INFO {

DWORD                       cBiometricData;

PCERT_BIOMETRIC_DATA        rgBiometricData;

} CERT_BIOMETRIC_EXT_INFO, *PCERT_BIOMETRIC_EXT_INFO;

typedef struct _OCSP_SIGNATURE_INFO {

CRYPT_ALGORITHM_IDENTIFIER  SignatureAlgorithm;

CRYPT_BIT_BLOB              Signature;

DWORD                       cCertEncoded;

PCERT_BLOB                  rgCertEncoded;

} OCSP_SIGNATURE_INFO, *POCSP_SIGNATURE_INFO;

typedef struct _OCSP_SIGNED_REQUEST_INFO {

CRYPT_DER_BLOB              ToBeSigned;             

POCSP_SIGNATURE_INFO        pOptionalSignatureInfo; 

} OCSP_SIGNED_REQUEST_INFO, *POCSP_SIGNED_REQUEST_INFO;

typedef struct _OCSP_CERT_ID {

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;  

CRYPT_HASH_BLOB             IssuerNameHash; 

CRYPT_HASH_BLOB             IssuerKeyHash;  

CRYPT_INTEGER_BLOB          SerialNumber;

} OCSP_CERT_ID, *POCSP_CERT_ID;

typedef struct _OCSP_REQUEST_ENTRY {

OCSP_CERT_ID                CertId;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} OCSP_REQUEST_ENTRY, *POCSP_REQUEST_ENTRY;

typedef struct _OCSP_REQUEST_INFO {

DWORD                       dwVersion;

PCERT_ALT_NAME_ENTRY        pRequestorName;     

DWORD                       cRequestEntry;

POCSP_REQUEST_ENTRY         rgRequestEntry;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} OCSP_REQUEST_INFO, *POCSP_REQUEST_INFO;

typedef struct _OCSP_RESPONSE_INFO {

DWORD                       dwStatus;

LPSTR                       pszObjId;   

CRYPT_OBJID_BLOB            Value;      

} OCSP_RESPONSE_INFO, *POCSP_RESPONSE_INFO;

typedef struct _OCSP_BASIC_SIGNED_RESPONSE_INFO {

CRYPT_DER_BLOB              ToBeSigned;     

OCSP_SIGNATURE_INFO         SignatureInfo;

} OCSP_BASIC_SIGNED_RESPONSE_INFO, *POCSP_BASIC_SIGNED_RESPONSE_INFO;

typedef struct _OCSP_BASIC_REVOKED_INFO {

FILETIME                    RevocationDate;

DWORD                       dwCrlReasonCode;

} OCSP_BASIC_REVOKED_INFO, *POCSP_BASIC_REVOKED_INFO;

typedef struct _OCSP_BASIC_RESPONSE_ENTRY {

OCSP_CERT_ID                CertId;

DWORD                       dwCertStatus;

union {

POCSP_BASIC_REVOKED_INFO    pRevokedInfo;

} DUMMYUNIONNAME;

FILETIME                    ThisUpdate;

FILETIME                    NextUpdate; 

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} OCSP_BASIC_RESPONSE_ENTRY, *POCSP_BASIC_RESPONSE_ENTRY;

typedef struct _OCSP_BASIC_RESPONSE_INFO {

DWORD                       dwVersion;

DWORD                       dwResponderIdChoice;

union {

CERT_NAME_BLOB              ByNameResponderId;

CRYPT_HASH_BLOB              ByKeyResponderId;

} DUMMYUNIONNAME;

FILETIME                    ProducedAt;

DWORD                       cResponseEntry;

POCSP_BASIC_RESPONSE_ENTRY  rgResponseEntry;

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;

} OCSP_BASIC_RESPONSE_INFO, *POCSP_BASIC_RESPONSE_INFO;

typedef struct _CERT_SUPPORTED_ALGORITHM_INFO {

CRYPT_ALGORITHM_IDENTIFIER  Algorithm;

CRYPT_BIT_BLOB              IntendedKeyUsage;       

CERT_POLICIES_INFO          IntendedCertPolicies;   

} CERT_SUPPORTED_ALGORITHM_INFO, *PCERT_SUPPORTED_ALGORITHM_INFO;

typedef struct _CERT_TPM_SPECIFICATION_INFO {

LPWSTR                      pwszFamily;             

DWORD                       dwLevel;

DWORD                       dwRevision;

} CERT_TPM_SPECIFICATION_INFO, *PCERT_TPM_SPECIFICATION_INFO;

typedef void *HCRYPTOIDFUNCSET;

typedef void *HCRYPTOIDFUNCADDR;

typedef struct _CRYPT_OID_FUNC_ENTRY {

LPCSTR  pszOID;

void    *pvFuncAddr;

} CRYPT_OID_FUNC_ENTRY, *PCRYPT_OID_FUNC_ENTRY;

BOOL

__stdcall

CryptInstallOIDFunctionAddress(

HMODULE hModule,         

DWORD dwEncodingType,

LPCSTR pszFuncName,

DWORD cFuncEntry,

const CRYPT_OID_FUNC_ENTRY rgFuncEntry[],

DWORD dwFlags

);

HCRYPTOIDFUNCSET

__stdcall

CryptInitOIDFunctionSet(

LPCSTR pszFuncName,

DWORD dwFlags

);

BOOL

__stdcall

CryptGetOIDFunctionAddress(

HCRYPTOIDFUNCSET hFuncSet,

DWORD dwEncodingType,

LPCSTR pszOID,

DWORD dwFlags,

void **ppvFuncAddr,

HCRYPTOIDFUNCADDR *phFuncAddr

);

BOOL

__stdcall

CryptGetDefaultOIDDllList(

HCRYPTOIDFUNCSET hFuncSet,

DWORD dwEncodingType,

WCHAR *pwszDllList,

DWORD *pcchDllList

);

BOOL

__stdcall

CryptGetDefaultOIDFunctionAddress(

HCRYPTOIDFUNCSET hFuncSet,

DWORD dwEncodingType,

LPCWSTR pwszDll,

DWORD dwFlags,

void **ppvFuncAddr,

HCRYPTOIDFUNCADDR *phFuncAddr

);

BOOL

__stdcall

CryptFreeOIDFunctionAddress(

HCRYPTOIDFUNCADDR hFuncAddr,

DWORD dwFlags

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptRegisterOIDFunction(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID,

LPCWSTR pwszDll,

LPCSTR pszOverrideFuncName

);

BOOL

__stdcall

CryptUnregisterOIDFunction(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID

);

BOOL

__stdcall

CryptRegisterDefaultOIDFunction(

DWORD dwEncodingType,

LPCSTR pszFuncName,

DWORD dwIndex,

LPCWSTR pwszDll

);

BOOL

__stdcall

CryptUnregisterDefaultOIDFunction(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCWSTR pwszDll

);

BOOL

__stdcall

CryptSetOIDFunctionValue(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID,

LPCWSTR pwszValueName,

DWORD dwValueType,

const BYTE *pbValueData,

DWORD cbValueData

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptGetOIDFunctionValue(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID,

LPCWSTR pwszValueName,

DWORD *pdwValueType,

BYTE *pbValueData,

DWORD *pcbValueData

);

typedef BOOL (__stdcall *PFN_CRYPT_ENUM_OID_FUNC)(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID,

DWORD cValue,

const DWORD rgdwValueType[],

LPCWSTR const rgpwszValueName[],

const BYTE * const rgpbValueData[],

const DWORD rgcbValueData[],

void *pvArg

);

BOOL

__stdcall

CryptEnumOIDFunction(

DWORD dwEncodingType,

LPCSTR pszFuncName,

LPCSTR pszOID,

DWORD dwFlags,

void *pvArg,

PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc

);

typedef struct _CRYPT_OID_INFO {

DWORD           cbSize;

LPCSTR          pszOID;

LPCWSTR         pwszName;

DWORD           dwGroupId;

union {

DWORD       dwValue;

ALG_ID      Algid;

DWORD       dwLength;

} DUMMYUNIONNAME;

CRYPT_DATA_BLOB ExtraInfo;

} CRYPT_OID_INFO, *PCRYPT_OID_INFO;

typedef const CRYPT_OID_INFO CCRYPT_OID_INFO, *PCCRYPT_OID_INFO;

PCCRYPT_OID_INFO

__stdcall

CryptFindOIDInfo(

DWORD dwKeyType,

void *pvKey,

DWORD dwGroupId

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptRegisterOIDInfo(

PCCRYPT_OID_INFO pInfo,

DWORD dwFlags

);

BOOL

__stdcall

CryptUnregisterOIDInfo(

PCCRYPT_OID_INFO pInfo

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef BOOL (__stdcall *PFN_CRYPT_ENUM_OID_INFO)(

PCCRYPT_OID_INFO pInfo,

void *pvArg

);

BOOL

__stdcall

CryptEnumOIDInfo(

DWORD dwGroupId,

DWORD dwFlags,

void *pvArg,

PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo

);

LPCWSTR

__stdcall

CryptFindLocalizedName(

LPCWSTR pwszCryptName

);

typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO {

DWORD                   dwFlags;

LPWSTR                  pwszCNGSignHashAlgids;

LPWSTR                  pwszCNGPubKeyMinBitLengths; 

} CERT_STRONG_SIGN_SERIALIZED_INFO, *PCERT_STRONG_SIGN_SERIALIZED_INFO;

typedef struct _CERT_STRONG_SIGN_PARA {

DWORD                   cbSize;

DWORD                   dwInfoChoice;

union  {

void                                *pvInfo;

PCERT_STRONG_SIGN_SERIALIZED_INFO   pSerializedInfo;

LPSTR                               pszOID;

} DUMMYUNIONNAME;

} CERT_STRONG_SIGN_PARA, *PCERT_STRONG_SIGN_PARA;

typedef const CERT_STRONG_SIGN_PARA *PCCERT_STRONG_SIGN_PARA;

typedef void *HCRYPTMSG;

typedef struct _CERT_ISSUER_SERIAL_NUMBER {

CERT_NAME_BLOB      Issuer;

CRYPT_INTEGER_BLOB  SerialNumber;

} CERT_ISSUER_SERIAL_NUMBER, *PCERT_ISSUER_SERIAL_NUMBER;

typedef struct _CERT_ID {

DWORD   dwIdChoice;

union {

CERT_ISSUER_SERIAL_NUMBER   IssuerSerialNumber;

CRYPT_HASH_BLOB             KeyId;

CRYPT_HASH_BLOB             HashId;

} DUMMYUNIONNAME;

} CERT_ID, *PCERT_ID;

typedef struct _CMSG_SIGNER_ENCODE_INFO {

DWORD                       cbSize;

PCERT_INFO                  pCertInfo;

union {

HCRYPTPROV                  hCryptProv;

NCRYPT_KEY_HANDLE           hNCryptKey;

} DUMMYUNIONNAME;

DWORD                       dwKeySpec;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

void                        *pvHashAuxInfo;

DWORD                       cAuthAttr;

PCRYPT_ATTRIBUTE            rgAuthAttr;

DWORD                       cUnauthAttr;

PCRYPT_ATTRIBUTE            rgUnauthAttr;

} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

typedef struct _CMSG_SIGNED_ENCODE_INFO {

DWORD                       cbSize;

DWORD                       cSigners;

PCMSG_SIGNER_ENCODE_INFO    rgSigners;

DWORD                       cCertEncoded;

PCERT_BLOB                  rgCertEncoded;

DWORD                       cCrlEncoded;

PCRL_BLOB                   rgCrlEncoded;

} CMSG_SIGNED_ENCODE_INFO, *PCMSG_SIGNED_ENCODE_INFO;

typedef struct _CMSG_RECIPIENT_ENCODE_INFO CMSG_RECIPIENT_ENCODE_INFO,

*PCMSG_RECIPIENT_ENCODE_INFO;

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {

DWORD                       cbSize;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;

void                        *pvEncryptionAuxInfo;

DWORD                       cRecipients;

PCERT_INFO                  *rgpRecipients;

} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {

DWORD                       cbSize;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

void                        *pvKeyEncryptionAuxInfo;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_BIT_BLOB              RecipientPublicKey;

CERT_ID                     RecipientId;

} CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO;

typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO {

DWORD                       cbSize;

CRYPT_BIT_BLOB              RecipientPublicKey;

CERT_ID                     RecipientId;

FILETIME                    Date;

PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;

} CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,

*PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO;

typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {

DWORD                       cbSize;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

void                        *pvKeyEncryptionAuxInfo;

CRYPT_ALGORITHM_IDENTIFIER  KeyWrapAlgorithm;

void                        *pvKeyWrapAuxInfo;

HCRYPTPROV_LEGACY           hCryptProv;

DWORD                       dwKeySpec;

DWORD                       dwKeyChoice;

union {

PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm;

PCERT_ID                    pSenderId;

} DUMMYUNIONNAME;

CRYPT_DATA_BLOB             UserKeyingMaterial;     

DWORD                                       cRecipientEncryptedKeys;

PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO   *rgpRecipientEncryptedKeys;

} CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO;

typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {

DWORD                       cbSize;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

void                        *pvKeyEncryptionAuxInfo;

HCRYPTPROV                  hCryptProv;

DWORD                       dwKeyChoice;

union {

HCRYPTKEY                   hKeyEncryptionKey;

void                        *pvKeyEncryptionKey;

} DUMMYUNIONNAME;

CRYPT_DATA_BLOB             KeyId;

FILETIME                    Date;

PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;

} CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, *PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO;

struct _CMSG_RECIPIENT_ENCODE_INFO {

DWORD   dwRecipientChoice;

union {

PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO   pKeyTrans;

PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO   pKeyAgree;

PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO   pMailList;

} DUMMYUNIONNAME;

};

typedef struct _CMSG_RC2_AUX_INFO {

DWORD                       cbSize;

DWORD                       dwBitLen;

} CMSG_RC2_AUX_INFO, *PCMSG_RC2_AUX_INFO;

typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO {

DWORD                       cbSize;

DWORD                       dwFlags;

} CMSG_SP3_COMPATIBLE_AUX_INFO, *PCMSG_SP3_COMPATIBLE_AUX_INFO;

typedef struct _CMSG_RC4_AUX_INFO {

DWORD                       cbSize;

DWORD                       dwBitLen;

} CMSG_RC4_AUX_INFO, *PCMSG_RC4_AUX_INFO;

typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO {

DWORD                       cbSize;

CMSG_SIGNED_ENCODE_INFO     SignedInfo;

CMSG_ENVELOPED_ENCODE_INFO  EnvelopedInfo;

} CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO, *PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO;

typedef struct _CMSG_HASHED_ENCODE_INFO {

DWORD                       cbSize;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

void                        *pvHashAuxInfo;

} CMSG_HASHED_ENCODE_INFO, *PCMSG_HASHED_ENCODE_INFO;

typedef struct _CMSG_ENCRYPTED_ENCODE_INFO {

DWORD                       cbSize;

CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;

void                        *pvEncryptionAuxInfo;

} CMSG_ENCRYPTED_ENCODE_INFO, *PCMSG_ENCRYPTED_ENCODE_INFO;

typedef BOOL (__stdcall *PFN_CMSG_STREAM_OUTPUT)(

const void *pvArg,

BYTE *pbData,

DWORD cbData,

BOOL fFinal

);

typedef struct _CMSG_STREAM_INFO {

DWORD                   cbContent;

PFN_CMSG_STREAM_OUTPUT  pfnStreamOutput;

void                    *pvArg;

} CMSG_STREAM_INFO, *PCMSG_STREAM_INFO;

HCRYPTMSG

__stdcall

CryptMsgOpenToEncode(

DWORD dwMsgEncodingType,

DWORD dwFlags,

DWORD dwMsgType,

void const *pvMsgEncodeInfo,

LPSTR pszInnerContentObjID,

PCMSG_STREAM_INFO pStreamInfo

);

DWORD

__stdcall

CryptMsgCalculateEncodedLength(

DWORD dwMsgEncodingType,

DWORD dwFlags,

DWORD dwMsgType,

void const *pvMsgEncodeInfo,

LPSTR pszInnerContentObjID,

DWORD cbData

);

HCRYPTMSG

__stdcall

CryptMsgOpenToDecode(

DWORD dwMsgEncodingType,

DWORD dwFlags,

DWORD dwMsgType,

HCRYPTPROV_LEGACY hCryptProv,

PCERT_INFO pRecipientInfo,

PCMSG_STREAM_INFO pStreamInfo

);

HCRYPTMSG

__stdcall

CryptMsgDuplicate(

HCRYPTMSG hCryptMsg

);

BOOL

__stdcall

CryptMsgClose(

HCRYPTMSG hCryptMsg

);

BOOL

__stdcall

CryptMsgUpdate(

HCRYPTMSG hCryptMsg,

const BYTE *pbData,

DWORD cbData,

BOOL fFinal

);

BOOL

__stdcall

CryptMsgGetParam(

HCRYPTMSG hCryptMsg,

DWORD dwParamType,

DWORD dwIndex,

void *pvData,

DWORD *pcbData

);

typedef struct _CMSG_SIGNER_INFO {

DWORD                       dwVersion;

CERT_NAME_BLOB              Issuer;

CRYPT_INTEGER_BLOB          SerialNumber;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_ALGORITHM_IDENTIFIER  HashEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedHash;

CRYPT_ATTRIBUTES            AuthAttrs;

CRYPT_ATTRIBUTES            UnauthAttrs;

} CMSG_SIGNER_INFO, *PCMSG_SIGNER_INFO;

typedef struct _CMSG_CMS_SIGNER_INFO {

DWORD                       dwVersion;

CERT_ID                     SignerId;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_ALGORITHM_IDENTIFIER  HashEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedHash;

CRYPT_ATTRIBUTES            AuthAttrs;

CRYPT_ATTRIBUTES            UnauthAttrs;

} CMSG_CMS_SIGNER_INFO, *PCMSG_CMS_SIGNER_INFO;

typedef CRYPT_ATTRIBUTES CMSG_ATTR;

typedef CRYPT_ATTRIBUTES *PCMSG_ATTR;

typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO {

DWORD                       dwVersion;

CERT_ID                     RecipientId;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedKey;

} CMSG_KEY_TRANS_RECIPIENT_INFO, *PCMSG_KEY_TRANS_RECIPIENT_INFO;

typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO {

CERT_ID                     RecipientId;

CRYPT_DATA_BLOB             EncryptedKey;

FILETIME                    Date;

PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;

} CMSG_RECIPIENT_ENCRYPTED_KEY_INFO, *PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO;

typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO {

DWORD                       dwVersion;

DWORD                       dwOriginatorChoice;

union {

CERT_ID                     OriginatorCertId;

CERT_PUBLIC_KEY_INFO        OriginatorPublicKeyInfo;

} DUMMYUNIONNAME;

CRYPT_DATA_BLOB             UserKeyingMaterial;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

DWORD                                cRecipientEncryptedKeys;

PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO   *rgpRecipientEncryptedKeys;

} CMSG_KEY_AGREE_RECIPIENT_INFO, *PCMSG_KEY_AGREE_RECIPIENT_INFO;

typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO {

DWORD                       dwVersion;

CRYPT_DATA_BLOB             KeyId;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedKey;

FILETIME                    Date;

PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;

} CMSG_MAIL_LIST_RECIPIENT_INFO, *PCMSG_MAIL_LIST_RECIPIENT_INFO;

typedef struct _CMSG_CMS_RECIPIENT_INFO {

DWORD   dwRecipientChoice;

union {

PCMSG_KEY_TRANS_RECIPIENT_INFO   pKeyTrans;

PCMSG_KEY_AGREE_RECIPIENT_INFO   pKeyAgree;

PCMSG_MAIL_LIST_RECIPIENT_INFO   pMailList;

} DUMMYUNIONNAME;

} CMSG_CMS_RECIPIENT_INFO, *PCMSG_CMS_RECIPIENT_INFO;

BOOL

__stdcall

CryptMsgControl(

HCRYPTMSG hCryptMsg,

DWORD dwFlags,

DWORD dwCtrlType,

void const *pvCtrlPara

);

typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA {

DWORD               cbSize;

HCRYPTPROV_LEGACY   hCryptProv;

DWORD               dwSignerIndex;

DWORD               dwSignerType;

void                *pvSigner;

} CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA, *PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA;

typedef struct _CMSG_CTRL_DECRYPT_PARA {

DWORD       cbSize;

union {

HCRYPTPROV                  hCryptProv;

NCRYPT_KEY_HANDLE           hNCryptKey;

} DUMMYUNIONNAME;

DWORD       dwKeySpec;

DWORD       dwRecipientIndex;

} CMSG_CTRL_DECRYPT_PARA, *PCMSG_CTRL_DECRYPT_PARA;

typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA {

DWORD                           cbSize;

union {

HCRYPTPROV                  hCryptProv;

NCRYPT_KEY_HANDLE           hNCryptKey;

} DUMMYUNIONNAME;

DWORD                           dwKeySpec;

PCMSG_KEY_TRANS_RECIPIENT_INFO  pKeyTrans;

DWORD                           dwRecipientIndex;

} CMSG_CTRL_KEY_TRANS_DECRYPT_PARA, *PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA;

typedef struct _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA {

DWORD                           cbSize;

union {

HCRYPTPROV                  hCryptProv;

NCRYPT_KEY_HANDLE           hNCryptKey;

} DUMMYUNIONNAME;

DWORD                           dwKeySpec;

PCMSG_KEY_AGREE_RECIPIENT_INFO  pKeyAgree;

DWORD                           dwRecipientIndex;

DWORD                           dwRecipientEncryptedKeyIndex;

CRYPT_BIT_BLOB                  OriginatorPublicKey;

} CMSG_CTRL_KEY_AGREE_DECRYPT_PARA, *PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA;

typedef struct _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA {

DWORD                           cbSize;

HCRYPTPROV                      hCryptProv;

PCMSG_MAIL_LIST_RECIPIENT_INFO  pMailList;

DWORD                           dwRecipientIndex;

DWORD                           dwKeyChoice;

union {

HCRYPTKEY                       hKeyEncryptionKey;

void                            *pvKeyEncryptionKey;

} DUMMYUNIONNAME;

} CMSG_CTRL_MAIL_LIST_DECRYPT_PARA, *PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA;

typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA {

DWORD               cbSize;

DWORD               dwSignerIndex;

CRYPT_DATA_BLOB     blob;

} CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA, *PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA;

typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA {

DWORD               cbSize;

DWORD               dwSignerIndex;

DWORD               dwUnauthAttrIndex;

} CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA, *PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA;

BOOL

__stdcall

CryptMsgVerifyCountersignatureEncoded(

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwEncodingType,

PBYTE pbSignerInfo,

DWORD cbSignerInfo,

PBYTE pbSignerInfoCountersignature,

DWORD cbSignerInfoCountersignature,

PCERT_INFO pciCountersigner

);

BOOL

__stdcall

CryptMsgVerifyCountersignatureEncodedEx(

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwEncodingType,

PBYTE pbSignerInfo,

DWORD cbSignerInfo,

PBYTE pbSignerInfoCountersignature,

DWORD cbSignerInfoCountersignature,

DWORD dwSignerType,

void *pvSigner,

DWORD dwFlags,

void *pvExtra

);

BOOL

__stdcall

CryptMsgCountersign(

HCRYPTMSG hCryptMsg,

DWORD dwIndex,

DWORD cCountersigners,

PCMSG_SIGNER_ENCODE_INFO rgCountersigners

);

BOOL

__stdcall

CryptMsgCountersignEncoded(

DWORD dwEncodingType,

PBYTE pbSignerInfo,

DWORD cbSignerInfo,

DWORD cCountersigners,

PCMSG_SIGNER_ENCODE_INFO rgCountersigners,

PBYTE pbCountersignature,

PDWORD pcbCountersignature

);

typedef void * (__stdcall *PFN_CMSG_ALLOC) (

size_t cb

);

typedef void (__stdcall *PFN_CMSG_FREE)(

void *pv

);

typedef   BOOL (__stdcall *PFN_CMSG_GEN_ENCRYPT_KEY) (

HCRYPTPROV *phCryptProv,

PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt,

PVOID pvEncryptAuxInfo,

PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,

PFN_CMSG_ALLOC pfnAlloc,

HCRYPTKEY *phEncryptKey,

PBYTE *ppbEncryptParameters,

PDWORD pcbEncryptParameters

);

typedef BOOL (__stdcall *PFN_CMSG_EXPORT_ENCRYPT_KEY) (

HCRYPTPROV hCryptProv,

HCRYPTKEY hEncryptKey,

PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,

PBYTE pbData,

PDWORD pcbData

);

typedef BOOL (__stdcall *PFN_CMSG_IMPORT_ENCRYPT_KEY) (

HCRYPTPROV hCryptProv,

DWORD dwKeySpec,

PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt,

PCRYPT_ALGORITHM_IDENTIFIER paiPubKey,

PBYTE pbEncodedKey,

DWORD cbEncodedKey,

HCRYPTKEY *phEncryptKey

);

typedef struct _CMSG_CONTENT_ENCRYPT_INFO {

DWORD                       cbSize;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;

void                        *pvEncryptionAuxInfo;

DWORD                       cRecipients;

PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;

PFN_CMSG_ALLOC              pfnAlloc;

PFN_CMSG_FREE               pfnFree;

DWORD                       dwEncryptFlags;

union {

HCRYPTKEY                   hContentEncryptKey;

BCRYPT_KEY_HANDLE           hCNGContentEncryptKey;

} DUMMYUNIONNAME;

DWORD                       dwFlags;

BOOL                        fCNG;

BYTE                        *pbCNGContentEncryptKeyObject;

BYTE                        *pbContentEncryptKey;

DWORD                       cbContentEncryptKey;

} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;

typedef BOOL (__stdcall *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY) (

PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,

DWORD dwFlags,

void *pvReserved

);

typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO {

DWORD                       cbSize;

DWORD                       dwRecipientIndex;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedKey;

DWORD                       dwFlags;

} CMSG_KEY_TRANS_ENCRYPT_INFO, *PCMSG_KEY_TRANS_ENCRYPT_INFO;

typedef BOOL (__stdcall *PFN_CMSG_EXPORT_KEY_TRANS) (

PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,

PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo,

PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo,

DWORD dwFlags,

void *pvReserved

);

typedef struct _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO {

DWORD                       cbSize;

CRYPT_DATA_BLOB             EncryptedKey;

} CMSG_KEY_AGREE_KEY_ENCRYPT_INFO, *PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO;

typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO {

DWORD                       cbSize;

DWORD                       dwRecipientIndex;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

CRYPT_DATA_BLOB             UserKeyingMaterial;

DWORD                       dwOriginatorChoice;

union {

CERT_ID                     OriginatorCertId;

CERT_PUBLIC_KEY_INFO        OriginatorPublicKeyInfo;

} DUMMYUNIONNAME;

DWORD                       cKeyAgreeKeyEncryptInfo;

PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo;

DWORD                       dwFlags;

} CMSG_KEY_AGREE_ENCRYPT_INFO, *PCMSG_KEY_AGREE_ENCRYPT_INFO;

typedef BOOL (__stdcall *PFN_CMSG_EXPORT_KEY_AGREE) (

PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,

PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,

PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,

DWORD dwFlags,

void *pvReserved

);

typedef struct _CMSG_MAIL_LIST_ENCRYPT_INFO {

DWORD                       cbSize;

DWORD                       dwRecipientIndex;

CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;

CRYPT_DATA_BLOB             EncryptedKey;

DWORD                       dwFlags;

} CMSG_MAIL_LIST_ENCRYPT_INFO, *PCMSG_MAIL_LIST_ENCRYPT_INFO;

typedef BOOL (__stdcall *PFN_CMSG_EXPORT_MAIL_LIST) (

PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,

PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailListEncodeInfo,

PCMSG_MAIL_LIST_ENCRYPT_INFO pMailListEncryptInfo,

DWORD dwFlags,

void *pvReserved

);

typedef BOOL (__stdcall *PFN_CMSG_IMPORT_KEY_TRANS) (

PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,

PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara,

DWORD dwFlags,

void *pvReserved,

HCRYPTKEY *phContentEncryptKey

);

typedef BOOL (__stdcall *PFN_CMSG_IMPORT_KEY_AGREE) (

PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,

PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara,

DWORD dwFlags,

void *pvReserved,

HCRYPTKEY *phContentEncryptKey

);

typedef BOOL (__stdcall *PFN_CMSG_IMPORT_MAIL_LIST) (

PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,

PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA pMailListDecryptPara,

DWORD dwFlags,

void *pvReserved,

HCRYPTKEY *phContentEncryptKey

);

typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {

DWORD                       cbSize;

CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;

PFN_CMSG_ALLOC              pfnAlloc;

PFN_CMSG_FREE               pfnFree;

NCRYPT_KEY_HANDLE           hNCryptKey;

BYTE                        *pbContentEncryptKey;

DWORD                       cbContentEncryptKey;

BCRYPT_KEY_HANDLE           hCNGContentEncryptKey;

BYTE                        *pbCNGContentEncryptKeyObject;

} CMSG_CNG_CONTENT_DECRYPT_INFO, *PCMSG_CNG_CONTENT_DECRYPT_INFO;

typedef BOOL (__stdcall *PFN_CMSG_CNG_IMPORT_KEY_TRANS) (

PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo,

PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara,

DWORD dwFlags,

void *pvReserved

);

typedef BOOL (__stdcall *PFN_CMSG_CNG_IMPORT_KEY_AGREE) (

PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo,

PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara,

DWORD dwFlags,

void *pvReserved

);

typedef BOOL (__stdcall *PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY) (

PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo,

DWORD dwFlags,

void *pvReserved

);

typedef void *HCERTSTORE;

typedef struct _CERT_CONTEXT {

DWORD                   dwCertEncodingType;

BYTE                    *pbCertEncoded;

DWORD                   cbCertEncoded;

PCERT_INFO              pCertInfo;

HCERTSTORE              hCertStore;

} CERT_CONTEXT, *PCERT_CONTEXT;

typedef const CERT_CONTEXT *PCCERT_CONTEXT;

typedef struct _CRL_CONTEXT {

DWORD                   dwCertEncodingType;

BYTE                    *pbCrlEncoded;

DWORD                   cbCrlEncoded;

PCRL_INFO               pCrlInfo;

HCERTSTORE              hCertStore;

} CRL_CONTEXT, *PCRL_CONTEXT;

typedef const CRL_CONTEXT *PCCRL_CONTEXT;

typedef struct _CTL_CONTEXT {

DWORD                   dwMsgAndCertEncodingType;

BYTE                    *pbCtlEncoded;

DWORD                   cbCtlEncoded;

PCTL_INFO               pCtlInfo;

HCERTSTORE              hCertStore;

HCRYPTMSG               hCryptMsg;

BYTE                    *pbCtlContent;

DWORD                   cbCtlContent;

} CTL_CONTEXT, *PCTL_CONTEXT;

typedef const CTL_CONTEXT *PCCTL_CONTEXT;

typedef enum CertKeyType 

{

KeyTypeOther             = 0,	

KeyTypeVirtualSmartCard  = 1,

KeyTypePhysicalSmartCard = 2,

KeyTypePassport          = 3,

KeyTypePassportRemote    = 4,

KeyTypePassportSmartCard = 5,

KeyTypeHardware          = 6,

KeyTypeSoftware          = 7,

KeyTypeSelfSigned        = 8,

} CertKeyType;

typedef struct _CRYPT_KEY_PROV_PARAM {

DWORD           dwParam;

BYTE            *pbData;

DWORD           cbData;

DWORD           dwFlags;

} CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM;

typedef struct _CRYPT_KEY_PROV_INFO {

LPWSTR                  pwszContainerName;

LPWSTR                  pwszProvName;

DWORD                   dwProvType;

DWORD                   dwFlags;

DWORD                   cProvParam;

PCRYPT_KEY_PROV_PARAM   rgProvParam;

DWORD                   dwKeySpec;

} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;

typedef struct _CERT_KEY_CONTEXT {

DWORD           cbSize;           

union {

HCRYPTPROV          hCryptProv;

NCRYPT_KEY_HANDLE   hNCryptKey;

} DUMMYUNIONNAME;

DWORD           dwKeySpec;

} CERT_KEY_CONTEXT, *PCERT_KEY_CONTEXT;

typedef struct _ROOT_INFO_LUID {

DWORD LowPart;

LONG HighPart;

} ROOT_INFO_LUID, *PROOT_INFO_LUID;

typedef struct _CRYPT_SMART_CARD_ROOT_INFO {

BYTE                rgbCardID [16];

ROOT_INFO_LUID      luid;

} CRYPT_SMART_CARD_ROOT_INFO, *PCRYPT_SMART_CARD_ROOT_INFO;

typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA {

union {

HKEY                hKeyBase;

void                *pvBase;

} DUMMYUNIONNAME;

union {

void                *pvSystemStore;

LPCSTR              pszSystemStore;

LPCWSTR             pwszSystemStore;

} DUMMYUNIONNAME2;

} CERT_SYSTEM_STORE_RELOCATE_PARA, *PCERT_SYSTEM_STORE_RELOCATE_PARA;

typedef struct _CERT_REGISTRY_STORE_CLIENT_GPT_PARA {

HKEY                hKeyBase;

LPWSTR              pwszRegPath;

} CERT_REGISTRY_STORE_CLIENT_GPT_PARA, *PCERT_REGISTRY_STORE_CLIENT_GPT_PARA;

typedef struct _CERT_REGISTRY_STORE_ROAMING_PARA {

HKEY                hKey;

LPWSTR              pwszStoreDirectory;

} CERT_REGISTRY_STORE_ROAMING_PARA, *PCERT_REGISTRY_STORE_ROAMING_PARA;

typedef struct _CERT_LDAP_STORE_OPENED_PARA {

void        *pvLdapSessionHandle;   

LPCWSTR     pwszLdapUrl;

} CERT_LDAP_STORE_OPENED_PARA, *PCERT_LDAP_STORE_OPENED_PARA;

HCERTSTORE

__stdcall

CertOpenStore(

LPCSTR lpszStoreProvider,

DWORD dwEncodingType,

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwFlags,

const void *pvPara

);

typedef void *HCERTSTOREPROV;

typedef struct _CERT_STORE_PROV_INFO {

DWORD               cbSize;

DWORD               cStoreProvFunc;

void                **rgpvStoreProvFunc;

HCERTSTOREPROV      hStoreProv;

DWORD               dwStoreProvFlags;

HCRYPTOIDFUNCADDR   hStoreProvFuncAddr2;

} CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO;

typedef BOOL (__stdcall *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)(

LPCSTR lpszStoreProvider,

DWORD dwEncodingType,

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwFlags,

const void *pvPara,

HCERTSTORE hCertStore,

PCERT_STORE_PROV_INFO pStoreProvInfo

);

typedef void (__stdcall *PFN_CERT_STORE_PROV_CLOSE)(

HCERTSTOREPROV hStoreProv,

DWORD dwFlags

);

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_READ_CERT)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pStoreCertContext,

DWORD dwFlags,

PCCERT_CONTEXT *ppProvCertContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_WRITE_CERT)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pCertContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_DELETE_CERT)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pCertContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pCertContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_READ_CRL)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pStoreCrlContext,

DWORD dwFlags,

PCCRL_CONTEXT *ppProvCrlContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_WRITE_CRL)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pCrlContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_DELETE_CRL)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pCrlContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pCrlContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_READ_CTL)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pStoreCtlContext,

DWORD dwFlags,

PCCTL_CONTEXT *ppProvCtlContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_WRITE_CTL)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pCtlContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_DELETE_CTL)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pCtlContext,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pCtlContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_CONTROL)(

HCERTSTOREPROV hStoreProv,

DWORD dwFlags,

DWORD dwCtrlType,

void const *pvCtrlPara

);

typedef struct _CERT_STORE_PROV_FIND_INFO {

DWORD               cbSize;

DWORD               dwMsgAndCertEncodingType;

DWORD               dwFindFlags;

DWORD               dwFindType;

const void          *pvFindPara;

} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;

typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,

*PCCERT_STORE_PROV_FIND_INFO;

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_FIND_CERT)(

HCERTSTOREPROV hStoreProv,

PCCERT_STORE_PROV_FIND_INFO pFindInfo,

PCCERT_CONTEXT pPrevCertContext,

DWORD dwFlags,

void **ppvStoreProvFindInfo,

PCCERT_CONTEXT *ppProvCertContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_FREE_FIND_CERT)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pCertContext,

void *pvStoreProvFindInfo,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCERT_CONTEXT pCertContext,

DWORD dwPropId,

DWORD dwFlags,

void *pvData,

DWORD *pcbData

);

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_FIND_CRL)(

HCERTSTOREPROV hStoreProv,

PCCERT_STORE_PROV_FIND_INFO pFindInfo,

PCCRL_CONTEXT pPrevCrlContext,

DWORD dwFlags,

void **ppvStoreProvFindInfo,

PCCRL_CONTEXT *ppProvCrlContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_FREE_FIND_CRL)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pCrlContext,

void *pvStoreProvFindInfo,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCRL_CONTEXT pCrlContext,

DWORD dwPropId,

DWORD dwFlags,

void *pvData,

DWORD *pcbData

);

typedef   BOOL (__stdcall *PFN_CERT_STORE_PROV_FIND_CTL)(

HCERTSTOREPROV hStoreProv,

PCCERT_STORE_PROV_FIND_INFO pFindInfo,

PCCTL_CONTEXT pPrevCtlContext,

DWORD dwFlags,

void **ppvStoreProvFindInfo,

PCCTL_CONTEXT *ppProvCtlContext

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_FREE_FIND_CTL)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pCtlContext,

void *pvStoreProvFindInfo,

DWORD dwFlags

);

typedef BOOL (__stdcall *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)(

HCERTSTOREPROV hStoreProv,

PCCTL_CONTEXT pCtlContext,

DWORD dwPropId,

DWORD dwFlags,

void *pvData,

DWORD *pcbData

);

HCERTSTORE

__stdcall

CertDuplicateStore(

HCERTSTORE hCertStore

);

BOOL

__stdcall

CertSaveStore(

HCERTSTORE hCertStore,

DWORD dwEncodingType,

DWORD dwSaveAs,

DWORD dwSaveTo,

void *pvSaveToPara,

DWORD dwFlags

);

BOOL

__stdcall

CertCloseStore(

HCERTSTORE hCertStore,

DWORD dwFlags

);

PCCERT_CONTEXT

__stdcall

CertGetSubjectCertificateFromStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

PCERT_INFO pCertId           

);

PCCERT_CONTEXT

__stdcall

CertEnumCertificatesInStore(

HCERTSTORE hCertStore,

PCCERT_CONTEXT pPrevCertContext

);

PCCERT_CONTEXT

__stdcall

CertFindCertificateInStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

DWORD dwFindFlags,

DWORD dwFindType,

const void *pvFindPara,

PCCERT_CONTEXT pPrevCertContext

);

PCCERT_CONTEXT

__stdcall

CertGetIssuerCertificateFromStore(

HCERTSTORE hCertStore,

PCCERT_CONTEXT pSubjectContext,

PCCERT_CONTEXT pPrevIssuerContext,

DWORD *pdwFlags

);

BOOL

__stdcall

CertVerifySubjectCertificateContext(

PCCERT_CONTEXT pSubject,

PCCERT_CONTEXT pIssuer,

DWORD *pdwFlags

);

PCCERT_CONTEXT

__stdcall

CertDuplicateCertificateContext(

PCCERT_CONTEXT pCertContext

);

PCCERT_CONTEXT

__stdcall

CertCreateCertificateContext(

DWORD dwCertEncodingType,

const BYTE *pbCertEncoded,

DWORD cbCertEncoded

);

BOOL

__stdcall

CertFreeCertificateContext(

PCCERT_CONTEXT pCertContext

);

BOOL

__stdcall

CertSetCertificateContextProperty(

PCCERT_CONTEXT pCertContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

BOOL

__stdcall

CertGetCertificateContextProperty(

PCCERT_CONTEXT pCertContext,

DWORD dwPropId,

void *pvData,

DWORD *pcbData

);

DWORD

__stdcall

CertEnumCertificateContextProperties(

PCCERT_CONTEXT pCertContext,

DWORD dwPropId

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertCreateCTLEntryFromCertificateContextProperties(

PCCERT_CONTEXT pCertContext,

DWORD cOptAttr,

PCRYPT_ATTRIBUTE rgOptAttr,

DWORD dwFlags,

void *pvReserved,

PCTL_ENTRY pCtlEntry,

DWORD *pcbCtlEntry

);

BOOL

__stdcall

CertSetCertificateContextPropertiesFromCTLEntry(

PCCERT_CONTEXT pCertContext,

PCTL_ENTRY pCtlEntry,

DWORD dwFlags

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

PCCRL_CONTEXT

__stdcall

CertGetCRLFromStore(

HCERTSTORE hCertStore,

PCCERT_CONTEXT pIssuerContext,

PCCRL_CONTEXT pPrevCrlContext,

DWORD *pdwFlags

);

PCCRL_CONTEXT

__stdcall

CertEnumCRLsInStore(

HCERTSTORE hCertStore,

PCCRL_CONTEXT pPrevCrlContext

);

PCCRL_CONTEXT

__stdcall

CertFindCRLInStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

DWORD dwFindFlags,

DWORD dwFindType,

const void *pvFindPara,

PCCRL_CONTEXT pPrevCrlContext

);

typedef struct _CRL_FIND_ISSUED_FOR_PARA {

PCCERT_CONTEXT              pSubjectCert;

PCCERT_CONTEXT              pIssuerCert;

} CRL_FIND_ISSUED_FOR_PARA, *PCRL_FIND_ISSUED_FOR_PARA;

PCCRL_CONTEXT

__stdcall

CertDuplicateCRLContext(

PCCRL_CONTEXT pCrlContext

);

PCCRL_CONTEXT

__stdcall

CertCreateCRLContext(

DWORD dwCertEncodingType,

const BYTE *pbCrlEncoded,

DWORD cbCrlEncoded

);

BOOL

__stdcall

CertFreeCRLContext(

PCCRL_CONTEXT pCrlContext

);

BOOL

__stdcall

CertSetCRLContextProperty(

PCCRL_CONTEXT pCrlContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

BOOL

__stdcall

CertGetCRLContextProperty(

PCCRL_CONTEXT pCrlContext,

DWORD dwPropId,

void *pvData,

DWORD *pcbData

);

DWORD

__stdcall

CertEnumCRLContextProperties(

PCCRL_CONTEXT pCrlContext,

DWORD dwPropId

);

BOOL

__stdcall

CertFindCertificateInCRL(

PCCERT_CONTEXT pCert,

PCCRL_CONTEXT pCrlContext,

DWORD dwFlags,

void *pvReserved,

PCRL_ENTRY *ppCrlEntry

);

BOOL

__stdcall

CertIsValidCRLForCertificate(

PCCERT_CONTEXT pCert,

PCCRL_CONTEXT pCrl,

DWORD dwFlags,

void *pvReserved

);

BOOL

__stdcall

CertAddEncodedCertificateToStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

const BYTE *pbCertEncoded,

DWORD cbCertEncoded,

DWORD dwAddDisposition,

PCCERT_CONTEXT *ppCertContext

);

BOOL

__stdcall

CertAddCertificateContextToStore(

HCERTSTORE hCertStore,

PCCERT_CONTEXT pCertContext,

DWORD dwAddDisposition,

PCCERT_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertAddSerializedElementToStore(

HCERTSTORE hCertStore,

const BYTE *pbElement,

DWORD cbElement,

DWORD dwAddDisposition,

DWORD dwFlags,

DWORD dwContextTypeFlags,

DWORD *pdwContextType,

const void **ppvContext

);

BOOL

__stdcall

CertDeleteCertificateFromStore(

PCCERT_CONTEXT pCertContext

);

BOOL

__stdcall

CertAddEncodedCRLToStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

const BYTE *pbCrlEncoded,

DWORD cbCrlEncoded,

DWORD dwAddDisposition,

PCCRL_CONTEXT *ppCrlContext

);

BOOL

__stdcall

CertAddCRLContextToStore(

HCERTSTORE hCertStore,

PCCRL_CONTEXT pCrlContext,

DWORD dwAddDisposition,

PCCRL_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertDeleteCRLFromStore(

PCCRL_CONTEXT pCrlContext

);

BOOL

__stdcall

CertSerializeCertificateStoreElement(

PCCERT_CONTEXT pCertContext,

DWORD dwFlags,

BYTE *pbElement,

DWORD *pcbElement

);

BOOL

__stdcall

CertSerializeCRLStoreElement(

PCCRL_CONTEXT pCrlContext,

DWORD dwFlags,

BYTE *pbElement,

DWORD *pcbElement

);

PCCTL_CONTEXT

__stdcall

CertDuplicateCTLContext(

PCCTL_CONTEXT pCtlContext

);

PCCTL_CONTEXT

__stdcall

CertCreateCTLContext(

DWORD dwMsgAndCertEncodingType,

const BYTE *pbCtlEncoded,

DWORD cbCtlEncoded

);

BOOL

__stdcall

CertFreeCTLContext(

PCCTL_CONTEXT pCtlContext

);

BOOL

__stdcall

CertSetCTLContextProperty(

PCCTL_CONTEXT pCtlContext,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

BOOL

__stdcall

CertGetCTLContextProperty(

PCCTL_CONTEXT pCtlContext,

DWORD dwPropId,

void *pvData,

DWORD *pcbData

);

DWORD

__stdcall

CertEnumCTLContextProperties(

PCCTL_CONTEXT pCtlContext,

DWORD dwPropId

);

PCCTL_CONTEXT

__stdcall

CertEnumCTLsInStore(

HCERTSTORE hCertStore,

PCCTL_CONTEXT pPrevCtlContext

);

PCTL_ENTRY

__stdcall

CertFindSubjectInCTL(

DWORD dwEncodingType,

DWORD dwSubjectType,

void *pvSubject,

PCCTL_CONTEXT pCtlContext,

DWORD dwFlags

);

typedef struct _CTL_ANY_SUBJECT_INFO {

CRYPT_ALGORITHM_IDENTIFIER  SubjectAlgorithm;

CRYPT_DATA_BLOB             SubjectIdentifier;

} CTL_ANY_SUBJECT_INFO, *PCTL_ANY_SUBJECT_INFO;

PCCTL_CONTEXT

__stdcall

CertFindCTLInStore(

HCERTSTORE hCertStore,

DWORD dwMsgAndCertEncodingType,

DWORD dwFindFlags,

DWORD dwFindType,

const void *pvFindPara,

PCCTL_CONTEXT pPrevCtlContext

);

typedef struct _CTL_FIND_USAGE_PARA {

DWORD               cbSize;

CTL_USAGE           SubjectUsage;   

CRYPT_DATA_BLOB     ListIdentifier; 

PCERT_INFO          pSigner;        

} CTL_FIND_USAGE_PARA, *PCTL_FIND_USAGE_PARA;

typedef struct _CTL_FIND_SUBJECT_PARA {

DWORD                   cbSize;

PCTL_FIND_USAGE_PARA    pUsagePara; 

DWORD                   dwSubjectType;

void                    *pvSubject;

} CTL_FIND_SUBJECT_PARA, *PCTL_FIND_SUBJECT_PARA;

BOOL

__stdcall

CertAddEncodedCTLToStore(

HCERTSTORE hCertStore,

DWORD dwMsgAndCertEncodingType,

const BYTE *pbCtlEncoded,

DWORD cbCtlEncoded,

DWORD dwAddDisposition,

PCCTL_CONTEXT *ppCtlContext

);

BOOL

__stdcall

CertAddCTLContextToStore(

HCERTSTORE hCertStore,

PCCTL_CONTEXT pCtlContext,

DWORD dwAddDisposition,

PCCTL_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertSerializeCTLStoreElement(

PCCTL_CONTEXT pCtlContext,

DWORD dwFlags,

BYTE *pbElement,

DWORD *pcbElement

);

BOOL

__stdcall

CertDeleteCTLFromStore(

PCCTL_CONTEXT pCtlContext

);

BOOL

__stdcall

CertAddCertificateLinkToStore(

HCERTSTORE hCertStore,

PCCERT_CONTEXT pCertContext,

DWORD dwAddDisposition,

PCCERT_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertAddCRLLinkToStore(

HCERTSTORE hCertStore,

PCCRL_CONTEXT pCrlContext,

DWORD dwAddDisposition,

PCCRL_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertAddCTLLinkToStore(

HCERTSTORE hCertStore,

PCCTL_CONTEXT pCtlContext,

DWORD dwAddDisposition,

PCCTL_CONTEXT *ppStoreContext

);

BOOL

__stdcall

CertAddStoreToCollection(

HCERTSTORE hCollectionStore,

HCERTSTORE hSiblingStore,

DWORD dwUpdateFlags,

DWORD dwPriority

);

void

__stdcall

CertRemoveStoreFromCollection(

HCERTSTORE hCollectionStore,

HCERTSTORE hSiblingStore

);

BOOL

__stdcall

CertControlStore(

HCERTSTORE hCertStore,

DWORD dwFlags,

DWORD dwCtrlType,

void const *pvCtrlPara

);

BOOL

__stdcall

CertSetStoreProperty(

HCERTSTORE hCertStore,

DWORD dwPropId,

DWORD dwFlags,

const void *pvData

);

BOOL

__stdcall

CertGetStoreProperty(

HCERTSTORE hCertStore,

DWORD dwPropId,

void *pvData,

DWORD *pcbData

);

typedef BOOL (__stdcall *PFN_CERT_CREATE_CONTEXT_SORT_FUNC)(

DWORD cbTotalEncoded,

DWORD cbRemainEncoded,

DWORD cEntry,

void *pvSort

);

typedef struct _CERT_CREATE_CONTEXT_PARA {

DWORD                               cbSize;

PFN_CRYPT_FREE                      pfnFree;    

void                                *pvFree;    

PFN_CERT_CREATE_CONTEXT_SORT_FUNC   pfnSort;    

void                                *pvSort;    

} CERT_CREATE_CONTEXT_PARA, *PCERT_CREATE_CONTEXT_PARA;

const void *

__stdcall

CertCreateContext(

DWORD dwContextType,

DWORD dwEncodingType,

const BYTE *pbEncoded,

DWORD cbEncoded,

DWORD dwFlags,

PCERT_CREATE_CONTEXT_PARA pCreatePara

);

typedef struct _CERT_SYSTEM_STORE_INFO {

DWORD   cbSize;

} CERT_SYSTEM_STORE_INFO, *PCERT_SYSTEM_STORE_INFO;

typedef struct _CERT_PHYSICAL_STORE_INFO {

DWORD               cbSize;

LPSTR               pszOpenStoreProvider;   

DWORD               dwOpenEncodingType;     

DWORD               dwOpenFlags;            

CRYPT_DATA_BLOB     OpenParameters;         

DWORD               dwFlags;                

DWORD               dwPriority;             

} CERT_PHYSICAL_STORE_INFO, *PCERT_PHYSICAL_STORE_INFO;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertRegisterSystemStore(

const void *pvSystemStore,

DWORD dwFlags,

PCERT_SYSTEM_STORE_INFO pStoreInfo,

void *pvReserved

);

BOOL

__stdcall

CertRegisterPhysicalStore(

const void *pvSystemStore,

DWORD dwFlags,

LPCWSTR pwszStoreName,

PCERT_PHYSICAL_STORE_INFO pStoreInfo,

void *pvReserved

);

BOOL

__stdcall

CertUnregisterSystemStore(

const void *pvSystemStore,

DWORD dwFlags

);

BOOL

__stdcall

CertUnregisterPhysicalStore(

const void *pvSystemStore,

DWORD dwFlags,

LPCWSTR pwszStoreName

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef BOOL (__stdcall *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)(

LPCWSTR pwszStoreLocation,

DWORD dwFlags,

void *pvReserved,

void *pvArg

);

typedef BOOL (__stdcall *PFN_CERT_ENUM_SYSTEM_STORE)(

const void *pvSystemStore,

DWORD dwFlags,

PCERT_SYSTEM_STORE_INFO pStoreInfo,

void *pvReserved,

void *pvArg

);

typedef BOOL (__stdcall *PFN_CERT_ENUM_PHYSICAL_STORE)(

const void *pvSystemStore,

DWORD dwFlags,

LPCWSTR pwszStoreName,

PCERT_PHYSICAL_STORE_INFO pStoreInfo,

void *pvReserved,

void *pvArg

);

BOOL

__stdcall

CertEnumSystemStoreLocation(

DWORD dwFlags,

void *pvArg,

PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum

);

BOOL

__stdcall

CertEnumSystemStore(

DWORD dwFlags,

void *pvSystemStoreLocationPara,

void *pvArg,

PFN_CERT_ENUM_SYSTEM_STORE pfnEnum

);

BOOL

__stdcall

CertEnumPhysicalStore(

const void *pvSystemStore,

DWORD dwFlags,

void *pvArg,

PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum

);

BOOL

__stdcall

CertGetEnhancedKeyUsage(

PCCERT_CONTEXT pCertContext,

DWORD dwFlags,

PCERT_ENHKEY_USAGE pUsage,

DWORD *pcbUsage

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertSetEnhancedKeyUsage(

PCCERT_CONTEXT pCertContext,

PCERT_ENHKEY_USAGE pUsage

);

BOOL

__stdcall

CertAddEnhancedKeyUsageIdentifier(

PCCERT_CONTEXT pCertContext,

LPCSTR pszUsageIdentifier

);

BOOL

__stdcall

CertRemoveEnhancedKeyUsageIdentifier(

PCCERT_CONTEXT pCertContext,

LPCSTR pszUsageIdentifier

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CertGetValidUsages(

DWORD cCerts,

PCCERT_CONTEXT *rghCerts,

int *cNumOIDs,

LPSTR *rghOIDs,

DWORD *pcbOIDs);

BOOL

__stdcall

CryptMsgGetAndVerifySigner(

HCRYPTMSG hCryptMsg,

DWORD cSignerStore,

HCERTSTORE *rghSignerStore,

DWORD dwFlags,

PCCERT_CONTEXT *ppSigner,

DWORD *pdwSignerIndex

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptMsgSignCTL(

DWORD dwMsgEncodingType,

BYTE *pbCtlContent,

DWORD cbCtlContent,

PCMSG_SIGNED_ENCODE_INFO pSignInfo,

DWORD dwFlags,

BYTE *pbEncoded,

DWORD *pcbEncoded

);

BOOL

__stdcall

CryptMsgEncodeAndSignCTL(

DWORD dwMsgEncodingType,

PCTL_INFO pCtlInfo,

PCMSG_SIGNED_ENCODE_INFO pSignInfo,

DWORD dwFlags,

BYTE *pbEncoded,

DWORD *pcbEncoded

);

BOOL

__stdcall

CertFindSubjectInSortedCTL(

PCRYPT_DATA_BLOB pSubjectIdentifier,

PCCTL_CONTEXT pCtlContext,

DWORD dwFlags,

void *pvReserved,

PCRYPT_DER_BLOB pEncodedAttributes

);

BOOL

__stdcall

CertEnumSubjectInSortedCTL(

PCCTL_CONTEXT pCtlContext,

void **ppvNextSubject,

PCRYPT_DER_BLOB pSubjectIdentifier,

PCRYPT_DER_BLOB pEncodedAttributes

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef struct _CTL_VERIFY_USAGE_PARA {

DWORD                   cbSize;

CRYPT_DATA_BLOB         ListIdentifier;     

DWORD                   cCtlStore;

HCERTSTORE              *rghCtlStore;       

DWORD                   cSignerStore;

HCERTSTORE              *rghSignerStore;    

} CTL_VERIFY_USAGE_PARA, *PCTL_VERIFY_USAGE_PARA;

typedef struct _CTL_VERIFY_USAGE_STATUS {

DWORD                   cbSize;

DWORD                   dwError;

DWORD                   dwFlags;

PCCTL_CONTEXT           *ppCtl;             

DWORD                   dwCtlEntryIndex;

PCCERT_CONTEXT          *ppSigner;          

DWORD                   dwSignerIndex;

} CTL_VERIFY_USAGE_STATUS, *PCTL_VERIFY_USAGE_STATUS;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertVerifyCTLUsage(

DWORD dwEncodingType,

DWORD dwSubjectType,

void *pvSubject,

PCTL_USAGE pSubjectUsage,

DWORD dwFlags,

PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,

PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef struct _CERT_REVOCATION_CRL_INFO {

DWORD                   cbSize;

PCCRL_CONTEXT           pBaseCrlContext;

PCCRL_CONTEXT           pDeltaCrlContext;

PCRL_ENTRY              pCrlEntry;

BOOL                    fDeltaCrlEntry; 

} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;

typedef struct _CERT_REVOCATION_CHAIN_PARA

CERT_REVOCATION_CHAIN_PARA,

*PCERT_REVOCATION_CHAIN_PARA;

typedef struct _CERT_REVOCATION_PARA {

DWORD                       cbSize;

PCCERT_CONTEXT              pIssuerCert;

DWORD                       cCertStore;

HCERTSTORE                  *rgCertStore;

HCERTSTORE                  hCrlStore;

LPFILETIME                  pftTimeToUse;

} CERT_REVOCATION_PARA, *PCERT_REVOCATION_PARA;

typedef struct _CERT_REVOCATION_STATUS {

DWORD                   cbSize;

DWORD                   dwIndex;

DWORD                   dwError;

DWORD                   dwReason;

BOOL                    fHasFreshnessTime;

DWORD                   dwFreshnessTime;    

} CERT_REVOCATION_STATUS, *PCERT_REVOCATION_STATUS;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertVerifyRevocation(

DWORD dwEncodingType,

DWORD dwRevType,

DWORD cContext,

PVOID rgpvContext[],

DWORD dwFlags,

PCERT_REVOCATION_PARA pRevPara,

PCERT_REVOCATION_STATUS pRevStatus

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CertCompareIntegerBlob(

PCRYPT_INTEGER_BLOB pInt1,

PCRYPT_INTEGER_BLOB pInt2

);

BOOL

__stdcall

CertCompareCertificate(

DWORD dwCertEncodingType,

PCERT_INFO pCertId1,

PCERT_INFO pCertId2

);

BOOL

__stdcall

CertCompareCertificateName(

DWORD dwCertEncodingType,

PCERT_NAME_BLOB pCertName1,

PCERT_NAME_BLOB pCertName2

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertIsRDNAttrsInCertificateName(

DWORD dwCertEncodingType,

DWORD dwFlags,

PCERT_NAME_BLOB pCertName,

PCERT_RDN pRDN

);

BOOL

__stdcall

CertComparePublicKeyInfo(

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pPublicKey1,

PCERT_PUBLIC_KEY_INFO pPublicKey2

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

DWORD

__stdcall

CertGetPublicKeyLength(

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pPublicKey

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptVerifyCertificateSignature(

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwCertEncodingType,

const BYTE *pbEncoded,

DWORD cbEncoded,

PCERT_PUBLIC_KEY_INFO pPublicKey

);

BOOL

__stdcall

CryptVerifyCertificateSignatureEx(

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwCertEncodingType,

DWORD dwSubjectType,

void *pvSubject,

DWORD dwIssuerType,

void *pvIssuer,

DWORD dwFlags,

void *pvExtra

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO {

CRYPT_DATA_BLOB CertSignHashCNGAlgPropData;

CRYPT_DATA_BLOB CertIssuerPubKeyBitLengthPropData;

} CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO,

*PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO;

typedef struct _CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO {

DWORD   cCNGHashAlgid;

PCWSTR  *rgpwszCNGHashAlgid;

DWORD   dwWeakIndex;

} CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO,

*PCRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CertIsStrongHashToSign(

PCCERT_STRONG_SIGN_PARA pStrongSignPara,

LPCWSTR pwszCNGHashAlgid,

PCCERT_CONTEXT pSigningCert

);

BOOL

__stdcall

CryptHashToBeSigned(

HCRYPTPROV_LEGACY hCryptProv,

DWORD dwCertEncodingType,

const BYTE *pbEncoded,

DWORD cbEncoded,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

BOOL

__stdcall

CryptHashCertificate(

HCRYPTPROV_LEGACY hCryptProv,

ALG_ID Algid,

DWORD dwFlags,

const BYTE *pbEncoded,

DWORD cbEncoded,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptHashCertificate2(

LPCWSTR pwszCNGHashAlgid,

DWORD dwFlags,

void *pvReserved,

const BYTE *pbEncoded,

DWORD cbEncoded,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptSignCertificate(

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,

DWORD dwKeySpec,       

DWORD dwCertEncodingType,

const BYTE *pbEncodedToBeSigned,

DWORD cbEncodedToBeSigned,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

const void *pvHashAuxInfo,

BYTE *pbSignature,

DWORD *pcbSignature

);

BOOL

__stdcall

CryptSignAndEncodeCertificate(

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,

DWORD dwKeySpec,       

DWORD dwCertEncodingType,

LPCSTR lpszStructType,       

const void *pvStructInfo,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

const void *pvHashAuxInfo,

BYTE *pbEncoded,

DWORD *pcbEncoded

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef BOOL (__stdcall *PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC)(

DWORD dwCertEncodingType,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

void **ppvDecodedSignPara, 

LPWSTR *ppwszCNGHashAlgid      

);

typedef BOOL (__stdcall *PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC)(

NCRYPT_KEY_HANDLE hKey,

DWORD dwCertEncodingType,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

void *pvDecodedSignPara,

LPCWSTR pwszCNGPubKeyAlgid,    

LPCWSTR pwszCNGHashAlgid,

BYTE *pbComputedHash,

DWORD cbComputedHash,

BYTE *pbSignature,

DWORD *pcbSignature

);

typedef BOOL (__stdcall *PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC)(

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pPubKeyInfo,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

void *pvDecodedSignPara,

LPCWSTR pwszCNGPubKeyAlgid,    

LPCWSTR pwszCNGHashAlgid,

BYTE *pbComputedHash,

DWORD cbComputedHash,

BYTE *pbSignature,

DWORD cbSignature

);

LONG

__stdcall

CertVerifyTimeValidity(

LPFILETIME pTimeToVerify,

PCERT_INFO pCertInfo

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

LONG

__stdcall

CertVerifyCRLTimeValidity(

LPFILETIME pTimeToVerify,

PCRL_INFO pCrlInfo

);

BOOL

__stdcall

CertVerifyValidityNesting(

PCERT_INFO pSubjectInfo,

PCERT_INFO pIssuerInfo

);

BOOL

__stdcall

CertVerifyCRLRevocation(

DWORD dwCertEncodingType,

PCERT_INFO pCertId,          

DWORD cCrlInfo,

PCRL_INFO rgpCrlInfo[]

);

LPCSTR

__stdcall

CertAlgIdToOID(

DWORD dwAlgId

);

DWORD

__stdcall

CertOIDToAlgId(

LPCSTR pszObjId

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

PCERT_EXTENSION

__stdcall

CertFindExtension(

LPCSTR pszObjId,

DWORD cExtensions,

CERT_EXTENSION rgExtensions[]

);

PCRYPT_ATTRIBUTE

__stdcall

CertFindAttribute(

LPCSTR pszObjId,

DWORD cAttr,

CRYPT_ATTRIBUTE rgAttr[]

);

PCERT_RDN_ATTR

__stdcall

CertFindRDNAttr(

LPCSTR pszObjId,

PCERT_NAME_INFO pName

);

BOOL

__stdcall

CertGetIntendedKeyUsage(

DWORD dwCertEncodingType,

PCERT_INFO pCertInfo,

BYTE *pbKeyUsage,

DWORD cbKeyUsage

);

typedef void *HCRYPTDEFAULTCONTEXT;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptInstallDefaultContext(

HCRYPTPROV hCryptProv,

DWORD dwDefaultType,

const void *pvDefaultPara,

DWORD dwFlags,

void *pvReserved,

HCRYPTDEFAULTCONTEXT *phDefaultContext

);

typedef struct _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA {

DWORD               cOID;

LPSTR               *rgpszOID;

} CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA, *PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA;

BOOL

__stdcall

CryptUninstallDefaultContext(

HCRYPTDEFAULTCONTEXT hDefaultContext,

DWORD dwFlags,

void *pvReserved

);

BOOL

__stdcall

CryptExportPublicKeyInfo(

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,

DWORD dwKeySpec,       

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD *pcbInfo

);

BOOL

__stdcall

CryptExportPublicKeyInfoEx(

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,

DWORD dwKeySpec,       

DWORD dwCertEncodingType,

LPSTR pszPublicKeyObjId,

DWORD dwFlags,

void *pvAuxInfo,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD *pcbInfo

);

typedef BOOL (__stdcall *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC) (

NCRYPT_KEY_HANDLE hNCryptKey,

DWORD dwCertEncodingType,

LPSTR pszPublicKeyObjId,

DWORD dwFlags,

void *pvAuxInfo,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD *pcbInfo

);

BOOL

__stdcall

CryptExportPublicKeyInfoFromBCryptKeyHandle(

BCRYPT_KEY_HANDLE hBCryptKey,

DWORD dwCertEncodingType,

LPSTR pszPublicKeyObjId,

DWORD dwFlags,

void *pvAuxInfo,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD *pcbInfo

);

typedef BOOL (__stdcall *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC) (

BCRYPT_KEY_HANDLE hBCryptKey,

DWORD dwCertEncodingType,

LPSTR pszPublicKeyObjId,

DWORD dwFlags,

void *pvAuxInfo,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD *pcbInfo

);

BOOL

__stdcall

CryptImportPublicKeyInfo(

HCRYPTPROV hCryptProv,

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

HCRYPTKEY *phKey

);

BOOL

__stdcall

CryptImportPublicKeyInfoEx(

HCRYPTPROV hCryptProv,

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

ALG_ID aiKeyAlg,

DWORD dwFlags,

void *pvAuxInfo,

HCRYPTKEY *phKey

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptImportPublicKeyInfoEx2(

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD dwFlags,

void *pvAuxInfo,

BCRYPT_KEY_HANDLE *phKey

);

typedef BOOL (__stdcall *PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC) (

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

DWORD dwFlags,

void *pvAuxInfo,

BCRYPT_KEY_HANDLE *phKey

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptAcquireCertificatePrivateKey(

PCCERT_CONTEXT pCert,

DWORD dwFlags,

void *pvParameters,

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey,

DWORD *pdwKeySpec,

BOOL *pfCallerFreeProvOrNCryptKey

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptFindCertificateKeyProvInfo(

PCCERT_CONTEXT pCert,

DWORD dwFlags,

void *pvReserved

);

typedef BOOL (__stdcall *PFN_IMPORT_PRIV_KEY_FUNC) (

HCRYPTPROV hCryptProv,                     

CRYPT_PRIVATE_KEY_INFO* pPrivateKeyInfo,   

DWORD dwFlags,                             

void* pvAuxInfo                        

);

BOOL

__stdcall

CryptImportPKCS8(

CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams,    

DWORD dwFlags,                                     

HCRYPTPROV *phCryptProv,                      

void* pvAuxInfo                                

);

typedef BOOL (__stdcall *PFN_EXPORT_PRIV_KEY_FUNC) (

HCRYPTPROV hCryptProv,         

DWORD dwKeySpec,               

LPSTR pszPrivateKeyObjId,      

DWORD dwFlags,                 

void* pvAuxInfo,           

CRYPT_PRIVATE_KEY_INFO* pPrivateKeyInfo,  

DWORD* pcbPrivateKeyInfo    

);

BOOL

__stdcall

CryptExportPKCS8(

HCRYPTPROV hCryptProv,                                     

DWORD dwKeySpec,                                           

LPSTR pszPrivateKeyObjId,                                  

DWORD dwFlags,                                             

void* pvAuxInfo,                                       

BYTE* pbPrivateKeyBlob,   

DWORD *pcbPrivateKeyBlob                                

);

#pragma endregion

#pragma region Desktop or Games Family

BOOL

__stdcall

CryptExportPKCS8Ex(

CRYPT_PKCS8_EXPORT_PARAMS* psExportParams,                 

DWORD dwFlags,                                             

void* pvAuxInfo,                                       

BYTE* pbPrivateKeyBlob,   

DWORD* pcbPrivateKeyBlob                                

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptHashPublicKeyInfo(

HCRYPTPROV_LEGACY hCryptProv,

ALG_ID Algid,

DWORD dwFlags,

DWORD dwCertEncodingType,

PCERT_PUBLIC_KEY_INFO pInfo,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

DWORD

__stdcall

CertRDNValueToStrA(

DWORD dwValueType,

PCERT_RDN_VALUE_BLOB pValue,

LPSTR psz,

DWORD csz

);

DWORD

__stdcall

CertRDNValueToStrW(

DWORD dwValueType,

PCERT_RDN_VALUE_BLOB pValue,

LPWSTR psz,

DWORD csz

);

DWORD

__stdcall

CertNameToStrA(

DWORD dwCertEncodingType,

PCERT_NAME_BLOB pName,

DWORD dwStrType,

LPSTR psz,

DWORD csz

);

DWORD

__stdcall

CertNameToStrW(

DWORD dwCertEncodingType,

PCERT_NAME_BLOB pName,

DWORD dwStrType,

LPWSTR psz,

DWORD csz

);

BOOL

__stdcall

CertStrToNameA(

DWORD dwCertEncodingType,

LPCSTR pszX500,

DWORD dwStrType,

void *pvReserved,

BYTE *pbEncoded,

DWORD *pcbEncoded,

LPCSTR *ppszError

);

BOOL

__stdcall

CertStrToNameW(

DWORD dwCertEncodingType,

LPCWSTR pszX500,

DWORD dwStrType,

void *pvReserved,

BYTE *pbEncoded,

DWORD *pcbEncoded,

LPCWSTR *ppszError

);

DWORD

__stdcall

CertGetNameStringA(

PCCERT_CONTEXT pCertContext,

DWORD dwType,

DWORD dwFlags,

void *pvTypePara,

LPSTR pszNameString,

DWORD cchNameString

);

DWORD

__stdcall

CertGetNameStringW(

PCCERT_CONTEXT pCertContext,

DWORD dwType,

DWORD dwFlags,

void *pvTypePara,

LPWSTR pszNameString,

DWORD cchNameString

);

typedef PCCERT_CONTEXT (__stdcall *PFN_CRYPT_GET_SIGNER_CERTIFICATE)(

void *pvGetArg,

DWORD dwCertEncodingType,

PCERT_INFO pSignerId,    

HCERTSTORE hMsgCertStore

);

typedef struct _CRYPT_SIGN_MESSAGE_PARA {

DWORD                       cbSize;

DWORD                       dwMsgEncodingType;

PCCERT_CONTEXT              pSigningCert;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

void                        *pvHashAuxInfo;

DWORD                       cMsgCert;

PCCERT_CONTEXT              *rgpMsgCert;

DWORD                       cMsgCrl;

PCCRL_CONTEXT               *rgpMsgCrl;

DWORD                       cAuthAttr;

PCRYPT_ATTRIBUTE            rgAuthAttr;

DWORD                       cUnauthAttr;

PCRYPT_ATTRIBUTE            rgUnauthAttr;

DWORD                       dwFlags;

DWORD                       dwInnerContentType;

} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

typedef struct _CRYPT_VERIFY_MESSAGE_PARA {

DWORD                               cbSize;

DWORD                               dwMsgAndCertEncodingType;

HCRYPTPROV_LEGACY                   hCryptProv;

PFN_CRYPT_GET_SIGNER_CERTIFICATE    pfnGetSignerCertificate;

void                                *pvGetArg;

} CRYPT_VERIFY_MESSAGE_PARA, *PCRYPT_VERIFY_MESSAGE_PARA;

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {

DWORD                       cbSize;

DWORD                       dwMsgEncodingType;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;

void                        *pvEncryptionAuxInfo;

DWORD                       dwFlags;

DWORD                       dwInnerContentType;

} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {

DWORD                   cbSize;

DWORD                   dwMsgAndCertEncodingType;

DWORD                   cCertStore;

HCERTSTORE              *rghCertStore;

} CRYPT_DECRYPT_MESSAGE_PARA, *PCRYPT_DECRYPT_MESSAGE_PARA;

typedef struct _CRYPT_HASH_MESSAGE_PARA {

DWORD                       cbSize;

DWORD                       dwMsgEncodingType;

HCRYPTPROV_LEGACY           hCryptProv;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

void                        *pvHashAuxInfo;

} CRYPT_HASH_MESSAGE_PARA, *PCRYPT_HASH_MESSAGE_PARA;

typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA {

DWORD                       cbSize;

DWORD                       dwMsgAndCertEncodingType;

union {

HCRYPTPROV                  hCryptProv;

NCRYPT_KEY_HANDLE           hNCryptKey;

} DUMMYUNIONNAME;

DWORD                       dwKeySpec;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

void                        *pvHashAuxInfo;

CRYPT_ALGORITHM_IDENTIFIER  PubKeyAlgorithm;

} CRYPT_KEY_SIGN_MESSAGE_PARA, *PCRYPT_KEY_SIGN_MESSAGE_PARA;

typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {

DWORD                   cbSize;

DWORD                   dwMsgEncodingType;

HCRYPTPROV_LEGACY       hCryptProv;

} CRYPT_KEY_VERIFY_MESSAGE_PARA, *PCRYPT_KEY_VERIFY_MESSAGE_PARA;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptSignMessage(

PCRYPT_SIGN_MESSAGE_PARA pSignPara,

BOOL fDetachedSignature,

DWORD cToBeSigned,

const BYTE *rgpbToBeSigned[],

DWORD rgcbToBeSigned[],

BYTE *pbSignedBlob,

DWORD *pcbSignedBlob

);

BOOL

__stdcall

CryptVerifyMessageSignature(

PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,

DWORD dwSignerIndex,

const BYTE *pbSignedBlob,

DWORD cbSignedBlob,

BYTE *pbDecoded,

DWORD *pcbDecoded,

PCCERT_CONTEXT *ppSignerCert

);

LONG

__stdcall

CryptGetMessageSignerCount(

DWORD dwMsgEncodingType,

const BYTE *pbSignedBlob,

DWORD cbSignedBlob

);

HCERTSTORE

__stdcall

CryptGetMessageCertificates(

DWORD dwMsgAndCertEncodingType,

HCRYPTPROV_LEGACY hCryptProv,           

DWORD dwFlags,                   

const BYTE *pbSignedBlob,

DWORD cbSignedBlob

);

BOOL

__stdcall

CryptVerifyDetachedMessageSignature(

PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,

DWORD dwSignerIndex,

const BYTE *pbDetachedSignBlob,

DWORD cbDetachedSignBlob,

DWORD cToBeSigned,

const BYTE *rgpbToBeSigned[],

DWORD rgcbToBeSigned[],

PCCERT_CONTEXT *ppSignerCert

);

BOOL

__stdcall

CryptEncryptMessage(

PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,

DWORD cRecipientCert,

PCCERT_CONTEXT rgpRecipientCert[],

const BYTE *pbToBeEncrypted,

DWORD cbToBeEncrypted,

BYTE *pbEncryptedBlob,

DWORD *pcbEncryptedBlob

);

BOOL

__stdcall

CryptDecryptMessage(

PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,

const BYTE *pbEncryptedBlob,

DWORD cbEncryptedBlob,

BYTE *pbDecrypted,

DWORD *pcbDecrypted,

PCCERT_CONTEXT *ppXchgCert

);

BOOL

__stdcall

CryptSignAndEncryptMessage(

PCRYPT_SIGN_MESSAGE_PARA pSignPara,

PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,

DWORD cRecipientCert,

PCCERT_CONTEXT rgpRecipientCert[],

const BYTE *pbToBeSignedAndEncrypted,

DWORD cbToBeSignedAndEncrypted,

BYTE *pbSignedAndEncryptedBlob,

DWORD *pcbSignedAndEncryptedBlob

);

BOOL

__stdcall

CryptDecryptAndVerifyMessageSignature(

PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,

PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,

DWORD dwSignerIndex,

const BYTE *pbEncryptedBlob,

DWORD cbEncryptedBlob,

BYTE *pbDecrypted,

DWORD *pcbDecrypted,

PCCERT_CONTEXT *ppXchgCert,

PCCERT_CONTEXT *ppSignerCert

);

BOOL

__stdcall

CryptDecodeMessage(

DWORD dwMsgTypeFlags,

PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,

PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,

DWORD dwSignerIndex,

const BYTE *pbEncodedBlob,

DWORD cbEncodedBlob,

DWORD dwPrevInnerContentType,

DWORD *pdwMsgType,

DWORD *pdwInnerContentType,

BYTE *pbDecoded,

DWORD *pcbDecoded,

PCCERT_CONTEXT *ppXchgCert,

PCCERT_CONTEXT *ppSignerCert

);

BOOL

__stdcall

CryptHashMessage(

PCRYPT_HASH_MESSAGE_PARA pHashPara,

BOOL fDetachedHash,

DWORD cToBeHashed,

const BYTE *rgpbToBeHashed[],

DWORD rgcbToBeHashed[],

BYTE *pbHashedBlob,

DWORD *pcbHashedBlob,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

BOOL

__stdcall

CryptVerifyMessageHash(

PCRYPT_HASH_MESSAGE_PARA pHashPara,

BYTE *pbHashedBlob,

DWORD cbHashedBlob,

BYTE *pbToBeHashed,

DWORD *pcbToBeHashed,

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

BOOL

__stdcall

CryptVerifyDetachedMessageHash(

PCRYPT_HASH_MESSAGE_PARA pHashPara,

BYTE *pbDetachedHashBlob,

DWORD cbDetachedHashBlob,

DWORD cToBeHashed,

const BYTE *rgpbToBeHashed[],

DWORD rgcbToBeHashed[],

BYTE *pbComputedHash,

DWORD *pcbComputedHash

);

BOOL

__stdcall

CryptSignMessageWithKey(

PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,

const BYTE *pbToBeSigned,

DWORD cbToBeSigned,

BYTE *pbSignedBlob,

DWORD *pcbSignedBlob

);

BOOL

__stdcall

CryptVerifyMessageSignatureWithKey(

PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,

PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,

const BYTE *pbSignedBlob,

DWORD cbSignedBlob,

BYTE *pbDecoded,

DWORD *pcbDecoded

);

HCERTSTORE

__stdcall

CertOpenSystemStoreA(

HCRYPTPROV_LEGACY      hProv,

LPCSTR            szSubsystemProtocol

);

HCERTSTORE

__stdcall

CertOpenSystemStoreW(

HCRYPTPROV_LEGACY      hProv,

LPCWSTR            szSubsystemProtocol

);

BOOL

__stdcall

CertAddEncodedCertificateToSystemStoreA(

LPCSTR            szCertStoreName,

const BYTE *    pbCertEncoded,

DWORD           cbCertEncoded

);

BOOL

__stdcall

CertAddEncodedCertificateToSystemStoreW(

LPCWSTR            szCertStoreName,

const BYTE *    pbCertEncoded,

DWORD           cbCertEncoded

);

#pragma endregion

#pragma region Desktop Family or Wintrust Package or Games Family

typedef struct _CERT_CHAIN {

DWORD                   cCerts;     

PCERT_BLOB              certs;      

CRYPT_KEY_PROV_INFO     keyLocatorInfo; 

} CERT_CHAIN, *PCERT_CHAIN;

HRESULT

__stdcall

FindCertsByIssuer(

PCERT_CHAIN pCertChains,

DWORD *pcbCertChains,

DWORD *pcCertChains,        

BYTE* pbEncodedIssuerName,   

DWORD cbEncodedIssuerName,   

LPCWSTR pwszPurpose,     

DWORD dwKeySpec              

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

BOOL

__stdcall

CryptQueryObject(

DWORD                    dwObjectType,

const void               *pvObject,

DWORD                    dwExpectedContentTypeFlags,

DWORD                    dwExpectedFormatTypeFlags,

DWORD                    dwFlags,

DWORD               *pdwMsgAndCertEncodingType,

DWORD               *pdwContentType,

DWORD               *pdwFormatType,

HCERTSTORE          *phCertStore,

HCRYPTMSG           *phMsg,

const void **ppvContext

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

LPVOID

__stdcall

CryptMemAlloc (

ULONG cbSize

);

LPVOID

__stdcall

CryptMemRealloc (

LPVOID pv,

ULONG cbSize

);

VOID

__stdcall

CryptMemFree (

LPVOID pv

);

typedef HANDLE HCRYPTASYNC, *PHCRYPTASYNC;

typedef VOID (__stdcall *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) (

LPSTR pszParamOid,

LPVOID pvParam

);

BOOL

__stdcall

CryptCreateAsyncHandle (

DWORD dwFlags,

PHCRYPTASYNC phAsync

);

BOOL

__stdcall

CryptSetAsyncParam (

HCRYPTASYNC hAsync,

LPSTR pszParamOid,

LPVOID pvParam,

PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree

);

BOOL

__stdcall

CryptGetAsyncParam (

HCRYPTASYNC hAsync,

LPSTR pszParamOid,

LPVOID* ppvParam,

PFN_CRYPT_ASYNC_PARAM_FREE_FUNC* ppfnFree

);

BOOL

__stdcall

CryptCloseAsyncHandle (

HCRYPTASYNC hAsync

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef struct _CRYPT_BLOB_ARRAY {

DWORD            cBlob;

PCRYPT_DATA_BLOB rgBlob;

} CRYPT_BLOB_ARRAY, *PCRYPT_BLOB_ARRAY;

typedef struct _CRYPT_CREDENTIALS {

DWORD  cbSize;

LPCSTR pszCredentialsOid;

LPVOID pvCredentials;

} CRYPT_CREDENTIALS, *PCRYPT_CREDENTIALS;

typedef struct _CRYPT_PASSWORD_CREDENTIALSA {

DWORD   cbSize;

LPSTR   pszUsername;

LPSTR   pszPassword;

} CRYPT_PASSWORD_CREDENTIALSA, *PCRYPT_PASSWORD_CREDENTIALSA;

typedef struct _CRYPT_PASSWORD_CREDENTIALSW {

DWORD   cbSize;

LPWSTR  pszUsername;

LPWSTR  pszPassword;

} CRYPT_PASSWORD_CREDENTIALSW, *PCRYPT_PASSWORD_CREDENTIALSW;

typedef CRYPT_PASSWORD_CREDENTIALSA CRYPT_PASSWORD_CREDENTIALS;

typedef PCRYPT_PASSWORD_CREDENTIALSA PCRYPT_PASSWORD_CREDENTIALS;

typedef VOID (__stdcall *PFN_FREE_ENCODED_OBJECT_FUNC) (

LPCSTR pszObjectOid,

PCRYPT_BLOB_ARRAY pObject,

LPVOID pvFreeContext

);

typedef struct _CRYPTNET_URL_CACHE_PRE_FETCH_INFO {

DWORD           cbSize;

DWORD           dwObjectType;

DWORD           dwError;

DWORD           dwReserved;

FILETIME        ThisUpdateTime;

FILETIME        NextUpdateTime;

FILETIME        PublishTime;    

} CRYPTNET_URL_CACHE_PRE_FETCH_INFO, *PCRYPTNET_URL_CACHE_PRE_FETCH_INFO;

typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO {

DWORD           cbSize;

DWORD           dwExemptSeconds;

FILETIME        ExpireTime;

} CRYPTNET_URL_CACHE_FLUSH_INFO, *PCRYPTNET_URL_CACHE_FLUSH_INFO;

typedef struct _CRYPTNET_URL_CACHE_RESPONSE_INFO {

DWORD           cbSize;

WORD            wResponseType;

WORD            wResponseFlags;

FILETIME        LastModifiedTime;

DWORD           dwMaxAge;

LPCWSTR         pwszETag;

DWORD           dwProxyId;

} CRYPTNET_URL_CACHE_RESPONSE_INFO, *PCRYPTNET_URL_CACHE_RESPONSE_INFO;

typedef struct _CRYPT_RETRIEVE_AUX_INFO {

DWORD                               cbSize;

FILETIME                            *pLastSyncTime;

DWORD                               dwMaxUrlRetrievalByteCount;

PCRYPTNET_URL_CACHE_PRE_FETCH_INFO  pPreFetchInfo;

PCRYPTNET_URL_CACHE_FLUSH_INFO      pFlushInfo;

PCRYPTNET_URL_CACHE_RESPONSE_INFO   *ppResponseInfo;

LPWSTR                              pwszCacheFileNamePrefix;

LPFILETIME                          pftCacheResync;

BOOL                                fProxyCacheRetrieval;

DWORD                               dwHttpStatusCode;

LPWSTR                              *ppwszErrorResponseHeaders;

PCRYPT_DATA_BLOB                    *ppErrorContentBlob;

} CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptRetrieveObjectByUrlA (

LPCSTR pszUrl,

LPCSTR pszObjectOid,

DWORD dwRetrievalFlags,

DWORD dwTimeout,                     

LPVOID* ppvObject,

HCRYPTASYNC hAsyncRetrieve,

PCRYPT_CREDENTIALS pCredentials,

LPVOID pvVerify,

PCRYPT_RETRIEVE_AUX_INFO pAuxInfo

);

BOOL

__stdcall

CryptRetrieveObjectByUrlW (

LPCWSTR pszUrl,

LPCSTR pszObjectOid,

DWORD dwRetrievalFlags,

DWORD dwTimeout,                     

LPVOID* ppvObject,

HCRYPTASYNC hAsyncRetrieve,

PCRYPT_CREDENTIALS pCredentials,

LPVOID pvVerify,

PCRYPT_RETRIEVE_AUX_INFO pAuxInfo

);

typedef BOOL (__stdcall *PFN_CRYPT_CANCEL_RETRIEVAL)(

DWORD dwFlags,

void  *pvArg

);

BOOL

__stdcall

CryptInstallCancelRetrieval(

PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel,

const void *pvArg,

DWORD dwFlags,

void *pvReserved

);

BOOL

__stdcall

CryptUninstallCancelRetrieval(

DWORD dwFlags,

void *pvReserved

);

#pragma endregion

#pragma region Desktop or Games Family

BOOL

__stdcall

CryptCancelAsyncRetrieval (

HCRYPTASYNC hAsyncRetrieval

);

typedef VOID (__stdcall *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC) (

LPVOID pvCompletion,

DWORD dwCompletionCode,

LPCSTR pszUrl,

LPSTR pszObjectOid,

LPVOID pvObject

);

typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION {

PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion;

LPVOID pvCompletion;

} CRYPT_ASYNC_RETRIEVAL_COMPLETION, *PCRYPT_ASYNC_RETRIEVAL_COMPLETION;

typedef BOOL (__stdcall *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC) (

HCRYPTASYNC hAsyncRetrieve

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

typedef struct _CRYPT_URL_ARRAY {

DWORD   cUrl;

LPWSTR* rgwszUrl;

} CRYPT_URL_ARRAY, *PCRYPT_URL_ARRAY;

typedef struct _CRYPT_URL_INFO {

DWORD   cbSize;

DWORD   dwSyncDeltaTime;

DWORD   cGroup;

DWORD   *rgcGroupEntry;

} CRYPT_URL_INFO, *PCRYPT_URL_INFO;

BOOL

__stdcall

CryptGetObjectUrl (

LPCSTR pszUrlOid,

LPVOID pvPara,

DWORD dwFlags,

PCRYPT_URL_ARRAY pUrlArray,

DWORD* pcbUrlArray,

PCRYPT_URL_INFO pUrlInfo,

DWORD* pcbUrlInfo,

LPVOID pvReserved

);

typedef struct _CERT_CRL_CONTEXT_PAIR {

PCCERT_CONTEXT          pCertContext;

PCCRL_CONTEXT           pCrlContext;

} CERT_CRL_CONTEXT_PAIR, *PCERT_CRL_CONTEXT_PAIR;

typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR;

#pragma endregion

#pragma region Desktop or Games Family

typedef struct _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO {

DWORD                       cbSize;

int                         iDeltaCrlIndicator;

LPFILETIME                  pftCacheResync;

LPFILETIME                  pLastSyncTime;

LPFILETIME                  pMaxAgeTime;

PCERT_REVOCATION_CHAIN_PARA pChainPara;

PCRYPT_INTEGER_BLOB pDeltaCrlIndicator;

} CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO,

*PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO;

BOOL

__stdcall

CryptGetTimeValidObject (

LPCSTR pszTimeValidOid,

LPVOID pvPara,

PCCERT_CONTEXT pIssuer,

LPFILETIME pftValidFor,

DWORD dwFlags,

DWORD dwTimeout,                         

LPVOID* ppvObject,

PCRYPT_CREDENTIALS pCredentials,

PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo

);

BOOL

__stdcall

CryptFlushTimeValidObject (

LPCSTR pszFlushTimeValidOid,

LPVOID pvPara,

PCCERT_CONTEXT pIssuer,

DWORD dwFlags,

LPVOID pvReserved

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

PCCERT_CONTEXT

__stdcall

CertCreateSelfSignCertificate(

HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,

PCERT_NAME_BLOB             pSubjectIssuerBlob,

DWORD                       dwFlags,

PCRYPT_KEY_PROV_INFO        pKeyProvInfo,

PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,

PSYSTEMTIME                 pStartTime,

PSYSTEMTIME                 pEndTime,

PCERT_EXTENSIONS            pExtensions

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptGetKeyIdentifierProperty(

const CRYPT_HASH_BLOB *pKeyIdentifier,

DWORD dwPropId,

DWORD dwFlags,

LPCWSTR pwszComputerName,

void *pvReserved,

void *pvData,

DWORD *pcbData

);

BOOL

__stdcall

CryptSetKeyIdentifierProperty(

const CRYPT_HASH_BLOB *pKeyIdentifier,

DWORD dwPropId,

DWORD dwFlags,

LPCWSTR pwszComputerName,

void *pvReserved,

const void *pvData

);

typedef BOOL (__stdcall *PFN_CRYPT_ENUM_KEYID_PROP)(

const CRYPT_HASH_BLOB *pKeyIdentifier,

DWORD dwFlags,

void *pvReserved,

void *pvArg,

DWORD cProp,

DWORD *rgdwPropId,

void **rgpvData,

DWORD *rgcbData

);

BOOL

__stdcall

CryptEnumKeyIdentifierProperties(

const CRYPT_HASH_BLOB *pKeyIdentifier,

DWORD dwPropId,

DWORD dwFlags,

LPCWSTR pwszComputerName,

void *pvReserved,

void *pvArg,

PFN_CRYPT_ENUM_KEYID_PROP pfnEnum

);

BOOL

__stdcall

CryptCreateKeyIdentifierFromCSP(

DWORD dwCertEncodingType,

LPCSTR pszPubKeyOID,

const PUBLICKEYSTRUC *pPubKeyStruc,

DWORD cbPubKeyStruc,

DWORD dwFlags,

void *pvReserved,

BYTE *pbHash,

DWORD *pcbHash

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef HANDLE HCERTCHAINENGINE;

typedef struct _CERT_CHAIN_ENGINE_CONFIG {

DWORD       cbSize;

HCERTSTORE  hRestrictedRoot;

HCERTSTORE  hRestrictedTrust;

HCERTSTORE  hRestrictedOther;

DWORD       cAdditionalStore;

HCERTSTORE* rghAdditionalStore;

DWORD       dwFlags;

DWORD       dwUrlRetrievalTimeout;      

DWORD       MaximumCachedCertificates;

DWORD       CycleDetectionModulus;

HCERTSTORE  hExclusiveRoot;

HCERTSTORE  hExclusiveTrustedPeople;

DWORD       dwExclusiveFlags;

} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;

BOOL

__stdcall

CertCreateCertificateChainEngine (

PCERT_CHAIN_ENGINE_CONFIG pConfig,

HCERTCHAINENGINE* phChainEngine

);

VOID

__stdcall

CertFreeCertificateChainEngine (

HCERTCHAINENGINE hChainEngine

);

BOOL

__stdcall

CertResyncCertificateChainEngine (

HCERTCHAINENGINE hChainEngine

);

typedef struct _CERT_TRUST_STATUS {

DWORD dwErrorStatus;

DWORD dwInfoStatus;

} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;

typedef struct _CERT_REVOCATION_INFO {

DWORD                       cbSize;

DWORD                       dwRevocationResult;

LPCSTR                      pszRevocationOid;

LPVOID                      pvOidSpecificInfo;

BOOL                        fHasFreshnessTime;

DWORD                       dwFreshnessTime;    

PCERT_REVOCATION_CRL_INFO   pCrlInfo;

} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;

typedef struct _CERT_TRUST_LIST_INFO {

DWORD         cbSize;

PCTL_ENTRY    pCtlEntry;

PCCTL_CONTEXT pCtlContext;

} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;

typedef struct _CERT_CHAIN_ELEMENT {

DWORD                 cbSize;

PCCERT_CONTEXT        pCertContext;

CERT_TRUST_STATUS     TrustStatus;

PCERT_REVOCATION_INFO pRevocationInfo;

PCERT_ENHKEY_USAGE    pIssuanceUsage;       

PCERT_ENHKEY_USAGE    pApplicationUsage;    

LPCWSTR               pwszExtendedErrorInfo;    

} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;

typedef const CERT_CHAIN_ELEMENT* PCCERT_CHAIN_ELEMENT;

typedef struct _CERT_SIMPLE_CHAIN {

DWORD                 cbSize;

CERT_TRUST_STATUS     TrustStatus;

DWORD                 cElement;

PCERT_CHAIN_ELEMENT*  rgpElement;

PCERT_TRUST_LIST_INFO pTrustListInfo;

BOOL                   fHasRevocationFreshnessTime;

DWORD                  dwRevocationFreshnessTime;    

} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;

typedef const CERT_SIMPLE_CHAIN* PCCERT_SIMPLE_CHAIN;

typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;

typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT;

struct _CERT_CHAIN_CONTEXT {

DWORD                   cbSize;

CERT_TRUST_STATUS       TrustStatus;

DWORD                   cChain;

PCERT_SIMPLE_CHAIN*     rgpChain;

DWORD                   cLowerQualityChainContext;

PCCERT_CHAIN_CONTEXT*   rgpLowerQualityChainContext;

BOOL                    fHasRevocationFreshnessTime;

DWORD                   dwRevocationFreshnessTime;    

DWORD                   dwCreateFlags;

GUID                    ChainId;

};

typedef struct _CERT_USAGE_MATCH {

DWORD             dwType;

CERT_ENHKEY_USAGE Usage;

} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;

typedef struct _CTL_USAGE_MATCH {

DWORD     dwType;

CTL_USAGE Usage;

} CTL_USAGE_MATCH, *PCTL_USAGE_MATCH;

typedef struct _CERT_CHAIN_PARA {

DWORD            cbSize;

CERT_USAGE_MATCH RequestedUsage;

} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;

BOOL

__stdcall

CertGetCertificateChain (

HCERTCHAINENGINE hChainEngine,

PCCERT_CONTEXT pCertContext,

LPFILETIME pTime,

HCERTSTORE hAdditionalStore,

PCERT_CHAIN_PARA pChainPara,

DWORD dwFlags,

LPVOID pvReserved,

PCCERT_CHAIN_CONTEXT* ppChainContext

);

VOID

__stdcall

CertFreeCertificateChain (

PCCERT_CHAIN_CONTEXT pChainContext

);

PCCERT_CHAIN_CONTEXT

__stdcall

CertDuplicateCertificateChain (

PCCERT_CHAIN_CONTEXT pChainContext

);

struct _CERT_REVOCATION_CHAIN_PARA {

DWORD                       cbSize;

HCERTCHAINENGINE            hChainEngine;

HCERTSTORE                  hAdditionalStore;

DWORD                       dwChainFlags;

DWORD                       dwUrlRetrievalTimeout;     

LPFILETIME                  pftCurrentTime;

LPFILETIME                  pftCacheResync;

DWORD                       cbMaxUrlRetrievalByteCount;

};

typedef struct _CRL_REVOCATION_INFO {

PCRL_ENTRY           pCrlEntry;

PCCRL_CONTEXT        pCrlContext;

PCCERT_CHAIN_CONTEXT pCrlIssuerChain;

} CRL_REVOCATION_INFO, *PCRL_REVOCATION_INFO;

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

PCCERT_CHAIN_CONTEXT

__stdcall

CertFindChainInStore(

HCERTSTORE hCertStore,

DWORD dwCertEncodingType,

DWORD dwFindFlags,

DWORD dwFindType,

const void *pvFindPara,

PCCERT_CHAIN_CONTEXT pPrevChainContext

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef BOOL (__stdcall *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(

PCCERT_CONTEXT pCert,

void *pvFindArg

);

typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {

DWORD                                   cbSize;

LPCSTR                                  pszUsageIdentifier;

DWORD                                   dwKeySpec;

DWORD                                   dwAcquirePrivateKeyFlags;

DWORD                                   cIssuer;

CERT_NAME_BLOB                          *rgIssuer;

PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback;

void                                    *pvFindArg;

} CERT_CHAIN_FIND_ISSUER_PARA, *PCERT_CHAIN_FIND_ISSUER_PARA,

CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;

typedef struct _CERT_CHAIN_POLICY_PARA {

DWORD                   cbSize;

DWORD                   dwFlags;

void                    *pvExtraPolicyPara;     

} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;

typedef struct _CERT_CHAIN_POLICY_STATUS {

DWORD                   cbSize;

DWORD                   dwError;

LONG                    lChainIndex;

LONG                    lElementIndex;

void                    *pvExtraPolicyStatus;   

} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;

BOOL

__stdcall

CertVerifyCertificateChainPolicy(

LPCSTR pszPolicyOID,

PCCERT_CHAIN_CONTEXT pChainContext,

PCERT_CHAIN_POLICY_PARA pPolicyPara,

PCERT_CHAIN_POLICY_STATUS pPolicyStatus

);

typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {

DWORD               cbSize;

DWORD               dwRegPolicySettings;

PCMSG_SIGNER_INFO   pSignerInfo;                

} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA,

*PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS {

DWORD               cbSize;

BOOL                fCommercial;        

} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS,

*PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS;

typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA {

DWORD               cbSize;

DWORD               dwRegPolicySettings;

BOOL                fCommercial;

} AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,

*PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _HTTPSPolicyCallbackData

{

union {

DWORD           cbStruct;       

DWORD           cbSize;         

} DUMMYUNIONNAME;

DWORD           dwAuthType;

DWORD           fdwChecks;

WCHAR           *pwszServerName; 

} HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData,

SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA {

DWORD               cbSize;

DWORD               dwRootProgramQualifierFlags;

} EV_EXTRA_CERT_CHAIN_POLICY_PARA,

*PEV_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS {

DWORD   cbSize;

DWORD   dwQualifiers;

DWORD   dwIssuanceUsageIndex;

} EV_EXTRA_CERT_CHAIN_POLICY_STATUS, *PEV_EXTRA_CERT_CHAIN_POLICY_STATUS;

typedef struct _SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS {

DWORD   cbSize;

DWORD   dwErrorLevel;

DWORD   dwErrorCategory;

DWORD   dwReserved;

WCHAR   wszErrorText[256];  

} SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS;

typedef struct _SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA {

DWORD               cbSize;

DWORD               dwReserved;

LPWSTR              pwszServerName;

LPSTR               rgpszHpkpValue[2];

} SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA,

*PSSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA {

DWORD   cbSize;

DWORD   dwReserved;

PCWSTR  pwszServerName;

} SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA;

typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS {

DWORD   cbSize;

LONG    lError;

WCHAR   wszErrorText[512];  

} SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS;

BOOL

__stdcall

CryptStringToBinaryA(

LPCSTR pszString,

DWORD cchString,

DWORD dwFlags,

BYTE *pbBinary,

DWORD  *pcbBinary,

DWORD *pdwSkip,

DWORD *pdwFlags

);

BOOL

__stdcall

CryptStringToBinaryW(

LPCWSTR pszString,

DWORD cchString,

DWORD dwFlags,

BYTE *pbBinary,

DWORD  *pcbBinary,

DWORD *pdwSkip,

DWORD *pdwFlags

);

BOOL

__stdcall

CryptBinaryToStringA(

const BYTE *pbBinary,

DWORD cbBinary,

DWORD dwFlags,

LPSTR pszString,

DWORD *pcchString

);

BOOL

__stdcall

CryptBinaryToStringW(

const BYTE *pbBinary,

DWORD cbBinary,

DWORD dwFlags,

LPWSTR pszString,

DWORD *pcchString

);

typedef struct _CRYPT_PKCS12_PBE_PARAMS

{

int                 iIterations;        

ULONG               cbSalt;             

}

CRYPT_PKCS12_PBE_PARAMS;

HCERTSTORE

__stdcall

PFXImportCertStore(

CRYPT_DATA_BLOB* pPFX,

LPCWSTR szPassword,

DWORD   dwFlags);

BOOL

__stdcall

PFXIsPFXBlob(

CRYPT_DATA_BLOB* pPFX);

BOOL

__stdcall

PFXVerifyPassword(

CRYPT_DATA_BLOB* pPFX,

LPCWSTR szPassword,

DWORD dwFlags);

BOOL

__stdcall

PFXExportCertStoreEx(

HCERTSTORE hStore,

CRYPT_DATA_BLOB* pPFX,

LPCWSTR szPassword,

void* pvPara,

DWORD dwFlags);

typedef struct _PKCS12_PBES2_EXPORT_PARAMS 

{ 

DWORD dwSize;            

PVOID hNcryptDescriptor;

LPWSTR pwszPbes2Alg; 

} PKCS12_PBES2_EXPORT_PARAMS, *PPKCS12_PBES2_EXPORT_PARAMS; 

BOOL

__stdcall

PFXExportCertStore(

HCERTSTORE hStore,

CRYPT_DATA_BLOB* pPFX,

LPCWSTR szPassword,

DWORD dwFlags);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

typedef VOID *HCERT_SERVER_OCSP_RESPONSE;

typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT

CERT_SERVER_OCSP_RESPONSE_CONTEXT,

*PCERT_SERVER_OCSP_RESPONSE_CONTEXT;

typedef const CERT_SERVER_OCSP_RESPONSE_CONTEXT

*PCCERT_SERVER_OCSP_RESPONSE_CONTEXT;

struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT {

DWORD       cbSize;

BYTE        *pbEncodedOcspResponse;

DWORD       cbEncodedOcspResponse;

};

typedef VOID (__stdcall *PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK)(

PCCERT_CHAIN_CONTEXT pChainContext,

PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext,

PCCRL_CONTEXT pNewCrlContext,

PCCRL_CONTEXT pPrevCrlContext,

PVOID pvArg,

DWORD dwWriteOcspFileError

);

typedef struct _CERT_SERVER_OCSP_RESPONSE_OPEN_PARA {

DWORD                                           cbSize;

DWORD                                           dwFlags;

DWORD                                           *pcbUsedSize;

PWSTR                                           pwszOcspDirectory;

PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK   pfnUpdateCallback;

PVOID                                           pvUpdateCallbackArg;

} CERT_SERVER_OCSP_RESPONSE_OPEN_PARA, *PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA;

HCERT_SERVER_OCSP_RESPONSE

__stdcall

CertOpenServerOcspResponse(

PCCERT_CHAIN_CONTEXT pChainContext,

DWORD dwFlags,

PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA pOpenPara

);

VOID

__stdcall

CertAddRefServerOcspResponse(

HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse

);

VOID

__stdcall

CertCloseServerOcspResponse(

HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse,

DWORD dwFlags

);

PCCERT_SERVER_OCSP_RESPONSE_CONTEXT

__stdcall

CertGetServerOcspResponseContext(

HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse,

DWORD dwFlags,

LPVOID pvReserved

);

VOID

__stdcall

CertAddRefServerOcspResponseContext(

PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext

);

VOID

__stdcall

CertFreeServerOcspResponseContext(

PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext

);

BOOL

__stdcall

CertRetrieveLogoOrBiometricInfo(

PCCERT_CONTEXT pCertContext,

LPCSTR lpszLogoOrBiometricType,

DWORD dwRetrievalFlags,

DWORD dwTimeout,                             

DWORD dwFlags,

void *pvReserved,

BYTE **ppbData,      

DWORD *pcbData,

LPWSTR *ppwszMimeType         

);

#pragma endregion

#pragma region Application Family or OneCore or Games Family

typedef struct _CERT_SELECT_CHAIN_PARA

{

HCERTCHAINENGINE    hChainEngine;

PFILETIME           pTime;

HCERTSTORE          hAdditionalStore;

PCERT_CHAIN_PARA    pChainPara;

DWORD               dwFlags;

}

CERT_SELECT_CHAIN_PARA, *PCERT_SELECT_CHAIN_PARA;

typedef const CERT_SELECT_CHAIN_PARA*    PCCERT_SELECT_CHAIN_PARA;

typedef struct _CERT_SELECT_CRITERIA

{

DWORD                           dwType;

DWORD                           cPara;

void**    ppPara;

}

CERT_SELECT_CRITERIA, *PCERT_SELECT_CRITERIA;

typedef const CERT_SELECT_CRITERIA*     PCCERT_SELECT_CRITERIA;

BOOL

__stdcall

CertSelectCertificateChains(

LPCGUID pSelectionContext,

DWORD dwFlags,

PCCERT_SELECT_CHAIN_PARA pChainParameters,

DWORD cCriteria,

PCCERT_SELECT_CRITERIA rgpCriteria,

HCERTSTORE hStore,

PDWORD pcSelection,

PCCERT_CHAIN_CONTEXT** pprgpSelection

);

VOID

__stdcall

CertFreeCertificateChainList(

PCCERT_CHAIN_CONTEXT* prgpSelection

);

typedef struct _CRYPT_TIMESTAMP_REQUEST

{

DWORD                       dwVersion;              

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_DER_BLOB              HashedMessage;

LPSTR                       pszTSAPolicyId;         

CRYPT_INTEGER_BLOB          Nonce;                  

BOOL                        fCertReq;               

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;            

} CRYPT_TIMESTAMP_REQUEST, *PCRYPT_TIMESTAMP_REQUEST;

typedef struct _CRYPT_TIMESTAMP_RESPONSE

{

DWORD                       dwStatus;

DWORD                       cFreeText;              

LPWSTR*                     rgFreeText;

CRYPT_BIT_BLOB              FailureInfo;            

CRYPT_DER_BLOB              ContentInfo;            

} CRYPT_TIMESTAMP_RESPONSE, *PCRYPT_TIMESTAMP_RESPONSE;

typedef struct _CRYPT_TIMESTAMP_ACCURACY

{

DWORD                       dwSeconds;                  

DWORD                       dwMillis;                   

DWORD                       dwMicros;                   

} CRYPT_TIMESTAMP_ACCURACY, *PCRYPT_TIMESTAMP_ACCURACY;

typedef struct _CRYPT_TIMESTAMP_INFO

{

DWORD                       dwVersion;                  

LPSTR                       pszTSAPolicyId;

CRYPT_ALGORITHM_IDENTIFIER  HashAlgorithm;

CRYPT_DER_BLOB              HashedMessage;

CRYPT_INTEGER_BLOB          SerialNumber;

FILETIME                    ftTime;

PCRYPT_TIMESTAMP_ACCURACY   pvAccuracy;                 

BOOL                        fOrdering;                  

CRYPT_DER_BLOB              Nonce;                      

CRYPT_DER_BLOB              Tsa;                        

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;                

} CRYPT_TIMESTAMP_INFO, *PCRYPT_TIMESTAMP_INFO;

typedef struct _CRYPT_TIMESTAMP_CONTEXT

{

DWORD                       cbEncoded;

BYTE                        *pbEncoded;

PCRYPT_TIMESTAMP_INFO       pTimeStamp;

} CRYPT_TIMESTAMP_CONTEXT, *PCRYPT_TIMESTAMP_CONTEXT;

typedef struct _CRYPT_TIMESTAMP_PARA

{

LPCSTR                      pszTSAPolicyId;             

BOOL                        fRequestCerts;              

CRYPT_INTEGER_BLOB          Nonce;                      

DWORD                       cExtension;

PCERT_EXTENSION             rgExtension;                

} CRYPT_TIMESTAMP_PARA, *PCRYPT_TIMESTAMP_PARA;

BOOL

__stdcall

CryptRetrieveTimeStamp(

LPCWSTR     wszUrl,

DWORD       dwRetrievalFlags,

DWORD       dwTimeout,

LPCSTR      pszHashId,

const CRYPT_TIMESTAMP_PARA *pPara,

const BYTE  *pbData,

DWORD       cbData,

PCRYPT_TIMESTAMP_CONTEXT *ppTsContext,

PCCERT_CONTEXT *ppTsSigner,

HCERTSTORE  *phStore

);

BOOL

__stdcall

CryptVerifyTimeStampSignature (

const BYTE  *pbTSContentInfo,

DWORD       cbTSContentInfo,

const BYTE  *pbData,

DWORD 	    cbData,

HCERTSTORE  hAdditionalStore,

PCRYPT_TIMESTAMP_CONTEXT   *ppTsContext,

PCCERT_CONTEXT *ppTsSigner,

HCERTSTORE  *phStore

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

typedef BOOL (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH)(

LPVOID pContext,

PCERT_NAME_BLOB *rgIdentifierOrNameList,

DWORD dwIdentifierOrNameListCount); 

typedef BOOL (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET)(

LPVOID pPluginContext,

PCRYPT_DATA_BLOB pIdentifier,

DWORD dwNameType,

PCERT_NAME_BLOB pNameBlob,

PBYTE *ppbContent,

DWORD *pcbContent,

PCWSTR *ppwszPassword,

PCRYPT_DATA_BLOB *ppIdentifier);

typedef void (__stdcall * PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE)(

DWORD dwReason,

LPVOID pPluginContext);

typedef void (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD)(

LPVOID pPluginContext,

PCWSTR pwszPassword

);

typedef void (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE)(

LPVOID pPluginContext,

PBYTE pbData

);

typedef void (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER)(

LPVOID pPluginContext,

PCRYPT_DATA_BLOB pIdentifier);

typedef struct _CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE

{

DWORD cbSize;

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET pfnGet;

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE pfnRelease;

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD pfnFreePassword;

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE pfnFree;

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER pfnFreeIdentifier;

} CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE, *PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE;

typedef BOOL (__stdcall *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE)(

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH pfnFlush,

LPVOID pContext,

DWORD *pdwExpectedObjectCount,

PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE *ppFuncTable,

void **ppPluginContext);

BOOL

__stdcall

CertIsWeakHash(

DWORD dwHashUseType,

LPCWSTR pwszCNGHashAlgid,

DWORD dwChainFlags,

PCCERT_CHAIN_CONTEXT pSignerChainContext,

LPFILETIME pTimeStamp,

LPCWSTR pwszFileName

);

typedef  BOOL (__stdcall *PFN_CERT_IS_WEAK_HASH)(

DWORD dwHashUseType,

LPCWSTR pwszCNGHashAlgid,

DWORD dwChainFlags,

PCCERT_CHAIN_CONTEXT pSignerChainContext,

LPFILETIME pTimeStamp,

LPCWSTR pwszFileName

);

#pragma endregion

#pragma warning(pop)

#pragma region Desktop Family or OneCore or Games Family

#pragma once

#pragma region App Family or OneCore or Games Family

#pragma endregion

#pragma region App Family or OneCore or Games Family

typedef struct  _CRYPTPROTECT_PROMPTSTRUCT

{

DWORD cbSize;

DWORD dwPromptFlags;

HWND  hwndApp;

LPCWSTR szPrompt;

} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;

#pragma endregion

#pragma region App Family or OneCore or Games Family

#pragma endregion

#pragma region App Family or OneCore or Games Family

BOOL

__stdcall

CryptProtectData(

DATA_BLOB*      pDataIn,

LPCWSTR         szDataDescr,

DATA_BLOB*      pOptionalEntropy,

PVOID           pvReserved,

CRYPTPROTECT_PROMPTSTRUCT*  pPromptStruct,

DWORD           dwFlags,

DATA_BLOB*      pDataOut            

);

BOOL

__stdcall

CryptUnprotectData(

DATA_BLOB*      pDataIn,             

LPWSTR*     ppszDataDescr,       

DATA_BLOB*      pOptionalEntropy,

PVOID           pvReserved,

CRYPTPROTECT_PROMPTSTRUCT*  pPromptStruct,

DWORD           dwFlags,

DATA_BLOB*      pDataOut

);

#pragma endregion

#pragma region Desktop Family

BOOL

__stdcall

CryptProtectDataNoUI(

DATA_BLOB*      pDataIn,

LPCWSTR         szDataDescr,

DATA_BLOB*      pOptionalEntropy,

PVOID           pvReserved,

CRYPTPROTECT_PROMPTSTRUCT*  pPromptStruct,

DWORD           dwFlags,

const BYTE      *pbOptionalPassword,

DWORD           cbOptionalPassword,

DATA_BLOB*      pDataOut            

);

BOOL

__stdcall

CryptUnprotectDataNoUI(

DATA_BLOB*      pDataIn,             

LPWSTR*     ppszDataDescr,       

DATA_BLOB*      pOptionalEntropy,

PVOID           pvReserved,

CRYPTPROTECT_PROMPTSTRUCT*  pPromptStruct,

DWORD           dwFlags,

const BYTE      *pbOptionalPassword,

DWORD           cbOptionalPassword,

DATA_BLOB*      pDataOut

);

#pragma endregion

#pragma region Desktop Family or OneCore or Games Family

BOOL

__stdcall

CryptUpdateProtectedState(

PSID            pOldSid,

LPCWSTR         pwszOldPassword,

DWORD           dwFlags,

DWORD           *pdwSuccessCount,

DWORD           *pdwFailureCount);

#pragma endregion

#pragma region App Family or OneCore or Games Family

#pragma endregion

#pragma region App Family or OneCore or Games Family

BOOL

__stdcall

CryptProtectMemory(

LPVOID          pDataIn,             

DWORD           cbDataIn,            

DWORD           dwFlags

);

BOOL

__stdcall

CryptUnprotectMemory(

LPVOID          pDataIn,             

DWORD           cbDataIn,            

DWORD           dwFlags

);

#pragma endregion

#pragma endregion

typedef const BYTE *PCBYTE;

typedef struct _FVE_UEFI_VARIABLE_INFO { 

PBYTE UEFIVariableValue;          

ULONG UEFIVariableSizeBytes;     

} FVE_UEFI_VARIABLE_INFO, *PFVE_UEFI_VARIABLE_INFO;

typedef struct _FVE_TPM_PCR7_INFO { 

PFVE_UEFI_VARIABLE_INFO PlatformKeyVariableInfo;              

PFVE_UEFI_VARIABLE_INFO KekDatabaseVariableInfo;              

PFVE_UEFI_VARIABLE_INFO AllowedDatabaseVariableInfo;          

PFVE_UEFI_VARIABLE_INFO ForbiddenDatabaseVariableInfo;        

PBYTE                   OsLoaderAuthoritySignature;           

ULONG                   OsLoaderAuthoritySignatureSizeBytes;  

ULONG                   CountSeparatorEvents;                 

} FVE_TPM_PCR7_INFO, *PFVE_TPM_PCR7_INFO;

typedef struct _FVE_TPM_PCR4_INFO { 

WCHAR BootMgrFilePath[MAX_PATH];  

} FVE_TPM_PCR4_INFO, *PFVE_TPM_PCR4_INFO;

typedef struct _FVE_TPM_PROTECTOR_INFO { 

UINT32 TpmPcrIndex;                     

union {

PFVE_TPM_PCR7_INFO FveTpmPcr7Info; 

PFVE_TPM_PCR4_INFO FveTpmPcr4Info; 

} PredictiveSealInfo; 

} FVE_TPM_PROTECTOR_INFO, *PFVE_TPM_PROTECTOR_INFO;

typedef struct _FVE_TPM_STATE_ {

PVOID TpmContext;

ULONG FveTpmProtectorInfoCount;

PFVE_TPM_PROTECTOR_INFO FveTpmProtectorInfo;

} FVE_TPM_STATE, *PFVE_TPM_STATE;

typedef struct _FVE_TPM_INFO_ {

ULONG FveTpmInfoVersion;

PFVE_TPM_STATE TpmStateInfo;

} FVE_TPM_INFO, *PFVE_TPM_INFO;

typedef HRESULT (__stdcall *PFVE_TPM_API_CALLBACK)(

PVOID hContext,

UINT32 cbCmd,

PCBYTE pabCmd,

PUINT32 pcbResult,

PBYTE pabResult);

STDAPI

FveAddPredictiveTpmProtector(

PCWSTR FveVolumePath,

PFVE_TPM_INFO FveTpmInfo

);

STDAPI

FveSetupTpmCallback(

PFVE_TPM_API_CALLBACK TpmCallback,

UINT32 TpmVersion

);

typedef enum _FVE_DEVICE_TYPE {

FVE_DEVICE_UNKNOWN = -1,

FVE_DEVICE_UNSUPPORTED = 0,

FVE_DEVICE_VOLUME,

FVE_DEVICE_CSV_VOLUME,

FVE_DEVICE_MAX

} FVE_DEVICE_TYPE, *PFVE_DEVICE_TYPE;

typedef enum _FVE_INTERFACE_TYPE {

FVE_INTERFACE_UNKNOWN = -1,

FVE_INTERFACE_SEI = 0,

FVE_INTERFACE_SYS,

FVE_INTERFACE_HEI,

FVE_INTERFACE_MAX

} FVE_INTERFACE_TYPE, *PFVE_INTERFACE_TYPE;

typedef enum _FVE_HANDLE_TYPE {

FVE_HANDLE_UNKNOWN = -1,

FVE_HANDLE_FVE = 0,

FVE_HANDLE_NONFVE,

FVE_HANDLE_MAX

} FVE_HANDLE_TYPE, *PFVE_HANDLE_TYPE;

typedef enum _FVE_SCENARIO_TYPE {

FVE_SCENARIO_UNKNOWN  = -1,

FVE_SCENARIO_DEFAULT  = 0,

FVE_SCENARIO_KEY_ROLL = 1,

FVE_SCENARIO_BOOT_COMPONENT_UPDATE = 2,

FVE_SCENARIO_UNDEFINED_SKIP_CHECKS = 3

} FVE_SCENARIO_TYPE, *PFVE_SCENARIO_TYPE;

typedef struct _FVE_STATUS_V1 {

ULONG  StructureSize;

ULONG  StructureVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

} FVE_STATUS_V1, *PFVE_STATUS_V1;

typedef const FVE_STATUS_V1 * PCFVE_STATUS_V1;

typedef struct _FVE_STATUS_V2 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

} FVE_STATUS_V2, *PFVE_STATUS_V2;

typedef const FVE_STATUS_V2 * PCFVE_STATUS_V2;

typedef struct _FVE_STATUS_V3 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

} FVE_STATUS_V3, *PFVE_STATUS_V3;

typedef const FVE_STATUS_V3 * PCFVE_STATUS_V3;

typedef struct _FVE_STATUS_V4 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

double WipedPercent;     

ULONG WipeState;         

ULONG WipeCount;         

ULONGLONG ExtendedFlags; 

} FVE_STATUS_V4, *PFVE_STATUS_V4;

typedef const FVE_STATUS_V4 * PCFVE_STATUS_V4;

#pragma warning(push)

#pragma warning(disable:4201)   

#pragma warning(disable:4214)   

typedef struct _FVE_STATUS_V5 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

double WipedPercent;     

ULONG WipeState;         

ULONG WipeCount;         

ULONGLONG ExtendedFlags; 

ULONGLONG WimBootHashedSizeRequired;    

ULONGLONG WimBootHashedSizeActual;  

union {

ULONGLONG ExtendedFlags2;

struct {

BOOLEAN WimBootVolume : 1;  

BOOLEAN WimBootHashCompleted : 1;   

};

};

} FVE_STATUS_V5, *PFVE_STATUS_V5;

typedef const FVE_STATUS_V5 * PCFVE_STATUS_V5;

#pragma warning(pop)

#pragma warning(push)

#pragma warning(disable:4201)   

#pragma warning(disable:4214)   

typedef struct _FVE_STATUS_V6 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

double WipedPercent;     

ULONG WipeState;         

ULONG WipeCount;         

ULONGLONG ExtendedFlags; 

ULONGLONG WimBootHashedSizeRequired;    

ULONGLONG WimBootHashedSizeActual;  

union {

ULONGLONG ExtendedFlags2;

struct {

BOOLEAN WimBootVolume : 1;  

BOOLEAN WimBootHashCompleted : 1;   

BOOLEAN IceIsUsedForFve : 1;    

BOOLEAN IsEfiEsp : 1;           

BOOLEAN IsRecovery : 1;         

BOOLEAN WcosDePolicy : 1;       

BOOLEAN WcosOsData : 1;         

BOOLEAN WcosPreInstalled : 1;   

BOOLEAN WcosUserData : 1;       

BOOLEAN WcosMainOs : 1;         

BOOLEAN WcosEfiEsp : 1;         

BOOLEAN WcosBsp : 1;            

};

};

ULONG WcosOsMainProtectLevel;

ULONG WcosOsDataProtectLevel;

ULONG WcosPreInstalledProtectLevel;

ULONG WcosUserDataProtectLevel;

} FVE_STATUS_V6, *PFVE_STATUS_V6;

typedef const FVE_STATUS_V6 * PCFVE_STATUS_V6;

#pragma warning(pop)

#pragma warning(push)

#pragma warning(disable:4201)   

#pragma warning(disable:4214)   

typedef struct _FVE_STATUS_V7 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

double WipedPercent;     

ULONG WipeState;         

ULONG WipeCount;         

ULONGLONG ExtendedFlags; 

ULONGLONG WimBootHashedSizeRequired;    

ULONGLONG WimBootHashedSizeActual;  

union {

ULONGLONG ExtendedFlags2;

struct {

BOOLEAN WimBootVolume : 1;  

BOOLEAN WimBootHashCompleted : 1;   

BOOLEAN IceIsUsedForFve : 1;    

BOOLEAN IsEfiEsp : 1;           

BOOLEAN IsRecovery : 1;         

BOOLEAN WcosDePolicy : 1;       

BOOLEAN WcosOsData : 1;         

BOOLEAN WcosPreInstalled : 1;   

BOOLEAN WcosUserData : 1;       

BOOLEAN WcosMainOs : 1;         

BOOLEAN WcosEfiEsp : 1;         

BOOLEAN WcosBsp : 1;            

BOOLEAN WcosWsp : 1;            

};

};

ULONG WcosOsMainProtectLevel;

ULONG WcosOsDataProtectLevel;

ULONG WcosPreInstalledProtectLevel;

ULONG WcosUserDataProtectLevel;

ULONG WcosBspProtectLevel;

ULONG WcosWspProtectLevel;

} FVE_STATUS_V7, *PFVE_STATUS_V7;

typedef const FVE_STATUS_V7 * PCFVE_STATUS_V7;

#pragma warning(pop)

#pragma warning(push)

#pragma warning(disable:4201)   

#pragma warning(disable:4214)   

typedef struct _FVE_STATUS_V8 {

ULONG  StructureSize;

ULONG  StructureVersion;

USHORT FveVersion;

ULONG  Flags;            

double ConvertedPercent; 

HRESULT LastConvertStatus; 

LONGLONG VolArriveTime;  

double WipedPercent;     

ULONG WipeState;         

ULONG WipeCount;         

ULONGLONG ExtendedFlags; 

ULONGLONG WimBootHashedSizeRequired;    

ULONGLONG WimBootHashedSizeActual;  

union {

ULONGLONG ExtendedFlags2;

struct {

BOOLEAN WimBootVolume : 1;  

BOOLEAN WimBootHashCompleted : 1;   

BOOLEAN IceIsUsedForFve : 1;    

BOOLEAN IsEfiEsp : 1;           

BOOLEAN IsRecovery : 1;         

BOOLEAN WcosDePolicy : 1;       

BOOLEAN WcosOsData : 1;         

BOOLEAN WcosPreInstalled : 1;   

BOOLEAN WcosUserData : 1;       

BOOLEAN WcosMainOs : 1;         

BOOLEAN WcosEfiEsp : 1;         

BOOLEAN WcosBsp : 1;            

BOOLEAN WcosWsp : 1;            

BOOLEAN WcosDpp : 1;            

};

};

ULONG WcosOsMainProtectLevel;

ULONG WcosOsDataProtectLevel;

ULONG WcosPreInstalledProtectLevel;

ULONG WcosUserDataProtectLevel;

ULONG WcosBspProtectLevel;

ULONG WcosWspProtectLevel;

ULONG WcosDppProtectLevel;

} FVE_STATUS_V8, *PFVE_STATUS_V8;

typedef const FVE_STATUS_V8 * PCFVE_STATUS_V8;

#pragma warning(pop)

typedef enum _FVE_WIPING_STATE {

FVE_WIPING_STATE_UNSPECIFIED = 0,

FVE_WIPING_STATE_INACTIVE = 1,   

FVE_WIPING_STATE_PENDING = 2,    

FVE_WIPING_STATE_STOPPED = 3,    

FVE_WIPING_STATE_INPROGRESS = 4, 

} FVE_WIPING_STATE, *PFVE_WIPING_STATE;

typedef struct _FVE_TPM_CAPS {

ULONG  StructureSize;

ULONG  StructureVersion;

HRESULT TpmStatus;    

ULONG  Flags;         

} FVE_TPM_CAPS, *PFVE_TPM_CAPS;

typedef const FVE_TPM_CAPS * PCFVE_TPM_CAPS;

typedef struct _FVE_TPM_CAPS_TPM_PRESENCE {

ULONG StructureSize;

ULONG StructureVersion;

HRESULT NotUsed;

ULONG NotUsed2;

BOOL TpmPresent;

} FVE_TPM_CAPS_TPM_PRESENCE, *PFVE_TPM_CAPS_TPM_PRESENCE;

typedef const FVE_TPM_CAPS_TPM_PRESENCE * PCFVE_TPM_CAPS_TPM_PRESENCE;

typedef struct _FVE_AUTH_RECOVERY_PASSWORD {

USHORT Block[(8)];

} FVE_AUTH_RECOVERY_PASSWORD, *PFVE_AUTH_RECOVERY_PASSWORD;

typedef const FVE_AUTH_RECOVERY_PASSWORD * PCFVE_AUTH_RECOVERY_PASSWORD;

typedef struct _FVE_AUTH_PIN {

BYTE HashedPin[32];

} FVE_AUTH_PIN, *PFVE_AUTH_PIN;

typedef const FVE_AUTH_PIN * PCFVE_AUTH_PIN;

typedef struct _FVE_AUTH_TPM {

ULONG PcrBitmap;

} FVE_AUTH_TPM, *PFVE_AUTH_TPM;

typedef const FVE_AUTH_TPM * PCFVE_AUTH_TPM;

typedef struct _FVE_AUTH_PREDICTED_TPM_INFO {

PFVE_TPM_STATE FveTpmState;

} FVE_AUTH_PREDICTED_TPM_INFO, *PFVE_AUTH_PREDICTED_TPM_INFO;

typedef const FVE_AUTH_PREDICTED_TPM_INFO * PCFVE_AUTH_PREDICTED_TPM_INFO;

typedef struct _FVE_AUTH_EXTERNAL_KEY {

BYTE Key[32];

} FVE_AUTH_EXTERNAL_KEY, *PFVE_AUTH_EXTERNAL_KEY;

typedef const FVE_AUTH_EXTERNAL_KEY * PCFVE_AUTH_EXTERNAL_KEY;

typedef struct _FVE_AUTH_PUBLIC_KEY {

BCRYPT_KEY_HANDLE Handle;

ULONG BlobSize;

PBYTE Blob;         

} FVE_AUTH_PUBLIC_KEY, *PFVE_AUTH_PUBLIC_KEY;

typedef const FVE_AUTH_PUBLIC_KEY * PCFVE_AUTH_PUBLIC_KEY;

typedef struct _FVE_AUTH_PRIVATE_KEY {

NCRYPT_KEY_HANDLE KspKeyHandle;

HCRYPTPROV CspProviderHandle;

HCRYPTKEY CspKeyHandle;

DWORD KeySpec;

} FVE_AUTH_PRIVATE_KEY, *PFVE_AUTH_PRIVATE_KEY;

typedef const FVE_AUTH_PRIVATE_KEY * PCFVE_AUTH_PRIVATE_KEY;

typedef struct _FVE_AUTH_INFO_PUBLIC_KEY {

ULONG ExportedPublicKeySize;

ULONG ExportedPublicKeyOffset;

ULONG BlobSize;

ULONG BlobOffset;

} FVE_AUTH_INFO_PUBLIC_KEY, *PFVE_AUTH_INFO_PUBLIC_KEY;

typedef const FVE_AUTH_INFO_PUBLIC_KEY * PCFVE_AUTH_INFO_PUBLIC_KEY;

typedef struct _FVE_AUTH_PASSPHRASE

{

WCHAR ClearPassPhrase[256 + 1];

BYTE HashedPassPhrase[32];

BYTE Salt[16];

} FVE_AUTH_PASSPHRASE, *PFVE_AUTH_PASSPHRASE;

typedef const FVE_AUTH_PASSPHRASE * PCFVE_AUTH_PASSPHRASE;

typedef struct _FVE_AUTH_INFO_CLEAR_KEY {

UCHAR Count;

} FVE_AUTH_INFO_CLEAR_KEY, *PFVE_AUTH_INFO_CLEAR_KEY;

typedef struct _FVE_AUTH_DPAPI_NG

{

USHORT DpapiNgFlags;        

USHORT DescriptorLength;

WCHAR DpapiNgDescriptor[ANYSIZE_ARRAY];

} FVE_AUTH_DPAPI_NG, *PFVE_AUTH_DPAPI_NG;

typedef const FVE_AUTH_DPAPI_NG *PCFVE_AUTH_DPAPI_NG;

typedef struct _FVE_AUTH_ELEMENT {

ULONG StructureSize;     

ULONG StructureVersion;  

ULONG ElementFlags;

ULONG ElementType;

union {

BYTE Nothing[1];

FVE_AUTH_RECOVERY_PASSWORD RecoveryPassword;

FVE_AUTH_PIN Pin;

FVE_AUTH_TPM Tpm;

FVE_AUTH_EXTERNAL_KEY ExternalKey;

FVE_AUTH_PUBLIC_KEY PublicKey;

FVE_AUTH_PRIVATE_KEY PrivateKey;

FVE_AUTH_INFO_PUBLIC_KEY PublicKeyInfo;

FVE_AUTH_PASSPHRASE PassPhrase;

FVE_AUTH_INFO_CLEAR_KEY ClearKeyInfo;

FVE_AUTH_DPAPI_NG DpapiNgInfo;

FVE_AUTH_PREDICTED_TPM_INFO PredictedTpmInfo;

} Data;

} FVE_AUTH_ELEMENT, *PFVE_AUTH_ELEMENT;

typedef const FVE_AUTH_ELEMENT *PCFVE_AUTH_ELEMENT;

typedef struct _FVE_AUTH_INFORMATION {

ULONG StructureSize;

ULONG StructureVersion;

ULONG AuthFlags;

ULONG ElementsCount;

PFVE_AUTH_ELEMENT * Elements;

PCWSTR Description;

FILETIME CreationTime;

GUID Identifier;

} FVE_AUTH_INFORMATION, *PFVE_AUTH_INFORMATION;

typedef const FVE_AUTH_INFORMATION *PCFVE_AUTH_INFORMATION;

typedef struct _ADA_GP_OPTIONS {

BOOL BackupEnabled;

BOOL BackupKeyPackage;

BOOL BackupRequired;

} ADA_GP_OPTIONS, *PADA_GP_OPTIONS;

typedef enum _FVE_PROTECTOR_TYPE {

FveKeyProtTypeUnknown = 0,

FveKeyProtTypeTpm,

FveKeyProtTypeKey,

FveKeyProtTypePassword,

FveKeyProtTypeTpmAndPin,

FveKeyProtTypeTpmAndKey,

FveKeyProtTypeTpmAndPinAndKey,

FveKeyProtTypeCertificate,

FveKeyProtTypePassPhrase,

FveKeyProtTypeTpmAndCertificate,

FveKeyProtTypeDpapiNg,

} FVE_PROTECTOR_TYPE, *PFVE_PROTECTOR_TYPE;

FORCEINLINE

BOOL

FveIsTpmProtectorType(

FVE_PROTECTOR_TYPE ProtectorType

)

{

return ProtectorType == FveKeyProtTypeTpm ||

ProtectorType == FveKeyProtTypeTpmAndPin ||

ProtectorType == FveKeyProtTypeTpmAndKey ||

ProtectorType == FveKeyProtTypeTpmAndPinAndKey ||

ProtectorType == FveKeyProtTypeTpmAndCertificate;

}

NTSYSAPI

HRESULT

NTAPI

FveOpenVolumeW(

PCWSTR VolumeName,

BOOL bNeedWriteAccess,

HANDLE * phVolume

);

NTSYSAPI

HRESULT

NTAPI

FveOpenVolumeExW(

PCWSTR VolumeName,

ULONG NameFlags,

BOOL bNeedWriteAccess,

FVE_INTERFACE_TYPE IfcType,

ULONG HandleFlags,

HANDLE * phVolume

);

NTSYSAPI

HRESULT

NTAPI

FveOpenVolumeByHandle(

HANDLE Handle,

FVE_HANDLE_TYPE HandleType,

BOOL bNeedWriteAccess,

FVE_INTERFACE_TYPE IfcType,

ULONG HandleFlags,

HANDLE * phVolume

);

NTSYSAPI

HRESULT

NTAPI

FveCloseHandle(

HANDLE FveHandle

);

NTSYSAPI

HRESULT

NTAPI

FveCloseVolume(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveApplyGroupPolicy(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveCommitChanges(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveDiscardChanges(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveGetStatus(

HANDLE FveVolumeHandle,

PFVE_STATUS_V8 Status

);

NTSYSAPI

HRESULT

NTAPI

FveGetStatusW(

PCWSTR VolumeName,

PFVE_STATUS_V8 Status

);

NTSYSAPI

HRESULT

NTAPI

FveGetUserFlags(

HANDLE FveVolumeHandle,

PULONG UserFlags

);

NTSYSAPI

HRESULT

NTAPI

FveSetUserFlags(

HANDLE FveVolumeHandle,

ULONG UserFlags

);

NTSYSAPI

HRESULT

NTAPI

FveClearUserFlags(

HANDLE FveVolumeHandle,

ULONG UserFlags

);

NTSYSAPI

HRESULT

NTAPI

FveGetAuthMethodGuids(

HANDLE FveVolumeHandle,

LPGUID AuthMethodGuids,

UINT MaxNumGuids,

PUINT NumGuids

);

NTSYSAPI

HRESULT

NTAPI

FveGetAuthMethodInformation(

HANDLE FveVolumeHandle,

PFVE_AUTH_INFORMATION Information,

SIZE_T BufferSize,

SIZE_T * RequiredSize

);

NTSYSAPI

HRESULT

NTAPI

FveProtectorTypeToFlags(

FVE_PROTECTOR_TYPE ProtectorType,

PULONG TypeFlags

);

NTSYSAPI

HRESULT

NTAPI

FveFlagsToProtectorType(

ULONG TypeFlags,

PFVE_PROTECTOR_TYPE ProtectorType

);

NTSYSAPI

HRESULT

NTAPI

FveDeleteAuthMethod(

HANDLE FveVolumeHandle,

LPCGUID AuthMethodGuid

);

NTSYSAPI

HRESULT

NTAPI

FveAddAuthMethodInformation(

HANDLE FveVolumeHandle,

PCFVE_AUTH_INFORMATION Information,

LPGUID AuthMethodGuid

);

NTSYSAPI

HRESULT

NTAPI

FveUpdatePinW (

HANDLE hFveVolume,

LPCWSTR NewPin,

LPCGUID ProtectorGuid

);

NTSYSAPI

HRESULT

NTAPI

FveValidateExistingPinW(

HANDLE hFveVolume,

PCWSTR ExistingPin,

PBOOL ExistingPinValidates,

LPGUID GUIDProtector

);

NTSYSAPI

HRESULT

NTAPI

FveValidateExistingPassphraseW(

HANDLE hFveVolume,

PCWSTR ExistingPassphrase,

PBOOL ExistingPassphraseValidates,

LPGUID ProtectorGuid

);

NTSYSAPI

HRESULT

NTAPI

FveEraseDrive(

HANDLE FveVolumeHandle,

BOOL ForceDismount

);

NTSYSAPI

HRESULT

NTAPI

FveUpgradeVolume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveEraseDriveExW(

PCWSTR   VolumeName,

BOOL     ForceDismount

);

NTSYSAPI

HRESULT

NTAPI

FveUnlockVolume(

HANDLE FveVolumeHandle,

PCFVE_AUTH_INFORMATION Information

);

HRESULT

NTAPI

FveUnlockVolumeWithAccessMode(

HANDLE hFveVolume,

PCFVE_AUTH_INFORMATION Information,

PBOOL ReadOnly

);

NTSYSAPI

HRESULT

NTAPI

FveAttemptAutoUnlock(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveLockVolume(

HANDLE FveVolumeHandle,

BOOLEAN ForceDismount

);

NTSYSAPI

HRESULT

NTAPI

FveCheckBootFileW(

PCWSTR   Path

);

NTSYSAPI

HRESULT

NTAPI

FveGetIdentity(

HANDLE FveVolumeHandle,

LPGUID IdentityGuid

);

NTSYSAPI

HRESULT

NTAPI

FveGetRecoveryPasswordBackupInformation(

HANDLE FveVolumeHandle,

LPCGUID ProtectorGuid,

PUSHORT BackupInfoTypeMask

);

NTSYSAPI

HRESULT

NTAPI

FveSetRecoveryPasswordBackupInformation(

HANDLE FveVolumeHandle,

LPCGUID ProtectorGuid,

USHORT BackupInfoType,

USHORT SetFlags,

USHORT ClearFlags,

PBOOLEAN DatasetWasUpdated

);

NTSYSAPI

HRESULT

NTAPI

FveSelectBestRecoveryPasswordByBackupInformation (

HANDLE FveVolumeHandle,

LPGUID ProtectorGuid

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementToRecoveryPasswordW(

PCFVE_AUTH_ELEMENT AuthElement,

PWSTR Passphrase,

SIZE_T PassphraseLength

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementFromPinW(

PCWSTR Pin,

PFVE_AUTH_ELEMENT AuthElement

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementFromPassPhraseW(

PCWSTR PassPhrase,

PFVE_AUTH_ELEMENT AuthElement

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementFromRecoveryPasswordW(

PCWSTR Passphrase,

PFVE_AUTH_ELEMENT AuthElement

);

NTSYSAPI

HRESULT

NTAPI

FveIsRecoveryPasswordGroupValidW(

PCWSTR PassphraseGroup,

BOOLEAN * IsValid

);

NTSYSAPI

HRESULT

NTAPI

FveIsRecoveryPasswordValidW(

PCWSTR Passphrase,

BOOLEAN * IsValid

);

NTSYSAPI

HRESULT

NTAPI

FveIsPassphraseCompatibleW(

PCWSTR Passphrase,

BOOL *IsCompatible

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementReadExternalKeyW(

PCWSTR KeyFullFilePath,

PFVE_AUTH_INFORMATION Information,

SIZE_T BufferSize,

SIZE_T * RequiredSize

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementWriteExternalKeyW(

PCWSTR KeyFullFilePath,

PCFVE_AUTH_INFORMATION Information

);

NTSYSAPI

HRESULT

NTAPI

FveAuthElementGetKeyFileNameW(

PCFVE_AUTH_INFORMATION Information,

PWSTR KeyFileName,

SIZE_T BufferLength

);

NTSYSAPI

HRESULT

NTAPI

FveInitVolumeEx(

HANDLE hFveVolume,

PCWSTR pcwszDiscoveryVolumeType,

ULONG InitializationFlags

);

NTSYSAPI

HRESULT

NTAPI

FveInitVolume(

HANDLE FveVolumeHandle,

PCWSTR DiscoveryVolumeType

);

NTSYSAPI

HRESULT

NTAPI

FveInitializeDeviceEncryption(

VOID

);

NTSYSAPI

HRESULT

NTAPI

FveInitializeDeviceEncryption2(

HANDLE FveVolumeHandle,

ULONG DEInitializationFlags

);

typedef struct _FVE_DE_SUPPORT {

ULONG StructureSize;

ULONG StructureVersion;

ULONG QueryFlags;

HRESULT SupportStatus;

ULONG SupportFlags;

} FVE_DE_SUPPORT, *PFVE_DE_SUPPORT;

typedef const FVE_DE_SUPPORT * PCFVE_DE_SUPPORT;

NTSYSAPI

HRESULT

NTAPI

FveQueryDeviceEncryptionSupport(

PFVE_DE_SUPPORT DeviceEncryptionSupport

);

NTSYSAPI

HRESULT

NTAPI

FveRevertVolume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveKeyManagement(

HANDLE FveVolumeHandle,

ULONG FlagsIn,

PULONG FlagsOut

);

NTSYSAPI

HRESULT

NTAPI

FveConversionDecrypt(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveConversionDecryptEx(

HANDLE FveVolumeHandle,

ULONG ConversionFlags

);

NTSYSAPI

HRESULT

NTAPI

FveConversionEncrypt(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveConversionEncryptEx(

HANDLE FveVolumeHandle,

ULONG ConversionFlags

);

NTSYSAPI

HRESULT

NTAPI

FveConversionEncryptPendingReboot(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveConversionEncryptPendingRebootEx(

HANDLE FveVolumeHandle,

ULONG ConversionFlags

);

NTSYSAPI

HRESULT

NTAPI

FveConversionStop(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveConversionStopEx(

HANDLE FveVolumeHandle,

BOOLEAN AutoStartOnReinsertion

);

NTSYSAPI

HRESULT

NTAPI

FveConversionPause(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveConversionResume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveIsVolumeEncryptable(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveGetFveMethod(

HANDLE FveVolumeHandle,

PINT FveMethod

);

NTSYSAPI

HRESULT

NTAPI

FveGetFveMethodEDrv(

HANDLE FveVolumeHandle,

PINT FveMethod,

LPWSTR

SelfEncryptionDriveEncryptionMethod);

NTSYSAPI

HRESULT

NTAPI

FveGetFveMethodEx(

HANDLE hFveVolume,

PINT FveMethod,

LPWSTR eDriveMethod,

PULONG FveMethodFlags

);

NTSYSAPI

HRESULT

NTAPI

FveSetFveMethod(

HANDLE FveVolumeHandle,

INT FveMethod

);

NTSYSAPI

HRESULT

NTAPI

FveCheckTpmCapability(

PFVE_TPM_CAPS Capability

);

NTSYSAPI

HRESULT

NTAPI

FveBindDataVolume(

HANDLE FveVolumeHandle,

LPCGUID AuthMethodGUID

);

NTSYSAPI

HRESULT

NTAPI

FveUnbindDataVolume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveIsBoundDataVolume(

HANDLE FveVolumeHandle,

PBOOL IsAutoUnlockEnabled,

LPGUID UnlockGUID

);

NTSYSAPI

HRESULT

NTAPI

FveIsBoundDataVolumeToOSVolume(

HANDLE FveVolumeHandle,

PBOOL IsAutoUnlockEnabled,

LPGUID UnlockGUID

);

NTSYSAPI

HRESULT

NTAPI

FveIsAnyDataVolumeBoundToOSVolume(

HANDLE FveVolumeHandle,

PULONG Count

);

NTSYSAPI

HRESULT

NTAPI

FveUnbindAllDataVolumeFromOSVolume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveSetDescriptionW(

HANDLE FveVolumeHandle,

PCWSTR VolumeDescription

);

NTSYSAPI

HRESULT

NTAPI

FveGetDescriptionW(

HANDLE FveVolumeHandle,

PWSTR VolumeDescription,

SIZE_T BufferLength,

SIZE_T * RequiredSize

);

NTSYSAPI

HRESULT

NTAPI

FveSetIdentificationFieldW(

HANDLE FveVolumeHandle,

PCWSTR IdentificationField

);

NTSYSAPI

HRESULT

NTAPI

FveGetIdentificationFieldW(

HANDLE FveVolumeHandle,

PWSTR IdentificationField,

SIZE_T BufferLength,

SIZE_T * RequiredSize

);

NTSYSAPI

HRESULT

NTAPI

FveSetAllowKeyExport(

BOOL Allow

);

NTSYSAPI

HRESULT

NTAPI

FveGetAllowKeyExport(

BOOL *Allow

);

NTSYSAPI

HRESULT

NTAPI

FveSetFipsAllowDisabled(

BOOL Allow

);

NTSYSAPI

HRESULT

NTAPI

FveGetFipsAllowDisabled(

BOOL *Allow

);

NTSYSAPI

HRESULT

NTAPI

FveIsHardwareReadyForConversion(

VOID

);

NTSYSAPI

HRESULT

NTAPI

FveGetKeyPackage(

HANDLE FveVolumeHandle,

LPCGUID Identifier,

PUCHAR Buffer,

SIZE_T BufferSize,

SIZE_T * DataSize

);

NTSYSAPI

HRESULT

NTAPI

FveEnableRawAccessW(

PCWSTR VolumeName,

BOOL Enabled

);

NTSYSAPI

HRESULT

NTAPI

FveEnableRawAccess(

HANDLE FveVolumeHandle,

BOOL Enabled

);

NTSYSAPI

HRESULT

NTAPI

FveEnableRawAccessEx(

HANDLE FveVolumeHandle,

BOOL Enabled,

BOOL ForceDismount

);

NTSYSAPI

HRESULT

NTAPI

FveBackupRecoveryInformationToAD(

HANDLE FveVolumeHandle,

LPCGUID AuthMethodGUID

);

NTSYSAPI

HRESULT

NTAPI

FveBackupRecoveryInformationToADEx(

HANDLE hFveVolume,

LPCGUID AuthMethodGUID,

ULONG FveBackupFlags

);

NTSYSAPI

HRESULT

NTAPI

FveCheckADRecoveryInfoBackupPolicy(

HANDLE hFveVolume,

ADA_GP_OPTIONS * ADPolicy

);

NTSYSAPI

HRESULT

NTAPI

FveCheckADRecoveryInfoBackupPolicyEx(

ADA_GP_OPTIONS * ADPolicyOs,

ADA_GP_OPTIONS * ADPolicyFdv,

ADA_GP_OPTIONS * ADPolicyRdv

);

NTSYSAPI

HRESULT

NTAPI

FveGetDataSet(

HANDLE FveVolumeHandle,

PUCHAR DataSetBuffer,

SIZE_T DataSetBufferSize,

SIZE_T * ActualDataSetBufferSize

);

NTSYSAPI

HRESULT

NTAPI

FveIsHybridVolume(

HANDLE FveVolumeHandle,

PBOOL IsHybrid

);

NTSYSAPI

HRESULT

NTAPI

FveIsHybridVolumeW(

PCWSTR VolumeName,

PBOOL IsHybrid

);

NTSYSAPI

HRESULT

NTAPI

FveNeedsDiscoveryVolumeUpdate(

HANDLE FveVolumeHandle,

PBOOL NeedsUpdate

);

NTSYSAPI

HRESULT

NTAPI

FveServiceDiscoveryVolume(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveNotifyVolumeAfterFormat(

HANDLE FveVolumeHandle

);

NTSYSAPI

HRESULT

NTAPI

FveSaveRecoveryPasswordBackupFlag(

HANDLE FveVolumeHandle,

LPCGUID pRecoveryPasswordGuid,

PCFVE_AUTH_ELEMENT pRecoveryPassword

);

NTSYSAPI

HRESULT

NTAPI

FveDraCertPresentInRegistry(

PBOOL ptCertPresent

);

NTSYSAPI

HRESULT

NTAPI

FveSysOpenVolumeW(

PCWSTR VolumeName,

HANDLE * phFveSys

);

NTSYSAPI

HRESULT

NTAPI

FveSysCloseVolume(

HANDLE FveSys

);

NTSYSAPI

HRESULT

NTAPI

FveSysGetUserFlags(

HANDLE FveSysHandle,

PULONG UserFlags

);

NTSYSAPI

HRESULT

NTAPI

FveSysSetUserFlags(

HANDLE FveSysHandle,

ULONG UserFlags

);

NTSYSAPI

HRESULT

NTAPI

FveSysClearUserFlags(

HANDLE FveSysHandle,

ULONG UserFlags

);

typedef enum _FVE_QUERY_TYPE {

FVE_QUERY_UNKNOWN = 0,

FVE_QUERY_UNSUPPORTED,

FVE_QUERY_VOLUMES,

FVE_QUERY_CSV_VOLUMES,

FVE_QUERY_DE_NOT_INITIALIZED,

FVE_QUERY_WCOS_SECURITY_INFO,

FVE_QUERY_MAX

} FVE_QUERY_TYPE, *PFVE_QUERY_TYPE;

typedef struct _FVE_WCOS_SEQURITY_INFO_REQUEST {

USHORT Version;

USHORT Size;

ULONG CompletionWaitTime;

} FVE_WCOS_SEQURITY_INFO_REQUEST, *PFVE_WCOS_SEQURITY_INFO_REQUEST;

typedef struct _FVE_WCOS_SEQURITY_INFO_RESPONSE {

USHORT Version;

USHORT Size;

UCHAR Secure;

UCHAR SecureBootBinding;

UCHAR ProvisioningStarted;

UCHAR ProvisioningComplete;

ULONGLONG EncryptionRequiredMask;

ULONGLONG EncryptionEnabledMask;

ULONGLONG EncryptionCompleteMask;

ULONGLONG ProtectionArmedMask;

ULONGLONG RecoveryPasswordAbsentMask;

ULONGLONG ReadOnlyRequiredMask;

ULONGLONG ReadOnlyEnabledMask;

} FVE_WCOS_SEQURITY_INFO_RESPONSE, *PFVE_WCOS_SEQURITY_INFO_RESPONSE;

NTSYSAPI

HRESULT

NTAPI

FveQuery(

FVE_QUERY_TYPE FveQueryType,

PBYTE InputBuffer,

ULONG InputSize,

PBYTE OutputBuffer,

ULONG *OutputSize

);

typedef enum _FVE_CONTROL_TYPE {

FVE_CONTROL_UNKNOWN = 0,

FVE_CONTROL_CLEAR_KEYS_FROM_KEYRING,

FVE_CONTROL_MAX

} FVE_CONTROL_TYPE, *PFVE_CONTROL_TYPE;

NTSYSAPI

HRESULT

NTAPI

FveControl(

FVE_CONTROL_TYPE FveControlType,

PBYTE InputBuffer,

ULONG InputSize,

PBYTE OutputBuffer,

ULONG *OutputSize

);

HRESULT

NTAPI

FveApplyNkpCertChanges(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveGenerateNkpSessionKeys(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveGenerateNbp(

HANDLE FveVolumeHandle,

DWORD CertThumbprintSize,

BYTE* CertThumbprint

);

HRESULT

NTAPI

FveRegenerateNbpSessionKey(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveCanStandardUsersChangePin(

PBOOL ptStandardUsersCanChangePin

);

HRESULT

NTAPI

FveCanStandardUsersChangePassphraseByProxy(

HANDLE FveVolumeHandle,

PBOOL ptStandardUsersCanChangePassphraseByProxy

);

HRESULT

NTAPI

FveCheckPassphrasePolicy(

HANDLE FveVolumeHandle,

PCWSTR Passphrase

);

HRESULT

NTAPI

FveDecrementClearKeyCounter(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveGetClearKeyCounter(

HANDLE FveVolumeHandle,

PULONG ClearKeyCounter

);

NTSYSAPI

HRESULT

NTAPI

FveAddAuthMethodSid(

HANDLE FveVolumeHandle,

PCWSTR FriendlyName,

PSID Sid,

USHORT Flags,

LPGUID AuthMethodGuid

);

NTSYSAPI

HRESULT

NTAPI

FveGetAuthMethodSid(

HANDLE FveVolumeHandle,

PSID Sid,

LPGUID AuthMethodGuidArray,

PULONG AuthMethodCount

);

NTSYSAPI

HRESULT

NTAPI

FveUnlockVolumeAuthMethodSid(

HANDLE FveVolumeHandle,

LPCGUID AuthMethodGuid

);

NTSYSAPI

HRESULT

NTAPI

FveGetAuthMethodSidInformation(

HANDLE FveVolumeHandle,

LPCGUID AuthMethodGuid,

PUSHORT Flags,

PSID Sid,

PULONG SidBufferSize

);

typedef struct _FVE_FIND_DATA_V1 {

ULONG FveFindVersion;

FVE_DEVICE_TYPE DevType;

} FVE_FIND_DATA_V1, *PFVE_FIND_DATA_V1;

NTSYSAPI

HRESULT

NTAPI

FveFindFirstVolume(

PHANDLE FveFindHandle,

PFVE_FIND_DATA_V1 FindData

);

NTSYSAPI

HRESULT

NTAPI

FveFindNextVolume(

HANDLE FveFindHandle,

PFVE_FIND_DATA_V1 FindData

);

NTSYSAPI

HRESULT

NTAPI

FveGetVolumeNameW(

HANDLE FveHandle,

PULONG VolumeNameBufferCchLen,

LPWSTR VolumeName

);

HRESULT

NTAPI

FveUpdateBandIdBcd(

HANDLE FveVolumeHandle

);

HRESULT

NTAPI

FveLogRecoveryReason(

HANDLE FveVolumeHandle,

DWORD RecoveryReason,

PCWSTR ApplicationPath,

DWORD ChangedBcd

);

HRESULT

NTAPI

FveIsSchemaExtInstalled(

PBOOL SchemExtInstalled

);

typedef

enum _FVE_SECUREBOOT_BINDING_STATE {

FVE_SECUREBOOT_BINDING_UNKNOWN = -1,

FVE_SECUREBOOT_BINDING_NOT_POSSIBLE = 0,

FVE_SECUREBOOT_BINDING_DISABLED_BY_POLICY,

FVE_SECUREBOOT_BINDING_POSSIBLE,

FVE_SECUREBOOT_BINDING_BOUND

} FVE_SECUREBOOT_BINDING_STATE, *PFVE_SECUREBOOT_BINDING_STATE;

HRESULT

NTAPI

FveGetSecureBootBindingState(

PFVE_SECUREBOOT_BINDING_STATE SecureBootBindingState

);

HRESULT

NTAPI

FveIsDeviceLockable(

HANDLE hFveVolume

);

HRESULT

NTAPI

FveLockDevice(

HANDLE hFveVolume

);

HRESULT

NTAPI

FveIsDeviceLockedOut(

HANDLE hFveVolume,

BOOL *IsDeviceLocked

);

HRESULT

NTAPI

FveValidateDeviceLockoutState(

HANDLE hFveVolume

);

HRESULT

NTAPI

FveGetDeviceLockoutData(

HANDLE hFveVolume,

PBYTE PerUserData,

ULONG *PerUserSize

);

HRESULT

NTAPI

FveUpdateDeviceLockoutState(

HANDLE hFveVolume,

PBYTE PerUserData,

ULONG PerUserSize

);

HRESULT

NTAPI

FveUpdateDeviceLockoutStateEx(

HANDLE hFveVolume,

PBYTE PerUserData,

ULONG PerUserSize,

ULONG Flags

);

HRESULT

NTAPI

FveDisableDeviceLockoutState(

HANDLE hFveVolume

);

HRESULT

NTAPI

FveRecalculateOffsetsAndMoveMetadata(

HANDLE hFveVolume

);

HRESULT

NTAPI

FveDeleteDeviceEncryptionOptOutForVolumeW(

PCWSTR VolumePath

);

NTSYSAPI

HRESULT

NTAPI

FveGetExternalKeyBlob(

PBYTE* Buffer,

DWORD* BufferSize

);

NTSYSAPI

HRESULT

NTAPI

FveEscrowEncryptedRecoveryKeyForRetailUnlock(

PBYTE Buffer,

DWORD BufferSize

);

HRESULT

NTAPI

FvepCanPinExceptionPolicyBeApplied(

PBOOL Result

);

NTSYSAPI

HRESULT

NTAPI

FveCanPinExceptionPolicyBeApplied(

PBOOL Result

);

NTSYSAPI

HRESULT

NTAPI

FveResetTpmDictionaryAttackParameters(

);

NTSYSAPI

HRESULT

NTAPI

FveCommitChangesEx(

HANDLE FveVolumeHandle,

FVE_SCENARIO_TYPE FveScenario

);

#pragma warning(disable:4103)

#pragma pack(push,1)

typedef   struct _FVE_EXTERNAL_DATA_ENTRY_INFO_V1 {

USHORT      StructureSizeBytes;                                     

USHORT      StructureVersion;                                       

GUID        EntryTypeId;                                            

GUID        EntryId;                                                

WCHAR       EntryLabel[(16)];   

FILETIME    DateTimeCreated;                                        

} FVE_EXTERNAL_DATA_ENTRY_INFO_V1, *PFVE_EXTERNAL_DATA_ENTRY_INFO_V1;

typedef const FVE_EXTERNAL_DATA_ENTRY_INFO_V1 * PCFVE_EXTERNAL_DATA_ENTRY_INFO_V1;

typedef struct _FVE_EXTERNAL_DATA_ENTRY_SELECT_V1 {

USHORT      StructureSizeBytes;                                     

USHORT      StructureVersion;                                       

ULONG       SelectFlags;                                            

GUID        EntryTypeId;                                            

GUID        EntryId;                                                

} FVE_EXTERNAL_DATA_ENTRY_SELECT_V1, *PFVE_EXTERNAL_DATA_ENTRY_SELECT_V1;

typedef const FVE_EXTERNAL_DATA_ENTRY_SELECT_V1 * PCFVE_EXTERNAL_DATA_ENTRY_SELECT_V1;

#pragma warning(disable:4103)

#pragma pack(pop)

HRESULT

NTAPI

FveExternalDataCreateEntry(

HANDLE  FveVolumeHandle,

ULONG   CreateEntryFlags,

PFVE_EXTERNAL_DATA_ENTRY_INFO_V1 NewEntryInfo,

USHORT  RawDataSizeBytes,

PUCHAR RawData

);

HRESULT

NTAPI

FveExternalDataGetEntryRawData(

HANDLE  FveVolumeHandle,

PCFVE_EXTERNAL_DATA_ENTRY_SELECT_V1 EntrySelect,

USHORT  BufferSizeBytes,

PUSHORT OutSizeBytes,

PUCHAR Buffer

);

HRESULT

NTAPI

FveExternalDataGetEntryInfo(

HANDLE  FveVolumeHandle,

PCFVE_EXTERNAL_DATA_ENTRY_SELECT_V1 EntrySelect,

USHORT  EntryInfoStructVersion,

ULONG   BufferSizeBytes,

PULONG  OutSizeBytes,

PUSHORT OutEntryCount,

PFVE_EXTERNAL_DATA_ENTRY_INFO_V1 Buffer

);

HRESULT

NTAPI

FveExternalDataDeleteEntries(

HANDLE FveVolumeHandle,

PCFVE_EXTERNAL_DATA_ENTRY_SELECT_V1 EntrySelect,

PUSHORT DeletedEntryCount

);

</stylesheets>

<Element

resid = "main"

layout = "borderlayout()"

accessible = "true">

<Element

id = "atom(mainpanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "top"

padding = "rect(28rp,11rp,11rp,11rp)">

<Element

id = "atom(pinchangepanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "top">

<Element

id = "atom(changepindialogtitle)"

content = "resstr(4201)"

contentalign = "wrapleft"

accessible = "true"

accrole = "text"

accdesc = "Change PIN Dialog Title"

accname = "resstr(4201)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "top"

margin = "rect(0rp,0rp,0rp,11rp)"

font = "gtf(TaskDialogStyle, 2, 0)"

foreground = "gtc(TaskDialogStyle, 2, 0, 3803)"/>

<Element

id = "atom(pinconstraintstext)"

content = "do not localize"

contentalign = "wrapleft"

accessible = "true"

accrole = "text"

accdesc = "PIN Constraints Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "top"

margin = "rect(0rp,0rp,0rp,11rp)"/>

<Element

id = "atom(pinerrortextpanel)"

layout = "borderlayout()"

layoutpos = "none"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)"

width = "420rp">

<Element

id ="atom(pinwarningicon)"

content = "icon(84,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "Warning Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"/>

<Element

id = "atom(pinstatustexterroricon)"

content = "icon(98,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accname="Error!"

accDesc="Error icon."

accdesc = "Error Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"/>

<Element

id ="atom(pinstatustext)"

content = ""

accessible = "true"

accrole = "text"

accdesc = "Status Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

margin = "rect(7rp,0rp,0rp,0rp)"

contentalign = "wrapleft"/>

</Element>

<Element

layout = "rowlayout(1)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4202)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter Existing PIN Label"

accname = "resstr(4202)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(existingpinedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "20"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter Existing PIN Edit Field"

accname = "resstr(4202)"

active = "mouse|keyboard"

layoutpos = "left"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

<Element

layout = "rowlayout(1)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4203)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter New PIN Label"

accname = "resstr(4203)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(newpinedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "20"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter New PIN Edit Field"

accname = "resstr(4203)"

active = "mouse|keyboard"

layoutpos = "left"

shortcut = "auto"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

<Element

layout = "rowlayout(1)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4204)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter New PIN Confirm Label"

accname = "resstr(4204)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(newpinconfirmedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "20"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter New PIN Confirm Edit Field"

accname = "resstr(4204)"

active = "mouse|keyboard"

layoutpos = "left"

shortcut = "auto"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

</Element>

<Element

id = "atom(passphrasechangepanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "none">

<Element

id = "atom(changepassphrasedialogtitle)"

content = "resstr(4214)"

contentalign = "wrapleft"

accessible = "true"

accrole = "text"

accname = "resstr(4214)"

accdesc = "Change Password Dialog Title"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "top"

margin = "rect(0rp,0rp,0rp,11rp)"

font = "gtf(TaskDialogStyle, 2, 0)"

foreground = "gtc(TaskDialogStyle, 2, 0, 3803)"/>

<Element

id = "atom(changepassphrasenonosdialogtitle)"

content = "resstr(4223)"

contentalign = "wrapleft"

accessible = "true"

accrole = "text"

accdesc = "Change Password For Non-OS Dialog Title"

accname = "resstr(4223)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "none"

margin = "rect(0rp,0rp,0rp,11rp)"

font = "gtf(TaskDialogStyle, 2, 0)"

foreground = "gtc(TaskDialogStyle, 2, 0, 3803)"/>

<Element

id = "atom(passphraseconstraintstext)"

content = "do not localize"

width = "400rp"

contentalign = "wrapleft"

accessible = "true"

accrole = "text"

accdesc = "Password Constraints Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "top"

margin = "rect(0rp,0rp,0rp,11rp)"/>

<Element

id = "atom(errortextpanel)"

layout = "borderlayout()"

layoutpos = "none"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)"

width = "420rp">

<Element

id ="atom(asciiwarningicon)"

content = "icon(84,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "ASCII Warning Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"/>

<Element

id = "atom(statustexterroricon)"

content = "icon(98,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "Error Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"/>

<Element

id ="atom(statustext)"

content = "resstr(IDS_DIALOG_ASCII_WARNING)"

accessible = "true"

accrole = "text"

accdesc = "Status Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

margin = "rect(7rp,0rp,0rp,0rp)"

contentalign = "wrapleft"/>

</Element>

<Element

layout = "rowlayout(2)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4215)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter Existing Password Label"

accname = "resstr(4215)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(existingpassphraseedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "256"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter Existing Password Edit Field"

accname = "resstr(4215)"

active = "mouse|keyboard"

layoutpos = "left"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

<Element

layout = "rowlayout(2)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4216)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter New Password Label"

accname = "resstr(4216)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(newpassphraseedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "256"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter New Password Edit Field"

accname = "resstr(4216)"

active = "mouse|keyboard"

layoutpos = "left"

shortcut = "auto"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

<Element

layout = "rowlayout(2)"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

content = "resstr(4217)"

accessible = "true"

accrole = "statictext"

accdesc = "Enter New Password Confirm Label"

accname = "resstr(4217)"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

minsize = "size(150rp, 0rp)"

height = "23rp"

shortcut = "auto"

margin = "rect(0rp,0rp,0rp,0rp)"/>

<PassphraseEdit

id = "atom(newpassphraseconfirmedit)"

width = "200rp"

height = "23rp"

passwordcharacter = "9679"

content = "_"

multiline = "false"

maxlength = "256"

themedborder = "true"

accessible = "true"

accrole = "text"

accdesc = "Enter New Password Confirm Edit Field"

accname = "resstr(4217)"

active = "mouse|keyboard"

layoutpos = "left"

shortcut = "auto"

absorbsshortcut = "true"

margin = "rect(0rp,0rp,0rp,0rp)"/>

</Element>

<CCCheckbox

id = "atom(showpassphrasebox)"

layoutpos = "none"

contentalign = "wrapleft"

content = "resstr(4225)"

accname = "resstr(4225)"

accessible = "true"

margin = "rect(0rp,0rp,0rp,11rp)"/>

</Element>

<Element

layout = "borderlayout()"

layoutpos = "top"

accessible = "false"

margin = "rect(0rp,0rp,0rp,11rp)">

<Element

id = "atom(elevationicon)"

content = "icon(78,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "Elevation Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"/>

<CCSysLink

id = "atom(managebitlockerlink)"

width = "400rp"

height = "20rp"

content = "resstr(4205)"

accessible = "true"

accrole = "link"

accname = "resstr(4205)"

accdesc = "Manage BitLocker Link"

shortcut = "auto"

layoutpos = "left"

contentalign = "wrapleft"

margin = "rect(7rp,0rp,0rp,0rp)"/>

<CCSysLink

id = "atom(managebitlockerpassphraselink)"

width = "400rp"

height = "20rp"

content = "resstr(4222)"

accessible = "true"

accrole = "link"

accname = "resstr(4222)"

accdesc = "Manage BitLocker Passphrase Link"

shortcut = "auto"

layoutpos = "none"

contentalign = "wrapleft"

margin = "rect(7rp,0rp,0rp,0rp)"/>

</Element>

<CCSysLink

id = "atom(passphrasehelplink)"

width = "400rp"

height = "20rp"

content = "resstr(4218)"

accessible = "true"

accrole = "link"

accname = "resstr(4218)"

accdesc = "Help Link"

shortcut = "auto"

layoutpos = "none"

contentalign = "wrapleft"

margin = "rect(0rp,0rp,0rp,11rp)"

padding = "rect(23rp,0rp,0rp,0rp)"/>

<Element

id = "atom(confirmationtextpanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "none"

margin = "rect(0rp,0rp,0rp,0rp)">

<Element

content = "icon(81,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "Info Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

visible = "true"/>

<Element

width = "400rp"

height = "60rp"

content = "resstr(4210)"

accessible = "true"

accrole = "text"

accname = "resstr(4210)"

accdesc = "Confirmation Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

margin = "rect(7rp,0rp,0rp,11rp)"

contentalign = "wrapleft"/>

</Element>

<Element

id = "atom(passphraseconfirmationtextpanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "none"

margin = "rect(0rp,0rp,0rp,0rp)">

<Element

content = "icon(81,sysmetric(49),sysmetric(50),library(imageres.dll))"

accessible = "true"

accrole = "graphic"

accdesc = "Info Icon"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

visible = "true"/>

<Element

width = "400rp"

height = "60rp"

content = "resstr(4220)"

accessible = "true"

accrole = "text"

accname = "resstr(4220)"

accdesc = "Password Confirmation Text"

background = "ARGB(0, 0, 0, 0)"

layoutpos = "left"

margin = "rect(7rp,0rp,0rp,11rp)"

contentalign = "wrapleft"/>

</Element>

</Element>

<Element

layout = "borderlayout()"

accessible = "false"

layoutpos = "bottom"

height = "45rp"

background = "menubar">

<Element

id = "atom(normalbuttonpanel)"

layout = "borderlayout()"

accessible = "false"

layoutpos = "right"

height = "45rp"

background = "ARGB(0, 0, 0, 0)">

<CCPushButton

id = "atom(changepinbutton)"

content = "resstr(4208)"

minsize = "size(75rp, 23rp)"

accessible = "true"

accrole = "pushbutton"

accname = "resstr(4208)"

accdesc = "Change PIN Button"

layoutpos = "left"

shortcut = "auto"

padding = "rect(0rp,11rp,7rp,11rp)"/>

<CCPushButton

id = "atom(changepassphrasebutton)"

content = "resstr(4219)"

minsize = "size(75rp, 23rp)"

accessible = "true"

accrole = "pushbutton"

accname = "resstr(4219)"

accdesc = "Change Password Button"

layoutpos = "none"

shortcut = "auto"

padding = "rect(0rp,11rp,7rp,11rp)"/>

<CCPushButton

id = "atom(cancelbutton)"

content = "resstr(4207)"

minsize = "size(75rp, 23rp)"

accessible = "true"

accrole = "pushbutton"

accname = "resstr(4207)"

accdesc = "Cancel Button"

layoutpos = "left"

shortcut = "auto"

padding = "rect(0rp,11rp,11rp,11rp)"/>

<CCPushButton

id = "atom(closebutton)"

content = "resstr(4213)"

minsize = "size(75rp, 23rp)"

accessible = "true"

accrole = "pushbutton"

accname = "resstr(4213)"

accdesc = "Close Button"

layoutpos = "none"

shortcut = "auto"

enabled = "false"

padding = "rect(0rp,11rp,11rp,11rp)"/>

</Element>

</Element>

</Element>

</duixml>

(0`����������������������������pww���w�w�w�w11p�w3s0��133��33P��177��310�w13s��S3y0���#33w����s��0x�����;�707������7s�������330��3ss�y�pw�8��370{�p81h�89!pw�x�pxw3s0wx�{x��ww3�s�wx��w�ux�w337790���wx���7xww�w�3px��wx���w�������s�����x���������3�sx��p�x�������x���������0�x������������3ssxp������������9;{{{x13w���������w3yssyy��3www�������wx��8�88��x3�wwp���xwwx����x7����;S�wwp�ww��������;���xxx3��x�����������w�����;S�������������8�����w3�����������s�����;�����������8�����w3���������y7����y��������3{���37����������7��1{x�30s933�sp��x37s��50ssp���������������������������������������������������������������������������?����������������������������������������?������������������������������������( @���������������������������xpwxpw3xp3sxp3x3sx��1���'7w���[{���ws7�w�1hs88��sw3sx{ww�ws���x���w����������7��sx�����{���9�7�������x����{s����������873{������w���7�wpx�������8x���w��������88�{y���������8x��7��������{x��3������9���{������8�9x�����3370��8�7y����������������������������������������������������������(0 ���������������������������w�p1�3p31�70�s38x�577���30����sp��7�s0��W9pww�w�s70w��󸈇��px�����3379px����y{y{70����w{��87w������x��p������;�px���78����y�yx��783p{�77p���������������������������������������?��( ����������������������������w�3�1�70337�31wp{xx�S8�w��xxs77w7�sss76���s�1�7w778�?������������w����󷈏�{s{�pw����������������(0`	=??0JAX1GSDgNnIaMqOrUyYv\w]{_~/Wi!`~9i~NOPY[\Pjuddejklhv{qppwwx]�e�f�l�
l�m�q�u�&i�+h�0l�9o�+q�7t�$q�%u�#x�2w�3z�7|�8�|�)~�Vx���'��6��8��?��8��?��*��.��0��<��?��3��8��A��K����e��}��T��S��F��L��A��B��D��J��[��i��S��u��:��J��O��C��Z��]��Q��R��U��W��Y��H��O��[��X��a��z��l��a��i��m��d��s��v�����������������������������������������������������������������������������������½�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Cwww���wy��y��ww��rC
%��ol30&��j�;��j�	4��j�	?"$o�y4o�wp!4"
j���y4!j�����w3"00!sl��������U@<	
2��������Â3RR6?6B�̐��������:<	#TVO��n��̮����j4:+WD�}(-=�r6?@01MF��`�wg^@3#LPft�oiy�"]4
4llWfN��C�E
001 llo���P[O��̫�jD36LUllo����~jViEQs|�r+3340
= =lp����~Cjp~~�a��mrymD2B6BFGig6  ry���~jjo~������Vgg�����T_[M6544=L=J6����vjoz����������Vi�����="1*155GQfI+L��llv~�������������a���i����hfgdheVah�5�rC�����������������W����aea696=64

6hN�ow�����������������e��WI =_===LP:�(F�j~����������ƶ�~qCF47F- *47888M6(�
DCol�j����������~vljjr~�|F-�T-BGFGNQ��Oh#rjlnC�Cv��~vvqlCCo~��������BWV6��������Ge'�yojjoo�yoolor��������������BaW6���~yyv�B[ '��wll��~�õ��������������BV[7�����~~o,X*)�����r�o������������ÿ���BV[7��������BT*#�������p������������úBP[7��������BL1#y������r�������������B7[=��������B=6'�����������������F =I�º�����B+='������~�������B *_G�õ����"6'�y�y������|16X������9$L,��O==N�|b5915##1+*"#=A68LT[WS*5/G5[cV# /A.*,A���������������������������������������������������������������������������?����������������������������������������?������������������������������������( @=??AX1GSDgRiMqUyYv_~/Wi!`~9i~NOPjklhv{qpp]�f�u�&i�*q�3r�7t�$q�3z�>}�)~�Vx���'��6��8��?��8��?��0��K����e��}��I��C��S��F��K��I��L��B��D��J��V��Z��_��i��S��u��:��J��O��Z��]��R��H��[��^��a��z��d��i��d��i��s��u��v��������������������������������������������������������������������������½����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Nn
XPX&v
XX$X`
X&
$KK`
N`v��
$K`vvn�n$8%K���n
?4*=GK%9	O
?8BFFKX($47@GCS^
P+WXW7GF=NBvNKK4XWn_W_7@Ij\R\`5+4/# XWXW_W_orr<ggJiB#:::F:XXo[_[n�����n<FJjmJ1# :# #[W[_w��������w<gjkld7:>8B=#WTw���������w_BjjHDE/1 /+XX�������vXTKNB4 #,+l'KXXnnaaWNXX`nxxuRm66e�4dNKP&nXPX`v��������%h+_XWX+.%|XXNrn`����|������d+vn`X,��^n`n���������%74v!v��|nnv������=���f#n`�vnb|���f =~{% R``nubb��#.vnu`#*g.43)4���������������������������������������������������������(0@1GSDgIaMqUy_~!`~9i~NOPY[\jklqppwwx]�e�
l�m�&i�7o�+q�?r�<w�$q�#x�3z�)~�Bu�Bx�Jy�'��6��9��8��?��8��?��K��e��}��H��L��T��C��N��S��I��J��[��S��u��:��C��Z��]��^��a��z��i��e��i��u�����������������������������������������������������������������������½���������������������������������������������������������������������������������������������������������������������������������������@
@R
@B@b
@B@g5@b++W@Uir	4 @ggivi	1=@jFJBh
918@Z22M	6.8HZ	'C@BB.>O6ZB
/@BLRVV`.<XMMI32;9"CS\Vgozzt.>7, CUhx~��~t#.#$$:J`ossh^QJ(&/Y"Ud WB
LMMUUUbgiii0Y&g`#:UCG@MMg��ury{{/W#ig 1vib@MM]r����W&{u #]i�MMg{�1"uq "RRSMU&"++) #[ "*!+-���������������������������������������?��( MqNOPY[\Pjuddejklhv{qppwwx'�[]�f�
l�m�7t�$q�3z�|�Vx�6��?��*��.��0��3��K����e��T��[��:��H��O��X��d��u��]��m��g��v��f��������������������������������ǥ�����������������������������������������������������33933
;+!	3A3,4/+%%%);*A	
/	
/%"%)/?	
/5-EEE@;7&/ //////3'> DDD>5;'>!99;>&# $(�����������������PNG


IHDR\r�f IDATx��y�e�U�����_n�Yյ�����@u7��1B�lˀ���Fb6;6��=�X4d$a��-��V�ԭ��V{Uf���mw���#"�/+��M/�-�|>����/�9��'`O�dO�܊���'{���K�Iq07Y����!��F��q���c���/��~�Ȟؓ�"����"U__��U��4�&����$!�Ɨ/�A��w]�f����3=1wӻ���m�KK����`�?�U�"n_�/.,zY����v�t:e��q�Ο �r����_F�c������F�V'�f�}�P��?y��!{`O�w��_}������)ynn��+^w�G�L��€�bx�3��b�}mE6f<�f2������MFS���$	h5Cڝ�N!`4��)Z��\�h#���~꓏^�>x�ʞؓ�M��O�>����FR,t�=^��o�k���*�L�A1:�6)*��Md��h��`���'O��k\�Lɲ�(��	Gt9zx���Jk�6���Q�@*��G��O��?v�2vNjR���<�r�Ǯ�ܾ|CИ�� �mwZ,�/q��5�m��+0���|�m��50���:�!P�t��`��?��p��N���9AJI�q���{��\��I��qa���6*K��#��G��?=�}��E%{`O�S�迸�z`~����V��c��2�+G�/\A�\&lAF}v=�ƨt����`��a��S�P��4�cOp���OsaP���^�׼� _�5�&I�_����*�Ɉ"W���W�������5���ϓ����+G����KE��Q�����p�5/�ï��p�#dtQ��˭B�	����рq3��5N�����!C��ɾ���j����ٔ��	�QΩS[�[��}��^��1P(�h�}�9�V��W��o;5�l�"�=�'�Z����$VL�3��N�ˁ�W��𕴺a�@��BHBJ�����aP��VST�1���1F��…	�����g?�%n��Iή�Gtx��^�k_�J����s����!E����7|�~���ځ�Q���<+���� =���	�?�=z�ˇ��s RM�i�J���!ۛ���ɘ<�FRH�`� ɳ�$�1Z�6�N�f��@"H)0FctN:���#���[��'6),����p��o��h���řS�Y_�@�M��ۿ��>���ُ�K�������w�����\H�..-r���Ds #��B�)�d���MN�:��S����bE��`�EN!ԤPQ#�@��Ta��%�۷����N�$iE�h�,��3|��w�V�
I�a��k��������"��S'O�z�<�t����ٿ���K_��,���ɟI~�?�3�Ϭ��ď,..p���-� �6�A
�kg����[������3h���D4��0�È8��� ����@J��@:���5�G���S��S�J�#IF��-���1���9f��鳛L�c��?ק�� � �3TZ|��w߸������n�=�'�X�ݯ�W���L����<��fna�@gh5�ǹ�O��ӟ��;>��ф��Gα0ߣ�H��*�����Q��1�F�~7"6�|�S<��iΟ�`:�&i��]���=pacJ��W��LF\��n�O��A
�4�R�\�o}�u���O<~����=�'�X��5�?G����>r���%D�J��8˟��?��=|����9G�hs��,���q��`��?ˏ��ӷ�tZ�a�Ï]���q��Y:ba���b���[Ì\���M�|ʑ�h���;�1L'S
�ߖ*��'���e��D���<#���ӷGR�V����Yڷ��!��6<����w�fmc�b?�U/���yZ�f��RJ�  Nb$X6��P������v;aq�I�!�d�>7���8y�@(zm�d��!+�…-��r��2�V�V��1�t�R�_{��_�G�ģ_�{`O�������+�g��F����}�R����mw�͟�'ώ��\���-�°�F��Zm���,��zw��N�B�	{h���� ��m0ߑ�J�=�lrN�2g
�9 �(`��&��aey�(j�h6QEN�����{��;�~������;_�g��iɧ�/��u�ߒf��_q�@HN�>�'>�Y>{�)#MI�:��k�{�bRJ��������Q���&�R�2�Uc��,Κ,�?����=ژ{�Q�F�T tR3h@JI��d���T�p\���&�\.8# X_�bi����qҠ�HH�)y1
�Q��o�ګ��Go>���8���ɞ��O�$
��V����R|�Qn���<yj��Xpա/�z�f�Y��A@��fi�
�v���u��V��cZ1H��w�x�<����jp>��~�%#��_�:�&l����_��z�0�n�3�ƒRHp�!B�뵹�e!/p��,���z8�6�[���\�+]E�3���~��	C��1���S/XG�����'_V>�3_w�H�]�$Y^޷L���G�c�s��mI�S�%�&`�� `n~�}��$I����9�<Y�a���|]Es�$�����؝�8�_�q)�V�h"~5¥��0Mx�5�85�P5��0�(0��+�ƿt=�<��p��N�<�d2&Oo�ޟ��-Ϧ_��g��)�7?��@��?7����Yܷ��瓷<��-�09��k��tZl��KK8p� Y=�3�ϒ�S�1dJ�������c��>�o���;����@ȟ�21��h�}�q���l�1mݐo{��x�^��
�lĉ�O����pK=�rU��}���9_l����S�_���^	~-i6XX�g{0�;��j�)
��B��v�n�cSt����}8x�8IX��ƹ�gI�r)έ��Ώ��?��#���9?z���#|����U�HG�F!�!$Q�mJ��&�-@b��)Ey��\yd�v� �	$L�#4��*~�S'oz.���$�˟�'^���[D1���0h��(�x�'9s~�f��w^~��n���C��[�������
Ο=�t:%E��?������?�|<�w���6�j��ke	)��\{�K�!R ���
�Sg��u�d�!$����Q�����/�<�|9e���%e}��h�7GaLE�9}�Ǟ\#˭�p��>KKs�.��€ťE�8@7��G�;w��xL�g��Nҿ�m��s��s����2�K�g�%2Z#�a���G�hv�q#�$q5��f�/���'�92���_���F��`:����s_�3{����?y�(���(�a0ns��.l AW\��##�R��Y^>@�t(����l���@�����:z!��o���W_�oO��m�F I���W�X�BVC�-�2%k�S���'��mѠ��an~�(�H��~�g�n�x�J����*A'�6I��RR��ᐳ���&�,�C����h�s��v��4Zm�.��Xc}}�4M�#��w��;��x��ʛ����������F;X���=��$�m����4PF��cg9}��)#��h�[DQ���/d�o�3{��Ƞ�v)e�I;�#6A h6W�07�+���qľ}����"`:ram�t:oe��?t���h�;��<��yq "���8����bq����]� \����2C�lӟ[ c�4�o?����h��!{`O.���_���9������ڈi���/5ؿo���'���џ�G QEf�qnoF������.�Һ��3�>#���\#��
��D��Tsa��ڣ�웏	�Akx��UΟ;��
)C�]��1���<�y.e���ER(�2��4��9������>�F�Ah4���/�-�0
��� ����^SgK�4����!"��,��cX�F	�~�AZ
���=�y�����NM��.A������1��g��"�	VH�2y
[��QN ���=��1s��=��6�*r���lN������g��(*�ſy������b��j��ЦKÌ��)�^}���m��4�<qb���`4A�j���@�K���r�鹐=�'3���I!y��h��Y��d�r�8Ik.h6�/���NGlmm������.\���;��5�@,.�h���^�D�W��*ډ�X���ԩӶP)�f�E��"C����n�s!{`Ofd.��@��4M�ޞ�)��&s����� ����� H��1��یƓq�=�ח�-��l4��R��A��a��p~m�`{��C+=�@ �����uƓB@'�ZM�0$�����]�<[�3{2#Z�~��eKq&���0��8��'�"[��I�ܾC4_K2&h1��B��Ͼ�}�=��C�����
���,/���<7lnl�h69rh���<���
�!�M[|�۶���nϳ�=�'3�
�R���0�
�°8��\h ����Ҟ�/"����4ǣ�]�v<������2��i�J$X__'�s���B!�[.l��!��j�12�\q�}��)�V����r�ߐ��}WZo'(���hDJ�-u��\Nk+����.�19y6e&�s�C�C��%O-����i`>��$	Y����ƈ�P�z=]1G#��X[#M���AH�� �1����my��g���l㾫ZI��~M�Қ�0�ߖ��.�_ʀ$IH�����_�pk�����_;�.kC��|�o�j���KkM��;	��b2�!G��Պ0N���d2�CH��qr�̹o���/�%�{�^��oY�ڼc^+Gb�6z��€��u�q�_�<a0�#0�雾�O>�w�6�-�c(r�$�,/�i�l�1�6�h�1��h�	VϞ��~���KѾW�m�(��Lh�����������(gs���9�?7G$�J�W�u�y��#�g^�r˭�^�U�v��:��8���&�f�(��0�Ҍ\)�*�Z[�*/(�]h
�(�"ͦ|��?N�}u��4Y^�~�a��\�OE4�M���S�X?�����⑭G.w�<)��l�+w�xK������m�04
���9ynB��8r� B�n��F��|x��`�r���*{�%"7�|�ˌ1�6�7uQ�J!�n��^�V�I��adݻ���+�W��0v�>`PZ��a�d�'�1c4��f��ufjiY/�@H�1�"Ϙ��7/�|���}����zg���/���_.���8�h4b�Cƣ1F�8aiq�P�&�.lQ�0ԄA`+ջ�s�����ݞ?�����r��/�Ƽ[�wc���N�C�ݡ���F��y��v�J���k�c0�0`R�� e��
L�1��N;$I�3	Q��x^(�,�����$���锏}�c��2�{�Mc�=������w]v�ݘxQ
��F#c�Ls��n�VS�9�l
R�<#Ib�($�cFn/��=�'ϕ�r�-�0���]^�$1�~�ŅyZ�ئe��\<4���qQ�cl�+���WW��̄1ӳ dY/KiC��)7�0� IGe�~U(�,�Uo���C`�*G���7�&c����4e2MIӔ����`��p��1f��|���'�OC�y�<�}�8@�d�/�:	s�&[�ی')��mڝ�[!B��/������z�-K�c���s�5��b�&�YM/|<���O�/|���s7}�f}�1Z��v�^o���E�W�YY����
+��,,,���wJ-H	a�j5�ۼC��	$�E��}��`��k�A07ߟyNci���ӣ���h��
�ј�������a0l�����1|���O>W��"�VZB�0�$Q`�MkRq�N�
Ȳ��d���?	B���%Kž�lr뭷.c��C�a ��{=������~:���ǹ��۸�;���8}�kk*o��mXxr��	�O����kZ�A���
��M�-+��0��z�k+�J�a�����G @��Q�n�S��E��xԟN��4�a8Q[�-��o�6X�p��܃a�4�l|�{�s�3��V�jT���k�@H�*y�A�MEĉݚ|:M-A�i\=A9��KQ��(��z�
�
��a��vUzSj���nRh�������ğ�	_��x�Y[[+wع�V[��wJ a����$n�h4Y\\d8�|�z?���֚�(l(�
��[;�5�R�*u���7#@��N�n��Y| S��x��G7yq��`@Q?6���h���&�y��}�{wE
Fm�)l7�4hc�Z��8�H��!��I
h��2@J�\/]�3/��z�? �1��	��^��\�KO_���7��C�WV���3��߄цBV�� ��h�,c2�0�N���f0��=���:[ln�����`�p{�t:"�
���a����yQ�;�؍>d���]@Yh�m��zaеs��K}��r*.,51c05�c/�C��F8x�;W0�(T�րi�ސ�)�[�����:s� �s��'0��:��A&��^�6ʰ	O�@^�4�(���Ƃ8n$�x@��d�<Or�m��#�;|5�4z�s�{�)=�lݬ����W0���Q��2�1}I#i�L�3+ܵ+��o��#U����@P�I�@�	���|}Q~���?���s��kf��<m*e/�O
؄��ap���@�l&hӠ�ic��P�4e:M����#i:�a43
��+0ىL�	bF�+�ۑ#(��
��zH�0|Ig����Pn���2�f0q�ۣ����U�d^,V�+�O�W����}c�t����x�R(������T)�t@�j�	2liɮR�*���C8
1pJW�FԼ��dL�yJd���g��i�A��3�����~J�g� 4aD���tl��s��m��}k,̴�#��bC��X��DE	2�5^ʲg���~��?�]ƈ7L��v]\�}
�g�5ŪO�i=C׽�v���׸-���Q��䌉(cjwA�b
i�UAF(m0�!)u���k{+��
��l�j_�L��a�Q�[��C5̄���.�0��R�.q"�B`.�rA�5+U=�%8�����?��q���4��{]��/��~~y�Kڡje���c����ls]q����W��P�����K�.d�aD��S�Ӻӯ]ag�hC��&���J����C�Ѧ�o�ޘ�e�e��:�4@�=�M3Ƥ<��������U>Eٝ�j�����\��~��~��`>o�&w������ڋS��Ӕ;��;�`̛4���s}���vU���X�4�Ad)k�^�)%A�����KJM˵Dc��j%���~*��#oTd���V �*k�	:�
�<z]y�0��1APz}燭.��g����Zk�*P�@+�-e-42}i%�e;�C#O���(Q��Tf��`S�Lۗ�w�޸=�8���4��~�W����7i�>-���}�{ߋ�@ʞx
��;�*��0$�F���n�8���uH,�t
#�:�2��zl��{�g%�N�4va�P`ZSc�u�0jк���)�<?"DȄ0�mο#�\Cg���f�U<M��h�s�
�AJ��h��J��EJk�����cW�>����F�D[��k��RS�:Hi�
,�����]�T�ka7A]XYae�n��b<���7��n�F?��9��˿|p��|Z���?�G/
��gvȝw�u`~	x�1�
��{�.�+�U��-)�V̱ã?'⵼6�_αU�����McM�W��P��+��ޟB�@��l�O�!J�@��9%�IjP_)�@ռ|׃ �;�8ܭ�&�2���T��>�/��`�D��8�_"��>��O���Z���vPX� IDAT�>��A�ա��p�+�R0�����|�h4���_��_z��i�c��O����� �=�y�o~��`L+�#�v՗��A"�~x@	��[�wR�u�g��3�A���Yeǀ���J��AF5����%K��Xp�B�Ԭ���}8�uTL����[^�.!��$A��ڢ��*���t�>#.n#�0��~�`'��FI�JC��*�5z��ۻ["��P$hh�Zt�A@H��������߷���}y���_��]uU��w��Gs^@�sk��y��C��-@+�"���s}�d6�##d��� �s����[������FP�����c��Ҟ�o��u����BH��Aƕ���Y�
�=;������������;?WA~�Q�B��
U)h�۴�m�16_:�����WƠ��L�{�+0%�*fH?����…G.�2�f���>�b�9
�j
�o4ؿ�B�e�ax�����?�o���?W�رco5�~�y�1��0���2?כQz!�w`�4x�'|�B���u#�D��͏W@�-@�N9��}��˩5�AJk���@4����w��� �q,��%G%�QM�ٓ�������8���1�BQ�#��"�v��V��(��)y�W}Wv�{.�� l[�W��᩵�~���gM���P�xJ�d6���v��UW]U����O�/��/����O��W�8v��Q�ǁ��a���=�F���r���5Q�T�5ZJ��;`�)���1SZ�AV��x�n��u��mS%�h�f�G�6`���
�6kʹA��pĦ�j�8��᰽m
�hM� w��ska@
û3�h��#
C�Tٰ0�h4[AN��y^�%qX*�q\U
��H9\^�5�53�$7�"�,�L�cJ����%�\s�̂�k����z�ӧO�$�g��Ԕ�[�A �v:��k���I� J�-�|(~E����X_D.m�q�fh��E8�_�|�p�@�F� P����|"A�2�6��?#j���T�Д��	��F�DP��Y��ֻ3|4�kp�-�>+ �2)$�f�T�<�(].���F��ie��'jABKԦ2��c=���{�B=z���JfG?����������x�O����]�����w�u;t��򼝝D	q��T�rvί����v��F���(��I1?�mYvݽ��UP��NkkP��f�t�_��"���oh��|<��`�y�2v7P;V&���YL�@�o�o��83|�6�_�8�tߖr�A@al�n����Į���BW��]�V"��.�|��%ztK���t+!Ȳ�C��$Ii��,�2����П�s���q/yp�ر���Qz/3ʏ n�]^J�9U�Y��nJm�����T�x���P�wе�UY��
A5Pu�h�ymw��)�����i6Sˀ{㩕Aʺ(S�j�Ie T�)����ڣ�����w�oX��EQ�W3�]�.�ᇇ^�}�4*����e�#��3X�v�8eY΁h9����@��UV�{�}�k9~��;�7Q}�Ϗ�$
��c�>�5�@���Tz/3�ׄ-ji�xzv�pd�PsHT$��5��.b���'V��{�FK�%+O�!�g�Ey�Y����a�C�q���imZ�O7.��\��*0��{e1�5�>��lf���W�3�>K>VĦ�f�}�4�DY�%�i
� ��ӷ�]���ER��ڗ'lrU]���ș��g~~�=�C
Nɳ,�A��0᪫�B)����_��_����?��%cv*}�۱J��Δ��Mf� ��Y)	�q8ܥ�z%��Xg�f.��!�J_�4�$������%�^��Ҩ�]cU�z�B���<�=��ΩkT��A+�D�3^9����ʇ(�0c��uw��C�!�!O�#
+��ݔt�B�UT�ѨBz&��A��a�|	�I=*De�(k&EA�����᪏kR�Մ��R�5�(��k��/}�빸��sn^���(���V���u��鉃�z�4\�Qg�tҌ#|�Um��W��PU&��8�\�
���q&�/oi�"������)��e�UcЧŖG�]�Sq��p�x>�D�#�;�1���n�u3�T�O�-�ԧ��a<�J+$9Jg���)\��Lo��3���di��(����+K�ީ����"����0�p��A��7��]����
Ë�;v�o��g��;�n�(m+�xj.�a9%S�lt)�z��G.!��0�d�ݵ�+���$�Uu�Uf�[���R�Jjp�"�)�}=k�T-$��e��
L��S��]�[��W��`�R��F �b ��[�k���YI�)�����Z�"5��ht-)j�c��i�2ͦ�
B�MPla���j�
u�,���{жx�К#G��L���+��1(�"P���PJ�3���!�(�S����Ņ�g��E�/M�J��Z��2��xSg���pw��3������ v��{-*e���ʥQeHQ��%�X��P�`�������Ɣ,|��R��{�O�kvd���7��%EU�,vN���[���/�	ܗP'Bg�}g�ħ)�G�,cc}��x\^*����W5�I=㻃J�}��]��)~�eehU{�_.e<�R����=o�Ї>t3��i��6�����{.�9/��Ԗy���`S�,ˉ�$�jK{}6]��v��xF��m��+N�����8_?�K�`�\щ\��W�k�#3�Ħ�D9�����x/�>�ؾ�Omv���6�م�/�Uڇ����zT��*,a�wӕ^��F�"�%�ί�r��yt�M��3�Ҕ�	�\�±�l<B���`gE�<�Q��ߝ?PoH��,//s�ĉ�Z#����|�5/��C�8�n=�	���vY�m��S�����~����wn��k�����2ZWė�ͣ�T���c��5�3w�{y����U�<s��g��A��K�Ҁ(O��i>?PV��kB�h�k�A���ƀ��(fx���X�j��@Ĕ�<ij�c��U���mΟ?��h�l�o ��.����L^�BJM�L��������j��	��ʿ
�D�A�1�j���v��L�����cǎ]�x;�|>�~�(��xN�e9i����n�j�i�h<����j�
1+&�R^5���BS���^jF�@�	mU
���yk���uq~P�OS���ZS��u���3k(Ƹ"���'�~|6����C��U�.VJ�k�ɣ���$,}�Z�Y�)�;�IӔ���={���]h�@@Y�JP)��+oE�U
�TH����\��u��i�F�.�MUz��v�Z_�,��{��dF�y1;�>�"z�s�>�绊�C�|��n���h���
.�ll�AȀ���xB���i7�t:�A�N�i�P
�־]���ߌ22�!X*o-��P�Z�
U��Ŭb3;�W�
�W~�y1S�w�C.�X�@��W��m���u}u=S����5R�B:�33���ھC��	���Y��dkc�,�좮��a0�� �rk��9�&3�ʆ�OalN�pklI��87�*��H�zh�/��pIy���93�U�Kq��T���`����`���4�1��@�4��Ԥi�h<askH�ݤ�Hh4Z�zyw�R�
T��+C�K��e���n\�{�E=��?%�c�R�j��O6�/��H�'�X}uy�$�K��t
��ʃ�V
�T��fO��Y~S~�2>ၧ��J)��lmn����p8"�R{��U��
�
I�0����@��2����=�`�v_�7��ue�Y��������:��R�s%���޿�vC;��S"�gej�����T���'N�dkk��{%7}�f�R,�ϳ����C�O�!���c9o��*o$
�K��L�)��(m�p]brT�H���tL�$IL�4��8�)w�2 �Eb&�O�� 6�O���?�Ϳ��P�Z�
���N)���Ҙ��Æ�:	XZ���>p�I���C��qU�1�������U[w�1�</�L&l��'�[�c�"$��X�	�w%�	�^�~�N��~^ ���l��о�����Ҟ����g7��~u�
�Neߵk�����gl.��fqa�iy�ǟx�x��d̩S���������O08~�<�y�^���+Ǝf��X^��BT�T�0dqa��p���6�N!�&����&����`�=E�4q�(
C[�*
C���e�[�*��2;�Ty�=e�[�F����«��j��rCG`\n���
���I.�r�B׼�7���Zp\
�!��N���s��4�9�i�Z_�6��@��L�)���$e�=d{���N@H� �I>�w #!��IB��en~�v�E1Yu`�����Cd�Ǿ��뇜=nf��n^���u#�����0?^g�wS�ʿ�!��sO�\���n�^���w���M�ۼ�-o��DQ�~��d4�E1��w�S_�+s�S�����WV��b ���j���I�x<a4IѪ@���A�%�B��b�2Is  �(�ь��]q��!���>Uc�5ʑ\-x�;�:c<8ݝ���8K���c&�4��5e��/�ml,nPh]�;k]*��zv�қ��t�JN��0��Q�ze�d&��Je��,��'l������A��P8#$R���V�I�ߧ�l�n7��)�Ji�_	P醨�O�lH`�^5�QŮ����5cP��?Ù0�X3��f��X�/u|�K�ݔ�/��u�����%v�׿��߿�f�EE�Z-
�i�=����������Y��q�9x7�,*�`��"-d�����4��v+e<������J!�V-\���U0Q�I6"	�"I#
	#����~%L�[%�&M��utP���(ǔH@z�v5˴{���?�M���v��6մ���%�TI��^�}�2L�ӛ>��FGkE^(� ��ӌ��<K�g.
�Q��݀��B!!r�
�)BaD�Ӧ�j�l4i6��Qhk>C��f�w��w;�Se�N��)�+�e�m���+Q3�+�W�K)����,�
����!���TR���8v��]�� V�N�g���L�w�^�<�UR��pv�a��z�?Ӫ������
�B���*����K)Q��#A�4��4ϙ�)iZP(M�4(�-D%A��1%���0)2d!lQK"d`�D��Wp�g��5��oVN	�����k�ռ��2�f@�H�g&:2J�Q�jS�����sh�>�4%'`�����w%�"H�QL^8�+�NjM�+rU���g�](����
5�@U�ю~	R{Zޒ���-f�h$$qB���l6H� ���B�$�߿!Í3I�U���χ��?~P�</����y�c����U�j0W?��Y5����cǎ}$�7.��G�b�Vllm�Kڢ�Q�H�3/.��x:�<�볨A0S)~�
%qKMKT`j�a�+��I!$e\l��0�41Zi�� M3�BS�����
iSy�݅�	
�
!0 ���p%��|$BdP/&i0�[�O�iM�}�k�=J�bp}` �6�b	(��cM��M=az�&�(�W�J��Q��.�×}���#HT>���6Ac�e��Fv0HD��4L��"��W���"�m������ 4A��8���8Nh5$I�
rT�9�(��;����`2ƖH3�p�h�ׁ�� ���,���y~����#�z��Lu���F_"��{P�_{�`v���n"����cǎB���途�JL��)$J�YN�e�"�B��5� @��%�E�~*Q7���W�{���Q^�����42堯�T�!\Q�Z`���hc���c��?����U����y)��Ҳ���g�•�6n��SV���]�D����%��ˬ9k�;^%'S`TN�y?��N����0��g1ھ�����</�l��TA�I !B��b�
�U�
�2����F1FDHb�D��,�d�D,S�Ȅ�� 
aE1a�Hb�$!p�S
���\~!,��v�o~�L2~<H�+�j�q�ѕ)��֖9�`7ů#��P-��m�֚'N��
mg�`�#���b#�SvE;�G��H��T)�8VA%��vd؍0���9��<�ɋ�(�nnGDqL(�����s�~xۍ+�4����ރך����B��sK[��ؕcV�lZ�v�@��Ҟ�{�+-o � I$�\�j�[(�RƮ��ZhU��v-�`�S�2j�X�!�R$��B�T/�����Bk�tB��I���sHSP�~�X�%	d�H�t�h8���ۘXۼ~]2�^q�Ux�3�3��xZV����}��0,�ZDQD�e��)��^��n��O ]ڎ1����}��SD�Algl��4˰����y6�D�#�*`�r����}����U�9���P�lB�e3
��u�ނ�~d�/u������|�S��k�܎�����1�R7O
���cǎ
��
�R�`���~�a�?�=��KH��[��갰8O'�����YZZbee�f�E�ݢ�jR��jI��S��1b4F]��"� �"�8&C�8������N7p����O;Z�-���o%��w�RS7
���^�m��<�v^Xk�6_�5F")���$����n�$�H�P�@ Mh�:WT�c�o�Z[���]5c�ċ�`�f�v�s�!�FN��[?�l��,��F-$�T!����pa��\��aMm=ĴOf�`��q����*oz�4�����a����G�ѕ�ӏ�w ��a�dJ�ڢP`�(23��
���-r�$n/���2:l����Ϭ�D��9�}�3��*�4����L�JG� >�F��P]�*��M�����1h����*Z�sT�?�&/*�*��;[�/˟���#���H�q�x<�s��,���no�h6h6��q�d2e:M9��c��<'�sƓ	�V���y<�ˮ����^q���4�-���"������Ync�<G`7�H��y��8�p�n���S��h�w�4�%�(A��n�d�=[/\	)�U���%��aC#����{����5F�)�yQ�#6>0���0���a�
MBa�j�4]�T:o�y�����7���������&ll�`���A@�$H-QE�ɓ'Y��x�U}QN3��A�	�q5��#$�r�@��CΝ;�ɳ#n��ql�UA@�V�ذ��A`��*��P�ѺD
�Aiw�B�VM��别^�-�DL��8w�#�?��}6o���қ�\{5�#*��=��,b�S��
�n^gU���@�<~��I��x��g=q��)~�}�b��Ji��ߖ$	Ap���|��B+VVVX\\����n����̃��4Mɲ���Z��4e:���/}��<ϑR��tXXX���9r�����C����T��}B
�Y�1��]�[�:��&�$	�F�F�i�R*Z�����׹P$�y���ݖ[H�vY�6�Q�W��RX�O	w�8ZoX�3C`p��y#йv[PYD�{!D��k!����2 w�)У�o1|�QŐ�Co�#t�����l���$eyy��I�v��f���|��߻���?���0 i�ctV���cemW�yn��)�<z�{��M�=D��B;��=|��k�"��W�aŦ垊��ֽ�v̰v���<'�%���;pni��ѿ���	�k�=!��(i���N�!�g�>�E�ڲ���r�cu���l骴B�*�Ai�^��ו�N�Չ@��>E��Ge4��5�������r���O��;
�J��i�]w�B����5�\Û��f��O����)�)��,M����d41��L�SkҌ�t�4MkFb�ݟ�����Y�q��A^�W��W��#G��6��W�	��E�v��p8r��P�D1q�l5i7�aTvC	j�xQ�+ IDAT�wY�_R_��G*œGWҸ�Eze�H�ZDb*��Oox6_8�I;�n@)�xV�"�쬁�R���nwȆ�'^�gc=�[?��#�����S��"�$I���H��I�AF���/GJ�������o��n���l
��~
��l[VW�y�䈼(����5��]n
�J��Q��l�l!Yz�<�[�Y4U��V���5�CE��[M���[�t�+��NwÍG9}�A��C���H��S�θ��q��J�������p��k�
9��ü(�Y��|}��,��z���:���<��c��2��:���{����K�.������Y�$Yz�;�e�zo�ݗ�U�U�N�4�=3�8���eQ�Dc A���Л�`0ɀ�`d�a�/~ЃdH�`�����,d�l�=lNwOoյ/��{?�s""o�pz�!O!+�fFfFFķ����}o����q��>�g�tV:\�r�_������q]W�cJSuд��:[�$*"G�&DaDG�q�x<f43�ϘL��A@�oa� x��7y��U�V`k{��^���]vvv��ؠ�j�xRY�$MR�8e�X0�����k��PJ��N���pMT]��lm�TA����Q��V7H�0�E,T��R��4@�y���*4P�${�
�i�ד+?7�+ee�����E�h@g�)����w~��X�� euu��w��뭱���y���i��������Ϲu�G��D�T�i&	�������=�\9�<Q��O[{��W,\.s򴌉
X�gj�%��egYV8�����״�,<Oy��ٔo��?c��A�&�'Sl�f:���!���8���N�y
��PS��X_'K�9Z�5����BY�� T����
.�\:k27o�$M��n�:��l.YT�Ř�i�_ݶH~� ����a@������}`g���$U�aٚ��hM���z�����曪d2K�"�����x�p8d2�2��X����s�E���a@�89=�j
����U666���dww�n�W�NX�E.iF�Ѹ8��R�Q�}���BRBeFf�8B	�)�GY�X*ľz�����(�ϛ�A^��ԓJ��B)���(Z��S���x��\������s��̇�������,#�`m�
�R�$W��i�!�ј(�������+�B0U']���Mﭭ)ő��fSAD��1�,J�K���lX��r�ު��̵�e�n�U4�Da
²�bH⥫Ya
1[[��C�?<��l\�&JB�svw����E�7��^���刳4��4�,��r=<�p�#ܼO��
r�E��" j0
J�[ܾ}��p�:��a���*&P����J@�qG�RJVWW���G�b�`4Eq���K-�2)TWi6�Q�1*�Sʡ����|VV����0	�9���~���t�l6#Cf��ٌ�lF�X�X,��￉eY�<˶h�;������Iom�`��,�cE	q�0��0�l�󨹮b��|j����t��Ղf�fث���]Z��x�Җ^�f%FP�{��`���W�
y� _���1��1Nm���[��/�:�r�yF8{L����6Y�Ds�(��t�uɥĶlG��\
GMNJ��v�}��lQ��B���hk.,�Y(t?E�:��kۅ�(3%�XS[��́L��,|��jK	�ﳿ����i��G��Ѷ��2���z
�Jfz�Hj|���
ȥ$�?`m�o��[Y��e�U�-	�	��|�4M��!�c	�0���u-�&�/��U}폣�X�x�> �鴘þ����j�r'ES!���}	�dY���\F������V
±�|ߧ^o�����q��QLGC��ѐ�x�t:a2�Q!�  Bn޼�G��Ox�٤�뱹�����^�^o��_�ўL���,'�H��,��"�x��tZaH<�j�rt��$BZ�ˮf�	c���a	�j*I7A��Wd�#L�R�"���,F�)Q0'IF�j}�.�n�X^�����a���d�$xD8x�d~D�.F��y�odi�m�$Y�e�eAb�6���dEֆv�>)��dkAȴ�P(4*�?�R2==�R9{�p���.-���m��bN�&�f��֬y��4�d�k��#0�#���!�$¢�}�z�*A���`�,�PZP�	H�� �q������p���FY}������ǟ	0@˸#��B��fz.�I�yVm��%HcVq��T�w�����Hig�uu�HY���ku��*[ۻ��GDQD�L&c��1Q�2ggg
���b����/�}��|�	�cS��h6[l�o������n���
|�S��킀$Ɉ��qN&3�uW��j�4]��"�7Jm�s�&��=��6f��<�W�W���L����f%�	��x�1��\�8i�m����y�������N}�u��ޯ!�4<'�=$�=���t�l�:�˶mM�-_&IB�DaH�ѨP^�v\%0i�eA�J
b�a�P��__��ƭY/�Le=�X���V�c�"������MX�h4�{K�-e��6R��� 5P�@��X���Y���z=��9��7���E��d��]%�WI�T�(��(��7�|�_���W�������<�'��P��ضm��P.5h�,�4͐2/.Υ�ceU���l�2a\dt̄ �RҴ���&˶�-KYc�����=LE��Ws6�2����2��N�J)L�R����~�
!j5��6k��lmn���Nom��^�z��觶[�^FLgs�,S^���{5j�O�u4�`*
�m[*�Bo�W���$� -!��ai��Xn��RY�4�
���9I#�gq�e�Į�b�]��>Nc��2׾�q`eS����G���!�RVV/^B�.��Y�:���>���~�?���,Ӈ�����l���Vf�����7$!�=*Ɲ:�qq]]Eg��8V��VT)#�����l6�䴯q��(jR%�y�W�M�6I.SR�$q�t�Q��HP
)���/��z�I���[7ortt�u�o��5:+k$�3��C�]N�.<�����F�0v!�cn�S�g�J`�����tB�Vï���s�i�oh��K��tS@Ɲ��"0[+,M��R��D�L8��9"�(Khm#lř�l�v��u:X���ҥ�ڽ�����l�pا�pvv�x<f2���l6#n��~��k�y5ڭ6��loo���N��ecc��V
�F)!#f��@H�j.5M\�}_r�\4ـ�x�|Ђ/�cl�7EN�9��y(79�
f��%�Sֽ[��Pub�3l�xz�i��7q����u,����I+��4���#��}��#�(ŲjE	+Z�*�
8�Mi4Z<����6�O�3C�n�0BP�׵���W]�L��z�$�"������H
���kY%�f��X
��{G���~^6EQ�o^X�</]��`�?�<>	�ak�A��t�m._��j*\k�ғ�뱳�˝;w�bL��)���f�1�V|���~������%a;���*;�J~��*���(.�f�h�B^I�UIJ'�rݺ١~��
�%����7��W*�\K���֌0���B����M���u:�U��%���*nW�|>g0�3
Oa2�2�M
Oa1���|��Dž��j����d��ƕ˗�|�
�F�v�]Y�&$i�b���
u]j5O{W6�̤��VƲ�iļ��(o9I4¶-�.k�e�e�\K(Ml��Zdq�m�XIL�p��x��n`yl���_�{�I2��t|J0�K<���lL.m2GvI�ɥ"�L�#��$_< ��$������d�eY�v���S���IӴH�U;���u],�)���������P�rm
�7aYY��"��g���q�u/�Zבk�K��>���2JR�D���$\���O.�?��!�L���1a�����G�N�f����
�^����g�[[g�^����E�+�P*�'�=��V�Us�-��̕V����ڭ}�"0L��Xx
BY�-(NV��B)��˕K��`X�٢�k&�:���◗a���B!V�R��Y��8V��p�`��L�)'K��|>�G���ccc�]Mwn6���-���F�&'I�|0�@�x���)�Jy	y�-]�eȯ����%�Έ���b;n�6_$��e�f��d��1Z�I���^�h�>����<`e�:���H��D�J������8����"I�Y�7�w�}��a{�����>�ٜݽ=�޽C��K�X(�V�%
��L��(!DAr��x)��������}~���'ɠ�p�,2S5VY� /�F�B�Ð{�Fܸ��ūm��6!l� �{�}�ݝ5��6��۲Y�gܺy�K�k\:�ҕgX�z�q����0���2���-�T��Or�������"���B����U��Li4���´ZV�ڼ"�[����Xe�a����s-
�I�s�.*�j�_dc���.=�eS�9Z)�=EfJ�0RJa<�8=9a80)�h8�ѣCnܸA��u����v����(�B�K�Ѡ^��]��h���(���g�j��ƣ~M��3�*sL�_Ϊ���'�vB&���O8�a[��a��_ӍO��:MR���C��˳�<
�y����#��#,���7�k�8�.��_b�ʯ��o3x�=5�!L�
�譭���G��)q�z5&�1�m��iHd�.�u^�S����ZfO����H�)(���W��l���;�qx4`2ϙ�kܿw�0X�נ~�y�"$���i�#E�_��.�^�IJ�B��oШ�9;?�['DI��J����{�._g���x�5F�#�|�m�N��H�u�[\��>�*��*��)ϕ�������U��>�����+/���%��aTJFT����WXK�j�����XJ*�A��^F�]:N*�����U(��{+���%��Н��	��L�lLb:�prr�Ç9�1�O��g3��9A��V����*�^��_~���]�z���S��p���a�$��D� =���N��0�i�c����	ipB��M�h�<�����!q���R5/�� K3�Y��A	�q�
�R�/},�GXNm�]�n��6���Y8$��H�F�	�C�4`8�pzrL,p�q��� I��a���,ӍI5�hjK̹3�h<W�_7a����U��*:�<��{����3�3�|�-r:-��qƣ���������m&\�m6Y.�v{�N���c)����
k�t7��z>g'G<����f�H҄z������?|���(�P}xA�I,�-�����B�e��Z���b�
��΀�O]��BYh��~]6T�5�V|���?�п]!���L�D�J���9�j>������<��
Ԛ����Ea�3��޽ˇ~H����ppp���>��;�}�F�A����’��jV��g����uݕ��!���da�x~���X�M�DQ�|�)�Q�@������q�Zy�`�����X$I�����q0T��]B���wq�8�}���W �����ϥ�Wv�,����>U�v�d,K�j�r�؎�V�
st@��ؤ
�x?+��]�@
���8��Z��z/Z8N�8Q�������X�}�v=��7����w�>g�VVZ�۝������:�:�t�vi�^FgǷ�w�C?�C0$S�L���M���������?.��a@���E,}1�+�i�+�sqQ9T�б=��B��z��Uw��sKX�	A��FQPv�eBTO�b��N�����#�q��B����2aHGDa�`8`00�GGGKX;w��Ð8��r�
/����۬��R�ը�j���||���<�=�ݬ��5��#rM�IO��n-�w���X?�s����{�g�h��)�W��h��BkiXw%����"M�$ƶ-��d�ˮ�4�����$ M"��ϰ�&�z����(R�y2�ӡ�$KcUsNI����1y��,Ws�L�m�8na�L��Qd��-��$I�d2�u=vw�����_�{|����w	�Q�r��3�}&�R���u�-�h4WY�z�V�2iqv�.�o����Ɠ1A����K��ս�W��b����.�ώ��4��\�&-�i�3V�"8��J_��FQ�[j�*���YU̡�he�4������]�̫H���;��0i��U����b7
K���&
˱����EET���0�����"
9��x���N�C������\�t� g�j5�pC�"��<
�YBV�h���c���aE8@�)k���H��yT#��g69A�z�Z�F���s�j�SZ>�˜�,��s���bF�̰�:2����Hӎ����\�m۪.��c�-l���4�����3�,��AXy�ОjL�d�4	���:�,M)��L+��IRa�%HӸd
	ã���=�`���qvzB'<s���|�c�t�=VV:4[m:�iv�!K<���ܻ�&�=dDDaL���P�$�$�m-<�
Q�q�/��OC����?����W|L
x	��:񤵮b�B�6V�e��B�K�oY��@eS#F�R[�0�`(V���>��VY����:8%�FR�H�}��ʱ��J��B(�oP�7�v׸z�A��Ր*
9�������d2)£G�x��!���μ��RG����i�''�+��� Sl�Eb��s�t��K�I���J����ĉE4?!}�p0��4Z��OU�U;��y��Y4�P7���yH���#fөRn^��V�B��}����|�Vǭ���؎�e�x��Ip�:��ᷟ��Xv�E S�,@"�YL�Ť�4<#M�\,�H �cA��ˢ�A�����r����0_����N�{w�2���ze���+���uH�!�>~�����G���$�$M�5�gh���T���H��lc���4`�g|���F�+ %Q�~J�(i.�y��*V^��[n�c�D�BXM�QXV�D}��T2��R��2�Di����p����|�M&sݾδ�ҡ�a	l[��[�V�����? �2�����dL�N�?P�ٕT�t:���,�hw��lﰻ����ρP�7�L��`Y."���k[X.8.�pȳ��!����
��/��%�`2�1��r��x�����.?�y��TM9�{-l�-,]x����
���Ru�������P����Q�������+
�_����c7�R[}Q� 
�i��"IBfӹ�F._{�\
�����׿�!�k��v�4Y�g�j�{�Y�\{��K?�|qˣ�蟟2��$�d�1v���a���-��9+�u�?�ꗼ�'/�z��j�dY�"�V.��D�:�/Lu)O�xKѺX:�K�p��j���+uʓQ��i�',i�����ˇV��+�9H��>�;Ǥ�W�Ð�G��������mp��բq�x<�����36���ọ�w���<���8�L��i4P
��!�ay��a{���>��ũm ��,��FcD4E85�-ڛ�"��q�h~F2;d48�|���7��}����<�92�.!�;�V;�C2��̲T;n�ɍ*0�����23d<
��$X��m:���:E9�A�T!�_�����W�Y]�q��؎�J�N't{=��U�S�FMA�G�u�߹�d:'C"M�S��)jT��T5r��<�2�嗟��3��ژ�p�4��j�/\��eB�PJ�!X]]�Hx$	5���Rj�S���3���?�`aU�_?ʼnĤ�*/�8BŻx��P)���g\�.ӗa�W���,�A+��3`B�!Tύ�@�$d$IY�&,�-K����Z�q<�&��dyF�L����9>>���t���c�3���N���4��DU��[!Of�8ɜ<�#l�mbGpE�o�=:�=dg)_ N-��-�{�YJ�f�y.��iW��>-��ٙhtܥ:�G�� IDATä�
�*%���>��X#���n�JI��&�ٖU��F�lBk
�\��q]�N�6������t:��n�$��g<~t�~�O�$IB%a(�K�-yi�[�eq*�����_y���I��ڲM��O�忸��9O�t5�s����<O�WQ�_������-�B����Pu	�t��b#�,���`B_
/
s}l�l����z�@�%��U��*!Z
�Li�#0L2a^���w�L��9a{n��c��iU�,�
�kk�<��s�i�hp��z�V��ᛌ�sF�1�wN����̎�Xn��ה��i�LC���y��X�GO���V{N�%��_"���7��ϱ�1��(���}eVXn#�@!���Y�L���t�)����<�zF��)�3��l'fҜ��Eh2���NQC`�
�0�m�4�#&��m��#��>a*�5)�i�k	�%�j�Bwm��^8���L��q�����x�i.���e�a����<����q\�$&:����\}��)����o�iM..�Y��e%Pʺ�8K�I�_�u	�Ko�W�/)��ׂ�t,(��ϫ�,=�*�����Li2��dѨ�q,}A�؎M�����:��7H&3lK��s)��(��OO�@�զ�^��;�<#�&aa��ȳa{�%Z1�d�a׊����p�YB���������WX�dO�0�͋��mOYk=C����!K��k��a�j."t]���ee����"�P
���v�K��{�,-�ה_3UO�R�~�[�J��r��$"9�STږP]���8�"<8���6�+-F�1'�#����ޭ�f���(��gY��<�i4���K���s$R��$S¤�`^�A����J@`@:QyS���l_ܫ�T�Q�DY{���Y�Ri����)���FI^���F"��=�?O�O��bTW��UG��(RA��ޣ��ڤ�dL�;�}8�㺸^�YC4�n�O8>:��4�M��5�<G��t���u�Ҍ�`�h"qH������Y�j�a��J�%�dv,����
Yr�8���2;er���|Qt#P��U�
�m�*�u��7V�(���`�B�k
/QО���,ӥ���KKR��êr2�QC�Q�S�G��3)!�!�r�('�-�ls�+�6a���)�4�͂��璭�������e���y��<�٨�iw8:z�b�z
a?���jW��B�ˤ�QR�ՄPtZZe�_�E	r�[(6�g��j�G��V�}A1�._+��t�Hh�ߑ�ӄ3)I�L
��K$�����c���q4+(�R.��=:�K�Y�b6b��S���b��`�rԇi�l6�v�lnn��tT�4���9q�@�	�6��m?�Q ���#{8�׈'�Y��0�	A"��,�u�]FI�8!�F`i� s�9��m�-K��Ͳl��W(���c·�a�ڜ	�䲘�����0m����܌rv]�(�T+�4�8EFD�^���u�]��e�t:c�ϛ���(!�Yw�ny��)-��_��w~��,�D��������bA,h������sE�K��R8n���b*.��/����}��/��}�u(��r,+�)�w��ҝ/�b(�B�'Èb.�e�#��4��p tN�R�zL�F!�);� "IQ�k4۫�%�C�Vy�Vȧ�gHS�=xoo�5�S���ˬ��*]�ʦ'� ��DŽ�36{1/_�Y[ͱ�����m_�u$���X�-Ty�	8�"���%�GaE1i�0��Q��
��riKc$*ͪf:HQ���e[j��X����Ii�F�l�������#�4of���W�����z��hD�V�LD�y���l����Om���8��z�gmm
�u	À�lJ��!MKw���V�}�W�JlG�9��z0��o�A\x��.!	��S����L�oB�"t�
,K������[�q,��/@.�� F�Y���ATC�'��iK��P�vf�I�g�Xv��{�G��QJ��b���=���qrrB�e��K/���_�YYY)��<ϋ�u��4M��j\�~�~��p���2~�K�z���:��$�3�ϙM�j�^�f�N5p�8ZU�BM��eF��y	�ِ4M	s�0d6�2_DL�	�%��8�4KԄb7Ŷ�D"�I�y��"��puz�=�Sy��s
M��4��t�����k3����4_FE_&�0ʠ�G,��?�U*x+M���YN�ף��A�	[[��r��4S�[Z^��XaQ�FL�#�z�eV��է�$�|hE��'��O��ξ!>�{iB��4D�R�1|^�^�,GkiE��i6�C.��ޥ]XV�ٮכ�Y��T��WS�Njo|��wx���y��X__/\�6D�7�{�t:�a6�qzz�x<FJ���*����,nܹ�>�6዗9h*��x+_N��	e?,������,A�Y��� 
Q'�0���J�ɔ0\�X�	”��8@ʔ<O�����T6��(]�Ӗ�.���4iD�R��`1ò<.ﳿ��D2��Nb�B�2s��{
xX���s��3��V��i��4Ih6�lmmqxxXPR[��bVS|�����E�^�K-��^�PT�B蟺�*4_��O�����em���R�I���,�����K����Lw߼�0������~O�j,]�j���7
���$J�ΏHS�tV��&��1�"Q�qm��I��?l�<��3�z=<�#�2?~�F%u�(*��f�Y�3��n�1��眞���r��U\�9�z�=�7����&/՘҅PR�������3����j$�D�ޛ�f��(�Z8mVWWV��9X��,s�P6u�ی(�$�M�I�@�$O����"`1�p]Iن<IZH)����\���
,����X��6�vd���*d%����
�:�Ok�������w��ݤ��8����s���o"��ʕ+\���h%�/
�2�}�u²t�k�X�
*�_y��"����U�c�?5����g��FpeŤWcy*�U��R�͠��SN�U/�’K�y��g/}��_N��N�)…'n9Ș�o�om23�ct~�(Ji�=j5Տ�q\����$JmVWW�nT�-!q�۲��몊�n�K��*@A�u=�1I�y�&�Ʉv�͕+WX,��;�P�>��=�Ҭ�e�����:�Ԯ�U�`M"����, 
<�!
�X���f�����K�e#�^����dI��!�Dw�����I��ψ�a��ӡ]��Jo�f�c6Q��(���YU�U{�LC$I��y��vu�rFa�����f�������A��u{{�u�ַ��������gY]�=/�ףFW��?��+(�����>]�EY�_U2�OO��5��I���t�^�~A	PEૹi�$Z����\6R� �(��$�:t�e�߶��;�ƫ�D�s���ƴ��dٌ�^����6�[+~O�e�숶��
h�,� P1r.m$a�`���
⬎�Y]]ekk�(#�^?�яx���I��K�.q��5�ܹ����ҹǫ϶@�</�Ȥ�v�|�`4\0����>����-T���&4���(����LJ���r7�ꫴ�.+-����v	}��\M��ai�.\~)s�Q�p���%��ap~D���0�s^4�t26�eZ�0�pl�V��bp�ˆg������և�F�!@�f��,�}{�X��uy��9::b8���`�Ps�Tj���zrT5h��v�=���i�e��%����g^�$�gy3���K���A��e
����@��l]E$� ��}:HH��!�:Y)+�p]�յmz[u�`�l��Ya��rJxy�N{�+T�ow�R.�eYt���f���N'>���ܹ�ew�J���c�<�W^aww��_�w�y������/~�F�K����,>�KϪ�E��������1��6[�6�m��Q��7S���?��/D��,�N[�$��Q�a�B�o���em��%U������FM���S�la��<�^o�P(�����q�$Z9��C�X�W[�Q�r��Lf!uߦ�mb�.[
>�5�L���b-%�����~�o��f��n��v�<|�����’��-\�-�Cʹ0[?��آV!,�X�x��X|e�
/�����0�?��7��%�{����Jԯ|V��,��2�_zC�G�/!�Fԋ���ʇ	���8�q<E���
Ȓi4d8w��h�U�|>gǿ�~�!�ky����X�
�؇��{���秏9�9��UsS)9;;ò,^~�e�:�>�n�bss��>�2?�9��t�J=���3��=v��\Z�u&���4`6���Eٱ�j~�܌G��qo�fN��99>��j&�h֐��fĝ��� *�8�t���
<�'�S�("��j�1�ݖe��V�����ɔ��s����\A���}�����G�?���Y.��tE�G�@����_������B0���YY�^��$�qD��2(wEP�53�_��_a��R������(��z��OI�	���j�]��(~o����l#��C�¢�
��61a�yߓ�I�ya
$���q�j��nd18��8乚�3�L�F��_�J-?e4�[u�ql�S��V�2]�#���u��갳����&w����y,�ckk�(�8==�ڵkloo��|��_��^�+_�
�s�w�]~�?����5��>��'�a�ɑw�]\ץ�h\B��j�j���+�Rv��7�M� 8���1np�����H	��+v��h�R�N+���g)�5�U��U���8;;;���q��$q��/:��&�m��d����O{�-3��X_�����/��s��=��jqp逿�������$I�GjrNo�NgEu��4�GD�*j{hQ���E%M�R�_E��zAYjbD�!��?���%��e1w��*䣰Ԃ�gwI��x�)�x�Tp�"v0��'"s��o�����T�н��E�_�؎��.���R�jج��NN01Y䤳{��},ۣ�T�p#���d9�-X�1'�s���?��ګ���.�f���c�}�]�$amm�;w��o��o�ۿ��|���e>��K��k����o����+/n���뱹���6���gF��"��+�x�d(NNN����0��
*q��a29�έ��[\v��JX�,�EB�Y�y��	�0S��BA��T�:�Z��d�'7�g1Op\�<�r�.�:TM�������O����b�O��?X_��������k_�?|�]?:d�X0�L8;;��QCD���vG�Q5�R�;�nQ^��pW�^؍j�A�K���BJL\]�3�H|ي��C+ya��u�{��y�Tv��Y�-�s�� �<�"L@"eR1p���ni2em�?�ϙ���CI��c�0F����:Y�%�n�xz�A�>I<ñsUf\�D�㡍�y�޵Wx���E���>���q��5~������l6���d�_�����^�u�,�?�կ�;�fA����W�5����U��t:�ft�\7HI�2h�E����ؠ�뱵����RJ?~̽{�8==�P�ձh��4��y�s�?���N��Q��9���,L��i���,
�B�Q4
��&��s������F�!��=t�L|_��I�|6%N��?�e�K������~�����G����.��U��.[[[lom#�`41�A�jxƘ(
�V5Ả��L�������-
��	l@cE����٫�T/\��U�^.a�B)���$�?Ӹ�Ex!�|NV�XVb��*ߐ��>DX�*�Ֆ�z<���~�(Q�|��Z�Y�ó�
�a��� Ta0AZ>��s���<�d�q�(#k��_�[�%Nr���,5�[[b�q�~�:{{{<z��h���p�+��������yί������舛��W��w�}�o~�|�[��[����ǏG��ϙ�T��<� ��(��d���'|��=>��>��G�F#677�z�*���E�`�u��M�q�ނ(�h4\��d^�P��]h���f3�����[m��1���e��4��`��V��J��I� �V�z�ݙ���>��l�O\f�0�
��W_}��<����#qrr����Z���g�����1'''L&�B�Ǫv.�O^�!\���`en�t�>�>zU +
���gZU�C�eEP����/�nYXj�]T��%O�<�_�h�����.��sB&��dɜ��8�uλ�q��%L�;==-��N#��ʙ-$Qj��Iq͏���po��y���[W8??/�k�i��IO�DYe�n~��m�L&^|�El���7ߤ���/�"���79��|�;��{߻���S�<�}�<�5�.8�魧n���n�
a���Q�>��Ǐ��h4x���ؠ������Z�F����ь�(EXj�I���R���^��Z��t�t<����.nݾ�`��!��,U7�,7d/��Sl�����/�������
�
��&�����Ͽ���y�_=�wO�����c�H
�X[[ckk�˗/��/���@��_��;��L���4�ª/NKX[��,�����SP,���^��8�e�B�1e�ٽ�0���|�P��q��ݗ_V^��T=���o�݄2c�v�v������)��T	zę

��y'�ŕm�SA�A�D�8
��G.�p��K�\'F�QSW�i�����?��?���Z�d��d�łW_}��x�~�^x��v����"P�C���<`����b4�1�O�'ufA�żA6	�q\#�lj5h6sj5�tr��C>����/��"y����$��}���?����*�n��lA�Ѥ��5����sz��;wnstt��8N����eR���S��E$���_|�e�6:�� ���;G���v<��!�U���~��������o�����tz�����[�nqrrB����N���:{{�lln��H�����E��d�x<b42�O	�@���B	���vR���tA
h����B��P�C����-/��`����B�7T<�"n�\xMX�|!KJr5(� OY��؂�t�e:���2���y��Vh�m��f3��i�v��:��w2�|H��r>t�~�/��j�1�o�:�r��q�M
�Xճ[��{��Y[[c:#�ho2��6����n��ƍ��/�2g3Aܿ��"NN��KZ�Gt_"�0	ֶ-�>�U�-�^�A��ħVc6�����%��EEܺu��|ʵk��z����4��c<�r��s�x�t2&O��W����q�LNĽ;�x��q1��\�Y���9I����AJ.\vw�����*;[�L&#��@�+k����?����0!�E%`U^s������x���m4��ht��?����C�0������&�/_���2�^�0y�葪�ʹg0V�`6!��hk�su�@��
L]v�Y)B(Z�}�����w!���@.�پ�-�@��e���+�]��&��g�O�
,%)e�C��
)��#|�#�(b1���
�-Vz��Y�$ݤ�h�h4�����L�X,x����d�GC�W��_��˯J��>k�쮫Zs�Z-�A���	�����w�o������(��턭�K<8U��v��իWy뭷�R�s_�y>��|����,�^�y����?G�{����+ܹ�-�4�6�ȩy���P�-ꍜFK�Y0
�GMdu?�]�����������sttT(�,SV��N�3��!����f7X?f>�3�*~B�9M�hb�~��q���._z�E��1�	R�>�5<���z��?�7�*�'0:����.*�r��m�"x���7�z��7��5���m۫��d���}xt���1y�����I��׹tp��W�W�眜�0����ENz42
	3�,AhL��Zl�Mn�. IDATئ��鄿��U����?xB�(�ݒcP
r��
@��C�$W�#��Wl���2$�!�s]�&��j���?,
,f}AB�]g�ۣ��"���t�7n��sy�A��������THg����7L7�����C>|ȣG��b?�����ϩ:��|����-VVV��Oyxd��*,����y�gR�ȿ��~��8���F�z����JQ��s�n�?CF笴l\�Ʊ�q�eQ�lu�fSb�$���h��8�j��q����^��DW3�v�ɱM�I
ŋH��v�m��L�����4M��"e�	�@����~�U�7��`P�&�S��]��GG�䣻���,�?�0��'C���l��u���[o���������=�X�F�{��y�o����)%ۛ[��O�����.�=�<�++8�K��F#��1�i&}&�q��mYK���I��ek^��%��"$W9���_��S6�l�ד�B����&ɗ�O�]�2��� �k��ufӱ�G�K�y�����_y���-��~�g�?C�|��]z����2_�k���X��B�� �ܹ�G}�ݻw��Ŷ���xg�/>��eY��j
�6+++��c���?��ӏp�[X^�,�������ޛ�ȑgw~������XE�Iv����k���9�^������|@�a,6�˰%����X,��G�4�Ѭd��J3Ns������}�}�y��?"#**Y���t�hg��@D��{�������&�t�B����(o���"�LF��i244đc���`����EQ�DM�T�G}
;22�d@j���DQ&'')
{H=� `5��u$��4	]�!"��IZA�@�ݱi�;d����I��'�t�A���cz�bD�uCWy����zT�xG7ɧ#a ���`o� ��aaaa���={�/������h4���e�ƍ���%�X]�CÃL��31>A�ݦ�n�l6�wm���t����0Me�p�wpjaB�#��
�o߳�ʂ��W��)� �7�>�Ϥ��'$J�1���(�xW�(A`E�2 �EVe�*�ӣ��Ҭ��#�"��G~�SSS�rYJ����;z����������w���67o��…<|�0��kY
n^����
���N���Q�V1���1�<�F�?���h�O�pG�A3���D�{���,�"��q��IfggI��4���I�R�Ο��Gt�k芇$�,�H�ߛ.l��"��Q�It�
��uS*�0M����=1��h��.�J�$R&�t�nǦ�
�:��g�\!��q��q���b��2�0��j�Xg?Z��;��6������9`��Ҷ'0N��q�X�_�|����u�̙o����f+�����}�����E�UH$�d2FF��6T�<�T(�JT*�X�J�\�Xܡ\.RoTp�n��ew<����Wi٣x�
3�cy=?��]��w�\���ػQ����{�,��ͳ���E���u�j�>� ����w9�O��BV|:]�oQ��?|�бun޸�䷙��a��LOOp���������i�Zh���_y���Ѕ:�Y���G��۟��h��*������!�"�>��.��'����*�/y�T�J�B��%�JE$�0m8??O"��P(D<�08t���xDJk!�>�N���u–]N4r]� ���jU��A)JM�� 0���>ݮH.g�N'QU�V�A�Qz
��Ȳ�+�O3{h:�r9�.�������_�ûK�v��8����%���H��}�}�N*��\��~���>��ߞ={�/t]_�'W��2��+���"�T�ɲL&�!��322����D�q"�Q<�P�B�P�\ަѨ�yNO�݌A�]���x�a�Q����7�{΀��Z~P�=��]�?�SO!��q��,cA������\*Ѵjt;mDIDӃ�{0�ݣP(a���U�Zy���~�+���a�� ��w��9�}�]���h�k\��l�^'��07�An��_=�`nn�D"���|y�d2 �,�(X��00�ff��H&�8�C�Tbtt�j�J"�`}}��211Y����u5�����{���8�/�`nv���1��A�����$5�ר����n4�d����J���	ǡZ���(KM��U��dRGUe���JEQ9��1^x�$�c�:�#2Q�z(a���ұ�$��ƹ+[xw����$�|����7�_��}|�A<X���{�ݳ�j��7}���r~uuU��ؠ�S�ٲ�4-j>1::PDG�Q��{Mx�E�(�X((�)����+�~�I��c=BT��B��+������:g��i�ɮ��W��{�?lY!~��G�X�!���?�'�%������:j�2�NIְm<���.���c�H*�G8��+��Qj���7�~�z��wn~|��7ϒR���
���f g�Qq����&�a011�a<x��|�����H��2H�L��&P$35���a%���d��O�R�j5�]����333�����f���y:^�s�!�n���$CCCLOMr���cyFFQU
��21�F+��Y�cǎ����� ��VæVJ��115���'H�f� 4�C+Ŷ�=MWB"V�7M(�J����|pu��4����x��qĕ� �wٝs�g[]]ݼz���{���E:�n�Z����vbuuU*�8���ࢢ:�L6���!��.�r�j��'��
�
=@��
�̵k��DI����U��$0�B%�y��ދ�f�K��5�}�{�؏� �2�."xu�5|���l����S.��]<�Ǫ���:�*z"�/���{Zb��h4��?�SVWWI�R8�͵K�R+<`f<��3�y�$&�6����K�Q-|:�&����v��7�I��!��YZYY�IL20� �R�&�����!TU�P(0>>N�V�\X�0��l������0;;��8Q���8����h�H��A>����:N���7�m�&7����)�0h�ZQ�Ӷmt]'�ɰ��5��[�*�����,���H�R0�5�燿��kr^�%�lZ躁i������qln=j�����~�SW�P�]���f?������͉�;�ߺu���������YUS�;�;��Ⓓ��"T+l�F��^oC�C�
�l�,! ��
�Z�B�a��M��E�Y�ݞ�ջ Qٲ�]�<$��AGCoH�?��/���~/����%��%?����!A�e@Y�-�s�vZ�
(�$�&���4�ZæݬS.l�!ϛ_x�T*M�B��h�'�'lll�L&q]���[��
��&��IƇ4&�5�gf1:v�.�s�ض��i �"�/_�ƍۤR*��.7o�$Ʋ�e��gtR��'h(�0�l���M&&&��&��v��>H2����r��
fff8z�(�B�V����3���G���֫$Tz�E��..�7�����тC�,���*�
�N'zMU%,�Cnl�ɩ��"�Z��"�2���$�'H5���3�4�J��(�j�2�S	n>j�/w��xM�g���x5�~�0\��q� +ಛ�ljDRl�?��^��{��ݻ������_�����/&���$��t���)���1&�(2<<�P�������w�CU4UE�4tMC׃A��iFA�\n�L"�*B�mH�53�z|��[���]�
�s!��ۻ�=b��@���n��=�� ��,��g��
<d��㯗^rl��2�l0=;�Q��Y�361���XT������-����r9��w���V#?�at0��h����)��ܹ���x�(�iFt�?�U
HC���Jv(�`Ve8��N����֮���ΡC�!J�I�������y$�$�i��ַ���]N�:�ٳg���l�_�*���	|ϓ}�F����V���1cO#]G�u)����q�ʕ(_�(
�t���L+���"��HQ:�չ��V�טD�Z�q�#��
��(HA��u�Daw*�OA��?;()��^츟H��!��~`��#�o�7�]����������_�u}L�e%��36>����a CCC� ��b���u677�UQP5
MU�t
]�1�00�D`�frhFYRz�G?6�Z�s]\o��8S0~E�B�%AO����Af��L�����QE!� ��|?��,
b��\��i�l�pm_�_�����/^��ŋ��m�ܺu�אU���#&��A�T1
I���}�͈EgF�Y�j�l6��b�BI&5�#�EBFDF�<AG\��jT��"H2ٴ�$�x����/�L&)���_�%��;�áC��{�nԃ��K/s��X٨⏤H%dl�]Y��_EӴ�hJ��I�(�J>|�l6K�ٌ��|^cs��v
QL!�td?�]�{{���mEQ�T*��p�b��(�(r@2r]A�\E�~���q�uK��^sy�*-�8D&�$���o����H�}��׿�[̝�4}J�%q``���`H��i���[�,	8�C�����=’ҳ4=h%��:��cf��[�l6���boj�$"	^�/��㺸.����{����.a�D�SvӇ}�J<x�<��	��u�MV�8��,���H���қ�F*��L��-��|�{ߋ�bq�!�JE�����Pe|Dar$�ۛ���^b~6)��ӈm�faa]W�t:ܹ#��
F��̌�ʩd�*	SF<�N ������Z��K�n��YfN|	�4�u��Ν�s��kkkA��CQ^��׸t�_�2%:������g�Vb�,���[?q+��n399ɝ;w���i�0k��U�E��d����V�v���iҴ,�ܹM�R�q@SU\ߏ&K(��(���S[�a �O:���ӷ��������G����Ņ��>~��N=z�WVWV�+�<$+�888���t0�EW�$���1��&"���&kkkloo����(*���i:��a�Zҙ�L��^0Q��}�s�u�=C���)v�1�υ�����!�Y~~q�7�B�"���$�H���8'_|%�L�+�Μ9C��@�4������dz�l����y<Z��K��k�B����(�`WWWY__'�J��cQ���Ь()
t!���$��3�����X�՛J�h�#���*��"�י>�
�������/p��a.^��$It:���x��0�u�n��u:�w'���
]��5Y��V���Z.K+u&&�h����A,�shZ
�d`p���{T*'�e9��\g�g�`A�ժ�������w!�E��e ���~,@�p���.\
����9r�텅��"��&

1==�����!ISSSLOM!H"�v���
VWW�����h���j�1w�4
���T�"-RqdI���|��
�<�םvO�?�Q�/(H�0��ze�NK�u����;�`
P׶���R������������\�r���r�
��\D_U�`�P�9W��Z�S�"fw����Gq��L��ŋ�n��_\�"&LC&�TH�*���:Z���2k�Shi�����,�J�2	�D��#
�*26�����V�����hp��Y�򕯐L&�ԡ L����p��/�Q�ۍV~�qPU�t:M�^��v�7�M���H&�X��4����8v�b�A2��n�8NU��j4X^Z�Pء���? ��.8nr=p�v�E��<w�+���j��<-�'��Aq����]w����A`�cy��/^�x��ŋ! ��O�~�ȑ#o?z��"˃��J����019
e���Y����N����2���Q�[�7�R�T�@ӵ Uw�t�D"�$d�@dr�">�+�k����!?��{p`O`
$�Z���m"J"�t�d*�$J[R�Y����&�n7*|	���;w��Z)�y>��b�A@��n�.���>��M�-qԸ�?�oF�+\���t��ڔ�3�.�2U]��%]�G�O�����W)�J(����29y�F���z��?<�����,�>�o�cL��ҥK����

Ev�����K��9t]�:	����*�\�r���.@(�V�l6K�V��7EnS-��f�$���H���۷�V+�v�s{�a@Kvz����
���iLO�'1t�]���t�����ǝ�~W����Ux@8>�b�t���K�.E��ӧO��~��ݻ'E4MS��СY&''Q�`��#�9z�(�(Ҵ,���X^^�T,"�z҇������`b�t�0���Q*}z�Q���K%[07��^��l��/�ds#�z�Fm�f��\W��N*��c{�'N#�J��;�,//�����i��mZ�6�n�BL�$��Q�10�݀V�.Ȝ`O.]vvv*�,��i�q%̄J�I�
ɄI˖S��[i�~��(��F����b�l࣢�.N���@��tP-oc&s��ϕ+W8}�4�oߦ�y�_��[��L&�(��E@���4
VWW���{J�D��x�`�.�ǡR�0'K����*�[�H����w0C�Ŷ���v����S�%�J�h��=
�;����Ob�ӹ����U�<M@q?��I� ���ǯ��ʉ����oݺyBQ��D"!MOO3=�d9��:v�ǏGj���+���P*�z#��ﻪF�]�е ��J�I$����z�܆��$ߓ�I�FiHA.��v����(���0I����լ�]j�>���~d�[��I��k+TJ[�GH&�{����lZ�,�������05�����/���C�\��` IS�7|�ɐ?H�U(�o�[��ġC��t:T�U���a�4(�A�C�]4Ed(#�p���o�.w�������
���/}���e]��ONNR�ոs�@tޡ�@�
�D"rB�0�j66n���$Sz��A�҂��ش���Ü8qY�hXM����[�{����O
q�+|?��}��A��o�s�
K�'�d%\�Z���_>>55u:�˽���x*�RC�`t4({5��'�s��q��k�k,/-S.��D1/%�ƞ�n�d
��a�����'	��G��s5��#����u�FQlF�](�����Q��մ�h����ढ़e4��m�0iP�(j�'�LNy�O������B�*��6h�G�!by
~[@�

k���$	2��r�C����@��̔qOpq|I�u$YQ�m]�-�VI������]���;o�4<����?>>�eY�9T�~�?n
��Ր��H��J���2��H&4DA��:�AD?6�خH.7�ɓ�I&M��*�vT��n��T	��v��?�4 .�z�������6<)��$Px�+�D�0===�ҩ���L%��1���̙�:��� �(�L%9~�8�O�@�}��kkk8�C�P��4���|=ShZ��d&������� �M�I���~d�����XM�V�I�>@2���+M�<�0�u��Z��������e�f��t�up�T�M�Hh.�C�Q�!T���}�FS�
��&�(��*�T�t:��i���2<<P�K�L%��p<��\��`�|E�q}�2;�y����1��koc�f�"��q�]�=�I����°�9����<�^�0�( I����Roten~���b���UDQ�\�tc6�EU5\oϬ��<#�Y@�<	�IG�����%~�1�O���������_��
�������Xvjr��C���9f��������R�b�uTn4�R K
����^<�0�ho&�� K
�-"KA����*�(!�AL��=҃G���E�J��n^�M�O�̎˘���K����t��$A:TU5,�K:��3��q�^9m��rY7�4�t*M~` =����a�ŭ��e��2�' � ��`#�.���t}D1�{�{Hx�v�J�v��/�-��t��@�m� IDAT�-�}Ν;G��F��V��>�9{�,�<��q|�mזqeD�ե\i���y�O�ͦ������̪�E�A��a�fo���!<�<��O��I���{r��XO"$�O���w��ݿ�*|����燆�N&��㓓�����"ˌ��b�&��x0�"h�V����8�F�v�I���U�L�x<��UT�����&���Qd�r��ܩSQ�N�������J��s�52��*�$�6#9�ٱ$ͮ�v�C�ڤ���E���U?ZmCp]�7w<��q|�Ƕ,ˢP(��t�f�d�i��G�E��\/k��
^�SDZ�������]:��V�Vۡ�q�#���o~�D"�G�CR���0�(r��ulj����$����r`t�.�4Gm�ml��H�y��c���je�vo�qH�?WӴ�(�8�vn�~�׏OE~V�/O���:xPx�,�'������'''��{�7NOLL������L�4�$�\.�$�I�(i�jR�U�u]��E�V��(J8�jY3�V��:t]Ӄ���Oݲ960
��V�f��'z��m�I��璘	ɫ�3L��:Ӷ�v�J�ޥe��C���C��R�u=TM�4��[�Z
��H&�LO2���h�6]:-���*�0DL=��d"�M��Ų�4�6u���fY(����0Ms�9$���:7n�`kk+b�=�쏷�J���s��DA�j�ٜ�'_dfzQ���܈,?��a�!Ȇ䩦��wݰ%�g������Ӹ��������\?<)� =��'����VWW׀>���}�󃃃/��1�ϧDQ�E!��D�AdE�v\*�2�J%h<Ѫ����$�N�n���xH�XB@�U�M39���� ��)� Z�N������$��L2�BVTZV	�ω��x�Hsm8
��iˀY'�8A�2��C<M ���$D��G�������*y(��"�8p�Ш9��|�Q��<����>G*��C�	W�|>���{�.kkk%�����ua1����]fv�cc5}�?ċ/E�%,��m��]��6C�l0�AQ$����~���&�_��~���@�K�bcO���!�g<M`�I��>�>1+�y睯OOO����G�ɤ�J&�4�u�L&K"�`ph���qTEE]��_ѵ��X[�����	&����)V��kȊF��ٓ�-�f���єT�U�h�}<����dv���I���6ɔ�gHȮSU�f�
�����VȤr)�l�'iH�Z��S������"K>��H ���X���a;��bYmn�X�������D�,344)�͛7#�	��q号wS�@D~�m{�M���t��7昚�j4�|g�8��P�W*��`�����:V�e�s�f��/?ʅ8(���A�ib����Zx�3g�|� � ����ӧ��L&^L�3cC���\6+��A�朗1����\�u����|=�ṡ)֊w�</��Û=li�;�E�U4�m�v{�E�v�-������]��E�]�ŶmdY&�Ͳ�����O�U��UA%��
MuQe%�	��!���'�.�� 
�z��w���:�(�j���*.�C�u�ܹ�իW���2{�?T�}�Ih��Ɵ�߅����L���	*S	$Y��B��~<K�07E�(�ܿ��TB
��A��n���r����~R�~���'e~T7"�������?�>?666t����N�3��?L�&�(�=|�Z�SQ� ^���VDQQ�u޼�A9�AA���в��S�(aY�au���|�����F'i�.� �+�&�)�����{^�a��A����ض�N�Aq��o�'�E��<���H���q�����Õ��j��O�lIi6�&��@��^��x���q�ۥ�j!I�|���uV�v�T-ri�|�D�=�2b�^�T@����Ey���w�O��s~�l�'�{��������X�z8o����-��$���sM��ܠ���w}��P&4O�^**��I<#�r�g�
�%ʲ]�pҳԛ��iJ��h�Kc�����4j�r�D�38J��c�*2R؏��[�3��َ��A�YEi��_���Di�xϽ0گ�*���|���Q z�c7G�� �t�]�M��cz��G@��.A�c�D��v;�`H�D&��P,r���6�'�L�$
�$�yO�ן
���~�I1��I7���q��K��*8�����}�q����ހ�R����
]`7���jt��Gx����/~1J�śe�'��s\���h�:�v�4�ʷl�c�V�uN�:ŋ/�؛M��4��Ve۶q'Z-��.+������_'����5L�
��*\�p�W����'�	h�F�T��!�Dl�6����K�J�􂙢0����F���U��z�[�nQ,�Q]�������J�c<�>H�b�E�'�~��~�F��a?��lj'�Z���/\���!�����*�؁�D%��P���.\����=��@ 3���GQ�099I&#Q*�$�l{3�Q�}8ZLQ�=�;|������1�W�g^{��(��a �b��?|���W�F�"�D?t_�?.�e���'4Y�N<tC
���4�0�D����j�G�R,p\�dB
HRn�NT� -�8���/"<
b�}�'Bx�C8�]��
���/�,��|o�����@��Ǫ���v	'�"��������G�u�|���"��� (z99�'
_�Vfdd�BaQ��^�T-��3!S�Z�C�ya&���u����'��f�{"�ʿ���իW���~�=?���K1�=��ˆ}ߧ\E	�v|O�0t]F�edI
����$�$	\����;��[E鵡���n�hñm:mo7��S���_�'�瓆����쾭��:�-<n�5�Vo�,�E,��x:�z�G�uѵ`��n�d���枈tػ?>�[t]�޽{\�~�1`��r`�u��"��k�t:4�M^|�ň48~m�R�D�T�^���t�m;b�S��$Q�yȭ�s^}�({�?Ѕʿ��ȇ~1��{����W��DQ�V���[o15;;��B����NkF���qll�K"�BUU��׸~�*�R1��Z�:K=�������Z6�N���C��R�2{,?������^� ����88t���� �Z���)bS���S&��r�<�v���M,ˢ۱I"+wPU5��#�d��H�Ce�~_�~�7n���3:���ۨ���wvv8|�0##
�TΥY�\*����/�~��y�-^�ޙ����"n?�6�NGf�ŋ�y�)r��8�����N|�ko35[[P�ˤ��(���A	v&����n�`{kE�PYQ�D1��(A
�� u�ajj���y���I$�k�?�O�O����[|v�~����B������m��O���}�^�Z.S)�1	FG���ަ^-��x-2�Ô�ad��������\�z����'�ң��#����NFl)����?��q��!�n�!;;;���P�Th�ZQ���*;�w����CRN��d2����"W�\�ܘ~%��j�C�_�!M�T*�կ���4-U�mE��cY�n�dk+�Vp�=��a�C�%|��颛9�z�M^z��x��ߊ��E~c?�<)"���;����'n]�4U���/�n4�u���2��cc4�&�Z5�Aw:�s'��Ƣ9x!�6#��|�2�=bdd$j�WQ��o��|���9J��ﳱ���ӧ�r�*�6��0P}���T47 ̯k�L��z��{�|r�|>��r1$�R)�`ii�?�0�"�_g���>��z�3�m�T�U���/P,�A�L�ܻ�I�H&Ȋ�Y�p`mP�<���D�5^z�%��Fi4,v���u���>v��<�OO���!�=����8(�u�t=�X�4Q�a�g�Nlj��ZI��%lV��LR���J����(>�@�K��E��
7����/�I�.��8�R����|�
�����0=Vc��m�X-��"kkk��̐N���,�~��������;�f�Y��$w�ލv�fx^�~~|�/�>)�,�Q/�_�Gs�9�E�jѨW��uR�$�"�n}Y��<�����#G��D�Q�A�V�:H��pȏ�|�|v�$��i܄����HB7'a�s�G�}|:�6����3Ѩ/�u)�J�R)��,���$�[8MIӴ�?Anp�|���R��+++�:u���4�h����DۢT*���t]^�K�����hQ誄��N�I&�ܾ}�K�.Ef5<��=��<mp0�q��.�5H�� �P�[�V�HH*�v�Z�B:���w�fjj�v�I�Z�8q��-���>�P����c���VW,��ͣ���z��Ϯ2� HȒ���
N��)�Q��0TU�X,F7cX��B8�Zx�J�����x��9q�9��&����t0M���!�޽@:%"�+l�p\��UD��y��/��f��Ǖ��իQv"��ǃyO�>)+��=?R�c�qz$�
[[^��Et#��ȲD�RBVN�x��G�`5�4�A��(
}8l�"Ig�/���G�z߽�����/yZ@����v���7�}�Õs�����zc(�vG%	T)(Z�dA鴛`̓�P��h�۽�}��j)�)}�=�O҉GӍD���-��#FGGi4B�`||�DBcqq
Q���n�Y��7~���I�R{x	a�_Q._��ݻwQU52�� ��*���>I�#}zMU�s����I�dU¶�8����y�ǎ�@Q*�)ơ�&�HZaY�Q��-�э]8(���=�c�3�������z�G7*?�x�pm�fj*�*;)Cp=�P��h����M�X����DEQ���{x�‡��~����<7��cG&#�V�q��!��[[%$	�m{��Gs��H���n���� �٣_�|�����Z����t��:xܻ�$���4	��"I����<��D��e�j6#rR�ڄ��g)�������|To�Փ8?�<���	bm�K���xg���:>\���M$Eh�����d��/����4==
�W�����W���I�ͱz��9~���8�
fggi4j�JUDQ �zlnnR.�)
��e���)�Jlmm���E��DU�=.I?�<iŏ˓�������7T]_�`u�C�D�cl|��?���F����5=e�Ix�[���i
�]X	���LR����GB���������F��G7+o-��,o9d���vMx�շ)�J�@��D�4���)��{V��"�_yZ���q��_@�.0==e�~t:-*�J�7q7#�����YOc��q��W��"(��mۜ9��#�V9��<G�Ρ(

��7�����ZT*DQ$���j5x����^��1�~Z�~���-���K�S���l+�{wJ�>^p�=x���җ�>-+��n�#�����A��6�SK�Db�8W�{f��h�^�������P(�U�x�!�~ďC�
?� �><�7�k`Wi�?�.t]�3?Xeg�eh��ĉI��i=Q�� KĠ\8A��eY�;��`�J�\��iq�N�_�Z���S	>��O��.���Z��N�v��u&�׾�\�R�n�f����\���7��:x�
%{��?�3�΍�(
�eEEH��0<<�����?�?��K�� ��I��A��J}��
�1I J�054]A�D��d�P>A�N�C���0(�L�P�,1Y�z��/n.Xվ�r�4�"��GB���<xt���w���2�^�*l{5>>�����A�D2MG���{‰�f�4-���O��FUU����</���_�W��=�w��k?`��������j��v�[[0<�29+����a*�z09Z�eDIFw-��h�Z蚆��T�U���h�Z��+�ĕ��?��`U�%��?Ք�3�ő�I)ٶ]�������(�aK-˲��Z!�W�~�p�Eׯ4��Mq��|�cG&I�R���o²߰|8H��?�J��
�堮����DQ��hp��-����H&���c$5�=	5���H���J�ضU2�S),�bgg�F�eB��"�\����7��п��|�g�%q�X*��k�Z�K_����M��4�����q�~�c�8T�~ E�Lv�����63�h*o���GFF�F��-�[�[��o�*rt����� �Z-._�)>���eYA<C.��M"� I"������\��Y[[�0�f!�Ꚋ �|��Y��{���ψ@��S����nݺ�8���Ź�_Q���222�eYQ
>�V�Ńp���ٝ�@�$��!:[;v�n�)>U�u:�<���Q�Q�?� �?��(J�6��j	��u��A�8����킦��P0�	��h099��Ty�i�t�\�!��c&v�
;� �n���ȢG����K~�W�T�V�|r9��"��KBvYxs	�}�ʕ;�N�>=2�E��j�(
ccct:��ـ���w@E��z����fg���}-�"�D@�L��١\.��v1M�|>O&�A�u�D4M9^��iZ��a�>����lF�����c##I66��ހ��D�>˲��GKܹ�"�T���tڔv�1hA�O<��s�t��]�o������?[_[�!��TZ=�_\��`������f�/�:ujBv�B��u]FGG�!q�?���>,�i��g�6���Q�333�N�Պ�I��X�n�P�Z��lFMCC"|�j����a�x@1B����s�?ҍ�©D"��H�B�H����0Ԉ�`Y��hZ��E�V��l")�"`f�Z�"�ಹ���u��_���޵����Z�X"��S������U>����W_}u,��������d�Y��n4�*��@\��eY&���qn<h�p�<	�att�0��@��qLk���`�pv
�f�f��mG�B8L�_�!p��*���F
Il�&�L22�a{�@���4�= 011�@�;w�躈$mԃ��n�Õ���������vue��t���<���g&��f!T/^�x�R�����+s�tzO�jX���#���`���ΰ��7I�0M�dn��x�;�6Kn�S$�ɐN���]�Y���S�a���n�����۷�w����=����J�^���{ܾ�Ų�8~�8�vځ�A.��\.�n �V)��hj�{�\C��05�em�ɿ�����5�ɥk���٨	V��<ෟ<�g{�4n޼y��?v���OOO+a�*\�B�X���(��cq]�����*�i�%Gh)��h;��R���]|����ࠈ~�����u
������M���~��]���:��6������7Y]Àj�5>q$�R�|>E�V������G�Z�^��=C�v�\�o��>r�����oַoWk�&?#��<�[G����[gΜYEq�رc�Lf�
���vbq	��`o�0\�E�U�dG�!��je�[�[T�Z�2�F0�4l
�K�F<����po��4����̰Yl�*7Cǵ�w���OF�4�-j50� ⿶��8����G1
�u1M�\.K�\��n6�����k>����C��Q��ǡ<�8<��~�P�s��f��g&���Q��V����{�]�|�rW����y#�JE���v���{ ��'�>�Oc`�<��:�|�G�u\�0חL�n������ VU�'���q���R��yJ#,WrlU<�V�[B���R]C�M	C�|��?��kQ@1�ٗ��
���J�֖��Uz%́%fr�,�j���n4�<����H��~�9pydT����TBmeRZ��7g��ߘ�ݏ�f ��I�Dt��V]__��N�ٔ IDAT�|��|�˲<<22b���~�K��w�����(Q��ի��뗼��{b��E���nm��\������W@�J��P���-t�F�]���$LR)�DR��%E�����/�<L�ӎ���I�Q�X��d���(tX+a�6���L&��KX���u��'���j������ꆮI�D�ٻ���o�?+x�$.q��G��;kkk�;߹���Y�V��O�N�c�k��@���A.���ٳ�?��?��R�_n���VG�Ҵ՛W_�ޱ�d��DS�%QE��UCH��.`��"��"�, +��aA��|�Ω��h���(&��*�B��R�k100�eYQ�B�e��$�F�f���Vk!�5�MF�rBƬͬlh�_|IZ@Wp�h�3m�q�<�gr���i|VA(
�۝Ng�~뷞�Bٯ�v݁�@ �:Š�����?��s���:�{���|T��>�)6�z����������VU�.�U��je_�ڲ�K��h�/໠H>�졪�)�" J��hs�Z�W^������'q�
�r0�OסRi�(022�!�?�L`Y� � H
f��Q�]��5_���,Z�8?+w�Y[�g����ݎ�6�P��*���{��A�1_���	Ap��,��-�=����;�ਮ;�Ͻ��v��zKHB �`/y�
#���L&����)�v�6f�L�6l�����x1p����
ۓ�0�JMj��L9��xgw��B��F�@�g���q����틄C�
�Sե�������w~�3�d�:���F����$��nխz�.�;�I�����5�5��`�$���4�T
nE�bR�j���$��7ۑN��ӦN�\����"���P---��bֿ�������H&5K����,�0h�]#m!�/�_-��_@Q��{�I����w�v}ߡ�U����>�d9�r]Q��}\w�m��3v�~K)-�a���H��L22`	@L���p�fPj"��!���_yb�(����ժ�N��t>���p8\���[�T铆�}����>��+x�$�	PJ�zq�}]��Q\��ƃ�*p��Ȳ���D�Q�����ގ��	K���-���G}]���{���Ѕ>�_A)U���EB��zU)��/2
�J�D6m���W��m���ro���g���i��/���Kf̃E��+d5m�u�4
O��'�!W���=�V��T*9�ec�q����+�TS���g�ܻ����y��T�J)�n7B�t=��%6"�����n���-TB؀U�׋T*�la0��`MM�<񎙹*��!Đe)�����ժ	�$I�6mڴ��_��vn��`^��g�@�Ɇ{��ك��WU1�0BݿOoo�	WL��
C�a�x��'͓�"�tb:n�/���?܅5a�Y��~W�>�`��?�|�s�g�\��t�-�����ZQ�����h`i)
���)�x�LƑJ1���VW"o�}&�R����$MA��!�?~�P�eY޸qc�����L�$A�4\�x��Ә��B&�ASS���˲����crr�Hsss�F�X\\D$�FFF�������}o�����+fQ��-9�����nA��'�C[�A@�)��3x%���tl�'�Ff甮{ש͚V�Z���gKK��D`qq	��F]]�%�]�\(L3W�'��fQ[$��D���Me�()�R�����n��n�?�aH�R�ˆD"x��7�J��J�p���c�֭H&�V����k�s�~qgjj*z�ر��Ϣ��#(-~g��-Ył��wW�"I$���mUϾ�?xd�����緄?�H�`�n76l�B.!a���?
J)����FasE
��نK�&�HP���RD�Q��TK�ڰ��Kkr�� ��R^�XW�w���
(���u|�F @UU�53�������n�:����b�0�"�I���ok��C}:!0�"@w?� $�y��[=C�x �����
6��Ʌt(J��߿�+W� �u�8`��6(
�H�����i,Ú�*W���������;�g_�P��꾭��A����d�>}UU����Yܰa6oތx_�����ёs-�0V�+�Y7�V�|��\/�@���{��g'��0a>��`ݺuhlT�L�\�0���	kԙa�u>�6�@Q�d��vg�l6�����2M���]�o�: ���A�v����B �2��0�����*�n7��`�D�s{��f�w�״G�?��=��h�Ir��c[�u(����45)H$�\��
\�8���1��~봃�	tu�E��]/�1�
.!���{���b�w��>'�"@Pv^��c��a�$I��㱮��`��?���}�\|�:��" ���o��s�g^���7,��L�<���v45�H��|�����.^����d���*tu�-�Z��� $I�A��CF���[�A�8��E�\w�^oYc��iew�(S�܂U1ļ>�t���K!�R{�GO�OVU������ֆ�F�dE�@�ʕ.]�d��i��H�
��r�d�X����!���oܿ���S�������-��L�T�֦Bc��<��Z;��;�n�w���=Ň,e�!�bM�H�Qߣ��x���J!>!mmmhjR)Vt����._��@ `�W��6�~}{1�aqq᠗|�sRݗ������|r]��͝�#��}��?�,�5����{wm�%B @P1�ݟ��n��r���Y��y9��?j���>�ă��w����}�}��H���kע�H&aو_����ؘU`]=^���$�y���"]B>�d3ᢅE���x��O=^H�ohP���P���P�M���*�^�;9��ZCE�(b���SL�IL�tZמ<���ֱ(���R$���I������E`Æu�,,,X׌���8B~I��y�?���<�@-Ju�� ���f�]��_���<&�(�<�"p���W�~k��*�u"R	��	x<��\ccc��]�g=dH$��[9�x5!���ߤ���0�F��7nr
�N�?{$�'���Bv�^��xD���,����?:<���I����V45�H�Mc�r"��z���9���R�D��i���^EQ:�zxPq=@�঱/`���#���?�k�va/J�l�W�;y!|2Z'IZZZ��(#�`��._�l��F�1�$�h�l�*�E(���g����
����;�[�)@p�8LJ;��<pz�d�Q����$�X��W�=y!t�G�iB�e������e�	x<��l�.]�7 -�U�?�"�h4�D"��B>O�/A��!.*�T��?&P^���;��N�8�<"t�'GB��@�lhKKX�p.�D ���ŋ�BV$�˱����"�X�`EO��*L��/�@ET�s���S�����>����>���?6x�?�/qX�v-�H �cttԊ��H���D �L0)��%{vv+��T��\%߾��_�;���Y�$ɴi<{�=�`0�"EQ��ֆ����x��W�)�	�r9TUUa���baP/^�Ӕ�
�j��0��Rꦔ����V��A��"x���/8�����	8;�~�A�#'S�����'xa�0K��%��H`f&����B!�E:����b��N�N�I
�P�C�"!�����$�x�X�*�����@@y�NY�%�I�$�(L�#���c[�8�}z�dK2/����>���IP�>6mڄX,fMef��8wnZ>%�����w��s��:�p�UU�rI �xs`�3��+�gXj�,�2D ���
øF��,�|'�Lv?���������?{��w��X�.�����R$p�J
gϞ�&���xTn2�jiɢ�)E���̂�Y(�"�}�-ln�>�b� B&��.�T����9�����\�p�P*�~j�	 ~�����}�9�	~:�ݓ::�QS�b%����̙3��V5���c���r��cW��{����.zzN�w�;�d2��zq��/��a��}^PZm�ˋ�AE�E�,�n�\D��e��g���'�LN'u�cg<'�E�:;;ז���LL�p��iK��h ��-�^,�c�DYfV�ɤ	UMab���O�P�~����e^��*��g�	��s�x��$�w�cg<��@���MB�"0>����0��e���f
���϶C��l��̈���ϗD�<��|c��t��K���h�a{wm_a��@���ɹ(pk0���׋�,�I��J��s�ΨC�`��{o+����%���h*�	d2�A|�3,�"@��DT-Jai⏿�O?
&!X�����y�����ie)w��wމ)��e�
^�玞VO�a+�|ش���,�u6�|b�ɓ'-�$Ɋ�li��͢��H{��@з ��?��G>��(���)k& �9V��K�=p�܉)��k�&�b����ﺏ��Ak�
�f�Y�vq]gDŽ:�����.�� 
a��V�*{�i�8脥�, �W]���	�#���b�I)U�n���������;ۀ����,J���੔�=�:d��x�H�|����LL��)
����uW�^�իW1::�t:��Zd���Q�	�YJ�`6�((n�B7����u�؏���pw,�#���#�iS��!Ue����VA8d2l!��@$�cbb>��L�L�Y��Z�,3��b#�{Qt�b �a싖/v��o}�Gv' �1HQD���w$ˉ�"K�1���v<����i�P��.,�7MV\Zb�Bcc#E�����%m�ݟ@�k�B) Bco�]��
�����5Xq�������0�	D���w�<20�����t�PMM-\.��'�f�~?J���!���h����Qq2�=$	P$��p�]�!@p38�;=�߳�.�h���3��(O��즶��p���]�j��^��
p�\��u��+���
�̤�)��b���c�o�4����tg��/@P9�[}�]��p�P�c�����_����P�;>p������9b�Y{����UUQW���,�)e����2��W��g�.�F:�IB\`  ���B7���{�����z177W8|�p��i�`��(���H�q��@��O��A��T��ںz��
�x<hl��D`m�cc���rhnn.�b�|��框O+N`�Q�)��&Xi�����D����Ǯ\�r	l���Q��"�����d�T�����Uהҁ��*47���[��;:A.�CCC�%���G8�#�ZP
�%-5
7��g9p��Q��p���ٳg/�-�90Ƞ��U�O%F@��ONx�������5k��*(��hm�CU��;��S0M����I�$I��u�k�TsMMM-��/ .E5A��s���}���b�J���#���ر�)���Gi�G`8�K���`�G@f���΍5
W����a�|hkc"�ɰ�����g�h,Y�>�^����v��455�� �B�@���/z�ŷs�;�'''�ݻw?�N��_{��`GT<7叻J��=��]ۥ=;���/���2������|�����7�(��z��0�\�1����_
Dޤ�'��������ҖN�3<�t:��MBt�Ʊ��B����4qv��fttTz��S$����Y�4�ǁ+��P��w�v�(Y߇����z��Ao�����j������y����/����ԛo�y��v�MӔ%IR�0(�!$K)�0t� �g��J6`��Κ@,C<�|��_����9  	���0�6���(�&!�<�R�إ�j����N�
J�f�f�}��
�P(,��	!
X����B>�5T �+���	h�&!�����˗=`WU�,�tV}Ƿ_�}���K�_�3����f�\.W�e9�c�&1M����`���S��?�T��������1_N1��p����4M���Eq��M���S(�@�Iax�/I)�u]π����ȃ-r.��
����;ԗy�m2!� N����|n?-�_s�I`��G]`��yK�=;�M�����c	@|�S۴gvv�(����݅=;�5�=;��"�gg7%�DPpS�s|n�a��\��rQ�M0�㣠O^���.Rl�"��O����+�z�s��BB��/��4����Xl[%(��wm����
�(�s��^!������{��gZ`�&�n7�������1��I�����XX��7�{�*����ߞ8�?�@�ǃ��y��=g���J���|7�ؗC��"����s��B��@��.�����'&&N����xK�]}�Z�0��kaa�R��	��S��]."��~�Сw&''O�0	 ���A��_�*�O��d2���/���B�pffF���~6��΂�����m�Bn3B#I�<�����GvA�@qV��r��P:Ǟ/>O������Hp�d2�R)kt�e�r�ZZZ�^}�Շ:;;kP�{�] �gC���������|>_��^����s��-�em��ۏ�Mc��k��^�ix뭷@)
���?����`C+`��{Bn3B����\8��B��կ��7�����m`��c���_�*���_�|>M$�_�i~���BU������"g ��T����躎��
�����L&���7x�<�Q.�p� ���~��eYF&����,t]��0�E@�uLLL(`5�*?�UE��b���S��$IB:��">6��`��(N��8	XUD#��b�������f133B�5��c��5bSZE�*f�Q߼�r��"�L&c�OlE��W!��o��^��';��#��(��&,X=D�%�*˲)I�5���>g��:䗆���D+�*#@p��NO�<�����lcc�����NoO�nA��!�J�����UB���Jccc��ڵ����Suuu� �^�e���`J)\.��������|r(��f�n���'N�vǎ{)����ڲ���9�~
�\.LOO�^��M�fQ�
�K�mDx�*�W�]���G�^nkk�ZZZ
444ȔR���AQd2H��0�J��C�����E����3&�܁쾀�ی��`?��`;5���===gΞ={9�J��vtt�6���R)��
B^�������PZ�S�`���?��6#�7Eil����Qt��u}�رcg.\�pi��������@ٹ$�NMM-�={���
�i,��E����f�`�������r��P��K_��}�H�:���~�7�;c�e0?�q��?�rG`��WQT
_�|�l��o���������=�P���ܹs�|~,�Ϗ���c`Ơ��O�"T�r�.4���tvv~���˿������wS��{`;��
����� �Pۃ���x<���9�~���O�>=s���
�*X��~`_�"�_e�������H+.{�>�tI�T[(�PJ�>D���[�uAl!�
@�u=f�!��ŖGIDAT��Ν_�"�jx�������>���`?��+�!�[��қ����O�x��w���_ >�?�z��.��IEND�B`�(0` �%G<
PPP�BBB�i"
JJJʥ���nnn��,���}�������������&����������������


�$������������ccc��'<l~<l}
;k}<l}
=m�����������������*;j{7ctO5`pb5_og5`pe:j{(������������|||��A8ct\Lk�Cc�=]�De�.O`�8fw7����������������\\\�Y8ct]Vy�`��[����{��3Vi�;k}����������������www�[7csYRv�	k��]��0���Z~�Rr�<gx_����������������rrr�Z6brYQu�j��^��'���j��'e��>j|Z���������������sss�Y8ct]Qu�	k��[�2���w��1Og�111���{{{�����qqq�Y8csaTx�i��[�%���Kl�/`|�Cl�|,,,������������\\\�v>$ 5]mzY|�
o��^��#���x��"Ki�Dppp���������������.?�#7G�1@�
;]�
o��c��%���r��
Z}�?g|�222^������������������������=NY�6W� ���v��~��n��z��p��Nr�9bt|Id*FT�����������������������������r|��e��E��9���1���Vz�Kn�Os�i��]|s$Uk�bt|�������������������������������>S`� ���;���=��Hk�Kn�9���9���H��<���P��������������������������������������uvv�h��+���0���Os�-Q�$g��K��H��V���i���������������������������������������������^z�$���*���b��$H�Gi� w��H��_��b�����������&IV�Dw��2~��?���;� 8L�5gz�Hfr���������?���4���9���}��'K�"b��&|��$GUO���X���������%16�*24�	g��T��;�(;�/DL�8JR��������_��P��:���!���'K�%h��C���
-U���k���������������@[�g��Cg�
%=�Y[[��������9Sd�t��G��%���
l��0T�Tv�-���	
.C`+((�oop�Z��g��e����������u~��$/9�Rmy�ny~�'.1�]^^����v���#`��Nq�}��w��4X� [}�,~��o��,Jb$%%�yxxܠ������������R���X��l�������������������������lll�uuu�q���,L�/S�V{�~��`��@[�2���F���H��!@^""#�rqq֝���ľ���������������|{{�����W��v�����GTX�x�������������������=fx�%u����� ���%���~��Ws�5^q�?���b��n��9���(Bi^^^�����ý��������Ž������~~~��������������������_�������Xcg�Vjq�����������������`���X���L���=���I���V���V���u��e��5���m��p��___m�������������������������������������Ž�����������������X��d��d��t��������������M��\��U��I���<���2���)���*���;���@���>���A���4���"""N������������������}||���������������������������������������W��s������������>���u��#|��%{��*���.���9���W���d���r��Q���
\~�%z��C������b���澸���������������������������������������������������������e���������s��������������n��e��b��j��q��`���d��z����7���h�����陗���������������������������������������������������������^��{������x��i��i��f��=���>���:���6���2���0���]w�!b}�Xw�Xu�?���v��Z���B#
���㕔��������������������������������������������������������r�����~��d��L���q��?���Z��;���:���=���D���M��4���2j�����Tt�Lf�c��=p��W���   �i3���愄����������������������������������������������������nno�K���/���=���M���/{��l��$r��/���:���:���8���:���M���A���3v�����\z�Yt�d��������������UUU��G#���悂������������������������������ȿ������������������������������������S���5y�����U��.|��M���W���L���W���^���s���������W������e��&j����������������������}}}��H$
���ッ��������������������������������~�������������������������������������B|��h��V��5����������������������������������[���l��i��(m������������������������������w-��ã���엗����������������������������������������������������������������I���g��[��:�������ý�������������������������K���[��l��*q����������������������������444����o�������������������������������������������������������������E���`��[��;�������������������������������A|��P��s��(p��������������������������]]]�
������b���ɯ�������������������������������������������������E���Z��Z��<���������������������������I���H���"x�� g������������������������kkk����
���y���֬���������������������������������������������H���T��Y��>���������������������������J���B���(}��#j�������������������������^^^�����������ᮮ���������������������������������������K���>���T��B���������������������������K���;���4���*o���������������������������*&&`����������배���������������������������M���m��?���G���������������������������E���,���8���.s����������������������ꩫ��J``���4������������������������L���l��#s��Y��S������������������������i��m��:���,r�����񫫫���������̪������f������M�������������������0|��Pk�>���O���������������������O���
Ga�)k��E���P��ު��x���E������	���a���Ѱ���d���`��Qk�?���>���`�������������.��Kd�0A�F���0���5~�:���I����/~��"l��"j��-��� v��i��p��v��g��-?�*k��9���-x��B��/~�K+���<���E���L���_��Y��H���"o��_{�/���*z��8��*{�?-��4���X����d���$o��f��&x��6���-{�H��$H���H���H���H���H���H��'���������������������������������������������������������������������������?���?������������}���������������?��������������������������������?�( @ �NNNzzz;rrr�OOOj���Errr�����PPP�����rrr�����PPPq���΂�������PPP�d��aGk�Gk�Gk�����rrr�����OOOhd��aGk�Y}�2���Y}�����rrr�����PPP�d��aGk�Y}�v��N���N������΂������PPP�d��aGk�Y}�2���Y}�i��T������������PPP�JJJe��`Gk�Y}�u��N���^���w�������������������PPP�Nk�Y}�2���Y}�h��MXs�����������������������8EP�2���Tv�-Vp�`!\x�,t�把����������������������LNP�H��Ig�V���6���V��i���������O���@��b��Hw������KNP�M��Ig�i���RRRWWWc��e��b���������$7G�#���=]�3?H�����k���2���St�]���VWWTTTJKKFGGS���[��k��x����������e{��.Vk�kll�����?i��St�3v��P���VVVMMM
FFFGGG;edc����ȳ���W���i��e��i�������h�����������������Ts�.r��W���4��XXXRRRFFF@ABdbbw���ʥ��ٺ��ὶ�������V���a��t�������������������g���W���^���P���=���6���IJJNMMGwtt����ݷ��޷��򻷶������������������[��{����u����c��<���M���K���L��f��L��� r��.}��vssmkk�����ļ�군����������Ž�������������������[��h��v�����w��?���:���2���9���K���;���2���6���������������������������������������������^��}�����������_���N��Y��d���g��f��?���1���WWW���򣡡������������������������������������d���������h��i��O���B���2���6q��b� e��Q���G���[[[=XXX���𯬬��������������������������������������q��V���6���#t��h��4���7���A���2���U������'q��q�������TTT�HHHt\\\2WWW���󦣤����������������������������������������������������4}�����2x��k���r���������W���{��:|��������������fff�888m[[[$�����������������������������������������������������B������R�������������������O���K���B������������������RRR�SSS����������軼�����������������������������������>���{��R�����������������J���*���=�����������������gggz���J����������������������������������������?���Z���W���������������F���*���6z��������������zxxk������l���������������������������������=���*���]��������������"o��4���=������������������`ii,������}���̴�����������������Zw�:���p��������E���Pg�;������񯯯⬬�צ������R������?�������ɶ���������J��� g��2���,x��*{��AX�,m��B��բ��/����������������˹��ǜ���7���>������1���e��-��?�����'x�"(}��@���a��#t��1~�������������������������������������������?��?��������(0 `	����ZZZ���������ZZZ���������PPPqGk�Gk��������ZZZ�Gk�
l��Gk���������PPPqGk�`��"���Gk��������jjj�Gk�j��@��Gk�Nj�������nnn�a��h��Gk�e��#���U���QnZz}��������������PPP�G_�d��<��Gk�p��
!r�䇇�����������������KOS�)���Y}�d�O���g������������������������UUU�^��Y}�/v��O���_���������_���h��T�������SSS�O��Y}�9���WWWWWW]]]%WWW-O���`���������^��
Uy�4L\�PPP�n���Y}�)s��'q��WWWaaa\\\,]]]WVVV�^\\����禠��U���p������hnp�d���������}}}�a}�*t��H���b��WVVk][[��}}ة����������ƿ�����V���k�����������������t���X���o��c��2���j��rpp�����Ŀ��������������������W���v��a��C���4���*{��#z��#w��5}��!p��-}��e���������������������������������G���K���'w��)z��7���7���7���)z��z���
]~�4i~�"d�WWW0WWW������������������������������|���F|��O������?���������8������(s������|||�UUU�YYYEWWW������������������������������������L������D���������?���r��(v��������������WWW�aaa,��B����������������������������������E������C���������?���`���*x�����������ooo����'�����������������������������-��y��B���������?���A���/{������������[\\���7���������������� n��Y���@���������?���'p��;������������Ʉ��)������K��������G���!k��4���P���M���Ng�0y��K��ݞ��G���(������
Z��Q4���<������6���"m��9���?��?��'?���?���?���?���?��!��������������������������������������?(  @ZZZEccc�ddd�~~~�����{{{�_���]��]��~~~����fff�_���]��1���Nr�~~~�����{{{�_���]��;���Nr�x��x��x��x��h��~~~����bgi�%p��]��/���Nr�zrr�zrr�zrr�zrr`*��%��%��=��yyy�����������ZZZ�)���Nr������ƥ�����]XX�����F��F��H��g�xxx�����������ZZZ�4���Nr�xtt�<�a�^[[�����zrr����������-��yyy�x��Oiu�q��ZZZ�~��"l��`�m�	�S�SPP�����zrr�F��F��H��g�.���Y\^�����ZZZ�^��e�����xtt�0�_�cdb�����zrr�x��N}��N}��N}��)�����������i���x����������������������zrr�zrr`Q|��d��Ww������Eu��3��D{������������������������������zrr`S}��e��Vx�����Ft��3��>z�������������������µ���mV���d��]�����ĠH���4��[~������������ý��Ġ���S}��m��m��u���4����S}��\���S}��k��s����S}��\���\���S}��Vx��S}��\�������������������
00h  ��(00�  ��h ��	00 �%
   � �	 h
�4VS_VERSION_INFO��
iaJ
iaJ?8StringFileInfo040904B0LCompanyNameMicrosoft Corporation�,FileDescriptionBitLocker Drive Encryption: PIN Change Tooln'FileVersion10.0.19041.5737 (WinBuild.160101.0800)BInternalNamebdechangepin.exe�.LegalCopyright� Microsoft Corporation. All rights reserved.JOriginalFilenamebdechangepin.exej%ProductNameMicrosoft� Windows� Operating SystemDProductVersion10.0.19041.5737DVarFileInfo$Translation	����#\h���'f�5(�a�*���T��buG�������UIFILEMUIMUIen-US�h���� �(�0�8�@�H�P�X�`�h�p�x�������������������ȠРؠ������� �(�0�8�@�H�P�X�`�h�p�x�������������������ȡСء������� �(�0�8�@�H�P�X�`�h�p�x�������������������ȢТآ������� �(�0�8�@�H�P�X�`�h�p�x�������������������ȣУأ������� �(�0�8�@�H�P�X�`�h�p�x�������������������ȤФؤ����0�x�����������������ȥХإ������� �(�0�8�@�H�P�X�`�h�p�x�������������������Ц������� �(�0�8�@�P�`�����Ч����0�@�P�`����������0�@�P������8������������0�@�p���������ȫ���(�@�X�p�������Ь���0�H�`�x�������ح�� �8�P�h�������Ȯ���(�@�X�p�������Я��,��0�H�`�x�������ؠ�� �8�P�h�������ȡ���(�@�X�p�������Т���0�H�`�x�������أ�� �8�P�h�������Ȥ���(�@�X�p�������Х���0�H�`�x�������ئ�� �8�P�h�������ȧ���(�@�X�p�������Ш���0�H�`�x�������ة�� �8�P�h�������Ȫ���(�@�X�p�������Ы���0�H�`�x���������ȬЬج8�P�X�`���(�0�@�X�`�0�@�p���Ƞ�(�X���