��#� �,{2��z �-� �T�z��S-N�vQ�~�^(u � ��U �T�z��S�vg�S�N� � �\O:NT�z��S� �O���������T�[�sؚ'��0ؚ�S(u�vQ�~ g�R0�N �R�E�S�T�f�u�l� �A�P�I� �0R �W�e�b�S�o�c�k�e�t� � g�RhV ��Npenc�^ޏ�c0R� g�R��O �Q�~�wƋ/�zteNT�z��SAmz0 � �ُ�N�z �bO&^O�meQT�zQ�~z�v�[b�^(u ���O�v g�R�f�0�f3z�[� � �#�#� �<�� �R�E�S�T�f�u�l� �A�P�I� �����N�[�s � �#�#�#� �E�x�p�r�e�s�s�.�j�s� �A�P�I� � g�RhV � �#�#�#�#� ��W@x g�RhV-d�^ � ����j�a�v�a�s�c�r�i�p�t� �/�/� �a�p�p�.�j�s� �c�o�n�s�t� �e�x�p�r�e�s�s� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�'�)�;� �c�o�n�s�t� �c�o�r�s� �=� �r�e�q�u�i�r�e�(�'�c�o�r�s�'�)�;� �c�o�n�s�t� �h�e�l�m�e�t� �=� �r�e�q�u�i�r�e�(�'�h�e�l�m�e�t�'�)�;� �c�o�n�s�t� �r�a�t�e�L�i�m�i�t� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�-�r�a�t�e�-�l�i�m�i�t�'�)�;� � �c�o�n�s�t� �a�p�p� �=� �e�x�p�r�e�s�s�(�)�;� � �/�/� ��[hQ-N���N �a�p�p�.�u�s�e�(�h�e�l�m�e�t�(�)�)�;� � �/�/� �C�O�R�S� �M�n �a�p�p�.�u�s�e�(�c�o�r�s�(�{� � � �o�r�i�g�i�n�:� �[�'�h�t�t�p�s�:�/�/�e�x�a�m�p�l�e�.�c�o�m�'�,� �'�h�t�t�p�s�:�/�/�a�p�p�.�e�x�a�m�p�l�e�.�c�o�m�'�]�,� � � �c�r�e�d�e�n�t�i�a�l�s�:� �t�r�u�e�,� � � �m�a�x�A�g�e�:� �8�6�4�0�0� � �/�/� �2�4�\�e �}�)�)�;� � �/�/� �㉐g �J�S�O�N� �a�p�p�.�u�s�e�(�e�x�p�r�e�s�s�.�j�s�o�n�(�{� �l�i�m�i�t�:� �'�1�0�m�b�'� �}�)�)�;� �a�p�p�.�u�s�e�(�e�x�p�r�e�s�s�.�u�r�l�e�n�c�o�d�e�d�(�{� �e�x�t�e�n�d�e�d�:� �t�r�u�e� �}�)�)�;� � �/�/� ���Bl�e�_ �a�p�p�.�u�s�e�(�(�r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(��[�$�{�n�e�w� �D�a�t�e�(�)�.�t�o�I�S�O�S�t�r�i�n�g�(�)�}�]� �$�{�r�e�q�.�m�e�t�h�o�d�}� �$�{�r�e�q�.�u�r�l�}��)�;� � � �n�e�x�t�(�)�;� �}�)�;� � �/�/� �P�AmM�n �c�o�n�s�t� �l�i�m�i�t�e�r� �=� �r�a�t�e�L�i�m�i�t�(�{� � � �w�i�n�d�o�w�M�s�:� �1�5� �*� �6�0� �*� �1�0�0�0�,� � �/�/� �1�5�R�� � � �m�a�x�:� �1�0�0�,� � �/�/� ��gY1�0�0�*N��Bl � � �m�e�s�s�a�g�e�:� �'���BlǏ�N��A~ ��� zT�QՋ'� �}�)�;� � �a�p�p�.�u�s�e�(�'�/�a�p�i�/�'�,� �l�i�m�i�t�e�r�)�;� � �/�/� �eP�^�h�g �a�p�p�.�g�e�t�(�'�/�h�e�a�l�t�h�'�,� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � �r�e�s�.�j�s�o�n�(�{� �s�t�a�t�u�s�:� �'�o�k�'�,� �t�i�m�e�s�t�a�m�p�:� �D�a�t�e�.�n�o�w�(�)� �}�)�;� �}�)�;� � �/�/� �/T�R g�RhV �c�o�n�s�t� �P�O�R�T� �=� �p�r�o�c�e�s�s�.�e�n�v�.�P�O�R�T� �|�|� �3�0�0�0�;� �a�p�p�.�l�i�s�t�e�n�(�P�O�R�T�,� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�� g�RhVЏL�(W�z�S �$�{�P�O�R�T�}��)�;� �}�)�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �a�p�p�;� ���� � �#�#�#�#� �R�E�S�T�f�u�l� ��1u���� � ����j�a�v�a�s�c�r�i�p�t� �/�/� �r�o�u�t�e�s�/�u�s�e�r�s�.�j�s� �c�o�n�s�t� �e�x�p�r�e�s�s� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�'�)�;� �c�o�n�s�t� �r�o�u�t�e�r� �=� �e�x�p�r�e�s�s�.�R�o�u�t�e�r�(�)�;� �c�o�n�s�t� �{� �b�o�d�y�,� �p�a�r�a�m�,� �v�a�l�i�d�a�t�i�o�n�R�e�s�u�l�t� �}� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�-�v�a�l�i�d�a�t�o�r�'�)�;� � �/�/� �!j�bpenc�^ �c�o�n�s�t� �u�s�e�r�s� �=� �[� � � �{� �i�d�:� �1�,� �n�a�m�e�:� �'� _ N'�,� �e�m�a�i�l�:� �'�z�h�a�n�g�s�a�n�@�e�x�a�m�p�l�e�.�c�o�m�'� �}�,� � � �{� �i�d�:� �2�,� �n�a�m�e�:� �'�Ng�V'�,� �e�m�a�i�l�:� �'�l�i�s�i�@�e�x�a�m�p�l�e�.�c�o�m�'� �}� �]�;� � �/�/� �G�E�T� �/�u�s�e�r�s� �-� ����S(u7bRh� �r�o�u�t�e�r�.�g�e�t�(�'�/�'�,� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � �c�o�n�s�t� �{� �p�a�g�e� �=� �1�,� �l�i�m�i�t� �=� �1�0�,� �s�e�a�r�c�h� �}� �=� �r�e�q�.�q�u�e�r�y�;� � � � � � �l�e�t� �r�e�s�u�l�t� �=� �u�s�e�r�s�;� � � � � � �/�/� �d"}Ǐ�n � � �i�f� �(�s�e�a�r�c�h�)� �{� � � � � �r�e�s�u�l�t� �=� �r�e�s�u�l�t�.�f�i�l�t�e�r�(�u� �=�>� � � � � � � � �u�.�n�a�m�e�.�i�n�c�l�u�d�e�s�(�s�e�a�r�c�h�)� �|�|� �u�.�e�m�a�i�l�.�i�n�c�l�u�d�e�s�(�s�e�a�r�c�h�)� � � � � �)�;� � � �}� � � � � � �/�/� �Ru� � � �c�o�n�s�t� �s�t�a�r�t� �=� �(�p�a�g�e� �-� �1�)� �*� �l�i�m�i�t�;� � � �c�o�n�s�t� �e�n�d� �=� �s�t�a�r�t� �+� �p�a�r�s�e�I�n�t�(�l�i�m�i�t�)�;� � � �c�o�n�s�t� �p�a�g�i�n�a�t�e�d�U�s�e�r�s� �=� �r�e�s�u�l�t�.�s�l�i�c�e�(�s�t�a�r�t�,� �e�n�d�)�;� � � � � � �r�e�s�.�j�s�o�n�(�{� � � � � �s�u�c�c�e�s�s�:� �t�r�u�e�,� � � � � �d�a�t�a�:� �p�a�g�i�n�a�t�e�d�U�s�e�r�s�,� � � � � �p�a�g�i�n�a�t�i�o�n�:� �{� � � � � � � �p�a�g�e�:� �p�a�r�s�e�I�n�t�(�p�a�g�e�)�,� � � � � � � �l�i�m�i�t�:� �p�a�r�s�e�I�n�t�(�l�i�m�i�t�)�,� � � � � � � �t�o�t�a�l�:� �r�e�s�u�l�t�.�l�e�n�g�t�h� � � � � �}� � � �}�)�;� �}�)�;� � �/�/� �G�E�T� �/�u�s�e�r�s�/�:�i�d� �-� ����SUS*N(u7b �r�o�u�t�e�r�.�g�e�t�(�'�/�:�i�d�'�,� � � � �p�a�r�a�m�(�'�i�d�'�)�.�i�s�I�n�t�(�)�.�w�i�t�h�M�e�s�s�a�g�e�(�'�I�D��_{�/ftepe'�)�,� � � �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � � � �c�o�n�s�t� �e�r�r�o�r�s� �=� �v�a�l�i�d�a�t�i�o�n�R�e�s�u�l�t�(�r�e�q�)�;� � � � � �i�f� �(�!�e�r�r�o�r�s�.�i�s�E�m�p�t�y�(�)�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�0�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �e�r�r�o�r�s�:� �e�r�r�o�r�s�.�a�r�r�a�y�(�)� �}�)�;� � � � � �}� � � � � � � � � � �c�o�n�s�t� �u�s�e�r� �=� �u�s�e�r�s�.�f�i�n�d�(�u� �=�>� �u�.�i�d� �=�=�=� �p�a�r�s�e�I�n�t�(�r�e�q�.�p�a�r�a�m�s�.�i�d�)�)�;� � � � � � � � � � �i�f� �(�!�u�s�e�r�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�4�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �m�e�s�s�a�g�e�:� �'�(u7b NX[(W'� �}�)�;� � � � � �}� � � � � � � � � � �r�e�s�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �t�r�u�e�,� �d�a�t�a�:� �u�s�e�r� �}�)�;� � � �}� �)�;� � �/�/� �P�O�S�T� �/�u�s�e�r�s� �-� �R�^(u7b �r�o�u�t�e�r�.�p�o�s�t�(�'�/�'�,� � � �b�o�d�y�(�'�n�a�m�e�'�)�.�n�o�t�E�m�p�t�y�(�)�.�w�i�t�h�M�e�s�s�a�g�e�(�'��Y T N��:Nzz'�)�,� � � �b�o�d�y�(�'�e�m�a�i�l�'�)�.�i�s�E�m�a�i�l�(�)�.�w�i�t�h�M�e�s�s�a�g�e�(�'����{<h_ Ncknx'�)�,� � � �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � � � �c�o�n�s�t� �e�r�r�o�r�s� �=� �v�a�l�i�d�a�t�i�o�n�R�e�s�u�l�t�(�r�e�q�)�;� � � � � �i�f� �(�!�e�r�r�o�r�s�.�i�s�E�m�p�t�y�(�)�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�0�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �e�r�r�o�r�s�:� �e�r�r�o�r�s�.�a�r�r�a�y�(�)� �}�)�;� � � � � �}� � � � � � � � � � �c�o�n�s�t� �n�e�w�U�s�e�r� �=� �{� � � � � � � �i�d�:� �u�s�e�r�s�.�l�e�n�g�t�h� �+� �1�,� � � � � � � �n�a�m�e�:� �r�e�q�.�b�o�d�y�.�n�a�m�e�,� � � � � � � �e�m�a�i�l�:� �r�e�q�.�b�o�d�y�.�e�m�a�i�l� � � � � �}�;� � � � � � � � � � �u�s�e�r�s�.�p�u�s�h�(�n�e�w�U�s�e�r�)�;� � � � � � � � � � �r�e�s�.�s�t�a�t�u�s�(�2�0�1�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �t�r�u�e�,� �d�a�t�a�:� �n�e�w�U�s�e�r� �}�)�;� � � �}� �)�;� � �/�/� �P�U�T� �/�u�s�e�r�s�/�:�i�d� �-� ��f�e(u7b �r�o�u�t�e�r�.�p�u�t�(�'�/�:�i�d�'�,� � � �p�a�r�a�m�(�'�i�d�'�)�.�i�s�I�n�t�(�)�,� � � �b�o�d�y�(�'�n�a�m�e�'�)�.�o�p�t�i�o�n�a�l�(�)�.�n�o�t�E�m�p�t�y�(�)�,� � � �b�o�d�y�(�'�e�m�a�i�l�'�)�.�o�p�t�i�o�n�a�l�(�)�.�i�s�E�m�a�i�l�(�)�,� � � �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � � � �c�o�n�s�t� �e�r�r�o�r�s� �=� �v�a�l�i�d�a�t�i�o�n�R�e�s�u�l�t�(�r�e�q�)�;� � � � � �i�f� �(�!�e�r�r�o�r�s�.�i�s�E�m�p�t�y�(�)�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�0�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �e�r�r�o�r�s�:� �e�r�r�o�r�s�.�a�r�r�a�y�(�)� �}�)�;� � � � � �}� � � � � � � � � � �c�o�n�s�t� �u�s�e�r� �=� �u�s�e�r�s�.�f�i�n�d�(�u� �=�>� �u�.�i�d� �=�=�=� �p�a�r�s�e�I�n�t�(�r�e�q�.�p�a�r�a�m�s�.�i�d�)�)�;� � � � � � � � � � �i�f� �(�!�u�s�e�r�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�4�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �m�e�s�s�a�g�e�:� �'�(u7b NX[(W'� �}�)�;� � � � � �}� � � � � � � � � � �i�f� �(�r�e�q�.�b�o�d�y�.�n�a�m�e�)� �u�s�e�r�.�n�a�m�e� �=� �r�e�q�.�b�o�d�y�.�n�a�m�e�;� � � � � �i�f� �(�r�e�q�.�b�o�d�y�.�e�m�a�i�l�)� �u�s�e�r�.�e�m�a�i�l� �=� �r�e�q�.�b�o�d�y�.�e�m�a�i�l�;� � � � � � � � � � �r�e�s�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �t�r�u�e�,� �d�a�t�a�:� �u�s�e�r� �}�)�;� � � �}� �)�;� � �/�/� �D�E�L�E�T�E� �/�u�s�e�r�s�/�:�i�d� �-� � Rd�(u7b �r�o�u�t�e�r�.�d�e�l�e�t�e�(�'�/�:�i�d�'�,� � � �p�a�r�a�m�(�'�i�d�'�)�.�i�s�I�n�t�(�)�,� � � �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � � � �c�o�n�s�t� �i�n�d�e�x� �=� �u�s�e�r�s�.�f�i�n�d�I�n�d�e�x�(�u� �=�>� �u�.�i�d� �=�=�=� �p�a�r�s�e�I�n�t�(�r�e�q�.�p�a�r�a�m�s�.�i�d�)�)�;� � � � � � � � � � �i�f� �(�i�n�d�e�x� �=�=�=� �-�1�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�4�)�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� �m�e�s�s�a�g�e�:� �'�(u7b NX[(W'� �}�)�;� � � � � �}� � � � � � � � � � �u�s�e�r�s�.�s�p�l�i�c�e�(�i�n�d�e�x�,� �1�)�;� � � � � � � � � � �r�e�s�.�s�t�a�t�u�s�(�2�0�4�)�.�s�e�n�d�(�)�;� � � �}� �)�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �r�o�u�t�e�r�;� ���� � �#�#�#� ��~�N��Yt � ����j�a�v�a�s�c�r�i�p�t� �/�/� �m�i�d�d�l�e�w�a�r�e�/�e�r�r�o�r�H�a�n�d�l�e�r�.�j�s� �c�l�a�s�s� �A�p�i�E�r�r�o�r� �e�x�t�e�n�d�s� �E�r�r�o�r� �{� � � �c�o�n�s�t�r�u�c�t�o�r�(�s�t�a�t�u�s�C�o�d�e�,� �m�e�s�s�a�g�e�)� �{� � � � � �s�u�p�e�r�(�m�e�s�s�a�g�e�)�;� � � � � �t�h�i�s�.�s�t�a�t�u�s�C�o�d�e� �=� �s�t�a�t�u�s�C�o�d�e�;� � � �}� �}� � �c�o�n�s�t� �e�r�r�o�r�H�a�n�d�l�e�r� �=� �(�e�r�r�,� �r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'���:�'�,� �e�r�r�)�;� � � � � � �/�/� ��]�w�� � � �i�f� �(�e�r�r� �i�n�s�t�a�n�c�e�o�f� �A�p�i�E�r�r�o�r�)� �{� � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�e�r�r�.�s�t�a�t�u�s�C�o�d�e�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �e�r�r�.�m�e�s�s�a�g�e� � � � � �}�)�;� � � �}� � � � � � �/�/� �penc�^�� � � �i�f� �(�e�r�r�.�n�a�m�e� �=�=�=� �'�M�o�n�g�o�E�r�r�o�r�'�)� �{� � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�5�0�0�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'�penc�^�d\O1Y%�'� � � � � �}�)�;� � � �}� � � � � � �/�/� �J�W�T� ��� � � �i�f� �(�e�r�r�.�n�a�m�e� �=�=�=� �'�J�s�o�n�W�e�b�T�o�k�e�n�E�r�r�o�r�'�)� �{� � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�1�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'�T�o�k�e�n� ��eHe'� � � � � �}�)�;� � � �}� � � � � � �/�/� �*g�w�� � � �r�e�s�.�s�t�a�t�u�s�(�5�0�0�)�.�j�s�o�n�(�{� � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � �m�e�s�s�a�g�e�:� �p�r�o�c�e�s�s�.�e�n�v�.�N�O�D�E�_�E�N�V� �=�=�=� �'�p�r�o�d�u�c�t�i�o�n�'� � � � � � � � �?� �'� g�RhV�Q���'� � � � � � � � �:� �e�r�r�.�m�e�s�s�a�g�e� � � �}�)�;� �}�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �{� �A�p�i�E�r�r�o�r�,� �e�r�r�o�r�H�a�n�d�l�e�r� �}�;� ���� � �#�#� �=� � �penc�^ޏ�c�{t � �#�#�#� �M�y�S�Q�L� �ޏ�cl � ����j�a�v�a�s�c�r�i�p�t� �/�/� �d�b�/�m�y�s�q�l�.�j�s� �c�o�n�s�t� �m�y�s�q�l� �=� �r�e�q�u�i�r�e�(�'�m�y�s�q�l�2�/�p�r�o�m�i�s�e�'�)�;� � �/�/� �R�^ޏ�cl �c�o�n�s�t� �p�o�o�l� �=� �m�y�s�q�l�.�c�r�e�a�t�e�P�o�o�l�(�{� � � �h�o�s�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B�_�H�O�S�T� �|�|� �'�l�o�c�a�l�h�o�s�t�'�,� � � �p�o�r�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B�_�P�O�R�T� �|�|� �3�3�0�6�,� � � �u�s�e�r�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B�_�U�S�E�R� �|�|� �'�r�o�o�t�'�,� � � �p�a�s�s�w�o�r�d�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B�_�P�A�S�S�W�O�R�D� �|�|� �'�'�,� � � �d�a�t�a�b�a�s�e�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B�_�N�A�M�E� �|�|� �'�m�y�a�p�p�'�,� � � �w�a�i�t�F�o�r�C�o�n�n�e�c�t�i�o�n�s�:� �t�r�u�e�,� � � �c�o�n�n�e�c�t�i�o�n�L�i�m�i�t�:� �1�0�,� � �/�/� ��g'Yޏ�cpe � � �q�u�e�u�e�L�i�m�i�t�:� �0�,� � �/�/� ��RP�6R�0�h�:y�eP�6R � � � �e�n�a�b�l�e�K�e�e�p�A�l�i�v�e�:� �t�r�u�e�,� � � �k�e�e�p�A�l�i�v�e�I�n�i�t�i�a�l�D�e�l�a�y�:� �0� �}�)�;� � �/�/� �KmՋޏ�c �p�o�o�l�.�g�e�t�C�o�n�n�e�c�t�i�o�n�(�)� � � �.�t�h�e�n�(�c�o�n�n�e�c�t�i�o�n� �=�>� �{� � � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�M�y�S�Q�L� �penc�^ޏ�cb�R'�)�;� � � � � �c�o�n�n�e�c�t�i�o�n�.�r�e�l�e�a�s�e�(�)�;� � � �}�)� � � �.�c�a�t�c�h�(�e�r�r� �=�>� �{� � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�M�y�S�Q�L� �ޏ�c1Y%�:�'�,� �e�r�r�)�;� � � �}�)�;� � �/�/� ��g�\ň �c�o�n�s�t� �q�u�e�r�y� �=� �a�s�y�n�c� �(�s�q�l�,� �p�a�r�a�m�s�)� �=�>� �{� � � �t�r�y� �{� � � � � �c�o�n�s�t� �[�r�o�w�s�]� �=� �a�w�a�i�t� �p�o�o�l�.�e�x�e�c�u�t�e�(�s�q�l�,� �p�a�r�a�m�s�)�;� � � � � �r�e�t�u�r�n� �r�o�w�s�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'��g�1Y%�:�'�,� �e�r�r�o�r�)�;� � � � � �t�h�r�o�w� �e�r�r�o�r�;� � � �}� �}�;� � �/�/� ��N�R\ň �c�o�n�s�t� �t�r�a�n�s�a�c�t�i�o�n� �=� �a�s�y�n�c� �(�c�a�l�l�b�a�c�k�)� �=�>� �{� � � �c�o�n�s�t� �c�o�n�n�e�c�t�i�o�n� �=� �a�w�a�i�t� �p�o�o�l�.�g�e�t�C�o�n�n�e�c�t�i�o�n�(�)�;� � � � � � �t�r�y� �{� � � � � �a�w�a�i�t� �c�o�n�n�e�c�t�i�o�n�.�b�e�g�i�n�T�r�a�n�s�a�c�t�i�o�n�(�)�;� � � � � �c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �c�a�l�l�b�a�c�k�(�c�o�n�n�e�c�t�i�o�n�)�;� � � � � �a�w�a�i�t� �c�o�n�n�e�c�t�i�o�n�.�c�o�m�m�i�t�(�)�;� � � � � �r�e�t�u�r�n� �r�e�s�u�l�t�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �a�w�a�i�t� �c�o�n�n�e�c�t�i�o�n�.�r�o�l�l�b�a�c�k�(�)�;� � � � � �t�h�r�o�w� �e�r�r�o�r�;� � � �}� �f�i�n�a�l�l�y� �{� � � � � �c�o�n�n�e�c�t�i�o�n�.�r�e�l�e�a�s�e�(�)�;� � � �}� �}�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �{� �p�o�o�l�,� �q�u�e�r�y�,� �t�r�a�n�s�a�c�t�i�o�n� �}�;� ���� � �#�#�#� �M�o�n�g�o�D�B� �ޏ�c � ����j�a�v�a�s�c�r�i�p�t� �/�/� �d�b�/�m�o�n�g�o�d�b�.�j�s� �c�o�n�s�t� �m�o�n�g�o�o�s�e� �=� �r�e�q�u�i�r�e�(�'�m�o�n�g�o�o�s�e�'�)�;� � �c�o�n�s�t� �c�o�n�n�e�c�t�D�B� �=� �a�s�y�n�c� �(�)� �=�>� �{� � � �t�r�y� �{� � � � � �a�w�a�i�t� �m�o�n�g�o�o�s�e�.�c�o�n�n�e�c�t�(�p�r�o�c�e�s�s�.�e�n�v�.�M�O�N�G�O�D�B�_�U�R�I�,� �{� � � � � � � �m�a�x�P�o�o�l�S�i�z�e�:� �1�0�,� � �/�/� �ޏ�cl'Y
� � � � � � �m�i�n�P�o�o�l�S�i�z�e�:� �5�,� � � � � � � �s�o�c�k�e�t�T�i�m�e�o�u�t�M�S�:� �4�5�0�0�0�,� � � � � � � �s�e�r�v�e�r�S�e�l�e�c�t�i�o�n�T�i�m�e�o�u�t�M�S�:� �5�0�0�0�,� � � � � � � �f�a�m�i�l�y�:� �4� � �/�/� �O(u �I�P�v�4� � � � � �}�)�;� � � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�M�o�n�g�o�D�B� �ޏ�cb�R'�)�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�M�o�n�g�o�D�B� �ޏ�c1Y%�:�'�,� �e�r�r�o�r�)�;� � � � � �p�r�o�c�e�s�s�.�e�x�i�t�(�1�)�;� � � �}� �}�;� � �/�/� ��v,Tޏ�c�N�N �m�o�n�g�o�o�s�e�.�c�o�n�n�e�c�t�i�o�n�.�o�n�(�'�e�r�r�o�r�'�,� �e�r�r� �=�>� �{� � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�M�o�n�g�o�D�B� ���:�'�,� �e�r�r�)�;� �}�)�;� � �m�o�n�g�o�o�s�e�.�c�o�n�n�e�c�t�i�o�n�.�o�n�(�'�d�i�s�c�o�n�n�e�c�t�e�d�'�,� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�'�M�o�n�g�o�D�B� ��e�ޏ�c'�)�;� �}�)�;� � �/�/� �OŖsQ� �p�r�o�c�e�s�s�.�o�n�(�'�S�I�G�I�N�T�'�,� �a�s�y�n�c� �(�)� �=�>� �{� � � �a�w�a�i�t� �m�o�n�g�o�o�s�e�.�c�o�n�n�e�c�t�i�o�n�.�c�l�o�s�e�(�)�;� � � �c�o�n�s�o�l�e�.�l�o�g�(�'�M�o�n�g�o�D�B� �ޏ�c�]sQ�'�)�;� � � �p�r�o�c�e�s�s�.�e�x�i�t�(�0�)�;� �}�)�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �c�o�n�n�e�c�t�D�B�;� ���� � �#�#�#� �R�e�d�i�s� �X[ � ����j�a�v�a�s�c�r�i�p�t� �/�/� �d�b�/�r�e�d�i�s�.�j�s� �c�o�n�s�t� �r�e�d�i�s� �=� �r�e�q�u�i�r�e�(�'�r�e�d�i�s�'�)�;� � �/�/� �R�^ �R�e�d�i�s� ��[7b�z �c�o�n�s�t� �c�l�i�e�n�t� �=� �r�e�d�i�s�.�c�r�e�a�t�e�C�l�i�e�n�t�(�{� � � �h�o�s�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��H�O�S�T� �|�|� �'�l�o�c�a�l�h�o�s�t�'�,� � � �p�o�r�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��P�O�R�T� �|�|� �6�3�7�9�,� � � �p�a�s�s�w�o�r�d�:� �p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��P�A�S�S�W�O�R�D�,� � � �d�b�:� �0�,� � � �r�e�t�r�y��s�t�r�a�t�e�g�y�:� �(�o�p�t�i�o�n�s�)� �=�>� �{� � � � � �i�f� �(�o�p�t�i�o�n�s�.�e�r�r�o�r� �&�&� �o�p�t�i�o�n�s�.�e�r�r�o�r�.�c�o�d�e� �=�=�=� �'�E�C�O�N�N�R�E�F�U�S�E�D�'�)� �{� � � � � � � �r�e�t�u�r�n� �n�e�w� �E�r�r�o�r�(�'�R�e�d�i�s� � g�RhV�b�~ޏ�c'�)�;� � � � � �}� � � � � �i�f� �(�o�p�t�i�o�n�s�.�t�o�t�a�l��r�e�t�r�y�_�t�i�m�e� �>� �1�0�0�0� �� �6�0� �� �6�0�)� �{� � � � � � � �r�e�t�u�r�n� �n�e�w� �E�r�r�o�r�(�'�R�e�d�i�s� �͑ޏ���e'�)�;� � � � � �}� � � � � �i�f� �(�o�p�t�i�o�n�s�.�a�t�t�e�m�p�t� �>� �1�0�)� �{� � � � � � � �r�e�t�u�r�n� �u�n�d�e�f�i�n�e�d�;� � �/�/� �\Pbk͑Ջ � � � � �}� � � � � �r�e�t�u�r�n� �M�a�t�h�.�m�i�n�(�o�p�t�i�o�n�s�.�a�t�t�e�m�p�t� �� �1�0�0�,� �3�0�0�0�)�;� � �/�/� �͑Ջ���� � � �}� �}�)�;� � �c�l�i�e�n�t�.�o�n�(�'�c�o�n�n�e�c�t�'�,� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�'�R�e�d�i�s� �ޏ�cb�R'�)�;� �}�)�;� � �c�l�i�e�n�t�.�o�n�(�'�e�r�r�o�r�'�,� �(�e�r�r�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�R�e�d�i�s� ���:�'�,� �e�r�r�)�;� �}�)�;� � �/�/� �X[\ň �c�o�n�s�t� �c�a�c�h�e� �=� �{� � � �/�/� ����SX[ � � �a�s�y�n�c� �g�e�t�(�k�e�y�)� �{� � � � � �r�e�t�u�r�n� �n�e�w� �P�r�o�m�i�s�e�(�(�r�e�s�o�l�v�e�,� �r�e�j�e�c�t�)� �=�>� �{� � � � � � � �c�l�i�e�n�t�.�g�e�t�(�k�e�y�,� �(�e�r�r�,� �d�a�t�a�)� �=�>� �{� � � � � � � � � �i�f� �(�e�r�r�)� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � �r�e�s�o�l�v�e�(�d�a�t�a� �?� �J�S�O�N�.�p�a�r�s�e�(�d�a�t�a�)� �:� �n�u�l�l�)�;� � � � � � � �}�)�;� � � � � �}�)�;� � � �}�,� � � � � � �/�/� ���nX[ � � �a�s�y�n�c� �s�e�t�(�k�e�y�,� �v�a�l�u�e�,� �t�t�l� �=� �3�6�0�0�)� �{� � � � � �r�e�t�u�r�n� �n�e�w� �P�r�o�m�i�s�e�(�(�r�e�s�o�l�v�e�,� �r�e�j�e�c�t�)� �=�>� �{� � � � � � � �c�o�n�s�t� �d�a�t�a� �=� �J�S�O�N�.�s�t�r�i�n�g�i�f�y�(�v�a�l�u�e�)�;� � � � � � � �c�l�i�e�n�t�.�s�e�t�e�x�(�k�e�y�,� �t�t�l�,� �d�a�t�a�,� �(�e�r�r�,� �r�e�p�l�y�)� �=�>� �{� � � � � � � � � �i�f� �(�e�r�r�)� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � �r�e�s�o�l�v�e�(�r�e�p�l�y�)�;� � � � � � � �}�)�;� � � � � �}�)�;� � � �}�,� � � � � � �/�/� � Rd�X[ � � �a�s�y�n�c� �d�e�l�(�k�e�y�)� �{� � � � � �r�e�t�u�r�n� �n�e�w� �P�r�o�m�i�s�e�(�(�r�e�s�o�l�v�e�,� �r�e�j�e�c�t�)� �=�>� �{� � � � � � � �c�l�i�e�n�t�.�d�e�l�(�k�e�y�,� �(�e�r�r�,� �r�e�p�l�y�)� �=�>� �{� � � � � � � � � �i�f� �(�e�r�r�)� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � �r�e�s�o�l�v�e�(�r�e�p�l�y�)�;� � � � � � � �}�)�;� � � � � �}�)�;� � � �}�,� � � � � � �/�/� �ybϑ Rd��O(u!j_9SM� � � � �a�s�y�n�c� �d�e�l�P�a�t�t�e�r�n�(�p�a�t�t�e�r�n�)� �{� � � � � �r�e�t�u�r�n� �n�e�w� �P�r�o�m�i�s�e�(�(�r�e�s�o�l�v�e�,� �r�e�j�e�c�t�)� �=�>� �{� � � � � � � �c�l�i�e�n�t�.�k�e�y�s�(�p�a�t�t�e�r�n�,� �(�e�r�r�,� �k�e�y�s�)� �=�>� �{� � � � � � � � � �i�f� �(�e�r�r�)� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � �i�f� �(�k�e�y�s�.�l�e�n�g�t�h� �>� �0�)� �{� � � � � � � � � � � �c�l�i�e�n�t�.�d�e�l�(�k�e�y�s�,� �(�e�r�r�,� �r�e�p�l�y�)� �=�>� �{� � � � � � � � � � � � � �i�f� �(�e�r�r�)� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � � � � � �r�e�s�o�l�v�e�(�r�e�p�l�y�)�;� � � � � � � � � � � �}�)�;� � � � � � � � � �}� �e�l�s�e� �{� � � � � � � � � � � �r�e�s�o�l�v�e�(�0�)�;� � � � � � � � � �}� � � � � � � �}�)�;� � � � � �}�)�;� � � �}� �}�;� � �/�/� �X[-N���N �c�o�n�s�t� �c�a�c�h�e�M�i�d�d�l�e�w�a�r�e� �=� �(�t�t�l� �=� �3�6�0�0�)� �=�>� �{� � � �r�e�t�u�r�n� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � � � �c�o�n�s�t� �k�e�y� �=� ��c�a�c�h�e�:�$�{�r�e�q�.�o�r�i�g�i�n�a�l�U�r�l�}��;� � � � � � � � � � �t�r�y� �{� � � � � � � �c�o�n�s�t� �c�a�c�h�e�d� �=� �a�w�a�i�t� �c�a�c�h�e�.�g�e�t�(�k�e�y�)�;� � � � � � � � � � � � � � �i�f� �(�c�a�c�h�e�d�)� �{� � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�O(uX[:�'�,� �k�e�y�)�;� � � � � � � � � �r�e�t�u�r�n� �r�e�s�.�j�s�o�n�(�c�a�c�h�e�d�)�;� � � � � � � �}� � � � � � � � � � � � � � �/�/� �͑�Q �r�e�s�.�j�s�o�n� ��NꁨRX[ � � � � � � �c�o�n�s�t� �o�r�i�g�i�n�a�l�J�s�o�n� �=� �r�e�s�.�j�s�o�n�.�b�i�n�d�(�r�e�s�)�;� � � � � � � �r�e�s�.�j�s�o�n� �=� �(�d�a�t�a�)� �=�>� �{� � � � � � � � � �c�a�c�h�e�.�s�e�t�(�k�e�y�,� �d�a�t�a�,� �t�t�l�)�.�c�a�t�c�h�(�e�r�r� �=�>� �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�X[1Y%�:�'�,� �e�r�r�)�)�;� � � � � � � � � �r�e�t�u�r�n� �o�r�i�g�i�n�a�l�J�s�o�n�(�d�a�t�a�)�;� � � � � � � �}�;� � � � � � � � � � � � � � �n�e�x�t�(�)�;� � � � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�X[-N���N��:�'�,� �e�r�r�o�r�)�;� � � � � � � �n�e�x�t�(�)�;� � � � � �}� � � �}�;� �}�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �{� �c�l�i�e�n�t�,� �c�a�c�h�e�,� �c�a�c�h�e�M�i�d�d�l�e�w�a�r�e� �}�;� ���� � �#�#� �=� �W�e�b�S�o�c�k�e�t� � g�RhV � �#�#�#� �S�o�c�k�e�t�.�I�O� ��[�s � ����j�a�v�a�s�c�r�i�p�t� �/�/� �s�e�r�v�e�r�.�j�s� �c�o�n�s�t� �e�x�p�r�e�s�s� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�'�)�;� �c�o�n�s�t� �h�t�t�p� �=� �r�e�q�u�i�r�e�(�'�h�t�t�p�'�)�;� �c�o�n�s�t� �s�o�c�k�e�t�I�O� �=� �r�e�q�u�i�r�e�(�'�s�o�c�k�e�t�.�i�o�'�)�;� � �c�o�n�s�t� �a�p�p� �=� �e�x�p�r�e�s�s�(�)�;� �c�o�n�s�t� �s�e�r�v�e�r� �=� �h�t�t�p�.�c�r�e�a�t�e�S�e�r�v�e�r�(�a�p�p�)�;� �c�o�n�s�t� �i�o� �=� �s�o�c�k�e�t�I�O�(�s�e�r�v�e�r�,� �{� � � �c�o�r�s�:� �{� � � � � �o�r�i�g�i�n�:� �"��"�,� � � � � �m�e�t�h�o�d�s�:� �[�"�G�E�T�"�,� �"�P�O�S�T�"�]� � � �}�,� � � �p�i�n�g�T�i�m�e�o�u�t�:� �3�0�0�0�0�,� � � �p�i�n�g�I�n�t�e�r�v�a�l�:� �2�5�0�0�0� �}�)�;� � �/�/� �(W�~(u7b �c�o�n�s�t� �o�n�l�i�n�e�U�s�e�r�s� �=� �n�e�w� �M�a�p�(�)�;� � �/�/� �?b���{t �c�o�n�s�t� �r�o�o�m�s� �=� �n�e�w� �M�a�p�(�)�;� � �/�/� �ޏ�cYt �i�o�.�o�n�(�'�c�o�n�n�e�c�t�i�o�n�'�,� �(�s�o�c�k�e�t�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�'�(u7bޏ�c:�'�,� �s�o�c�k�e�t�.�i�d�)�;� � � � � � �/�/� �(u7b{vU_ � � �s�o�c�k�e�t�.�o�n�(�'�l�o�g�i�n�'�,� �(�d�a�t�a�)� �=�>� �{� � � � � �c�o�n�s�t� �{� �u�s�e�r�I�d�,� �u�s�e�r�n�a�m�e� �}� �=� �d�a�t�a�;� � � � � � � � � � �o�n�l�i�n�e�U�s�e�r�s�.�s�e�t�(�u�s�e�r�I�d�,� �{� � � � � � � �s�o�c�k�e�t�I�d�:� �s�o�c�k�e�t�.�i�d�,� � � � � � � �u�s�e�r�n�a�m�e�,� � � � � � � �l�o�g�i�n�T�i�m�e�:� �D�a�t�e�.�n�o�w�(�)� � � � � �}�)�;� � � � � � � � � � �s�o�c�k�e�t�.�u�s�e�r�I�d� �=� �u�s�e�r�I�d�;� � � � � �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e� �=� �u�s�e�r�n�a�m�e�;� � � � � � � � � � �/�/� �^�d(u7b N�~ � � � � �i�o�.�e�m�i�t�(�'�u�s�e�r�-�o�n�l�i�n�e�'�,� �{� � � � � � � �u�s�e�r�I�d�,� � � � � � � �u�s�e�r�n�a�m�e�,� � � � � � � �o�n�l�i�n�e�C�o�u�n�t�:� �o�n�l�i�n�e�U�s�e�r�s�.�s�i�z�e� � � � � �}�)�;� � � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(��$�{�u�s�e�r�n�a�m�e�}� � N�~ �S_MR(W�~ �$�{�o�n�l�i�n�e�U�s�e�r�s�.�s�i�z�e�}� ��N�)�;� � � �}�)�;� � � � � � �/�/� ��ReQ?b�� � � �s�o�c�k�e�t�.�o�n�(�'�j�o�i�n�-�r�o�o�m�'�,� �(�r�o�o�m�I�d�)� �=�>� �{� � � � � �s�o�c�k�e�t�.�j�o�i�n�(�r�o�o�m�I�d�)�;� � � � � � � � � � �i�f� �(�!�r�o�o�m�s�.�h�a�s�(�r�o�o�m�I�d�)�)� �{� � � � � � � �r�o�o�m�s�.�s�e�t�(�r�o�o�m�I�d�,� �n�e�w� �S�e�t�(�)�)�;� � � � � �}� � � � � �r�o�o�m�s�.�g�e�t�(�r�o�o�m�I�d�)�.�a�d�d�(�s�o�c�k�e�t�.�u�s�e�r�I�d�)�;� � � � � � � � � � �/�/� ���w?b���QvQ�N�N � � � � �s�o�c�k�e�t�.�t�o�(�r�o�o�m�I�d�)�.�e�m�i�t�(�'�u�s�e�r�-�j�o�i�n�e�d�'�,� �{� � � � � � � �u�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � �u�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e� � � � � �}�)�;� � � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(��$�{�s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�}� ��ReQ?b�� �$�{�r�o�o�m�I�d�}��)�;� � � �}�)�;� � � � � � �/�/� ��y�?b�� � � �s�o�c�k�e�t�.�o�n�(�'�l�e�a�v�e�-�r�o�o�m�'�,� �(�r�o�o�m�I�d�)� �=�>� �{� � � � � �s�o�c�k�e�t�.�l�e�a�v�e�(�r�o�o�m�I�d�)�;� � � � � � � � � � �i�f� �(�r�o�o�m�s�.�h�a�s�(�r�o�o�m�I�d�)�)� �{� � � � � � � �r�o�o�m�s�.�g�e�t�(�r�o�o�m�I�d�)�.�d�e�l�e�t�e�(�s�o�c�k�e�t�.�u�s�e�r�I�d�)�;� � � � � � � �i�f� �(�r�o�o�m�s�.�g�e�t�(�r�o�o�m�I�d�)�.�s�i�z�e� �=�=�=� �0�)� �{� � � � � � � � � �r�o�o�m�s�.�d�e�l�e�t�e�(�r�o�o�m�I�d�)�;� � � � � � � �}� � � � � �}� � � � � � � � � � �/�/� ���w?b���QvQ�N�N � � � � �s�o�c�k�e�t�.�t�o�(�r�o�o�m�I�d�)�.�e�m�i�t�(�'�u�s�e�r�-�l�e�f�t�'�,� �{� � � � � � � �u�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � �u�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e� � � � � �}�)�;� � � �}�)�;� � � � � � �/�/� ��S��mo � � �s�o�c�k�e�t�.�o�n�(�'�s�e�n�d�-�m�e�s�s�a�g�e�'�,� �(�d�a�t�a�)� �=�>� �{� � � � � �c�o�n�s�t� �{� �r�o�o�m�I�d�,� �m�e�s�s�a�g�e� �}� �=� �d�a�t�a�;� � � � � � � � � � �c�o�n�s�t� �m�e�s�s�a�g�e�D�a�t�a� �=� �{� � � � � � � �i�d�:� �D�a�t�e�.�n�o�w�(�)�,� � � � � � � �u�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � �u�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�,� � � � � � � �m�e�s�s�a�g�e�,� � � � � � � �t�i�m�e�s�t�a�m�p�:� �D�a�t�e�.�n�o�w�(�)� � � � � �}�;� � � � � � � � � � �/�/� ��S�0R?b�� � � � � �i�o�.�t�o�(�r�o�o�m�I�d�)�.�e�m�i�t�(�'�n�e�w�-�m�e�s�s�a�g�e�'�,� �m�e�s�s�a�g�e�D�a�t�a�)�;� � � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(���mo �[�$�{�r�o�o�m�I�d�}�]� �$�{�s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�}�:� �$�{�m�e�s�s�a�g�e�}��)�;� � � �}�)�;� � � � � � �/�/� ��yJ� � � �s�o�c�k�e�t�.�o�n�(�'�p�r�i�v�a�t�e�-�m�e�s�s�a�g�e�'�,� �(�d�a�t�a�)� �=�>� �{� � � � � �c�o�n�s�t� �{� �t�o�U�s�e�r�I�d�,� �m�e�s�s�a�g�e� �}� �=� �d�a�t�a�;� � � � � � � � � � �c�o�n�s�t� �t�o�U�s�e�r� �=� �o�n�l�i�n�e�U�s�e�r�s�.�g�e�t�(�t�o�U�s�e�r�I�d�)�;� � � � � �i�f� �(�t�o�U�s�e�r�)� �{� � � � � � � �i�o�.�t�o�(�t�o�U�s�e�r�.�s�o�c�k�e�t�I�d�)�.�e�m�i�t�(�'�p�r�i�v�a�t�e�-�m�e�s�s�a�g�e�'�,� �{� � � � � � � � � �f�r�o�m�U�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � � � �f�r�o�m�U�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�,� � � � � � � � � �m�e�s�s�a�g�e�,� � � � � � � � � �t�i�m�e�s�t�a�m�p�:� �D�a�t�e�.�n�o�w�(�)� � � � � � � �}�)�;� � � � � �}� � � �}�)�;� � � � � � �/�/� ��e�ޏ�c � � �s�o�c�k�e�t�.�o�n�(�'�d�i�s�c�o�n�n�e�c�t�'�,� �(�)� �=�>� �{� � � � � �i�f� �(�s�o�c�k�e�t�.�u�s�e�r�I�d�)� �{� � � � � � � �o�n�l�i�n�e�U�s�e�r�s�.�d�e�l�e�t�e�(�s�o�c�k�e�t�.�u�s�e�r�I�d�)�;� � � � � � � � � � � � � � �/�/� ��N@b g?b���yd� � � � � � � �r�o�o�m�s�.�f�o�r�E�a�c�h�(�(�u�s�e�r�s�,� �r�o�o�m�I�d�)� �=�>� �{� � � � � � � � � �i�f� �(�u�s�e�r�s�.�h�a�s�(�s�o�c�k�e�t�.�u�s�e�r�I�d�)�)� �{� � � � � � � � � � � �u�s�e�r�s�.�d�e�l�e�t�e�(�s�o�c�k�e�t�.�u�s�e�r�I�d�)�;� � � � � � � � � � � �s�o�c�k�e�t�.�t�o�(�r�o�o�m�I�d�)�.�e�m�i�t�(�'�u�s�e�r�-�l�e�f�t�'�,� �{� � � � � � � � � � � � � �u�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � � � � � � � �u�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e� � � � � � � � � � � �}�)�;� � � � � � � � � �}� � � � � � � �}�)�;� � � � � � � � � � � � � � �/�/� �^�d(u7bN�~ � � � � � � �i�o�.�e�m�i�t�(�'�u�s�e�r�-�o�f�f�l�i�n�e�'�,� �{� � � � � � � � � �u�s�e�r�I�d�:� �s�o�c�k�e�t�.�u�s�e�r�I�d�,� � � � � � � � � �u�s�e�r�n�a�m�e�:� �s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�,� � � � � � � � � �o�n�l�i�n�e�C�o�u�n�t�:� �o�n�l�i�n�e�U�s�e�r�s�.�s�i�z�e� � � � � � � �}�)�;� � � � � � � � � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(��$�{�s�o�c�k�e�t�.�u�s�e�r�n�a�m�e�}� �N�~ �S_MR(W�~ �$�{�o�n�l�i�n�e�U�s�e�r�s�.�s�i�z�e�}� ��N�)�;� � � � � �}� � � �}�)�;� �}�)�;� � �/�/� �/T�R g�RhV �c�o�n�s�t� �P�O�R�T� �=� �3�0�0�0�;� �s�e�r�v�e�r�.�l�i�s�t�e�n�(�P�O�R�T�,� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(��W�e�b�S�o�c�k�e�t� � g�RhVЏL�(W�z�S �$�{�P�O�R�T�}��)�;� �}�)�;� ���� � �#�#� �=�� �����N�cCg � �#�#�#� �J�W�T� �T�o�k�e�n� ����� � ����j�a�v�a�s�c�r�i�p�t� �/�/� �m�i�d�d�l�e�w�a�r�e�/�a�u�t�h�.�j�s� �c�o�n�s�t� �j�w�t� �=� �r�e�q�u�i�r�e�(�'�j�s�o�n�w�e�b�t�o�k�e�n�'�)�;� � �c�o�n�s�t� �J�W�T��S�E�C�R�E�T� �=� �p�r�o�c�e�s�s�.�e�n�v�.�J�W�T��S�E�C�R�E�T� �|�|� �'�y�o�u�r�-�s�e�c�r�e�t�-�k�e�y�'�;� �c�o�n�s�t� �J�W�T��E�X�P�I�R�E�S��I�N� �=� �'�7�d�'�;� � �/�/� �ub �T�o�k�e�n� �c�o�n�s�t� �g�e�n�e�r�a�t�e�T�o�k�e�n� �=� �(�u�s�e�r�I�d�,� �u�s�e�r�n�a�m�e�)� �=�>� �{� � � �r�e�t�u�r�n� �j�w�t�.�s�i�g�n�(� � � � � �{� �u�s�e�r�I�d�,� �u�s�e�r�n�a�m�e� �}�,� � � � � �J�W�T��S�E�C�R�E�T�,� � � � � �{� �e�x�p�i�r�e�s�I�n�:� �J�W�T��E�X�P�I�R�E�S��I�N� �}� � � �)�;� �}�;� � �/�/� ����� �T�o�k�e�n� �c�o�n�s�t� �v�e�r�i�f�y�T�o�k�e�n� �=� �(�t�o�k�e�n�)� �=�>� �{� � � �t�r�y� �{� � � � � �r�e�t�u�r�n� �j�w�t�.�v�e�r�i�f�y�(�t�o�k�e�n�,� �J�W�T��S�E�C�R�E�T�)�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �r�e�t�u�r�n� �n�u�l�l�;� � � �}� �}�;� � �/�/� �����-N���N �c�o�n�s�t� �a�u�t�h�M�i�d�d�l�e�w�a�r�e� �=� �(�r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � �/�/� ��N �H�e�a�d�e�r� ����S �T�o�k�e�n� � � �c�o�n�s�t� �a�u�t�h�H�e�a�d�e�r� �=� �r�e�q�.�h�e�a�d�e�r�s�.�a�u�t�h�o�r�i�z�a�t�i�o�n�;� � � � � � �i�f� �(�!�a�u�t�h�H�e�a�d�e�r� �|�|� �!�a�u�t�h�H�e�a�d�e�r�.�s�t�a�r�t�s�W�i�t�h�(�'�B�e�a�r�e�r� �'�)�)� �{� � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�1�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'�g�c�O�����NLr'� � � � � �}�)�;� � � �}� � � � � � �c�o�n�s�t� �t�o�k�e�n� �=� �a�u�t�h�H�e�a�d�e�r�.�s�u�b�s�t�r�i�n�g�(�7�)�;� � � � � � �c�o�n�s�t� �d�e�c�o�d�e�d� �=� �v�e�r�i�f�y�T�o�k�e�n�(�t�o�k�e�n�)�;� � � � � � �i�f� �(�!�d�e�c�o�d�e�d�)� �{� � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�1�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'������NLr�eHeb�]Ǐg'� � � � � �}�)�;� � � �}� � � � � � �/�/� �(u7b�Ooc}�0R �r�e�q� � � �r�e�q�.�u�s�e�r� �=� �d�e�c�o�d�e�d�;� � � �n�e�x�t�(�)�;� �}�;� � �/�/� ��S ������ gT�o�k�e�n�1\���� ��l g_N>eL� � �c�o�n�s�t� �o�p�t�i�o�n�a�l�A�u�t�h� �=� �(�r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � �c�o�n�s�t� �a�u�t�h�H�e�a�d�e�r� �=� �r�e�q�.�h�e�a�d�e�r�s�.�a�u�t�h�o�r�i�z�a�t�i�o�n�;� � � � � � �i�f� �(�a�u�t�h�H�e�a�d�e�r� �&�&� �a�u�t�h�H�e�a�d�e�r�.�s�t�a�r�t�s�W�i�t�h�(�'�B�e�a�r�e�r� �'�)�)� �{� � � � � �c�o�n�s�t� �t�o�k�e�n� �=� �a�u�t�h�H�e�a�d�e�r�.�s�u�b�s�t�r�i�n�g�(�7�)�;� � � � � �c�o�n�s�t� �d�e�c�o�d�e�d� �=� �v�e�r�i�f�y�T�o�k�e�n�(�t�o�k�e�n�)�;� � � � � �i�f� �(�d�e�c�o�d�e�d�)� �{� � � � � � � �r�e�q�.�u�s�e�r� �=� �d�e�c�o�d�e�d�;� � � � � �}� � � �}� � � � � � �n�e�x�t�(�)�;� �}�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �{� � � �g�e�n�e�r�a�t�e�T�o�k�e�n�,� � � �v�e�r�i�f�y�T�o�k�e�n�,� � � �a�u�t�h�M�i�d�d�l�e�w�a�r�e�,� � � �o�p�t�i�o�n�a�l�A�u�t�h� �}�;� ���� � �#�#�#� �{vU_�c�S � ����j�a�v�a�s�c�r�i�p�t� �/�/� �r�o�u�t�e�s�/�a�u�t�h�.�j�s� �c�o�n�s�t� �e�x�p�r�e�s�s� �=� �r�e�q�u�i�r�e�(�'�e�x�p�r�e�s�s�'�)�;� �c�o�n�s�t� �r�o�u�t�e�r� �=� �e�x�p�r�e�s�s�.�R�o�u�t�e�r�(�)�;� �c�o�n�s�t� �b�c�r�y�p�t� �=� �r�e�q�u�i�r�e�(�'�b�c�r�y�p�t�'�)�;� �c�o�n�s�t� �{� �g�e�n�e�r�a�t�e�T�o�k�e�n� �}� �=� �r�e�q�u�i�r�e�(�'�.�.�/�m�i�d�d�l�e�w�a�r�e�/�a�u�t�h�'�)�;� � �/�/� �P�O�S�T� �/�a�u�t�h�/�r�e�g�i�s�t�e�r� �-� ��l�Q �r�o�u�t�e�r�.�p�o�s�t�(�'�/�r�e�g�i�s�t�e�r�'�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � �t�r�y� �{� � � � � �c�o�n�s�t� �{� �u�s�e�r�n�a�m�e�,� �e�m�a�i�l�,� �p�a�s�s�w�o�r�d� �}� �=� �r�e�q�.�b�o�d�y�;� � � � � � � � � � �/�/� �������eQ � � � � �i�f� �(�!�u�s�e�r�n�a�m�e� �|�|� �!�e�m�a�i�l� �|�|� �!�p�a�s�s�w�o�r�d�)� �{� � � � � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�0�)�.�j�s�o�n�(�{� � � � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � � � �m�e�s�s�a�g�e�:� �'���kX�Q�[te�Oo'� � � � � � � �}�)�;� � � � � �}� � � � � � � � � � �/�/� ��h�g(u7b/f&TX[(W � � � � �/�/� �c�o�n�s�t� �e�x�i�s�t�i�n�g�U�s�e�r� �=� �a�w�a�i�t� �U�s�e�r�.�f�i�n�d�O�n�e�(�{� �e�m�a�i�l� �}�)�;� � � � � �/�/� �i�f� �(�e�x�i�s�t�i�n�g�U�s�e�r�)� �{� �.�.�.� �}� � � � � � � � � � �/�/� ��R�[�[x � � � � �c�o�n�s�t� �h�a�s�h�e�d�P�a�s�s�w�o�r�d� �=� �a�w�a�i�t� �b�c�r�y�p�t�.�h�a�s�h�(�p�a�s�s�w�o�r�d�,� �1�0�)�;� � � � � � � � � � �/�/� �R�^(u7b � � � � �/�/� �c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �U�s�e�r�.�c�r�e�a�t�e�(�{� �u�s�e�r�n�a�m�e�,� �e�m�a�i�l�,� �p�a�s�s�w�o�r�d�:� �h�a�s�h�e�d�P�a�s�s�w�o�r�d� �}�)�;� � � � � � � � � � �/�/� �ub �T�o�k�e�n� � � � � �c�o�n�s�t� �t�o�k�e�n� �=� �g�e�n�e�r�a�t�e�T�o�k�e�n�(�'�u�s�e�r�1�2�3�'�,� �u�s�e�r�n�a�m�e�)�;� � � � � � � � � � �r�e�s�.�s�t�a�t�u�s�(�2�0�1�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �t�r�u�e�,� � � � � � � �d�a�t�a�:� �{� � � � � � � � � �u�s�e�r�I�d�:� �'�u�s�e�r�1�2�3�'�,� � � � � � � � � �u�s�e�r�n�a�m�e�,� � � � � � � � � �e�m�a�i�l�,� � � � � � � � � �t�o�k�e�n� � � � � � � �}� � � � � �}�)�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �r�e�s�.�s�t�a�t�u�s�(�5�0�0�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'��l�Q1Y%�'� � � � � �}�)�;� � � �}� �}�)�;� � �/�/� �P�O�S�T� �/�a�u�t�h�/�l�o�g�i�n� �-� �{vU_ �r�o�u�t�e�r�.�p�o�s�t�(�'�/�l�o�g�i�n�'�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � �t�r�y� �{� � � � � �c�o�n�s�t� �{� �e�m�a�i�l�,� �p�a�s�s�w�o�r�d� �}� �=� �r�e�q�.�b�o�d�y�;� � � � � � � � � � �/�/� ��g~b(u7b � � � � �/�/� �c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �U�s�e�r�.�f�i�n�d�O�n�e�(�{� �e�m�a�i�l� �}�)�;� � � � � �/�/� �i�f� �(�!�u�s�e�r�)� �{� �.�.�.� �}� � � � � � � � � � �/�/� ������[x � � � � �/�/� �c�o�n�s�t� �i�s�V�a�l�i�d�P�a�s�s�w�o�r�d� �=� �a�w�a�i�t� �b�c�r�y�p�t�.�c�o�m�p�a�r�e�(�p�a�s�s�w�o�r�d�,� �u�s�e�r�.�p�a�s�s�w�o�r�d�)�;� � � � � �/�/� �i�f� �(�!�i�s�V�a�l�i�d�P�a�s�s�w�o�r�d�)� �{� �.�.�.� �}� � � � � � � � � � �/�/� �!j�b����b�R � � � � �c�o�n�s�t� �t�o�k�e�n� �=� �g�e�n�e�r�a�t�e�T�o�k�e�n�(�'�u�s�e�r�1�2�3�'�,� �'� _ N'�)�;� � � � � � � � � � �r�e�s�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �t�r�u�e�,� � � � � � � �d�a�t�a�:� �{� � � � � � � � � �u�s�e�r�I�d�:� �'�u�s�e�r�1�2�3�'�,� � � � � � � � � �u�s�e�r�n�a�m�e�:� �'� _ N'�,� � � � � � � � � �e�m�a�i�l�,� � � � � � � � � �t�o�k�e�n� � � � � � � �}� � � � � �}�)�;� � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � �r�e�s�.�s�t�a�t�u�s�(�5�0�0�)�.�j�s�o�n�(�{� � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � �m�e�s�s�a�g�e�:� �'�{vU_1Y%�'� � � � � �}�)�;� � � �}� �}�)�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �r�o�u�t�e�r�;� ���� � �#�#� ��& �'��OS � �#�#�#� ��c�SP�Am � ����j�a�v�a�s�c�r�i�p�t� �/�/� �m�i�d�d�l�e�w�a�r�e�/�r�a�t�e�L�i�m�i�t�.�j�s� �c�o�n�s�t� �r�e�d�i�s� �=� �r�e�q�u�i�r�e�(�'�r�e�d�i�s�'�)�;� �c�o�n�s�t� �c�l�i�e�n�t� �=� �r�e�d�i�s�.�c�r�e�a�t�e�C�l�i�e�n�t�(�)�;� � �/�/� ��n�R�z�SP�Am �c�o�n�s�t� �r�a�t�e�L�i�m�i�t�M�i�d�d�l�e�w�a�r�e� �=� �(�o�p�t�i�o�n�s� �=� �{�}�)� �=�>� �{� � � �c�o�n�s�t� �{� � � � � �w�i�n�d�o�w�M�s� �=� �6�0�0�0�0�,� � �/�/� ��e���z�S�1�R�� � � � � � �m�a�x� �=� �1�0�0�,� � �/�/� ��g'Y��Blpe � � � � �k�e�y�G�e�n�e�r�a�t�o�r� �=� �(�r�e�q�)� �=�>� �r�e�q�.�i�p�,� � �/�/� �ubP�Amk�e�y��v�Qpe � � � � �h�a�n�d�l�e�r� �=� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � �/�/� ���P�Yt � � � � � � �r�e�s�.�s�t�a�t�u�s�(�4�2�9�)�.�j�s�o�n�(�{� � � � � � � � � �s�u�c�c�e�s�s�:� �f�a�l�s�e�,� � � � � � � � � �m�e�s�s�a�g�e�:� �'���BlǏ�N��A~ ��� zT�QՋ'� � � � � � � �}�)�;� � � � � �}� � � �}� �=� �o�p�t�i�o�n�s�;� � � � � � �r�e�t�u�r�n� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�,� �n�e�x�t�)� �=�>� �{� � � � � �c�o�n�s�t� �k�e�y� �=� ��r�a�t�e�l�i�m�i�t�:�$�{�k�e�y�G�e�n�e�r�a�t�o�r�(�r�e�q�)�}��;� � � � � �c�o�n�s�t� �n�o�w� �=� �D�a�t�e�.�n�o�w�(�)�;� � � � � �c�o�n�s�t� �w�i�n�d�o�w�S�t�a�r�t� �=� �n�o�w� �-� �w�i�n�d�o�w�M�s�;� � � � � � � � � � �t�r�y� �{� � � � � � � �/�/� �O(u �R�e�d�i�s� �s�o�r�t�e�d� �s�e�t� ��[�s�n�R�z�S � � � � � � �a�w�a�i�t� �n�e�w� �P�r�o�m�i�s�e�(�(�r�e�s�o�l�v�e�,� �r�e�j�e�c�t�)� �=�>� �{� � � � � � � � � �/�/� � Rd��z�SY�v��U_ � � � � � � � � �c�l�i�e�n�t�.�z�r�e�m�r�a�n�g�e�b�y�s�c�o�r�e�(�k�e�y�,� �0�,� �w�i�n�d�o�w�S�t�a�r�t�,� �(�e�r�r�)� �=�>� �{� � � � � � � � � � � �i�f� �(�e�r�r�)� �r�e�t�u�r�n� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � � � � � � � � � � � � � � �/�/� ��m�RS_MR��Bl � � � � � � � � � � �c�l�i�e�n�t�.�z�a�d�d�(�k�e�y�,� �n�o�w�,� ��$�{�n�o�w�}�-�$�{�M�a�t�h�.�r�a�n�d�o�m�(�)�}��,� �(�e�r�r�)� �=�>� �{� � � � � � � � � � � � � �i�f� �(�e�r�r�)� �r�e�t�u�r�n� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � � � � � � � � � � � � � � � � � � �/�/� ����SS_MR�z�S�Q�v��Blpe � � � � � � � � � � � � �c�l�i�e�n�t�.�z�c�a�r�d�(�k�e�y�,� �(�e�r�r�,� �c�o�u�n�t�)� �=�>� �{� � � � � � � � � � � � � � � �i�f� �(�e�r�r�)� �r�e�t�u�r�n� �r�e�j�e�c�t�(�e�r�r�)�;� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �/�/� ���nǏg�e�� � � � � � � � � � � � � � � �c�l�i�e�n�t�.�e�x�p�i�r�e�(�k�e�y�,� �M�a�t�h�.�c�e�i�l�(�w�i�n�d�o�w�M�s� �/� �1�0�0�0�)�)�;� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �i�f� �(�c�o�u�n�t� �>� �m�a�x�)� �{� � � � � � � � � � � � � � � � � �r�e�t�u�r�n� �h�a�n�d�l�e�r�(�r�e�q�,� �r�e�s�)�;� � � � � � � � � � � � � � � �}� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �r�e�s�o�l�v�e�(�)�;� � � � � � � � � � � � � �}�)�;� � � � � � � � � � � �}�)�;� � � � � � � � � �}�)�;� � � � � � � �}�)�;� � � � � � � � � � � � � � �n�e�x�t�(�)�;� � � � � �}� �c�a�t�c�h� �(�e�r�r�o�r�)� �{� � � � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'�P�Am-N���N��:�'�,� �e�r�r�o�r�)�;� � � � � � � �n�e�x�t�(�)�;� � � � � �}� � � �}�;� �}�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �r�a�t�e�L�i�m�i�t�M�i�d�d�l�e�w�a�r�e�;� ���� � �#�#�#� ���Bl�S) � ����j�a�v�a�s�c�r�i�p�t� �c�o�n�s�t� �c�o�m�p�r�e�s�s�i�o�n� �=� �r�e�q�u�i�r�e�(�'�c�o�m�p�r�e�s�s�i�o�n�'�)�;� � �/�/� ��S)-N���N �a�p�p�.�u�s�e�(�c�o�m�p�r�e�s�s�i�o�n�(�{� � � �f�i�l�t�e�r�:� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � � � �/�/� ��S�S)'Y�N �1�K�B� ��v�T�^ � � � � �i�f� �(�r�e�q�.�h�e�a�d�e�r�s�[�'�x�-�n�o�-�c�o�m�p�r�e�s�s�i�o�n�'�]�)� �{� � � � � � � �r�e�t�u�r�n� �f�a�l�s�e�;� � � � � �}� � � � � �r�e�t�u�r�n� �c�o�m�p�r�e�s�s�i�o�n�.�f�i�l�t�e�r�(�r�e�q�,� �r�e�s�)�;� � � �}�,� � � �l�e�v�e�l�:� �6�,� � �/�/� ��S)�~+R �(�0�-�9�)� � � �t�h�r�e�s�h�o�l�d�:� �1�0�2�4� � �/�/� �'Y�N �1�K�B� �Mb�S) �}�)�)�;� ���� � �#�#�#� �H�T�T�P�/�2� �/ec � ����j�a�v�a�s�c�r�i�p�t� �c�o�n�s�t� �h�t�t�p�2� �=� �r�e�q�u�i�r�e�(�'�h�t�t�p�2�'�)�;� �c�o�n�s�t� �f�s� �=� �r�e�q�u�i�r�e�(�'�f�s�'�)�;� � �c�o�n�s�t� �s�e�r�v�e�r� �=� �h�t�t�p�2�.�c�r�e�a�t�e�S�e�c�u�r�e�S�e�r�v�e�r�(�{� � � �k�e�y�:� �f�s�.�r�e�a�d�F�i�l�e�S�y�n�c�(�'�s�e�r�v�e�r�.�k�e�y�'�)�,� � � �c�e�r�t�:� �f�s�.�r�e�a�d�F�i�l�e�S�y�n�c�(�'�s�e�r�v�e�r�.�c�r�t�'�)� �}�,� �a�p�p�)�;� � �s�e�r�v�e�r�.�l�i�s�t�e�n�(�4�4�3�,� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�'�H�T�T�P�/�2� � g�RhVЏL�(W�z�S �4�4�3�'�)�;� �}�)�;� ���� � �#�#� �=��� ��v�cN�e�_ � �#�#�#� ���Bl�e�_ � ����j�a�v�a�s�c�r�i�p�t� �c�o�n�s�t� �m�o�r�g�a�n� �=� �r�e�q�u�i�r�e�(�'�m�o�r�g�a�n�'�)�;� �c�o�n�s�t� �f�s� �=� �r�e�q�u�i�r�e�(�'�f�s�'�)�;� �c�o�n�s�t� �p�a�t�h� �=� �r�e�q�u�i�r�e�(�'�p�a�t�h�'�)�;� � �/�/� �R�^�e�_�vU_ �c�o�n�s�t� �l�o�g�D�i�r�e�c�t�o�r�y� �=� �p�a�t�h�.�j�o�i�n�(�_�_�d�i�r�n�a�m�e�,� �'�l�o�g�s�'�)�;� �i�f� �(�!�f�s�.�e�x�i�s�t�s�S�y�n�c�(�l�o�g�D�i�r�e�c�t�o�r�y�)�)� �{� � � �f�s�.�m�k�d�i�r�S�y�n�c�(�l�o�g�D�i�r�e�c�t�o�r�y�)�;� �}� � �/�/� �R�^�QeQAm �c�o�n�s�t� �a�c�c�e�s�s�L�o�g�S�t�r�e�a�m� �=� �f�s�.�c�r�e�a�t�e�W�r�i�t�e�S�t�r�e�a�m�(� � � �p�a�t�h�.�j�o�i�n�(�l�o�g�D�i�r�e�c�t�o�r�y�,� �'�a�c�c�e�s�s�.�l�o�g�'�)�,� � � �{� �f�l�a�g�s�:� �'�a�'� �}� �)�;� � �/�/� �ꁚ[IN�e�_<h_ �m�o�r�g�a�n�.�t�o�k�e�n�(�'�b�o�d�y�'�,� �(�r�e�q�)� �=�>� �J�S�O�N�.�s�t�r�i�n�g�i�f�y�(�r�e�q�.�b�o�d�y�)�)�;� � �c�o�n�s�t� �l�o�g�F�o�r�m�a�t� �=� �'�:�r�e�m�o�t�e�-�a�d�d�r� �-� �:�r�e�m�o�t�e�-�u�s�e�r� �[�:�d�a�t�e�[�c�l�f�]�]� �"�:�m�e�t�h�o�d� �:�u�r�l� �H�T�T�P�/�:�h�t�t�p�-�v�e�r�s�i�o�n�"� �:�s�t�a�t�u�s� �:�r�e�s�[�c�o�n�t�e�n�t�-�l�e�n�g�t�h�]� �"�:�r�e�f�e�r�r�e�r�"� �"�:�u�s�e�r�-�a�g�e�n�t�"� �-� �:�r�e�s�p�o�n�s�e�-�t�i�m�e� �m�s� �-� �:�b�o�d�y�'�;� � �/�/� �O(u�e�_-N���N �a�p�p�.�u�s�e�(�m�o�r�g�a�n�(�l�o�g�F�o�r�m�a�t�,� �{� �s�t�r�e�a�m�:� �a�c�c�e�s�s�L�o�g�S�t�r�e�a�m� �}�)�)�;� �a�p�p�.�u�s�e�(�m�o�r�g�a�n�(�'�d�e�v�'�)�)�;� � �/�/� ��c6R�S���Q ���� � �#�#�#� �'���v�c � ����j�a�v�a�s�c�r�i�p�t� �/�/� �m�i�d�d�l�e�w�a�r�e�/�m�o�n�i�t�o�r�.�j�s� �c�o�n�s�t� �r�e�s�p�o�n�s�e�T�i�m�e� �=� �r�e�q�u�i�r�e�(�'�r�e�s�p�o�n�s�e�-�t�i�m�e�'�)�;� � �/�/� ��v�c�T�^�e�� �a�p�p�.�u�s�e�(�r�e�s�p�o�n�s�e�T�i�m�e�(�(�r�e�q�,� �r�e�s�,� �t�i�m�e�)� �=�>� �{� � � �c�o�n�s�t� �s�t�a�t� �=� ��$�{�r�e�q�.�m�e�t�h�o�d�}� �$�{�r�e�q�.�u�r�l�}�:� �$�{�t�i�m�e�.�t�o�F�i�x�e�d�(�2�)�}�m�s��;� � � �c�o�n�s�o�l�e�.�l�o�g�(�s�t�a�t�)�;� � � � � � �/�/� ���U_ba�g� � � �i�f� �(�t�i�m�e� �>� �1�0�0�0�)� �{� � � � � �c�o�n�s�o�l�e�.�w�a�r�n�(��[�ba�g�]� �$�{�s�t�a�t�}��)�;� � � �}� �}�)�)�;� � �/�/� �eP�^�h�g�z�p �a�p�p�.�g�e�t�(�'�/�m�e�t�r�i�c�s�'�,� �(�r�e�q�,� �r�e�s�)� �=�>� �{� � � �r�e�s�.�j�s�o�n�(�{� � � � � �u�p�t�i�m�e�:� �p�r�o�c�e�s�s�.�u�p�t�i�m�e�(�)�,� � � � � �m�e�m�o�r�y�:� �p�r�o�c�e�s�s�.�m�e�m�o�r�y�U�s�a�g�e�(�)�,� � � � � �t�i�m�e�s�t�a�m�p�:� �D�a�t�e�.�n�o�w�(�)� � � �}�)�;� �}�)�;� ���� � �#�#� �=ء� ��gsO�[�� � �#�#�#� �1�.� �ޏ�clM�n � ����j�a�v�a�s�c�r�i�p�t� �/�/� �penc�^ޏ�clM�n�^�� �c�o�n�s�t� �p�o�o�l�C�o�n�f�i�g� �=� �{� � � �m�i�n�:� �2�,� � �/�/� ��g\ޏ�cpe � � �m�a�x�:� �1�0�,� � �/�/� ��g'Yޏ�cpe�9hnc g�RhVM�n � � � �i�d�l�e�:� �3�0�0�0�0�,� � �/�/� �zz�e�3�0��y � � � �a�c�q�u�i�r�e�:� �6�0�0�0�0�,� � �/�/� ����Sޏ�c���e�6�0��y � � � �e�v�i�c�t�:� �1�0�0�0� � �/�/� ��h�gzz�ޏ�c���� �}�;� ���� � �#�#�#� �2�.� �OŖsQ� � ����j�a�v�a�s�c�r�i�p�t� �/�/� �OŖsQ� g�RhV �c�o�n�s�t� �g�r�a�c�e�f�u�l�S�h�u�t�d�o�w�n� �=� �(�)� �=�>� �{� � � �c�o�n�s�o�l�e�.�l�o�g�(�'���YOŖsQ�.�.�.�'�)�;� � � � � � �s�e�r�v�e�r�.�c�l�o�s�e�(�(�)� �=�>� �{� � � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�H�T�T�P� � g�RhV�]sQ�'�)�;� � � � � � � � � � �/�/� �sQ�penc�^ޏ�c � � � � �m�o�n�g�o�o�s�e�.�c�o�n�n�e�c�t�i�o�n�.�c�l�o�s�e�(�f�a�l�s�e�,� �(�)� �=�>� �{� � � � � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�penc�^ޏ�c�]sQ�'�)�;� � � � � � � �p�r�o�c�e�s�s�.�e�x�i�t�(�0�)�;� � � � � �}�)�;� � � �}�)�;� � � � � � �/�/� ����e:6RsQ� � � �s�e�t�T�i�m�e�o�u�t�(�(�)� �=�>� �{� � � � � �c�o�n�s�o�l�e�.�e�r�r�o�r�(�'����e �:6RsQ�'�)�;� � � � � �p�r�o�c�e�s�s�.�e�x�i�t�(�1�)�;� � � �}�,� �3�0�0�0�0�)�;� �}�;� � �p�r�o�c�e�s�s�.�o�n�(�'�S�I�G�T�E�R�M�'�,� �g�r�a�c�e�f�u�l�S�h�u�t�d�o�w�n�)�;� �p�r�o�c�e�s�s�.�o�n�(�'�S�I�G�I�N�T�'�,� �g�r�a�c�e�f�u�l�S�h�u�t�d�o�w�n�)�;� ���� � �#�#�#� �3�.� ��s�XM�n � ����j�a�v�a�s�c�r�i�p�t� �/�/� �c�o�n�f�i�g�/�i�n�d�e�x�.�j�s� �r�e�q�u�i�r�e�(�'�d�o�t�e�n�v�'�)�.�c�o�n�f�i�g�(�)�;� � �m�o�d�u�l�e�.�e�x�p�o�r�t�s� �=� �{� � � �e�n�v�:� �p�r�o�c�e�s�s�.�e�n�v�.�N�O�D�E��E�N�V� �|�|� �'�d�e�v�e�l�o�p�m�e�n�t�'�,� � � �p�o�r�t�:� �p�a�r�s�e�I�n�t�(�p�r�o�c�e�s�s�.�e�n�v�.�P�O�R�T�,� �1�0�)� �|�|� �3�0�0�0�,� � � � � � �d�b�:� �{� � � � � �h�o�s�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B��H�O�S�T� �|�|� �'�l�o�c�a�l�h�o�s�t�'�,� � � � � �p�o�r�t�:� �p�a�r�s�e�I�n�t�(�p�r�o�c�e�s�s�.�e�n�v�.�D�B��P�O�R�T�,� �1�0�)� �|�|� �3�3�0�6�,� � � � � �n�a�m�e�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B��N�A�M�E� �|�|� �'�m�y�a�p�p�'�,� � � � � �u�s�e�r�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B��U�S�E�R� �|�|� �'�r�o�o�t�'�,� � � � � �p�a�s�s�w�o�r�d�:� �p�r�o�c�e�s�s�.�e�n�v�.�D�B��P�A�S�S�W�O�R�D� �|�|� �'�'� � � �}�,� � � � � � �r�e�d�i�s�:� �{� � � � � �h�o�s�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��H�O�S�T� �|�|� �'�l�o�c�a�l�h�o�s�t�'�,� � � � � �p�o�r�t�:� �p�a�r�s�e�I�n�t�(�p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��P�O�R�T�,� �1�0�)� �|�|� �6�3�7�9�,� � � � � �p�a�s�s�w�o�r�d�:� �p�r�o�c�e�s�s�.�e�n�v�.�R�E�D�I�S��P�A�S�S�W�O�R�D� � � �}�,� � � � � � �j�w�t�:� �{� � � � � �s�e�c�r�e�t�:� �p�r�o�c�e�s�s�.�e�n�v�.�J�W�T��S�E�C�R�E�T� �|�|� �'�y�o�u�r�-�s�e�c�r�e�t�-�k�e�y�'�,� � � � � �e�x�p�i�r�e�s�I�n�:� �p�r�o�c�e�s�s�.�e�n�v�.�J�W�T��E�X�P�I�R�E�S�_�I�N� �|�|� �'�7�d�'� � � �}� �}�;� ���� � �#�#� �=��� �\�~ � �ُ�N�zb�Nf[N�N� � �' ���R�E�S�T�f�u�l� �A�P�I� ���������1u����0�Spe����0��Yt � � �' ���penc�^ޏ�c*���M�y�S�Q�L� �ޏ�cl0M�o�n�g�o�D�B� �ޏ�c0R�e�d�i�s� �X[ � � �' �*�*�W�e�b�S�o�c�k�e�t� � g�RhV*�*���[�e��O0?b���{t0(W�~�r � � �' ��������cCg���J�W�T� �T�o�k�e�n�0{vU_�l�Q0CgP����� � � �' ��*�'��OS*�*���c�SP�Am0��Bl�S)0H�T�T�P�/�2� � � �' �*�*��v�c�e�_*�*����Bl�e�_0'���v�c0eP�^�h�g � �#�#� �<د� �N�Nek � ��cNegf[NЏ�~�]z^�YUOM�n�T�{tQ�~ g�R� � �[��~�~f[N,{3��z�Џ�~-N�vQ�~M�n ��!]�(�/�p�r�a�c�t�i�c�e�/�0�3�-�d�e�v�o�p�s�-�n�e�t�w�o�r�k�)� �
