��#� �r�e�d�u�x�-�m�o�d�e�l�-�b�u�i�l�d�e�r�
�
�
�
�t�h�i�s� �p�a�c�k�a�g�e� �m�e�n�t� �t�o� �h�e�l�p� �y�o�u� �t�o� �c�r�e�a�t�e� �i�t�e�m�s� �i�n� �s�e�r�v�e�r� �a�n�d� �u�p�d�a�t�e� �c�o�m�p�l�e�x� �s�t�a�t�e� �i�n� �r�e�a�c�t� �r�e�d�u�x� �a�p�p�l�i�c�a�t�i�o�n�s�.�
�
�t�h�i�s� �p�a�c�k�a�g�e� �i�s� �u�s�e�d� �b�e�h�i�n�d� �t�h�e� �s�c�e�n�e�s� �i�n� ��s�a�g�a�-�a�x�i�o�s�
� �p�a�c�k�a�g�e�.�
�
�
�
�#�#� �b�a�s�i�c� �u�s�a�g�e�
�
�
�
�#�#�#� �1�.� �U�p�d�a�t�e� �t�h�e� �r�e�d�u�x� �s�t�o�r�e� �f�i�l�e�
�
�
�
��s�t�o�r�e�.�j�s�
�
�
�
�
��
��j�s� � �i�m�p�o�r�t� �{� �c�o�n�f�i�g�u�r�e�S�t�o�r�e� �}� �f�r�o�m� �"�@�r�e�d�u�x�j�s�/�t�o�o�l�k�i�t�"�;� � �i�m�p�o�r�t� �c�r�e�a�t�e�S�a�g�a�M�i�d�d�l�e�w�a�r�e� �f�r�o�m� �"�r�e�d�u�x�-�s�a�g�a�"�;� � �i�m�p�o�r�t� �{� �a�l�l� �,� �f�o�r�k� �}� �f�r�o�m� �"�r�e�d�u�x�-�s�a�g�a�/�e�f�f�e�c�t�s�"�;� � �i�m�p�o�r�t� �{� �t�a�k�e�E�v�e�r�y�S�e�n�d�T�o�P�r�o�c�e�s�s� �}� �f�r�o�m� �"�s�a�g�a�-�a�x�i�o�s�"�;� � �i�m�p�o�r�t� �{� �p�r�o�c�e�s�s�S�e�t�A�d�d�T�o�R�e�d�u�x� �}� �f�r�o�m� �"�r�e�d�u�x�-�m�o�d�e�l�-�b�u�i�l�d�e�r�"�;� � � � � �c�o�n�s�t� �s�a�g�a�M�i�d�d�l�e�w�a�r�e� �=� �c�r�e�a�t�e�S�a�g�a�M�i�d�d�l�e�w�a�r�e�(�)�;� � �c�o�n�s�t� �m�i�d�d�l�e�w�a�r�e�s� �=� �[�s�a�g�a�M�i�d�d�l�e�w�a�r�e�]�;� � � � �f�u�n�c�t�i�o�n�*� �r�o�o�t�S�a�g�a�(�)� �{� � � � �y�i�e�l�d� �a�l�l�(�[�f�o�r�k�(�t�a�k�e�E�v�e�r�y�S�e�n�d�T�o�P�r�o�c�e�s�s�)�]�)�;� � �}� � � � �e�x�p�o�r�t� �c�o�n�s�t� �c�r�e�a�t�e�A�p�p�S�t�o�r�e� �=� �(�)� �=�>� �{� � � � � � � � �c�o�n�s�t� �s�t�o�r�e� �=� �c�o�n�f�i�g�u�r�e�S�t�o�r�e�(�{� � � � � � �r�e�d�u�c�e�r�:� �c�o�m�b�i�n�e�R�e�d�u�c�e�r�s�(�{� � � � � � � � �p�r�o�d�u�c�t�s�_�r�e�d�u�c�e�r�:� �c�r�e�a�t�e�R�e�d�u�c�e�r�(�{�}�,� �{� � � � � � � � � � �[�'�P�R�O�D�U�C�T�S�_�A�D�D�_�T�O�_�R�E�D�U�X�'�]�:� �(�s�t�a�t�e�,� �a�c�t�i�o�n�)� �=�>� �{� � � � � � � � � � � � �p�r�o�c�e�s�s�S�e�t�A�d�d�T�o�R�e�d�u�x�(�a�c�t�i�o�n�,� �s�t�a�t�e�)�;� � � � � � � � � � �}�,� � � � � � � � �}�)� � � � � � �}�)�,� � � � � � �m�i�d�d�l�e�w�a�r�e�:� �m�i�d�d�l�e�w�a�r�e�s�,� � � � �}�)�;� � � � � � �s�a�g�a�M�i�d�d�l�e�w�a�r�e�.�r�u�n�(�r�o�o�t�S�a�g�a�)�;� � � � �r�e�t�u�r�n� �s�t�o�r�e�;� � �}�;� � � � �e�x�p�o�r�t� �c�o�n�s�t� �s�t�o�r�e� �=� �c�r�e�a�t�e�A�p�p�S�t�o�r�e�(�)�;� � �
��
�
�
�
�
�#�#�#� �2�.� �C�r�e�a�t�e� �B�a�s�e�M�o�d�e�l� �f�i�l�e�
�
�
�
��b�a�s�e�M�o�d�e�l�.�m�o�d�e�l�s�.�j�s�
�
�
�
�
��
��j�s� � �i�m�p�o�r�t� �{� �B�a�s�e�M�o�d�e�l� �}� �f�r�o�m� �"�r�e�d�u�x�-�m�o�d�e�l�-�b�u�i�l�d�e�r�"�;� � � � �e�x�p�o�r�t� �c�o�n�s�t� �m�a�k�e�B�a�s�e�M�o�d�e�l� �=� �(�d�i�s�p�a�t�c�h�)� �=�>� �{� � � � �B�a�s�e�M�o�d�e�l�.�s�e�t�D�i�s�p�a�t�c�h� �=� �d�i�s�p�a�t�c�h�;� � � � �r�e�t�u�r�n� �B�a�s�e�M�o�d�e�l�;� � �}�;� � �
��
�
�
�
�
�#�#�#� �3�.� �C�r�e�a�t�e� �M�o�d�e�l� �f�i�l�e�
�
�
�
��p�r�o�d�u�c�t�s�.�m�o�d�e�l�s�.�j�s�
�
�
�
�
��
��j�s� � � � �i�m�p�o�r�t� �{� �u�s�e�D�i�s�p�a�t�c�h� �}� �f�r�o�m� �"�r�e�a�c�t�-�r�e�d�u�x�"�;� � �i�m�p�o�r�t� �{� �m�a�k�e�B�a�s�e�M�o�d�e�l� �}� �f�r�o�m� �"�.�/�b�a�s�e�M�o�d�e�l�.�m�o�d�e�l�s�"�;� � � � �e�x�p�o�r�t� �c�o�n�s�t� �u�s�e�M�o�d�e�l�P�r�o�d�u�c�t�s� �=� �(�s�e�l�e�c�t�o�r�_�t�y�p�e� �=� �"�b�a�s�e�"�)� �=�>� �{� � � � �c�o�n�s�t� �d�i�s�p�a�t�c�h� �=� �u�s�e�D�i�s�p�a�t�c�h�(�)�;� � � � �c�o�n�s�t� �B�a�s�e�M�o�d�e�l� �=� �m�a�k�e�B�a�s�e�M�o�d�e�l�(�d�i�s�p�a�t�c�h�)�;� � � � �c�o�n�s�t� �R�E�D�U�C�E�R�_�N�A�M�E� �=� �'�P�R�O�D�U�C�T�S�_�A�D�D�_�T�O�_�R�E�D�U�X�'� � � � � � �c�l�a�s�s� �M�o�d�e�l�P�r�o�d�u�c�t�s� �e�x�t�e�n�d�s� �B�a�s�e�M�o�d�e�l� �{� � � � � � �c�o�n�s�t�r�u�c�t�o�r�(�p�r�o�p�s�)� �{� � � � � � � � �s�u�p�e�r�(�)�;� � � � � � � � �t�h�i�s�.�s�e�l�e�c�t�o�r�_�t�y�p�e� �=� �s�e�l�e�c�t�o�r�_�t�y�p�e�;� �/�/� �m�u�s�t� �t�o� �b�e� �a�f�t�e�r� �s�u�p�e�r�(�)� �i�n� �t�h�e� �f�i�r�s�t� �a�t�t�r�i�b�u�t�e� � � � � � � � �t�h�i�s�.�t�y�p�e� �=� �R�E�D�U�C�E�R�_�N�A�M�E� � � � � � � � � �t�h�i�s�.�u�r�l� �=� �'�h�t�t�p�s�:�/�/�l�o�c�a�l�h�o�s�t�:�8�0�0�0�/�a�p�i�/�p�r�o�d�u�c�t�s�'�;� � � � � � � � �t�h�i�s�.�b�a�s�e�_�p�a�t�h� �=� �"�p�r�o�d�u�c�t�s�"�;� � � � � � � � �t�h�i�s�.�r�e�d�u�c�e�r�_�n�a�m�e� �=� �"�p�r�o�d�u�c�t�s�_�r�e�d�u�c�e�r�"�;� � � � � � � � �t�h�i�s�.�i�s�_�s�i�n�g�u�l�a�r� �=� �f�a�l�s�e� �/�/� �d�e�f�a�u�l�t� � � � � � �}� � � � �}� � � � � � �c�o�n�s�t� �i�n�s�t�a�n�c�e� �=� �n�e�w� �M�o�d�e�l�P�r�o�d�u�c�t�s�(�)�;� � � � �r�e�t�u�r�n� �i�n�s�t�a�n�c�e�;� � �}�;� � � � �e�x�p�o�r�t� �d�e�f�a�u�l�t� �u�s�e�M�o�d�e�l�P�r�o�d�u�c�t�s�;� � �
��
�
�
�
�
�#�#�#� �4�.� �U�s�e� �t�h�e� �M�o�d�e�l� �f�o�r� �C�R�U�D� �o�p�e�r�a�t�i�o�n�s�
�
�
�
��p�r�o�d�u�c�t�s�.�j�s�
�
�
�
�
��
��j�s� � �i�m�p�o�r�t� �u�s�e�M�o�d�e�l�P�r�o�d�u�c�t�s� �f�r�o�m� �"�.�/�p�r�o�d�u�c�t�s�.�m�o�d�e�l�s�"�;� � �i�m�p�o�r�t� �{� �u�s�e�S�e�l�e�c�t�o�r� �}� �f�r�o�m� �"�r�e�a�c�t�-�r�e�d�u�x�"�;� � � � �c�o�n�s�t� �P�r�o�d�u�c�t�s� �=� �(�p�r�o�p�s�)� �=�>� �{� � � � �c�o�n�s�t� �M�o�d�e�l�P�r�o�d�u�c�t�s� �=� �u�s�e�M�o�d�e�l�P�r�o�d�u�c�t�s�(�)�;� � � � �c�o�n�s�t� �p�r�o�d�u�c�t�s� �=� �u�s�e�S�e�l�e�c�t�o�r�(�M�o�d�e�l�P�r�o�d�u�c�t�s�.�s�e�l�e�c�t�A�l�l�(�)�)�;� � �c�o�n�s�t� �p�r�o�d�u�c�t�I�d�5� �=� �u�s�e�S�e�l�e�c�t�o�r�(�M�o�d�e�l�P�r�o�d�u�c�t�s�.�s�e�l�e�c�t�G�e�t�B�y�I�d�(�{� � � � � � �i�d�:� �5� � �}�)�)�;� � �c�o�n�s�t� �p�r�o�d�u�c�t�I�d�5�N�a�m�e� �=� �u�s�e�S�e�l�e�c�t�o�r�(�M�o�d�e�l�P�r�o�d�u�c�t�s�.�s�e�l�e�c�t�F�i�e�l�d�(�{� � � � � � �i�d�:� �5�,� � � � � � �f�i�e�l�d�_�n�a�m�e�:� �"�n�a�m�e�"� � �}�)�)�;� � � � �c�o�n�s�t� �h�a�n�d�l�e�A�d�d�P�r�o�d�u�c�t� �=� �(�)� �=�>� �{� � � � �M�o�d�e�l�P�r�o�d�u�c�t�s�.�c�r�e�a�t�e�I�t�e�m�(�{� � � � � � �p�a�y�l�o�a�d�:� �{� � � � � � � � �n�a�m�e�:� �"�p�r�o�d�u�c�t� �n�a�m�e�"�,� � � � � � � � �p�r�i�c�e�:� �"�p�r�o�d�u�c�t� �p�r�i�c�e�"�,� � � � � � � � �d�e�s�c�r�i�p�t�i�o�n�:� �"�p�r�o�d�u�c�t� �d�e�s�c�r�i�p�t�i�o�n�"� � � � � � �}� � � � �}�)� � �}� � � � �c�o�n�s�t� �h�a�n�d�l�e�U�p�d�a�t�e�P�r�o�d�u�c�t� �=� �(�)� �=�>� �{� � � � �M�o�d�e�l�P�r�o�d�u�c�t�s�.�u�p�d�a�t�e�I�t�e�m�(�{� � � � � � �i�d�:� �"�p�r�o�d�u�c�t� �i�d�"�,� � � � � � �p�a�y�l�o�a�d�:� �{� � � � � � � � �n�a�m�e�:� �"�u�p�d�a�t�e�d� �p�r�o�d�u�c�t� �n�a�m�e�"�,� � � � � � � � �d�e�s�c�r�i�p�t�i�o�n�:� �"�u�p�d�a�t�e�d� �p�r�o�d�u�c�t� �d�e�s�c�r�i�p�t�i�o�n�"� � � � � � �}� � � � �}�)� � �}� � � � �c�o�n�s�t� �h�a�n�d�l�e�D�e�l�e�t�e�P�r�o�d�u�c�t� �=� �(�)� �=�>� �{� � � � �M�o�d�e�l�P�r�o�d�u�c�t�s�.�d�e�l�e�t�e�I�t�e�m�(�{� � � � � � �i�d�:� �"�p�r�o�d�u�c�t� �i�d�"� � � � �}�)� � �}� � � � �r�e�t�u�r�n� �(� � � � � � �<�d�i�v�>� � � � � � � � �<�b�u�t�t�o�n� �o�n�C�l�i�c�k�=�{�h�a�n�d�l�e�A�d�d�P�r�o�d�u�c�t�}�>�A�d�d� �P�r�o�d�u�c�t�<�/�b�u�t�t�o�n�>� � � � � � � � � �<�b�u�t�t�o�n� �o�n�C�l�i�c�k�=�{�h�a�n�d�l�e�U�p�d�a�t�e�P�r�o�d�u�c�t�}�>�U�p�d�a�t�e� �P�r�o�d�u�c�t�<�/�b�u�t�t�o�n�>� � � � � � � � �<�b�u�t�t�o�n� �o�n�C�l�i�c�k�=�{�h�a�n�d�l�e�D�e�l�e�t�e�P�r�o�d�u�c�t�}�>�D�e�l�e�t�e� �P�r�o�d�u�c�t�<�/�b�u�t�t�o�n�>� � � � � � � � � � �<�h�2�>�A�l�l� �p�r�o�d�u�c�t�s�<�/�h�2�>� � � � � � � � �<�u�l�>� � � � � � � � � � �{�p�r�o�d�u�c�t�s�.�m�a�p�(�p�r�o�d�u�c�t� �=�>� �(� � � � � � � � � � � � �<�l�i� �k�e�y�=�{�p�r�o�d�u�c�t�.�i�d�}�>�{�p�r�o�d�u�c�t�.�n�a�m�e�}�<�/�l�i�>� � � � � � � � � � �)�)�}� � � � � � � � �<�/�u�l�>� � � � � � � � �<�b�r�/�>� � � � � � � � � �<�h�2�>�P�r�o�d�u�c�t� �i�d� �5�<�/�h�2�>� � � � � � � � �<�u�l�>� � � � � � � � � � �<�l�i�>�{�p�r�o�d�u�c�t�I�d�5�.�n�a�m�e�}�<�/�l�i�>� � � � � � � � � � �<�l�i�>�{�p�r�o�d�u�c�t�I�d�5�.�p�r�i�c�e�}�<�/�l�i�>� � � � � � � � � � �<�l�i�>�{�p�r�o�d�u�c�t�I�d�5�.�d�e�s�c�r�i�p�t�i�o�n�}�<�/�l�i�>� � � � � � � � �<�/�u�l�>� � � � � � � � �<�b�r�/�>� � � � � � � � �<�h�2�>�P�r�o�d�u�c�t� �i�d� �5� �n�a�m�e�<�/�h�2�>� � � � � � � � �<�u�l�>� � � � � � � � � � �<�l�i�>�{�p�r�o�d�u�c�t�I�d�5�N�a�m�e�}�<�/�l�i�>� � � � � � � � �<�/�u�l�>� � � � � � �<�/�d�i�v�>� � � � �)� � �}� � � � �e�x�p�o�r�t� �d�e�f�a�u�l�t� �P�r�o�d�u�c�t�s� � �
��
�
�
�
�
�#�#� �O�v�e�r�a�l�l� �c�a�p�a�b�i�l�i�t�i�e�s�
�
�
�
�#�#�#� �1�.� �C�h�a�n�g�e� �t�h�e� �s�t�a�t�e�
�
�
�
��
��m�e�r�m�a�i�d� � �f�l�o�w�c�h�a�r�t� � � � � � �M�o�d�e�l� � �-�-�>�|� �c�r�e�a�t�e�I�t�e�m�<�b�r�/�>� �r�e�t�r�i�e�v�e�I�t�e�m�<�b�r�/�>� �u�p�d�a�t�e�I�t�e�m�<�b�r�/�>� �d�e�l�e�t�e�I�t�e�m� �|� �R�u�n�A�c�t�i�o�n�s�B�e�f�o�r�e� � �R�u�n�A�c�t�i�o�n�s�B�e�f�o�r�e� �-�-�>� �M�a�k�e�R�e�q�u�e�s�t�G�e�t�R�e�s�p�o�n�s�e� �-�-�>�|�P�r�o�c�e�s�s� �R�e�s�p�o�n�s�e�|� �R�u�n�A�c�t�i�o�n�s�A�f�t�e�r� � � �R�u�n�A�c�t�i�o�n�s�A�f�t�e�r� �-�-�>�|�r�e�d�u�x�C�r�e�a�t�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�R�e�t�r�i�e�v�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�U�p�d�a�t�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�D�e�l�e�t�e�I�t�e�m�|� �U�p�d�a�t�e�S�t�a�t�e� � � �M�o�d�e�l� � �-�-�>�|�r�e�d�u�x�C�r�e�a�t�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�R�e�t�r�i�e�v�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�U�p�d�a�t�e�I�t�e�m�<�b�r�/�>� �r�e�d�u�x�D�e�l�e�t�e�I�t�e�m�|� �U�p�d�a�t�e�S�t�a�t�e� � �
��
�
�
�
�
�#�#�#� �2�.� �S�e�l�e�c�t� �t�h�e� �s�t�a�t�e�
�
��
��m�e�r�m�a�i�d� � �f�l�o�w�c�h�a�r�t� � � � � � �M�o�d�e�l� � �-�-�>�|� �s�e�l�e�c�t�A�l�l�<�b�r�/�>� �s�e�l�e�c�t�G�e�t�B�y�I�d�<�b�r�/�>� �s�e�l�e�c�t�F�i�e�l�d�<�b�r�/�>�|� �s�e�l�e�c�t�F�r�o�m�S�t�a�t�e� �-�-�>� �c�a�c�h�e�S�e�l�e�c�t�o�r� � �
��
�