diff --git a/app/Console/Commands/GenerateAssets.php b/app/Console/Commands/GenerateAssets.php new file mode 100644 index 00000000..1a1260b2 --- /dev/null +++ b/app/Console/Commands/GenerateAssets.php @@ -0,0 +1,143 @@ +where('status', 'created')->where('type', 'tentcard')->first(); + if(!is_null($job)) { + //$user = DB::table("users")->where('user_id', $job->user_id)->first(); + //$response = LambdaRequest::getrequest('ums', 'contact/get_all', ['search' => json_encode([]), 'keyword' => "", 'start' => 0, 'length' => 9999, 'fields' => '["msl_code","doctor_image","user_info"]', 'belowme' => true, 'source' => 'dynamodb' ], $user->access_token ); + $conts = DB::table("contacts")->select('id', 'name', 'contact_id', 'user_id', 'employee_code', 'rep_name', 'position_name', 'msl_code')->whereBetween('created_date', [date("Y-m-d H:i:s", strtotime($job->start_date) + 19800 ), date("Y-m-d H:i:s", strtotime($job->end_date) + 19800 ) ])->get(); + + $files = []; + $contacts = []; + foreach($conts as $cont) { + $contacts[$cont->msl_code] = $cont; + } + foreach($contacts as $contact) { + //$contact->name = str_replace(" ", "_", $contact->name); + print_r($contact); + $file = $this->generate($contact, $job); + $files[] = $file; + } + + print_r(count($contacts)); + + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'-'.$user->name.'-'.date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->start_date)).'.zip'; + // exec('cd '.$folder.'; zip "'.$fileName.'" ' . implode(' ', $files)); + + + // $zip = new \ZipArchive(); + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'('.$user->name.')-'.$job->start_date.'-'.$job->start_date.'.zip'; + // if ($zip->open($folder, \ZipArchive::CREATE)== TRUE) + // { + // foreach ($files as $value){ + // $zip->addFile($folder.'/'.$value, $value); + // } + // $zip->close(); + // } + //print_r($fileName); + } + + + + //print_r($job); + } + + protected function generate($contact, $job) { + $folder = storage_path('app/public/'.$job->type); + $templatename = 'template.png'; + switch($job->type) { + case 'tentcard': + $pdfname = str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Tent-Standee.pdf'; + if(!file_exists($folder.'/'.$pdfname)) { + $outputImage = $this->retimage($folder.'/'.$templatename); + $font = storage_path('app').'/fonts/Poppins-Medium.ttf'; + $white = imagecolorallocatealpha($outputImage, 255, 255, 255, 0); + imagettftext($outputImage, 28, 0, 120, 1290, $white, $font, 'Dr. ' . str_replace('Dr', '', str_replace('.', '', $contact->name) )); + exec('qrencode -o '.$folder.'/qrcode-'.$contact->id.'.png -s 5 -m 2 https://breathefree.cttr.in/tracking/'.$contact->contact_id.'/'.$contact->user_id); + + //file_put_contents($folder.'/'.'qrcode-'.$contact->id.'.png', file_get_contents( 'https://api.qrserver.com/v1/create-qr-code/?size=200&data=https://breathefree.cttr.in/tracking/'.$contact->id.'/'.$contact->user_id )); + + $qrimg = $this->retimage($folder.'/'.'qrcode-'.$contact->id.'.png'); + imagecopyresized($outputImage,$qrimg,645,905,0,0,220,220,225,225); + + $filename = 'tentcard-'.$contact->id.'.png'; + imagepng($outputImage, $folder.'/'.$filename); + imagedestroy($outputImage); + //imagedestroy($templatePDF); + exec('convert ' .$folder.'/'.$filename. ' '.$folder.'/'.str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Tent-Standee.pdf'); + exec('rm '.$folder.'/'.$filename); + exec('rm '.$folder.'/'.'qrcode-'.$contact->id.'.png'); + + } + return $pdfname; + break; + + } + + + } + + protected function retimage($image) { + $size = getimagesize($image); + switch ($size['mime']) { + case 'image/jpeg': + $photoimg = imagecreatefromjpeg($image); + break; + case 'image/png': + $photoimg = imagecreatefrompng($image); + break; + case 'image/jpeg': + $photoimg = imagecreatefrompng($image); + break; + default: + # code... + break; + } + return $photoimg; + } + +} diff --git a/app/Console/Commands/GenerateAssetsCsv.php b/app/Console/Commands/GenerateAssetsCsv.php new file mode 100644 index 00000000..8c550df3 --- /dev/null +++ b/app/Console/Commands/GenerateAssetsCsv.php @@ -0,0 +1,148 @@ +where('status', 'created')->where('type', 'tentcard')->first(); + if(!is_null($job)) { + //$user = DB::table("users")->where('user_id', $job->user_id)->first(); + //$response = LambdaRequest::getrequest('ums', 'contact/get_all', ['search' => json_encode([]), 'keyword' => "", 'start' => 0, 'length' => 9999, 'fields' => '["msl_code","doctor_image","user_info"]', 'belowme' => true, 'source' => 'dynamodb' ], $user->access_token ); + $conts = DB::table("contacts")->select('id', 'name', 'contact_id', 'user_id', 'employee_code', 'rep_name', 'position_name', 'msl_code', 'created_date')->whereBetween('created_date', [date("Y-m-d H:i:s", strtotime($job->start_date) + 19800 ), date("Y-m-d H:i:s", strtotime($job->end_date) + 19800 ) ])->get(); + $contacts = []; + foreach($conts as $cont) { + $contacts[$cont->msl_code] = $cont; + } + + $headers = ['TM', 'Emp ID', 'HQ', 'Dr Name', 'MSL Code', 'Created Date']; + $csv = implode(',', $headers) . "\n";//Column headers + foreach($contacts as $contact) { + $csv.= $contact->rep_name.','.$contact->employee_code.','.$contact->position_name.','.$contact->name.','.$contact->msl_code.','.$contact->created_date."\n"; + } + + $folder = storage_path('app/public'); + $fileName = date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->end_date)).'.csv'; + print_r($folder); + print_r($fileName); + $csv_handler = fopen ($folder .'/'. $fileName,'w'); + fwrite ($csv_handler,$csv); + fclose ($csv_handler); + + + + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'-'.$user->name.'-'.date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->start_date)).'.zip'; + // exec('cd '.$folder.'; zip "'.$fileName.'" ' . implode(' ', $files)); + + + // $zip = new \ZipArchive(); + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'('.$user->name.')-'.$job->start_date.'-'.$job->start_date.'.zip'; + // if ($zip->open($folder, \ZipArchive::CREATE)== TRUE) + // { + // foreach ($files as $value){ + // $zip->addFile($folder.'/'.$value, $value); + // } + // $zip->close(); + // } + //print_r($fileName); + } + + + + //print_r($job); + } + + protected function generate($contact, $job) { + $folder = storage_path('app/public/'.$job->type); + $templatename = 'template.png'; + switch($job->type) { + case 'stickeraw': + $pdfname = str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Sticker.pdf'; + print_r($pdfname); + if(!file_exists($folder.'/'.$pdfname)) { + $outputImage = $this->retimage($folder.'/'.$templatename); + file_put_contents($folder.'/'.'qrcode-'.$contact->id.'.png', file_get_contents( 'https://api.qrserver.com/v1/create-qr-code/?size=200&data=https://breathefree.cttr.in/tracking/'.$contact->id.'/'.$contact->user_id )); + + $qrimg = $this->retimage($folder.'/'.'qrcode-'.$contact->id.'.png'); + imagecopyresized($outputImage,$qrimg,70,312,0,0,190,190,250,250); + + $font = storage_path('app').'/fonts/Poppins-Bold.ttf'; + $white = imagecolorallocatealpha($outputImage, 255, 255, 255, 0); + imagettftext($outputImage, 27, 0, 309, 340, $white, $font, 'Dr. ' . str_replace('Dr', '', str_replace('.', '', $contact->name) ) ); + + $filename = 'sticker-'.$contact->id.'.png'; + imagepng($outputImage, $folder.'/'.$filename); + imagedestroy($outputImage); + exec('convert ' .$folder.'/'.$filename. ' '.$folder.'/'.str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Sticker.pdf'); + exec('rm '.$folder.'/'.$filename); + exec('rm '.$folder.'/'.'qrcode-'.$contact->id.'.png'); + + } + return $pdfname; + break; + + } + + + } + + protected function retimage($image) { + $size = getimagesize($image); + switch ($size['mime']) { + case 'image/jpeg': + $photoimg = imagecreatefromjpeg($image); + break; + case 'image/png': + $photoimg = imagecreatefrompng($image); + break; + case 'image/jpeg': + $photoimg = imagecreatefrompng($image); + break; + default: + # code... + break; + } + return $photoimg; + } + +} diff --git a/app/Console/Commands/GenerateStickerAssets.php b/app/Console/Commands/GenerateStickerAssets.php new file mode 100644 index 00000000..95f585a3 --- /dev/null +++ b/app/Console/Commands/GenerateStickerAssets.php @@ -0,0 +1,144 @@ +where('status', 'created')->where('type', 'stickeraw')->first(); + if(!is_null($job)) { + //$user = DB::table("users")->where('user_id', $job->user_id)->first(); + //$response = LambdaRequest::getrequest('ums', 'contact/get_all', ['search' => json_encode([]), 'keyword' => "", 'start' => 0, 'length' => 9999, 'fields' => '["msl_code","doctor_image","user_info"]', 'belowme' => true, 'source' => 'dynamodb' ], $user->access_token ); + $conts = DB::table("contacts")->select('id', 'name', 'contact_id', 'user_id', 'employee_code', 'rep_name', 'position_name', 'msl_code')->where('status', 0)->whereBetween('created_date', [date("Y-m-d H:i:s", strtotime($job->start_date) + 19800 ), date("Y-m-d H:i:s", strtotime($job->end_date) + 19800 ) ])->get(); + + $files = []; + $contacts = []; + foreach($conts as $cont) { + $contacts[$cont->msl_code] = $cont; + } + foreach($contacts as $contact) { + //$contact->name = str_replace(" ", "_", $contact->name); + print_r($contact); + $file = $this->generate($contact, $job); + $files[] = $file; + } + + print_r(count($contacts)); + + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'-'.$user->name.'-'.date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->start_date)).'.zip'; + // exec('cd '.$folder.'; zip "'.$fileName.'" ' . implode(' ', $files)); + + + // $zip = new \ZipArchive(); + // $folder = storage_path('app/public/'.$job->type); + // $fileName = $contact->user_info->employee_code.'('.$user->name.')-'.$job->start_date.'-'.$job->start_date.'.zip'; + // if ($zip->open($folder, \ZipArchive::CREATE)== TRUE) + // { + // foreach ($files as $value){ + // $zip->addFile($folder.'/'.$value, $value); + // } + // $zip->close(); + // } + //print_r($fileName); + } + + + + //print_r($job); + } + + protected function generate($contact, $job) { + $folder = storage_path('app/public/'.$job->type); + $templatename = 'template.png'; + switch($job->type) { + case 'stickeraw': + $pdfname = str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Sticker.pdf'; + print_r($pdfname); + if(!file_exists($folder.'/'.$pdfname)) { + $outputImage = $this->retimage($folder.'/'.$templatename); + //file_put_contents($folder.'/'.'qrcode-'.$contact->id.'.png', file_get_contents( 'https://api.qrserver.com/v1/create-qr-code/?size=200&data=https://breathefree.cttr.in/tracking/'.$contact->id.'/'.$contact->user_id )); + + exec('qrencode -o '.$folder.'/qrcode-'.$contact->id.'.png -s 5 -m 2 https://breathefree.cttr.in/tracking/'.$contact->contact_id.'/'.$contact->user_id); + + $qrimg = $this->retimage($folder.'/'.'qrcode-'.$contact->id.'.png'); + imagecopyresized($outputImage,$qrimg,70,312,0,0,190,190,225,225); + + $font = storage_path('app').'/fonts/Poppins-Bold.ttf'; + $white = imagecolorallocatealpha($outputImage, 255, 255, 255, 0); + imagettftext($outputImage, 27, 0, 309, 340, $white, $font, 'Dr. ' . str_replace('Dr', '', str_replace('.', '', $contact->name) ) ); + + $filename = 'sticker-'.$contact->id.'.png'; + imagepng($outputImage, $folder.'/'.$filename); + imagedestroy($outputImage); + exec('convert ' .$folder.'/'.$filename. ' '.$folder.'/'.str_replace(' ', '_', $contact->employee_code).'-'.str_replace(' ', '_', $contact->name).'-Sticker.pdf'); + exec('rm '.$folder.'/'.$filename); + exec('rm '.$folder.'/'.'qrcode-'.$contact->id.'.png'); + + } + return $pdfname; + break; + + } + + + } + + protected function retimage($image) { + $size = getimagesize($image); + switch ($size['mime']) { + case 'image/jpeg': + $photoimg = imagecreatefromjpeg($image); + break; + case 'image/png': + $photoimg = imagecreatefrompng($image); + break; + case 'image/jpeg': + $photoimg = imagecreatefrompng($image); + break; + default: + # code... + break; + } + return $photoimg; + } + +} diff --git a/app/Console/Commands/GenerateZips.php b/app/Console/Commands/GenerateZips.php new file mode 100644 index 00000000..9ff8623c --- /dev/null +++ b/app/Console/Commands/GenerateZips.php @@ -0,0 +1,104 @@ +where('status', 'created')->where('type', 'tentcard')->first(); + if(!is_null($job)) { + $contacts = DB::table("contacts")->select('id', 'name', 'contact_id', 'user_id', 'employee_code', 'rep_name', 'position_name', 'depot_name')->where('status', 0)->whereBetween('created_date', [date("Y-m-d H:i:s", strtotime($job->start_date) + 19800 ), date("Y-m-d H:i:s", strtotime($job->end_date) + 19800 ) ])->get(); + + $users = []; + $depots = []; + foreach($contacts as $contact) { + if(!isset($users[$contact->user_id])) { + $users[$contact->user_id]['userinfo'] = ['name' => $contact->rep_name, 'employee_code' => $contact->employee_code, 'position_name' => $contact->position_name]; + $users[$contact->user_id]['contacts'] = []; + } + if( !in_array($contact->name, $users[$contact->user_id]['contacts']) ) { + $users[$contact->user_id]['contacts'][] = $contact->name; + } + //if(!array_key_exists($contact->user_id, $depots) ){ + $depots[$contact->employee_code] = $contact->depot_name; + //} + } + + print_r($depots); + $zips = []; + $folder = storage_path('app/public/'.$job->type); + foreach($users as $user_id => $user) { + $files = []; + if( isset($user['contacts']) && sizeof($user['contacts']) > 0 ) { + foreach($user['contacts'] as $cont) { + $fileName = str_replace(' ', '_', $user['userinfo']['employee_code']).'-'.str_replace(' ', '_', $cont).($job->type=='tentcard'?'-Tent-Standee.pdf':'-Sticker.pdf') ; + if(file_exists($folder .'/'. $fileName)) { + $files[] = $fileName; + } + } + } + $zipName = $user['userinfo']['position_name'].'-'.$user['userinfo']['employee_code'].'-'.$user['userinfo']['name'].'.zip'; + $zips[ $depots[ $user['userinfo']['employee_code'] ] ][] = $zipName; + //print_r('cd '.$folder.'; zip "zips/'.$zipName.'" ' . implode(' ', $files)); + exec('cd '.$folder.'; zip "zips/'.$zipName.'" ' . implode(' ', $files)); + } + $zipNames = []; + // $zipss = array_chunk($zips, 100); + foreach($zips as $depot => $zip) { + $zipName = $depot . '-' .date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->end_date)).'.zip'; + //print_r('cd '.$folder.'/zips; zip "'.$zipName.'" "' . implode('" "', $zip) . '"'); + exec('cd '.$folder.'/zips; zip "'.$zipName.'" "' . implode('" "', $zip) . '"'); + exec('aws s3 cp ' . $folder .'/zips/'. $zipName. ' s3://rapportapp/breathefree/'.$job->type.'/'); + $zipNames[] = 'https://did94hhhcgq1d.cloudfront.net/breathefree/'.$job->type.'/'.$zipName; + //exec('cd '.$folder.'/zips; rf -rf "' . implode('" "', $zip) . '"'); + + } + + print_r($zipNames); + + } + + + + //print_r($job); + } + +} diff --git a/app/Console/Commands/IndexActivities.php b/app/Console/Commands/IndexActivities.php new file mode 100644 index 00000000..76682fa0 --- /dev/null +++ b/app/Console/Commands/IndexActivities.php @@ -0,0 +1,53 @@ +table("activity_index")->where("is_active", 0)->first(); + if($activityIndex) { + $total = $activityIndex->total_activities; + for($completed = 0; $completed <= $total; $completed+=10) { + LambdaRequest::getrequest('catalog', 'activity/step', ['id'=>$activityIndex->import_id, 'step'=>'index_data_chunk', 'start_from' => $completed, 'limit' => 10], env('LAMBDA_ACCESS_TOKEN')); + DB::connection("primary")->table("activity_index")->where("id", $activityIndex->id)->update(['is_active' => 1, 'indexed_activities' => $completed ]); + } + LambdaRequest::getrequest('catalog', 'activity/step', ['id'=>$activityIndex->import_id, 'step'=>'complete'], env('LAMBDA_ACCESS_TOKEN')); + } + return 0; + } +} diff --git a/app/Helpers/Formhelper.php b/app/Helpers/Formhelper.php index 54420463..38591d5b 100644 --- a/app/Helpers/Formhelper.php +++ b/app/Helpers/Formhelper.php @@ -2,7 +2,7 @@ namespace App\Helpers; use App\Http\Requests\LambdaRequest; - +use DB; class Formhelper { public static function getMultiformData($partition, $form_id, $user_id, $startdate = false, $enddate = false) { @@ -13,5 +13,17 @@ class Formhelper } return $history; } + + public static function getformdefination($partition, $form_id, $user_id) { + $history = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $form_id, 'user_id' => $user_id, 'partition' => $partition ]); + return $history; + } + + public static function getuserdropdown($partition, $filter) { + list($app, $domain) = explode('-', $partition); + $token = DB::table('users')->select("access_token")->where("domain", $domain)->orderBy('updated_at', 'desc')->skip(0)->take(1)->get(); + $history = LambdaRequest::getrequest('ums', 'users/dropdown', ['filter' => $filter ], $token[0]->access_token); + return $history; + } } diff --git a/app/Http/Controllers/ActivityimportController.php b/app/Http/Controllers/ActivityimportController.php new file mode 100644 index 00000000..39d59998 --- /dev/null +++ b/app/Http/Controllers/ActivityimportController.php @@ -0,0 +1,129 @@ +middleware('auth'); + $this->_service = 'catalog'; + $this->_module = 'activity'; + $this->_viewname = 'activity'; + $this->_title = 'Activity Import'; + $this->_base_url = '/activityimport'; + } + + protected function get_list_fields(){ + return [ + 'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ], + 'title' => ['title' => 'Title', 'type' => 'text'], + 'status' => ['title' => 'Status', 'type' => 'text'], + 'createdAt' => ['title' => 'Created At', 'type' => 'text'], + ]; + } + + public function list(Request $request) { + $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/import_list'); + //echo '
'; print_r($response); exit;
+        if($response->statusCode == 401) {
+            return redirect('/unauthorised');
+        }
+        $fields = $this->get_list_fields();
+        //echo '
'; print_r($fields); exit;
+        return $this->view($this->_listtype)->with([
+            'title' => $this->_title,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'items' => $response->data->items,
+            'buttons' => $this->get_list_buttons()
+        ]);
+    }
+
+    protected function get_form_fields($type, $values){
+        $mappings = $this->getlambda('get', 'metric', 'injestion_mapping', 'get_all');
+        $mappings_dd = [];
+        foreach($mappings->data->items as $mapping){
+            $mappings_dd[$mapping->id] = $mapping->name;
+        }
+        //echo '
'; print_r($mappings_dd); exit;
+        return [
+            'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+            'file' => ['title' => 'File Upload', 'type' => 'file', 'required' => true],
+            'mapping_id' => ['title' => 'Select Mapping', 'type' => 'select', 'values' => $mappings_dd ],
+        ];
+    }
+
+    public function form($type, $id = null) {
+        $values = [];
+        if($type == 'edit') {
+            $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/import_detail', ['id' => $id]);
+            $values = $response->data->item;
+            //echo '
'; print_r($values); exit;
+        }
+        //echo '
'; print_r($values); exit;
+        $data = $this->_beforeform($type, $values);
+        $fields = $this->get_form_fields($type, $values);
+        //echo '
'; print_r($fields); exit;
+        return $this->view('form')->with([
+            'title' => $this->_title,
+            'mode' => $type,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'item' => $values,
+        ]);
+    }
+
+    protected function _beforesave($type, $request) {
+        $data = $request->except('_token');
+        if( $request->file('file') ) {
+            $data['file'] = $this->_uploadMedia($request, 'file', 'activity_import');
+        }
+        return $data;
+    }
+
+    protected function _beforeform($type, $values) {
+        // if($type == 'edit') {
+        //     $values->channels = explode('#', $values->channels);
+        // }
+        //echo '
'; print_r($values); exit;
+        return $values;
+    }
+
+    public function processimport(Request $request) {
+        $id = $request->input('id', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/step', ['id'=>$id, 'step'=>'status']);
+        //echo '
'; print_r($response); exit;
+        return $this->view('processimport')->with(['id'=>$id, 'title'=>$response->data->status->title, 'status'=>$response->data->status->status, 'context'=>$response->data->status->context ]);
+    }
+
+    public function step(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        try {
+            LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/step', ['id'=>$id, 'step'=>$step]);
+        } catch (ConnectionException $e) {
+            return redirect('/activityimport/stepresponse?id='.$id.'&step='.$step);
+        }
+    }
+
+    public function stepresponse(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        return $this->view('stepresponse')->with(['id'=>$id, 'step'=>$step]);
+    }
+
+    public function checkstatus(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/step', ['id'=>$id, 'step'=>'status']);
+        return response()->json($response->data->status);
+    }
+    
+}
diff --git a/app/Http/Controllers/AppController.php b/app/Http/Controllers/AppController.php
new file mode 100644
index 00000000..cf3ac820
--- /dev/null
+++ b/app/Http/Controllers/AppController.php
@@ -0,0 +1,47 @@
+middleware('auth');
+        $this->_service = 'detailing';
+        $this->_module = 'app';
+        $this->_viewname = 'app';
+        $this->_title = 'App';
+        $this->_base_url = '/app';
+    }
+
+    protected function get_list_fields(){
+        return [
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            'name' => ['title' => 'Name', 'type' => 'text'],
+            'android_min_version' => ['title' => 'Android Min Version', 'type' => 'text'],
+            'ios_min_version' => ['title' => 'IOS Min Version', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'select'],
+        ];
+    }
+
+    protected function get_form_fields($type, $values){
+        $channels = $this->getlambda('get', 'ums', 'channel', 'dropdown');
+        $channels_dd = [];
+        foreach($channels->data->items as $channel){
+            $channels_dd[$channel->id] = $channel->name;
+        }
+        return [
+            'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+            'android_package' => ['title' => 'Android Package', 'type' => 'text', 'required' => true],
+            'ios_package' => ['title' => 'IOS Package', 'type' => 'text', 'required' => true],
+            'android_min_version' => ['title' => 'Android Min Version', 'type' => 'text', 'required' => true],
+            'ios_min_version' => ['title' => 'IOS Min Version','type' => 'text', 'required' => true],
+            'android_store_link' => ['title' => 'Android Store Link', 'type' => 'text', 'required' => true],
+            'ios_store_link' => ['title' => 'IOS Store Link', 'type' => 'text', 'required' => true],
+        ];
+    }
+}
diff --git a/app/Http/Controllers/AppreciationcategoryController.php b/app/Http/Controllers/AppreciationcategoryController.php
index 56415aac..a3ebe043 100644
--- a/app/Http/Controllers/AppreciationcategoryController.php
+++ b/app/Http/Controllers/AppreciationcategoryController.php
@@ -66,10 +66,10 @@ class AppreciationcategoryController extends Controller
             'points' => ['title' => 'Points', 'type' => 'text', 'required' => true],
             'groups' => ['title' => 'Groups', 'type' => 'multiselect', 'required' => true, 'values' => $groups_dd ],
             'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'required' => true, 'values' => $roles_dd ],
-            'mapped_metric' => ['title' => 'Metric', 'type' => 'select', 'values' => $metric_dd ],
-
             'icon' => ['title' => 'Icon', 'type' => 'image', 'required' => true ],
 
+            'mapped_metric' => ['title' => 'Point Metric', 'type' => 'select', 'values' => $metric_dd ],
+            'count_metric' => ['title' => 'Count Metric', 'type' => 'select', 'values' => $metric_dd ],
         ];
 
         return $fields;
diff --git a/app/Http/Controllers/BadgelistController.php b/app/Http/Controllers/BadgelistController.php
index a52d6b44..e398a6eb 100644
--- a/app/Http/Controllers/BadgelistController.php
+++ b/app/Http/Controllers/BadgelistController.php
@@ -50,7 +50,11 @@ class BadgelistController extends Controller
         foreach($groups->data->items as $group){
             $groups_dd[$group->id] = $group->name;
         }
-
+        $metrics = $this->getlambda('get', 'metric', 'metric', 'get_all');
+        $metric_dd = [];
+        foreach($metrics->data->items as $metric){
+            $metric_dd[$metric->id] = $metric->name;
+        }
         $fields = [
             'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
@@ -60,6 +64,8 @@ class BadgelistController extends Controller
             'image' => ['title' => 'Image', 'type' => 'image', 'required' => true ],
             'conditions' => ['title' => 'Conditions', 'type' => 'text', 'required' => true],
 
+            'mapped_metric' => ['title' => 'Point Metric', 'type' => 'select', 'values' => $metric_dd ],
+            'count_metric' => ['title' => 'Count Metric', 'type' => 'select', 'values' => $metric_dd ],
         ];
 
         return $fields;
@@ -77,7 +83,9 @@ class BadgelistController extends Controller
         if ($type == 'edit') {
             $values->groups = explode('#', $values->groups);
             $values->roles = explode('#', $values->roles);
+            $values->conditions = implode('#', $values->conditions);
         }
+        //echo '
'; print_r($values); exit;
         return $values;
     }
 }
diff --git a/app/Http/Controllers/BannerController.php b/app/Http/Controllers/BannerController.php
index 48a1e0c3..4242d02f 100644
--- a/app/Http/Controllers/BannerController.php
+++ b/app/Http/Controllers/BannerController.php
@@ -33,13 +33,51 @@ class BannerController extends Controller
         foreach($channels->data->items as $channel){
             $channels_dd[$channel->id] = $channel->name;
         }
+        $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
+        $groups_dd = [];
+        foreach($groups->data->items as $group){
+            $groups_dd[$group->id] = $group->name;
+        }
+        $roles = $this->getlambda('get', 'ums', 'roles', 'dropdown');
+        $roles_dd = [];
+        foreach($roles->data->items as $role){
+            $roles_dd[$role->id] = $role->name;
+        }
+        $forms = $this->getlambda('get', 'form', 'formentity', 'dropdown');
+        $forms_dd = [];
+        foreach($forms->data->items as $form){
+            $forms_dd[$form->id] = $form->title;
+        }
+
+        $forms = $this->getlambda('get', 'form', 'survey', 'dropdown');
+        foreach($forms->data->items as $form){
+            $forms_dd[$form->id] = $form->title . ' (Survey)';
+        }
+
+        $quizs = $this->getlambda('get', 'form', 'quiz', 'dropdown');
+        foreach($quizs->data->items as $form){
+            $forms_dd[$form->id] = $form->name . ' (Quiz)';
+        }
+
         return [
             'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
             'channels' => ['title' => 'Channels', 'type' => 'multiselect', 'required' => true, 'values' => $channels_dd ],
-            'scheduled' => ['title' => 'Scheduled', 'type' => 'yesno', 'required' => true, 'fullwidth' => true],
+            'groups' => ['title' => 'Groups', 'type' => 'multiselect', 'required' => true, 'values' => $groups_dd ],
+            'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'required' => true, 'values' => $roles_dd ],
+
+            'scheduled' => ['title' => 'Scheduled', 'type' => 'yesno', 'required' => true],
+            'position' => ['title' => 'Position', 'type' => 'select', 'required' => true, 'values' => ['default' => 'Default', 'below_stats' => 'Below Stats', 'popup' => 'Pop Up']],
+            
             'schedule_start_date' => ['title' => 'Schedule start date', 'type' => 'date'],
             'schedule_end_date' => ['title' => 'Schedule end date', 'type' => 'date'],
             'media_url' => ['title' => 'Banner Image', 'type' => 'image', 'required' => true],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
+            
+            'has_cta' => ['title' => 'Has CTA', 'type' => 'yesno', 'required' => true, 'fullwidth' => true],
+            'target_type' => ['title' => 'Target Type', 'type' => 'select', 'values' => ['internal_action' => 'Internal Action', 'form' => 'Web Form', 'survey' => 'Surveys', 'quiz' => 'Quizs', 'doctorlist' => 'Doctor List', 'external' => 'External Webpage']  ],
+            'form_id' => ['title' => 'Form', 'type' => 'select', 'values' => $forms_dd ],
+            'external_url' => ['title' => 'External Url / Internal Action', 'type' => 'text'],
+
         ];
     }
 
@@ -51,12 +89,21 @@ class BannerController extends Controller
         if( $request->file('media_url') ) {
             $data['media_url'] = $this->_uploadMedia($request, 'media_url', 'banners');
         }
+        $data['groups'] = implode('#', $data['groups']);
+        $data['roles'] = implode('#', $data['roles']);
+        $data['form_id'] = isset($data['form_id']) ? $data['form_id'] : 'none';
+
+        //echo '
'; print_r($data); exit;
         return $data;
     }
 
     protected function _beforeform($type, $values) {
         if($type == 'edit') {
             $values->channels = explode('#', $values->channels);
+            $values->groups = !isset($values->groups) ? '' : $values->groups;
+            $values->roles = !isset($values->roles) ? '' : $values->roles;
+            $values->groups = explode('#', $values->groups);
+            $values->roles = explode('#', $values->roles);
         }
         return $values;
     }
diff --git a/app/Http/Controllers/BdeimportController.php b/app/Http/Controllers/BdeimportController.php
new file mode 100644
index 00000000..19b2d2a6
--- /dev/null
+++ b/app/Http/Controllers/BdeimportController.php
@@ -0,0 +1,129 @@
+middleware('auth');
+        $this->_service = 'catalog';
+        $this->_module = 'activity';
+        $this->_viewname = 'bdeimport';
+        $this->_title = 'BDE Import';
+        $this->_base_url = '/bdeimport';
+    }
+
+    protected function get_list_fields(){
+        return [
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            'title' => ['title' => 'Title', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'text'],
+            'createdAt' => ['title' => 'Created At', 'type' => 'text'],
+        ];
+    }
+
+    public function list(Request $request) {
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/import_list');
+        //echo '
'; print_r($response); exit;
+        if($response->statusCode == 401) {
+            return redirect('/unauthorised');
+        }
+        $fields = $this->get_list_fields();
+        //echo '
'; print_r($fields); exit;
+        return $this->view($this->_listtype)->with([
+            'title' => $this->_title,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'items' => $response->data->items,
+            'buttons' => $this->get_list_buttons()
+        ]);
+    }
+
+    protected function get_form_fields($type, $values){
+        $mappings = $this->getlambda('get', 'metric', 'injestion_mapping', 'get_all');
+        $mappings_dd = [];
+        foreach($mappings->data->items as $mapping){
+            $mappings_dd[$mapping->id] = $mapping->name;
+        }
+        //echo '
'; print_r($mappings_dd); exit;
+        return [
+            'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+            'file' => ['title' => 'File Upload', 'type' => 'file', 'required' => true],
+            'mapping_id' => ['title' => 'Select Mapping', 'type' => 'select', 'values' => $mappings_dd ],
+        ];
+    }
+
+    public function form($type, $id = null) {
+        $values = [];
+        if($type == 'edit') {
+            $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/import_detail', ['id' => $id]);
+            $values = $response->data->item;
+            //echo '
'; print_r($values); exit;
+        }
+        //echo '
'; print_r($values); exit;
+        $data = $this->_beforeform($type, $values);
+        $fields = $this->get_form_fields($type, $values);
+        //echo '
'; print_r($fields); exit;
+        return $this->view('form')->with([
+            'title' => $this->_title,
+            'mode' => $type,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'item' => $values,
+        ]);
+    }
+
+    protected function _beforesave($type, $request) {
+        $data = $request->except('_token');
+        if( $request->file('file') ) {
+            $data['file'] = $this->_uploadMedia($request, 'file', 'activity_import');
+        }
+        return $data;
+    }
+
+    protected function _beforeform($type, $values) {
+        // if($type == 'edit') {
+        //     $values->channels = explode('#', $values->channels);
+        // }
+        //echo '
'; print_r($values); exit;
+        return $values;
+    }
+
+    public function processimport(Request $request) {
+        $id = $request->input('id', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/bdestep', ['id'=>$id, 'step'=>'status']);
+        //echo '
'; print_r($response); exit;
+        return $this->view('processimport')->with(['id'=>$id, 'title'=>$response->data->status->title, 'status'=>$response->data->status->status, 'context'=>isset($response->data->status->context)?$response->data->status->context:[]  ]);
+    }
+
+    public function step(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        try {
+            LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/bdestep', ['id'=>$id, 'step'=>$step]);
+        } catch (ConnectionException $e) {
+            return redirect('/activityimport/stepresponse?id='.$id.'&step='.$step);
+        }
+    }
+
+    public function stepresponse(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        return $this->view('stepresponse')->with(['id'=>$id, 'step'=>$step]);
+    }
+
+    public function checkstatus(Request $request) {
+        $id = $request->input('id', 0);
+        $step = $request->input('step', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/bdestep', ['id'=>$id, 'step'=>'status']);
+        return response()->json($response->data->status);
+    }
+    
+}
diff --git a/app/Http/Controllers/BrandController.php b/app/Http/Controllers/BrandController.php
new file mode 100644
index 00000000..4c20f345
--- /dev/null
+++ b/app/Http/Controllers/BrandController.php
@@ -0,0 +1,68 @@
+middleware('auth');
+        $this->_service = 'catalog';
+        $this->_module = 'brand';
+        $this->_viewname = 'brand';
+        $this->_title = 'Brand';
+        $this->_base_url = '/brand';
+    }
+
+    protected function get_list_fields(){
+        return [
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            'name' => ['title' => 'Brand Name', 'type' => 'text'],
+            'type' => ['title' => 'Brand Type', 'type' => 'text'],
+            'division' => ['title' => 'Division', 'type' => 'text'],
+            'company' => ['title' => 'Company', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'select'],
+        ];
+    }
+
+    protected function get_form_fields($type, $values){
+        // $channels = $this->getlambda('get', 'ums', 'channel', 'dropdown');
+        // $channels_dd = [];
+        // foreach($channels->data->items as $channel){
+        //     $channels_dd[$channel->id] = $channel->name;
+        // }
+        return [
+            'name' => ['title' => 'Brand Name', 'type' => 'text', 'required' => true],
+            'type' => ['title' => 'Brand Type', 'type' => 'select', 'values' => ['MDI'=>'MDI', 'DPI'=>'DPI', 'Oral'=>'Oral'] ],
+            'division' => ['title' => 'Division', 'type' => 'text'],
+            'company' => ['title' => 'Company', 'type' => 'text'],
+            'focus_brand' => ['title' => 'Focus Brand', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+        ];
+    }
+
+    protected function _beforesave($type, $request) {
+        $data = $request->except('_token');
+        // if($type == 'edit') {
+        //     $values->channels = explode('#', $values->channels);
+        // }
+        if( $request->file('media_url') ) {
+            $data['media_url'] = $this->_uploadMedia($request, 'media_url', 'banners');
+        }
+        $data['type'] = isset($data['type']) ? $data['type'] : '';
+        $data['division'] = isset($data['division']) ? $data['division'] : '';
+        $data['company'] = isset($data['company']) ? $data['company'] : '';
+        $data['focus_brand'] = isset($data['focus_brand']) ? $data['focus_brand'] : '';
+        return $data;
+    }
+
+    protected function _beforeform($type, $values) {
+        // if($type == 'edit') {
+        //     $values->channels = explode('#', $values->channels);
+        // }
+        return $values;
+    }
+}
diff --git a/app/Http/Controllers/ComcampaignController.php b/app/Http/Controllers/ComcampaignController.php
index 5ff43dcc..b48093cc 100644
--- a/app/Http/Controllers/ComcampaignController.php
+++ b/app/Http/Controllers/ComcampaignController.php
@@ -50,7 +50,7 @@ class ComcampaignController extends Controller
             $channels[$chan->id] = $chan->name;
         }
 
-        $conlists = $this->getlambda('get', 'ums', 'contact_list', 'dropdown');
+        $conlists = $this->getlambda('get', 'contact', 'contact_list', 'dropdown');
         $contactlists = [];
         foreach ($conlists->data->items as $conlist) {
             $contactlists[$conlist->id] = $conlist->name;
diff --git a/app/Http/Controllers/CompetitionController.php b/app/Http/Controllers/CompetitionController.php
index d22c0f74..4632be50 100644
--- a/app/Http/Controllers/CompetitionController.php
+++ b/app/Http/Controllers/CompetitionController.php
@@ -77,6 +77,12 @@ class CompetitionController extends Controller
             $teams_dd[$team->id] = $team->name;
         }
         
+        $roles = $this->getlambda('get', 'ums', 'roles', 'dropdown');
+        $roles_dd = [];
+        foreach($roles->data->items as $role){
+            $roles_dd[$role->id] = $role->name;
+        }
+        
         $fields = [
             'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
@@ -85,6 +91,10 @@ class CompetitionController extends Controller
             'description' => ['title' => 'Description', 'type' => 'textarea', 'required' => true, 'fullwidth' => true ],
             'validity_start' => ['title' => 'Validity start', 'type' => 'date', 'required' => true],
             'validity_end' => ['title' => 'Validity end', 'type' => 'date', 'required' => true],
+            'ranking_method' => ['title' => 'Ranking Method', 'type' => 'select', 'required' => true, 'values' => ['Total' => 'Total', 'Average' => 'Average'] ],
+            'points_unit' => ['title' => 'Points Units', 'type' => 'text', 'required' => true, ],
+            'response_roles' => ['title' => 'Accept Response from Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true],
+            
             'cover_image' => ['title' => 'Cover Image', 'type' => 'image', 'required' => true],
             'target_metrics' => ['title' => 'Choose Metric', 'type' => 'multiselect', 'required' => true, 'values' => $metrics_dd, 'fullwidth' => true ],
             'observers' => ['title' => 'Observers', 'type' => 'multiselect', 'values' => $users_dd, 'required' => true, 'fullwidth' => true],
diff --git a/app/Http/Controllers/CompetitionreportController.php b/app/Http/Controllers/CompetitionreportController.php
new file mode 100644
index 00000000..971fc3ad
--- /dev/null
+++ b/app/Http/Controllers/CompetitionreportController.php
@@ -0,0 +1,90 @@
+_service = 'competition';
+        $this->_module = 'contest';
+        $this->_viewname = 'competition_contest';
+        $this->_title = 'Competition Contests';
+        $this->_base_url = '/competitionreport';
+    }
+
+    public function dashboard(Request $request) {
+        $id = $request->input('id', false);
+        $domain = $request->input('domain', false);
+        $user = DB::table('users')->where("domain", $domain)->select("access_token")->orderBy('updated_at', 'desc')->first();
+        $competition = LambdaRequest::getrequest($this->_service, $this->_module.'/contest_dashboard', ['id' => $id ], $user->access_token );
+        $competition = $competition->data->item;
+        if (\View::exists('competition_contest.'.$competition->partition.'.dashboard-'.$competition->id)) {
+            return view('competition_contest.'.$competition->partition.'.dashboard-'.$competition->id)->with(['competition' => $competition]);
+        } elseif (\View::exists('competition_contest.dashboard-'.$competition->id)) {
+            return view('competition_contest.dashboard-'.$competition->id)->with(['competition' => $competition]);
+        } else {
+            return view('competition_contest.dashboard')->with(['competition' => $competition]);
+        }
+        //return $this->deliverform($competition->data->item);
+    }
+
+    public function teamdashboard(Request $request) {
+        $id = $request->input('id', false);
+        $team = $request->input('team', false);
+        $domain = $request->input('domain', false);
+
+        $user = DB::table('users')->where("domain", $domain)->select("access_token")->orderBy('updated_at', 'desc')->first();
+        $competition = LambdaRequest::getrequest($this->_service, $this->_module.'/team_dashboard', ['id' => $id, 'team' => $team ], $user->access_token );
+        $competition = $competition->data->item;
+        //echo '
'; print_r($competition); exit;
+        if (\View::exists('competition_contest.'.$competition->partition.'.team_dashboard-'.$competition->id)) {
+            return view('competition_contest.'.$competition->partition.'.team_dashboard-'.$competition->id)->with(['competition' => $competition]);
+        } elseif (\View::exists('competition_contest.team_dashboard-'.$competition->id)) {
+            return view('competition_contest.team_dashboard-'.$competition->id)->with(['competition' => $competition]);
+        } else {
+            return view('competition_contest.team_dashboard')->with(['competition' => $competition]);
+        }
+        //return $this->deliverform($competition->data->item);
+    }
+
+    public function contestmailer(Request $request) {
+        $id = $request->input('id', false);
+        $domain = $request->input('domain', false);
+        $user = DB::table('users')->where("domain", $domain)->select("access_token")->orderBy('updated_at', 'desc')->first();
+        $competition = LambdaRequest::getrequest($this->_service, $this->_module.'/contest_dashboard', ['id' => $id ], $user->access_token );
+        $competition = $competition->data->item;
+        if (\View::exists('competition_contest.'.$competition->partition.'.mailer-'.$competition->id)) {
+            return view('competition_contest.'.$competition->partition.'.mailer-'.$competition->id)->with(['competition' => $competition]);
+        } elseif (\View::exists('competition_contest.mailer-'.$competition->id)) {
+            return view('competition_contest.mailer-'.$competition->id)->with(['competition' => $competition]);
+        } else {
+            return view('competition_contest.mailer')->with(['competition' => $competition]);
+        }
+        //return $this->deliverform($competition->data->item);
+    }
+
+    public function contestteammailer(Request $request) {
+        $id = $request->input('id', false);
+        $team = $request->input('team', false);
+        $domain = $request->input('domain', false);
+
+        $user = DB::table('users')->where("domain", $domain)->select("access_token")->orderBy('updated_at', 'desc')->first();
+        $competition = LambdaRequest::getrequest($this->_service, $this->_module.'/team_dashboard', ['id' => $id, 'team' => $team ], $user->access_token );
+        $competition = $competition->data->item;
+        //echo '
'; print_r($competition); exit;
+        if (\View::exists('competition_contest.'.$competition->partition.'.team_mailer-'.$competition->id)) {
+            return view('competition_contest.'.$competition->partition.'.team_mailer-'.$competition->id)->with(['competition' => $competition]);
+        } elseif (\View::exists('competition_contest.team_mailer-'.$competition->id)) {
+            return view('competition_contest.team_mailer-'.$competition->id)->with(['competition' => $competition]);
+        } else {
+            return view('competition_contest.team_mailer')->with(['competition' => $competition]);
+        }
+        //return $this->deliverform($competition->data->item);
+    }
+}
diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php
index d497dc77..4143e72a 100644
--- a/app/Http/Controllers/ContactController.php
+++ b/app/Http/Controllers/ContactController.php
@@ -6,13 +6,15 @@ use App\Http\Requests\LambdaRequest;
 use DB;
 use League\Csv\Reader;
 use Log;
+use Maatwebsite\Excel\Facades\Excel;
+use App\Exports\InvoicesExport;
 
 class ContactController extends Controller
 {
     public function __construct()
     {
         $this->middleware('auth');
-        $this->_service = 'ums';
+        $this->_service = 'contact';
         $this->_module = 'contact';
         $this->_viewname = 'contact';
         $this->_title = 'Contact';
@@ -32,12 +34,91 @@ class ContactController extends Controller
         ]);
     }
 
+    public function aggrid(Request $request) {
+        $fields = [
+            //'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            'name' => ['title' => 'Name', 'type' => 'text', 'editable' => false],
+            'msl_code' => ['title' => 'MSL Code', 'type' => 'text', 'editable' => false],
+            'position_name' => ['title' => 'Position', 'type' => 'text', 'editable' => false],
+            'user_name' => ['title' => 'Rep Name', 'type' => 'text', 'editable' => false],
+            'status' => ['title' => 'Status', 'type' => 'select', 'editable' => false],
+        ];
+        $response = LambdaRequest::signedrequest('get', $this->_service, 'contactattribute/get_all');
+        foreach($response->data->items as $item) {
+            $fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'editable' => $item->editable == 'yes' ? true : false, 'options' => $item->options ];
+        }
+        //echo '
'; print_r($fields); exit;
+
+        //echo $this->_listtype; exit;
+        return $this->view('aggrid')->with([
+            'title' => $this->_title,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            //'items' => $response->data->items,
+            'buttons' => $this->get_list_buttons()
+        ]);
+    }
+
+    public function aggridajaxlist(Request $request) {
+        $params = $request->input();
+        $search = [];
+        $fields = $this->get_list_fields();
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['start' => 0, 'length' => 100, 'search' => json_encode($search), 'keyword' => '' ]);
+
+        $users = [];
+        foreach($response->data->items as $item) {
+            $user = [];
+            if(isset($item->id)) {
+                $user['id'] = $item->id;
+            }
+            foreach($fields as $field => $props){
+                if($field != 'actions') {
+                    switch($props['type']){
+                        case('image'):
+                            $user[$field] = ' ';
+                            break;
+                        case('text'):
+                        case('select'):
+                            $user[$field] = isset($item->{$field}) ? $item->{$field} : '';
+                            break;
+                        case('date'):
+                            $user[$field] = date("d M Y", strtotime($item->{$field}));
+                            break;
+                    }
+                } else {
+                    // $user['actions'] = [];
+                    // foreach($props['buttons'] as $key => $button){
+                    //     switch($button) {
+                    //         case 'edit':
+                    //             $user['actions'][] = ['link' => '/edit?id='.$item->id, 'icon' => 'square-edit-outline text-warning'];
+                    //             break;
+                    //         case 'delete':
+                    //             $user['actions'][] = ['link' => '/delete?id='.$item->id, 'icon' => 'delete text-danger'];
+                    //             break;
+                    //         default:
+                    //             $querystring = $button['querystring'];
+                    //             foreach((array)$item as $k => $v) {
+                    //                 if(strpos($querystring,'{'.strtoupper($k).'}') !== false)
+                    //                     $querystring = str_replace('{'.strtoupper($k).'}', $v, $querystring);
+                    //             }
+                    //             $user['actions'][] = ['link' => '/'.$key.'?'.$querystring, 'icon' => $button['icon']];
+                    //             break;
+                    //     }
+                    // }
+                }
+            }
+            $users[] = $user;
+        }
+
+        return response()->json($users);
+    }
+
     protected function get_list_buttons() {
-        return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import Users', 'link' => $this->_base_url.'/import'] ];
+        return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import Users', 'link' => $this->_base_url.'/import'], ['title' => 'Export Users', 'link' => $this->_base_url.'/export'] ];
     }
 
     protected function get_import_fields($records){
-        $response = LambdaRequest::signedrequest('get', 'ums', 'contactattribute/get_all');
+        $response = LambdaRequest::signedrequest('get', $this->_service, 'contactattribute/get_all');
         $hierar = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
         $hierar_dd = [];
         foreach($hierar->data->items as $hier){
@@ -63,7 +144,6 @@ class ContactController extends Controller
             }
             $fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required=='yes'?true:false, 'values' => $values];
         }
-
         return $fields;
     }
 
@@ -99,7 +179,7 @@ class ContactController extends Controller
     }
 
     protected function get_form_fields($type, $values){
-        $response = LambdaRequest::signedrequest('get', 'ums', 'contactattribute/get_all');
+        $response = LambdaRequest::signedrequest('get', $this->_service, 'contactattribute/get_all');
         $hierar = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
         $hierar_dd = [];
         foreach($hierar->data->items as $hier){
@@ -170,6 +250,49 @@ class ContactController extends Controller
     }
     
 
+    public function export(Request $request) {
+        $attributes = LambdaRequest::signedrequest('get', $this->_service, 'contactattribute/get_all', []);
+        $fields = [];
+        foreach($attributes->data->items as $attri) {
+            $fields[] = $attri->code;
+        }
+        $fields[] = 'user_info';
+        $fields[] = 'msl_code';
+        $fields[] = 'position';
+        //echo '
'; print_r($response); exit;
+
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['source' => 'dynamodb', 'belowme' => 'yes', 'search' => json_encode([]), 'keyword' => "", 'fields' => json_encode($fields) ]);
+        //echo '
'; print_r($response); exit;
+
+        $headers = ['Name', 'Email', 'Phone', 'MSL Code', 'Position', 'Rep Name', 'Rep Employee Code', 'Position Name', 'Position Code', 'Status'];
+        foreach($attributes->data->items as $attri) {
+            $headers[] = $attri->attribute;
+        }
+
+        $exceldata[] = $headers;
+        foreach($response->data->items as $user) {
+            $row = [];
+            $row[] = isset($user->name) ? $user->name : '-';
+            $row[] = isset($user->email) ? $user->email : '-';
+            $row[] = isset($user->phone) ? $user->phone : '-';
+            $row[] = isset($user->msl_code) ? $user->msl_code : '-';
+            $row[] = isset($user->position) ? $user->position : '-';
+
+            $row[] = isset($user->user_info->name) ? $user->user_info->name : '-';
+            $row[] = isset($user->user_info->employee_code) ? $user->user_info->employee_code : '-';
+
+            $row[] = isset($user->hierarchy_info->name) ? $user->hierarchy_info->name : '-';
+            $row[] = isset($user->hierarchy_info->code) ? $user->hierarchy_info->code : '-';
+            $row[] = isset($user->status) ? $user->status : '-';
+
+            foreach($attributes->data->items as $attri) {
+                $row[] = isset($user->{$attri->code}) ? $user->{$attri->code} : '-';
+            }            
+            $exceldata[] = $row;
+        }
+        return Excel::download(new InvoicesExport($exceldata), 'contacts.xlsx');
+    }
+
 
     // public function postimport(Request $request) {
     //     if( $request->file('importfile') ) {
diff --git a/app/Http/Controllers/ContactattributeController.php b/app/Http/Controllers/ContactattributeController.php
index 24aeb184..c73f424b 100644
--- a/app/Http/Controllers/ContactattributeController.php
+++ b/app/Http/Controllers/ContactattributeController.php
@@ -10,7 +10,7 @@ class ContactattributeController extends Controller
     public function __construct()
     {
         $this->middleware('auth');
-        $this->_service = 'ums';
+        $this->_service = 'contact';
         $this->_module = 'contactattribute';
         $this->_viewname = 'contactattribute';
         $this->_title = 'Contact Attributes';
@@ -43,17 +43,29 @@ class ContactattributeController extends Controller
         return [
             'attribute' => ['title' => 'Attribute', 'type' => 'text', 'required' => true],
             'code' => ['title' => 'Code (small caps without spaces and special chars except "_")', 'type' => 'text', 'required' => true],
-            'type' => ['title' => 'Attribute Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'number' => 'Number', 'date' => 'Date', 'email' => 'Email', 'url' => 'Url', 'select' => 'Dropdown', 'checkbox' => 'Checkbox',  'radio' => 'Radio']  ],
             'required' => ['title' => 'Is Required', 'type' => 'yesno', 'required' => true],
+            'editable' => ['title' => 'Is Editable', 'type' => 'yesno', 'required' => true],
+            'type' => ['title' => 'Attribute Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'number' => 'Number', 'date' => 'Date', 'email' => 'Email', 'url' => 'Url', 'select' => 'Dropdown', 'checkbox' => 'Checkbox',  'radio' => 'Radio']  ],
+            
             'sort_order' => ['title' => 'Sort Order', 'type' => 'number', 'required' => true],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
             'options' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
         ];
     }
 
+    protected function _beforeform($type, $values) {
+        if($type == 'edit') {
+            $this->_request->session()->put('entity_id', $values->id);
+        }
+        return $values;
+    }
+
     protected function _beforesave($type, $request) {
         $data = $request->except('_token');
-        $data['entity_id'] = $request->session()->get('entity_id');
+        $data['id'] = $request->session()->get('entity_id');
+        if(!$data['id']) {
+            unset($data['id']);
+        }
         $options = [];
         if(isset($data['option_value'])) {
             foreach($data['option_value'] as $k => $ov) {
@@ -63,6 +75,7 @@ class ContactattributeController extends Controller
             unset($data['option_value']);
             unset($data['option_name']);
         }
+        //echo '
'; print_r($data); exit;
         return $data;
     }
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/ContactlistController.php b/app/Http/Controllers/ContactlistController.php
index f2dad58c..52912e23 100644
--- a/app/Http/Controllers/ContactlistController.php
+++ b/app/Http/Controllers/ContactlistController.php
@@ -12,7 +12,7 @@ class ContactlistController extends Controller
     public function __construct()
     {
         $this->middleware('auth');
-        $this->_service = 'ums';
+        $this->_service = 'contact';
         $this->_module = 'contact_list';
         $this->_viewname = 'contactlist';
         $this->_title = 'Contact List';
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index c3f567ba..80291f32 100755
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -10,6 +10,9 @@ use Illuminate\Http\Request;
 use App\Http\Requests\LambdaRequest;
 use League\Csv\Reader;
 use Log;
+use Auth;
+use DB;
+use App\Jobs\Importdata;
 
 class Controller extends BaseController
 {
@@ -168,14 +171,42 @@ class Controller extends BaseController
 
     public function postimport(Request $request) {
         if( $request->file('importfile') ) {
+            
             $path = $request->file('importfile')->store('user_import');
-            $request->session()->put('user_import_path', $path);
-            return redirect($this->_base_url.'/importmap')->withMessage('Successfully Uploaded !!!');
+            $csv = Reader::createFromPath(storage_path('app') .'/' . $path, 'r');
+            $csv->setHeaderOffset(0);
+
+            $header = $csv->getHeader(); //returns the CSV header record
+            $records = $csv->getRecords(); //returns all the CSV records as an Iterator object
+            $fields = $this->get_import_fields($records);
+            if($this->validateImport($header, $records)) {
+                $path = $request->file('importfile')->store('user_import', 's3');
+                $user = Auth::user();
+                $id = DB::table('import_jobs')->insertGetId(['user_id' => $user->id, 'domain' => $user->domain, 'service' => $this->_service, 'module' => $this->_module, 'filepath' => $path, 'status' => 1 ]);
+                Importdata::dispatch($id);
+                return redirect($this->_base_url.'/importprocess?id='.$id)->withMessage('Successfully Uploaded !!!');
+            } else {
+                return \Redirect::back()->withMessage('CSV File incorrect. Either not all required fields have values or data type is incorrect. Please check and try again!');
+            }
         } else {
             return \Redirect::back()->withMessage('Some Error occured!');
         }
     }
 
+    public function importprocess(Request $request) {
+        $id = $request->input('id', 0);
+        $import = DB::table('import_jobs')->where('id', $id)->first();
+        return $this->view('importprocess')->with(['baseurl' => $this->_base_url, 'id' => $id]);
+    }
+
+    public function importstatus(Request $request) {
+        $id = $request->input('id', 0);
+        $import = DB::table('import_jobs')->where('id', $id)->first();
+        return response()->json($import);
+    }
+
+    
+
     public function importmap(Request $request) {
         $path = $request->session()->get('user_import_path');
         $csv = Reader::createFromPath(storage_path('app') .'/' . $path, 'r');
@@ -301,7 +332,15 @@ class Controller extends BaseController
     protected function _uploadMedia($request, $name = 'image', $folder = 'image') {
         $path = '';
         try {
-            if( $request->file($name) ) {
+            if(is_array($request->file($name))) {
+                $paths = [];
+                foreach($request->file($name) as $file) {
+                    $path = $file->store($folder, 's3');
+                    $path = env('AWS_URL').'/'.$path;
+                    $paths[] = $path;
+                }
+                $path = implode(',', $paths);
+            } else if( $request->file($name) ) {
                 $path = $request->file($name)->store($folder, 's3');
                 $path = env('AWS_URL').'/'.$path;
             }
diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
index 489bfae1..2971ae58 100644
--- a/app/Http/Controllers/DashboardController.php
+++ b/app/Http/Controllers/DashboardController.php
@@ -29,9 +29,15 @@ class DashboardController extends Controller
         } else {
             $campaigns = [];
         }
-        //echo '
'; print_r($campaigns); exit;
+        $widgets = [];
+        // if(isset($widgets) && $widgets->statusCode == 200) {
+        //     $widgets = $widgets->data->campaigns;
+        // } else {
+        //     $widgets = [];
+        // }
+        //echo '
'; print_r($widgets); exit;
 
-        return view('index')->with(['metrics' => isset($reports->data->metrics) ? $reports->data->metrics : [], 'widgets' => $widgets->data->widgets, 'campaigns' => $campaigns]);
+        return view('index')->with(['metrics' => isset($reports->data->metrics) ? $reports->data->metrics : [], 'widgets' => $widgets, 'campaigns' => $campaigns]);
     }
 
 
diff --git a/app/Http/Controllers/DetailingcontestController.php b/app/Http/Controllers/DetailingcontestController.php
index 630b8b5f..3765a217 100644
--- a/app/Http/Controllers/DetailingcontestController.php
+++ b/app/Http/Controllers/DetailingcontestController.php
@@ -19,9 +19,19 @@ class DetailingcontestController extends Controller
 // 
     protected function get_list_fields(){
         return [
-            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete', 'responses' => ['icon' => 'image-multiple', 'querystring' => 'id={ID}'], 'report' => ['icon' => 'text-box-outline', 'querystring' => 'id={ID}'] ] ],
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete', 'metrics' => ['icon' => 'book-arrow-right', 'querystring' => 'id={ID}'], 'responses' => ['icon' => 'image-multiple', 'querystring' => 'id={ID}'],  'report' => ['icon' => 'chart-pie', 'querystring' => 'id={ID}'], ] ], // 'report' => ['icon' => 'text-box-outline', 'querystring' => 'id={ID}']
             'name' => ['title' => 'Title', 'type' => 'text'],
             'marks' => ['title' => 'Marks', 'type' => 'text'],
+            
+            'no_of_participants' => ['title' => 'No of participants', 'type' => 'text'],
+            'no_of_uploads' => ['title' => 'No of uploads', 'type' => 'text'],
+            'no_of_evaluations' => ['title' => 'No of evaluations', 'type' => 'text'],
+            'pass_count' => ['title' => 'Pass Count', 'type' => 'text'],
+            'fail_count' => ['title' => 'Fail Count', 'type' => 'text'],
+            'published_on' => ['title' => 'Published On', 'type' => 'date'],
+
+            'is_published' => ['title' => 'Published', 'type' => 'select'],
+            'is_result_published' => ['title' => 'Result Published', 'type' => 'select'],
             'status' => ['title' => 'Status', 'type' => 'select'],
         ];
     }
@@ -59,24 +69,46 @@ class DetailingcontestController extends Controller
             'groups' => ['title' => 'Groups', 'type' => 'multiselect', 'required' => true, 'values' => $groups_dd ],
             'evaluators' => ['title' => 'Evaluators', 'type' => 'multiselect', 'required' => true, 'values' => $users_dd ],
             'observers' => ['title' => 'Observers', 'type' => 'multiselect', 'required' => true, 'values' => $users_dd ],
-
             'evaluation_parameters' => ['title' => 'Evaluation Parameters', 'type' => 'multiselect', 'required' => true, 'values' => $params_dd ],
-            'evaluation_workflow' => ['title' => 'Evaluator Type', 'type' => 'select', 'required' => true, 'values' => ['ANY' => 'ANY', 'ALL' => 'ALL'] ],
-            'media_type' => ['title' => 'Media Type', 'type' => 'select', 'required' => true, 'values' => ['audio' => 'Audio', 'video' => 'Video', 'pdf' => 'PDF', 'image' => 'Image',]  ],
-            'media' => ['title' => 'Media', 'type' => 'file', 'required' => true],
+            
+            'dashboard_image' => ['title' => 'Dashboard Image', 'type' => 'image', 'required' => true],
             'cover_image' => ['title' => 'Cover Image', 'type' => 'image', 'required' => true],
 
+            'media_type' => ['title' => 'Media Type', 'type' => 'select', 'required' => true, 'values' => ['audio' => 'Audio', 'video' => 'Video', 'pdf' => 'PDF', 'image' => 'Image',]  ],
+            'response_sources' => ['title' => 'Response Sources', 'type' => 'multiselect', 'required' => true, 'values' => ['CAMERA' => 'CAMERA', 'GALLERY' => 'GALLERY']  ],
+            'media' => ['title' => 'Media', 'type' => 'file', 'required' => true],
+
             'response_types' => ['title' => 'Response Types', 'type' => 'checkbox', 'required' => true, 'values' => ['audio' => 'Audio', 'video' => 'Video', 'pdf' => 'PDF', 'image' => 'Image',]  ],
             'response_sources' => ['title' => 'Response Sources', 'type' => 'multiselect', 'required' => true, 'values' => ['CAMERA' => 'CAMERA', 'GALLERY' => 'GALLERY']  ],
-            'response_self_delete' => ['title' => 'Response Deletion Access', 'type' => 'yesno', 'required' => true],
+            'limits_audio' => ['title' => 'Audio Duration Limit (in sec)', 'type' => 'number', 'required' => true],
+            'limits_video' => ['title' => 'Video Duration Limit (in sec)', 'type' => 'number', 'required' => true],
+            'limits_size' => ['title' => 'Max file Size (in MB)', 'type' => 'number', 'required' => true],
+
+            'response_self_delete' => ['title' => 'Can delete self Response before Evaluation', 'type' => 'yesno', 'required' => true],
+            'allow_self_evaluation' => ['title' => 'Is Self Evaluation Enabled', 'type' => 'yesno', 'required' => true],
+            'evaluation_workflow' => ['title' => 'Evaluator Type', 'type' => 'select', 'required' => true, 'values' => ['ANY' => 'ANY', 'ALL' => 'ALL'] ],
+
             'result_publish_count' => ['title' => 'Result Publish Count', 'type' => 'number', 'required' => true],
             'marks' => ['title' => 'Marks', 'type' => 'number', 'required' => true],
 
-            'is_published' => ['title' => 'Is Published', 'type' => 'yesno', 'required' => true],
+            'is_reattempt_allowed' => ['title' => 'Is Reattempt allowed', 'type' => 'yesno', 'required' => true],
+            'no_of_reattempts' => ['title' => 'No of Reattempts', 'type' => 'number', 'required' => true],
+
+            'validate_evaluations' => ['title' => 'Validate Evaluations', 'type' => 'yesno', 'required' => true],
+            'validation_type' => ['title' => 'Validation Type', 'type' => 'select', 'required' => true, 'values' => ['none' => 'None', 'warning' => 'Warning', 'warning_for_top' => 'Warning for top', 'stop' => 'Stop', 'stop_for_top' => 'Stop for top',]],
+
+            // 'is_result_published' => ['title' => 'Is Result Published', 'type' => 'yesno', 'required' => true],
+
             'additional_evaluators' => ['title' => 'Additional Evaluators', 'type' => 'checkbox', 'required' => true, 'values' => ['level_1_manager' => '1st line manager', 'level_2_manager' => '2nd line manager', 'random_manager' => 'Random Manager',]],
-            'response_roles' => ['title' => 'Accept Response from Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true]
+            'response_roles' => ['title' => 'Accept Response from Roles', 'type' => 'multiselect', 'values' => $roles_dd, 'required' => true],
             
+            'show_pass_fail_icon' => ['title' => 'Show Pass/Fail icons on Responses', 'type' => 'yesno', 'required' => true, 'fullwidth' => true],
+            'pass_icon' => ['title' => 'Pass Icon', 'type' => 'image', 'required' => true],
+            'fail_icon' => ['title' => 'Fail Icon', 'type' => 'image', 'required' => true],
+
+            //'metrics' => ['title' => 'Choose Metric', 'type' => 'mapping', 'required' => true, 'metrics' => $metrics_dd, 'types' => ['unit' => 'Units', 'count' => 'Count'] , 'fullwidth' => true ]
         ];
+
     }
 
     protected function _beforesave($type, $request) {
@@ -87,11 +119,31 @@ class DetailingcontestController extends Controller
         if( $request->file('media') ) {
             $data['media'] = $this->_uploadMedia($request, 'media', 'detailing');
         }
+        if( $request->file('dashboard_image') ) {
+            $data['dashboard_image'] = $this->_uploadMedia($request, 'dashboard_image', 'detailing');
+        }
+        if( $request->file('pass_icon') ) {
+            $data['pass_icon'] = $this->_uploadMedia($request, 'pass_icon', 'detailing');
+        }
+        if( $request->file('fail_icon') ) {
+            $data['fail_icon'] = $this->_uploadMedia($request, 'fail_icon', 'detailing');
+        }
+        $data['limits'] = ['video' => $data['limits_video'], 'audio' => $data['limits_audio'], 'size' => $data['limits_size'] ];
+        unset($data['limits_video']);
+        unset($data['limits_audio']);
+        unset($data['limits_size']);
+        //echo '
'; print_r($data); exit;
         return $data;
     }
 
     protected function _beforeform($type, $values) {
         if($type == 'edit') {
+            //echo '
'; print_r($values); exit;
+            if(isset($values->limits)) {
+                $values->limits_video = $values->limits->video ?? 0;
+                $values->limits_audio = $values->limits->audio ?? 0;
+                $values->limits_size = $values->limits->size ?? 0;
+            }
             //echo '
'; print_r($values); exit;
             if(isset($values->groups))
                 $values->groups = explode('#', $values->groups);
@@ -136,11 +188,79 @@ class DetailingcontestController extends Controller
         }
     }
 
-    public function report(Request $request) {
-        $con_id = $request->input('id', 0);
-        $response = LambdaRequest::signedrequest('get', $this->_service, 'contest_response/get_all', ['con_id' => $con_id]);
-        echo '
'; print_r($response); exit;
+    public function metrics(Request $request) {
+        $id = $request->input('id', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_one', ['id' => $id]);
+        $parameters = $this->getlambda('get', 'detailing', 'parameter', 'get_all');
+        $params_dd = [];
+        $params_dd['no_of_uploads'] = 'No. of uploads';
+        $params_dd['total_score'] = 'Total score';
+        $params_dd['average_score'] = 'Average score';
+        foreach($parameters->data->items as $param){
+            $params_dd[$param->id] = $param->title . ' (Scale: ' . $param->scale . ')';
+        }
+        $metrics = $this->getlambda('get', 'metric', 'metric', 'get_all');
+        $metrics_dd = [];
+        foreach($metrics->data->items as $metric){
+            $metrics_dd[$metric->id] = $metric->name;
+        }
+        //echo '
'; print_r($response->data->item); exit;
+        return $this->view('metrics')->with([
+        	'parameters' => $params_dd,
+            'metrics' => $metrics_dd,
+        	'item' => $response->data->item,
+        ]);
+    }
 
-        echo $con_id; exit;
+    public function postmetrics(Request $request) {
+        $post = $request->except('_token');
+        //echo '
'; print_r($post); exit;
+        $mapping = [];
+        foreach($post['metric'] as $i => $metric) {
+            $mapping[] = ['metric' => $metric, 'parameter' => $post['parameter'][$i] ];
+        }
+        $data = ['id' => $post['id'], 'metrics' => json_encode($mapping), 'metric_mapping_auth_key' => $post['metric_mapping_auth_key'] ];
+        $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/update', $data);
+        return redirect('/detailingcontests')->withMessage('Contest Metrics Saved!');
+    }
+
+    public function report(Request $request) {
+        $id = $request->input('id', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/detailreport', ['id' => $id]);
+        return $this->view('report')->with([
+        	'parameters' => $response->data->parameters,
+            'users' => $response->data->users,
+        ]);
+    }
+
+    protected function get_list_buttons() {
+        return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ],
+                ['title' => 'Export Contests', 'link' => $this->_base_url.'s' ],
+                ['title' => 'Send Reminders', 'link' => $this->_base_url.'s' ] ];
+    }
+
+    public function status(Request $request) {
+        $id = $request->input('id', 0);
+        $action = $request->input('action', 0);
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_one', ['id' => $id]);
+        $toupdate = [];
+        switch($action) {
+            case 'publish':
+                $toupdate = ['is_published' => 'yes', 'is_result_published' => 'no'];
+                break;
+            case 'unpublish':
+                $toupdate = ['is_published' => 'no', 'is_result_published' => 'no'];
+                break;
+            case 'publish_result':
+                $toupdate = ['is_published' => 'yes', 'is_result_published' => 'yes'];
+                break;
+            case 'unpublish_result':
+                $toupdate = ['is_published' => 'yes', 'is_result_published' => 'no'];
+                break;
+        }
+        $toupdate['id'] = $id;
+        //echo '
'; print_r($toupdate); exit;
+        $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/update', $toupdate);
+        return redirect('/detailingcontest/edit?id='.$id)->withMessage('Detailing Contest Updated!');
     }
 }
diff --git a/app/Http/Controllers/DetailingcontestresponseController.php b/app/Http/Controllers/DetailingcontestresponseController.php
index 236a1f79..13af0150 100644
--- a/app/Http/Controllers/DetailingcontestresponseController.php
+++ b/app/Http/Controllers/DetailingcontestresponseController.php
@@ -23,7 +23,7 @@ class DetailingcontestresponseController extends Controller
             return redirect('/magazines')->withError('Magazine not found!');
         }
         $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['con_id' => $con_id]);
-        //echo '
'; print_r($response->data->evaluations); exit;
+        echo '
'; print_r($response->data); exit;
         $items = [];
         foreach ($response->data->items as $item) {
             $item->user_name = $item->user_info->name;
@@ -33,7 +33,7 @@ class DetailingcontestresponseController extends Controller
 
         $fields = $this->get_list_fields();
         return $this->view('list')->with([
-            'title' => $this->_title,
+            'title' => $this->_title . ' : ' . $response->data->contest->name,
             'fields' => $fields,
             'base_url' => $this->_base_url,
             'items' => $items,
@@ -54,6 +54,10 @@ class DetailingcontestresponseController extends Controller
             'user_name' => ['title' => 'User Name', 'type' => 'text'],
             'title' => ['title' => 'Media Name', 'type' => 'text'],
             'media_type' => ['title' => 'Media Type', 'type' => 'text'],
+            'createdAt' => ['title' => 'Submitted On', 'type' => 'date'],
+            'marks' => ['title' => 'Avg. Marks', 'type' => 'text'],
+            'total' => ['title' => 'Avg. Total', 'type' => 'text'],
+            'result' => ['title' => 'Result', 'type' => 'text'],
             'no_of_evaluations' => ['title' => 'No of Evaluations', 'type' => 'text'],
             'likes_count' => ['title' => 'Likes', 'type' => 'text'],
             'comments_count' => ['title' => 'Comments', 'type' => 'text'],
diff --git a/app/Http/Controllers/DoctorController.php b/app/Http/Controllers/DoctorController.php
index 3b9b0664..3194059f 100644
--- a/app/Http/Controllers/DoctorController.php
+++ b/app/Http/Controllers/DoctorController.php
@@ -21,17 +21,42 @@ class DoctorController extends Controller
     public function list(Request $request)
     {
         $post = $request->input();
-        echo '
'; print_r($post); exit;
-
-        if ($token != '') {
-            $request->session()->put('metric_access_key', $token);
+        if (isset($post['code'])) {
+            $request->session()->put('metric_access_key', $post['code']);
         } else {
-            $token = $request->session()->get('metric_access_key');
+            $post['code'] = $request->session()->get('metric_access_key');
         }
-        $response = LambdaRequest::getrequest($this->_service, $this->_module . '/get_my_contacts', [], $token);
-        $fields = $this->get_list_fields();
+
+        $response = LambdaRequest::getrequest($this->_service, $this->_module . '/mydoctors', ['code' => $post['code']]);
+        $request->session()->put('hierarchy', $response->data->hierarchy);
+
+        //echo '
'; print_r($response); exit;
+
+        $fields = [
+            //'actions' => ['title' => 'Actions', 'type' => 'button', 'buttons' => ['edit', 'delete']],
+            'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
+            'email' => ['title' => 'Email', 'type' => 'email', 'required' => true],
+            'phone' => ['title' => 'Phone', 'type' => 'text', 'required' => true],
+            'msl_code' => ['title' => 'MSL Code', 'type' => 'text'],
+            // 'position' => ['title' => 'Position', 'type' => 'select', 'required' => true, 'values' => $hierar_dd ],
+            // 'practice_type' => ['title' => 'Practice', 'type' => 'select', 'required' => true, 'values' => $values ],
+            //'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active', 'disabled']],
+        ];
+
+        foreach($response->data->attributes as $attribute) {
+            $options = [];
+            foreach($attribute->options as $opts) {
+                $options[$opts->value] = $opts->display;
+            }
+
+            $fields[$attribute->code] = ['title' => $attribute->attribute, 'type' => $attribute->type, 'values' => $options, 'required' => $attribute->required == 'yes' ];
+        }
+        $fields['status'] = ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active'=>'Active', 'disabled'=>'Disabled']];
+        //echo '
'; print_r($fields); exit;
+       
         return $this->view('list')->with([
             'title' => $this->_title,
+            'user_id' => $response->data->user,
             'fields' => $fields,
             'base_url' => $this->_base_url,
             'items' => $response->data->items,
@@ -39,106 +64,16 @@ class DoctorController extends Controller
         ]);
     }
 
-    public function form($type, $id = null)
-    {
-        $token = $this->_request->session()->get('metric_access_key');
-        $values = [];
-        if ($type == 'edit') {
-            $response = LambdaRequest::getrequest($this->_service, $this->_module . '/get_one', ['id' => $id], $token);
-            $values = $response->data->item;
-        }
-        $data = $this->_beforeform($type, $values);
-        $fields = $this->get_form_fields($type, $values, $token);
-        return $this->view('form')->with([
-            'title' => $this->_title,
-            'mode' => $type,
-            'fields' => $fields,
-            'base_url' => $this->_base_url,
-            'item' => $values,
-        ]);
-    }
 
-    public function save($type, $request)
+    public function postsubmit( $request)
     {
-        $token = $request->session()->get('metric_access_key');
-        if ($type == 'edit') {
-            $url = '/update';
-        } else {
-            $url = '/create';
-        }
-        $data = $this->_beforesave($type, $request);
-        $response = LambdaRequest::postrequest($this->_service, $this->_module . $url, $data, $token);
+        $token = $request->session()->get('metric_access_key'); 
+        $post = $request->except('_token');
+        $response = LambdaRequest::postrequest($this->_service, $this->_module . '/updatemydoctor', ['post' => $post, 'code' => $token]);
         if ($response->statusCode == 200 && $response->status == "success") {
             return redirect($this->_base_url . 's')->withMessage('Successfully Saved !!!');
         } else {
             return redirect($this->_base_url . 's')->withError('Some Error occured! ' . $response->body->message);
         }
     }
-
-    public function createdoctor(Request $request)
-    {
-        return Doctor::create($request->only(['msl_code', 'email', 'contact_id', 'name', 'phone']))->id;
-    }
-
-    protected function get_list_fields()
-    {
-        return [
-            'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']],
-            'name' => ['title' => 'Name', 'type' => 'text'],
-            'msl_code' => ['title' => 'MSL Code', 'type' => 'text']
-        ];
-    }
-
-    public function action($action, Request $request)
-    {
-        $this->_request = $request;
-        switch ($action) {
-            case 'edit':
-                return $this->form('edit', $request->input('id'));
-                break;
-            case 'addnew':
-                return $this->form('new');
-                break;
-            case 'delete':
-                return $this->delete($request->input('id'));
-                break;
-            default:
-                return $this->{$action}($request);
-                break;
-        }
-    }
-    protected function get_form_fields($type, $values, $token)
-    {
-        $response = LambdaRequest::getrequest('ums', 'contactattribute/get_all', [], $token);
-        $fields = [
-            'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
-            'email' => ['title' => 'Email', 'type' => 'email', 'required' => true],
-            'phone' => ['title' => 'Phone', 'type' => 'text', 'required' => true],
-            'msl_code' => ['title' => 'MSL Code', 'type' => 'text'],
-            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']],
-        ];
-
-        foreach ($response->data->items as $item) {
-            $values = [];
-            if (in_array($item->type, ['select', 'radio', 'checkbox'])) {
-                foreach ($item->options as $op) {
-                    $values[$op->value] = $op->display;
-                }
-            }
-            $fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required == 'yes' ? true : false, 'values' => $values];
-        }
-
-        return $fields;
-    }
-    public function delete($id)
-    {
-        $token = $this->_request->session()->get('metric_access_key');
-
-        $response = LambdaRequest::getrequest($this->_service, $this->_module . '/delete', ['id' => $id], $token);
-        if ($response->statusCode == 200 && $response->status == "success") {
-            return redirect($this->_base_url . 's')->withMessage('Successfully Marked Deleted !!!');
-        } else {
-            return redirect($this->_base_url . 's')->withError('Some Error occured! ' . $response->body->message);
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/app/Http/Controllers/DomainController.php b/app/Http/Controllers/DomainController.php
index e2b447d4..62f91cdb 100644
--- a/app/Http/Controllers/DomainController.php
+++ b/app/Http/Controllers/DomainController.php
@@ -80,7 +80,7 @@ class DomainController extends Controller
                 '10' => 'November',
                 '11' => 'December',
             ];
-
+        
         return [
             'id' => ['title' => '', 'type' => 'hidden'],
             'name' => ['title' => 'Domain Name', 'type' => 'text', 'required' => true],
@@ -90,17 +90,38 @@ class DomainController extends Controller
             'logo' => ['title' => 'Group Image or Icon', 'type' => 'image', 'required' => true],
             'description' => ['title' => 'Description', 'type' => 'textarea', 'required' => true],
             'year_start_month' => ['title' => 'Year start month', 'type' => 'select', 'required' => true, 'values' => $months],
+            
+            'login_scheme' => ['title' => 'login Scheme', 'type' => 'select', 'required' => true, 'values' => ['OTP' => 'OTP', 'Password' => 'Password'] ],
+            'otp_scheme' => ['title' => 'OTP Scheme', 'type' => 'select', 'required' => true, 'values' => ['email' => 'Email Only', 'email_wa_pull' => 'Email + Whatsapp Request', 'email_wa_push' => 'Email + Whatsapp Push', 'wa_pull' => 'Whatsapp Request Only', 'wa_push' => 'Whatsapp Push Only'] ],
+            'force_change_password' => ['title' => 'Force Change Password', 'type' => 'select', 'required' => true, 'values' => ['Yes' => 'Yes', 'No' => 'No'] ],
+            'enable_registration' => ['title' => 'Enable Registration', 'type' => 'select', 'required' => true, 'values' => ['Yes' => 'Yes', 'No' => 'No'] ],
+            'registration_default_role' => ['title' => 'Registration default Role', 'type' => 'select', 'values' => $roles_dd],
+            'registration_default_designation' => ['title' => 'Registration default Designation', 'type' => 'text'],
+
             'use_default_otp' => ['title' => 'Use Default OTP', 'type' => 'select', 'required' => true, 'values' => ['Yes' => 'Yes', 'No' => 'No'] ],
             'default_otp' => ['title' => 'Default OTP to be used', 'type' => 'number', 'required' => true],
+            'static_otp_for_roles' => ['title' => 'Use Statis OTP for Roles', 'type' => 'multitextbox', 'values' => $roles_dd, 'fullwidth' => true],
             'dynamic_otp_for_roles' => ['title' => 'Use Dynamic OTP for Roles', 'type' => 'multiselect', 'values' => $roles_dd],
+            'message_recipient_list' => ['title' => 'Messages Recipient List', 'type' => 'select', 'required' => true, 'values' => ['show_all_users' => 'Show all users', 'show_users_under_hierarchy' => 'Show users under hierarchy', 'show_users_under_hierarchy_and_peers' => 'Show users under hierarchy & peers', 'show_users_under_hierarchy_same_level' => 'Show users under hierarchy & at same level'] ],
+            'appreciation_recipient_list' => ['title' => 'Appreciation Recipient List', 'type' => 'select', 'required' => true, 'values' => ['show_all_users' => 'Show all users', 'show_users_under_hierarchy' => 'Show users under hierarchy', 'show_users_under_hierarchy_and_peers' => 'Show users under hierarchy & peers', 'show_users_under_hierarchy_same_level' => 'Show users under hierarchy & at same level'] ],
+            'badges_recipient_list' => ['title' => 'Badges Recipient List', 'type' => 'select', 'required' => true, 'values' => ['show_all_users' => 'Show all users', 'show_users_under_hierarchy' => 'Show users under hierarchy', 'show_users_under_hierarchy_and_peers' => 'Show users under hierarchy & peers', 'show_users_under_hierarchy_same_level' => 'Show users under hierarchy & at same level'] ],
+
             'terms_text' => ['title' => 'Login Terms & Conditions Text', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
             'android_server_key' => ['title' => 'Android Server Key', 'type' => 'textarea', 'fullwidth' => true],
             'ios_server_key' => ['title' => 'IOS Server Key', 'type' => 'textarea', 'fullwidth' => true],
         ];
     }
 
+
     protected function _beforesave($type, $request) {
         $data = $request->except('_token');
+        $static_otp_for_roles = [];
+        foreach($data['static_otp_for_roles'] as $k => $v) {
+            if(!empty($v)) {
+                $static_otp_for_roles[] = ['role' => $k, 'otp' => $v];
+            }
+        }
+        $data['static_otp_for_roles'] = json_encode($static_otp_for_roles);
         if( $request->file('logo') ) {
             $data['logo'] = $this->_uploadMedia($request, 'logo', 'domain');
         }
diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php
index 04e9d247..9e72d06d 100644
--- a/app/Http/Controllers/FormController.php
+++ b/app/Http/Controllers/FormController.php
@@ -17,6 +17,7 @@ use Illuminate\Support\Facades\Cache;
 use Aws\Ses\SesClient;
 use Aws\Credentials\CredentialProvider;
 use Illuminate\Support\Str;
+use Response;
 
 class FormController extends Controller
 {
@@ -31,11 +32,13 @@ class FormController extends Controller
 
     protected function deliverform($formdata, $questions, $id = false) {
         $additional_info = $this->get_additional_info($formdata);
-        // if($formdata->form_id == '1672808391-a35fbd00-fbc8-40a6-ad40-6172011c546e') {
+        // if($formdata->form_id == '1711609582-e93dba24-9c98-43e7-b97a-b22d64d9b9fc') {
         //     echo '
'; print_r($formdata); print_r($questions); exit;
         // }
         //echo '
'; print_r($formdata); print_r($questions); exit;
         $data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'id' => false, 'id' => $id ];
+        Log::debug(print_r($data, true));
+        //echo '
'; print_r($data); exit;
         if(sizeof($additional_info) > 0) {
             $data['additional'] = $additional_info;
         }
@@ -94,6 +97,8 @@ class FormController extends Controller
                 return view('form.'.$finfo->data->formdata->partition.'.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata ]);
             } elseif (\View::exists('form.list-'.$finfo->data->formdata->form_id)) {
                 return view('form.list-'.$finfo->data->formdata->form_id)->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata ]);
+            } elseif (\View::exists('form.'.$finfo->data->formdata->partition.'.list')) {
+                return view('form.'.$finfo->data->formdata->partition.'.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata ]);
             } else {
                 return view('form.list')->with(['questions' => $finfo->data->questions, 'submissions' => $finfo->data->submissions, 'formname' => $finfo->data->formdata->title, 'form_id' => $finfo->data->formdata->form_id, 'lastkey' => $finfo->data->lastkey, 'formdata' => $finfo->data->formdata ]);
             }
@@ -130,9 +135,9 @@ class FormController extends Controller
                             }
                         }
                         $html .= '';
-                            if( in_array('edit', $submission->actions) ){
+                            //if( in_array('edit', $submission->actions) && (strtotime("now") - strtotime($submission->createdAt)) <  432000 ){
                             $html .= 'Edit';
-                            }
+                            //}
                         $html .= '
                     ';
             }
@@ -144,12 +149,39 @@ class FormController extends Controller
         $formdata = $request->session()->get('formdata');
         //Log::debug(print_r($formdata, true));
         $id = $request->input('id', false);
+        $action = $request->input('action', false);
+        Log::debug(print_r(['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ], true));
         $finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ]);
         //Log::debug(print_r($finfo, true));
+        $formdata->formdata = $finfo->data->formdata;
         //echo '
'; print_r($formdata);  print_r($finfo); exit;
+        if($formdata->form_id == '1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a' && isset($action) && $action == 'delete') {
+            $contact_id = false;
+            foreach($finfo->data->questions as $que) {
+                if($que->code == 'contact_id') {
+                    $contact_id = $que->value;
+                }
+            }
+            list($application, $domain) = explode("-", $formdata->partition);
+            $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_delete%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+            LambdaRequest::getrequest('contact', 'contact/delete', ['id' => $contact_id], $token[0]->access_token);
+            LambdaRequest::getrequest('form', 'formentity/deletesubmission', ['id' => $id, 'form_id' => $formdata->form_id], $token[0]->access_token);
+            return redirect('/form/history')->withMessage('Successfully Deleted !!!');
+        }
         $formdata->title = $finfo->data->formdata->title;
         return $this->deliverform($formdata, $finfo->data->questions, $id);
     }
+
+    public function deletesubmission(Request $request) {
+        $formdata = $request->session()->get('formdata');
+        //Log::debug(print_r($formdata, true));
+        $id = $request->input('id', false);
+        $form_id = $request->input('form_id', false);
+        list($application, $domain) = explode("-", $formdata->partition);
+        $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+        LambdaRequest::getrequest('form', 'formentity/deletesubmission', ['form_id' => $form_id, 'id' => $id ], $token[0]->access_token);
+        return redirect('/form/history')->withMessage('Successfully Deleted !!!');
+    }
     
     public function submit(Request $request) {
         $post = $request->except('_token');
@@ -195,7 +227,10 @@ class FormController extends Controller
         if(isset($post['id']) && $post['id']=='') unset($post['id']);
 
         $formdata = $request->session()->get('formdata');
-
+        if(!$formdata) {
+            $formdata = (object)[];
+        }
+        $formdata->form_id = $post['form_id'];
         // if($formdata->partition == 'rapport-copd') {
         //     return response()->json(['status' => 'failure']);
         // }
@@ -206,14 +241,20 @@ class FormController extends Controller
         if(isset($post['user_id']) && $post['user_id'] != '') {
             $formdata->user_id = $post['user_id'];
         }
+        if(isset($post['partition']) && $post['partition'] != '') {
+            $formdata->partition = $post['partition'];
+        }
+        $request->session()->put('formdata', $formdata);
         if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
             $post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
-
-            Log::debug(print_r($post, true));
             $finfo = LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => $post, 'entity_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
+            Log::debug(print_r($finfo, true));
             if($finfo->status == 'success') {
                 return response()->json(['status' => 'success']);
             } else {
+                if($finfo->statusCode == 401) {
+                    return response()->json(['status' => 'failure', 'message' => $finfo->data ]);
+                }
                 return response()->json(['status' => 'failure']);
             }          
         } else {
@@ -224,12 +265,129 @@ class FormController extends Controller
     public function ajaxsubmitmultiple(Request $request) {
         $post = $request->except('_token');
         $formdata = $request->session()->get('formdata');
-
+        $formdata->form_id = $post['form_id'];
         // if($formdata->partition == 'rapport-copd') {
         //     return response()->json(['status' => 'failure']);
         // }
+        if(isset($post['user_id']) && $post['user_id'] != '') {
+            $formdata->user_id = $post['user_id'];
+        }
+        $request->session()->put('formdata', $formdata);
+        Log::debug(print_r($formdata, true));
+
+        if($formdata->form_id == '1716267411-74ef7199-6298-4bae-8c8b-c069a405c864') {
+            $contacts = [];
+            foreach($post['contact_id'] as $i => $contact_id) {
+                $contacts[] = ['contact_id' => $contact_id, 'proxym_tuesday' => isset($post['proxym_tuesday'][$i])?'Yes':'No', 'ferium_xt_thursday' => isset($post['ferium_xt_thursday'][$i])?'Yes':'No', 'galact_saturday' => isset($post['galact_saturday'][$i])?'Yes':'No' ];
+            }
+            list($application, $domain) = explode("-", $formdata->partition);
+            $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+            
+            foreach($contacts as $contact) {
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $post['user_id'],
+                    'hierarchy' => $post['hierarchy_id'],
+                    'proxym_tuesday' => $contact['proxym_tuesday'],
+                    'ferium_xt_thursday' => $contact['ferium_xt_thursday'],
+                    'galact_saturday' => $contact['galact_saturday'],
+                    'id' => $contact['contact_id'],
+                ];
+                $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+            }
+            return response()->json(['status' => 'success']);
+        }
+
+        //["rtm","telma_ln_ecme","zita_ecme"]
+        if($formdata->form_id == '1721281521-a4a857d7-84d7-4e4c-9df3-4e9c9f999d64') {
+            $contacts = [];
+            foreach($post['contact_id'] as $i => $contact_id) {
+                $contacts[] = ['contact_id' => $contact_id, 'zita_ecme' => isset($post['zita_ecme'][$i])?'Yes':'No', 'telma_ln_ecme' => isset($post['telma_ln_ecme'][$i])?'Yes':'No', 'rtm' => isset($post['rtm'][$i])?'Yes':'No' ];
+            }
+            list($application, $domain) = explode("-", $formdata->partition);
+            $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+            $post['contact_id'] = [];
+            $post['zita_ecme'] = [];
+            $post['telma_ln_ecme'] = [];
+            $post['rtm'] = [];
+            foreach($contacts as $i => $contact) {
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $post['user_id'],
+                    //'hierarchy' => $post['hierarchy_id'],
+                    'zita_ecme' => $contact['zita_ecme'],
+                    'telma_ln_ecme' => $contact['telma_ln_ecme'],
+                    'rtm' => $contact['rtm'],
+                    'id' => $contact['contact_id'],
+                ];
+                $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+                $post['contact_id'][$i] = $contact['contact_id'];
+                $post['zita_ecme'][$i] = $contact['zita_ecme'];
+                $post['telma_ln_ecme'][$i] = $contact['telma_ln_ecme'];
+                $post['rtm'][$i] = $contact['rtm'];
+            }
+            return response()->json(['status' => 'success']);
+        }
+
+        if($formdata->form_id == '1716267411-74ef7199-6298-4bae-c2c-c069a405c864') {
+            $contacts = [];
+            foreach($post['contact_id'] as $i => $contact_id) {
+                $contacts[] = ['contact_id' => $contact_id, 'c2c' => isset($post['c2c'][$i])?'Yes':'No' ];
+            }
+
+            list($application, $domain) = explode("-", $formdata->partition);
+            $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+            
+            foreach($contacts as $contact) {
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $post['user_id'],
+                    'hierarchy' => $post['hierarchy_id'],
+                    'c2c' => $contact['c2c'],
+                    'id' => $contact['contact_id'],
+                ];
+                $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+            }
+            return response()->json(['status' => 'success']);
+        }
+
+        if($formdata->form_id == '1723015306-c8d90868-1c50-4820-ab96-474cdff8e543') {
+            $contacts = [];
+            foreach($post['contact_id'] as $i => $contact_id) {
+                $contacts[] = ['contact_id' => $contact_id, 'glycoquic_f' => isset($post['glycoquic_f'][$i])?'Yes':'No' ];
+            }
+
+            list($application, $domain) = explode("-", $formdata->partition);
+            $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+            
+            foreach($contacts as $contact) {
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $post['user_id'],
+                    'glycoquic_f' => $contact['glycoquic_f'],
+                    'id' => $contact['contact_id'],
+                ];
+                $cont = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+            }
+            return response()->json(['status' => 'success']);
+        }
+
+        if($formdata->form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') {
+            if(DB::table('team3_nebyatra_doctors')->where('user_id', $formdata->user_id)->wherein('mobile_number', $post['mobile_number'])->exists() ){
+                $phones = DB::table('team3_nebyatra_doctors')->select("mobile_number")->where('user_id', $formdata->user_id)->wherein('mobile_number', $post['mobile_number'])->get();
+                $matched = [];
+                foreach($phones as $phone) {
+                    $matched[] = $phone->mobile_number;
+                }
+                return response()->json(['status' => 'failure', 'message' => 'Some Mobile numbers you entered already exists. Numbers are ' . implode(', ', $matched) ]);
+            }
+        }
         if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
-            $post = $this->processformdata($formdata->form_id, $post);
+            $post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
             $finfo = LambdaRequest::postrequest('form', 'formentity/submitmultipleform', ['formdata' => $post, 'entity_id' => $post['form_id'], 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
             //Log::debug(print_r($finfo, true));
             if($finfo->status == 'success') {
@@ -245,21 +403,83 @@ class FormController extends Controller
     public function approvereject(Request $request) {
         $formdata = $request->session()->get('formdata');
         $post = $request->all();
-        $user = DB::table('users')->where('domain', str_replace('rapport-', '',$formdata->partition ) )->first();
+        //$user = DB::table('users')->where('domain', str_replace('rapport-', '',$formdata->partition ) )->first();
+        
+        list($app, $domain) = explode('-', $formdata->partition);
+        $user = DB::table('users')->select("access_token")->where('domain', $domain )->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+        Log::debug(print_r($formdata, true));
 
-        $finfo = LambdaRequest::postrequest('form', 'formentity/approvereject', ['submission_id' => $post['id'], 'action' => $post['action'] ], $user->access_token);
+        $finfo = LambdaRequest::postrequest('form', 'formentity/approvereject', ['submission_id' => $post['id'], 'action' => $post['action'] ], $user[0]->access_token);
         Log::debug(print_r($user, true));
         Log::debug(print_r($finfo, true));
-
-        Log::debug(print_r($formdata, true));
         Log::debug(print_r($post, true));
-
-        
         return response()->json($post);
     }
 
+    public function approverejectmultiple(Request $request) {
+        $post = $request->all();
+        foreach($post['ids'] as $id) {
+            LambdaRequest::postrequest('form', 'formentity/approvereject', ['submission_id' => $id, 'action' => $post['action'] ], Auth::user()->access_token);
+        }
+        return response()->json($post);
+    }
+
+    public function allaprovers(Request $request) {
+        $post = $request->all();
+        $allapprovers = LambdaRequest::postrequest('form', 'formentity/allapprovers', ['submission_id' => $post['submission_id'], 'form_id' => $post['form_id'] ], Auth::user()->access_token);
+        return response()->json($allapprovers->data->approvals);
+    }
+
     protected function processformdata($form, $post, $user_id = 0, $partition = '' ) {
         switch($form) {
+            case '1711609582-e93dba24-9c98-43e7-b97a-b22d64d9b9fc':
+            case '1711609582-e93dba24-9c98-43e7-neb2-b22d64d9b9fc':
+                list($application, $domain) = explode("-", $partition);
+                $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $user_id,
+                    'name' => $post['chemist_name'],
+                    'current_business' => $post['current_business'],
+                    'type' => 'chemist',
+                    'category' => isset($post['category']) ? $post['category'] : '',
+                    'msl_code' => strtotime("now").'-'.rand(1000,9999)
+                ];
+                if(isset($post['id'])) {
+                    $contactdata['id'] = $post['contact_id'];
+                    unset($post['contact_id']);
+                    $contact = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+                } else {
+                    $contact = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
+                }
+                $post['contact_id'] = $contact->data->item->id;
+                break;
+            case '1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a':
+                list($application, $domain) = explode("-", $partition);
+                $token = DB::table('users')->select("access_token")->where("domain", $domain)->where("permissions", 'like', '%contact_create%')->orderBy('updated_at', 'desc')->skip(0)->take(1)->get();
+                $contactdata = [
+                    'domain' => $domain,
+                    'application' => $application,
+                    'user_id' => $user_id,
+                    'name' => $post['chemist_name'],
+                    'current_business' => $post['current_business'],
+                    'type' => 'chemist',
+                    'doctor_name' => $post['doctor_name'],
+                    'category' => $post['category'],
+                    'doctor_msl_code' => $post['msl_code'],
+                    'doctor_speciality' => $post['speciality'],
+                    'msl_code' => strtotime("now").'-'.rand(1000,9999)
+                ];
+                if(isset($post['id'])) {
+                    $contactdata['id'] = $post['contact_id'];
+                    unset($post['contact_id']);
+                    $contact = LambdaRequest::postrequest('contact', 'contact/update', $contactdata, $token[0]->access_token);
+                } else {
+                    $contact = LambdaRequest::postrequest('contact', 'contact/create', $contactdata, $token[0]->access_token);
+                }
+                $post['contact_id'] = $contact->data->item->id;
+                break;
             case '1654748343-81b065ee-e05c-431c-a44d-706afc1c16f4':
                 if($post['contact_id'] == 'other') {
                     $post['contact_id'] = '';
@@ -390,7 +610,7 @@ class FormController extends Controller
                 break;
             case '1669979081-e991fc27-e8c1-4120-9883-b42af09244d3':
             case '1689236085-9aaa37ba-601b-4414-b1fc-a26e9cc722df':
-                if(isset($post['execution_done']) && $post['execution_done'] == 'yes') {
+                if(isset($post['execution_done']) && $post['execution_done'] == 'yes' && isset($post['activity_type'])) {
                     $post[$post['activity_type']] = 1;
                 }
                 break;
@@ -486,6 +706,29 @@ class FormController extends Controller
                     $post = $first_post;
                 }
                 break;
+            case '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a':
+                if(is_array($post['doctor_name']) ) {
+                    $execCount = sizeof($post['doctor_name']);
+                    $planed = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685', 'user_id' => $user_id, 'partition' => $partition, 'id' => $post['plan_id'] ]);
+                    $plandata = $planed->data->formdata;
+                    if(isset($plandata->execution_count)) {
+                        $plandata->execution_count += $execCount;
+                    } else {
+                        $plandata->execution_count = $execCount;
+                    }
+                    $plandata->id = $post['plan_id'];
+                    LambdaRequest::postrequest('form', 'formentity/submitform', ['formdata' => (array)$plandata, 'entity_id' => '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685', 'user_id' => $user_id, 'partition' => $partition ]);
+                    $post['plan_id'] = [];
+                    foreach($post['doctor_name'] as $i => $dn) {
+                        $post['plan_id'][] = $plandata->id;
+                        DB::table('team3_nebyatra_doctors')->updateOrInsert(
+                                                ['user_id' => $user_id, 'mobile_number' => $post['mobile_number'][$i] ],
+                                                ['doctor_name' => $dn, 'email_id' => $post['email_id'][$i], 'speciality' => $post['speciality'][$i], 'location' => $post['location'][$i], 'district' => $post['district'][$i], 'state' => $post['state'][$i], 'date_added' => $post['record_date'][$i] ]
+                                            );
+                    }
+
+                }
+                break;
         }
 
         return $post;
@@ -493,12 +736,49 @@ class FormController extends Controller
 
     public function history(Request $request) {
         $formdata = $request->session()->get('formdata');
+        //Log::debug(print_r($formdata, true));
         $form_id = $request->input('form_id', $formdata->form_id);
+        $formdata->form_id = $form_id;
+        $request->session()->put('formdata', $formdata);
         //echo '
'; print_r($formdata); exit;
         $history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
         //echo '
'; print_r($history); print_r($formdata); exit;
+        //Log::debug(print_r($history, true));
+        if($form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') {
+            $plan_id = $request->input('plan_id', '');
+            $submissions = [];
+            foreach($history->data->submissions as $sub) {
+                if(isset($sub->formdata->plan_id) && $sub->formdata->plan_id == $plan_id) {
+                    $submissions[] = $sub;
+                }
+            }
+            $data = ['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $submissions, 'formname' => $history->data->formname, 'form_id' => $form_id ];
+        } else {
+            $data = ['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $history->data->submissions, 'formname' => $history->data->formname, 'form_id' => $form_id ];
+        }
+
+        if($request->input('export', false)) {
+            $exceldata = [];
+            $exceldata[] = [$formdata->title];
+            $exceldata[] = [''];
+            $headers = ['Submission Date', 'Submitted By', 'Approval Status'];
+            foreach($history->data->questions as $question) {
+                $headers[] = $question->label;
+            }
+            $exceldata[] = $headers;
+            foreach($history->data->submissions as $submission) {
+                $row = [];
+                $row[] = $submission->createdAt;
+                $row[] = isset($submission->user_info->name) ? $submission->user_info->name : '';
+                $row[] = isset($submission->workflow_status) ? $submission->workflow_status : '';
+                foreach($history->data->questions as $q => $v) {
+                    $row[] = isset($submission->formdata->{$q}) ? $submission->formdata->{$q} : '-';
+                }
+                $exceldata[] = $row;
+            }
+            return Excel::download(new InvoicesExport($exceldata), $formdata->title.'.xlsx');
+        }
 
-        $data = ['questions' => $history->data->questions, 'submissions' => $history->data->submissions, 'formname' => $history->data->formname, 'form_id' => $form_id ];
         if (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id.'-history')) {
             return view('form.'.$formdata->partition.'.'.$formdata->form_id.'-history')->with($data);
         } elseif (\View::exists('form.'.$formdata->form_id.'-history')) {
@@ -517,13 +797,13 @@ class FormController extends Controller
         //'user_id' => $formdata->user_id,
         $finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'partition' => $formdata->partition, 'id' => $id ]);
         $formdata->title = $finfo->data->formdata->title;
-        Log::debug(print_r(['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ], true));
+        //Log::debug(print_r($finfo->data->formdata, true));
         if (\View::exists('form.'.$formdata->partition.'.'.$formdata->form_id)) {
-            return view('form.'.$formdata->partition.'.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id ]);
+            return view('form.'.$formdata->partition.'.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
         } elseif (\View::exists('form.'.$formdata->form_id)) {
-            return view('form.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id ]);
+            return view('form.'.$formdata->form_id)->with(['questions' => $finfo->data->questions,'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
         } else {
-            return view('form.common')->with(['questions' => $finfo->data->questions, 'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id ]);
+            return view('form.common')->with(['questions' => $finfo->data->questions, 'form_id' => $formdata->form_id, 'form' => $formdata, 'id' => $id, 'formdata' => $finfo->data->formdata ]);
         }
     }
 
@@ -567,12 +847,17 @@ class FormController extends Controller
 
     public function metricreport(Request $request) {
         $post = $request->input();
+        Log::debug(print_r($post, true));
         $token = $request->header('Authorization');
         if($token != '') {
             $request->session()->put('metric_access_key', $token);
+        } elseif(array_key_exists('authorization', $post)) {
+            $token = $post['authorization'];
+            $request->session()->put('metric_access_key', $token);
         } else {
             $token = $request->session()->get('metric_access_key');
         }
+        //Log::debug('Token is:' . $token);
         $download = (isset($post['download']) && $post['download'] == 1) ? 1 : 0;
         $email = (isset($post['email']) && $post['email'] == 1) ? 1 : 0;
         $s3 = (isset($post['s3']) && $post['s3'] == 1) ? 1 : 0;
@@ -581,7 +866,7 @@ class FormController extends Controller
         unset($post['s3']);
 
         $response = LambdaRequest::postrequest('metric', 'metric_report/view', $post, $token);
-        //Log::debug(print_r($response, true));
+        Log::debug(print_r($response, true));
         //echo '
'; print_r($response); print_r($post); exit;
 
         $breadcrumbs = [];
@@ -684,6 +969,11 @@ class FormController extends Controller
                             $row = [];
                             $row[] = $contact->name;
                             $row[] = $contact->msl_code;
+
+                            if(!isset($response->data->graph->values->users->{$contact->id})) {
+                                continue;
+                            }
+
                             $user = $response->data->graph->values->users->{$contact->id};
 
                             $row[] = $user->name;
@@ -776,7 +1066,7 @@ class FormController extends Controller
         }
     }
 
-   protected function deliverpersonalization($formdata, $questions, $personalizations) {
+    protected function deliverpersonalization($formdata, $questions, $personalizations) {
         $additional_info = $this->get_additional_info($formdata);
         //echo '
'; print_r($formdata); print_r($questions); print_r($personalizations);  exit;
         $data = ['questions' => $questions, 'form' => $formdata, 'form_id' => $formdata->form_id, 'personalizations' => $personalizations ];
@@ -938,6 +1228,22 @@ class FormController extends Controller
                             imagettftext($outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $text);
                         }
                         break;
+
+                    case 'multiline':
+                        if(isset($form_info[$pos->field_name])) {
+                            $font = storage_path('app').'/fonts/'.$pos->font;
+                            $pos->color = explode('-',$pos->color);
+                            $white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]);
+                            $text = $form_info[$pos->field_name];
+                            $lines = wordwrap($text, $pos->linechars, "\n", true); 
+                            $xPosition = $pos->x; 
+                            $yPosition = $pos->y;
+                            foreach (explode("\n", $lines) as $line) {
+                                imagettftext($outputImage, $pos->size, 0, $xPosition, $yPosition, $white, $font, $line);
+                                $yPosition += $pos->linehieght;
+                            }
+                        }
+                        break;
                 }
             }
 
@@ -1188,6 +1494,7 @@ class FormController extends Controller
         } else {
             //echo '
';print_r($form_info); exit;
             $res = ['folder' => 'personalized/'.$form_info['form_id'].'/', 'images' => $form_info['genareted_image'] ];
+            $res['form_info'] = $form_info;
             if(isset($form_info['pdf_file'])) {
                 $res['pdf_file'] = $form_info['pdf_file'];
             }
@@ -1204,6 +1511,136 @@ class FormController extends Controller
         //return view('form.download')->with($res);
     }
 
+    public function downloadtempletepdf(Request $request) {
+        $post = $request->all();
+        $id = $post['id'];
+        $formdata = $request->session()->get('formdata');
+        $finfo = LambdaRequest::postrequest('form', 'formentity/getformdefination', ['form_id' => $formdata->form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'id' => $id ]);
+        //echo '
'; print_r($finfo); exit;
+        foreach($finfo->data->personalizations as $pers) {
+            if($pers->id == $finfo->data->formdata->personalization_id) {
+                $personalisation = $pers;
+            }
+        }
+
+        $genareted_image = [];
+        $pdf_images = [];
+        foreach($personalisation->templates as $i => $template) {
+            $temp = pathinfo($template);
+            if(!file_exists(storage_path('app/public/personalized/'.$formdata->form_id.'/template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'] ))) {
+                //Log::debug(print_r($form_info['form_info'], true));
+                $ch = curl_init();
+                curl_setopt($ch, CURLOPT_URL, $template);
+                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks!
+                curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image.
+                $data = curl_exec($ch);
+                curl_close($ch);
+                Storage::disk('public')->put('personalized/'.$formdata->form_id.'/template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'], $data);
+            }
+
+            $folder = storage_path('app/public/personalized/'.$formdata->form_id);
+            $templatename = 'template-'.$personalisation->id.'_'.$i.'.'.$temp['extension'];
+            $outputImage = $this->retimage($folder.'/'.$templatename);
+            $templatesize = getimagesize( $folder.'/'.$templatename );
+            $pdfparams = ["width"=>$templatesize[0],"height"=>$templatesize[1]];
+
+            //echo '
'; print_r($templatesize); echo '
'; exit; + $positions = json_decode($personalisation->positions[$i]); + $maskimages = []; + foreach($positions as $pos) { + if($pos->type == 'image' && isset($pos->fill) && $pos->fill == 'mask') { + $maskimages[] = $pos; + } + } + if(sizeof($maskimages) > 0) { + $w = imagesx($outputImage); + $h = imagesy($outputImage); + $tempimage = imagecreatetruecolor($w, $h); + } + foreach($maskimages as $pos) { + $image = storage_path( str_replace('/storage', 'app/public', $finfo->data->formdata->{$pos->field_name} ) ); + $photoimg = $this->retimage( $image ); + $photosize = getimagesize( $image ); + imagecopyresized($tempimage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]); + } + if(sizeof($maskimages) > 0) { + imagecopyresized($tempimage,$outputImage,0,0,0,0,$w,$h,$w,$h); + $outputImage = $tempimage; + } + foreach(json_decode($personalisation->positions[$i]) as $pos) { + // if($pos->field_name == 'link') { + // $pdfparams['link_params_x'] = $pos->x; + // $pdfparams['link_params_y'] = $pos->y; + // $pdfparams['link_params_url'] = $finfo->data->formdata->{$pos->field_name}; + // continue; + // } + switch($pos->type) { + case 'image': + if(!(isset($pos->fill) && $pos->fill == 'mask')) { + $image = storage_path( str_replace('/storage', 'app/public', $finfo->data->formdata->{$pos->field_name} ) ); + $photoimg = $this->retimage( $image ); + $photosize = getimagesize( $image ); + imagecopyresized($outputImage,$photoimg,$pos->x,$pos->y,0,0,$pos->width,$pos->height, $photosize[0], $photosize[1]); + } + break; + case 'text': + case 'date': + if(isset($finfo->data->formdata->{$pos->field_name})) { + $font = storage_path('app').'/fonts/'.$pos->font; + $pos->color = explode('-',$pos->color); + $white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]); + $text = $finfo->data->formdata->{$pos->field_name}; + if(isset($pos->prefix) && !empty($pos->prefix)) { + $text = $pos->prefix . $text; + } + if($pos->type == 'date') { + $text = date($pos->format, strtotime($text)); + } + if(isset($pos->suffix) && !empty($pos->suffix)) { + $text = $text . $pos->suffix; + } + if(isset($pos->align) && $pos->align == 'center') { + $box = imagettfbbox($pos->size, 0, $font, $text); + $pos->x = explode('-', $pos->x); + $pos->x = $pos->x[0] + (($pos->x[1] - $pos->x[0]) - $box[2])/2; + } + imagettftext($outputImage, $pos->size, 0, $pos->x, $pos->y, $white, $font, $text); + } + break; + + case 'multiline': + if(isset($finfo->data->formdata->{$pos->field_name})) { + $font = storage_path('app').'/fonts/'.$pos->font; + $pos->color = explode('-',$pos->color); + $white = imagecolorallocate($outputImage, $pos->color[0], $pos->color[1], $pos->color[2]); + $text = $form_info[$pos->field_name]; + $lines = wordwrap($text, $pos->linechars, "\n", true); + $xPosition = $pos->x; + $yPosition = $pos->y; + foreach (explode("\n", $lines) as $line) { + imagettftext($outputImage, $pos->size, 0, $xPosition, $yPosition, $white, $font, $line); + $yPosition += $pos->linehieght; + } + } + break; + } + } + + $filename = 'generated-'.strtotime("now").'_'.$i.'.png'; + $genareted_image[] = $filename; + + imagepng($outputImage, $folder.'/'.$filename); + imagedestroy($outputImage); + + $res = ['folder' => 'personalized/'.$formdata->form_id.'/', 'images' => $genareted_image, 'form_info' => (array)$finfo->data->formdata ]; + if (\View::exists('form.'.$formdata->partition.'.download-'.$formdata->form_id)) { + return view('form.'.$formdata->partition.'.download-'.$formdata->form_id)->with($res); + } else { + return view('form.download')->with($res); + } + } + } + public function downloadpersonalizationzip($files, Request $request) { $post = $request->input(); $files = json_decode(base64_decode($files)); @@ -1227,17 +1664,24 @@ class FormController extends Controller public function downloaddata(Request $request) { $formdata = $request->session()->get('formdata'); + //$request->session()->put('finfo', $finfo); $post = $request->all(); $form_id = $request->input('form_id', $formdata->form_id); - //echo '
'; print_r($formdata); exit;
-        $history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'team_report' => 1 ]);
-
+        if(($form_id == '1718178830-d871301e-312b-4a60-9c68-15afa4ce6163' && (in_array('1655449173-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449172-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) || in_array('1655449171-a39a5017-8232-4d58-a253-90d06bc733d0', $formdata->roles) ) ) || 
+        (($form_id == '1713425460-8bdf7394-01b5-48f3-8985-343b465dd685' || $form_id == '1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a') && (in_array('1655449175-a39a5017-8232-4d58-edm-90d06bc733d0', $formdata->roles) || in_array('1655445669-148e5dc2-3983-4ec6-bfho-a52c494a92132', $formdata->roles) || in_array('1655449179-a39a5017-8232-4d58-rbm-90d06bc733d0', $formdata->roles) ) ) ) {
+            $finfo = $request->session()->get('finfo');
+            $history = LambdaRequest::postrequest('form', 'formentity/getforminfo', ['finfo' => $finfo]);
+            //echo '
'; print_r($finfo); exit;
+        } else {
+            $history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition, 'team_report' => 1 ]);
+        }
+        Log::debug(print_r($formdata, true));
         //echo '
'; print_r($history); exit;
         $exceldata = [];
         $exceldata[] = [$formdata->title];
      
         $exceldata[] = [''];
-        $headers = ['Submission Date', 'Submitted By'];
+        $headers = ['Submission Date', 'Submitted By', 'Approval Status'];
         foreach($history->data->questions as $question) {
             $headers[] = $question->label;
         }
@@ -1246,6 +1690,7 @@ class FormController extends Controller
             $row = [];
             $row[] = $submission->createdAt;
             $row[] = isset($submission->user_info->name) ? $submission->user_info->name : '';
+            $row[] = isset($submission->workflow_status) ? $submission->workflow_status : '';
             foreach($history->data->questions as $q => $v) {
                 $row[] = isset($submission->formdata->{$q}) ? $submission->formdata->{$q} : '-';
             }
@@ -1326,7 +1771,7 @@ class FormController extends Controller
     }
 
     public function getdoctorlist(Request $request) {
-        $response = LambdaRequest::getrequest('ums', 'contact/get_my_contacts', ['hierarchy' => $request->input('hierarchy', ''), 'partition' => $request->input('partition', '') ]);
+        $response = LambdaRequest::getrequest('contact', 'contact/get_my_contacts', ['hierarchy' => $request->input('hierarchy', ''), 'partition' => $request->input('partition', '') ]);
         $docs = [];
         foreach($response->data->items as $item) {
             $docs[] = ['value' => $item->id, 'display' => $item->name, 'contact' => $item];  
@@ -1391,6 +1836,18 @@ class FormController extends Controller
                 $response = curl_exec($handler);
                 Log::debug(print_r($response, true));
             }
+            if($formdata->form_id == '1711710347-b4f08442-60dc-4a4c-a9c7-a759d95c5cad') {
+                unset($post['form_id']);
+                Log::debug(print_r($post, true));
+                $handler = curl_init();
+                curl_setopt($handler, CURLOPT_URL, "https://gnpdoctor.buildrapport.co/neblogisticsave/faultynebulizer");
+                curl_setopt($handler, CURLOPT_POSTFIELDS, http_build_query($post));
+                curl_setopt($handler, CURLOPT_POST, 1);
+                curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
+                $response = curl_exec($handler);
+                Log::debug(print_r($response, true));
+            }
+            
             if($finfo->status == 'success') {
                 return response()->json(['status' => 'success']);
             } else {
@@ -1488,4 +1945,100 @@ class FormController extends Controller
                 break;
         }
     }
+
+    public function iframeupload(Request $request) {
+        return view('form.iframeupload');
+    }
+
+    public function allsubmissions(Request $request) {
+        $post = $request->all();
+        $user = Auth::user();
+        $history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'partition' => $post['partition']], 120);
+
+        if(isset($post['download'])) {
+            $exceldata = [];
+            $headers = ['User Name','User Email','User Phone', 'Submitted On'];
+            foreach($history->data->questions as $que) {
+                $headers[] = $que->question;
+            }
+            $exceldata[] = $headers;
+            $submissions = json_decode(file_get_contents( $history->data->submission_json ), false);
+            foreach($submissions as $sub) {
+                $subs = [$sub->submitted_by, $sub->user_email, $sub->user_phone, $sub->submitted_on];
+                foreach($history->data->questions as $que) {
+                    $subs[] = $sub->{$que->code};
+                }
+                $exceldata[] = $subs;
+            }
+            $report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
+            $filename = 'reports/'.$post['form_id'].'-report.xlsx';
+            $res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
+            $headers = array( 'Content-Type: application/excel', );
+            return Response::download(storage_path('app/public')."/".$filename, $post['form_id'].'-report.xlsx', $headers);            
+        } else {
+            //echo '
'; print_r((array)$history->data); exit;
+            if (\View::exists('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')) {
+                return view('form.'.$post['partition'].'.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
+            } elseif (\View::exists('form.'.$post['form_id'].'-allsubmissions')) {
+                return view('form.'.$post['form_id'].'-allsubmissions')->with((array)$history->data);
+            } else {
+                return view('form.allsubmissions')->with((array)$history->data);
+            }
+        }
+    }
+
+    public function fullworkflow(Request $request) {
+        $post = $request->all();
+        $user = Auth::user();
+        $history = LambdaRequest::signedrequest('post', 'form', 'formentity/getallsubmissions', ['form_id' => $post['form_id'], 'approver' => Auth::user()->user_id, 'partition' => $post['partition']], 120);
+        //echo '
'; print_r($history); exit;
+        if(isset($post['download'])) {
+            $exceldata = [];
+            $headers = ['User Name','User Email','User Phone', 'Submitted On'];
+            foreach($history->data->questions as $que) {
+                $headers[] = $que->question;
+            }
+            $exceldata[] = $headers;
+            $submissions = json_decode(file_get_contents( $history->data->submission_json ), false);
+            foreach($submissions as $sub) {
+                $subs = [$sub->submitted_by, $sub->user_email, $sub->user_phone, $sub->submitted_on];
+                foreach($history->data->questions as $que) {
+                    $subs[] = $sub->{$que->code};
+                }
+                $exceldata[] = $subs;
+            }
+            $report = Excel::raw(new InvoicesExport($exceldata), 'Xlsx');
+            $filename = 'reports/'.$post['form_id'].'-report.xlsx';
+            $res = Excel::store(new InvoicesExport($exceldata), 'public/'.$filename);
+            $headers = array( 'Content-Type: application/excel', );
+            return Response::download(storage_path('app/public')."/".$filename, $post['form_id'].'-report.xlsx', $headers);            
+        } else {
+            //echo '
'; print_r((array)$history->data); exit;
+            if (\View::exists('form.'.$post['partition'].'.'.$post['form_id'].'-fullworkflow')) {
+                return view('form.'.$post['partition'].'.'.$post['form_id'].'-fullworkflow')->with((array)$history->data);
+            } elseif (\View::exists('form.'.$post['form_id'].'-fullworkflow')) {
+                return view('form.'.$post['form_id'].'-fullworkflow')->with((array)$history->data);
+            } else {
+                return view('form.fullworkflow')->with((array)$history->data);
+            }
+        }
+    }
+
+    public function uploadchunk(Request $request) {
+        $path = '';
+        $name = 'chunk_video';
+        $folder = 'chunk_video';
+        try {
+            if( $request->file($name) ) {
+                $path = $request->file($name)->store($folder);
+                $path = '/'.str_replace('public', 'storage', $path);
+            }
+        } catch (AwsException $e) {
+            Log::debug($e->getMessage());
+        }
+        return response()->json(['status' => 'success', 'filepath' => $path ]);
+        return $path;
+    }
+
+
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/FormactionController.php b/app/Http/Controllers/FormactionController.php
index 53c55c40..67d94e26 100644
--- a/app/Http/Controllers/FormactionController.php
+++ b/app/Http/Controllers/FormactionController.php
@@ -62,10 +62,10 @@ class FormactionController extends Controller
             'groups' => ['title' => 'Groups', 'type' => 'multiselect', 'required' => true, 'values' => $groups_dd ],
             'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'required' => true, 'values' => $roles_dd ],
 
-            'target_type' => ['title' => 'Target Type', 'type' => 'select', 'required' => true, 'values' => ['form' => 'Web Form', 'survey' => 'Surveys', 'quiz' => 'Quizs', 'doctorlist' => 'Doctor List', 'external' => 'External Webpage', 'nativeform' => 'Native Form (coming soon)']  ],
+            'target_type' => ['title' => 'Target Type', 'type' => 'select', 'required' => true, 'values' => ['form' => 'Web Form', 'survey' => 'Surveys', 'quiz' => 'Quizs', 'doctorlist' => 'Doctor List', 'external' => 'External Webpage', 'internal_action' => 'Internal Action']  ],
             'form_id' => ['title' => 'Form', 'type' => 'select', 'values' => $forms_dd ],
             'link_type' => ['title' => 'Menu Type (valid of forms only)', 'type' => 'select', 'required' => true, 'values' => ['form' => 'Web Form', 'list' => 'Submitted Data']  ],
-            'external_url' => ['title' => 'External Url', 'type' => 'text'],
+            'external_url' => ['title' => 'External Url / Internal Action', 'type' => 'text'],
             'visiblity_check' => ['title' => 'Enable Schedule', 'type' => 'yesno', 'required' => true],
             'validity_start' => ['title' => 'Schedule Start Date', 'type' => 'datetime', 'required' => true],
             'validity_end' => ['title' => 'Schedule End Date', 'type' => 'datetime', 'required' => true],
diff --git a/app/Http/Controllers/FormentityController.php b/app/Http/Controllers/FormentityController.php
index 95f2a4aa..de501765 100644
--- a/app/Http/Controllers/FormentityController.php
+++ b/app/Http/Controllers/FormentityController.php
@@ -42,7 +42,7 @@ class FormentityController extends Controller
             $roles_dd[$role->id] = $role->name;
         }
 
-        $coattr = $this->getlambda('get', 'ums', 'contactattribute', 'get_all');
+        $coattr = $this->getlambda('get', 'contact', 'contactattribute', 'get_all');
         $coattr_dd = [];
         foreach($coattr->data->items as $coatt){
             $coattr_dd[$coatt->code] = $coatt->attribute;
@@ -66,15 +66,15 @@ class FormentityController extends Controller
 
             'roles_email_notification' => ['title' => 'Email Notification to Roles', 'type' => 'multiselect', 'values' => $roles_dd ],
             'roles_push_notification' => ['title' => 'Push Notification to Roles', 'type' => 'multiselect', 'values' => $roles_dd ],
+            'allow_non_hierarchy_submission' => ['title' => 'Allow Non Hierarchy Submission', 'type' => 'yesno', 'required' => true],
 
             'workflow' => ['title' => 'Enable Workflow', 'type' => 'yesno', 'required' => true],
             'workflow_type' => ['title' => 'Workflow type', 'type' => 'select', 'required' => true, 'values' => ['single' => 'Single Persoon', 'multiple' => 'Multiple person', 'sequencial' => 'Sequencial']  ],
             'approver_can_edit' => ['title' => 'Approver can edit entry', 'type' => 'yesno', 'required' => true],
             'is_personalized' => ['title' => 'Is Personalization Needed', 'type' => 'yesno', 'required' => true],
+            'allow_delete_by_user' => ['title' => 'Allow Submission Delete by User', 'type' => 'yesno', 'required' => true],
+            'export_fields' => ['title' => 'Export Fields', 'type' => 'textarea', 'required' => false, 'fullwidth' => true ],
             'workflow_approvers' => ['title' => 'Metric', 'type' => 'mapping', 'required' => true, 'approvers' => $users_dd, 'fullwidth' => true ],
-
-            
-            
         ];
     }
 
@@ -85,6 +85,7 @@ class FormentityController extends Controller
             $values->manager1_push_notification = isset($values->manager1_push_notification) ? $values->manager1_push_notification : 'no';
             $values->manager2_email_notification = isset($values->manager2_email_notification) ? $values->manager2_email_notification : 'no';
             $values->manager2_push_notification = isset($values->manager2_push_notification) ? $values->manager2_push_notification : 'no';
+            $values->export_fields = isset($values->export_fields) ? $values->export_fields : '';
         }
         //echo '
'; print_r($values); exit;
         return $values;
@@ -121,11 +122,13 @@ class FormentityController extends Controller
             // $forfields = ['is-aware-of-the-customer-perspective-potential-prescription-position','has-customer-plan-based-on-customer-perspective','rcpawardicu-quantified-rcpa-comp-taken-pob-dr-perspective-on-molecule-or-price-etc','call-objective-planned-question-opening-statement-materials-and-objection-anticipated','greeted-customer-appropriately','used-planned-opening-statement','gained-attention-of-the-customer','was-ready-with-tab-maintained-eye-contact-with-doctor-had-a-clear-voice','asked-planned-question-as-per-call-planning','asked-question-related-to-customer-behaviourbelief-service','listened-attentively-and-asked-follow-up-question-if-required','generated-desired-response-from-customer','maintained-the-sequence-of-product-as-per-the-speciality-p1p2p3','shared-benefit-of-productdevicesservices-as-per-marketing-strategy','shared-informationused-the-materialstools-as-per-plan-demonstrated-and-discussed-cipla-devices','utilized-the-tab-effectively-smooth-navigation-highlighted-studies-zoomed-graphs-etc','listened-attentively-acknowledged-concern','asked-questions-to-seek-clarity-on-questionobjection','shared-the-relevant-information','confirmed-if-objectionquestion-was-addressed-assured-follow-through-actions-if-required-and-returned-to-call-flow','summarized-the-key-discussion-points','gained-agreement-basis-call-objective-from-the-doctor','quantified-the-demand-with-rx','left-lblreminder-of-focused-product','total_score','area-of-strength','area-of-development','coaching-objective','development-time-frame','next-coaching-visit','development-action-plan'];
 
             foreach ($records as $record) {
-                $record['record_date'] = '2022-12-20';
-                $record['created_date'] = '1671758762';
+                $record['record_date'] = '2024-04-02';
+                $record['created_date'] = strtotime("now");
                 $formdata = [];
                 foreach($forfields as $field) {
-                    $formdata[$field] = $record[$field] == 'Yes' ? 1 : (  $record[$field] == 'No' ? 0 : $record[$field] ) ;
+                    if(isset($record[$field])) {
+                        $formdata[$field] = $record[$field] == 'Yes' ? 1 : (  $record[$field] == 'No' ? 0 : $record[$field] ) ;
+                    }
                 }
                 $recs[] = [
                     'entity_id' => $entity_id,
diff --git a/app/Http/Controllers/FormexportController.php b/app/Http/Controllers/FormexportController.php
index e34b2073..e1464a0b 100644
--- a/app/Http/Controllers/FormexportController.php
+++ b/app/Http/Controllers/FormexportController.php
@@ -68,6 +68,8 @@ class FormexportController extends Controller
 
     protected function get_form_fields($type, $values){
         $forms = $this->getlambda('get', 'form', 'formentity', 'dropdown');
+        //echo '
'; print_r($forms); exit;
+
         $forms_dd = [];
         
         $uforms = Auth::user()->forms;
@@ -90,10 +92,12 @@ class FormexportController extends Controller
 
         
         $this->_request->session()->put('form_list_dropdown', $forms_dd);
+        $this->_request->session()->put('form_questions_dropdown', $forms->data->questions);
 
         //echo '
'; print_r($forms_dd); exit;
         return [
             'form_id' => ['title' => 'Select Form', 'type' => 'select', 'required' => true, 'values' => $forms_dd],
+            'date_field' => ['title' => 'Select Date Field', 'type' => 'select', 'required' => true, 'values' => []],
             'start_date' => ['title' => 'Start Date', 'type' => 'date', 'required' => true],
             'end_date' => ['title' => 'End Date', 'type' => 'date', 'required' => true],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
@@ -111,4 +115,24 @@ class FormexportController extends Controller
         return $values;
     }
 
+    public function form($type, $id = null) {
+    	$values = [];
+    	if($type == 'edit') {
+    		$response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_one', ['id' => $id]);
+    		$values = $response->data->item;
+            //echo '
'; print_r($values); exit;
+    	}
+        //echo '
'; print_r($values); exit;
+        $data = $this->_beforeform($type, $values);
+    	$fields = $this->get_form_fields($type, $values);
+        $questions = $this->_request->session()->get('form_questions_dropdown');
+        return $this->view('form')->with([
+        	'title' => $this->_title,
+        	'mode' => $type,
+        	'fields' => $fields,
+        	'base_url' => $this->_base_url,
+        	'item' => $values,
+            'questions' => $questions
+        ]);
+    }
 }
diff --git a/app/Http/Controllers/FormquestionController.php b/app/Http/Controllers/FormquestionController.php
index 58d6d80d..298bc1d9 100644
--- a/app/Http/Controllers/FormquestionController.php
+++ b/app/Http/Controllers/FormquestionController.php
@@ -43,21 +43,23 @@ class FormquestionController extends Controller
             'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
             //'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image'],
             'question' => ['title' => 'Question', 'type' => 'text'],
+            'sort_order' => ['title' => 'Sort Order', 'type' => 'text'],
             'status' => ['title' => 'Status', 'type' => 'select'],
         ];
     }
 
     protected function get_form_fields($type, $values){
-        $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
-        $groups_dd = [];
-        foreach($groups->data->items as $group){
-            $groups_dd[$group->id] = $group->name;
-        }
+        // $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
+        // $groups_dd = [];
+        // foreach($groups->data->items as $group){
+        //     $groups_dd[$group->id] = $group->name;
+        // }
         return [
             'question' => ['title' => 'Question', 'type' => 'text', 'required' => true, 'fullwidth' => true],
             'code' => ['title' => 'Code (small caps without spaces and special chars except "_")', 'type' => 'text', 'required' => true],
             'type' => ['title' => 'Question Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'number' => 'Number', 'date' => 'Date', 'time' => 'Time', 'email' => 'Email', 'url' => 'Url', 'dropdown' => 'Dropdown', 'checkbox' => 'Checkbox',  'radio' => 'Radio', 'multitextbox' => 'Multi Text Boxes', 'contacts' => 'Contacts', 'file' => 'File Upload']  ],
             'required' => ['title' => 'Is Required', 'type' => 'yesno', 'required' => true],
+            'sort_order' => ['title' => 'Sort Order', 'type' => 'number', 'required' => false],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
             'options' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
         ];
@@ -80,7 +82,9 @@ class FormquestionController extends Controller
     }
 
     protected function _beforeform($type, $values) {
-
+        if($type == 'edit') {
+            $values->sort_order = isset($values->sort_order) ? $values->sort_order : 0;
+        }
         return $values;
     }
 
diff --git a/app/Http/Controllers/GroupController.php b/app/Http/Controllers/GroupController.php
index d85d7493..e9dd5984 100644
--- a/app/Http/Controllers/GroupController.php
+++ b/app/Http/Controllers/GroupController.php
@@ -10,7 +10,7 @@ class GroupController extends Controller
     public function __construct()
     {
         $this->middleware('auth');
-        $this->_service = 'ums';
+        $this->_service = 'detailing';
         $this->_module = 'group';
         $this->_viewname = 'group';
         $this->_title = 'Groups';
diff --git a/app/Http/Controllers/HierarchyController.php b/app/Http/Controllers/HierarchyController.php
index c175a5f8..59a89656 100644
--- a/app/Http/Controllers/HierarchyController.php
+++ b/app/Http/Controllers/HierarchyController.php
@@ -50,12 +50,21 @@ class HierarchyController extends Controller
         foreach($users->data->items as $user){
             $users_dd[$user->id] = $user->firstname . ' ' . $user->lastname . ' (' . $user->employee_code . ')';
         }
-        $positions = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
-        //echo '
'; print_r($positions); exit;
+
         $positions_dd = [];
-        foreach($positions->data->items as $position){
-            $positions_dd[$position->code] = $position->name . ' ('.$position->code.')';
+        // foreach($response->data->items as $item) {
+        //     $positions_dd[$item->code] = $item->name . ' ('.$item->code.')';
+        // }
+        // asort($positions_dd);
+
+        $positions = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
+        foreach($positions->data->items as $item) {
+            $positions_dd[$item->code] = $item->name . ' ('.$item->code.')';
         }
+        asort($positions_dd);
+        // foreach($positions->data->items as $position){
+        //     $positions_dd[$position->code] = $position->name . ' ('.$position->code.')';
+        // }
         //echo '
'; print_r($items); exit;
         return $this->view('list')->with([
             'title' => $this->_title,
diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php
index 305d4b2c..0fb95158 100644
--- a/app/Http/Controllers/LoginController.php
+++ b/app/Http/Controllers/LoginController.php
@@ -8,6 +8,7 @@ use App\Http\Requests\LambdaRequest;
 use App\Models\User;
 use Illuminate\Support\Facades\Hash;
 use DB;
+use Log;
 
 class LoginController extends Controller
 {
@@ -53,6 +54,7 @@ class LoginController extends Controller
         $post['device'] = 'portal';
         $response = LambdaRequest::postrequest('ums', 'auth/verify', $post);
         //echo '
'; print_r($response); exit;
+        //Log::debug(print_r($response, true));
         if($response->statusCode == 200 && $response->status == "success") {
             User::updateOrCreate(
                 ['email' => $response->data->user->domain . '-' . $response->data->user->email],
diff --git a/app/Http/Controllers/MagmediaController.php b/app/Http/Controllers/MagmediaController.php
index b3c34547..1c40c49e 100644
--- a/app/Http/Controllers/MagmediaController.php
+++ b/app/Http/Controllers/MagmediaController.php
@@ -60,17 +60,41 @@ class MagmediaController extends Controller
         foreach($groups->data->items as $group){
             $groups_dd[$group->id] = $group->name;
         }
+
+        $forms = $this->getlambda('get', 'form', 'formentity', 'dropdown');
+        $forms_dd = [];
+        foreach($forms->data->items as $form){
+            $forms_dd[$form->id] = $form->title;
+        }
+
+        $forms = $this->getlambda('get', 'form', 'survey', 'dropdown');
+        foreach($forms->data->items as $form){
+            $forms_dd[$form->id] = $form->title . ' (Survey)';
+        }
+
+        $quizs = $this->getlambda('get', 'form', 'quiz', 'dropdown');
+        foreach($quizs->data->items as $form){
+            $forms_dd[$form->id] = $form->name . ' (Quiz)';
+        }
+        $metrics = $this->getlambda('get', 'metric', 'metric', 'get_all');
+        $metric_dd = ['NA' => 'Tracking Not Needed'];
+        foreach($metrics->data->items as $metric){
+            $metric_dd[$metric->id] = $metric->name;
+        }
         $fields = [
             'name' => ['title' => 'Media Name', 'type' => 'text', 'required' => true],
             'points' => ['title' => 'Points', 'type' => 'text', 'required' => true],
             'description' => ['title' => 'Media Description', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
-            'media_type' => ['title' => 'Media Types', 'type' => 'select', 'required' => true, 'values' => ['image' => 'Image', 'video' => 'Video', 'pdf' => 'PDF', 'audio' => 'Audio', 'gallery' => 'Gallery', 'form' => 'Form', 'external' => 'External Url',  'scorm' => 'Scorm']  ],
+            'media_type' => ['title' => 'Media Types', 'type' => 'select', 'required' => true, 'values' => ['image' => 'Image', 'video' => 'Video', 'pdf' => 'PDF', 'audio' => 'Audio', 'gallery' => 'Gallery', 'form' => 'Form', 'quiz' => 'Quiz', 'survey' => 'Survey', 'external' => 'External Url',  'scorm' => 'Scorm']  ],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
-
+            'form_id' => ['title' => 'Form', 'type' => 'select', 'values' => $forms_dd ],
             //'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image', 'required' => true],
             'media_url' => ['title' => 'Media File (image, video, pdf, audio, scorm) (for gallery, upload zip file with all images)', 'type' => 'file'],
             'gallery' => ['title' => 'Multiple Media File (only for gallery)', 'type' => 'multiimage'],
             'ext_url' => ['title' => 'Media Url (form, external)', 'type' => 'text'],
+
+            'mapped_metric' => ['title' => 'Point Metric', 'type' => 'select', 'values' => $metric_dd, 'required' => true ],
+            'count_metric' => ['title' => 'Count Metric', 'type' => 'select', 'values' => $metric_dd, 'required' => true ],
         ];
         return $fields;
     }
@@ -126,6 +150,12 @@ class MagmediaController extends Controller
             unset($values->comments_users);
             unset($values->likes_count);
             unset($values->comments_count);
+            if(!isset($values->mapped_metric)) {
+                $values->mapped_metric = '';
+            }
+            if(!isset($values->count_metric)) {
+                $values->count_metric = '';
+            }
 
             //echo '
'; print_r($values); exit;
         }
diff --git a/app/Http/Controllers/MetricreportController.php b/app/Http/Controllers/MetricreportController.php
index 299bfacb..2e9aad5c 100644
--- a/app/Http/Controllers/MetricreportController.php
+++ b/app/Http/Controllers/MetricreportController.php
@@ -95,24 +95,35 @@ class MetricreportController extends Controller
         switch($response->data->post->type) {
             case 'leaderboard':
             case 'scoreboard':
-                $headings = ["Rank", "User", "User Id", "Employee Code", "Designation", 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email',  'Zone', 'Region', "Area", "Territory", "Units", "Percent", "Active User"];
+                $headings = ["Rank", "User Id", "User Name", "Employee Code", "Designation"];
+                //'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email'
+                //echo '
'; print_r((array)$response->data->graph->values[0]->user->parents); exit;
+                foreach((array)$response->data->graph->values[0]->user->parents as $par) {
+                    $headings = array_merge($headings, ['Manager '.$par->level.' Name', 'Manager '.$par->level.' Emp Code']);
+                }
+                $headings = array_merge($headings, ['Zone', 'Region', "Area", "Territory", "Units (for Ranking)", "Percent of Highest", "Active User"]);
+                //echo '
'; print_r($headings); exit;
                 if(count($response->data->graph->values) > 0 && isset($response->data->graph->values[0]->stats->prescribers) ){
                     $headings[] = "Prescribers";
                 }
                 foreach($response->data->graph->metrics as $val) {
                     $headings[] = $val->display;
                 }
-
                 $exceldata[] = $headings;
                 foreach($response->data->graph->values as $val) {
-                    $rowdata = [(string)$val->rank, (string)$val->user->name, (string)$val->user->id,(isset($val->user->owner_info) && isset($val->user->owner_info->employee_code) ? $val->user->owner_info->employee_code : '-'), $val->user->designation];
+                    $rowdata = [(string)$val->rank, (string)$val->user->id,(string)$val->user->name, (string)$val->user->employee_code, $val->user->designation];
                     $user = $val->user;
-                    $rowdata[] = isset($user->manager1->name) ? $user->manager1->name : '-';
-                    $rowdata[] = isset($user->manager1->employee_code) ? $user->manager1->employee_code : '-';
-                    $rowdata[] = isset($user->manager1->email) ? $user->manager1->email : '-';
-                    $rowdata[] = isset($user->manager2->name) ? $user->manager2->name : '-';
-                    $rowdata[] = isset($user->manager2->employee_code) ? $user->manager2->employee_code : '-';
-                    $rowdata[] = isset($user->manager2->email) ? $user->manager2->email : '-';
+                    foreach((array)$user->parents as $par) {
+                        $rowdata[] = isset($par->name) ? $par->name : '-';
+                        $rowdata[] = isset($par->employee_code) ? $par->employee_code : '-';
+                        //$rowdata[] = isset($par->email) ? $par->email : '-';
+                    }
+                    // $rowdata[] = isset($user->manager1->name) ? $user->manager1->name : '-';
+                    // $rowdata[] = isset($user->manager1->employee_code) ? $user->manager1->employee_code : '-';
+                    // $rowdata[] = isset($user->manager1->email) ? $user->manager1->email : '-';
+                    // $rowdata[] = isset($user->manager2->name) ? $user->manager2->name : '-';
+                    // $rowdata[] = isset($user->manager2->employee_code) ? $user->manager2->employee_code : '-';
+                    // $rowdata[] = isset($user->manager2->email) ? $user->manager2->email : '-';
 
                     $rowdata[] = isset($user->positions->Zone) ? $user->positions->Zone : (isset($user->positions->Country) ? $user->positions->Country : '-' );
                     $rowdata[] = isset($user->positions->Region) ? $user->positions->Region : '-';
@@ -193,7 +204,7 @@ class MetricreportController extends Controller
                         $row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
                         $row[] = isset($user->roles) ? (is_array($user->roles) ? implode(',', $user->roles) : $user->roles) : '-';
                         foreach($response->data->graph->values->metrics as $metric) {
-                            $row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
+                            $row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : 0;
                         }
                         $exceldata[] = $row;
                     }
@@ -220,6 +231,9 @@ class MetricreportController extends Controller
                         foreach($response->data->graph->contact_attributes as $attr) {
                             $row[] = isset($contact->{$attr}) ? $contact->{$attr} : '';
                         }
+                        if(!isset($response->data->graph->values->users->{$contact->id})) {
+                            continue;
+                        }
 
                         $user = $response->data->graph->values->users->{$contact->id};
                         $row[] = $user->name;
@@ -240,12 +254,85 @@ class MetricreportController extends Controller
                         $row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
 
                         foreach($response->data->graph->values->metrics as $metric) {
-                            $row[] = isset($metric->stats->{$contact->id}) ? $metric->stats->{$contact->id} : '-';
+                            $row[] = isset($metric->stats->{$contact->id}) ? $metric->stats->{$contact->id} : 0;
                         }
                         $exceldata[] = $row;
                     }
                 }
                 break;
+            case 'incremental':
+                if($response->data->graph->chart == 'incremental') {
+                    $headers = ['User', 'Employee Code', 'Email', 'Designation', 'Manager 1 Name', 'Manager 1 Emp Code', 'Manager 1 Email', 'Manager 2 Name', 'Manager 2 Emp Code', 'Manager 2 Email',  'Zone', 'Region', "Area", "Territory", "Role"];
+                    // foreach($response->data->graph->values->metrics as $metric) {
+                    //     //$headers[] = $metric->metric;
+                    // }
+                    $graph = $response->data->graph;
+                    $period = explode('-', $post['period'])[0];
+                    $interval = 'P1D';
+                    if($period == 'week') {
+                        $interval = 'P1W';
+                    } elseif($period == 'month') {
+                        $interval = 'P1M';
+                    }
+
+                    $first_day = strtotime($graph->first_day);
+                    $last_day = strtotime($graph->last_day);
+
+                    $start    = new \DateTime($graph->first_day);
+                    $end      = new \DateTime($graph->last_day);
+                    $interval = new \DateInterval($interval);
+                    $periods   = new \DatePeriod($start, $interval, $end);
+                    $colspan = 0;
+                    foreach($periods as $date) {
+                        $colspan++;
+                    }
+                    $subheaders = ["","","","","","","","","","","","","","",""];
+                    foreach($graph->values->metrics as $metric){
+                        $headers[] = $metric->metric;
+                        //$headers = array_merge($headers, Array($colspan-1).fill(""));
+                        foreach($periods as $date) {
+                            $subheaders[] = $date->format('d M Y');
+                            $headers[] = "";
+                        }
+                        $subheaders[] = "";
+                        //unset($headers[sizeof($headers)-1]);
+                    }
+
+                    $exceldata[] = $headers;
+                    $exceldata[] = $subheaders;
+                    foreach($response->data->graph->values->users as $user) {
+                        $row = [];
+                        $row[] = $user->name;
+                        $row[] = $user->employee_code;
+                        $row[] = $user->email;
+                        $row[] = $user->designation;
+
+                        $row[] = isset($user->manager1->name) ? $user->manager1->name : '-';
+                        $row[] = isset($user->manager1->employee_code) ? $user->manager1->employee_code : '-';
+                        $row[] = isset($user->manager1->email) ? $user->manager1->email : '-';
+                        $row[] = isset($user->manager2->name) ? $user->manager2->name : '-';
+                        $row[] = isset($user->manager2->employee_code) ? $user->manager2->employee_code : '-';
+                        $row[] = isset($user->manager2->email) ? $user->manager2->email : '-';
+
+                        $row[] = isset($user->positions->Zone) ? $user->positions->Zone : '-';
+                        $row[] = isset($user->positions->Region) ? $user->positions->Region : '-';
+                        $row[] = isset($user->positions->Area) ? $user->positions->Area : '-';
+                        $row[] = isset($user->positions->Territory) ? $user->positions->Territory : '-';
+                        $row[] = isset($user->roles) ? (is_array($user->roles) ? implode(',', $user->roles) : $user->roles) : '-';
+                        
+                        foreach($graph->values->metrics as $metric) {
+                            foreach($periods as $date) {
+                                $row[] = isset($metric->stats->{$user->id}->{$date->getTimestamp().'000'}) ? $metric->stats->{$user->id}->{$date->getTimestamp().'000'} : '-';
+                            }
+                            $row[] = "";
+                        }
+                        // foreach($response->data->graph->values->metrics as $metric) {
+                        //     //$row[] = isset($metric->stats->{$user->id}) ? $metric->stats->{$user->id} : '-';
+                        // }
+                        $exceldata[] = $row;
+                    }
+                }
+                break;
 
         }
         //echo '
'; print_r($exceldata); exit;
diff --git a/app/Http/Controllers/MetricviewController.php b/app/Http/Controllers/MetricviewController.php
index e2ba58af..2e5e9d96 100644
--- a/app/Http/Controllers/MetricviewController.php
+++ b/app/Http/Controllers/MetricviewController.php
@@ -42,7 +42,6 @@ class MetricviewController extends Controller
             'validity_end' => ['title' => 'Validity end', 'type' => 'text'],
             'agg_type' => ['title' => 'Aggregation type', 'type' => 'text'],
             'status' => ['title' => 'Status', 'type' => 'select'],
-            
         ];
     }
 
@@ -74,7 +73,7 @@ class MetricviewController extends Controller
             $roles_dd[$role->id] = $role->name;
         }
 
-        $coattr = $this->getlambda('get', 'ums', 'contactattribute', 'get_all');
+        $coattr = $this->getlambda('get', 'contact', 'contactattribute', 'get_all');
         $coattr_dd = [];
         foreach($coattr->data->items as $coatt){
             $coattr_dd[$coatt->code] = $coatt->attribute;
@@ -119,10 +118,10 @@ class MetricviewController extends Controller
             'operation' => ['title' => 'Operation', 'type' => 'select', 'required' => true, 'values' => ['sum' => 'Sum', 'avg' => 'Avg', 'value_count' => 'Count'] ],
             'agg_type' => ['title' => 'Aggregation Type', 'type' => 'select', 'required' => true, 'values' => ['individual' => 'Individual', 'team' => 'Team'] ],
 
-            'graphical_views' => ['title' => 'Graphical views', 'type' => 'multiselect', 'required' => true, 'values' => ['progress' => 'Progress', 'percentile' => 'Percentile', 'pie' => 'Pie chart', 'bar' => 'Bar chart', 'line' => 'Line chart'] ],
+            'graphical_views' => ['title' => 'Graphical views', 'type' => 'multiselect', 'values' => ['progress' => 'Progress', 'percentile' => 'Percentile', 'pie' => 'Pie chart', 'bar' => 'Bar chart', 'line' => 'Line chart'] ],
             'details_views' => ['title' => 'Details views', 'type' => 'multiselect', 'required' => true, 'values' => ['tabular' => 'Tabular', 'contacts' => 'Doctor View', 'incremental' => 'Incremental View'] ],
-            'trend_views' => ['title' => 'Trend views', 'type' => 'multiselect', 'required' => true, 'values' => ['bar' => 'Bar chart', 'line' => 'Line chart', 'tabular' => 'Tabular'] ],
-            'leaderboard_views' => ['title' => 'Leaderboard views', 'type' => 'multiselect', 'required' => true, 'values' => ['leaderboard' => 'Leaderboard View'] ],
+            'trend_views' => ['title' => 'Trend views', 'type' => 'multiselect', 'values' => ['bar' => 'Bar chart', 'line' => 'Line chart', 'tabular' => 'Tabular'] ],
+            'leaderboard_views' => ['title' => 'Leaderboard views', 'type' => 'multiselect', 'values' => ['leaderboard' => 'Leaderboard View'] ],
             'contacts_views' => ['title' => 'Doctor views', 'type' => 'multiselect', 'values' => ['contacts' => 'Doctor View'] ],
             
             'intervals' => ['title' => 'Intervals', 'type' => 'multiselect', 'required' => true, 'values' => ['yearlycy' => 'Calender Year', 'yearlyfy' => 'Financial Year', 'monthly' => 'Monthly', 'weekly' => 'Weekly', 'daily' => 'Daily'] ],
@@ -151,7 +150,7 @@ class MetricviewController extends Controller
 
         } else {
             foreach($data['metric'] as $k => $metric) {
-                $data['metrics'][] = ['metric' => $metric, 'display' => $data['display_unit'][$k], 'sort_order' => isset($data['sort_order'][$k]) ? $data['sort_order'][$k] : 0, 'list_view' => isset($data['list_view'][$k]) ? $data['list_view'][$k] : 'no' ];
+                $data['metrics'][] = ['metric' => $metric, 'display' => $data['display_unit'][$k], 'sort_order' => isset($data['sort_order'][$k]) ? $data['sort_order'][$k] : 0, 'list_view' => isset($data['list_view'][$k]) ? $data['list_view'][$k] : 'yes' ];
             }
         }
 
@@ -181,8 +180,12 @@ class MetricviewController extends Controller
             if(!isset($values->combined_metrics)) {
                 $values->combined_metrics = '[]';
             }
+            if(!isset($values->sort_order)) {
+                $values->sort_order = 0;
+            }
+
             $metrics = $values->metrics;
-            usort($metrics, fn($a, $b) => ($a->sort_order > $b->sort_order) );
+            usort($metrics, fn($a, $b) => ((isset($a->sort_order) && isset($b->sort_order)) &&  $a->sort_order > $b->sort_order) );
             $values->metrics = $metrics;
 
             //echo '
'; print_r($metrics); exit;
diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php
new file mode 100644
index 00000000..3b67135d
--- /dev/null
+++ b/app/Http/Controllers/ProductController.php
@@ -0,0 +1,266 @@
+middleware('auth');
+        $this->_service = 'catalog';
+        $this->_module = 'product';
+        $this->_viewname = 'product';
+        $this->_title = 'Product';
+        $this->_base_url = '/product';
+        $this->_listtype = 'list';
+    }
+
+    public function list(Request $request) {
+        $fields = $this->get_list_fields();
+        //echo $this->_listtype; exit;
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
+        //echo '
'; print_r($response); exit;
+        return $this->view($this->_listtype)->with([
+            'title' => $this->_title,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'items' => $response->data->items,
+            'buttons' => $this->get_list_buttons()
+        ]);
+    }
+
+    protected function get_list_buttons() {
+        return [ ['title' => 'Add New', 'link' => $this->_base_url.'/addnew' ], ['title' => 'Import', 'link' => $this->_base_url.'/import'], ['title' => 'Export', 'link' => $this->_base_url.'/export'] ];
+    }
+
+    protected function get_import_fields($records){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'productattribute/get_all');
+        //echo '
'; print_r($response); exit;
+        $hierar = $this->getlambda('get', 'ums', 'hierarchy', 'dropdown');
+        $hierar_dd = [];
+        foreach($hierar->data->items as $hier){
+            $hierar_dd[$hier->code] = $hier->name . ' (' . $hier->code . ')';
+        }
+
+        //echo '
'; print_r($response); exit;
+        $fields = [
+            'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
+            'sku' => ['title' => 'SKU', 'type' => 'text', 'required' => true],
+            'division' => ['title' => 'Division', 'type' => 'text', 'required' => true],
+            'company' => ['title' => 'Company', 'type' => 'text'],
+            'brand' => ['title' => 'Brand', 'type' => 'select', 'required' => true, 'values' => $hierar_dd ],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+        ];
+
+        foreach ($response->data->items as $item) {
+            $values = [];
+            if(in_array($item->type, ['select', 'radio', 'checkbox']) ) {
+                foreach($item->options as $op) {
+                    $values[$op->value] = $op->display;
+                }
+            }
+            $fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required=='yes'?true:false, 'values' => $values];
+        }
+        return $fields;
+    }
+
+    // public function list(Request $request) {
+    //     $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
+    //     //echo '
'; print_r($items); exit;
+    //     $items = [];
+    //     foreach ($response->data->items as $item) {
+    //         $item->position = $item->hierarchy_info->code;
+    //         unset($item->hierarchy_info);
+    //         $items[] = $item;
+    //     }
+        
+    //     $fields = $this->get_list_fields();
+    //     return $this->view('list')->with([
+    //         'title' => $this->_title,
+    //         'fields' => $fields,
+    //         'base_url' => $this->_base_url,
+    //         'items' => $items,
+    //         'buttons' => $this->get_list_buttons()
+    //     ]);
+    // }
+
+    protected function get_list_fields(){
+        return [
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            'name' => ['title' => 'Name', 'type' => 'text'],
+            'sku' => ['title' => 'SKU', 'type' => 'text'],
+            'division' => ['title' => 'Division', 'type' => 'text'],
+            'company' => ['title' => 'Company', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'select'],
+        ];
+    }
+
+    protected function get_form_fields($type, $values){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'productattribute/get_all');
+        $brandr = $this->getlambda('get', 'catalog', 'brand', 'dropdown');
+        $brandr_dd = [];
+        foreach($brandr->data->items as $bran){
+            $brandr_dd[$bran->id] = $bran->name;
+        }
+
+        $fields = [
+            'name' => ['title' => 'Name', 'type' => 'text', 'required' => true],
+            'sku' => ['title' => 'SKU', 'type' => 'text', 'required' => true],
+            'division' => ['title' => 'Division', 'type' => 'text', 'required' => true],
+            'company' => ['title' => 'Company', 'type' => 'text'],
+            'brand' => ['title' => 'Brand', 'type' => 'select', 'required' => true, 'values' => $brandr_dd ],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+        ];
+
+        foreach ($response->data->items as $item) {
+            $values = [];
+            if(in_array($item->type, ['select', 'radio', 'checkbox']) ) {
+                foreach($item->options as $op) {
+                    $values[$op->value] = $op->display;
+                }
+            }
+            $fields[$item->code] = ['title' => $item->attribute, 'type' => $item->type, 'required' => $item->required=='yes'?true:false, 'values' => $values];
+        }
+
+        return $fields;
+    }
+
+    protected function _beforesave($type, $request) {
+        $data = $request->except('_token');
+        $options = [];
+        if(isset($data['option_value'])) {
+            foreach($data['option_value'] as $k => $ov) {
+                $options[] = ['value' => $ov, 'display' => $data['option_name'][$k] ];
+            }
+            $data['options'] = $options;
+            unset($data['option_value']);
+            unset($data['option_name']);
+        }
+        //echo '
'; print_r($data); exit;
+        return $data;
+    }
+
+    public function editall(Request $request) {
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_my_contacts');
+        //echo '
'; print_r($response); exit;
+        $fields = $this->get_list_fields();
+        return $this->view('editall')->with([
+            'title' => $this->_title,
+            'fields' => $response->data->attributes,
+            'base_url' => $this->_base_url,
+            'items' => $response->data->items
+        ]);
+    }
+
+    public function postsavelist(Request $request) {
+        Log::debug(print_r($request->except('_token'), true));
+        $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/savelist', $request->except('_token'));
+        // //echo '
'; print_r($response); exit;
+        // $fields = $this->get_list_fields();
+        // return $this->view('editall')->with([
+        //     'title' => $this->_title,
+        //     'fields' => $response->data->attributes,
+        //     'base_url' => $this->_base_url,
+        //     'items' => $response->data->items
+        // ]);
+    }
+    
+
+    public function export(Request $request) {
+        $attributes = LambdaRequest::signedrequest('get', $this->_service, 'contactattribute/get_all', []);
+        $fields = [];
+        foreach($attributes->data->items as $attri) {
+            $fields[] = $attri->code;
+        }
+        $fields[] = 'user_info';
+        $fields[] = 'msl_code';
+        $fields[] = 'position';
+        //echo '
'; print_r($response); exit;
+
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all', ['source' => 'dynamodb', 'belowme' => 'yes', 'search' => json_encode([]), 'keyword' => "", 'fields' => json_encode($fields) ]);
+        //echo '
'; print_r($response); exit;
+
+        $headers = ['Name', 'Email', 'Phone', 'MSL Code', 'Position', 'Rep Name', 'Rep Employee Code', 'Position Name', 'Position Code', 'Status'];
+        foreach($attributes->data->items as $attri) {
+            $headers[] = $attri->attribute;
+        }
+
+        $exceldata[] = $headers;
+        foreach($response->data->items as $user) {
+            $row = [];
+            $row[] = isset($user->name) ? $user->name : '-';
+            $row[] = isset($user->email) ? $user->email : '-';
+            $row[] = isset($user->phone) ? $user->phone : '-';
+            $row[] = isset($user->msl_code) ? $user->msl_code : '-';
+            $row[] = isset($user->position) ? $user->position : '-';
+
+            $row[] = isset($user->user_info->name) ? $user->user_info->name : '-';
+            $row[] = isset($user->user_info->employee_code) ? $user->user_info->employee_code : '-';
+
+            $row[] = isset($user->hierarchy_info->name) ? $user->hierarchy_info->name : '-';
+            $row[] = isset($user->hierarchy_info->code) ? $user->hierarchy_info->code : '-';
+            $row[] = isset($user->status) ? $user->status : '-';
+
+            foreach($attributes->data->items as $attri) {
+                $row[] = isset($user->{$attri->code}) ? $user->{$attri->code} : '-';
+            }            
+            $exceldata[] = $row;
+        }
+        return Excel::download(new InvoicesExport($exceldata), 'contacts.xlsx');
+    }
+
+
+    // public function postimport(Request $request) {
+    //     if( $request->file('importfile') ) {
+    //         $path = $request->file('importfile')->store('user_import');
+    //         $request->session()->put('user_import_path', $path);
+
+    //         $csv = Reader::createFromPath(storage_path('app') .'/' . $path, 'r');
+    //         $csv->setHeaderOffset(0);
+
+    //         $header = $csv->getHeader(); //returns the CSV header record
+    //         $records = $csv->getRecords(); //returns all the CSV records as an Iterator 
+    //         $contacts = [];
+    //          echo '
';
+    //         foreach($records as $record) {
+    //             $contacts[] = (array)$record;
+    //         }
+
+    //         $created = 0;
+    //         $updated = 0;
+    //         $count = 0;
+    //         $total = sizeof($contacts);
+
+    //         while($count < $total) {
+    //             $tempdata = array_slice($contacts, $count, 20);
+    //             Log::debug(print_r($tempdata, true));
+    //             $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module.'/import', $tempdata);
+    //             Log::debug(print_r($response, true));
+    //             $count = $count + 20;
+    //             $created = $created + $response->data->created_count;
+    //             $updated = $updated + (isset($response->data->updated_count) ? $response->data->updated_count : 0);
+    //             Log::debug(print_r(['$count' => $count, '$created' => $created, '$updated' => $updated], true));
+    //         }
+
+    //         //echo '
'; print_r($response); exit;
+    //         if($response->statusCode == 200 && $response->status == "success") {
+    //             return redirect($this->_base_url.'s')->withMessage('Successfully Imported ' .$created. ' records and Updated ' .$updated. ' records out of ' .$total. ' records!!!');
+    //         } else {
+    //             return \Redirect::back()->withMessage('Some Error occured!');
+    //         }
+
+
+    //         exit;
+    //         return redirect($this->_base_url.'/importmap')->withMessage('Successfully Uploaded !!!');
+    //     } else {
+    //         return \Redirect::back()->withMessage('Some Error occured!');
+    //     }
+    // }
+}
diff --git a/app/Http/Controllers/ProductattributeController.php b/app/Http/Controllers/ProductattributeController.php
new file mode 100644
index 00000000..4f4bdc49
--- /dev/null
+++ b/app/Http/Controllers/ProductattributeController.php
@@ -0,0 +1,78 @@
+middleware('auth');
+        $this->_service = 'catalog';
+        $this->_module = 'productattribute';
+        $this->_viewname = 'productattribute';
+        $this->_title = 'Product Attributes';
+        $this->_base_url = '/productattribute';
+    }
+
+    public function list(Request $request) {
+        $response = LambdaRequest::signedrequest('get', $this->_service, $this->_module.'/get_all');
+        //echo '
'; print_r($response); exit;
+        $fields = $this->get_list_fields();
+        return $this->view('list')->with([
+            'title' => $this->_title,
+            'fields' => $fields,
+            'base_url' => $this->_base_url,
+            'items' => $response->data->items,
+            'buttons' => $this->get_list_buttons()
+        ]);
+    }
+
+    protected function get_list_fields(){
+        return [
+            'actions' => ['title' => 'Actions', 'buttons' => [ 'edit', 'delete' ] ],
+            //'media_thumb' => ['title' => 'Media Thumb', 'type' => 'image'],
+            'attribute' => ['title' => 'Attribute', 'type' => 'text'],
+            'status' => ['title' => 'Status', 'type' => 'select'],
+        ];
+    }
+
+    protected function get_form_fields($type, $values){
+        return [
+            'attribute' => ['title' => 'Attribute', 'type' => 'text', 'required' => true],
+            'code' => ['title' => 'Code (small caps without spaces and special chars except "_")', 'type' => 'text', 'required' => true],
+            'required' => ['title' => 'Is Required', 'type' => 'yesno', 'required' => true],
+            //'editable' => ['title' => 'Is Editable', 'type' => 'yesno', 'required' => true],
+            'type' => ['title' => 'Attribute Type', 'type' => 'select', 'required' => true, 'values' => ['text' => 'Text', 'number' => 'Number', 'date' => 'Date', 'email' => 'Email', 'url' => 'Url', 'select' => 'Dropdown', 'checkbox' => 'Checkbox',  'radio' => 'Radio']  ],
+            
+            'sort_order' => ['title' => 'Sort Order', 'type' => 'number', 'required' => true],
+            'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+            'options' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true ],
+        ];
+    }
+
+    protected function _beforeform($type, $values) {
+        if($type == 'edit') {
+            //$this->_request->session()->put('entity_id', $values->id);
+        }
+        return $values;
+    }
+
+    protected function _beforesave($type, $request) {
+        $data = $request->except('_token');
+        //$data['id'] = $request->session()->get('entity_id');
+        $options = [];
+        if(isset($data['option_value'])) {
+            foreach($data['option_value'] as $k => $ov) {
+                $options[] = ['value' => $ov, 'display' => $data['option_name'][$k] ];
+            }
+            $data['options'] = $options;
+            unset($data['option_value']);
+            unset($data['option_name']);
+        }
+        //echo '
'; print_r($data); exit;
+        return $data;
+    }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php
new file mode 100644
index 00000000..87940560
--- /dev/null
+++ b/app/Http/Controllers/ReportController.php
@@ -0,0 +1,177 @@
+middleware('auth');
+        $this->_service = 'ums';
+        $this->_module = 'group';
+        $this->_viewname = 'grid';
+        $this->_title = 'Summary';
+        $this->_base_url = '/report';
+    }
+
+    public function nybfsummary(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/nybfsummary', []);
+        return view('report.nybfsummary')->with(['follow_up' => $response->data->follow_up]);
+    }
+
+    public function nybfdoctorwise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/nybfdoctorwise', []);
+        return view('report.nybfdoctorwise')->with(['follow_up' => $response->data->follow_up]);
+    }
+
+    public function nyexecutionfollowup(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/nyexecutionfollowup', [], 180);
+        //echo '
'; print_r($response); exit;
+        return view('report.nyexecutionfollowup')->with(['executions' => json_decode(file_get_contents( $response->data->jsonfile ), true) ]);
+    }
+
+
+
+    public function summary(Request $request)
+    {
+        return view('grid.list')->with(['title' => $this->_title]);
+    }
+
+    public function activitywise(Request $request)
+    {
+        return view('grid.activitywise')->with(['title' => 'Activity Wise']);
+    }
+
+    public function bdesummary(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdesummaryreport', ["month" => "November 2023"]);
+        return view('report.bdesummary')->with(['days' => $response->data->days, 'ems' => $response->data->ems, 'zbms' => $response->data->zbms, 'rbms' => $response->data->rbms, 'totals' => $response->data->totals]);
+    }
+
+    public function bdescansvscalls(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdescansvscalls', ["month" => "November 2023"]);
+        return view('report.bdescansvscalls')->with(['zbms' => $response->data->zbms, 'rbms' => $response->data->rbms, 'totals' => $response->data->totals]);
+    }
+
+    public function rbmwiseweekly(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bderbmwiseweekly', ["month" => "November 2023"]);
+        return view('report.bdesummary')->with(['days' => $response->data->days, 'ems' => $response->data->ems, 'zbms' => $response->data->zbms, 'rbms' => $response->data->rbms]);
+    }
+    public function drreferralanalysis(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedrreferralanalysis', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        return view('report.drreferralanalysis')->with(['doctors' => $response->data->doctors, 'days' => $response->data->days]);
+    }
+    public function drreferralsummary(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedrreferralsummary', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        return view('report.drreferralsummary')->with(['regions' => $response->data->regions, 'days' => $response->data->days]);
+    }
+    public function bdedevicewise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedevicewise', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        return view('report.bdedevicewise')->with(['metrics' => $response->data->metrics]);
+    }
+    public function bderbmwise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bderbmwise', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        return view('report.bderbmwise')->with(['rbms' => $response->data->rbms, 'weeks' => $response->data->weeks]);
+    }
+    public function bdeeducatorwiseaverage(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdeeducatorwiseaverage', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        return view('report.bdeeducatorwiseaverage')->with(['rbms' => $response->data->rbms, 'days' => $response->data->days]);
+    }
+
+    public function bdedevicedashboard(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedevicedashboard', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        //return view('report.bdedevicewise')->with(['metrics' => $response->data->metrics]);
+        return response()->json( $response->data );
+    }
+    public function bdedashboardtrend(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedashboardtrend', ["month" => "November 2023"]);
+        //echo '
'; print_r($response); exit;
+        //return view('report.bdedevicewise')->with(['metrics' => $response->data->metrics]);
+        return response()->json( $response->data );
+    }
+
+    public function bdedoctorscans(Request $request){
+        return view('report.bdedoctorscans');
+    }
+    public function ajaxbdedoctorscans(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bdedoctorscans');
+        //echo '
'; print_r($response); exit;
+        return response()->json( $response->data );
+    }
+
+
+
+    public function bfactivitywise(Request $request){
+        $teams = DB::connection('primary')->table('breathefree_team')->select('team')->distinct()->get();
+        $regions = DB::connection('primary')->table('breathefree_team')->select('region')->distinct()->get();
+        //echo '
'; print_r($regions);print_r($teams); exit;
+        return view('report.bfactivitywise')->with(['teams' => $teams, 'regions' => $regions]);
+    }
+    public function postajaxdatabfactivitywise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfactivitywise', $request->except('_token'));
+        $request->session()->put('bfactivitywise_files', $response->data->files);
+        return response()->json(["total" => $response->data->total_count , "jsondata" => json_decode(file_get_contents( $response->data->jsonfile ), true)] );
+    }
+    public function ajaxdatabfactivitywise(Request $request){
+        $files = $request->session()->get('bfactivitywise_files');
+        $fileno = $request->input('fileno', '0');
+        return response()->json(json_decode(file_get_contents( $files[$fileno] ), true));
+    }
+
+    public function bfedudoctorwise(Request $request){
+        // $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfedudoctorwise');
+        // echo '
'; print_r($response); exit;
+        return view('report.bfedudoctorwise');
+    }
+    public function ajaxdatabfedudoctorwise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfedudoctorwise', ["month" => "July 2023"]);
+        //echo '
'; print_r($response); exit;
+        return response()->json( json_decode(file_get_contents( $response->data->jsonfile ), true) );
+    }
+    public function bfdoctorwise(Request $request){
+        return view('report.bfdoctorwise');
+    }
+    
+    public function bfeducatorwise(Request $request){
+        $specialities = DB::table("bfdashboard_contacts")->select("speciality")->distinct()->get();
+        //print_r($specialities); exit;
+        return view('report.bfeducatorwise')->with(["specialities" => $specialities]);
+    }
+    public function ajaxdatabfeducatorwise(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfeducatorwise', ["month" => "July 2023"]);
+        //echo '
'; print_r($response); exit;
+        return response()->json( json_decode(file_get_contents( $response->data->jsonfile ), true) );
+    }
+
+    public function bfsummary(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfsummary', ["month" => "August 2023"]);
+        //echo '
'; print_r($response); exit;
+        $specialities = DB::table("bfdashboard_contacts")->select("speciality")->distinct()->get();
+        $request->session()->put('bfsummary_jsonfile', $response->data->jsonfile);
+        return view('report.bfsummary')->with(['days' => $response->data->days, 'specialities' => $specialities, 'devices' => $response->data->devices, 'brands' => $response->data->brands, 'teams' => $response->data->teams ]);
+    }
+    public function ajaxdatabfsummary(Request $request){
+        $jsonfile =  $request->session()->get('bfsummary_jsonfile');
+        return response()->json( json_decode(file_get_contents( $jsonfile ), true) );
+    }
+
+    public function bfsummary2(Request $request){
+        $response = LambdaRequest::signedrequest('get', 'catalog', 'activity/bfsummary2', ["month" => "August 2023"]);
+        //echo '
'; print_r($response); exit;
+        $specialities = DB::table("bfdashboard_contacts")->select("speciality")->distinct()->get();
+        //$request->session()->put('bfsummary_jsonfile', $response->data->jsonfile);
+        return view('report.bfsummary2')->with(['days' => $response->data->days, 'specialities' => $specialities, 'metrics' => $response->data->metrics ]);
+    }
+    
+}
diff --git a/app/Http/Controllers/SurveyController.php b/app/Http/Controllers/SurveyController.php
index c800da5f..d4990957 100644
--- a/app/Http/Controllers/SurveyController.php
+++ b/app/Http/Controllers/SurveyController.php
@@ -46,6 +46,7 @@ class SurveyController extends Controller
             'title' => ['title' => 'Title', 'type' => 'text', 'required' => true],
             'description' => ['title' => 'Description', 'type' => 'textarea', 'required' => true, 'fullwidth' => true],
             'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled'] ],
+            'export_fields' => ['title' => 'Export Fields', 'type' => 'textarea', 'required' => false, 'fullwidth' => true ],
         ];
     }
 
diff --git a/app/Http/Controllers/SurveysubmissionController.php b/app/Http/Controllers/SurveysubmissionController.php
index d8a6cfec..0e8c6d28 100644
--- a/app/Http/Controllers/SurveysubmissionController.php
+++ b/app/Http/Controllers/SurveysubmissionController.php
@@ -173,6 +173,8 @@ class SurveysubmissionController extends Controller
         $reqdata = $request->session()->get('formdata_request');
         //$reqdata = ["partition" => 'rapport-vitalis1', "form_id" => '1650365457-c86bd7f2-a33c-49a5-9671-3c2511b57f3b', "alldata" => true, "date_range" => '2022/_'.$enddate ];
         $response = LambdaRequest::signedrequest('post', $this->_service, $this->_module . '/getformhistory', $reqdata);
+        //echo '
'; print_r($response); exit;
+
         $fields = ['Submitted By', 'User identification', 'Email', 'Employee Code', 'Record Date', 'Submitted On'];
         $fieldoptions = ['', '', '', '', '', ''];
         foreach ($response->data->questions as $qid => $question) {
@@ -225,6 +227,7 @@ class SurveysubmissionController extends Controller
                     case 'text':
                     case 'date':
                     case 'number':
+                    case 'textarea':
                         $item[] = isset($submission->formdata->{$qid}) ? $submission->formdata->{$qid} : '';
                         break;
                     case 'dropdown':
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 1890d24f..4213b86b 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -45,6 +45,7 @@ class UserController extends Controller
 
     protected function get_form_fields($type, $values){
         $domain = LambdaRequest::signedrequest('get', $this->_service, 'domain/get_one');
+        //echo '
'; print_r($domain); exit;
         $designations_dd = [];
         foreach($domain->data->item->designations as $designation){
             $designations_dd[$designation] = $designation;
@@ -59,7 +60,7 @@ class UserController extends Controller
         foreach($channels->data->items as $channel){
             $channels_dd[$channel->id] = $channel->name;
         }
-        return [
+        $fields = [
             'firstname' => ['title' => 'Firstname', 'type' => 'text', 'required' => true],
             'lastname' => ['title' => 'Lastname', 'type' => 'text', 'required' => true],
             'email' => ['title' => 'Email', 'type' => 'email', 'required' => true],
@@ -75,6 +76,19 @@ class UserController extends Controller
             'address' => ['title' => 'Address', 'type' => 'textarea'],
             'avatar' => ['title' => 'Avatar', 'type' => 'image'],
         ];
+        if(isset($domain->data->item->login_scheme) && $domain->data->item->login_scheme == 'Password') {
+            $fields['password'] = ['title' => 'Password', 'type' => 'text', 'required' => true];
+        }
+        return $fields;
+    }
+
+    protected function validateImport($headers, $records) {
+        return true;
+        echo '
'; 
+        foreach($records as $record){
+            print_r($record);
+        }
+        exit;
     }
 
     protected function get_import_fields($records){
diff --git a/app/Http/Controllers/WallController.php b/app/Http/Controllers/WallController.php
index 8191a0b3..554c72bc 100644
--- a/app/Http/Controllers/WallController.php
+++ b/app/Http/Controllers/WallController.php
@@ -29,7 +29,7 @@ class WallController extends Controller
 
     protected function get_form_fields($type, $values){
         $groups = $this->getlambda('get', 'ums', 'group', 'dropdown');
-        $groups_dd = [];
+        $groups_dd = ['all'=>'All Users'];
         foreach($groups->data->items as $group){
             $groups_dd[$group->id] = $group->name;
         }
diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php
index d58ae70b..b5887e7c 100755
--- a/app/Http/Middleware/VerifyCsrfToken.php
+++ b/app/Http/Middleware/VerifyCsrfToken.php
@@ -11,7 +11,7 @@ class VerifyCsrfToken extends Middleware
      *
      * @var array
      */
-    protected $except = ['/form/metricreport*', '/form/submitpersonalized', '/formdatalist/zipmultiple'
+    protected $except = ['/form/*', '/form/metricreport*', '/form/submitpersonalized', '/formdatalist/zipmultiple'
         //
     ];
 }
diff --git a/app/Http/Requests/LambdaRequest.php b/app/Http/Requests/LambdaRequest.php
index fb7b0dd0..ac1af491 100644
--- a/app/Http/Requests/LambdaRequest.php
+++ b/app/Http/Requests/LambdaRequest.php
@@ -7,7 +7,7 @@ use Log;
 
 class LambdaRequest
 {
-	protected const REMOTE_ENV = 'local';
+	protected const REMOTE_ENV = 'production';
 	protected const LOCAL_URLS = [
 		'ums' => 'http://localhost:3010/dev/',
 		'mag' => 'http://localhost:3012/dev/',
@@ -18,11 +18,15 @@ class LambdaRequest
 		'detailing' => 'http://localhost:3016/dev/',
 		'competition' => 'http://localhost:3017/dev/',
 		'communication' => 'http://localhost:3018/dev/',
+		'catalog' => 'http://localhost:3020/dev/',
 	];
 	protected const PROD_URL = 'https://rapportapi.click/';
 
 	protected static function genurl($service, $url) {
 		switch(true) {
+			case self::REMOTE_ENV != 'local' && $service == 'ums' && $url == 'hierarchy/get_all':
+				return 'https://ljtw6cnu6kzxm3s76upgsvmz5u0ufrep.lambda-url.ap-south-1.on.aws/';
+				break;
 			case self::REMOTE_ENV != 'local' && $service == 'metric' && $url == 'metric_report/view':
 				return 'https://zbmttswaqimy3nmo5wactmja3i0uosyv.lambda-url.ap-south-1.on.aws/';
 				break;
@@ -32,6 +36,12 @@ class LambdaRequest
 			case self::REMOTE_ENV != 'local' && $service == 'form' && $url == 'formentity/getformhistory':
 				return 'https://sgrmuxa46z7xfouezyvg3tnhnq0yptjn.lambda-url.ap-south-1.on.aws/';
 				break;
+			case self::REMOTE_ENV != 'local' && $service == 'form' && $url == 'formentity/getforminfo':
+				return 'https://bopqsnxa2ssc2dqmrs26ekslhu0uqmzx.lambda-url.ap-south-1.on.aws/';
+				break;
+			case self::REMOTE_ENV != 'local' && $service == 'catalog' && $url == 'activity/nyexecutionfollowup':
+				return 'https://4sat7sjmmslqwq6nil2kxjxm6y0afoii.lambda-url.ap-south-1.on.aws/';
+				break;
 			case self::REMOTE_ENV == 'local':
 				return self::LOCAL_URLS[$service] . $url;
 				break;
@@ -39,7 +49,7 @@ class LambdaRequest
 				return self::PROD_URL . $service . '/' . $url;
 				break;
 		}
-		// if(self::REMOTE_ENV == 'local') {
+		// if(self::REMOTE_ENV == 'local') { 
 		// 	return self::LOCAL_URLS[$service] . $url;
 		// } else {
 		// 	return self::PROD_URL . $service . '/' . $url;
diff --git a/app/Jobs/Importdata.php b/app/Jobs/Importdata.php
new file mode 100644
index 00000000..410f492a
--- /dev/null
+++ b/app/Jobs/Importdata.php
@@ -0,0 +1,47 @@
+import_id = $import_id;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $import_id = $this->import_id;
+        $import = DB::table('import_jobs')->where('id', $import_id)->first();
+        
+        Log::debug(print_r($import, true));
+        $token = DB::table('users')->select('access_token')->where('id', $import->user_id)->first()->access_token;
+        echo $token;
+        $response = LambdaRequest::postrequest($import->service, $import->module.'/import', ['import_id' => $import->id ], $token );
+        echo '
'; print_r($response); exit;
+    }
+}
diff --git a/app/Widgets/CompatitionDashboard.php b/app/Widgets/CompatitionDashboard.php
new file mode 100644
index 00000000..21082bf7
--- /dev/null
+++ b/app/Widgets/CompatitionDashboard.php
@@ -0,0 +1,31 @@
+ 'yes'] );
+         //echo '
'; print_r($response); exit;
+         if($response->statusCode == 200) {
+             return view('widgets.compatition_dashboard', ['title' => $this->config['title'], 'scores' => $response->data->items]);
+         } else {
+             return '';
+         }
+    }
+}
diff --git a/app/Widgets/CompatitionTeamDashboard.php b/app/Widgets/CompatitionTeamDashboard.php
new file mode 100644
index 00000000..4149d67b
--- /dev/null
+++ b/app/Widgets/CompatitionTeamDashboard.php
@@ -0,0 +1,30 @@
+ 'yes'] );
+         //echo '
'; print_r($response); exit;
+         if($response->statusCode == 200 && sizeof($response->data->items) > 0 && isset($response->data->items[0]->userscore) ) {
+             return view('widgets.compatition_team_dashboard', ['title' => $this->config['title'], 'scores' => $response->data->items]);
+         } else {
+             return '';
+         }
+    }
+}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 037e17df..dbfc56e4 100755
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -52,4 +52,8 @@ $app->singleton(
 |
 */
 
+header('Access-Control-Allow-Origin: *');
+header('Access-Control-Allow-Methods: *');
+header('Access-Control-Allow-Headers: *');
+
 return $app;
diff --git a/database/migrations/2024_02_27_150156_create_jobs_table.php b/database/migrations/2024_02_27_150156_create_jobs_table.php
new file mode 100644
index 00000000..1be9e8a8
--- /dev/null
+++ b/database/migrations/2024_02_27_150156_create_jobs_table.php
@@ -0,0 +1,36 @@
+bigIncrements('id');
+            $table->string('queue')->index();
+            $table->longText('payload');
+            $table->unsignedTinyInteger('attempts');
+            $table->unsignedInteger('reserved_at')->nullable();
+            $table->unsignedInteger('available_at');
+            $table->unsignedInteger('created_at');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('jobs');
+    }
+}
diff --git a/public/assets/js/html2canvas.min.js b/public/assets/js/html2canvas.min.js
new file mode 100644
index 00000000..aed6bfd7
--- /dev/null
+++ b/public/assets/js/html2canvas.min.js
@@ -0,0 +1,20 @@
+/*!
+ * html2canvas 1.4.1 
+ * Copyright (c) 2022 Niklas von Hertzen 
+ * Released under MIT License
+ */
+!function(A,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(A="undefined"!=typeof globalThis?globalThis:A||self).html2canvas=e()}(this,function(){"use strict";
+/*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */var r=function(A,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(A[t]=e[t])})(A,e)};function A(A,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function t(){this.constructor=A}r(A,e),A.prototype=null===e?Object.create(e):(t.prototype=e.prototype,new t)}var h=function(){return(h=Object.assign||function(A){for(var e,t=1,r=arguments.length;ts[0]&&e[1]>10),s%1024+56320)),(B+1===t||16384>5],this.data[e=(e<<2)+(31&A)];if(A<=65535)return e=this.index[2048+(A-55296>>5)],this.data[e=(e<<2)+(31&A)];if(A>11)],e=this.index[e+=A>>5&63],this.data[e=(e<<2)+(31&A)];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},l);function l(A,e,t,r,B,n){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=r,this.index=B,this.data=n}for(var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u="undefined"==typeof Uint8Array?[]:new Uint8Array(256),F=0;F>4,i[o++]=(15&t)<<4|r>>2,i[o++]=(3&r)<<6|63&B;return n}(y="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=="),L=Array.isArray(m)?function(A){for(var e=A.length,t=[],r=0;r=this._value.length?-1:this._value[A]},XA.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();lA(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;63===e&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t)return{type:30,start:parseInt(g.apply(void 0,A.map(function(A){return 63===A?48:A})),16),end:parseInt(g.apply(void 0,A.map(function(A){return 63===A?70:A})),16)};var r=parseInt(g.apply(void 0,A),16);if(45===this.peekCodePoint(0)&&lA(this.peekCodePoint(1))){this.consumeCodePoint();for(var e=this.consumeCodePoint(),B=[];lA(e)&&B.length<6;)B.push(e),e=this.consumeCodePoint();return{type:30,start:r,end:parseInt(g.apply(void 0,B),16)}}return{type:30,start:r,end:r}},XA.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return"url"===A.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},XA.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:22,value:""};var e,t=this.peekCodePoint(0);if(39===t||34===t){t=this.consumeStringToken(this.consumeCodePoint());return 0===t.type&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),xA)}for(;;){var r=this.consumeCodePoint();if(-1===r||41===r)return{type:22,value:g.apply(void 0,A)};if(CA(r))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:g.apply(void 0,A)}):(this.consumeBadUrlRemnants(),xA);if(34===r||39===r||40===r||(0<=(e=r)&&e<=8||11===e||14<=e&&e<=31||127===e))return this.consumeBadUrlRemnants(),xA;if(92===r){if(!hA(r,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),xA;A.push(this.consumeEscapedCodePoint())}else A.push(r)}},XA.prototype.consumeWhiteSpace=function(){for(;CA(this.peekCodePoint(0));)this.consumeCodePoint()},XA.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(41===A||-1===A)return;hA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},XA.prototype.consumeStringSlice=function(A){for(var e="";0>8,r=255&A>>16,A=255&A>>24;return e<255?"rgba("+A+","+r+","+t+","+e/255+")":"rgb("+A+","+r+","+t+")"}function Qe(A,e){if(17===A.type)return A.number;if(16!==A.type)return 0;var t=3===e?1:255;return 3===e?A.number/100*t:Math.round(A.number/100*t)}var ce=function(A,e){return 11===e&&12===A.type||(28===e&&29===A.type||2===e&&3===A.type)},ae={type:17,number:0,flags:4},ge={type:16,number:50,flags:4},we={type:16,number:100,flags:4},Ue=function(A,e){if(16===A.type)return A.number/100*e;if(WA(A))switch(A.unit){case"rem":case"em":return 16*A.number;default:return A.number}return A.number},le=function(A,e){if(15===e.type)switch(e.unit){case"deg":return Math.PI*e.number/180;case"grad":return Math.PI/200*e.number;case"rad":return e.number;case"turn":return 2*Math.PI*e.number}throw new Error("Unsupported angle type")},Ce=function(A){return Math.PI*A/180},ue=function(A,e){if(18===e.type){var t=me[e.name];if(void 0===t)throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return t(A,e.values)}if(5===e.type){if(3===e.value.length){var r=e.value.substring(0,1),B=e.value.substring(1,2),n=e.value.substring(2,3);return Fe(parseInt(r+r,16),parseInt(B+B,16),parseInt(n+n,16),1)}if(4===e.value.length){var r=e.value.substring(0,1),B=e.value.substring(1,2),n=e.value.substring(2,3),s=e.value.substring(3,4);return Fe(parseInt(r+r,16),parseInt(B+B,16),parseInt(n+n,16),parseInt(s+s,16)/255)}if(6===e.value.length){r=e.value.substring(0,2),B=e.value.substring(2,4),n=e.value.substring(4,6);return Fe(parseInt(r,16),parseInt(B,16),parseInt(n,16),1)}if(8===e.value.length){r=e.value.substring(0,2),B=e.value.substring(2,4),n=e.value.substring(4,6),s=e.value.substring(6,8);return Fe(parseInt(r,16),parseInt(B,16),parseInt(n,16),parseInt(s,16)/255)}}if(20===e.type){e=Le[e.value.toUpperCase()];if(void 0!==e)return e}return Le.TRANSPARENT},Fe=function(A,e,t,r){return(A<<24|e<<16|t<<8|Math.round(255*r)<<0)>>>0},he=function(A,e){e=e.filter($A);if(3===e.length){var t=e.map(Qe),r=t[0],B=t[1],t=t[2];return Fe(r,B,t,1)}if(4!==e.length)return 0;e=e.map(Qe),r=e[0],B=e[1],t=e[2],e=e[3];return Fe(r,B,t,e)};function de(A,e,t){return t<0&&(t+=1),1<=t&&--t,t<1/6?(e-A)*t*6+A:t<.5?e:t<2/3?6*(e-A)*(2/3-t)+A:A}function fe(A,e){return ue(A,JA.create(e).parseComponentValue())}function He(A,e){return A=ue(A,e[0]),(e=e[1])&&te(e)?{color:A,stop:e}:{color:A,stop:null}}function pe(A,t){var e=A[0],r=A[A.length-1];null===e.stop&&(e.stop=ae),null===r.stop&&(r.stop=we);for(var B=[],n=0,s=0;sA.optimumDistance)?{optimumCorner:e,optimumDistance:r}:A},{optimumDistance:s?1/0:-1/0,optimumCorner:null}).optimumCorner}var Ke=function(A,e){var t=e.filter($A),r=t[0],B=t[1],n=t[2],e=t[3],t=(17===r.type?Ce(r.number):le(A,r))/(2*Math.PI),A=te(B)?B.number/100:0,r=te(n)?n.number/100:0,B=void 0!==e&&te(e)?Ue(e,1):1;if(0==A)return Fe(255*r,255*r,255*r,1);n=r<=.5?r*(1+A):r+A-r*A,e=2*r-n,A=de(e,n,t+1/3),r=de(e,n,t),t=de(e,n,t-1/3);return Fe(255*A,255*r,255*t,B)},me={hsl:Ke,hsla:Ke,rgb:he,rgba:he},Le={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},be={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map(function(A){if(_A(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},De={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ke=function(t,A){var r=Ce(180),B=[];return Ae(A).forEach(function(A,e){if(0===e){e=A[0];if(20===e.type&&-1!==["top","left","right","bottom"].indexOf(e.value))return void(r=se(A));if(ne(e))return void(r=(le(t,e)+Ce(270))%Ce(360))}A=He(t,A);B.push(A)}),{angle:r,stops:B,type:1}},ve="closest-side",xe="farthest-side",Me="closest-corner",Se="farthest-corner",Te="ellipse",Ge="contain",he=function(r,A){var B=0,n=3,s=[],o=[];return Ae(A).forEach(function(A,e){var t=!0;0===e?t=A.reduce(function(A,e){if(_A(e))switch(e.value){case"center":return o.push(ge),!1;case"top":case"left":return o.push(ae),!1;case"right":case"bottom":return o.push(we),!1}else if(te(e)||ee(e))return o.push(e),!1;return A},t):1===e&&(t=A.reduce(function(A,e){if(_A(e))switch(e.value){case"circle":return B=0,!1;case Te:return!(B=1);case Ge:case ve:return n=0,!1;case xe:return!(n=1);case Me:return!(n=2);case"cover":case Se:return!(n=3)}else if(ee(e)||te(e))return(n=!Array.isArray(n)?[]:n).push(e),!1;return A},t)),t&&(A=He(r,A),s.push(A))}),{size:n,shape:B,stops:s,position:o,type:2}},Oe=function(A,e){if(22===e.type){var t={url:e.value,type:0};return A.cache.addImage(e.value),t}if(18!==e.type)throw new Error("Unsupported image type "+e.type);t=ke[e.name];if(void 0===t)throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return t(A,e.values)};var Ve,ke={"linear-gradient":function(t,A){var r=Ce(180),B=[];return Ae(A).forEach(function(A,e){if(0===e){e=A[0];if(20===e.type&&"to"===e.value)return void(r=se(A));if(ne(e))return void(r=le(t,e))}A=He(t,A);B.push(A)}),{angle:r,stops:B,type:1}},"-moz-linear-gradient":Ke,"-ms-linear-gradient":Ke,"-o-linear-gradient":Ke,"-webkit-linear-gradient":Ke,"radial-gradient":function(B,A){var n=0,s=3,o=[],i=[];return Ae(A).forEach(function(A,e){var t,r=!0;0===e&&(t=!1,r=A.reduce(function(A,e){if(t)if(_A(e))switch(e.value){case"center":return i.push(ge),A;case"top":case"left":return i.push(ae),A;case"right":case"bottom":return i.push(we),A}else(te(e)||ee(e))&&i.push(e);else if(_A(e))switch(e.value){case"circle":return n=0,!1;case Te:return!(n=1);case"at":return!(t=!0);case ve:return s=0,!1;case"cover":case xe:return!(s=1);case Ge:case Me:return!(s=2);case Se:return!(s=3)}else if(ee(e)||te(e))return(s=!Array.isArray(s)?[]:s).push(e),!1;return A},r)),r&&(A=He(B,A),o.push(A))}),{size:s,shape:n,stops:o,position:i,type:2}},"-moz-radial-gradient":he,"-ms-radial-gradient":he,"-o-radial-gradient":he,"-webkit-radial-gradient":he,"-webkit-gradient":function(r,A){var e=Ce(180),B=[],n=1;return Ae(A).forEach(function(A,e){var t,A=A[0];if(0===e){if(_A(A)&&"linear"===A.value)return void(n=1);if(_A(A)&&"radial"===A.value)return void(n=2)}18===A.type&&("from"===A.name?(t=ue(r,A.values[0]),B.push({stop:ae,color:t})):"to"===A.name?(t=ue(r,A.values[0]),B.push({stop:we,color:t})):"color-stop"!==A.name||2===(A=A.values.filter($A)).length&&(t=ue(r,A[1]),A=A[0],ZA(A)&&B.push({stop:{type:16,number:100*A.number,flags:A.flags},color:t})))}),1===n?{angle:(e+Ce(180))%Ce(360),stops:B,type:n}:{size:3,shape:0,stops:B,position:[],type:n}}},Re={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(0===A.length)return[];var t=A[0];return 20===t.type&&"none"===t.value?[]:A.filter(function(A){return $A(A)&&!(20===(A=A).type&&"none"===A.value||18===A.type&&!ke[A.name])}).map(function(A){return Oe(e,A)})}},Ne={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(A,e){return e.map(function(A){if(_A(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Pe={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(A,e){return Ae(e).map(function(A){return A.filter(te)}).map(re)}},Xe={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(A,e){return Ae(e).map(function(A){return A.filter(_A).map(function(A){return A.value}).join(" ")}).map(Je)}},Je=function(A){switch(A){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};(he=Ve=Ve||{}).AUTO="auto",he.CONTAIN="contain";function Ye(A,e){return _A(A)&&"normal"===A.value?1.2*e:17===A.type?e*A.number:te(A)?Ue(A,e):e}var We,Ze,_e={name:"background-size",initialValue:"0",prefix:!(he.COVER="cover"),type:1,parse:function(A,e){return Ae(e).map(function(A){return A.filter(qe)})}},qe=function(A){return _A(A)||te(A)},he=function(A){return{name:"border-"+A+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},je=he("top"),ze=he("right"),$e=he("bottom"),At=he("left"),he=function(A){return{name:"border-radius-"+A,initialValue:"0 0",prefix:!1,type:1,parse:function(A,e){return re(e.filter(te))}}},et=he("top-left"),tt=he("top-right"),rt=he("bottom-right"),Bt=he("bottom-left"),he=function(A){return{name:"border-"+A+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,e){switch(e){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},nt=he("top"),st=he("right"),ot=he("bottom"),it=he("left"),he=function(A){return{name:"border-"+A+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,e){return WA(e)?e.number:0}}},Qt=he("top"),ct=he("right"),at=he("bottom"),gt=he("left"),wt={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Ut={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(A,e){return"rtl"!==e?0:1}},lt={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(A,e){return e.filter(_A).reduce(function(A,e){return A|Ct(e.value)},0)}},Ct=function(A){switch(A){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},ut={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Ft={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(A,e){return!(20===e.type&&"normal"===e.value||17!==e.type&&15!==e.type)?e.number:0}},ht={name:"line-break",initialValue:(he=We=We||{}).NORMAL="normal",prefix:!(he.STRICT="strict"),type:2,parse:function(A,e){return"strict"!==e?We.NORMAL:We.STRICT}},dt={name:"line-height",initialValue:"normal",prefix:!1,type:4},ft={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(A,e){return 20===e.type&&"none"===e.value?null:Oe(A,e)}},Ht={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(A,e){return"inside"!==e?1:0}},pt={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(A,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},he=function(A){return{name:"margin-"+A,initialValue:"0",prefix:!1,type:4}},Et=he("top"),It=he("right"),yt=he("bottom"),Kt=he("left"),mt={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(A,e){return e.filter(_A).map(function(A){switch(A.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}})}},Lt={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(A,e){return"break-word"!==e?"normal":"break-word"}},he=function(A){return{name:"padding-"+A,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},bt=he("top"),Dt=he("right"),vt=he("bottom"),xt=he("left"),Mt={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(A,e){switch(e){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},St={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(A,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Tt={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(n,A){return 1===A.length&&jA(A[0],"none")?[]:Ae(A).map(function(A){for(var e={color:Le.TRANSPARENT,offsetX:ae,offsetY:ae,blur:ae},t=0,r=0;r>5],this.data[e=(e<<2)+(31&A)];if(A<=65535)return e=this.index[2048+(A-55296>>5)],this.data[e=(e<<2)+(31&A)];if(A>11)],e=this.index[e+=A>>5&63],this.data[e=(e<<2)+(31&A)];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},pr);function pr(A,e,t,r,B,n){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=r,this.index=B,this.data=n}for(var Er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ir="undefined"==typeof Uint8Array?[]:new Uint8Array(256),yr=0;yr>10),s%1024+56320)),(B+1===t||16384>4,i[o++]=(15&t)<<4|r>>2,i[o++]=(3&r)<<6|63&B;return n}(br="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA="),xr=Array.isArray(vr)?function(A){for(var e=A.length,t=[],r=0;rs.x||t.y>s.y;return s=t,0===e||A});return A.body.removeChild(e),t}(document);return Object.defineProperty(Xr,"SUPPORT_WORD_BREAKING",{value:A}),A},get SUPPORT_SVG_DRAWING(){var A=function(A){var e=new Image,t=A.createElement("canvas"),A=t.getContext("2d");if(!A)return!1;e.src="data:image/svg+xml,";try{A.drawImage(e,0,0),t.toDataURL()}catch(A){return!1}return!0}(document);return Object.defineProperty(Xr,"SUPPORT_SVG_DRAWING",{value:A}),A},get SUPPORT_FOREIGNOBJECT_DRAWING(){var A="function"==typeof Array.from&&"function"==typeof window.fetch?function(t){var A=t.createElement("canvas"),r=100;A.width=r,A.height=r;var B=A.getContext("2d");if(!B)return Promise.reject(!1);B.fillStyle="rgb(0, 255, 0)",B.fillRect(0,0,r,r);var e=new Image,n=A.toDataURL();e.src=n;e=Nr(r,r,0,0,e);return B.fillStyle="red",B.fillRect(0,0,r,r),Pr(e).then(function(A){B.drawImage(A,0,0);var e=B.getImageData(0,0,r,r).data;B.fillStyle="red",B.fillRect(0,0,r,r);A=t.createElement("div");return A.style.backgroundImage="url("+n+")",A.style.height="100px",Lr(e)?Pr(Nr(r,r,0,0,A)):Promise.reject(!1)}).then(function(A){return B.drawImage(A,0,0),Lr(B.getImageData(0,0,r,r).data)}).catch(function(){return!1})}(document):Promise.resolve(!1);return Object.defineProperty(Xr,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:A}),A},get SUPPORT_CORS_IMAGES(){var A=void 0!==(new Image).crossOrigin;return Object.defineProperty(Xr,"SUPPORT_CORS_IMAGES",{value:A}),A},get SUPPORT_RESPONSE_TYPE(){var A="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Xr,"SUPPORT_RESPONSE_TYPE",{value:A}),A},get SUPPORT_CORS_XHR(){var A="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Xr,"SUPPORT_CORS_XHR",{value:A}),A},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var A=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(Xr,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:A}),A}},Jr=function(A,e){this.text=A,this.bounds=e},Yr=function(A,e){var t=e.ownerDocument;if(t){var r=t.createElement("html2canvaswrapper");r.appendChild(e.cloneNode(!0));t=e.parentNode;if(t){t.replaceChild(r,e);A=f(A,r);return r.firstChild&&t.replaceChild(r.firstChild,r),A}}return d.EMPTY},Wr=function(A,e,t){var r=A.ownerDocument;if(!r)throw new Error("Node has no owner document");r=r.createRange();return r.setStart(A,e),r.setEnd(A,e+t),r},Zr=function(A){if(Xr.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(A)).map(function(A){return A.segment})}return function(A){for(var e,t=mr(A),r=[];!(e=t.next()).done;)e.value&&r.push(e.value.slice());return r}(A)},_r=function(A,e){return 0!==e.letterSpacing?Zr(A):function(A,e){if(Xr.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(A)).map(function(A){return A.segment})}return jr(A,e)}(A,e)},qr=[32,160,4961,65792,65793,4153,4241],jr=function(A,e){for(var t,r=wA(A,{lineBreak:e.lineBreak,wordBreak:"break-word"===e.overflowWrap?"break-word":e.wordBreak}),B=[];!(t=r.next()).done;)!function(){var A,e;t.value&&(A=t.value.slice(),A=Q(A),e="",A.forEach(function(A){-1===qr.indexOf(A)?e+=g(A):(e.length&&B.push(e),B.push(g(A)),e="")}),e.length&&B.push(e))}();return B},zr=function(A,e,t){var B,n,s,o,i;this.text=$r(e.data,t.textTransform),this.textBounds=(B=A,A=this.text,s=e,A=_r(A,n=t),o=[],i=0,A.forEach(function(A){var e,t,r;n.textDecorationLine.length||0e.height?new d(e.left+(e.width-e.height)/2,e.top,e.height,e.height):e.width"),Ln(this.referenceElement.ownerDocument,t,n),o.replaceChild(o.adoptNode(this.documentElement),o.documentElement),o.close(),A},fn.prototype.createElementClone=function(A){if(Cr(A,2),zB(A))return this.createCanvasClone(A);if(MB(A))return this.createVideoClone(A);if(SB(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return $B(e)&&($B(A)&&A.currentSrc&&A.currentSrc!==A.src&&(e.src=A.currentSrc,e.srcset=""),"lazy"===e.loading&&(e.loading="eager")),TB(e)?this.createCustomElementClone(e):e},fn.prototype.createCustomElementClone=function(A){var e=document.createElement("html2canvascustomelement");return Kn(A.style,e),e},fn.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(A,e){return e&&"string"==typeof e.cssText?A+e.cssText:A},""),r=A.cloneNode(!1);return r.textContent=t,r}}catch(A){if(this.context.logger.error("Unable to access cssRules property",A),"SecurityError"!==A.name)throw A}return A.cloneNode(!1)},fn.prototype.createCanvasClone=function(e){var A;if(this.options.inlineImages&&e.ownerDocument){var t=e.ownerDocument.createElement("img");try{return t.src=e.toDataURL(),t}catch(A){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}t=e.cloneNode(!1);try{t.width=e.width,t.height=e.height;var r,B,n=e.getContext("2d"),s=t.getContext("2d");return s&&(!this.options.allowTaint&&n?s.putImageData(n.getImageData(0,0,e.width,e.height),0,0):(!(r=null!==(A=e.getContext("webgl2"))&&void 0!==A?A:e.getContext("webgl"))||!1===(null==(B=r.getContextAttributes())?void 0:B.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e),s.drawImage(e,0,0))),t}catch(A){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return t},fn.prototype.createVideoClone=function(e){var A=e.ownerDocument.createElement("canvas");A.width=e.offsetWidth,A.height=e.offsetHeight;var t=A.getContext("2d");try{return t&&(t.drawImage(e,0,0,A.width,A.height),this.options.allowTaint||t.getImageData(0,0,A.width,A.height)),A}catch(A){this.context.logger.info("Unable to clone video as it is tainted",e)}A=e.ownerDocument.createElement("canvas");return A.width=e.offsetWidth,A.height=e.offsetHeight,A},fn.prototype.appendChildNode=function(A,e,t){XB(e)&&("SCRIPT"===e.tagName||e.hasAttribute(hn)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(e))||this.options.copyStyles&&XB(e)&&SB(e)||A.appendChild(this.cloneNode(e,t))},fn.prototype.cloneChildNodes=function(A,e,t){for(var r,B=this,n=(A.shadowRoot||A).firstChild;n;n=n.nextSibling)XB(n)&&rn(n)&&"function"==typeof n.assignedNodes?(r=n.assignedNodes()).length&&r.forEach(function(A){return B.appendChildNode(e,A,t)}):this.appendChildNode(e,n,t)},fn.prototype.cloneNode=function(A,e){if(PB(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var t=A.ownerDocument.defaultView;if(t&&XB(A)&&(JB(A)||YB(A))){var r=this.createElementClone(A);r.style.transitionProperty="none";var B=t.getComputedStyle(A),n=t.getComputedStyle(A,":before"),s=t.getComputedStyle(A,":after");this.referenceElement===A&&JB(r)&&(this.clonedReferenceElement=r),jB(r)&&Mn(r);t=this.counters.parse(new Ur(this.context,B)),n=this.resolvePseudoContent(A,r,n,gn.BEFORE);TB(A)&&(e=!0),MB(A)||this.cloneChildNodes(A,r,e),n&&r.insertBefore(n,r.firstChild);s=this.resolvePseudoContent(A,r,s,gn.AFTER);return s&&r.appendChild(s),this.counters.pop(t),(B&&(this.options.copyStyles||YB(A))&&!An(A)||e)&&Kn(B,r),0===A.scrollTop&&0===A.scrollLeft||this.scrolledElements.push([r,A.scrollLeft,A.scrollTop]),(en(A)||tn(A))&&(en(r)||tn(r))&&(r.value=A.value),r}return A.cloneNode(!1)},fn.prototype.resolvePseudoContent=function(o,A,e,t){var i=this;if(e){var r=e.content,Q=A.ownerDocument;if(Q&&r&&"none"!==r&&"-moz-alt-content"!==r&&"none"!==e.display){this.counters.parse(new Ur(this.context,e));var c=new wr(this.context,e),a=Q.createElement("html2canvaspseudoelement");Kn(e,a),c.content.forEach(function(A){if(0===A.type)a.appendChild(Q.createTextNode(A.value));else if(22===A.type){var e=Q.createElement("img");e.src=A.value,e.style.opacity="1",a.appendChild(e)}else if(18===A.type){var t,r,B,n,s;"attr"===A.name?(e=A.values.filter(_A)).length&&a.appendChild(Q.createTextNode(o.getAttribute(e[0].value)||"")):"counter"===A.name?(B=(r=A.values.filter($A))[0],r=r[1],B&&_A(B)&&(t=i.counters.getCounterValue(B.value),s=r&&_A(r)?pt.parse(i.context,r.value):3,a.appendChild(Q.createTextNode(Fn(t,s,!1))))):"counters"===A.name&&(B=(t=A.values.filter($A))[0],s=t[1],r=t[2],B&&_A(B)&&(B=i.counters.getCounterValues(B.value),n=r&&_A(r)?pt.parse(i.context,r.value):3,s=s&&0===s.type?s.value:"",s=B.map(function(A){return Fn(A,n,!1)}).join(s),a.appendChild(Q.createTextNode(s))))}else if(20===A.type)switch(A.value){case"open-quote":a.appendChild(Q.createTextNode(Xt(c.quotes,i.quoteDepth++,!0)));break;case"close-quote":a.appendChild(Q.createTextNode(Xt(c.quotes,--i.quoteDepth,!1)));break;default:a.appendChild(Q.createTextNode(A.value))}}),a.className=Dn+" "+vn;t=t===gn.BEFORE?" "+Dn:" "+vn;return YB(A)?A.className.baseValue+=t:A.className+=t,a}}},fn.destroy=function(A){return!!A.parentNode&&(A.parentNode.removeChild(A),!0)},fn);function fn(A,e,t){if(this.context=A,this.options=t,this.scrolledElements=[],this.referenceElement=e,this.counters=new Bn,this.quoteDepth=0,!e.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(e.ownerDocument.documentElement,!1)}(he=gn=gn||{})[he.BEFORE=0]="BEFORE",he[he.AFTER=1]="AFTER";function Hn(e){return new Promise(function(A){!e.complete&&e.src?(e.onload=A,e.onerror=A):A()})}var pn=function(A,e){var t=A.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(hn,"true"),A.body.appendChild(t),t},En=function(A){return Promise.all([].slice.call(A.images,0).map(Hn))},In=function(B){return new Promise(function(e,A){var t=B.contentWindow;if(!t)return A("No window assigned for iframe");var r=t.document;t.onload=B.onload=function(){t.onload=B.onload=null;var A=setInterval(function(){0"),e},Ln=function(A,e,t){A&&A.defaultView&&(e!==A.defaultView.pageXOffset||t!==A.defaultView.pageYOffset)&&A.defaultView.scrollTo(e,t)},bn=function(A){var e=A[0],t=A[1],A=A[2];e.scrollLeft=t,e.scrollTop=A},Dn="___html2canvas___pseudoelement_before",vn="___html2canvas___pseudoelement_after",xn='{\n    content: "" !important;\n    display: none !important;\n}',Mn=function(A){Sn(A,"."+Dn+":before"+xn+"\n         ."+vn+":after"+xn)},Sn=function(A,e){var t=A.ownerDocument;t&&((t=t.createElement("style")).textContent=e,A.appendChild(t))},Tn=(Gn.getOrigin=function(A){var e=Gn._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},Gn.isSameOrigin=function(A){return Gn.getOrigin(A)===Gn._origin},Gn.setContext=function(A){Gn._link=A.document.createElement("a"),Gn._origin=Gn.getOrigin(A.location.href)},Gn._origin="about:blank",Gn);function Gn(){}var On=(Vn.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(Yn(A)||Pn(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),e},Vn.prototype.match=function(A){return this._cache[A]},Vn.prototype.loadImage=function(s){return a(this,void 0,void 0,function(){var e,r,t,B,n=this;return H(this,function(A){switch(A.label){case 0:return(e=Tn.isSameOrigin(s),r=!Xn(s)&&!0===this._options.useCORS&&Xr.SUPPORT_CORS_IMAGES&&!e,t=!Xn(s)&&!e&&!Yn(s)&&"string"==typeof this._options.proxy&&Xr.SUPPORT_CORS_XHR&&!r,e||!1!==this._options.allowTaint||Xn(s)||Yn(s)||t||r)?(B=s,t?[4,this.proxy(B)]:[3,2]):[2];case 1:B=A.sent(),A.label=2;case 2:return this.context.logger.debug("Added image "+s.substring(0,256)),[4,new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,(Jn(B)||r)&&(t.crossOrigin="anonymous"),t.src=B,!0===t.complete&&setTimeout(function(){return A(t)},500),0t.width+C?0:Math.max(0,n-C),Math.max(0,s-l),As.TOP_RIGHT):new Zn(t.left+t.width-C,t.top+l),this.bottomRightPaddingBox=0t.width+F+A?0:n-F+A,s-(l+h),As.TOP_RIGHT):new Zn(t.left+t.width-(C+d),t.top+l+h),this.bottomRightContentBox=0A.element.container.styles.zIndex.order?(s=e,!1):0=A.element.container.styles.zIndex.order?(o=e+1,!1):0 "Datatables"])
+
+@section('css')
+
+
+
+
+@endsection
+
+@section('content')
+
+
+ + +
+
+

{{$title}} Management

+
+
+ @if(isset($buttons)) + @foreach($buttons as $button) + {{$button['title']}} + @endforeach + @endif +
+
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+ + + + @foreach($fields as $field => $props) + + @endforeach + + + + @foreach($items as $item) + + @foreach($fields as $field => $props) + @if($field != 'actions') + + @else + + @endif + @endforeach + + @endforeach + +
{{$props['title']}}
+ @switch($props['type']) + @case('image') + + @break + @case('text') + @case('select') + {{ isset($item->{$field}) ? $item->{$field} : '' }} + @break + @case('date') + {{ date("d M Y", strtotime($item->{$field})) }} + @break + @case('datetime') + {{ date("d M Y, h:iA", strtotime($item->{$field})+19800 ) }} + @break + + @endswitch + + @foreach($props['buttons'] as $key => $button) + @switch($button) + @case('edit') + + @break + @case('delete') + + @break + @default + @php + if(isset($button['href']) && $button['href'] != '') { + $href = $item->{$button['href']}; + } else { + $querystring = $button['querystring']; + foreach((array)$item as $k => $v) { + if(strpos($querystring,'{'.strtoupper($k).'}') !== false) + $querystring = str_replace('{'.strtoupper($k).'}', $v, $querystring); + } + $href = $base_url.'/'.$key.'?'.$querystring; + } + + @endphp + + @endswitch + @endforeach + Process + +
+ +
+
+
+
+ +
+ + + + + + +@endsection + +@section('script') + + + + + +@endsection \ No newline at end of file diff --git a/resources/views/activity/processimport.blade.php b/resources/views/activity/processimport.blade.php new file mode 100644 index 00000000..5c8afa7e --- /dev/null +++ b/resources/views/activity/processimport.blade.php @@ -0,0 +1,176 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

Process Import: {{$title}}

+
+ +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+
+
+ + + + + +
+
+ +
+
+ +
+
+
+
+ +
+ +@endsection + +@section('script') + + + +@endsection \ No newline at end of file diff --git a/resources/views/activity/stepresponse.blade.php b/resources/views/activity/stepresponse.blade.php new file mode 100644 index 00000000..866c8f1a --- /dev/null +++ b/resources/views/activity/stepresponse.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

Step:

+
+ +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+ +

Please wait while we process your request!!

+
+
+
+
+ +
+ +@endsection + +@section('script') + + + +@endsection \ No newline at end of file diff --git a/resources/views/bdeimport/list.blade.php b/resources/views/bdeimport/list.blade.php new file mode 100644 index 00000000..cec8a353 --- /dev/null +++ b/resources/views/bdeimport/list.blade.php @@ -0,0 +1,193 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

{{$title}} Management

+
+
+ @if(isset($buttons)) + @foreach($buttons as $button) + {{$button['title']}} + @endforeach + @endif +
+
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+ + + + @foreach($fields as $field => $props) + + @endforeach + + + + @foreach($items as $item) + + @foreach($fields as $field => $props) + @if($field != 'actions') + + @else + + @endif + @endforeach + + @endforeach + +
{{$props['title']}}
+ @switch($props['type']) + @case('image') + + @break + @case('text') + @case('select') + {{ isset($item->{$field}) ? $item->{$field} : '' }} + @break + @case('date') + {{ date("d M Y", strtotime($item->{$field})) }} + @break + @case('datetime') + {{ date("d M Y, h:iA", strtotime($item->{$field})+19800 ) }} + @break + + @endswitch + + @foreach($props['buttons'] as $key => $button) + @switch($button) + @case('edit') + + @break + @case('delete') + + @break + @default + @php + if(isset($button['href']) && $button['href'] != '') { + $href = $item->{$button['href']}; + } else { + $querystring = $button['querystring']; + foreach((array)$item as $k => $v) { + if(strpos($querystring,'{'.strtoupper($k).'}') !== false) + $querystring = str_replace('{'.strtoupper($k).'}', $v, $querystring); + } + $href = $base_url.'/'.$key.'?'.$querystring; + } + + @endphp + + @endswitch + @endforeach + Process + +
+ +
+
+
+
+ +
+ + + + + + +@endsection + +@section('script') + + + + + +@endsection \ No newline at end of file diff --git a/resources/views/bdeimport/processimport.blade.php b/resources/views/bdeimport/processimport.blade.php new file mode 100644 index 00000000..51003836 --- /dev/null +++ b/resources/views/bdeimport/processimport.blade.php @@ -0,0 +1,186 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

Process Import: {{$title}}

+
+ +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+
+
+ + + + + +
+
+ +
+
+ +
+
+
+
+ +
+ +@endsection + +@section('script') + + + +@endsection \ No newline at end of file diff --git a/resources/views/bdeimport/stepresponse.blade.php b/resources/views/bdeimport/stepresponse.blade.php new file mode 100644 index 00000000..866c8f1a --- /dev/null +++ b/resources/views/bdeimport/stepresponse.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

Step:

+
+ +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+ +

Please wait while we process your request!!

+
+
+
+
+ +
+ +@endsection + +@section('script') + + + +@endsection \ No newline at end of file diff --git a/resources/views/common/form.blade.php b/resources/views/common/form.blade.php index 747a455c..c677da3b 100644 --- a/resources/views/common/form.blade.php +++ b/resources/views/common/form.blade.php @@ -90,6 +90,16 @@ @endforeach @break + @case('multitextbox') +
+ @foreach($props['values'] as $k => $v) +
{{$v}}
+
+ +
+ @endforeach +
+ @break @case('yesno')
@@ -116,7 +126,7 @@ @break @case('file')
- +

1GB Max File size

@break diff --git a/resources/views/common/importprocess.blade.php b/resources/views/common/importprocess.blade.php new file mode 100644 index 00000000..2e8e8fdd --- /dev/null +++ b/resources/views/common/importprocess.blade.php @@ -0,0 +1,84 @@ +@extends('layouts.vertical', ["page_title"=> "Datatables"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ + +
+
+

Import Progress

+
+ +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +@if(session()->has('error')) +
+ {{ session()->get('error') }} +
+@endif +
+
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+ +@endsection + +@section('script') + + + +@endsection \ No newline at end of file diff --git a/resources/views/competition_contest/dashboard.blade.php b/resources/views/competition_contest/dashboard.blade.php new file mode 100644 index 00000000..3b301d99 --- /dev/null +++ b/resources/views/competition_contest/dashboard.blade.php @@ -0,0 +1,93 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+
+ + + + +
- + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-pulmocare/1723015306-c8d90868-1c50-4820-ab96-474cdff8e543.blade.php b/resources/views/form/rapport-pulmocare/1723015306-c8d90868-1c50-4820-ab96-474cdff8e543.blade.php new file mode 100644 index 00000000..a335157e --- /dev/null +++ b/resources/views/form/rapport-pulmocare/1723015306-c8d90868-1c50-4820-ab96-474cdff8e543.blade.php @@ -0,0 +1,258 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-shwas2/1705379922-16a0ddaf-b984-4882-87e4-0c7cfd3aca82.blade.php b/resources/views/form/rapport-shwas2/1705379922-16a0ddaf-b984-4882-87e4-0c7cfd3aca82.blade.php new file mode 100644 index 00000000..893110f6 --- /dev/null +++ b/resources/views/form/rapport-shwas2/1705379922-16a0ddaf-b984-4882-87e4-0c7cfd3aca82.blade.php @@ -0,0 +1,470 @@ +@php + // echo "
";
+    // print_r($questions);
+    // exit();
+@endphp
+
+
+
+
+
+    @include('layouts.shared/title-meta', ['title' => 'Form'])
+    @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? ''])
+    
+
+
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + diff --git a/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d.blade.php b/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d.blade.php new file mode 100755 index 00000000..eec8273b --- /dev/null +++ b/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d.blade.php @@ -0,0 +1,38 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + + + + + diff --git a/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d_old.blade.php b/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d_old.blade.php new file mode 100644 index 00000000..31642edc --- /dev/null +++ b/resources/views/form/rapport-shwas2/download-1716618943-376d2434-c459-4576-abda-5c994304ba4d_old.blade.php @@ -0,0 +1,105 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + + +@include('layouts.shared/footer-script') + + + + + + + + diff --git a/resources/views/form/rapport-team3/1684817074-91426536-36a1-4a50-a86e-935b82744638.blade.php b/resources/views/form/rapport-team3/1684817074-91426536-36a1-4a50-a86e-935b82744638.blade.php index ec5f4240..f67ef8f6 100644 --- a/resources/views/form/rapport-team3/1684817074-91426536-36a1-4a50-a86e-935b82744638.blade.php +++ b/resources/views/form/rapport-team3/1684817074-91426536-36a1-4a50-a86e-935b82744638.blade.php @@ -408,27 +408,47 @@ var yyyy = today.getFullYear(); today = yyyy + '-' + mm + '-' + dd; - var recordDateField = document.getElementById('field-plan_date_of_camp'); - recordDateField.setAttribute('min', today); + // if(today == '2024-01-03' || today == '2024-01-04' || today == '2024-01-05' ){ + // $('#add-camp-btn').attr("disabled", false); + // }else{ + // $('#add-camp-btn').attr("disabled", true); + // } - var executionDateField = document.getElementById('execution-plan_date_of_camp'); - // executionDateField.setAttribute('min', today); + const recordDateField = document.getElementById('field-plan_date_of_camp'); + // recordDateField.setAttribute('min', today); + // recordDateField.addEventListener('change', function() { + // let selectedDate = this.value; + // if (selectedDate !== '2024-01-08' && selectedDate !== '2024-01-22' ) { + // this.value = ''; + // alert("Plan Date Should Be 8th or 22nd January"); + // } + // }); - var executionDateField = document.getElementById('execution-execution_date'); + const executionPlanDateField = document.getElementById('execution-plan_date_of_camp'); + // executionPlanDateField.setAttribute('min', today); + // executionPlanDateField.addEventListener('change', function() { + // let selectedDate = this.value; + // if (selectedDate !=='2024-01-08' && selectedDate !=='2024-01-22') { + // this.value = ''; + // alert("Plan Date Should Be 8th or 22nd January"); + // } + // }); + + const executionDateField = document.getElementById('execution-execution_date'); executionDateField.addEventListener('change', function() { - var selectedDate = this.value; - if (selectedDate !== '2023-08-07' && selectedDate !== '2023-08-21') { - this.value = ''; - alert("Execution Date Should Be 7th Aug Or 21st Aug"); - } + // let selectedDate = this.value; + // if (selectedDate !=='2024-01-08' && selectedDate !=='2024-01-22') { + // this.value = ''; + // alert("Execution Date Should Be 8th or 22nd January"); + // } }); - executionDateField.value = '2023-08-07'; + // executionDateField.value = '2024-01-08'; - var editBtn = document.querySelector('.edit-btn'); - editBtn.addEventListener('click', function() { - executionDateField.value = '2023-08-07'; - }); + // var editBtn = document.querySelector('.edit-btn'); + // editBtn.addEventListener('click', function() { + // executionDateField.value = '2024-01-08'; + // }); }); diff --git a/resources/views/form/rapport-team3/1694761350-3cfa81a1-5d69-4b96-95da-dc49f1d75987.blade.php b/resources/views/form/rapport-team3/1694761350-3cfa81a1-5d69-4b96-95da-dc49f1d75987.blade.php new file mode 100644 index 00000000..bb53cc44 --- /dev/null +++ b/resources/views/form/rapport-team3/1694761350-3cfa81a1-5d69-4b96-95da-dc49f1d75987.blade.php @@ -0,0 +1,357 @@ + + + + + @include('layouts.shared/title-meta', ['title' => 'Form']) + @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + diff --git a/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-90db-d5cc02525a02.blade.php b/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-90db-d5cc02525a02.blade.php new file mode 100644 index 00000000..55985aed --- /dev/null +++ b/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-90db-d5cc02525a02.blade.php @@ -0,0 +1,249 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-neb2-d5cc02525a02.blade.php b/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-neb2-d5cc02525a02.blade.php new file mode 100644 index 00000000..5df59d85 --- /dev/null +++ b/resources/views/form/rapport-team3/1711602037-c4055eb4-8871-408f-neb2-d5cc02525a02.blade.php @@ -0,0 +1,249 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a-history.blade.php b/resources/views/form/rapport-team3/1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a-history.blade.php new file mode 100644 index 00000000..915dc037 --- /dev/null +++ b/resources/views/form/rapport-team3/1711947857-4fbd5d43-d176-4ec7-aff2-e4dec4b6e02a-history.blade.php @@ -0,0 +1,127 @@ + + + + @include('layouts.shared/title-meta', ['title' => "History"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1711948812-74f6adff-6bfc-4101-b293-317a9036f31e.blade.php b/resources/views/form/rapport-team3/1711948812-74f6adff-6bfc-4101-b293-317a9036f31e.blade.php new file mode 100644 index 00000000..0bc30bcc --- /dev/null +++ b/resources/views/form/rapport-team3/1711948812-74f6adff-6bfc-4101-b293-317a9036f31e.blade.php @@ -0,0 +1,236 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1712041277-2efcc6dd-124f-41ce-8719-12240c4e8b8f.blade.php b/resources/views/form/rapport-team3/1712041277-2efcc6dd-124f-41ce-8719-12240c4e8b8f.blade.php new file mode 100644 index 00000000..cc0daed0 --- /dev/null +++ b/resources/views/form/rapport-team3/1712041277-2efcc6dd-124f-41ce-8719-12240c4e8b8f.blade.php @@ -0,0 +1,350 @@ + + + + + @include('layouts.shared/title-meta', ['title' => 'Form']) + @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1713425460-8bdf7394-01b5-48f3-8985-343b465dd685.blade.php b/resources/views/form/rapport-team3/1713425460-8bdf7394-01b5-48f3-8985-343b465dd685.blade.php new file mode 100644 index 00000000..b2af0f98 --- /dev/null +++ b/resources/views/form/rapport-team3/1713425460-8bdf7394-01b5-48f3-8985-343b465dd685.blade.php @@ -0,0 +1,683 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + +
+ processing... +
+ + + + + +@include('layouts.shared/footer-script') + + + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a-history.blade.php b/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a-history.blade.php new file mode 100644 index 00000000..8c83a248 --- /dev/null +++ b/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a-history.blade.php @@ -0,0 +1,98 @@ + + + + @include('layouts.shared/title-meta', ['title' => "History"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + @include('layouts.shared/footer-script') + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a.blade.php b/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a.blade.php new file mode 100644 index 00000000..dc4eeb2d --- /dev/null +++ b/resources/views/form/rapport-team3/1713426268-c89f38eb-ec32-43ba-a81b-b690a8f90d6a.blade.php @@ -0,0 +1,225 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163-history.blade.php b/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163-history.blade.php new file mode 100644 index 00000000..3c2eafef --- /dev/null +++ b/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163-history.blade.php @@ -0,0 +1,106 @@ + + + + @include('layouts.shared/title-meta', ['title' => "History"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + @include('layouts.shared/footer-script') + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163.blade.php b/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163.blade.php new file mode 100644 index 00000000..85b6e31d --- /dev/null +++ b/resources/views/form/rapport-team3/1718178830-d871301e-312b-4a60-9c68-15afa4ce6163.blade.php @@ -0,0 +1,336 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/download-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php b/resources/views/form/rapport-team3/download-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php new file mode 100644 index 00000000..36f31aad --- /dev/null +++ b/resources/views/form/rapport-team3/download-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php @@ -0,0 +1,118 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + + +@include('layouts.shared/footer-script') + + + + + + + + diff --git a/resources/views/form/rapport-team3/download-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php b/resources/views/form/rapport-team3/download-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php new file mode 100644 index 00000000..36f31aad --- /dev/null +++ b/resources/views/form/rapport-team3/download-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php @@ -0,0 +1,118 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + + + + +@include('layouts.shared/footer-script') + + + + + + + + diff --git a/resources/views/form/rapport-team3/list-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php b/resources/views/form/rapport-team3/list-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php new file mode 100644 index 00000000..c90515ab --- /dev/null +++ b/resources/views/form/rapport-team3/list-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php @@ -0,0 +1,292 @@ + + + + @include('layouts.shared/title-meta', ['title' => "History"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/personalization-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php b/resources/views/form/rapport-team3/personalization-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php new file mode 100644 index 00000000..0f3d6ae7 --- /dev/null +++ b/resources/views/form/rapport-team3/personalization-1708679320-f4b89729-03d0-4c8d-b5bb-43209c0b7240.blade.php @@ -0,0 +1,312 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team3/personalization-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php b/resources/views/form/rapport-team3/personalization-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php new file mode 100644 index 00000000..8fbad56f --- /dev/null +++ b/resources/views/form/rapport-team3/personalization-1714578520-efa6c1b8-d34d-4ada-9ab8-661291282b1c.blade.php @@ -0,0 +1,354 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team4/1712229233-809cee00-d9d3-4c60-9316-cbac3be5d608.blade.php b/resources/views/form/rapport-team4/1712229233-809cee00-d9d3-4c60-9316-cbac3be5d608.blade.php new file mode 100644 index 00000000..b68504ff --- /dev/null +++ b/resources/views/form/rapport-team4/1712229233-809cee00-d9d3-4c60-9316-cbac3be5d608.blade.php @@ -0,0 +1,320 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team4/1712229881-94d8d6c0-10e4-486c-ab7d-fc25081c9547.blade.php b/resources/views/form/rapport-team4/1712229881-94d8d6c0-10e4-486c-ab7d-fc25081c9547.blade.php new file mode 100644 index 00000000..ab46af17 --- /dev/null +++ b/resources/views/form/rapport-team4/1712229881-94d8d6c0-10e4-486c-ab7d-fc25081c9547.blade.php @@ -0,0 +1,273 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team4/1712232699-275d8d52-ff57-4dc2-b134-e19bc512ab2c.blade.php b/resources/views/form/rapport-team4/1712232699-275d8d52-ff57-4dc2-b134-e19bc512ab2c.blade.php new file mode 100644 index 00000000..ce2e4334 --- /dev/null +++ b/resources/views/form/rapport-team4/1712232699-275d8d52-ff57-4dc2-b134-e19bc512ab2c.blade.php @@ -0,0 +1,213 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-team4/1715756512-9f9f0ca1-4419-4f40-a535-8140fd3c5973.blade.php b/resources/views/form/rapport-team4/1715756512-9f9f0ca1-4419-4f40-a535-8140fd3c5973.blade.php new file mode 100644 index 00000000..5279295f --- /dev/null +++ b/resources/views/form/rapport-team4/1715756512-9f9f0ca1-4419-4f40-a535-8140fd3c5973.blade.php @@ -0,0 +1,494 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1686391272-6c3db583-f878-4412-8d50-cbb68d4b4fae.blade.php b/resources/views/form/rapport-vitalis1/1686391272-6c3db583-f878-4412-8d50-cbb68d4b4fae.blade.php index e8ded61c..621c7f67 100644 --- a/resources/views/form/rapport-vitalis1/1686391272-6c3db583-f878-4412-8d50-cbb68d4b4fae.blade.php +++ b/resources/views/form/rapport-vitalis1/1686391272-6c3db583-f878-4412-8d50-cbb68d4b4fae.blade.php @@ -134,7 +134,7 @@ @case('file') required == 'yes' ? 'required' : '' }}> @break diff --git a/resources/views/form/rapport-vitalis1/1711959078-01074bc3-bb1d-46aa-9c8d-07a8f3a03231.blade.php b/resources/views/form/rapport-vitalis1/1711959078-01074bc3-bb1d-46aa-9c8d-07a8f3a03231.blade.php new file mode 100644 index 00000000..dc8cd981 --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1711959078-01074bc3-bb1d-46aa-9c8d-07a8f3a03231.blade.php @@ -0,0 +1,329 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-bacf-988998356d43.blade.php b/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-bacf-988998356d43.blade.php new file mode 100644 index 00000000..41280555 --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-bacf-988998356d43.blade.php @@ -0,0 +1,306 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-sparsh-988998356d43.blade.php b/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-sparsh-988998356d43.blade.php new file mode 100644 index 00000000..a34a3896 --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1715145870-563ff2f4-97fb-459a-sparsh-988998356d43.blade.php @@ -0,0 +1,306 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181.blade.php b/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181.blade.php new file mode 100644 index 00000000..e38cff01 --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181.blade.php @@ -0,0 +1,311 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181_zeeshan.blade.php b/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181_zeeshan.blade.php new file mode 100644 index 00000000..8e3ba90c --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1715317339-67c21455-1ffb-4205-9e9c-f65ef59f3181_zeeshan.blade.php @@ -0,0 +1,500 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis1/1720602263-914d1348-a5ff-473b-a626-15f061288070.blade.php b/resources/views/form/rapport-vitalis1/1720602263-914d1348-a5ff-473b-a626-15f061288070.blade.php new file mode 100644 index 00000000..80e070b0 --- /dev/null +++ b/resources/views/form/rapport-vitalis1/1720602263-914d1348-a5ff-473b-a626-15f061288070.blade.php @@ -0,0 +1,279 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis5/1660360290-3efb1e12-89e5-4e5f-ba3d-2b1da3f1086d.blade.php b/resources/views/form/rapport-vitalis5/1660360290-3efb1e12-89e5-4e5f-ba3d-2b1da3f1086d.blade.php new file mode 100644 index 00000000..8eabd8d5 --- /dev/null +++ b/resources/views/form/rapport-vitalis5/1660360290-3efb1e12-89e5-4e5f-ba3d-2b1da3f1086d.blade.php @@ -0,0 +1,217 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis5/1707906199-732e5929-b8c8-4477-9547-fd6ab45b8a6d.blade.php b/resources/views/form/rapport-vitalis5/1707906199-732e5929-b8c8-4477-9547-fd6ab45b8a6d.blade.php new file mode 100644 index 00000000..0542809d --- /dev/null +++ b/resources/views/form/rapport-vitalis5/1707906199-732e5929-b8c8-4477-9547-fd6ab45b8a6d.blade.php @@ -0,0 +1,235 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis5/1715341031-c25f2907-4aa0-4146-beac-3cdf7fda09a8.blade.php b/resources/views/form/rapport-vitalis5/1715341031-c25f2907-4aa0-4146-beac-3cdf7fda09a8.blade.php new file mode 100644 index 00000000..a28445f7 --- /dev/null +++ b/resources/views/form/rapport-vitalis5/1715341031-c25f2907-4aa0-4146-beac-3cdf7fda09a8.blade.php @@ -0,0 +1,317 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-vitalis5/1715399863-ac97f6eb-f617-4303-b9b1-4966d6dc7ea8.blade.php b/resources/views/form/rapport-vitalis5/1715399863-ac97f6eb-f617-4303-b9b1-4966d6dc7ea8.blade.php new file mode 100644 index 00000000..ff844388 --- /dev/null +++ b/resources/views/form/rapport-vitalis5/1715399863-ac97f6eb-f617-4303-b9b1-4966d6dc7ea8.blade.php @@ -0,0 +1,796 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714736141-4cdf81c6-b4d0-4c27-8790-b197973e8c03.blade.php b/resources/views/form/rapport-xennex/1714736141-4cdf81c6-b4d0-4c27-8790-b197973e8c03.blade.php new file mode 100644 index 00000000..a6e243c5 --- /dev/null +++ b/resources/views/form/rapport-xennex/1714736141-4cdf81c6-b4d0-4c27-8790-b197973e8c03.blade.php @@ -0,0 +1,633 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714745605-78c4e91b-67b5-4abe-8fce-20dc65b8fba9.blade.php b/resources/views/form/rapport-xennex/1714745605-78c4e91b-67b5-4abe-8fce-20dc65b8fba9.blade.php new file mode 100644 index 00000000..7d351e2c --- /dev/null +++ b/resources/views/form/rapport-xennex/1714745605-78c4e91b-67b5-4abe-8fce-20dc65b8fba9.blade.php @@ -0,0 +1,224 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714811638-4b31e3d6-94a9-4ef3-8561-f3f7ac8abd75.blade.php b/resources/views/form/rapport-xennex/1714811638-4b31e3d6-94a9-4ef3-8561-f3f7ac8abd75.blade.php new file mode 100644 index 00000000..2b1ef94e --- /dev/null +++ b/resources/views/form/rapport-xennex/1714811638-4b31e3d6-94a9-4ef3-8561-f3f7ac8abd75.blade.php @@ -0,0 +1,389 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714814005-ac412a78-be09-4390-96c6-d25763217111.blade.php b/resources/views/form/rapport-xennex/1714814005-ac412a78-be09-4390-96c6-d25763217111.blade.php new file mode 100644 index 00000000..20407622 --- /dev/null +++ b/resources/views/form/rapport-xennex/1714814005-ac412a78-be09-4390-96c6-d25763217111.blade.php @@ -0,0 +1,271 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714818520-5e2c546c-3088-41d6-abf2-f3a87f85f538.blade.php b/resources/views/form/rapport-xennex/1714818520-5e2c546c-3088-41d6-abf2-f3a87f85f538.blade.php new file mode 100644 index 00000000..853de62e --- /dev/null +++ b/resources/views/form/rapport-xennex/1714818520-5e2c546c-3088-41d6-abf2-f3a87f85f538.blade.php @@ -0,0 +1,348 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+@php +$brandData = [ + +['brand'=>'FITJOINT CAPSULES', 'slug'=>'fitjoint_capsules','pseudoId'=>'fitjoint_cap'], +['brand'=>'FITJOINT MAX CAPSULES', 'slug'=>'fitjoint_max_capsules','pseudoId'=>'fitjoint_max_cap'], + +]; + +@endphp + + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1714826108-65aea273-27a1-4282-957f-6d003996ee8b.blade.php b/resources/views/form/rapport-xennex/1714826108-65aea273-27a1-4282-957f-6d003996ee8b.blade.php new file mode 100644 index 00000000..e488412d --- /dev/null +++ b/resources/views/form/rapport-xennex/1714826108-65aea273-27a1-4282-957f-6d003996ee8b.blade.php @@ -0,0 +1,352 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+@php +$brandData = [ + +['brand'=>'Celol','slug'=>'celol_rx_value', 'slug2'=>'celol_pob_value' , 'pseudoId'=>'celol_pts_value', 'pseudoId2'=>'celol_rx_value', 'pseudoName'=>'celol_pob_value','pts'=>'celol_pts_value'], +['brand'=>'Proxym', 'slug'=>'proxym_rx_value', 'slug2'=>'proxym_pob_value' , 'pseudoId'=>'proxym_pts_value', 'pseudoId2'=>'proxym_rx_value','pseudoName'=>'proxym_pob_value','pts'=>'proxym_pts_value'], +['brand'=>'Fitjoint', 'slug'=>'fitjoint_rx_value','slug2'=>'fitjoint_pob_value','pseudoId'=>'fitjoint_pts_value', 'pseudoId2'=>'fitjoint_rx_value','pseudoName'=>'fitjoint_pob_value','pts'=>'fitjoint_pts_value'], +['brand'=>'Osteri', 'slug'=>'osteri_rx_value', 'slug2'=>'osteri_pob_value' , 'pseudoId'=>'osteri_pts_value', 'pseudoId2'=>'osteri_rx_value','pseudoName'=>'osteri_pob_value','pts'=>'osteri_pts_value'], + + +]; + +@endphp + + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1715407597-4f3ce677-d467-4afd-bc67-2d8904e4ea2b.blade.php b/resources/views/form/rapport-xennex/1715407597-4f3ce677-d467-4afd-bc67-2d8904e4ea2b.blade.php new file mode 100644 index 00000000..5e129f10 --- /dev/null +++ b/resources/views/form/rapport-xennex/1715407597-4f3ce677-d467-4afd-bc67-2d8904e4ea2b.blade.php @@ -0,0 +1,303 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1715505619-bff0dba3-a07f-46bb-a128-029a724c60e0.blade.php b/resources/views/form/rapport-xennex/1715505619-bff0dba3-a07f-46bb-a128-029a724c60e0.blade.php new file mode 100644 index 00000000..33129047 --- /dev/null +++ b/resources/views/form/rapport-xennex/1715505619-bff0dba3-a07f-46bb-a128-029a724c60e0.blade.php @@ -0,0 +1,1287 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+@php +$brandData = [ + +['brand'=>'CELOL', 'slug'=>'celol_units','pseudoId'=>'celol_value','slug2'=>'celol2'], +['brand'=>'Denmab', 'slug'=>'denmab_units','pseudoId'=>'denmab_value','slug2'=>'denmab2'], +['brand'=>'Emanzen', 'slug'=>'emanzen_units','pseudoId'=>'emanzen_value','slug2'=>'emanzen2'], +['brand'=>'Ferium XT', 'slug'=>'ferium_xt_units','pseudoId'=>'ferium_xt_value','slug2'=>'ferium_xt2'], +['brand'=>'Fitjoint', 'slug'=>'fitjoint_units','pseudoId'=>'fitjoint_value','slug2'=>'fitjoint2'], +['brand'=>'Galact Granules', 'slug'=>'galact_granules_units','pseudoId'=>'galact_granules_value','slug2'=>'galact_granules2'], +['brand'=>'Infen P', 'slug'=>'infen_p_units','pseudoId'=>'infen_p_value','slug2'=>'infen_p2'], +['brand'=>'Osteri', 'slug'=>'osteri_units','pseudoId'=>'osteri_value','slug2'=>'osteri2'], +['brand'=>'Proxym', 'slug'=>'proxym_units','pseudoId'=>'proxym_value','slug2'=>'proxym2'], +['brand'=>'Ferium Injection', 'slug'=>'ferium_injection_units','pseudoId'=>'ferium_injection_value','slug2'=>'ferium_injection2'], +['brand'=>'Sylate', 'slug'=>'sylate_units','pseudoId'=>'sylate_value','slug2'=>'sylate2'], + + +]; + +@endphp + + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1716044604-564e7057-1e74-486a-becf-aab511433a66.blade.php b/resources/views/form/rapport-xennex/1716044604-564e7057-1e74-486a-becf-aab511433a66.blade.php new file mode 100644 index 00000000..c29f1d34 --- /dev/null +++ b/resources/views/form/rapport-xennex/1716044604-564e7057-1e74-486a-becf-aab511433a66.blade.php @@ -0,0 +1,309 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1716056208-fd1760b0-ec1f-4d25-8b4a-31858484d709.blade.php b/resources/views/form/rapport-xennex/1716056208-fd1760b0-ec1f-4d25-8b4a-31858484d709.blade.php new file mode 100644 index 00000000..988ec46e --- /dev/null +++ b/resources/views/form/rapport-xennex/1716056208-fd1760b0-ec1f-4d25-8b4a-31858484d709.blade.php @@ -0,0 +1,387 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-8c8b-c069a405c864.blade.php b/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-8c8b-c069a405c864.blade.php new file mode 100644 index 00000000..8f479c4e --- /dev/null +++ b/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-8c8b-c069a405c864.blade.php @@ -0,0 +1,248 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-c2c-c069a405c864.blade.php b/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-c2c-c069a405c864.blade.php new file mode 100644 index 00000000..c923d0a9 --- /dev/null +++ b/resources/views/form/rapport-xennex/1716267411-74ef7199-6298-4bae-c2c-c069a405c864.blade.php @@ -0,0 +1,228 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1721832915-af12268b-3d68-4ba4-a300-2d5ed5ff625c.blade.php b/resources/views/form/rapport-xennex/1721832915-af12268b-3d68-4ba4-a300-2d5ed5ff625c.blade.php new file mode 100644 index 00000000..71c706e3 --- /dev/null +++ b/resources/views/form/rapport-xennex/1721832915-af12268b-3d68-4ba4-a300-2d5ed5ff625c.blade.php @@ -0,0 +1,400 @@ + + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/1721843916-4ab1724d-dc73-4e12-9579-35928fcf4dc0.blade.php b/resources/views/form/rapport-xennex/1721843916-4ab1724d-dc73-4e12-9579-35928fcf4dc0.blade.php new file mode 100644 index 00000000..23339107 --- /dev/null +++ b/resources/views/form/rapport-xennex/1721843916-4ab1724d-dc73-4e12-9579-35928fcf4dc0.blade.php @@ -0,0 +1,276 @@ + + + + @include('layouts.shared/title-meta', ['title' => "Form"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + + + +
+ processing... +
+ + + + +@include('layouts.shared/footer-script') + + + + + + \ No newline at end of file diff --git a/resources/views/form/rapport-xennex/list.blade.php b/resources/views/form/rapport-xennex/list.blade.php new file mode 100644 index 00000000..ec693308 --- /dev/null +++ b/resources/views/form/rapport-xennex/list.blade.php @@ -0,0 +1,224 @@ + + + + @include('layouts.shared/title-meta', ['title' => "History"]) + @include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? '']) + +
+ processing... +
+ + + + + + @include('layouts.shared/footer-script') + + + \ No newline at end of file diff --git a/resources/views/formexports/form.blade.php b/resources/views/formexports/form.blade.php new file mode 100644 index 00000000..86fd78e4 --- /dev/null +++ b/resources/views/formexports/form.blade.php @@ -0,0 +1,168 @@ +@extends('layouts.vertical', ["page_title"=> "Add & Edit Products"]) + +@section('css') + + + + +@endsection + +@section('content') + +
+ +@if(session()->has('message')) +
+ {{ session()->get('message') }} +
+@endif +
+
+
+
+ @csrf +
+
+
+

Add / Edit {{$title}}

+
+
+
+ Back + +
+
+ @foreach($fields as $field => $props) + @if($props['type'] != 'hidden') +
+ + @endif + @switch($props['type']) + @case('hidden') + + @break + @case('text') + @case('email') + @case('number') + @case('tel') + + @break + @case('date') + + @break + @case('datetime') + + @break + @case('textarea') + + @break + @case('select') + + @break + @case('checkbox') + @foreach($props['values'] as $k => $v) +
+ {$field}) && in_array($k, $item->{$field}) ? 'checked':''}}> + +
+ @endforeach + @break + @case('multiselect') + + @break + @case('bigmultiselect') + + @break + @case('yesno') +
+
+ {$field}) && $item->{$field} == 'yes' ? 'checked':''}} {{isset($props['required'])&&$props['required']?'required':'' }}> + +
+
+ {$field}) && $item->{$field} == 'no' ? 'checked':''}}> + +
+
+ @break + @case('image') +
+ +

500MB Max File size

+
+ @break + @case('multiimage') +
+ +

500MB Max File size

+
+ @break + @case('file') +
+ +

1GB Max File size

+
+ @break + + @endswitch + @if($props['type'] != 'hidden') +
+ @endif + @endforeach + +
+
+ Back + +
+
+
+
+
+
+
+
+
+ +@endsection + +@section('script') + + + + +@endsection \ No newline at end of file diff --git a/resources/views/hierarchy/part.blade.php b/resources/views/hierarchy/part.blade.php index 22962b84..bedd097b 100644 --- a/resources/views/hierarchy/part.blade.php +++ b/resources/views/hierarchy/part.blade.php @@ -3,7 +3,7 @@ @foreach($items[$myid] as $item)
  • - {{$item->name}} ({{$item->type}}) - {{$item->is_vacant? 'Vacant' : $item->owner_info->name .' (' .$item->owner_info->employee_code. ')'}} + {{$item->name}} ({{$item->type}}) - {{$item->is_vacant? 'Vacant' : $item->owner_info->name .' (' . (isset($item->owner_info->employee_code)?$item->owner_info->employee_code:'-') . ')'}} diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 1304a4d7..2913c7c2 100755 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -106,6 +106,7 @@
    @endif +
    @@ -115,6 +116,7 @@ + diff --git a/resources/views/index_bck_23oct2023.blade.php b/resources/views/index_bck_23oct2023.blade.php new file mode 100644 index 00000000..1304a4d7 --- /dev/null +++ b/resources/views/index_bck_23oct2023.blade.php @@ -0,0 +1,270 @@ +@extends('layouts.vertical', ["page_title"=> "Dashboard", "mode" => $mode ?? "", "demo" => $demo ?? ""]) + +@section('css') + + + + +@endsection + +@section('content') + + +
    + + +
    +
    +
    +

    Dashboard

    +
    +
    + +
    + + +
    + @foreach($metrics as $metric) +
    +
    +
    +

    {{$metric->name}}

    +
    {{$metric->current_period}}
    +
    +
    +
    {{$metric->label}}
    +

    {{$metric->value}} {{$metric->type=='verses' ? ' / ' . $metric->max : ''}}

    +
    + @foreach($metric->available_charts as $chart) + {{$chart->name}} Chart + @endforeach +
    +
    +
    +
    +
    + @endforeach +
    + + @foreach($widgets as $widget) + @widget($widget->widget_name, (array)$widget) + @endforeach + + @if(sizeof($campaigns) >0) +
    +
    +
    +

    Campaigns

    +
    +
    + @foreach($campaigns as $campaign) +
    +
    +
    +

    {{$campaign->title}}

    +
    This Month
    +
    +
    +
    +

    {{$campaign->self_points->points}}

    +
    {{$campaign->self_points->text}}
    +
    +
    +
    +
    +

    {{$campaign->team_rank->points}}

    +
    {{$campaign->team_rank->text}}
    +
    +
    +
    +
    +

    {{$campaign->overall_rank->points}}

    +
    {{$campaign->overall_rank->text}}
    +
    +
    +
    +
    +

    {{$campaign->rank_in_team->points}}

    +
    {{$campaign->rank_in_team->text}}
    +
    +
    +
    + +
    +
    +
    +
    +
    + @endforeach +
    + @endif +
    + +@endsection + +@section('script') + + + + + + + + +@endsection \ No newline at end of file diff --git a/resources/views/layouts/shared/left-sidebar.blade.php b/resources/views/layouts/shared/left-sidebar.blade.php index dd4964b1..0f43b1b3 100755 --- a/resources/views/layouts/shared/left-sidebar.blade.php +++ b/resources/views/layouts/shared/left-sidebar.blade.php @@ -101,6 +101,11 @@ Domain
  • @endif + @if(in_array('app_get_all', $permissions)) +
  • + Apps +
  • + @endif @@ -180,7 +185,7 @@ @endif @if(in_array('courses_get_all', $permissions)) -
  • + @endif @if(in_array('contest_get_all', $permissions)) @@ -329,6 +334,38 @@
  • @endif + + @if(in_array('appreciation_category_get_all', $permissions) || in_array('appreciation_image_get_all', $permissions) || in_array('badge_list_get_all', $permissions) || @@ -372,6 +409,29 @@ @endif + @if(auth()->user()->domain == 'team3') + + @endif + @if(in_array('formentity_get_all', $permissions) || in_array('formaction_get_all', $permissions) || in_array('all_data_access', $permissions) || @@ -429,10 +489,25 @@ Products @endif + @if(auth()->user()->email == 'team3-external@agency.com') + @php + list($partition, $form_id) = explode('_', auth()->user()->forms); + @endphp +
  • + All Submissions +
  • + @endif + @endif + @if(auth()->user()->domain == 'pulmocare') + + @endif + diff --git a/resources/views/magmedia/form.blade.php b/resources/views/magmedia/form.blade.php index b8ea98e1..f173ea89 100644 --- a/resources/views/magmedia/form.blade.php +++ b/resources/views/magmedia/form.blade.php @@ -114,7 +114,7 @@ @break @case('file')
    - +

    1GB Max File size

    @break diff --git a/resources/views/metricreport/appreport.blade.php b/resources/views/metricreport/appreport.blade.php index 71445472..67ced7e5 100644 --- a/resources/views/metricreport/appreport.blade.php +++ b/resources/views/metricreport/appreport.blade.php @@ -23,13 +23,13 @@

    {{ucwords($graph->type)}} Metric

    -
    + +

    Date Range Selected: {{$graph->first_day}} to {{$graph->last_day}}

    -
    +
    @if((in_array($post['type'], ['trend','leaderboard']) && !in_array($post['chart'], ['line', 'bar']) ) || ($post['type'] == 'graphical' && $graph->type == 'grouped') || ($post['type'] == 'details' && $graph->chart == 'tabular') || ($post['type'] == 'contacts' && $graph->chart == 'contacts') || ($post['type'] == 'scoreboard' && $graph->chart == 'leaderboard') ) @@ -60,7 +60,8 @@
    @foreach($charts as $chart) @if(sizeof($chart->charts)>0) - {{$chart->name}} + + @endif @endforeach
    @@ -93,25 +94,31 @@
    @switch(true) @case($graph->chart == 'leaderboard') -
    +
    @if(sizeof($breadcrumbs) == 0) -
    - - - -
    -
    - - +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bdedoctorscans.blade.php b/resources/views/report/bdedoctorscans.blade.php new file mode 100644 index 00000000..1eacf4a4 --- /dev/null +++ b/resources/views/report/bdedoctorscans.blade.php @@ -0,0 +1,267 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') +
    + processing... +
    + +
    + + +
    +
    +

    Doctor wise Scans Report

    +
    +
    + @include('report.navigation') + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bdeeducatorwiseaverage.blade.php b/resources/views/report/bdeeducatorwiseaverage.blade.php new file mode 100644 index 00000000..a4c3fce9 --- /dev/null +++ b/resources/views/report/bdeeducatorwiseaverage.blade.php @@ -0,0 +1,237 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Educator wise average Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bderbmwise.blade.php b/resources/views/report/bderbmwise.blade.php new file mode 100644 index 00000000..0e633de3 --- /dev/null +++ b/resources/views/report/bderbmwise.blade.php @@ -0,0 +1,186 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    RBM Wise weekly Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bdescansvscalls.blade.php b/resources/views/report/bdescansvscalls.blade.php new file mode 100644 index 00000000..554e72fb --- /dev/null +++ b/resources/views/report/bdescansvscalls.blade.php @@ -0,0 +1,265 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + +
    +
    +

    Scan VS Sales Summary Report

    +
    +
    + @include('report.navigation') + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bdesummary.blade.php b/resources/views/report/bdesummary.blade.php new file mode 100644 index 00000000..bb32d7a4 --- /dev/null +++ b/resources/views/report/bdesummary.blade.php @@ -0,0 +1,357 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + +
    +
    +

    Summery Report

    +
    +
    + @include('report.navigation') + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TargetAchievementTotal Dr ReferralTotal Chemist ReferralCall DoneCalls Not DoneTotal Calls% of Achievement
    {{ $totals->target }}{{ $totals->achievement }}{{ $totals->total_dr_referrel }}{{ $totals->total_ch_referrel }}{{ $totals->call_done }}{{ $totals->call_not_done }}{{ $totals->total_calls }}{{ $totals->calls_achievement }}
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bfactivitywise.blade.php b/resources/views/report/bfactivitywise.blade.php new file mode 100644 index 00000000..4db6a92f --- /dev/null +++ b/resources/views/report/bfactivitywise.blade.php @@ -0,0 +1,1024 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + +@endsection + +@section('content') +
    + processing... +
    + +
    + + +
    +
    +

    Activity Wise Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + @csrf +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + + +@endsection diff --git a/resources/views/report/bfdoctorwise.blade.php b/resources/views/report/bfdoctorwise.blade.php new file mode 100644 index 00000000..d1f52394 --- /dev/null +++ b/resources/views/report/bfdoctorwise.blade.php @@ -0,0 +1,835 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + processing... +
    +
    + + +
    +
    +

    Doctor Wise Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bfeducatorwise.blade.php b/resources/views/report/bfeducatorwise.blade.php new file mode 100644 index 00000000..4f75011e --- /dev/null +++ b/resources/views/report/bfeducatorwise.blade.php @@ -0,0 +1,846 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') +
    + processing... +
    + +
    + + +
    +
    +

    Educator Wise Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bfedudoctorwise.blade.php b/resources/views/report/bfedudoctorwise.blade.php new file mode 100644 index 00000000..8e8896d4 --- /dev/null +++ b/resources/views/report/bfedudoctorwise.blade.php @@ -0,0 +1,854 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') +
    + processing... +
    + +
    + + +
    +
    +

    Educator - Doctor Wise Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bfsummary.blade.php b/resources/views/report/bfsummary.blade.php new file mode 100644 index 00000000..4b2a84d6 --- /dev/null +++ b/resources/views/report/bfsummary.blade.php @@ -0,0 +1,1734 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Summary Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    + +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/bfsummary2.blade.php b/resources/views/report/bfsummary2.blade.php new file mode 100644 index 00000000..cf2909f8 --- /dev/null +++ b/resources/views/report/bfsummary2.blade.php @@ -0,0 +1,277 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Summary 2 Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    +
    + +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/drreferralanalysis.blade.php b/resources/views/report/drreferralanalysis.blade.php new file mode 100644 index 00000000..5e80a102 --- /dev/null +++ b/resources/views/report/drreferralanalysis.blade.php @@ -0,0 +1,214 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Dr Referral Analysis

    +
    +
    + @include('report.navigation') + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/drreferralsummary.blade.php b/resources/views/report/drreferralsummary.blade.php new file mode 100644 index 00000000..3aebbe44 --- /dev/null +++ b/resources/views/report/drreferralsummary.blade.php @@ -0,0 +1,207 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Dr Referral Summary

    +
    +
    + @include('report.navigation') + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/report/navigation.blade.php b/resources/views/report/navigation.blade.php new file mode 100644 index 00000000..fc92acdc --- /dev/null +++ b/resources/views/report/navigation.blade.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/resources/views/report/nybfdoctorwise.blade.php b/resources/views/report/nybfdoctorwise.blade.php new file mode 100644 index 00000000..1e8cbff1 --- /dev/null +++ b/resources/views/report/nybfdoctorwise.blade.php @@ -0,0 +1,164 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Doctor wise Follow up

    +
    +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +@endsection +@php +function ordinal($number) { + $ends = array('th','st','nd','rd','th','th','th','th','th','th'); + if ((($number % 100) >= 11) && (($number%100) <= 13)) + return $number. 'th'; + else + return $number. $ends[$number % 10]; +} +@endphp +@section('script') + + + + +@endsection diff --git a/resources/views/report/nybfsummary.blade.php b/resources/views/report/nybfsummary.blade.php new file mode 100644 index 00000000..896976ec --- /dev/null +++ b/resources/views/report/nybfsummary.blade.php @@ -0,0 +1,81 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Followup Summary

    +
    +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + + @php + function ordinal($number) { + $ends = array('th','st','nd','rd','th','th','th','th','th','th'); + if ((($number % 100) >= 11) && (($number%100) <= 13)) + return $number. 'th'; + else + return $number. $ends[$number % 10]; + } + @endphp +
    +
    +
    +
    +
    + + + + + + + + + @foreach($follow_up as $fol) + + + + + + + @endforeach + +
    Follow upNo of doctorPOB – Respules Pack/doctorVirtual/Physical
    {{ordinal($fol->follow_up)}} Follow up{{$fol->no_of_doctors}}{{$fol->total_pob}} ({{ceil($fol->total_pob/$fol->no_of_doctors)}}){{$fol->virtual_visits}} / {{$fol->physical_visits}}
    +
    + +
    +
    +
    +
    + +
    + +@endsection + +@section('script') + + + +@endsection diff --git a/resources/views/report/nyexecutionfollowup.blade.php b/resources/views/report/nyexecutionfollowup.blade.php new file mode 100644 index 00000000..022f412c --- /dev/null +++ b/resources/views/report/nyexecutionfollowup.blade.php @@ -0,0 +1,227 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    Doctor wise Follow up

    +
    +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +@endsection +@php +function ordinal($number) { + $ends = array('th','st','nd','rd','th','th','th','th','th','th'); + if ((($number % 100) >= 11) && (($number%100) <= 13)) + return $number. 'th'; + else + return $number. $ends[$number % 10]; +} +@endphp +@section('script') + + + + +@endsection diff --git a/resources/views/report/rbmwise.blade.php b/resources/views/report/rbmwise.blade.php new file mode 100644 index 00000000..f392c96b --- /dev/null +++ b/resources/views/report/rbmwise.blade.php @@ -0,0 +1,389 @@ +@extends('layouts.vertical', ['page_title' => 'Datatables']) + +@section('css') + + + + + + + + +@endsection + +@section('content') + +
    + + +
    +
    +

    {{ $title }} Report

    +
    + +
    + + @if (session()->has('message')) +
    + {{ session()->get('message') }} +
    + @endif + @if (session()->has('error')) +
    + {{ session()->get('error') }} +
    + @endif + {{--
    +
    +
    +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    + + +
    + +
    +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    --}} + +
    +
    +
    + +
    +
    +
    + +
    + + + + +@endsection + +@section('script') + + + + + + + +@endsection diff --git a/resources/views/srvey/rapport-team3/1711710347-b4f08442-60dc-4a4c-a9c7-a759d95c5cad.blade.php b/resources/views/srvey/rapport-team3/1711710347-b4f08442-60dc-4a4c-a9c7-a759d95c5cad.blade.php new file mode 100644 index 00000000..44b6e98e --- /dev/null +++ b/resources/views/srvey/rapport-team3/1711710347-b4f08442-60dc-4a4c-a9c7-a759d95c5cad.blade.php @@ -0,0 +1,260 @@ + + + + + @include('layouts.shared/title-meta', ['title' => 'Form']) + @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? '']) + + +
    + processing... +
    + + + + + + @include('layouts.shared/footer-script') + + + + + diff --git a/resources/views/widgets/compatition_dashboard.blade.php b/resources/views/widgets/compatition_dashboard.blade.php new file mode 100644 index 00000000..79ed82b2 --- /dev/null +++ b/resources/views/widgets/compatition_dashboard.blade.php @@ -0,0 +1,55 @@ +
    +
    +

    {{$title}}

    +
    + @foreach($scores as $score) +
    + + Contest Emailer +
    + +
    +

    {{$score->title}}

    + +
    + + + + + + + + + + + + + + @foreach($score->participants as $participant) + + + + + + + + + + + @endforeach + +
    DownloadRankTeam NameAvg RunsTM CountTotal Runs
    Team Emailer

    {{$participant->rank}}

    + contact-img +
    {{$participant->team->name}}
    {{ number_format((float)$participant->avg_score, 2, '.', '') }}{{ $participant->users_count }}{{ $participant->score }}
    +
    +
    +
    +
    + @endforeach +
    +
    +
    diff --git a/resources/views/widgets/compatition_dashboard.php b/resources/views/widgets/compatition_dashboard.php new file mode 100644 index 00000000..3abec437 --- /dev/null +++ b/resources/views/widgets/compatition_dashboard.php @@ -0,0 +1,59 @@ +
    +
    +

    {{$title}}

    +
    + @foreach($scores as $score) +
    + +
    +
    {{date("d M Y h:iA", strtotime($score->validity_start))}} - {{date("d M Y h:iA", strtotime($score->validity_end)-1 )}}
    +
    +

    {{$score->title}}

    + +
    + + + + + + + + + + @php + $rank = 0; + $lastscore = 0; + @endphp + @foreach($score->participants as $participant) + @if($participant->type == 'Team') + @php + $score = is_object($participant->score) ? 0 : $participant->score; + if($lastscore == 0 && $score > 0) { + $rank++; + $lastscore = $score; + } + if($lastscore > 0 && $score < $lastscore) { + $rank++; + $lastscore = $score; + } + @endphp + + + + + + + @endif + @endforeach + +
    Team NameRxRank
    + contact-img +
    {{$participant->team->name}}
    {{ is_object($participant->score) ? '-' : $participant->score }}

    {{$rank}}

    +
    +
    +
    +
    + @endforeach +
    +
    +
    diff --git a/resources/views/widgets/compatition_team_dashboard.blade.php b/resources/views/widgets/compatition_team_dashboard.blade.php new file mode 100644 index 00000000..2096df16 --- /dev/null +++ b/resources/views/widgets/compatition_team_dashboard.blade.php @@ -0,0 +1,62 @@ +
    +
    +

    {{$title}}

    +
    + @foreach($scores as $score) +
    + +
    +
    {{date("d M Y h:iA", strtotime($score->validity_start))}} - {{date("d M Y h:iA", strtotime($score->validity_end)-1 )}}
    +
    +

    {{$score->title}}

    + +
    + + + + + + @foreach($score->metrics as $metric) + + @endforeach + + + + + + @php + $rank = 0; + $lastscore = 0; + $metrics = $score->metrics; + @endphp + @foreach($score->userscore as $participant) + @php + $score = is_object($participant->score) ? 0 : $participant->score; + if($lastscore == 0 && $score > 0) { + $rank++; + $lastscore = $score; + } + if($lastscore > 0 && $score < $lastscore) { + $rank++; + $lastscore = $score; + } + @endphp + + + + @foreach($metrics as $metric) + + @endforeach + + + @endforeach + +
    RankUser Name{{$metric->name}}Total Runs

    {{$rank}}

    {{$participant->name}}
    {{ isset($participant->{$metric->id}) ? $participant->{$metric->id} : 0 }}{{ is_object($participant->score) ? '-' : $participant->score }}
    +
    +
    +
    +
    + @endforeach +
    +
    +
    diff --git a/resources/views/widgets/viva_compatition_live_score.blade.php b/resources/views/widgets/viva_compatition_live_score.blade.php index 39e435ea..3abec437 100644 --- a/resources/views/widgets/viva_compatition_live_score.blade.php +++ b/resources/views/widgets/viva_compatition_live_score.blade.php @@ -4,7 +4,8 @@
    @foreach($scores as $score)
    -
    + +
    {{date("d M Y h:iA", strtotime($score->validity_start))}} - {{date("d M Y h:iA", strtotime($score->validity_end)-1 )}}

    {{$score->title}}

    @@ -14,18 +15,35 @@ Team Name - Score + Rx + Rank + @php + $rank = 0; + $lastscore = 0; + @endphp @foreach($score->participants as $participant) @if($participant->type == 'Team') + @php + $score = is_object($participant->score) ? 0 : $participant->score; + if($lastscore == 0 && $score > 0) { + $rank++; + $lastscore = $score; + } + if($lastscore > 0 && $score < $lastscore) { + $rank++; + $lastscore = $score; + } + @endphp contact-img
    {{$participant->team->name}}
    {{ is_object($participant->score) ? '-' : $participant->score }} +

    {{$rank}}

    @endif @endforeach diff --git a/routes/web.php b/routes/web.php index d52aa388..b21489b8 100755 --- a/routes/web.php +++ b/routes/web.php @@ -71,6 +71,16 @@ use App\Http\Controllers\ArticleController; use App\Http\Controllers\ArticlebankController; use App\Http\Controllers\LmsquizController; +use App\Http\Controllers\BrandController; +use App\Http\Controllers\ProductController; +use App\Http\Controllers\ProductattributeController; +use App\Http\Controllers\ActivityimportController; +use App\Http\Controllers\BdeimportController; + +use App\Http\Controllers\ReportController; +use App\Http\Controllers\AppController; +use App\Http\Controllers\CompetitionreportController; + /* |-------------------------------------------------------------------------- | Web Routes @@ -165,8 +175,17 @@ $modules = ['user' => UserController::class, 'lesson' => LessonController::class, 'article' => ArticleController::class, 'articlebank' => ArticlebankController::class, - 'lmsquiz' => LmsquizController::class + 'lmsquiz' => LmsquizController::class, + 'brand' => BrandController::class, + 'product' => ProductController::class, + 'productattribute' => ProductattributeController::class, + 'activityimport' => ActivityimportController::class, + 'bdeimport' => BdeimportController::class, + 'report' => ReportController::class, + 'app' => AppController::class, + 'competitionreport' => CompetitionreportController::class, + ]; foreach ($modules as $mod => $class) { Route::get('/'.$mod.'s', [$class, 'list'])->name($mod.'-list'); @@ -197,6 +216,16 @@ Route::post('/form/ajaxsubmitmultiple', [FormController::class, 'ajaxsubmitmulti Route::get('/form/competitioncontest', [FormController::class, 'competitioncontest']); Route::get('/form/approvereject', [FormController::class, 'approvereject']); +Route::get('/form/downloadtempletepdf', [FormController::class, 'downloadtempletepdf']); + +Route::get('/form/iframeupload', [FormController::class, 'iframeupload']); +Route::post('/form/iframeupload', [FormController::class, 'postiframeupload']); +Route::get('/form/allsubmissions', [FormController::class, 'allsubmissions']); +Route::get('/form/delete', [FormController::class, 'deletesubmission']); +Route::get('/form/fullworkflow', [FormController::class, 'fullworkflow']); +Route::get('/form/approverejectmultiple', [FormController::class, 'approverejectmultiple']); +Route::get('/form/allaprovers', [FormController::class, 'allaprovers']); + Route::get('/form/{finfo}', [FormController::class, 'handle']);