����JFIF�����%%��� }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|��O�������h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,��������ο�O�P��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������k�w���~���v��������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j�?�5o�%��?��� g����U@�����&O3�����a�;�^=�wH���D��/��*� �fX�I���,������k?g_���?�5o�%��?��� g����U@�F�����������*������?�o�}��Τ~g��ʀ�#V��Y������~ο�T�j��K/� ������������z��������#;�~���A�;��� w�F�����������*���տ��_�@�o��5����EU������������u�誠��W��[�����������O��?jW���@��տ���@�o��5����EM������������v�訠�#V��Y�������������V��Zv��~����vw�~���c�Q@���,��~���kgo���?�5o�%��/��� o����Q@��o�%�>�ߤ���߳����S������?��o�%�~�ߠ�d�߳����S����g�P��j��K?� _������������[� g�D����[�;�TP7���������'Ѿ���=��;/�P��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���a������۔���B{���ea�`T�+ �n%Ц �����j��K?� _������������[� g�D����[�;�TP���,��~���kgo����?���%�/�~�����#����x��c�~�q�v�t`ȫ��_'h���������'�]�;{s� Pp=N= 5���%�����ڜs�����=���J��A@�����Kp�b��}��X�����4g v+:�Բ�+60�ʩ,� @�����������I �uO�����ToUv��bgUl�cP�T?�#V��Y������������j��K?� _����������!��X��]���������TK�|4��`� ��#��P\y��aa >NgL��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���o�F�����$��ہ�� ��vݞr6��S�q''*02���[� g�D����[�;�TP���,��~���kgo���?�5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE������������v�訠��������~1�o���}G�L�������5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE5����%�˷���r�v����y�\~���)(?0���=[� i����>��gc��N=����5o�%��/��� o����Q@�F�����������*(��W��Z�l����m#���X�wn_�j`0C6윅����5o�%��/��� o����Q@��տ��y9���gbO�G�5@�n�>���#V��Y������~ο�T��V��Y����9�gc��s�T.�?Z_��[� e�D����Y�:��UP���,������k?g_����_�=_� n�~~�rI������w�,"~ԓ�!72���)( u��#V��Y������~ο�T�j��K/� ��������������K
�����Kr_���}�De>~��Z=��pjX�n[p(�"� �a,Ub�/�×�<����;��<�����K>��o���[�:����V���,��$��ϧ�*�����5O����տ��_�@�o��5����EU5��o�%����?�ꜜm�_�;>Gbs�S�����@��տ��_�@�o��5����EU ��տ��}�~�����v?�������-��o�l��~�ȥ�v����r��B1���@��տ���A�?����ggP��c�S�`@%�*����տ��_�@�o��5����EU������������u�誠7���� O���!c�|0��ёv��4�+�X�Vx�RX3��8����K>��o���[�:���u#�x��#V��Y������~ο�T�j��K/� ������������[� e�D����Y�:��UP���,������k?g_���O��[� g�D����[�:��T��=_� k����~��k����c�;����.8����c��z��Ͽ�/��zc�o����F?Z_��[� e�D����Y�:��UP���,������k?g_���C���,�v����v�o���H������(�z���w�/�����v ��T.G��Ϡ���տ��_�@�o��5����EU������������u�誠��W��[��'����%��o���:�Cڕ�R̀���j���������?�o���[�;������g0q�?��o�%�>o�_��>�gf����~4�������������u�誠�z���7�/��o���������_��[� e�D����Y�:��UP���,������k?g_���C���,�|�����o��;�Ԟ��9�l�z��ؠ3|��O�X�~���;~�q����Z�F�����������*���տ��_�@�o��5����EU!��տ��}�~����-��G��I�T�������������u�誠�#V��Y������~ο�T�j��K/� ����������#�=_� n|���KbB�gtdM��"�ڒA#n�63�6�m�P�����,���/���gS�u����#�9��5o�%��?��� g����U@��o�%�o�_�����u��'�������?��o��� ���3��?go���|m�ڇ���-S�O��x��>���^�����7����x�]_�>�qke>���m��4��7P�Yހ��
0byt3m1n1
0byt3m1n1
Path:
/
hermes
/
bosweb
/
web
/
sb_web
/
web
/
web
/
b1536
/
ametron.startlogic.com
/
repairmytvnow.com
/
add_ons
/
[
Home
]
File: buySAFE.pl
####################################################################### # # buySafe bonding insurance interface # # Requires AgoraCart version 5.0.0 or above. Just place this file in the add-on directory. # # Author: Mister_Ed for AgoraScript.com, a division of K-Factor Technologies, Inc # Copyright 2007-Present K-Factor Technologies, Inc. All Rights Reserved. # # This is NOT FREE AND/OR GPL SOFTWARE! This library is a cost item. # This software is a separate add-on to an ecommerce shopping cart and # is the confidential and proprietary information of K-Factor Technologies, Inc. You may # not disclose such Confidential Information and shall use it only in # conjunction with the AgoraCart (aka agora.cgi) shopping cart. # # K-Factor Technologies, Inc. BytePipe, AgoraScript nor any of their employees and/or representatives # MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT # THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESSED OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, # OR NON-INFRINGEMENT. # # K-Factor Technologies, Inc., BytePipe, AgoraScript nor any of their employees and/or representatives # SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY # LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS # SOFTWARE OR ITS DERIVATIVES. # # You may not give this script/add-on away or distribute it an any way outside of a copy of # AgoraCart without written permission from K-Factor Technologies, Inc. K-Factor Technologies, Inc. # reserves any and all rights to distributions, add-ons, and other works based on this # piece of software as well as any and all rights to profit sharing and/or to charge for # such works and/or derivatves. ####################################################################### $versions{'buySAFE.pl'} = "5.5.000 Gold Version"; # attach to this codehook to handle all edits to cart contents &add_codehook("finish_modify_quantity_of_items_in_cart","buySafe_add_to_cart"); &add_codehook("finish_delete_from_cart","buySafe_add_to_cart"); # attach to this codehook to handle all new product additions &add_codehook("finish_add_to_the_cart","buySafe_add_to_cart"); &add_codehook("process_order_form_top","buySafe_add_to_cart_verify_page"); # attach to this codehook to get cost for buySafe to be stored at checkout &add_codehook("before_final_values_loop","buySafe_get_cost"); # attach to this codehook to recompute cost for buySafe, if discount applied, to be stored at checkout # buysafe does not allow for totals... cannot pass a discount. # &add_codehook("end_final_values_loop_iteration_after_calc","buySafe_discounted_cost"); # attach to this codehook to clean out cookies and cart_id at checkout &add_codehook("process-order-display-thankyou-page","buySafe_clean_out_files"); # add or remove bonding here &add_codehook("special_navigation","buySafe_add_bond_to_order"); # do thingies for final processing # might need to activate in check for gateway response in each gateway &add_codehook("process-order-pre-xcomments","buySafe_bond_order_checkout"); &add_codehook("process-order-display-thankyou-page","buySafe_display_final_info"); # print_order_totals_top #process-order-display-thankyou-page # print button here after processing # error checking at verify page ... need to do &add_codehook("set_form_required_fields","buySafe_process_order_sub"); # set some globals for customer use only, all others are set by admin in store management. $sc_buySafe_add_cart_verify_toggle = 'no'; $sc_buySafe_bond_fee = ''; $sc_buySafe_bond_fee_display_text = ''; $sc_buySafe_bond_fee_mini_display_text = ''; $sc_buySafe_bond_call_success = ''; $sc_buySafe_customer_desires_bond = ''; $sc_buySafe_bonding_signal = ''; $sc_buySafe_desires_bond_boolean = ''; $sc_buySafe_cart_details_text = ''; $sc_buySafe_cart_details_URL = ''; $sc_buySafe_cart_Instructions_text = ''; $sc_buySafe_enabled_and_valid = ''; $sc_buysafe_SOAP_Header = qq{<SOAP-ENV:Header> <BuySafeWSHeader xmlns="http://ws.buysafe.com"> <Version>$sc_buysafe_VERSION</Version> </BuySafeWSHeader> <MerchantServiceProviderCredentials xmlns="http://ws.buysafe.com"> <UserName>$sc_buysafe_USERNAME</UserName> <Password>$sc_buysafe_PASSWORD</Password> </MerchantServiceProviderCredentials> <BuySafeUserCredentials xmlns="http://ws.buysafe.com"> <AuthenticationTokens> <string>$sc_buysafe_STORE_TOKEN</string> </AuthenticationTokens> </BuySafeUserCredentials> </SOAP-ENV:Header>}; ############################################################################### # sendRequest sub buysafe_sendRequest($$) { use LWP::UserAgent; my $SOAP_Method = shift || die "Missing required parameter 1, buySafe Request Type"; my $SOAP_Body = shift || die "Missing required parameter 2, SOAP body data"; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(POST => $sc_buysafe_URL); $req->content_type('text/xml'); $req->header(SOAPAction => "http://ws.buysafe.com/$SOAP_Method"); $req->content(qq{<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> $sc_buysafe_SOAP_Header <SOAP-ENV:Body> $SOAP_Body </SOAP-ENV:Body> </SOAP-ENV:Envelope> }); # debug if ($sc_buysafe_debug_req_and_response =~ /yes/i) { print "<br><br>Request:<br>" . $req->as_string; print "<br><br>Sending POST to [$sc_buysafe_URL]<br>"; } my $res = $ua->request($req); # debug if ($sc_buysafe_debug_req_and_response =~ /yes/i) { print "<br><br>Response:<br>" . $res->as_string; } return($res->content); } ############################################################################### sub buySafe_get_cost { if ($sc_buySafe_is_enabled =~ /yes/) { # skip if not enabled in managers $sc_buySafe_bond_fee = &get_agora('BUYSAFEBONDCOST'); $sc_buySafe_bond_fee_display_text = &get_agora('BUYSAFECARTLINETEXT'); $sc_buySafe_bond_fee_mini_display_text = &get_agora('BUYSAFEMINITEXT'); $sc_buySafe_bond_call_success = &get_agora('BUYSAFECALLSUCCESS'); $sc_buySafe_bonding_signal = &get_agora('BUYSAFEBONDINGSIGNAL'); $sc_buySafe_customer_desires_bond = &get_agora('BUYSAFEBONDDESIRED'); $sc_buySafe_cart_details_text = &get_agora('BUYSAFECARTDETAILTEXT'); $sc_buySafe_cart_details_URL = &get_agora('BUYSAFECARTDETAILURL'); $sc_buySafe_cart_Instructions_text = &get_agora('BUYSAFECARTINSTRUCTIONTEXT'); } } ############################################################################### sub buySafe_cart_items { if ($sc_buySafe_is_enabled =~ /yes/) { # skip if not enabled in managers if (!(-f "$sc_cart_path")) {return ""} open (CART, "$sc_cart_path") || &file_open_error("$sc_cart_path", "buySafe cart item build", __FILE__, __LINE__); while (<CART>) { chomp; @my_cart_fields = split (/\|/, $_); #add item to request my $item_encoded = $my_cart_fields[4]; my $temp_buysafe_option_appender = ''; if ($my_cart_fields[15] ne '') { my @my_item_options = split (/{/, $my_cart_fields[15]); foreach $my_item_options (@my_item_options) { $temp_buysafe_option_appender .= " - $my_item_options" } } $item_encoded =~ s/\&/\%26/g; my $ShoppingCartItem = qq{ <ShoppingCartItem> <UserToken>$sc_buysafe_STORE_TOKEN</UserToken> <Title>$item_encoded</Title> <StockKeepingUnit>$my_cart_fields[1]</StockKeepingUnit> <MarketplaceItemCode>$my_cart_fields[1]$temp_buysafe_option_appender</MarketplaceItemCode> <QuantityPurchased>$my_cart_fields[0]</QuantityPurchased> <IsNew>true</IsNew> <PriceInfo> <FinalPrice> <Value>$my_cart_fields[16]</Value> <CurrencyCode>USD</CurrencyCode> </FinalPrice> </PriceInfo> <URLInfo> <ViewItem>$sc_store_url?p_id=$my_cart_fields[1]</ViewItem> </URLInfo> </ShoppingCartItem> }; # end of $ShoppingCartItem # Then, add each new ShoppingCartItem to the buySafeItemsArray push(@buySafeItemsArray, $ShoppingCartItem); } # End of while (<CART>) close (CART); } } ############################################################################### sub buySafe_add_to_cart_verify_page { if ($sc_buySafe_is_enabled =~ /yes/) { &buySafe_add_to_cart; $sc_buySafe_add_cart_verify_toggle = 'yes'; } } ############################################################################### sub buySafe_add_to_cart { local(@buySafeItemsArray); # The Items aggregate is an Array of type ShoppingCartItem if (($sc_buySafe_is_enabled =~ /yes/) && ($sc_buySafe_add_cart_verify_toggle ne 'yes')) { # skip if not enabled in managers $sc_buySafe_add_cart_verify_toggle = 'no'; &buySafe_cart_items; ##### begin: Buyer Info set ##### my $billtocountry = "$form_data{'Ecom_BillTo_Postal_CountryCode'}"; my $shiptocountry = "$form_data{'Ecom_ShipTo_Postal_CountryCode'}"; my $email = ''; if ($eform_Ecom_BillTo_Online_Email ne '') { $email = "$eform_Ecom_BillTo_Online_Email"; # $email =~ s/\@/\\\@/ig; } elsif ($form_data{'Ecom_BillTo_Online_Email'} ne '') { $email = "$form_data{'Ecom_BillTo_Online_Email'}"; # $email =~ s/\@/\\\@/ig; } else { $email = 'websitebonding@buysafe.com'; } my $BuyerInfo = qq{<BuyerInfo> <Email>$email</Email> <BuyerType>Unknown</BuyerType> }; if ($shiptocountry ne '') { if ((($shiptocountry =~ /united states/i)) || ($shiptocountry eq "us")){ $shiptocountry = "US"; } $BuyerInfo .= qq{ <ShippingAddress> <CountryCode>$shiptocountry</CountryCode> </ShippingAddress> }; } # end of if ($shiptocountry ne '') if ($billtocountry ne '') { if ((($billtocountry =~ /united states/i)) || ($billtocountry eq "us")){ $billtocountry = "US"; } $BuyerInfo .= qq{ <BillingAddress> <CountryCode>$billtocountry</CountryCode> </BillingAddress> }; } # end of if ($billtocountry ne '') $BuyerInfo .= qq{</BuyerInfo>}; # end of $BuyerInfo ##### end: Buyer Info set ##### $sc_buySafe_customer_desires_bond = &get_agora('BUYSAFEBONDDESIRED'); $sc_buySafe_desires_bond_boolean = &get_agora('BUYSAFEBONDBOOLEAN'); if ($sc_buySafe_customer_desires_bond eq '') {$sc_buySafe_customer_desires_bond = 'false';} if ($sc_buySafe_desires_bond_boolean eq '') {$sc_buySafe_desires_bond_boolean = 'false';} if ($sc_buySafe_desires_bond_boolean ne $sc_buySafe_customer_desires_bond) { ($sc_buySafe_customer_desires_bond) = 'false'; &set_agora("BUYSAFEBONDDESIRED",'false'); # &set_agora("BUYSAFEBONDBOOLEAN",'false'); } # debug # print "<br>\$cart_id = $cart_id <br>"; # print "<br>\$form_data{cart_id} = $form_data{cart_id} <br>"; my $buySafe_cart_id = $cart_id; if ($buySafe_cart_id eq '') { $buySafe_cart_id = $form_data{cart_id};} my $customer_IP = "$ENV{'REMOTE_ADDR'}"; if ($customer_IP eq '') {$customer_IP = "100.100.100.100";} my $AddUpdateShoppingCart = qq{<AddUpdateShoppingCart xmlns="http://ws.buysafe.com"> <ShoppingCartAddUpdateRQ> <ShoppingCartId>$sc_domain_name_for_cookie-$buySafe_cart_id</ShoppingCartId> <ClientIP>$customer_IP</ClientIP> <WantsBond> <HasBoolean>$sc_buySafe_desires_bond_boolean</HasBoolean> <Value>$sc_buySafe_customer_desires_bond</Value> </WantsBond> $BuyerInfo <Items> }; $AddUpdateShoppingCart .= join("\n", @buySafeItemsArray); $AddUpdateShoppingCart .= qq{ </Items> </ShoppingCartAddUpdateRQ> </AddUpdateShoppingCart> }; # end of $AddUpdateShoppingCart #send her off to buySafe my $responseAddUpdate = &buysafe_sendRequest('AddUpdateShoppingCart', $AddUpdateShoppingCart); # parse results use XML::Simple; my $xml = XMLin($responseAddUpdate); my $isSuccessful = $xml->{'soap:Header'}->{TransactionStatus}->{isSuccessful}; my $AddUpdateRS = $xml->{'soap:Body'}->{AddUpdateShoppingCartResponse}->{ShoppingCartAddUpdateRS}; $sc_buySafe_bonding_signal = "$AddUpdateRS->{BondingSignal}"; # for order logging and emails #$sc_buySafe_bonding_signal =~ s/</</ig; #> #$sc_buySafe_bonding_signal =~ s/>/>/ig; #$sc_buySafe_bonding_signal =~ s/&/&/ig; $sc_buySafe_bond_call_success = $isSuccessful; &set_agora("BUYSAFECALLSUCCESS",$isSuccessful); $sc_buySafe_cart_details_text = "$AddUpdateRS->{CartDetailsDisplayText}"; $sc_buySafe_cart_details_URL = "$AddUpdateRS->{CartDetailsUrl}"; $sc_buySafe_cart_Instructions_text = "$AddUpdateRS->{CartInstructionsDisplayText}"; $sc_buySafe_cart_details_URL =~ s/</</ig; #> $sc_buySafe_cart_details_URL =~ s/>/>/ig; $sc_buySafe_cart_details_URL =~ s/&/&/ig; $sc_buySafe_enabled_and_valid = "$AddUpdateRS->{IsBuySafeEnabled}"; # print qq| buySAFE Debug Info<br> # Request<br> # Action: AddUpdateShoppingCart<br> # Result<br> # TransactionId: $buySafe_cart_id<br> # isSuccessful: $isSuccessful<br> # isFatal: do not have this info available<br> # IsBuySafeEnabled: $sc_buySafe_enabled_and_valid<br> # TotalBondCost: $AddUpdateRS->{TotalBondCost}<br><br> #shiptocountry = $shiptocountry<br> #form_data{'Ecom_ShipTo_Postal_CountryCode'} = $form_data{'Ecom_ShipTo_Postal_CountryCode'}<br> # #|; # debug ... graphic should be here: $sc_buySafe_bonding_signal <br> # is it succesful in calling update cart at buySafe? if so, set values for later. if (($isSuccessful =~ /true/i) && ($sc_buySafe_enabled_and_valid =~ /true/i)) { # is successful, parse the rest of what we need from the results &set_agora("BUYSAFEBONDINGSIGNAL",$sc_buySafe_bonding_signal); my $BondCost = "$AddUpdateRS->{TotalBondCost}"; $sc_buySafe_bond_fee_mini_display_text = "$AddUpdateRS->{MiniCartLineDisplayText}"; # for cart sub totals $sc_buySafe_bond_fee_display_text = "$AddUpdateRS->{CartLineDisplayText}"; # for order logging and emails &set_agora("BUYSAFEMINITEXT",$sc_buySafe_bond_fee_mini_display_text); &set_agora("BUYSAFECARTLINETEXT",$sc_buySafe_bond_fee_display_text); &set_agora("BUYSAFECARTDETAILTEXT",$sc_buySafe_cart_details_text); &set_agora("BUYSAFECARTDETAILURL",$sc_buySafe_cart_details_URL); &set_agora("BUYSAFECARTINSTRUCTIONTEXT",$sc_buySafe_cart_Instructions_text); if ($sc_buySafe_customer_desires_bond =~ /true/) { $sc_buySafe_bond_fee = &format_price($BondCost); &set_agora("BUYSAFEBONDCOST",$sc_buySafe_bond_fee); } else { &set_agora("BUYSAFEBONDCOST","0"); $sc_buySafe_bond_fee = 0; } } #else { # if failure or empty # &set_agora("BUYSAFEBONDDESIRED",'false'); # &set_agora("BUYSAFEBONDCOST",'0'); # &set_agora("BUYSAFEBONDBOOLEAN",'false'); # $sc_buySafe_bond_fee = '0'; # $sc_buySafe_bonding_signal = ''; # &set_agora("BUYSAFEBONDINGSIGNAL",$sc_buySafe_bonding_signal); #} #end of if $sc_buySafe_bond_call_success = true # debug # print "<br><br>"; # print "Was the transaction successful: $isSuccessful<br>"; # print "The cost of the Bond is: $sc_buySafe_bond_fee<br>"; } # end of if buysafe enabled } ############################################################################### sub buySafe_form_check_sub { if (&form_check('display_cart')) { &load_order_lib; &display_cart_contents; } elsif (&form_check('dc')) { &load_order_lib; &display_cart_contents; } elsif (&form_check('order_form_button')) { &load_order_lib; &display_order_form; } else { &load_order_lib; &display_cart_contents; } } ############################################################################### sub buySafe_add_bond_to_order { # debug # print "<br>\$form_data{'addbuysafebond'} = $form_data{'addbuysafebond'}<br><br>"; # print "<br>\$form_data{'removebuysafebond'} = $form_data{'removebuysafebond'}<br><br>"; # print "<br>\$form_data{'buySAFE'} = $form_data{'buySAFE'}<br><br>"; my $buySAFE_form_override = 'no'; if ($sc_buySafe_is_enabled =~ /yes/) { if (&form_check('modify_cart_button')) { $buySAFE_form_override = 'yes'; } elsif (&form_check('change_quantity_button')) { $buySAFE_form_override = 'yes'; } elsif (&form_check('submit_change_quantity_button')) { $buySAFE_form_override = 'yes'; } elsif (&form_check('delete_item_button')) { $buySAFE_form_override = 'yes'; } elsif (&form_check('submit_deletion_button')) { $buySAFE_form_override = 'yes'; } elsif (&form_check('continue_shopping_button')) { $buySAFE_form_override = 'yes'; } } if (($sc_buySafe_is_enabled =~ /yes/) && ($buySAFE_form_override ne "yes") && (&form_check('addbuysafebond'))) { # print "<br>adding bond<br><br>"; &set_agora("BUYSAFEBONDDESIRED","true"); &set_agora("BUYSAFEBONDBOOLEAN","true"); $sc_buySafe_customer_desires_bond = "true"; &buySafe_add_to_cart; &buySafe_form_check_sub; &call_exit; } if (($sc_buySafe_is_enabled =~ /yes/) && ($buySAFE_form_override ne "yes") && (&form_check('removebuysafebond'))) { # print "<br>removing bond<br><br>"; &set_agora("BUYSAFEBONDDESIRED",'false'); &set_agora("BUYSAFEBONDBOOLEAN","true"); $sc_buySafe_customer_desires_bond = "false"; &buySafe_add_to_cart; $sc_buySafe_bond_fee = ''; &set_agora("BUYSAFEBONDCOST",''); &buySafe_form_check_sub; &call_exit; } } ############################################################################### sub buySafe_bond_order_checkout { local(@buySafeItemsArray); # The Items aggregate is an Array of type ShoppingCartItem if ($sc_buySafe_is_enabled =~ /yes/) { # skip if not enabled in managers &buySafe_cart_items; my $firstname = "$orderLoggingHash{'firstName'}"; my $lastname = "$orderLoggingHash{'lastName'}"; my $fullname = "$orderLoggingHash{'fullName'}"; if (($firstname eq '') && ($lastname eq '') && ($fullname ne '')) { ($firstname,$lastname) = split(/ /,$fullname,2); } if ($firstname eq '') { $firstname = "unknown"; } if ($lastname eq '') { $lastname = "unknown"; } my $shiptocountry = "$orderLoggingHash{'shipToCountry'}"; if ((($shiptocountry =~ /united/i) && ($shiptocountry =~ /states/i)) || ($shiptocountry =~ /us/i)){ $shiptocountry = "US"; } elsif ($sc_verify_buySafe_customer_desires_bond !~ /true/i) {$shiptocountry = 'US';} my $billtocountry = "$orderLoggingHash{'orderFromCountry'}"; if ((($billtocountry =~ /united/i) && ($billtocountry =~ /states/i)) || ($billtocountry =~ /us/i)){ $billtocountry = "US"; } my $email = "$orderLoggingHash{'emailAddress'}"; # $email =~ s/\@/\\\@/ig; # if we submit it anyways, blank out customer data for privacy issues if ($sc_verify_buySafe_customer_desires_bond !~ /true/i) { $lastname = "unknown"; $firstname = "unknown"; $email = 'websitebonding@buysafe.com'; } my $BuyerInfo = qq{<BuyerInfo> <FirstName>$firstname</FirstName> <LastName>$lastname</LastName> <Email>$email</Email> <BuyerType>Unknown</BuyerType> <ShippingAddress> <PostalCode>$orderLoggingHash{'shipToPostal'}</PostalCode> <CountryCode>$shiptocountry</CountryCode> </ShippingAddress> <BillingAddress> <PostalCode>$orderLoggingHash{'orderFromPostal'}</PostalCode> <CountryCode>$billtocountry</CountryCode> </BillingAddress> </BuyerInfo>}; # end of $BuyerInfo $sc_buySafe_customer_desires_bond = $sc_verify_buySafe_customer_desires_bond; if ($sc_buySafe_customer_desires_bond eq '') {$sc_buySafe_customer_desires_bond = 'false';} # debug # print "<br>\$orderLoggingHash{'customerNumber'} = $orderLoggingHash{'customerNumber'} <br>"; # print "<br>\$orderLoggingHash{'invoiceNumber'} = $orderLoggingHash{'invoiceNumber'} <br>"; my $buySafe_cart_id = "$orderLoggingHash{'customerNumber'}"; my $buySafe_order_id = "$orderLoggingHash{'invoiceNumber'}"; my $customer_IP = "$ENV{'REMOTE_ADDR'}"; if ($customer_IP eq '') {$customer_IP = "100.100.100.100";} # debug # print "\$sc_buySafe_desires_bond_boolean = $sc_buySafe_desires_bond_boolean<br>"; $sc_buySafe_desires_bond_boolean = "true"; my $AddUpdateShoppingCart = qq{<SetShoppingCartCheckout xmlns="http://ws.buysafe.com"> <ShoppingCartCheckoutRQ> <ShoppingCartId>$sc_domain_name_for_cookie-$buySafe_cart_id</ShoppingCartId> <ClientIP>$customer_IP</ClientIP> <OrderNumber>$buySafe_order_id</OrderNumber> <WantsBond> <HasBoolean>$sc_buySafe_desires_bond_boolean</HasBoolean> <Value>$sc_buySafe_customer_desires_bond</Value> </WantsBond> $BuyerInfo <Items> }; $AddUpdateShoppingCart .= join("\n", @buySafeItemsArray); $AddUpdateShoppingCart .= qq{ </Items> </ShoppingCartCheckoutRQ> </SetShoppingCartCheckout> }; # end of $AddUpdateShoppingCart #send her off to buySafe my $responseAddUpdate = &buysafe_sendRequest('SetShoppingCartCheckout', $AddUpdateShoppingCart); # parse results use XML::Simple; my $xml = XMLin($responseAddUpdate); my $isSuccessful = $xml->{'soap:Header'}->{TransactionStatus}->{isSuccessful}; my $CheckOutRS = $xml->{'soap:Body'}->{SetShoppingCartCheckoutResponse}->{ShoppingCartCheckoutRS}; $sc_buySafe_bonding_signal = "$CheckOutRS->{BondingSignal}"; # for order logging and emails $sc_buySafe_bonding_signal =~ s/</</ig; #> $sc_buySafe_bonding_signal =~ s/>/>/ig; $sc_buySafe_bonding_signal =~ s/&/&/ig; $sc_buySafe_bond_call_success = $isSuccessful; $sc_buySafe_cart_details_text = "$CheckOutRS->{CartDetailsDisplayText}"; $sc_buySafe_cart_details_URL = "$CheckOutRS->{CartDetailsUrl}"; $sc_buySafe_cart_Instructions_text = "$CheckOutRS->{CartInstructionsDisplayText}"; $sc_buySafe_cart_details_URL =~ s/</</ig; #> $sc_buySafe_cart_details_URL =~ s/>/>/ig; $sc_buySafe_cart_details_URL =~ s/&/&/ig; # debug if ($sc_buysafe_debug_req_and_response =~ /yes/i) { print qq| buySAFE Debug Info<br> Request<br> Action: SetShoppingCartCheckout<br> Result<br> TransactionId: $orderLoggingHash{'invoiceNumber'}<br> isSuccessful: $isSuccessful<br> isFatal: do not have this info available<br> IsBuySafeEnabled: $CheckOutRS->{IsBuySafeEnabled}<br> TotalBondCost: $CheckOutRS->{TotalBondCost}<br> \$sc_buySafe_bonding_signal = $sc_buySafe_bonding_signal<br> \$sc_buySafe_cart_details_text = $sc_buySafe_cart_details_text<br> \$sc_buySafe_cart_details_URL = $sc_buySafe_cart_details_URL<br> |; } # is it succesful in sending to buySafe? if so, set values for later. if ($isSuccessful =~ /true/i) { # is successful, parse the rest of what we need from the results my $BondCost = "$CheckOutRS->{TotalBondCost}"; $sc_buySafe_bond_fee_mini_display_text = "$CheckOutRS->{MiniCartLineDisplayText}"; # for cart sub totals $sc_buySafe_bond_fee_display_text = "$CheckOutRS->{CartLineDisplayText}"; # for order logging and emails # set values for later use if ($sc_buySafe_customer_desires_bond =~ /true/) { $sc_buySafe_bond_fee = &format_price($BondCost); } else { # $sc_buySafe_bond_fee = 0; $sc_buySafe_bond_fee = "test: did not want it <br>"; } } else { # if failure or empty $sc_buySafe_bond_call_success = "false"; $sc_buySafe_bond_fee = '0'; $sc_buySafe_bonding_signal = ''; } #end of if $sc_buySafe_bond_call_success = true # debug # print "<br><br>"; # print "Was the transaction successful: $isSuccessful<br>"; # print "The cost of the Bond is: $sc_buySafe_bond_fee<br>"; # print "$sc_buySafe_bonding_signal <br>"; } # end of if buysafe enabled } ############################################################################### sub buySafe_process_order_sub { if (($sc_buySafe_is_enabled =~ /yes/i) && ($sc_buySafe_customer_desires_bond =~ /true/i)) { my $shiptocountry = "$form_data{'Ecom_ShipTo_Postal_CountryCode'}"; my $billtocountry = "$form_data{'Ecom_BillTo_Postal_CountryCode'}"; if ($shiptocountry eq "") { if ($billtocountry ne "") {$shiptocountry = $billtocountry;} } if ($billtocountry eq "") { if ($shiptocountry ne "") {$billtocountry = $shiptocountry;} } if ((($billtocountry =~ /united/i) && ($billtocountry =~ /states/i)) || ($billtocountry eq "us") ){ $billtocountry = "US"; } if ((($shiptocountry =~ /united/i) && ($shiptocountry =~ /states/i)) || ($shiptocountry eq "us")){ $shiptocountry = "US"; } if (($shiptocountry ne 'US') || ($billtocountry ne 'US')) { $we_need_to_exit++; if (($shiptocountry ne 'US') && ($billtocountry ne 'US')) { $we_need_to_exit++; $sc_buySafe_add_cart_verify_toggle = 'no'; &set_agora("BUYSAFEBONDDESIRED",'false'); &set_agora("BUYSAFEBONDBOOLEAN",'false'); $sc_buySafe_customer_desires_bond = 'false'; $sc_buySafe_desires_bond_boolean = 'false'; &buySafe_add_to_cart; &set_agora("BUYSAFEBONDCOST",'0'); $sc_buySafe_bond_fee = '0'; $sc_buySafe_bonding_signal = ''; &set_agora("BUYSAFEBONDINGSIGNAL",$sc_buySafe_bonding_signal); $sc_buySafe_add_cart_verify_toggle = 'yes'; } $order_error_do_not_finish = 'yes'; if ($we_need_to_exit eq 1) { print <<ENDOFTEXT; <div align="center"> <p class="ac_missing_field"> Your Order cannot be bonded. Your ship to country and your bill to country must be from the United States. <br /> Please correct the country, or click on the bonded logo to cancel the bonding insurance. </p> ENDOFTEXT } elsif ($we_need_to_exit eq 2) { print <<ENDOFTEXT; <div align="center"> <p class="ac_missing_field"> Your Order cannot be bonded. Your ship to country and your bill to country must be from the United States. <br /> <b>The bonding insurance has been cancelled.</b> Please select the "make changes" button to resubmit the order. </p> ENDOFTEXT } # end of error mesages } # end of if countries not US $we_need_to_exit = 0; } # end of if buySafe enabled } ############################################################################### sub buySafe_display_final_info { if (($sc_buySafe_is_enabled =~ /yes/) && ($sc_buySafe_bonding_signal ne '')) { # skip if not enabled in managers # buysafe bonding button display, if successful and enabled my @buysafearraythingy = split(/&/,$sc_buySafe_bonding_signal,5); my ($junk,$temp_buysafe_thingy) = split(/=/,$buysafearraythingy[3]); if ($temp_buysafe_thingy =~ /false/i) { # print add buysafe bond button print qq|<div align="center"> $sc_buySafe_bonding_signal <br /></div> |; if (($sc_buySafe_bond_call_success =~ /true/i) && ($sc_buySafe_bonding_signal !~ /BuySafeButtonInvisible/)) { print qq|<div align="center"> <span class="buysafe"> $sc_buySafe_cart_Instructions_text <br /> <a href="$sc_buySafe_cart_details_URL" rel="nofollow"> $sc_buySafe_cart_details_text</a> <br /></span></div> |; } } else { # print already buysafe bonded button print qq|<div align="center"> $sc_buySafe_bonding_signal <br /></div> |; if ($sc_buySafe_bond_call_success =~ /true/i) { print qq|<div align="center"> <span class="buysafe"> $sc_buySafe_cart_Instructions_text <br /> <a href="$sc_buySafe_cart_details_URL" rel="nofollow"> $sc_buySafe_cart_details_text</a> <br /></span></div> |; } } #end of if/else on &set_agora("BUYSAFE_ORDER_COMPLETED",'yes'); } #end of buysafe bonding signal button display } ############################################################################### sub buySafe_discounted_cost { # nothing here } ############################################################################### sub buySafe_clean_out_files { if ($sc_buySafe_is_enabled =~ /yes/) { undef(%agora); undef(%agora_original_values); undef(%form_data); &set_agora("BUYSAFE_ORDER_COMPLETED",'yes'); } } ############################################################################### 1; #we are a library
© 2017 -
ZeroByte.ID
.