{"action":"created","comment":{"url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/comments/62080130","id":62080130,"diff_hunk":"@@ -24,666 +24,849 @@\n extern const AP_HAL::HAL& hal;\n \n //constructor\n-AP_Frsky_Telem::AP_Frsky_Telem(AP_AHRS &ahrs, AP_BattMonitor &battery) :\n+AP_Frsky_Telem::AP_Frsky_Telem(AP_AHRS &ahrs, const AP_BattMonitor &battery, const RangeFinder &rng, const AP_InertialNav_NavEKF &inav) :\n     _ahrs(ahrs),\n     _battery(battery),\n+    _rng(rng),\n+    _inav(inav),\n     _port(NULL),\n-    _initialised_uart(false),\n-    _protocol(FrSkyUnknown),\n+    _protocol(),\n     _crc(0),\n-    _last_frame1_ms(0),\n-    _last_frame2_ms(0),\n-    _battery_data_ready(false),\n-    _batt_remaining(0),\n-    _batt_volts(0),\n-    _batt_amps(0),\n-    _sats_data_ready(false),\n-    gps_sats(0),\n-    _gps_data_ready(false),\n-    _pos_gps_ok(false),\n-    _course_in_degrees(0),\n-    _lat_ns(0),\n-    _lon_ew(0),\n-    _latdddmm(0),\n-    _latmmmm(0),\n-    _londddmm(0),\n-    _lonmmmm(0),\n-    _alt_gps_meters(0),\n-    _alt_gps_cm(0),\n-    _speed_in_meter(0),\n-    _speed_in_centimeter(0),\n-    _baro_data_ready(false),\n-    _baro_alt_meters(0),\n-    _baro_alt_cm(0),\n-    _mode_data_ready(false),\n-    _mode(0),\n-    _fas_call(0),\n-    _gps_call(0),\n-    _vario_call(0),\n-    _various_call(0),\n-    _sport_status(0)\n+    _ap(),\n+    _mav(),\n+    _current_height(0.0f),\n+    _gps()\n     {}\n \n-// init - perform require initialisation including detecting which protocol to use\n-void AP_Frsky_Telem::init(const AP_SerialManager& serial_manager)\n-{\n-    // check for FRSky_DPort\n-    if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FRSky_DPort, 0))) {\n-        _protocol = FrSkyDPORT;\n-        _initialised_uart = true;   // SerialManager initialises uart for us\n-    } else if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FRSky_SPort, 0))) {\n-        // check for FRSky_SPort\n-        _protocol = FrSkySPORT;\n-        _gps_call = 0;\n-        _fas_call = 0;\n-        _vario_call = 0 ;\n-        _various_call = 0 ;\n-        _gps_data_ready = false;\n-        _battery_data_ready = false;\n-        _baro_data_ready = false;\n-        _mode_data_ready = false;\n-        _sats_data_ready = false;\n-        _sport_status = 0;\n-        hal.scheduler->register_io_process(FUNCTOR_BIND_MEMBER(&AP_Frsky_Telem::sport_tick, void));\n+/*\n+ * init - perform required initialisation\n+ * for Copter\n+ */\n+void AP_Frsky_Telem::init(const AP_SerialManager &serial_manager, const char *firmware_str, const char *frame_config_str, const uint8_t mav_type, AP_Float *fs_batt_voltage, AP_Float *fs_batt_mah, uint8_t *control_mode, uint32_t *ap_value, uint32_t *control_sensors_present, uint32_t *control_sensors_enabled, uint32_t *control_sensors_health, int32_t *home_distance, int32_t *home_bearing)\n+{\n+    // check for protocol configured for a serial port - only the first serial port with one of these protocols will then run (cannot have FrSky on multiple serial ports)\n+    if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FrSky_D, 0))) {\n+        _protocol = AP_SerialManager::SerialProtocol_FrSky_D; // FrSky D protocol (D-receivers)\n+    } else if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FrSky_SPort, 0))) {\n+        _protocol = AP_SerialManager::SerialProtocol_FrSky_SPort; // FrSky SPort protocol (X-receivers)\n+    } else if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FrSky_SPort_Passthrough, 0))) {\n+        _protocol = AP_SerialManager::SerialProtocol_FrSky_SPort_Passthrough; // FrSky SPort and SPort Passthrough (OpenTX) protocols (X-receivers)\n+        // add firmware and frame info to message queue\n+        char str[50];\n+\t\tsprintf(str, \"%s %s\", firmware_str, frame_config_str);","path":"libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp","position":88,"original_position":88,"commit_id":"59a33fc7b540a0adb14f3acdb1c376dcc7325d97","original_commit_id":"59a33fc7b540a0adb14f3acdb1c376dcc7325d97","user":{"login":"floaledm","id":9093438,"avatar_url":"https://avatars.githubusercontent.com/u/9093438?v=3","gravatar_id":"","url":"https://api.github.com/users/floaledm","html_url":"https://github.com/floaledm","followers_url":"https://api.github.com/users/floaledm/followers","following_url":"https://api.github.com/users/floaledm/following{/other_user}","gists_url":"https://api.github.com/users/floaledm/gists{/gist_id}","starred_url":"https://api.github.com/users/floaledm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/floaledm/subscriptions","organizations_url":"https://api.github.com/users/floaledm/orgs","repos_url":"https://api.github.com/users/floaledm/repos","events_url":"https://api.github.com/users/floaledm/events{/privacy}","received_events_url":"https://api.github.com/users/floaledm/received_events","type":"User","site_admin":false},"body":"I'll change it to using strncpy and strncat.","created_at":"2016-05-04T17:29:20Z","updated_at":"2016-05-04T17:29:20Z","html_url":"https://github.com/ArduPilot/ardupilot/pull/3434#discussion_r62080130","pull_request_url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434","_links":{"self":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/comments/62080130"},"html":{"href":"https://github.com/ArduPilot/ardupilot/pull/3434#discussion_r62080130"},"pull_request":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434"}}},"pull_request":{"url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434","id":55156003,"html_url":"https://github.com/ArduPilot/ardupilot/pull/3434","diff_url":"https://github.com/ArduPilot/ardupilot/pull/3434.diff","patch_url":"https://github.com/ArduPilot/ardupilot/pull/3434.patch","issue_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/3434","number":3434,"state":"open","locked":false,"title":"FrSky: Native Telemetry","user":{"login":"tomlauzon","id":8354398,"avatar_url":"https://avatars.githubusercontent.com/u/8354398?v=3","gravatar_id":"","url":"https://api.github.com/users/tomlauzon","html_url":"https://github.com/tomlauzon","followers_url":"https://api.github.com/users/tomlauzon/followers","following_url":"https://api.github.com/users/tomlauzon/following{/other_user}","gists_url":"https://api.github.com/users/tomlauzon/gists{/gist_id}","starred_url":"https://api.github.com/users/tomlauzon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomlauzon/subscriptions","organizations_url":"https://api.github.com/users/tomlauzon/orgs","repos_url":"https://api.github.com/users/tomlauzon/repos","events_url":"https://api.github.com/users/tomlauzon/events{/privacy}","received_events_url":"https://api.github.com/users/tomlauzon/received_events","type":"User","site_admin":false},"body":"Native FrSky telemetry support over Smart Port that sends select MAVLINK telemetry data over FrSky Telemetry link.\r\nUses single configurable sensor ID (identifying the AP on the bus) as required by OpenTX 2.1.\r\nIntroduces various code optimizations to reduce computational burden and memory usage.\r\nA number of bandwidth optimizations (including priority handling) have been made in order to send data at specific rates, enabling real time HUD display for instance.\r\nOne of the FrSky telemetry scheduler tasks (which proved to be unnecessary) has been removed.\r\n\r\nTelemetry data items:\r\n- AP status\r\n  - Flight mode\r\n  - Simple/SuperSimple mode\r\n  - land_complete flag\r\n  - Armed flag\r\n  - Battery failsafe flag\r\n  - EKF failsafe flag\r\n  - Fence failsafe flag (altitude and circular)\r\n  - RPM\r\n  - Throttle output\r\n- Battery information (requires power module and battery mAh to be configured in Mission Planner)\r\n  - Battery pack voltage\r\n  - Current draw\r\n  - Total current draw since start-up\r\n- Vehicle position/orientation relative to home\r\n  - Distance between home location and vehicle\r\n  - Altitude between home location and vehicle\r\n  - Angle between home location and vehicle\r\n- Vehicle velocities\r\n  - Horizontal velocity\r\n  - Vertical velocity\r\n- Rangefinder\r\n  - Rangefinder distance, status, and prearm check\r\n- Vehicle attitude\r\n  - Roll\r\n  - Pitch\r\n  - Yaw\r\n- GPS\r\n  - Number of satellites\r\n  - GPS fix (no GPS, no fix, 2D, 3D)\r\n  - HDOP and VDOP\r\n  - Latitude and longitude\r\n  - Altitude MSL\r\n- MAVLink messages sent as text\r\n  - statustext: severity and text (e.g., “GROUND START”, “PreArm: inconsistent compasses”)\r\n  - sys_status: control_sensors flags (e.g., “Bad GPS Health”)\r\n  - ekf_status_report: ekf variance flags (e.g., “Error compass variance”)\r\n  - Firmware version and frame type: FIRMWARE_STRING and FRAME_CONFIG_STRING (e.g., “APM:Copter V3.3.2 QUAD”)\r\n- Pixhawk parameters (sent during Pixhawk initialization)\r\n  - MAV_TYPE\r\n  - Battery pack capacity\r\n  - Reserve battery capacity\r\n  - Low battery voltage\r\n","created_at":"2016-01-05T23:04:50Z","updated_at":"2016-05-04T17:29:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"83330c4e50698860e541b4fe79c102df66a8576d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434/commits","review_comments_url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434/comments","review_comment_url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/3434/comments","statuses_url":"https://api.github.com/repos/ArduPilot/ardupilot/statuses/59a33fc7b540a0adb14f3acdb1c376dcc7325d97","head":{"label":"craftandtheory:dev2","ref":"dev2","sha":"59a33fc7b540a0adb14f3acdb1c376dcc7325d97","user":{"login":"craftandtheory","id":15683230,"avatar_url":"https://avatars.githubusercontent.com/u/15683230?v=3","gravatar_id":"","url":"https://api.github.com/users/craftandtheory","html_url":"https://github.com/craftandtheory","followers_url":"https://api.github.com/users/craftandtheory/followers","following_url":"https://api.github.com/users/craftandtheory/following{/other_user}","gists_url":"https://api.github.com/users/craftandtheory/gists{/gist_id}","starred_url":"https://api.github.com/users/craftandtheory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/craftandtheory/subscriptions","organizations_url":"https://api.github.com/users/craftandtheory/orgs","repos_url":"https://api.github.com/users/craftandtheory/repos","events_url":"https://api.github.com/users/craftandtheory/events{/privacy}","received_events_url":"https://api.github.com/users/craftandtheory/received_events","type":"Organization","site_admin":false},"repo":{"id":46198178,"name":"ardupilot","full_name":"craftandtheory/ardupilot","owner":{"login":"craftandtheory","id":15683230,"avatar_url":"https://avatars.githubusercontent.com/u/15683230?v=3","gravatar_id":"","url":"https://api.github.com/users/craftandtheory","html_url":"https://github.com/craftandtheory","followers_url":"https://api.github.com/users/craftandtheory/followers","following_url":"https://api.github.com/users/craftandtheory/following{/other_user}","gists_url":"https://api.github.com/users/craftandtheory/gists{/gist_id}","starred_url":"https://api.github.com/users/craftandtheory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/craftandtheory/subscriptions","organizations_url":"https://api.github.com/users/craftandtheory/orgs","repos_url":"https://api.github.com/users/craftandtheory/repos","events_url":"https://api.github.com/users/craftandtheory/events{/privacy}","received_events_url":"https://api.github.com/users/craftandtheory/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/craftandtheory/ardupilot","description":"APM Plane, APM Copter, APM Rover source","fork":true,"url":"https://api.github.com/repos/craftandtheory/ardupilot","forks_url":"https://api.github.com/repos/craftandtheory/ardupilot/forks","keys_url":"https://api.github.com/repos/craftandtheory/ardupilot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/craftandtheory/ardupilot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/craftandtheory/ardupilot/teams","hooks_url":"https://api.github.com/repos/craftandtheory/ardupilot/hooks","issue_events_url":"https://api.github.com/repos/craftandtheory/ardupilot/issues/events{/number}","events_url":"https://api.github.com/repos/craftandtheory/ardupilot/events","assignees_url":"https://api.github.com/repos/craftandtheory/ardupilot/assignees{/user}","branches_url":"https://api.github.com/repos/craftandtheory/ardupilot/branches{/branch}","tags_url":"https://api.github.com/repos/craftandtheory/ardupilot/tags","blobs_url":"https://api.github.com/repos/craftandtheory/ardupilot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/craftandtheory/ardupilot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/craftandtheory/ardupilot/git/refs{/sha}","trees_url":"https://api.github.com/repos/craftandtheory/ardupilot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/craftandtheory/ardupilot/statuses/{sha}","languages_url":"https://api.github.com/repos/craftandtheory/ardupilot/languages","stargazers_url":"https://api.github.com/repos/craftandtheory/ardupilot/stargazers","contributors_url":"https://api.github.com/repos/craftandtheory/ardupilot/contributors","subscribers_url":"https://api.github.com/repos/craftandtheory/ardupilot/subscribers","subscription_url":"https://api.github.com/repos/craftandtheory/ardupilot/subscription","commits_url":"https://api.github.com/repos/craftandtheory/ardupilot/commits{/sha}","git_commits_url":"https://api.github.com/repos/craftandtheory/ardupilot/git/commits{/sha}","comments_url":"https://api.github.com/repos/craftandtheory/ardupilot/comments{/number}","issue_comment_url":"https://api.github.com/repos/craftandtheory/ardupilot/issues/comments{/number}","contents_url":"https://api.github.com/repos/craftandtheory/ardupilot/contents/{+path}","compare_url":"https://api.github.com/repos/craftandtheory/ardupilot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/craftandtheory/ardupilot/merges","archive_url":"https://api.github.com/repos/craftandtheory/ardupilot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/craftandtheory/ardupilot/downloads","issues_url":"https://api.github.com/repos/craftandtheory/ardupilot/issues{/number}","pulls_url":"https://api.github.com/repos/craftandtheory/ardupilot/pulls{/number}","milestones_url":"https://api.github.com/repos/craftandtheory/ardupilot/milestones{/number}","notifications_url":"https://api.github.com/repos/craftandtheory/ardupilot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/craftandtheory/ardupilot/labels{/name}","releases_url":"https://api.github.com/repos/craftandtheory/ardupilot/releases{/id}","deployments_url":"https://api.github.com/repos/craftandtheory/ardupilot/deployments","created_at":"2015-11-15T00:38:05Z","updated_at":"2016-01-14T12:41:17Z","pushed_at":"2016-05-03T22:07:36Z","git_url":"git://github.com/craftandtheory/ardupilot.git","ssh_url":"git@github.com:craftandtheory/ardupilot.git","clone_url":"https://github.com/craftandtheory/ardupilot.git","svn_url":"https://github.com/craftandtheory/ardupilot","homepage":"http://ardupilot.com/","size":72956,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"ArduPilot:master","ref":"master","sha":"5b88ae90fddbfdacf736f487dbcc8e777c4d566a","user":{"login":"ArduPilot","id":17919847,"avatar_url":"https://avatars.githubusercontent.com/u/17919847?v=3","gravatar_id":"","url":"https://api.github.com/users/ArduPilot","html_url":"https://github.com/ArduPilot","followers_url":"https://api.github.com/users/ArduPilot/followers","following_url":"https://api.github.com/users/ArduPilot/following{/other_user}","gists_url":"https://api.github.com/users/ArduPilot/gists{/gist_id}","starred_url":"https://api.github.com/users/ArduPilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArduPilot/subscriptions","organizations_url":"https://api.github.com/users/ArduPilot/orgs","repos_url":"https://api.github.com/users/ArduPilot/repos","events_url":"https://api.github.com/users/ArduPilot/events{/privacy}","received_events_url":"https://api.github.com/users/ArduPilot/received_events","type":"Organization","site_admin":false},"repo":{"id":7512484,"name":"ardupilot","full_name":"ArduPilot/ardupilot","owner":{"login":"ArduPilot","id":17919847,"avatar_url":"https://avatars.githubusercontent.com/u/17919847?v=3","gravatar_id":"","url":"https://api.github.com/users/ArduPilot","html_url":"https://github.com/ArduPilot","followers_url":"https://api.github.com/users/ArduPilot/followers","following_url":"https://api.github.com/users/ArduPilot/following{/other_user}","gists_url":"https://api.github.com/users/ArduPilot/gists{/gist_id}","starred_url":"https://api.github.com/users/ArduPilot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArduPilot/subscriptions","organizations_url":"https://api.github.com/users/ArduPilot/orgs","repos_url":"https://api.github.com/users/ArduPilot/repos","events_url":"https://api.github.com/users/ArduPilot/events{/privacy}","received_events_url":"https://api.github.com/users/ArduPilot/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ArduPilot/ardupilot","description":"ArduPlane, ArduCopter, ArduRover source","fork":false,"url":"https://api.github.com/repos/ArduPilot/ardupilot","forks_url":"https://api.github.com/repos/ArduPilot/ardupilot/forks","keys_url":"https://api.github.com/repos/ArduPilot/ardupilot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ArduPilot/ardupilot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ArduPilot/ardupilot/teams","hooks_url":"https://api.github.com/repos/ArduPilot/ardupilot/hooks","issue_events_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/events{/number}","events_url":"https://api.github.com/repos/ArduPilot/ardupilot/events","assignees_url":"https://api.github.com/repos/ArduPilot/ardupilot/assignees{/user}","branches_url":"https://api.github.com/repos/ArduPilot/ardupilot/branches{/branch}","tags_url":"https://api.github.com/repos/ArduPilot/ardupilot/tags","blobs_url":"https://api.github.com/repos/ArduPilot/ardupilot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ArduPilot/ardupilot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ArduPilot/ardupilot/git/refs{/sha}","trees_url":"https://api.github.com/repos/ArduPilot/ardupilot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ArduPilot/ardupilot/statuses/{sha}","languages_url":"https://api.github.com/repos/ArduPilot/ardupilot/languages","stargazers_url":"https://api.github.com/repos/ArduPilot/ardupilot/stargazers","contributors_url":"https://api.github.com/repos/ArduPilot/ardupilot/contributors","subscribers_url":"https://api.github.com/repos/ArduPilot/ardupilot/subscribers","subscription_url":"https://api.github.com/repos/ArduPilot/ardupilot/subscription","commits_url":"https://api.github.com/repos/ArduPilot/ardupilot/commits{/sha}","git_commits_url":"https://api.github.com/repos/ArduPilot/ardupilot/git/commits{/sha}","comments_url":"https://api.github.com/repos/ArduPilot/ardupilot/comments{/number}","issue_comment_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/comments{/number}","contents_url":"https://api.github.com/repos/ArduPilot/ardupilot/contents/{+path}","compare_url":"https://api.github.com/repos/ArduPilot/ardupilot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ArduPilot/ardupilot/merges","archive_url":"https://api.github.com/repos/ArduPilot/ardupilot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ArduPilot/ardupilot/downloads","issues_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues{/number}","pulls_url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls{/number}","milestones_url":"https://api.github.com/repos/ArduPilot/ardupilot/milestones{/number}","notifications_url":"https://api.github.com/repos/ArduPilot/ardupilot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ArduPilot/ardupilot/labels{/name}","releases_url":"https://api.github.com/repos/ArduPilot/ardupilot/releases{/id}","deployments_url":"https://api.github.com/repos/ArduPilot/ardupilot/deployments","created_at":"2013-01-09T00:58:52Z","updated_at":"2016-05-04T16:38:55Z","pushed_at":"2016-05-04T16:44:46Z","git_url":"git://github.com/ArduPilot/ardupilot.git","ssh_url":"git@github.com:ArduPilot/ardupilot.git","clone_url":"https://github.com/ArduPilot/ardupilot.git","svn_url":"https://github.com/ArduPilot/ardupilot","homepage":"http://ardupilot.org/","size":131916,"stargazers_count":1833,"watchers_count":1833,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3841,"mirror_url":null,"open_issues_count":728,"forks":3841,"open_issues":728,"watchers":1833,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434"},"html":{"href":"https://github.com/ArduPilot/ardupilot/pull/3434"},"issue":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/issues/3434"},"comments":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/issues/3434/comments"},"review_comments":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434/comments"},"review_comment":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/3434/commits"},"statuses":{"href":"https://api.github.com/repos/ArduPilot/ardupilot/statuses/59a33fc7b540a0adb14f3acdb1c376dcc7325d97"}}}}