[2026-05-04 22:49:04] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-FAQIR7YRCD&size=200x200&format=png"} 
[2026-05-04 22:49:04] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-FAQIR7YRCD&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-FAQIR7YRCD&size=200x200&format=png","mime":"image/png","bytes":516} 
[2026-05-04 22:49:04] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:05] production.WARNING: toDataUri: HTTP fetch failed {"fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:05] production.WARNING: toDataUri: could not convert image {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg","local_path":null,"storage_url":"http://dev.bomeqp.com/storage/app/public/","app_url":"http://dev.bomeqp.com"} 
[2026-05-04 22:49:05] production.WARNING: Could not embed image for key 'trainee_photo' {"value":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:05] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-FAQIR7YRCD"} 
[2026-05-04 22:49:05] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:49:05] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:49:05] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:49:05] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:49:05] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:49:05] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:49:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-WUAGJOBGW7&size=200x200&format=png"} 
[2026-05-04 22:49:14] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-WUAGJOBGW7&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-WUAGJOBGW7&size=200x200&format=png","mime":"image/png","bytes":519} 
[2026-05-04 22:49:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:14] production.WARNING: toDataUri: HTTP fetch failed {"fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:14] production.WARNING: toDataUri: could not convert image {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg","local_path":null,"storage_url":"http://dev.bomeqp.com/storage/app/public/","app_url":"http://dev.bomeqp.com"} 
[2026-05-04 22:49:14] production.WARNING: Could not embed image for key 'trainee_photo' {"value":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:14] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-WUAGJOBGW7"} 
[2026-05-04 22:49:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:49:14] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:49:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:49:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:49:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:49:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:49:44] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-701XL4KNLN&size=200x200&format=png"} 
[2026-05-04 22:49:44] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-701XL4KNLN&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-701XL4KNLN&size=200x200&format=png","mime":"image/png","bytes":509} 
[2026-05-04 22:49:44] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:45] production.WARNING: toDataUri: HTTP fetch failed {"fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:45] production.WARNING: toDataUri: could not convert image {"source":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg","local_path":null,"storage_url":"http://dev.bomeqp.com/storage/app/public/","app_url":"http://dev.bomeqp.com"} 
[2026-05-04 22:49:45] production.WARNING: Could not embed image for key 'trainee_photo' {"value":"https://app.bomeqp.com/laravel/storage/app/public/trainees/1/card_images/KWep8x2O1Z2Sw2to596iC1hLm2VSqgg36GYzvFBT.jpg"} 
[2026-05-04 22:49:45] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-701XL4KNLN"} 
[2026-05-04 22:49:45] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:49:45] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:49:45] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:49:45] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:49:45] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:49:45] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:51:25] production.DEBUG: Updating trainee - data collection {"trainee_id":2,"update_data":{"first_name":"Ahmed","last_name":"Gamal","email":"ahmedGamal@gmail.com","phone":"151211111111","nationality":"Saudi Arabian","id_number":"516121322","status":"active"},"request_all":{"first_name":"Ahmed","last_name":"Gamal","email":"ahmedGamal@gmail.com","phone":"151211111111","nationality":"Saudi Arabian","id_number":"516121322","status":"active","enrolled_classes":["1"],"_method":"PUT","id_image":{"Illuminate\\Http\\UploadedFile":"/tmp/phpLtnQPM"},"card_image":{"Illuminate\\Http\\UploadedFile":"/tmp/phpFmKOob"}},"request_keys":["first_name","last_name","email","phone","nationality","id_number","status","enrolled_classes","_method","id_image","card_image"],"request_method":"PUT","content_type":"multipart/form-data; boundary=----WebKitFormBoundaryTKcMvX0Plc4tXZP0"} 
[2026-05-04 22:51:25] production.DEBUG: Updating trainee - before update {"trainee_id":2,"current_data":{"first_name":"Ahmed","last_name":"Gamal","email":"ahmedGamal@gmail.com","phone":"151211111111","id_number":"516121322","status":"active"},"update_data":{"first_name":"Ahmed","last_name":"Gamal","email":"ahmedGamal@gmail.com","phone":"151211111111","nationality":"Saudi Arabian","id_number":"516121322","status":"active","id_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/id_images/69oxvuoGVOuYZ5TGvkuxmWbvN6JIEdvVLcRamwIB.pdf","card_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg"}} 
[2026-05-04 22:51:25] production.DEBUG: Updating trainee - after update {"trainee_id":2,"update_result":true,"updated_data":{"id_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/id_images/69oxvuoGVOuYZ5TGvkuxmWbvN6JIEdvVLcRamwIB.pdf","card_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","updated_at":"2026-05-04 22:51:25"}} 
[2026-05-04 22:51:37] production.DEBUG: Updating trainee - data collection {"trainee_id":1,"update_data":{"first_name":"Mohamed","last_name":"Ahmed","email":"mohamedahmed@gmail.com","phone":"11111111111","nationality":"Bahraini","id_number":"1111111225","status":"active"},"request_all":{"first_name":"Mohamed","last_name":"Ahmed","email":"mohamedahmed@gmail.com","phone":"11111111111","nationality":"Bahraini","id_number":"1111111225","status":"active","enrolled_classes":["1"],"_method":"PUT","id_image":{"Illuminate\\Http\\UploadedFile":"/tmp/phppLkYD1"},"card_image":{"Illuminate\\Http\\UploadedFile":"/tmp/phpZwg92k"}},"request_keys":["first_name","last_name","email","phone","nationality","id_number","status","enrolled_classes","_method","id_image","card_image"],"request_method":"PUT","content_type":"multipart/form-data; boundary=----WebKitFormBoundaryEu3CzMa3f0PSrZjx"} 
[2026-05-04 22:51:37] production.DEBUG: Updating trainee - before update {"trainee_id":1,"current_data":{"first_name":"Mohamed","last_name":"Ahmed","email":"mohamedahmed@gmail.com","phone":"11111111111","id_number":"1111111225","status":"active"},"update_data":{"first_name":"Mohamed","last_name":"Ahmed","email":"mohamedahmed@gmail.com","phone":"11111111111","nationality":"Bahraini","id_number":"1111111225","status":"active","id_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/id_images/TCxiAIMTRZVI2a8hcVXgng3txBld0pS9heZQUTM2.pdf","card_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"}} 
[2026-05-04 22:51:37] production.DEBUG: Updating trainee - after update {"trainee_id":1,"update_result":true,"updated_data":{"id_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/id_images/TCxiAIMTRZVI2a8hcVXgng3txBld0pS9heZQUTM2.pdf","card_image_url":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","updated_at":"2026-05-04 22:51:37"}} 
[2026-05-04 22:51:55] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-IKCMIPWZRJ&size=200x200&format=png"} 
[2026-05-04 22:51:55] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-IKCMIPWZRJ&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-IKCMIPWZRJ&size=200x200&format=png","mime":"image/png","bytes":516} 
[2026-05-04 22:51:55] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"} 
[2026-05-04 22:51:55] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","mime":"image/jpeg","bytes":99808} 
[2026-05-04 22:51:55] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-IKCMIPWZRJ"} 
[2026-05-04 22:51:55] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:51:55] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:51:55] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:51:55] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:51:55] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:51:55] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:52:17] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-8AVS9AWLNY&size=200x200&format=png"} 
[2026-05-04 22:52:17] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-8AVS9AWLNY&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-8AVS9AWLNY&size=200x200&format=png","mime":"image/png","bytes":513} 
[2026-05-04 22:52:17] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"} 
[2026-05-04 22:52:17] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","mime":"image/jpeg","bytes":99808} 
[2026-05-04 22:52:17] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-8AVS9AWLNY"} 
[2026-05-04 22:52:17] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:52:17] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:52:17] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:52:17] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:52:17] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:52:17] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:54:40] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-I5ERZ2OKOI&size=200x200&format=png"} 
[2026-05-04 22:54:40] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-I5ERZ2OKOI&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-I5ERZ2OKOI&size=200x200&format=png","mime":"image/png","bytes":519} 
[2026-05-04 22:54:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"} 
[2026-05-04 22:54:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","mime":"image/jpeg","bytes":99808} 
[2026-05-04 22:54:40] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-I5ERZ2OKOI"} 
[2026-05-04 22:54:40] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png"} 
[2026-05-04 22:54:40] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/1/1776162335_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:54:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:54:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:54:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:54:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:59:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-BRVIQZ4BQI&size=200x200&format=png"} 
[2026-05-04 22:59:14] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-BRVIQZ4BQI&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-BRVIQZ4BQI&size=200x200&format=png","mime":"image/png","bytes":511} 
[2026-05-04 22:59:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"} 
[2026-05-04 22:59:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","mime":"image/jpeg","bytes":99808} 
[2026-05-04 22:59:14] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-BRVIQZ4BQI"} 
[2026-05-04 22:59:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-04 22:59:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 22:59:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png"} 
[2026-05-04 22:59:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934868_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 22:59:14] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 22:59:14] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 23:04:09] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-JCZOAE1MOO&size=200x200&format=png"} 
[2026-05-04 23:04:10] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-JCZOAE1MOO&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-JCZOAE1MOO&size=200x200&format=png","mime":"image/png","bytes":522} 
[2026-05-04 23:04:10] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg"} 
[2026-05-04 23:04:10] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","mime":"image/jpeg","bytes":96150} 
[2026-05-04 23:04:10] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-JCZOAE1MOO"} 
[2026-05-04 23:04:10] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-04 23:04:10] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 23:04:10] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg"} 
[2026-05-04 23:04:10] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","mime":"image/jpeg","bytes":12946} 
[2026-05-04 23:04:10] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png"} 
[2026-05-04 23:04:10] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777934875_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 23:07:15] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ABXTVUV96I&size=200x200&format=png"} 
[2026-05-04 23:07:15] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ABXTVUV96I&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ABXTVUV96I&size=200x200&format=png","mime":"image/png","bytes":514} 
[2026-05-04 23:07:15] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg"} 
[2026-05-04 23:07:15] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/APEyaN7Zqe44JhtR2lhFllEnMPEPYF0rBdod2xIr.jpg","mime":"image/jpeg","bytes":99808} 
[2026-05-04 23:07:15] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-ABXTVUV96I"} 
[2026-05-04 23:07:15] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-04 23:07:15] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 23:07:15] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg"} 
[2026-05-04 23:07:15] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","mime":"image/jpeg","bytes":12946} 
[2026-05-04 23:07:15] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935887_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935887_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935887_1_card_background.png"} 
[2026-05-04 23:07:15] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935887_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935887_1_card_background.png","mime":"image/png","bytes":91320} 
[2026-05-04 23:09:51] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-RW0LPYQEE5&size=200x200&format=png"} 
[2026-05-04 23:09:51] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-RW0LPYQEE5&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-RW0LPYQEE5&size=200x200&format=png","mime":"image/png","bytes":517} 
[2026-05-04 23:09:51] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg"} 
[2026-05-04 23:09:51] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/qrSJVi8Eb4KirJYXEKFbkXMoFBsMb37NWYkDIYBY.jpg","mime":"image/jpeg","bytes":96150} 
[2026-05-04 23:09:51] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-RW0LPYQEE5"} 
[2026-05-04 23:09:51] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-04 23:09:51] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-04 23:09:51] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg"} 
[2026-05-04 23:09:51] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777935824_1_card_background.jpg","mime":"image/jpeg","bytes":12946} 
[2026-05-04 23:09:51] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png"} 
[2026-05-04 23:09:51] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-04 23:11:20] production.INFO: Certificate download attempt {"certificate_id":"1","original_url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf"} 
[2026-05-04 23:11:20] production.WARNING: Certificate file not found {"certificate_id":"1","url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","cert_dir":"certificates/3","available_files":[]} 
[2026-05-04 23:11:23] production.INFO: Certificate download attempt {"certificate_id":"2","original_url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf"} 
[2026-05-04 23:11:23] production.WARNING: Certificate file not found {"certificate_id":"2","url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","cert_dir":"certificates/3","available_files":[]} 
[2026-05-04 23:11:28] production.INFO: Certificate download attempt {"certificate_id":"13","original_url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf"} 
[2026-05-04 23:11:28] production.WARNING: Certificate file not found {"certificate_id":"13","url":"http://dev.bomeqp.com/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","url_path":"/api/storage/certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","parsed_path":"certificates/3/kl12AZlosY1btipFPFBQWcUAxfuS8UdghyivmzAL.pdf","cert_dir":"certificates/3","available_files":[]} 
[2026-05-04 23:14:46] production.INFO: Certificate download attempt {"certificate_id":"131","original_url":"http://dev.bomeqp.com/api/storage/certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf","url_path":"/api/storage/certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf","parsed_path":"certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf"} 
[2026-05-04 23:17:59] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1777936679_1_8jIOewXBQK_2.pdf"} 
[2026-05-04 23:17:59] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1777936679_1_nZ1w5H4DpF_2.pdf"} 
[2026-05-04 23:17:59] production.INFO: Instructor credentials email sent successfully {"email":"fady22malak@gmail.com","instructor_name":"Mostafa Moman"} 
[2026-05-04 23:18:11] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":2,"resolved_instructor_id":2,"training_center_id":1,"acc_id":1} 
[2026-05-04 23:18:11] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":2,"training_center_id":1,"acc_id":1} 
[2026-05-04 23:19:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-SDZCKAKEGI&size=200x200&format=png"} 
[2026-05-04 23:19:14] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-SDZCKAKEGI&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-SDZCKAKEGI&size=200x200&format=png","mime":"image/png","bytes":517} 
[2026-05-04 23:19:14] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-SDZCKAKEGI"} 
[2026-05-04 23:19:14] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/3/1777843769_3_background.png"} 
[2026-05-04 23:19:14] production.WARNING: toDataUri: HTTP fetch failed {"fetch_url":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/3/1777843769_3_background.png"} 
[2026-05-04 23:19:14] production.WARNING: toDataUri: could not convert image {"source":"https://app.bomeqp.com/laravel/storage/app/public/certificate-templates/3/1777843769_3_background.png","local_path":null,"storage_url":"http://dev.bomeqp.com/storage/app/public/","app_url":"http://dev.bomeqp.com"} 
[2026-05-04 23:19:14] production.INFO: Single instructor certificate email sent {"instructor_id":2,"email":"fady22malak@gmail.com","courses_count":1387,"courses":{"0":"Advanced Rigging","1":"Signaller & Slinger","2":"Hydrometric Cableway Inspection","3":"Inspection & Maintenance of Wire Rope Hoists","4":"Inspection & Maintenance of Material Lifts","5":"Inspection & Maintenance of Grabs and Vacuum Lifters","6":"Mobile Crane Examination [MCE]","7":"Powered Overhead Travelling Crane (Operation & Slinging)","8":"Electric Overhead Travelling Crane (Operation and Slinging)","9":"Appointed Person - Cranes","10":"Appointed Person for Lifting Operations","11":"Banksman / Lifting and Slinging","12":"Banksman Slinger and Load Handler","13":"Banksman - Offshore","14":"Banksman and Slinger Level 1","15":"Banksman and Slinger Level 2","16":"Lifting Gear Inspection (Pre/ Post Use)","17":"Management of Lifting and Slinging","18":"Management of Lifting Operations","19":"Safe Use of Lifting Magnets","20":"Inspection & Maintenance of Material Moving Equipment","21":"Wire Rope Inspection","22":"Wire Rope Product Safety and Installation","23":"Wire Rope Socketing","24":"Basic Overhead Crane Operation and Slinging Safety","25":"Advanced Overhead Crane Operation and Slinging Safety","26":"Crane Supervisor","27":"Competent Person Lifting Operations (Offshore)","28":"Container Inspection","29":"Forklift Truck Operator","30":"Offshore Crane Inspection","31":"Offshore Crane Instructor","32":"Cargo Carrying Unit CCU Inspection","33":"Crane Rope Examiner","34":"Rigging & Lifting - Level 2","35":"Offshore Crane Operator","36":"Mobile Crane Operator","37":"Inspection & Maintenance of Hydraulics","38":"Inspection & Maintenance of Chain Hoists","39":"Inspection & Maintenance of Lifting Accessories","40":"Inspection & Maintenance of Lifting Beams, Spreaders & Gantries","41":"Lifting Supervisor","42":"Vertical Lift Online","43":"Scissor Lift","44":"Rough Terrain Crane","45":"Rigger and Signal Person (Advanced)","46":"Rigger and Signal Person (Intermediate)","47":"Rigger and Signal Person (Basic)","48":"Power Industrial Truck (PIT)","49":"Construction Safety Management Program","50":"Advanced Safety Harness Systems","51":"Health and Safety Management with Contractors","52":"First Aid Construction Safety","53":"Site-Specific Safety Planning","54":"Health and Safety Construction Program","55":"Site Management Safety Training Scheme","56":"Fall Protection, Working at Height, and Rescue at Height","57":"Fall Protection and Working at Height","58":"Overhead Crane Technician","59":"Field Leadership Skills","60":"Fundamentals of Slings and Rigging Equipment","61":"Tower Crane Safety and Inspection","62":"Boom Truck Operator","63":"Level 2 Overhead Crane Technician","64":"Level 3 Overhead Crane Technician","65":"Certified Mobile Crane Operator","66":"Lifting Equipment Inspection","67":"Mangement of Lifting Operations","68":"Appointed Person Training Course","69":"Slinger and Signaller Training Course","70":"Dropped Objects Prevention","71":"Dropped Objects Awareness","72":"Advanced Rope Access","73":"Level 3 Rope Access Technician","74":"Level 2 Rope Access Technician","75":"Level 1 Rope Access Technician","76":"Vacuum Robot Course","77":"Counterbalanced Floor Crane","78":"Counterbalance Lifting Beam","79":"Master Rigger","80":"Lifting Operations and Lifting Equipment Regulations (LOLER)","81":"Rigging Loft Controller","82":"Safe Use of Lifting Equipment","83":"Working at Height Awareness","84":"Offshore Crane Operator Stage 3 Competence Assessment","85":"Offshore Crane Operator Stage 2 Competence Assessment","86":"Offshore Crane Operator Stage 1 Competence Assessment","87":"Offshore Crane Operator Stage 3","88":"Offshore Crane Operator Stage 2","89":"Offshore Crane Operator Stage 1","90":"Lorry Mounted Crane Operator","91":"Safe Crane Operation","92":"Mobile Elevating Work Platform (MEWP) Advanced","93":"Crane and Lift Supervisor","94":"Lifting Equipment Appreciation","95":"Appointed PICOLO","96":"Cherry Picker Forklift","97":"Site Supervisors Training Program","98":"Lifting and Slinging Standards Worldwide","99":"Man - Elevated Platform","100":"Rigger 1","101":"Rigger 2","102":"Rigger 3","103":"Advanced Rigger","104":"Lifting Accessories Course (LAC)","105":"Manual Lifting Machines (MLM)","106":"Powered Lifting Machines (PLM)","107":"Supporting Structures (SUP)","108":"Bridge and Gantry Cranes (BGC)","109":"Offshore Container Examination [OCE]","110":"Safety Harness Systems","111":"Mobile Elevating Work Platform (MEWP)","112":"Banksman & Slinger","113":"Stairway and Ladder Safety","114":"Hospital Safety","115":"Hotel Safety","116":"Home Safety","117":"Heat and Cold Stress Safety","118":"Heavy Equipment Safety","119":"Hand and Power Tool Safety","120":"Construction Safety and Health","121":"Flagman Safety","122":"Mining Safety and Health","123":"Compressed Gas Safety","124":"Ergonomics in the Office","125":"Health and Safety Management Systems","126":"Stop Work Authority Awareness","127":"Chemical Handling and Spill Response","128":"Power Tong Safety and Operations","129":"Supply Chain and Logistics Management","130":"Rope Access","131":"Handling of Dangerous goods for HEMS","132":"Helideck Landing Officer","133":"Safe Moving and Handling","134":"CCTV Operations and Safety","135":"Machine Safeguarding","136":"Site Forward Controllers (SFC)","137":"Site Incident Controller (SIC)","138":"Site Main Controller (SMC)","139":"Industrial Fire Brigade Incident Commander (IFBIC)","140":"Process Safety Management for General Industry","141":"Process Safety Management for Construction","142":"HAZOP Leader","143":"Bloodborne Pathogens Awareness","144":"Workplace Hygiene and Illness Prevention","145":"Acute Illness Management (AIT)","146":"Warehouse Safety","147":"Hazard Identification and Risk Assessment","148":"Arc Flash Awareness","149":"Arc Flash Prevention","150":"Electrical Safety Awareness","151":"Overhead Electric Utilities","152":"Workplace Violence and Haressment Prevention","153":"HSE Management and Risk Assessment","154":"Confined Space Entry","155":"Root Cause Analysis","156":"Confined Space Safety and Rescue","157":"H2S Safety Level 2","158":"Certified Machinery Safety Expert","159":"Slips, Trips, and Falls","160":"Crisis Management & Emergency Response","161":"Healthcare Safety","162":"Ergonomic Hazards","163":"Excavation Safety","164":"Confined Space Rescue","165":"Hazardous Substances and Industrial Hygiene","166":"Ionizing and Non-Ionizing Radiation Safety","167":"Lead Awareness","168":"Basic Firefighting","169":"Ergonomics in the Workplace","170":"Chemical Hazard Awareness Program","171":"Basic Workplace Safety Orientation for Construction","172":"Basic Workplace Safety Orientation","173":"Fall Protection and Working at Height","174":"Working at Height and Rescue at Height","175":"Rig Safety Orientation Onshore and Offshore","176":"Rig Inspection","177":"Rigpass Onshore and Offshore Safety","178":"Rig Acceptance and Safety Inspection","179":"STOP Work Authority Program","180":"Asbestos Awareness","181":"HAZOP PHA Leader","182":"HazMat (Hazardous Materials)","183":"HAZCOM (Hazard Communication)","184":"Hazard Recognition","185":"Defensive Driving (LTV, HTV, & Desert)","186":"Defensive Driving  Awareness","187":"Mobile Elevating Work Platform","188":"Respiratory Protection","189":"LOLER Awareness","190":"Crane, Rigging & Lifting Safety","191":"Crane Operator Safety Course","192":"Rigging, Slinging and Lifting","193":"Materials Handling and Storage Safety","194":"Banksman Safety","195":"Drug and Alochol Awareness","196":"Health Hazards in Construction","197":"Spill Prevention","198":"Scaffolding Safety, Erection,Dismantling and Inspection","199":"Permit to Work","200":"Wilderness First Aid","201":"Process Safety Management","202":"Emergency Medical Responder","203":"Hand Finger Injury Prevention","204":"Safety and Health Programs","205":"Explosives in the Workplace","206":"Safety Supervision and Leadership","207":"Safe Cargo Handling Practices","208":"Forklift Operator","209":"Forklift Safety","210":"Fire Protection and Prevention","211":"Fire Fighting","212":"Emergency Response Plan","213":"Emergency Response Awarness","214":"Manual Handling","215":"Electrical Safety","216":"Welding Safety","217":"Air Hoist Operator","218":"Control of Substances Hazardous to Health (COSHH)","219":"Health and Safety at Work","220":"Dropped Object Prevention","221":"Construction Safety and Health Train-the Trainer","222":"Safe Loading and Unloading","223":"Safe Welding, Cutting and Brazing","224":"Safety Leadership","225":"Process Safety","226":"Accident Investigation and Root Cause Analysis","227":"HAZOP","228":"Overhead Crane Operator","229":"Man Riding Operation","230":"Personal Protective Equipment (PPE)","231":"Flowline Restraint System (FSR) Safety","232":"HAZWOPER","233":"Job Safety Analysis","234":"H2S and SCBA","235":"Confined Space Entry & Inspection","236":"Health and Safety Trainer (EHS Trainer)","237":"Scaffolding Trainer /Instructor","238":"Process Safety Management for Oil and Gas","239":"Laboratory Safety","240":"Industrial Safety","241":"General Industry Safety & Health Standard","242":"Chemical Safety and Hazard","243":"Travel Safety","244":"Workshop and Warehouse Safety","245":"Confined Space","246":"Advanced First Aid, CPR and AED","247":"Working and Managing Safely","248":"Emergency Medical Response","249":"Advanced Cardiovascular Life Support (ACLS)","250":"Pediatric Advanced Life Support (PALS)","251":"Basic Life Support (BLS)","252":"School Safety","253":"Pharmacy Safety","254":"Defensive Driving Training (Quester Truck)","255":"Tap Root Advanced Root Cause Analysis","256":"Rig HSE Coach","257":"Sexual and reproductive health in the workplace","258":"Clinical Documentation Improvement (CDI) for Health Information Management (HMI)","259":"Mastering Clinical Coding: Precision, Compliance, and Emerging Trends","260":"Medical Laboratory Quality Management, Assurance, and Control","261":"Introduction to Health Information Management","262":"Medical Laboratories (Microbiology, Hematology, and Biochemistry)","263":"Foundations of Telehealth","264":"Medical Insurance Management","265":"Healthcare Management and Operations","266":"Healthcare Fiancial and Accounting Management Skills","267":"Advanced Health Information and System Management","268":"Leading Healthcare Quality and Safety","269":"Autism and Asperger's Awareness","270":"Basic Clinical Observations Training Level 1","271":"Basic Clinical Observations Training Level 2","272":"Basic Clinical Observations Training Level 3","273":"Blood Component Tranfusion Training","274":"The Care Certificate Training","275":"Transforming the Patient Experience","276":"Stoma Care Awareness Training","277":"Catheter Care Training","278":"Safegurarding Vulnerable Adults Level 3","279":"Latex Allergy","280":"The Oxford Healthcare Leadership","281":"Nutrition Management for Healthcare Organisations","282":"Rehabilitation Centers Management","283":"Functional Medicine in Clinical Practice Safety (FMCPS)","284":"Healthcare Strategy and Innovation","285":"Professional Diploma in Management of Clinics and Medical Centers","286":"Chaperoning for Healthcare Professionals Training","287":"Community Pharmacy Management","288":"Patient Affairs Management","289":"Healthcare Procurement and Supply Chain Management","290":"Strategic Healthcare Management","291":"Communication Training","292":"Complaint and Conflict Resolution Training","293":"PR & Communication for Hospitals","294":"Consent Awareness Training","295":"Advanced Healthcare Communication","296":"Hosptial Management and Adminstration","297":"Professional Diploma in Strategic Transformational Leadership in Healthcare","298":"Professional Diploma in Management of Healthcare","299":"Continence Care Training","300":"Counter Fraud in NHS Training (UK)","301":"Customer Services Awareness Training","302":"Glutaraldehyde Safety","303":"Hazardous Chemicals in Healthcare","304":"Hosptials Marketing Management","305":"Healthcare Human Resources Management","306":"Decontamination and Infection Control for Dentists and Dental Health Professionals Training","307":"Hosptials and Health Facilties Management","308":"Advanced Healthcare Safety Management Systems","309":"Laboratory Safety Management","310":"Medication Therapy Management","311":"Your Healthcare Career - Online Training Course","312":"Dementia Awareness Training","313":"Diabetes Awareness Training","314":"Domiciliary Care Refersher Training","315":"Duty of Care Training","316":"COSHH (Control Substances Hazardous to Health Regulation)","317":"End of Life and Pallitive Care Training","318":"Epilepsy Awareness Training","319":"Equality, Diversity, and Inclusion Training","320":"Food Safety and Hygiene Training (Including Fluids, Nutrition, Dysphagia, and Oral Care)","321":"Immediate Life Support (ILS) Training Level 3","322":"Infection Control and Standard Precautions","323":"Legionella Awareness Training","324":"Medication Awareness and Record Keeping Training for Care Workers","325":"Medication Awareness Training for Nurses Working in Mental Health","326":"Medication Awareness, Adminstration and Dosage Calculation: Introductory Level for Nurses","327":"Mental Health and Learning Disability Awareness Training","328":"Privacy and Dignity Training","329":"Safeguarding Children and Young Adults Training Level 1","330":"Safeguarding Children and Young Adults Training Level 2","331":"Safeguarding Children and Young Adults Training Level 3","332":"Safegurarding Vulnerable Adults Level 1","333":"Safegurarding Vulnerable Adults Level 2","334":"Blood Borne Pathogens Safety","335":"Emergency Room Safety","336":"Surgical Ward Safety","337":"Preventing MSDs in Healthcare","338":"Sonography Safety","339":"HIPAA","340":"Slip, Trips, and Falls in Healthcare","341":"Ergonomic Injuries in Healthcare: Awareness and Controls","342":"Dental Office Safety","343":"Healthcare Asbestos Safety","344":"Healthcare Radiation Safety","345":"Ethylene Oxide Safety","346":"Sharps Safety","347":"Introduction to Hospital Hazards","348":"Electrical Safety in Healthcare","349":"Healthcare Workplace Stress and Violence","350":"Biological Hazards in Healthcare","351":"Healthcare Fire Safety","352":"Mercury Safety","353":"Medical Terminology Course","354":"Total Parenteral Nutrition Course (TPN)","355":"Tissue Visbility Training Course","356":"Team Leader in a Care Setting Training","357":"Syringe Pump Awareness Training","358":"Substance Misuse Training","359":"Babysitting Basics","360":"First AID","361":"Intermediate First Aid","362":"Cardiopulmonary Resuscitation, Defibrillation, and Anaphylaxis","363":"Basic First Aid","364":"First AID-CPR AED Level-2","365":"Offshore Advanced First Aid","366":"Heartsaver First Aid CPR AED","367":"Pediatric First Aid, CPR, and AED","368":"First Aid for Mental Health","369":"Anaphylaxis Awareness Training","370":"Mental Health and Wellness for the Workplace","371":"Psychological First Aid","372":"Use and Administration of Epinephrine Auto-Injectors","373":"AVERT - Active Shooter Response Training","374":"Emergency Use of Medical Oxygen","375":"Coaching the Emergency Vehicle Operator (CEVO)","376":"Basic Life Support: Healthcare and Professional Rescuers","377":"Level 2 Award in Basic Life Support and Safe Use of an AED","378":"Level 6 Award in Emergency First Aid at Work","379":"Level 3 Award in Emergency First Aid at Work","380":"Level 3 Award in Paediatric First Aid","381":"Level 3 Award in Emergency Paediatric First Aid","382":"Emergency First Aid at Home","383":"Emergency First Aid at Construction Sites","384":"Advanced First Aid","385":"Emergency First Aid at Work","386":"Pets First Aid and Disaster Response","387":"Basic Life Support for the Healthcare Provider","388":"BloodBorne and Airborne Pathogens","389":"First Aid for Immediate Medical Emergencies","390":"First Aid Training for Expectant Mothers","391":"First Aid Awareness Training for Children","392":"First Aid Awareness Training for Teenagers/Young Adults","393":"First Aid Awareness Training","394":"Offshore Medical First Aid","395":"Elementary First Aid","396":"Medical First Aid","397":"Medical Care","398":"Red Cross European Certified First Aid","399":"Standard First Aid, CPR, and AED","400":"First Aid for Severe Trauma [FAST]","401":"Advanced Childcare Training","402":"Adult, Child, and Baby First Aid/CPR/AED","403":"Cat and Dog First Aid","404":"First Aid for Severe Bleeding","405":"First Aid for Opioid Overdoses","406":"Heartsaver Pediatric First Aid CPR AED","407":"BloodBorne Pathogens","408":"Advanced Stroke Life Support (ASLS)","409":"Basic Life Support(BLS)","410":"Advanced Cardiovascular Life Support (ACLS)","411":"PEARS","412":"Adult First Aid/CPR/AED","413":"Construction Management System","414":"Planned Preventative Maintenance for Scaffolds","415":"Mobile Elevated Working Platform (MEWP) Scaffold Safety","416":"Basic Scaffolding Erection","417":"Fall Protection Awareness and Control Measures","418":"Fall Protection and Rescue at Height","419":"Scaffolding Erection Calculations","420":"Scaffold Tagging Systems Awareness","421":"Scaffolding for Construction","422":"Scaffolding for General Industry","423":"Suspended Scaffolding","424":"Scaffolding Erection and Components","425":"Working at Height Hazards and Controls","426":"Licence to Erect, Alter and Dismantle Scaffolding - Basic Level","427":"Licence to Erect, Alter and Dismantle Scaffolding - Intermediate Level","428":"Licence to Erect, Alter and Dismantle Scaffolding - Advanced Level","429":"Intermediate Scaffolding Erection","430":"Advanced Scaffolding Erection","431":"Basic Access System Erector","432":"Permit to Work for Scaffolding","433":"Advanced Scaffolding","434":"Intermediate Scaffolding","435":"Basic Scaffolding","436":"Scaffolding Safety Awareness","437":"Safe Scaffold Inspection and Erection","438":"Basic Scaffolding Safety","439":"Scaffolding Tubing and Fitting","440":"Basic Scaffolding Inspection","441":"Intermediate Scaffolding Inspection","442":"Advanced Scaffolding Inspection","443":"Scaffolding Supervisor","444":"Hazardous Waste Training","445":"Environmental Management System","446":"Environmental Safety Program","447":"Certified Industrial Hygienist Program","448":"Environmental Specialist Program","449":"Fundamentals of Industrial Hygiene Program","450":"Certified Environmental and Safety Compliance Officer Program","451":"Certified Hazardous Materials Manager Program","452":"Environmental Manager Program","453":"Environmental Health and Safety Professional Program","454":"Certified Professional Environmental Auditor Program","455":"Certified Environmental Specialist Training Program","456":"Environmental, Health, and Safety Management System","457":"Occupational Environmental, Health, and Safety Concepts","458":"Environmental and Occupational Health Certificate Program","459":"Spill Prevention Training","460":"Spill Response Training","461":"Spill Prevention and Response Training","462":"Emergency Response Plan Training","463":"Hazardous Waste Operations and Emergency Response (HAZWOPER) Training","464":"Environmental Management System Program","465":"HAZMAT Specialist","466":"HAZOP Leader","467":"Process Hazard Analysis and HAZOP (PHA-HAZOP)","468":"Certified Environmental Compliance Manager Program","469":"Certified Environmental Manager (CEM) Program","470":"Risk Management and Risk Assessment","471":"Safety Culture Awareness","472":"Qualified Quality Management Systems","473":"Accident Investigation - Basic","474":"Accident Investigation - Intermediate","475":"Accident Investigation - Advanced","476":"Accident Investigation and Root Cause Analysis - Basic","477":"Accident Investigation and Root Cause Analysis - Intermediate","478":"Accident Investigation and Root Cause Analysis - Advanced","479":"Behaviour Based Safety","480":"Safety Leadership","481":"Risk Management, Job Hazard Analysis","482":"Fire Safety and Risk Managemen","483":"Human Behavior in the Workplace","484":"Emergency Response & Crisis Management","485":"Safe Traffic Management","486":"Health, Safety & Environment Management System","487":"Flood Risk Management","488":"Environmental management systems","489":"Environmental Management & Ethics","490":"Industrial Safety","491":"Construction Health & Safety Technician","492":"Construction Industry Safety and Health Training","493":"Risks and Hazards on Construction Sites","494":"Rigid Truck Operator","495":"Introduction to Construction Safety Management","496":"Health and Safety Management System for Construction","497":"Physical Health Hazards in Construction","498":"Biological Health Hazards in Construction","499":"Ergonomic Hazards in Construction","500":"Fall Protection in Construction","501":"Construction Worksite Safety","502":"Cranes and Derricks in Construction","503":"Construction Quality Control On-Site","504":"Working at Height, Fall Protection, and Rescue at Height","505":"Hazard Recognition","506":"STOP Work Authority","507":"Safety Signs Awareness","508":"Housekeeping Safety","509":"Vibration Hazards and Control Measures","510":"Hearing Conservation","511":"Office Safety","512":"Managing Workplace Stress","513":"Preventing Workplace Stress","514":"Preventing Workplace Violence","515":"Workplace Hygiene and Illness Prevention Program","516":"Risk Analysis and Assessment","517":"Risk Assessment and Control Measures","518":"Confined Space Emergency Rescue Course","519":"Incident Management Process","520":"HAZMAT Emergency in Industries","521":"Electrical Systems for Healthcare Facilities","522":"Medical Gas and Vaccum Systems","523":"Hazards Identification, Analysis & Control","524":"Hazardous Materials Disposals","525":"Certified Hazard Area Classification","526":"Working with Hazardous Substances","527":"Hazardous Materials Awareness & Emergency Spill Response","528":"Identify the Hazards and Implement Control Measures","529":"Introduction to Hazard Controls","530":"Introduction to Job Hazard Analysis (JHA)","531":"Chemical Hazard Analysis","532":"Chemical Risk Assessment","533":"Hazard Communication","534":"Hazardous Materials","535":"SDS Awareness","536":"Chemical Handling and Storage","537":"Cleaning Chemicals Safety","538":"GHS (Globally Harmonised System)","539":"Combustible Dust Controls and Safeguards","540":"Hot Work Safety","541":"Foundations of Chemical Safety and Risk Management","542":"Spill Prevention","543":"Spill Control","544":"Spill Kits","545":"Asbestos Awareness","546":"Hydrogen Sulfide (H2S)","547":"Carbon Monoxide Awareness","548":"Control of Hazardous Substances to Health (COSHH)","549":"Confined Space Safety","550":"Confined Space Supervisor","551":"Working at Height and Fall Protection","552":"Scaffolding Basics","553":"Mobile Elevating Working Platform","554":"Ladder Safety","555":"Rooftop Safety","556":"Rigging and Lifting Level 1","557":"Rigging and Lifting Level 2","558":"Rigging and Lifting Level 3","559":"LOLER Awareness","560":"Lifting Accessories and Maintenane Awareness","561":"Electrical Safety and Lockout Tagout","562":"Lockout Tagout","563":"Electrical Safety Inspections","564":"Planned Preventative Maintenance","565":"Electrical Hazard Analysis","566":"Energised Work Risk Assessment","567":"Hand Finger Injury Prevention","568":"Gas Testing","569":"Power Tools Safety","570":"Guarding Machinery Emergency Stop Systems","571":"Earthing and Bonding","572":"Minor Electrical Work Safety","573":"Level 3 In-Service Inspection of Electrical Equipment","574":"Mechanical to Electrical Conversion","575":"Electrical Safety Management","576":"Electrical Safety for Technicians and Supervisors","577":"Laser Cutting Safety","578":"Working at Height Emergency Response Plan","579":"Emergency Response Plan for Natural Disasters","580":"Spill Emergency Response Plan","581":"First Aid Emergency Response Plan","582":"Crisis Management and Response","583":"Active Shooter Response and Prepardness","584":"Emergency Response to a Pandemic","585":"Adult First Aid/CPR/AED","586":"First Aid for Severe Bleeding","587":"Gas Testing Level 2","588":"Advanced Lithium Battery Safety Officer (BSO)","589":"Certified Maintenance Planner","590":"Gas Testing Level 1","591":"Authorized Gas Tester (AGT)","592":"Authorized Gas Tester Level 1 (AGT)","593":"Working at Height","594":"Authorized Gas Tester Level 2 (AGT L2)","595":"Fire Fighting Advanced","596":"Fire Protection Specialist","597":"Building Services and Fire Prevention Services","598":"Fire Plan Examiner","599":"Fire Marshall","600":"Fire Warden","601":"Fire Fighting Emergency Response Plan","602":"Fire Alarm Circuits","603":"Fire Alarm Basic","604":"Fire Extinguishers","605":"Fire Fighting Intermediate","606":"Fire Fighting Basic","607":"Fire Growth and Fire Prevention","608":"Fire Risk Assessment","609":"Fire Safety for Offices","610":"Fire Safety for Chemical Warehouses","611":"Fire Safety for Construction","612":"Fire Safety for Retail and Warehouses","613":"Fire Safety for Oil and Gas","614":"Fire Safety Awareness","615":"Fire Safety level 2","616":"Fire Fighting Professional","617":"Advanced Fire Fighting","618":"Advanced Fire Warden","619":"Fire Safety level 3","620":"Fire Warden for Care Homes","621":"Fire Warden for School","622":"Fire Warden for Hotels","623":"Fire Warden for Healthcare","624":"Fire Warden for Construction","625":"Fire Safety level 1","626":"Fire Safety for Electrical Equipment","627":"Passive Fire Protection Training","628":"Firefighting Prevention and Equipment on Board Ships","629":"Fire Safety for Managers","630":"Fire Safety for Supervisors","631":"Fire Safety for Employees","632":"Fire Technology, Fire Fighting, and Rescue","633":"Fire Team Commander","634":"Fire Protection System Testing and Inspection","635":"Fire Safety in Welding","636":"Fire Safety in Excavations","637":"Fire Emergency Response Plan","638":"Fire Safety in Confined Spaces","639":"Fire Safety and Permit to Work","640":"Fire Protection Representative","641":"Fire Protection Engineer/Technician","642":"Fire Protection Expert","643":"Water Based Systems: Finalization and Approval","644":"Water Based Systems Project Development","645":"Water Based Systems Layout and Design","646":"Fall Protection Fire Safety","647":"Fire Fighting, Fire Man","648":"Inspection, Testing, and Maintenance of Fire Alarm Systems","649":"Stationary Fire Pumps","650":"Fire Fighting System Design Plan Advanced","651":"Fire Fighting System Design Plan Intermediate","652":"Fire Fighting System Design Plan Basic","653":"Fire Sprinkler System Components","654":"Fire Sprinkler Installation","655":"Fire Protection and Life Safety Systems","656":"Water Based Fire Suppression Systems","657":"Fire Alarm Systems Inspector","658":"Fire Alarm Systems Awareness","659":"Certified Fire Inspector","660":"Water Based Systems Professional","661":"Safety and Security in Facility Management","662":"Project Feasbility Study Certificate","663":"Principal Designer of Risk Management","664":"Coporate Safety Management","665":"Site Safety Management","666":"Project Management and KPIs","667":"Result-Based Monitoring and Evaluation","668":"Project Cycle Management","669":"Process Safety HAZOP HAZID ENVID & OHID","670":"Planing and Organising Skills for Engineeers and Technicians","671":"Project Management for Oil and Gas Industry","672":"Project Management Fundamentals","673":"Risk Analysis for Project Safety Management","674":"Advanced Project Safety Management","675":"Communication and Skills Management","676":"Project Management Associate","677":"Project Management Consultant","678":"Project Management Approaches Program","679":"Certified Project Manager","680":"Project Management Basics","681":"Management and Leadership Skills for Engineers and Technicians","682":"Chemical/Process Safety Engineering","683":"Allergen Cross Contact Control","684":"Level 2 Award in Food Allergen Awareness and Control in Catering","685":"Level 2 Award in Healthy Food and Special Diets","686":"Level 1 Award in Food Safety in Catering","687":"Level 2 Award in Food Safety for Catering","688":"Level 3  Award in Food Safety for Catering","689":"Level 1 Award in Food Safety for Manufacturing","690":"Level 2 Award in Food Safety for Manufacturing","691":"Level 3 Award in Food Safety for Manufacturing","692":"Level 1 Award in Food Safety for Retail","693":"Level 2 Award in Food Safety for Retail","694":"Level 3 Award in Food Safety for Retail","695":"Level 1 Award in Food Safety for Catering","696":"Level 2 International Award in Food Safety at Sea","697":"Level 3 International Award in Food Safety at Sea","698":"HACCP for Warehousing and Distribution Operations","699":"HACCP for Manufacturing Food Packaging Materials","700":"Level 2 Award in HACCP for Food Manufacturing","701":"Level 2 Award in HACCP for Catering","702":"Level 3 International Award in HACCP for Catering","703":"HACCP Training for Processors","704":"Prerequisite Programs for Food Safety Systems","705":"Advanced HACCP: Verification and Validation","706":"HACCP Food Safety Leadership for Managers and Supervisors","707":"Level 3 Award in Food Allergen Management in Catering","708":"Level 4 International Award in Food Safety Management for Manufacturing","709":"Level 4 International Award in Managing Food Safety for Catering","710":"Level 3 International Award in Food Safety","711":"Food Safety Inspection Course for Catering","712":"Food Safety Inspection Course for Manufacturing","713":"Food Safety Inspection of Meat Products","714":"Food Safety Inspection of Egg Products","715":"Food Safety Practices at Home [Consumer Food Safety Training]","716":"Food Safety Product Labelling Awareness Training [Consumer Food Safety Training]","717":"Food Handler Basic Training","718":"Food Handler Intermediate Training","719":"Food Handler Advanced Training","720":"Food Safety Supervisor","721":"Food Safety Management System Auditor","722":"Food Safety for Warehousing and Distribution Training","723":"Food Safety for Plant Sanitation Training","724":"Food Safety Manager and Supervisor Masterclass","725":"Food Safety Allergen Awareness Masterclass","726":"Food Hygiene and Safety","727":"Food Safety Culture Training","728":"Food Safety for Vulunerable Groups","729":"Food Safety Awareness for Children","730":"Food Equipment Certification: Understanding Compliance for Design Success","731":"Basic Food Microbiology","732":"Food Safety and HACCP for Fresh Produce Producers","733":"Sanitary Design for Food Plants","734":"Certified IAOSH Nutritionist","735":"3m FT-10 and FT-30 Qualitative Fit Test Check","736":"The Science of Dietary Fibre and Digestive Health for Practice Nurses","737":"The Science of Dietary Fibre and Digestive Health for Pharmacists","738":"Sports Nutrition Intermediate","739":"Sports Nutrition Awareness (Basic Level)","740":"Nutrition in Pregnancy","741":"Nutrition for Geriatics","742":"Nutrition Awareness for Teenagers","743":"Nutrition Science","744":"Sports Nutrition Advanced","745":"Nutrition as Lifestyle Medicine for Brain Health and Performance","746":"The Science of Dietary Fibre and Digestive Health - for Midwives","747":"Healthy Eating for Type 2 Diabetes","748":"Catering for Health Online","749":"Healthy Eating for Hypertension","750":"Healthy Eating for Cholesterol","751":"Nutrition and Wellbeing","752":"Psychology and Nutrition","753":"Medical Nutrition Level 3","754":"Medical Nutrition Level 2","755":"Medical Nutrition Level 1","756":"Food Microbiology and Food Safety","757":"Food Toxicology","758":"Bioactive Compounds and Food Additives","759":"Diets, Genes, and Disease","760":"Health Coaching","761":"Foundational Skills in Nutrition Science","762":"Nutrition, Physical Activity, and Health Promotion","763":"Ship Security training for crew without Designated Security Duties","764":"Basic Sea Survival(BSS)","765":"Travel Safely by Boat (TSbB)","766":"Air Purity Test & Cyberchair","767":"Beach Lifeguard","768":"Ship Security training for crew with Designated Security Duties","769":"Ship Security Officer (SSO)","770":"On-board Assessor","771":"Crowd & Crisis Management","772":"Dangerous Goods by Air (DGA)","773":"Dangerous Goods by Sea (DGS)","774":"International Minimum Industry Safety Training(IMIST)","775":"Compressed Air - EBS - Initial Deployment (CA-EBS-ID)","776":"Offshore Emergency Helideck Team Member / Helideck Firefighting (OEHTM)","777":"Control Room Operator Emergency Response Assessment (CRO)","778":"Further Offshore Emergency Response Team Member(FOERTM)","779":"OIM Controlling Emergencies (OIMCE)","780":"Offshore Emergency Response Team Member (OERTM)","781":"Helicopter Load Master (HLM)","782":"Helicopter Landing Officer (HLO)","783":"Helideck Assistant (HDA)","784":"Air to Ground, Ground to Ground Radio Officer/Operator (AGGGRO)","785":"Helicopter Landing Team Member","786":"Offshore Fast Rescue Craft","787":"International Safety Management - Documentation & Implementation Level 2","788":"International Safety Management -Familiarization Level 1","789":"Implementation of International Maritime Dangerous Goods Code in Port Area","790":"Implementation of International Maritime Dangerous Goods (IMDG) Code on board Ships","791":"Shipboard Safety Officer","792":"Further Onshore Emergency Response (FOER)","793":"Well Site Preparation and Drilling Safety","794":"Oil and Gas Hazard Awareness","795":"Oil and Gas Safety Management","796":"Advanced Risk Analysis","797":"Incident Management / Investigation with (Root Cause Analysis)","798":"QHSE for Line Managers","799":"Emergency & Crisis Management in the Oil & Gas Sector","800":"Back Injury Prevention Program","801":"Workplace Health, Safety & Environment for Oil and Gas Industry","802":"Carbon Capture and Storage Safety - CCSS","803":"HSE Passport Training Program","804":"Process Safety Management for Offshore Oil and Gas","805":"Handling of Dangerous goods for HEMS","806":"Plant Manager/ Incident Commander Initial Response (PMIC-IR)","807":"Major Emergency Management - Initial Response  (MEMIR)","808":"Well Site Completion and Servicing Safety","809":"Basic Onshore Emergency Response (BOER)","810":"Escape Chute","811":"Compressed Air Emergency Breathing System (CA-EBS) Initial Deployment","812":"Oil & Gas Emergency Response & Rescue Vessels (ERRV)","813":"Oil & Gas Specialist Emergency Response","814":"Oil Spill Management Tier 3 - Large Spills","815":"Offshore Oil and Gas Safety","816":"Oil Spill Cleanup","817":"Oil and Gas Well Inspection","818":"Coal Mine Sampling Maintenance and Calibration","819":"Ground Control Hazards","820":"Mining Environmental Management","821":"Mining Machinery Safety","822":"Mine Emergency Response Plan","823":"Mine Explosion Prevention Plan","824":"Mine Hoist and Elevator Inspection","825":"Mine Rescue Awareness","826":"Mine Ventilation","827":"Noise Hazards, Regulation, and Control in the Mining Industry","828":"Slope and Shaft Sinking Safety","829":"Surface Facilities and Coal Preparation","830":"Tailings Dam and Waste Pile Inspection Metal/Nonmetal","831":"Underground Diseal Equipment Ventilation","832":"Ventilation Specialist","833":"Underground Mining Course","834":"Occupational Health and Safety for the Mining Industry","835":"Mining Material Handling Safety","836":"Managing Mining Safety","837":"Explosives Inspector","838":"Dynamite Planter","839":"Excavator and Backhoe Operator","840":"Mine Reclaimation","841":"Mining Project Evaluation","842":"Mining Methods and Equipment","843":"Industrial Hygiene Safety","844":"Industrial Hygiene Safety for Silica Dust and Noise","845":"Electrical Safety for Nonmetal/Metal Miners","846":"Accident Prevention Techniques for the Mining Industry","847":"Electrical Safety for Coal Miners","848":"Mine Accident Investigation and Record Keeping","849":"Electrical Hazards in Mining","850":"Mining Electrical Specialist","851":"Mine Construction, Maintenance, and Repairs Safety","852":"Ground Control and Mind Blasting","853":"Continuous Personal Dust Monitor","854":"Environmental Mining Supervisor","855":"Airborne Hazards Awareness","856":"Hazard Identification and Risk Assessment for Mining","857":"Atomospheric Monitoring Systems with Emphasis on Fire Protection","858":"Haulage Accident Prevention for the Mining Industry","859":"Blasting Area Awareness","860":"Introduction to Mining Safety","861":"Geology for Mining Engineers","862":"Construction Safety Management System Train the Trainer","863":"Safety Officer Train the Trainer","864":"Hazard Communication Train the Trainer","865":"Hand Finger Injury Prevention Train the Trainer","866":"Emergency Medical Responder Train the Trainer","867":"Advanced First Aid, CPR and AED Train the Trainer","868":"Basic First Aid, CPR and AED Train the Trainer","869":"Wilderness First Aid Train the Trainer","870":"Permit to Work Train the Trainer","871":"Scaffolding Safety, Erection,Dismantling and Inspection Train the Trainer","872":"Spill Prevention Train the Trainer","873":"Mobile Crane Operator Train the Trainer","874":"Offshore Crane Operator Train the Trainer","875":"Banksman Safety Train the Trainer","876":"Appointed Person for Lifting Operations Train the Trainer","877":"Wire Rope Safety, Installation and Inspection Train the Trainer","878":"Crane Operator Train the Trainer","879":"Crane, Rigging & Lifting Safety Train the Trainer","880":"LOLER Train the Trainer","881":"Respiratory Protection Train the Trainer","882":"Risk Assessment & Management Testing Train the Trainer","883":"Mobile Elevating Work Platform  Train the Trainer","884":"Defensive Driving Train the Trainer","885":"Defensive Driving (LTV, HTV, & Desert) Train the Trainer","886":"Hazard Recognition Train the Trainer","887":"Certified Professional Trainer","888":"Certified Online Trainer","889":"HSE Management and Risk Assessment Train the Trainer","890":"Incident Investigation and Reporting Train The Trainer","891":"Construction Safety Train the Trainer","892":"Physical Therapy Safety Train the Trainer","893":"Explosive Atmospheric Equipment Train theÂ Trainer","894":"Warehouse Safety Train the Trainer","895":"Acute Illness Management (AIT) Train the Trainer","896":"Radiology Safety Train the Trainer","897":"Safety Manager Train the Trainer","898":"HAZCOM Train the Trainer","899":"Hand and Power Tool Safety Train the Trainer","900":"Construction Safety and Health Train the Trainer","901":"Flagman Safety Train the Trainer","902":"Mining Safety and Health Train the Trainer","903":"Compressed Gas Safety Train the Trainer","904":"Nutrition safety and health Train the Trainer","905":"Health and Safety Management Systems Train the Trainer","906":"Stop Work Authority Awareness Train the Trainer","907":"Chemical Handling and Spill Response Train the Trainer","908":"Power Tong Safety and Operations Train the Trainer","909":"Supply Chain and Logistics Management Train the Trainer","910":"Rope Access Train the Trainer","911":"Hazard Identification and Risk Assessment Train the Trainer","912":"Train the Trainer for HSE Supervisors","913":"Supply Chain and Logistics Train the Trainer","914":"Project Management Train the Trainer","915":"Quality Management System Train the Trainer","916":"Food Safety Management System Train the Trainer","917":"Healthcare Management System Train the Trainer","918":"Safety Trainer Train the Trainer","919":"Auditing Train The Trainer","920":"Maritime First Aid Train the Trainer","921":"Maritime Personal Survival Techniques Train the Trainer","922":"Mental Health First Aid Train the Trainer","923":"Arc Flash Train the Trainer","924":"Maritime Walking and Working Surfaces Train the Trainer","925":"Maritime Man Overboard Train the Trainer","926":"Overhead Electric Utilities Train the Trainer","927":"Power Industrial Truck (PIT) Train the Trainer","928":"Rigger and Signal Person (Basic) Train the Trainer","929":"Rigger and Signal Person (Intermediate) Train the Trainer","930":"Rigger and Signal Person (Advanced) Train the Trainer","931":"Rough Terrian Crane Train the Trainer","932":"Scissor Lift Train the Trainer","933":"Vertical Lift Online Train the Trainer","934":"Workplace Violence and Haressment Prevention Train the Trainer","935":"HAZMAT Specialist Train the Trainer","936":"HazMat Train the Trainer","937":"HAZOP PHA Leader Train the Trainer","938":"Asbestos Train the Trainer","939":"STOP Work Authority Program Train the Trainer","940":"Rig Acceptance and Safety Inspection Train the Trainer","941":"Rigging, Slinging and Lifting Train the Trainer","942":"Safety Specialist Train the Trainer","943":"Fire Warden Train the Trainer","944":"Confined Space Entry & Inspection Train the Trainer","945":"OSH Train the Trainer","946":"Environmental Management System Train the Trainer","947":"Environmental Specialist Train the Trainer","948":"Process Safety Management for Oil and Gas Train the Trainer","949":"General Industry Safety & Health Standard Train the Trainer","950":"Chemical Safety and Hazard Train the Trainer","951":"Workshop and Warehouse Safety Train the Trainer","952":"Working and Managing Safely Train the Trainer","953":"Emergency Medical Response Train the Trainer","954":"Advanced Cardiovascular Life Support (ACLS) Train the Trainer","955":"Pediatric Advanced Life Support (PALS) Train the Trainer","956":"Basic Life Support (BLS) Train the Trainer","957":"Norm Safety Train the Trainer","958":"School Safety Train the Trainer","959":"Stairway and Ladder Safety Train the Trainer","960":"Pharmacy Safety Train the Trainer","961":"Hospital Safety Train the Trainer","962":"Hotel Safety Train the Trainer","963":"Home Safety Train the Trainer","964":"Heat and Cold Stress Safety Train the Trainer","965":"Heavy Equipment Safety Train the Trainer","966":"RIGPASS Onshore & Offshore  Train the Trainer","967":"Workplace Hygiene and Illness Prevention Program Management Train the Trainer","968":"H2S Master Trainer","969":"Rig Inspection Train the Trainer","970":"Advanced Fire Fighting Train the trainer","971":"Rig Safety Orientation Onshore and Offshore Train the Trainer","972":"Working at Height and Rescue Train the Trainer","973":"Handling of Dangerous goods for HEMS  Train the Trainer","974":"Helideck Landing Officer Train the Trainer","975":"Safe Moving and Handling Train the Trainer","976":"CCTV Operations and Safety Train the Trainer","977":"Machine Safeguarding Train the Trainer","978":"Excavation Safety Train the Trainer","979":"Ergonomic Hazards Train the Trainer","980":"Healthcare Safety Train the Trainer","981":"Crisis Management & Emergency Response Train the Trainer","982":"Site Forward Controllers (SFC) Train the Trainer","983":"Site Incident Controller (SIC) Train the Trainer","984":"Site Main Controller (SMC) Train the Trainer","985":"Industrial Fire Brigade Incident Commander (IFBIC) Train the Trainer","986":"Slips, Trips, and Falls Train the Trainer","987":"Process Safety Management for General Industry Train the Trainer","988":"Process Safety Management for Construction Train the Trainer","989":"HAZOP Leader Train the Trainer","990":"Bloodborne Pathogens Train the Trainer","991":"Bloodborne Pathogens Management Train the Trainer","992":"Safety Supervisor Train the Trainer","993":"Travel Safety Train the Trainer","994":"Fall Protection & Working at Height Train The Trainer","995":"Certified School Teacher Train The Trainer","996":"Oil and Gas Safety and Health Train the Trainer","997":"UK Certified Instructor","998":"Health Professional & Certified Safety Coach","999":"Ergonomics Office Trainer Certification","...":"Over 1000 items (1387 total), aborting normalization"}} 
[2026-05-04 23:19:14] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":2,"acc_id":1,"courses_count":1387} 
[2026-05-04 23:19:14] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":2,"approved_acc_count":1} 
[2026-05-04 23:23:00] production.INFO: Certificate download attempt {"certificate_id":"131","original_url":"http://dev.bomeqp.com/api/storage/certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf","url_path":"/api/storage/certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf","parsed_path":"certificates/1/rvWH04WrBJ0wZQIuL8BlPQ27MqHGdC7gTiBLhQWa.pdf"} 
[2026-05-04 23:29:34] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1777937374_1_gtF4Cp7BiM_1.pdf"} 
[2026-05-04 23:29:34] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1777937374_1_iO37NfTPiQ_2.pdf"} 
[2026-05-04 23:29:35] production.INFO: Instructor credentials email sent successfully {"email":"fady.malak221@gmail.com","instructor_name":"Fady Malak"} 
[2026-05-04 23:29:44] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":3,"resolved_instructor_id":3,"training_center_id":1,"acc_id":1} 
[2026-05-04 23:29:44] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":3,"training_center_id":1,"acc_id":1} 
[2026-05-04 23:30:34] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-J3JYBPSPPT&size=200x200&format=png"} 
[2026-05-04 23:30:34] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-J3JYBPSPPT&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-J3JYBPSPPT&size=200x200&format=png","mime":"image/png","bytes":508} 
[2026-05-04 23:30:34] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-J3JYBPSPPT"} 
[2026-05-04 23:30:34] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png"} 
[2026-05-04 23:30:34] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png","mime":"image/png","bytes":91320} 
[2026-05-04 23:30:35] production.INFO: Single instructor certificate email sent {"instructor_id":3,"email":"fady.malak221@gmail.com","acc_id":1} 
[2026-05-04 23:30:35] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":3,"acc_id":1} 
[2026-05-04 23:30:35] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":3,"approved_acc_count":1} 
[2026-05-06 09:55:25] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-Y5CLJ8HIUA&size=200x200&format=png"} 
[2026-05-06 09:55:26] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-Y5CLJ8HIUA&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-Y5CLJ8HIUA&size=200x200&format=png","mime":"image/png","bytes":520} 
[2026-05-06 09:55:26] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/VOnURpYRWcd7cXni4AsFLkwmNuOOMxPoKPJHLGAo.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/VOnURpYRWcd7cXni4AsFLkwmNuOOMxPoKPJHLGAo.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/VOnURpYRWcd7cXni4AsFLkwmNuOOMxPoKPJHLGAo.jpg"} 
[2026-05-06 09:55:26] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/VOnURpYRWcd7cXni4AsFLkwmNuOOMxPoKPJHLGAo.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/VOnURpYRWcd7cXni4AsFLkwmNuOOMxPoKPJHLGAo.jpg","mime":"image/jpeg","bytes":96150} 
[2026-05-06 09:55:26] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-Y5CLJ8HIUA"} 
[2026-05-06 09:55:26] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-06 09:55:26] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-06 09:55:26] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png"} 
[2026-05-06 09:55:26] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","mime":"image/png","bytes":193276} 
[2026-05-06 09:55:26] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png"} 
[2026-05-06 09:55:26] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-06 10:22:02] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-2UZHA4M1O7&size=200x200&format=png"} 
[2026-05-06 10:22:03] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-2UZHA4M1O7&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-2UZHA4M1O7&size=200x200&format=png","mime":"image/png","bytes":519} 
[2026-05-06 10:22:03] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/IE4LXFVHvNYfNvLGvPH8Nv6QNzXbitkGdf3ECxyZ.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/IE4LXFVHvNYfNvLGvPH8Nv6QNzXbitkGdf3ECxyZ.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/IE4LXFVHvNYfNvLGvPH8Nv6QNzXbitkGdf3ECxyZ.jpg"} 
[2026-05-06 10:22:03] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/IE4LXFVHvNYfNvLGvPH8Nv6QNzXbitkGdf3ECxyZ.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/IE4LXFVHvNYfNvLGvPH8Nv6QNzXbitkGdf3ECxyZ.jpg","mime":"image/jpeg","bytes":27643} 
[2026-05-06 10:22:03] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-2UZHA4M1O7"} 
[2026-05-06 10:22:03] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-06 10:22:03] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-06 10:22:03] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png"} 
[2026-05-06 10:22:03] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","mime":"image/png","bytes":193276} 
[2026-05-06 10:22:03] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png"} 
[2026-05-06 10:22:03] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-11 18:02:38] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-MFIBDLZEAD&size=200x200&format=png"} 
[2026-05-11 18:02:39] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-MFIBDLZEAD&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-MFIBDLZEAD&size=200x200&format=png","mime":"image/png","bytes":511} 
[2026-05-11 18:02:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/JP57T0FAIfjYnCAUZmFp5a2zmL6dZ1GpTk3cIfpi.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/JP57T0FAIfjYnCAUZmFp5a2zmL6dZ1GpTk3cIfpi.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/JP57T0FAIfjYnCAUZmFp5a2zmL6dZ1GpTk3cIfpi.jpg"} 
[2026-05-11 18:02:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/JP57T0FAIfjYnCAUZmFp5a2zmL6dZ1GpTk3cIfpi.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/JP57T0FAIfjYnCAUZmFp5a2zmL6dZ1GpTk3cIfpi.jpg","mime":"image/jpeg","bytes":364984} 
[2026-05-11 18:02:39] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-MFIBDLZEAD"} 
[2026-05-11 18:02:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-11 18:02:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-11 18:02:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png"} 
[2026-05-11 18:02:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","mime":"image/png","bytes":193276} 
[2026-05-11 18:02:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png"} 
[2026-05-11 18:02:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-11 18:03:24] production.INFO: Certificate download attempt {"certificate_id":"136","original_url":"http://dev.bomeqp.com/api/storage/certificates/1/4dCg5uGRB6EewLiKQcXqK93WirHjbrnMkKsX0yh2.pdf","url_path":"/api/storage/certificates/1/4dCg5uGRB6EewLiKQcXqK93WirHjbrnMkKsX0yh2.pdf","parsed_path":"certificates/1/4dCg5uGRB6EewLiKQcXqK93WirHjbrnMkKsX0yh2.pdf"} 
[2026-05-18 14:50:52] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779115852_1_e5aQuv4f3L_1.pdf"} 
[2026-05-18 14:50:52] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779115852_1_IK9LB9GE6s_1.pdf"} 
[2026-05-18 14:50:53] production.INFO: Instructor credentials email sent successfully {"email":"fadimalak.221@gmail.com","instructor_name":"Fady 2"} 
[2026-05-18 14:52:20] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":4,"resolved_instructor_id":4,"training_center_id":1,"acc_id":1} 
[2026-05-18 14:52:20] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":4,"training_center_id":1,"acc_id":1} 
[2026-05-18 14:53:32] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779116012_1_wwjvD6Afju_1.pdf"} 
[2026-05-18 14:53:32] production.INFO: training_center document uploaded successfully {"entity_id":1,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779116012_1_hKAKbmRdUT_1.pdf"} 
[2026-05-18 14:53:32] production.INFO: Instructor credentials email sent successfully {"email":"fadiimalak221@gmail.com","instructor_name":"fady malak3"} 
[2026-05-18 14:53:52] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":5,"resolved_instructor_id":5,"training_center_id":1,"acc_id":1} 
[2026-05-18 14:53:52] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":5,"training_center_id":1,"acc_id":1} 
[2026-05-18 14:56:13] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-HVSM6CKFFT&size=200x200&format=png"} 
[2026-05-18 14:56:13] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-HVSM6CKFFT&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-HVSM6CKFFT&size=200x200&format=png","mime":"image/png","bytes":507} 
[2026-05-18 14:56:13] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-HVSM6CKFFT"} 
[2026-05-18 14:56:13] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png"} 
[2026-05-18 14:56:13] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 14:56:14] production.INFO: Single instructor certificate email sent {"instructor_id":5,"email":"fadiimalak221@gmail.com","acc_id":1} 
[2026-05-18 14:56:14] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":5,"acc_id":1} 
[2026-05-18 14:56:14] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":5,"approved_acc_count":1} 
[2026-05-18 16:39:39] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ZKPO0IFUVM&size=200x200&format=png"} 
[2026-05-18 16:39:39] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ZKPO0IFUVM&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-ZKPO0IFUVM&size=200x200&format=png","mime":"image/png","bytes":512} 
[2026-05-18 16:39:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png"} 
[2026-05-18 16:39:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","mime":"image/png","bytes":109525} 
[2026-05-18 16:39:39] production.INFO: Certificate generation – verification_code present {"template_id":1,"verification_code":"VERIFY-ZKPO0IFUVM"} 
[2026-05-18 16:39:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png"} 
[2026-05-18 16:39:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/1777935540_1_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/1777935540_1_background.png","mime":"image/png","bytes":785838} 
[2026-05-18 16:39:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png"} 
[2026-05-18 16:39:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1778061009_1_card_background.png","mime":"image/png","bytes":193276} 
[2026-05-18 16:39:39] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png"} 
[2026-05-18 16:39:39] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/1/card/1777936061_1_card_background.png","mime":"image/png","bytes":1071522} 
[2026-05-18 16:48:21] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-DAXBYS5LF8&size=200x200&format=png"} 
[2026-05-18 16:48:21] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-DAXBYS5LF8&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-DAXBYS5LF8&size=200x200&format=png","mime":"image/png","bytes":513} 
[2026-05-18 16:48:21] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png"} 
[2026-05-18 16:48:21] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","path":"/home/devbomeqp/public_html/storage/app/public/trainees/1/card_images/O0SMurrxpyVHYg1WDDPfOQE7D1pbbZa50Oeq26xz.png","mime":"image/png","bytes":109525} 
[2026-05-18 16:48:21] production.INFO: Certificate generation – verification_code present {"template_id":4,"verification_code":"VERIFY-DAXBYS5LF8"} 
[2026-05-18 16:48:21] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/1779122839_4_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/1779122839_4_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/1779122839_4_background.png"} 
[2026-05-18 16:48:21] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/1779122839_4_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/1779122839_4_background.png","mime":"image/png","bytes":785838} 
[2026-05-18 17:03:32] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"registration_certificate","file_name":"1779123812_2_5DiirG9FKT_1.pdf"} 
[2026-05-18 17:03:32] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"floorplan","file_name":"1779123812_2_mAKvceYg2N_2.pdf"} 
[2026-05-18 17:06:29] production.WARNING: Certificate generation – verification_code missing {"template_id":5,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 17:06:29] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png"} 
[2026-05-18 17:06:29] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 17:06:30] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":3,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/5/QuSbyDVDsZtqMnwXUgjybGI13qxUzepWajdBB0Jv.pdf"} 
[2026-05-18 17:10:00] production.INFO: acc logo uploaded successfully {"entity_id":3,"entity_type":"acc","file_name":"1779124200_3_20251212_002747.jpg","logo_url":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 17:10:00] production.INFO: acc document uploaded successfully {"entity_id":3,"entity_type":"acc","document_type":"primary_contact_passport","file_name":"1779124200_3_WHxuqE56v9_2.pdf"} 
[2026-05-18 17:10:00] production.INFO: acc document uploaded successfully {"entity_id":3,"entity_type":"acc","document_type":"secondary_contact_passport","file_name":"1779124200_3_EVRdfgZ6BL_1.pdf"} 
[2026-05-18 17:10:00] production.ERROR: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 {"userId":4,"exception":"[object] (TypeError(code: 0): League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 at /home/devbomeqp/public_html/vendor/league/flysystem/src/Filesystem.php:46)
[stacktrace]
#0 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(218): League\\Flysystem\\Filesystem->has(NULL)
#1 /home/devbomeqp/public_html/app/Services/ACCProfileService.php(609): Illuminate\\Filesystem\\FilesystemAdapter->exists(NULL)
#2 /home/devbomeqp/public_html/app/Services/ACCProfileService.php(302): App\\Services\\ACCProfileService->deleteOldFiles(Array)
#3 /home/devbomeqp/public_html/app/Http/Controllers/API/ACC/ProfileController.php(364): App\\Services\\ACCProfileService->updateProfile(Object(Illuminate\\Http\\Request), Object(App\\Models\\ACC), Object(App\\Models\\User))
#4 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): App\\Http\\Controllers\\API\\ACC\\ProfileController->update(Object(Illuminate\\Http\\Request))
#5 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(265): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\API\\ACC\\ProfileController), 'update')
#6 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(211): Illuminate\\Routing\\Route->runController()
#7 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(822): Illuminate\\Routing\\Route->run()
#8 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#9 /home/devbomeqp/public_html/app/Http/Middleware/EnsureACCIsActive.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#10 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureACCIsActive->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#11 /home/devbomeqp/public_html/app/Http/Middleware/EnsureUserRole.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#12 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureUserRole->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'acc_admin', 'competency_admi...')
#13 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#14 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#15 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(63): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#16 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'sanctum')
#17 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#18 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#19 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#20 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#21 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#22 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#23 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#24 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#32 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#33 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#34 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#35 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#44 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#45 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#46 /home/devbomeqp/public_html/public/index.php(20): Illuminate\\Foundation\\Application->handleRequest(Object(Illuminate\\Http\\Request))
#47 {main}
"} 
[2026-05-18 17:22:23] production.INFO: training_center logo uploaded successfully {"entity_id":2,"entity_type":"training_center","file_name":"1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","logo_url":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 17:23:12] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 17:23:12] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 17:23:12] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 17:23:12] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 17:23:12] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 17:23:12] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 17:23:12] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 17:23:12] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 17:23:12] production.WARNING: Certificate generation – verification_code missing {"template_id":5,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","training_center_logo_url","acc_logo_url","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 17:23:12] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png"} 
[2026-05-18 17:23:12] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 17:23:14] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":3,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/5/FuvAt94J4eQiLmBaUREFcF9M2lqSpN2CMoms4qck.pdf"} 
[2026-05-18 19:05:35] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 19:05:35] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:05:35] production.WARNING: Certificate generation – verification_code missing {"template_id":5,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","acc_logo_url","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 19:05:35] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png"} 
[2026-05-18 19:05:35] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 19:05:36] production.INFO: Training center certificate generated and sent {"training_center_id":1,"acc_id":3,"email":"support@microsoft.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/5/0zM8zG8OQhPcjaMTqpNfpBsRBCMr19uFS050ipHf.pdf"} 
[2026-05-18 19:08:27] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:08:27] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:08:27] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 19:08:27] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:08:27] production.WARNING: Certificate generation – verification_code missing {"template_id":5,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","training_center_logo_url","acc_logo_url","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 19:08:27] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png"} 
[2026-05-18 19:08:27] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 19:08:29] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":3,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/5/1Ex8pnDtjAq4IDz8eA4HCii3TcM0UoXzg4mWeLyQ.pdf"} 
[2026-05-18 19:08:30] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:08:30] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:08:30] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg"} 
[2026-05-18 19:08:30] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/3/logo/1779124200_3_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:08:30] production.WARNING: Certificate generation – verification_code missing {"template_id":5,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","training_center_logo_url","acc_logo_url","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 19:08:30] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png"} 
[2026-05-18 19:08:30] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/5/1779123526_5_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/5/1779123526_5_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 19:08:31] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":3,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/5/9mGYLSchZ8DWPnEsUSkKpZSJBihP6f2YSk7p5NqZ.pdf"} 
[2026-05-18 19:17:27] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:17:27] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:17:27] production.WARNING: Certificate generation – verification_code missing {"template_id":2,"data_keys":["training_center_name","training_center_legal_name","training_center_email","training_center_country","training_center_city","training_center_registration_number","acc_name","acc_legal_name","acc_registration_number","acc_country","issue_date","issue_date_formatted","expiry_date","training_center_logo","acc_logo","training_center_logo_url","training_provider_name","expiry_date_formatted"]} 
[2026-05-18 19:17:27] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png"} 
[2026-05-18 19:17:27] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png","mime":"image/png","bytes":40537} 
[2026-05-18 19:17:29] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":1,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/2/I2vphktOFy1reVeJd5JxgUmfqXZ1J2vQjEat0D6g.pdf"} 
[2026-05-18 19:25:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:25:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:25:40] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-KJ5RZIRJ92&size=200x200&format=png"} 
[2026-05-18 19:25:40] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-KJ5RZIRJ92&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-KJ5RZIRJ92&size=200x200&format=png","mime":"image/png","bytes":513} 
[2026-05-18 19:25:40] production.INFO: Certificate generation – verification_code present {"template_id":2,"verification_code":"TP-KJ5RZIRJ92"} 
[2026-05-18 19:25:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png"} 
[2026-05-18 19:25:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png","mime":"image/png","bytes":40537} 
[2026-05-18 19:25:41] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":1,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/2/W4GsoaWseDUzVlR3cr2LO8akYDVkv5YF9XZBUKU2.pdf"} 
[2026-05-18 19:26:29] production.INFO: acc logo uploaded successfully {"entity_id":1,"entity_type":"acc","file_name":"1779132389_1_20251212_002747.jpg","logo_url":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:26:29] production.INFO: acc document uploaded successfully {"entity_id":1,"entity_type":"acc","document_type":"primary_contact_passport","file_name":"1779132389_1_1rK2B1yCqe_3.pdf"} 
[2026-05-18 19:26:29] production.INFO: acc document uploaded successfully {"entity_id":1,"entity_type":"acc","document_type":"secondary_contact_passport","file_name":"1779132389_1_v6zqYhNzvA_2.pdf"} 
[2026-05-18 19:26:29] production.INFO: acc document uploaded successfully {"entity_id":1,"entity_type":"acc","document_type":"registration_certificate","file_name":"1779132389_1_k5oFoOOft0_1.pdf"} 
[2026-05-18 19:26:29] production.ERROR: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 {"userId":2,"exception":"[object] (TypeError(code: 0): League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 at /home/devbomeqp/public_html/vendor/league/flysystem/src/Filesystem.php:46)
[stacktrace]
#0 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(218): League\\Flysystem\\Filesystem->has(NULL)
#1 /home/devbomeqp/public_html/app/Services/ACCProfileService.php(609): Illuminate\\Filesystem\\FilesystemAdapter->exists(NULL)
#2 /home/devbomeqp/public_html/app/Services/ACCProfileService.php(302): App\\Services\\ACCProfileService->deleteOldFiles(Array)
#3 /home/devbomeqp/public_html/app/Http/Controllers/API/ACC/ProfileController.php(364): App\\Services\\ACCProfileService->updateProfile(Object(Illuminate\\Http\\Request), Object(App\\Models\\ACC), Object(App\\Models\\User))
#4 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): App\\Http\\Controllers\\API\\ACC\\ProfileController->update(Object(Illuminate\\Http\\Request))
#5 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(265): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\API\\ACC\\ProfileController), 'update')
#6 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(211): Illuminate\\Routing\\Route->runController()
#7 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(822): Illuminate\\Routing\\Route->run()
#8 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#9 /home/devbomeqp/public_html/app/Http/Middleware/EnsureACCIsActive.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#10 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureACCIsActive->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#11 /home/devbomeqp/public_html/app/Http/Middleware/EnsureUserRole.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#12 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureUserRole->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'acc_admin', 'competency_admi...')
#13 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#14 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#15 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(63): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#16 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'sanctum')
#17 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#18 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#19 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#20 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#21 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#22 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#23 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#24 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#32 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#33 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#34 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#35 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#44 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#45 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#46 /home/devbomeqp/public_html/public/index.php(20): Illuminate\\Foundation\\Application->handleRequest(Object(Illuminate\\Http\\Request))
#47 {main}
"} 
[2026-05-18 19:27:35] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:27:35] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:27:40] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:27:40] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:29:37] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:29:37] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:31:19] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:31:19] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:32:58] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:32:58] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:36:28] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:36:28] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:38:07] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:38:07] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:38:07] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:38:07] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:38:07] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-JWIM0UNZBA&size=200x200&format=png"} 
[2026-05-18 19:38:08] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-JWIM0UNZBA&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-JWIM0UNZBA&size=200x200&format=png","mime":"image/png","bytes":518} 
[2026-05-18 19:38:08] production.INFO: Certificate generation – verification_code present {"template_id":2,"verification_code":"TP-JWIM0UNZBA"} 
[2026-05-18 19:38:08] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png"} 
[2026-05-18 19:38:08] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png","mime":"image/png","bytes":40537} 
[2026-05-18 19:38:09] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":1,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/2/EexEmzSXkY6Hxgythryl8siO0H0dzRLunZqhSUYn.pdf"} 
[2026-05-18 19:44:36] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:44:36] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:44:36] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:44:36] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:44:36] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-GPODVTPWE4&size=200x200&format=png"} 
[2026-05-18 19:44:36] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-GPODVTPWE4&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DTP-GPODVTPWE4&size=200x200&format=png","mime":"image/png","bytes":521} 
[2026-05-18 19:44:36] production.INFO: Certificate generation – verification_code present {"template_id":2,"verification_code":"TP-GPODVTPWE4"} 
[2026-05-18 19:44:36] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png"} 
[2026-05-18 19:44:36] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/2/1777936839_2_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/2/1777936839_2_background.png","mime":"image/png","bytes":40537} 
[2026-05-18 19:44:38] production.INFO: Training center certificate generated and sent {"training_center_id":2,"acc_id":1,"email":"monmonel4ba71130@gmail.com","pdf_path":"/home/devbomeqp/public_html/storage/app/public/certificates/2/zh8fuIOyJscfgPWVxlq1ipD6DyOYl8m7UJN9PsuO.pdf"} 
[2026-05-18 19:46:41] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779133601_2_E78ipdWRMj_1.pdf"} 
[2026-05-18 19:46:41] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779133601_2_zAHWkV8vjr_2.pdf"} 
[2026-05-18 19:46:41] production.INFO: Instructor credentials email sent successfully {"email":"minafawzyf@gmail.com","instructor_name":"Mina Fawzy"} 
[2026-05-18 19:46:48] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":6,"resolved_instructor_id":6,"training_center_id":2,"acc_id":1} 
[2026-05-18 19:46:48] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":6,"training_center_id":2,"acc_id":1} 
[2026-05-18 19:49:57] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:49:57] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:49:57] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:49:57] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779132389_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 19:49:57] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-9YYD45ZPCB&size=200x200&format=png"} 
[2026-05-18 19:49:57] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-9YYD45ZPCB&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-9YYD45ZPCB&size=200x200&format=png","mime":"image/png","bytes":515} 
[2026-05-18 19:49:57] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-9YYD45ZPCB"} 
[2026-05-18 19:49:57] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png"} 
[2026-05-18 19:49:57] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 19:49:59] production.INFO: Single instructor certificate email sent {"instructor_id":6,"email":"minaafawzyf@gmail.com","acc_id":1} 
[2026-05-18 19:49:59] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":6,"acc_id":1} 
[2026-05-18 19:49:59] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":6,"approved_acc_count":1} 
[2026-05-18 19:52:18] production.INFO: Deleted old acc logo {"entity_id":1,"entity_type":"acc","file_type":"logo","file_path":"accs/1/logo/1779132389_1_20251212_002747.jpg"} 
[2026-05-18 19:52:18] production.INFO: acc logo uploaded successfully {"entity_id":1,"entity_type":"acc","file_name":"1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg","logo_url":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg"} 
[2026-05-18 19:53:37] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779134017_2_6kKnvnHa7Z_1.pdf"} 
[2026-05-18 19:53:37] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779134017_2_2oKhS8sNb2_1.pdf"} 
[2026-05-18 19:53:38] production.INFO: Instructor credentials email sent successfully {"email":"j5d7sy18we@bwmyga.com","instructor_name":"Tester 1"} 
[2026-05-18 19:53:45] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":7,"resolved_instructor_id":7,"training_center_id":2,"acc_id":1} 
[2026-05-18 19:53:45] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":7,"training_center_id":2,"acc_id":1} 
[2026-05-18 19:54:25] production.INFO: Profile image uploaded successfully {"instructor_id":7,"file_name":"1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg","photo_url":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg"} 
[2026-05-18 19:55:07] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 19:55:08] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 19:55:08] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg"} 
[2026-05-18 19:55:08] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg","mime":"image/jpeg","bytes":11146} 
[2026-05-18 19:55:08] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-4LAZAO6QBY&size=200x200&format=png"} 
[2026-05-18 19:55:08] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-4LAZAO6QBY&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-4LAZAO6QBY&size=200x200&format=png","mime":"image/png","bytes":513} 
[2026-05-18 19:55:08] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg","candidate":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg"} 
[2026-05-18 19:55:08] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134065_7_Designed_for_all-day_comfort_and_versatile_styling.jpg","mime":"image/jpeg","bytes":218100} 
[2026-05-18 19:55:08] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-4LAZAO6QBY"} 
[2026-05-18 19:55:08] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png"} 
[2026-05-18 19:55:08] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 19:55:09] production.INFO: Single instructor certificate email sent {"instructor_id":7,"email":"j5d7sy18we@bwmyga.com","acc_id":1} 
[2026-05-18 19:55:09] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":7,"acc_id":1} 
[2026-05-18 19:55:09] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":7,"approved_acc_count":1} 
[2026-05-18 19:58:36] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779134316_2_CV5FUgkCOr_1.pdf"} 
[2026-05-18 19:58:36] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779134316_2_fOZ0ZcbN16_2.pdf"} 
[2026-05-18 19:58:36] production.INFO: Instructor credentials email sent successfully {"email":"zqulit9jo7@ozsaip.com","instructor_name":"Tester 1"} 
[2026-05-18 19:59:12] production.INFO: Profile image uploaded successfully {"instructor_id":8,"file_name":"1779134352_8_Soon__1_.jpg","photo_url":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134352_8_Soon__1_.jpg"} 
[2026-05-18 19:59:33] production.INFO: Deleted old acc logo {"entity_id":1,"entity_type":"acc","file_type":"logo","file_path":"accs/1/logo/1779133938_1_311737453_437144611861404_3232551265535822965_n.jpg"} 
[2026-05-18 19:59:33] production.INFO: acc logo uploaded successfully {"entity_id":1,"entity_type":"acc","file_name":"1779134373_1_20251212_002747.jpg","logo_url":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg"} 
[2026-05-18 19:59:56] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":8,"resolved_instructor_id":8,"training_center_id":2,"acc_id":1} 
[2026-05-18 19:59:56] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":8,"training_center_id":2,"acc_id":1} 
[2026-05-18 20:00:05] production.ERROR: Call to a member function update() on null {"userId":2,"exception":"[object] (Error(code: 0): Call to a member function update() on null at /home/devbomeqp/public_html/app/Http/Controllers/API/ACC/InstructorController.php:369)
[stacktrace]
#0 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): App\\Http\\Controllers\\API\\ACC\\InstructorController->approve(Object(Illuminate\\Http\\Request), '8')
#1 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(265): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\API\\ACC\\InstructorController), 'approve')
#2 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(211): Illuminate\\Routing\\Route->runController()
#3 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(822): Illuminate\\Routing\\Route->run()
#4 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#5 /home/devbomeqp/public_html/app/Http/Middleware/EnsureACCIsActive.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#6 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureACCIsActive->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#7 /home/devbomeqp/public_html/app/Http/Middleware/EnsureUserRole.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#8 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\EnsureUserRole->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'acc_admin', 'competency_admi...')
#9 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#10 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#11 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(63): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#12 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'sanctum')
#13 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#14 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#15 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#16 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#17 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#18 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#19 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#20 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#32 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#33 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#34 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#35 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#40 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#41 /home/devbomeqp/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#42 /home/devbomeqp/public_html/public/index.php(20): Illuminate\\Foundation\\Application->handleRequest(Object(Illuminate\\Http\\Request))
#43 {main}
"} 
[2026-05-18 20:02:17] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_cv","file_name":"1779134537_2_dEU34HGcnI_1.pdf"} 
[2026-05-18 20:02:17] production.INFO: training_center document uploaded successfully {"entity_id":2,"entity_type":"training_center","document_type":"instructor_passport","file_name":"1779134537_2_sGbK9fL0br_2.pdf"} 
[2026-05-18 20:02:17] production.INFO: Instructor credentials email sent successfully {"email":"zvv0zs5lsy@bwmyga.com","instructor_name":"Tester 1"} 
[2026-05-18 20:02:50] production.INFO: Profile image uploaded successfully {"instructor_id":9,"file_name":"1779134570_9_Soon__1_.jpg","photo_url":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg"} 
[2026-05-18 20:03:08] production.INFO: TC InstructorController::requestAuthorization resolved instructor {"route_id":9,"resolved_instructor_id":9,"training_center_id":2,"acc_id":1} 
[2026-05-18 20:03:08] production.INFO: InstructorManagementService::requestAuthorization called {"instructor_id":9,"training_center_id":2,"acc_id":1} 
[2026-05-18 20:04:04] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 20:04:04] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 20:04:04] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg"} 
[2026-05-18 20:04:04] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 20:04:04] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-NKWL5SBXC3&size=200x200&format=png"} 
[2026-05-18 20:04:04] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-NKWL5SBXC3&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-NKWL5SBXC3&size=200x200&format=png","mime":"image/png","bytes":507} 
[2026-05-18 20:04:04] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","candidate":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134570_9_Soon__1_.jpg"} 
[2026-05-18 20:04:04] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134570_9_Soon__1_.jpg","mime":"image/jpeg","bytes":202420} 
[2026-05-18 20:04:04] production.INFO: Certificate generation – verification_code present {"template_id":3,"verification_code":"VERIFY-NKWL5SBXC3"} 
[2026-05-18 20:04:04] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png"} 
[2026-05-18 20:04:04] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/3/1777936819_3_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/3/1777936819_3_background.png","mime":"image/png","bytes":91320} 
[2026-05-18 20:04:06] production.INFO: Single instructor certificate email sent {"instructor_id":9,"email":"zvv0zs5lsy@bwmyga.com","acc_id":1} 
[2026-05-18 20:04:06] production.INFO: Instructor ACC authorization certificate saved (single record) {"instructor_id":9,"acc_id":1} 
[2026-05-18 20:04:06] production.INFO: checkAndSendGroupAdminCertificate: not enough ACCs yet {"instructor_id":9,"approved_acc_count":1} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","candidate":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","path":"/home/devbomeqp/public_html/storage/app/public/training_centers/2/logo/1779124943_2_ChatGPT_Image_Feb_24__2026__01_06_59_AM.png","mime":"image/png","bytes":283551} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","path":"/home/devbomeqp/public_html/storage/app/public/accs/1/logo/1779134373_1_20251212_002747.jpg","mime":"image/jpeg","bytes":3841594} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: no local path found, will HTTP-fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-T7J0XJ1RE7&size=200x200&format=png"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from HTTP fetch {"source":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-T7J0XJ1RE7&size=200x200&format=png","fetch_url":"https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fdev.bomeqp.com%2Fverify-certificate%3Fcode%3DVERIFY-T7J0XJ1RE7&size=200x200&format=png","mime":"image/png","bytes":511} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","candidate":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134570_9_Soon__1_.jpg"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/api/storage/instructors/photo/1779134570_9_Soon__1_.jpg","path":"/home/devbomeqp/public_html/storage/app/public/instructors/photo/1779134570_9_Soon__1_.jpg","mime":"image/jpeg","bytes":202420} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/trainees/2/card_images/T3Unl31dRk9Szh746aK7fGdMPBTPeo1lSL7FXLZz.jpg","candidate":"http://dev.bomeqp.com/storage/app/public/trainees/2/card_images/T3Unl31dRk9Szh746aK7fGdMPBTPeo1lSL7FXLZz.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/2/card_images/T3Unl31dRk9Szh746aK7fGdMPBTPeo1lSL7FXLZz.jpg"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/trainees/2/card_images/T3Unl31dRk9Szh746aK7fGdMPBTPeo1lSL7FXLZz.jpg","path":"/home/devbomeqp/public_html/storage/app/public/trainees/2/card_images/T3Unl31dRk9Szh746aK7fGdMPBTPeo1lSL7FXLZz.jpg","mime":"image/jpeg","bytes":11532} 
[2026-05-18 23:21:16] production.INFO: Certificate generation – verification_code present {"template_id":7,"verification_code":"VERIFY-T7J0XJ1RE7"} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/7/1779145844_7_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/7/1779145844_7_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/7/1779145844_7_background.png"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/7/1779145844_7_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/7/1779145844_7_background.png","mime":"image/png","bytes":785838} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145526_4_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145526_4_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/card/1779145526_4_card_background.png"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145526_4_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/card/1779145526_4_card_background.png","mime":"image/png","bytes":193276} 
[2026-05-18 23:21:16] production.DEBUG: resolveToLocalPath: found {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145534_4_card_background.png","candidate":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145534_4_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/card/1779145534_4_card_background.png"} 
[2026-05-18 23:21:16] production.DEBUG: toDataUri: embedded from local path {"source":"http://dev.bomeqp.com/storage/app/public/certificate-templates/4/card/1779145534_4_card_background.png","path":"/home/devbomeqp/public_html/storage/app/public/certificate-templates/4/card/1779145534_4_card_background.png","mime":"image/png","bytes":1071522} 
