Boram Park [Tue, 2 May 2017 02:33:43 +0000 (11:33 +0900)]
server: trace client information
Change-Id: I3e9ae2599119240628ff276aeebdd7cb34ff1341
SooChan Lim [Fri, 28 Apr 2017 00:26:57 +0000 (09:26 +0900)]
package version up to 1.6.16
Change-Id: I8f48e66666d0e2e664facf5a179b327c21683d7b
Junkyeong Kim [Mon, 17 Apr 2017 08:43:42 +0000 (17:43 +0900)]
change sscanf to strtol for getting fd
Change-Id: I7fed3efbd3fc9a9273a670b3b967707453471be2
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
Boram Park [Fri, 14 Apr 2017 03:23:26 +0000 (12:23 +0900)]
package version up to 1.6.15
Change-Id: Ied1c6d1fb9b1a09b2e495c7ee39366d7b3fd675b
Boram Park [Fri, 14 Apr 2017 02:46:50 +0000 (11:46 +0900)]
tdm: don't send output changes if client doesn't watch them
Change-Id: I0c77afab20462f01cc8d2676e868d48b32978878
Boram Park [Fri, 7 Apr 2017 07:51:59 +0000 (16:51 +0900)]
package version up to 1.6.14
Change-Id: Ic05b0a42b8ec8f5856afeaba3d74e05525f3e62d
Boram Park [Fri, 7 Apr 2017 07:51:19 +0000 (16:51 +0900)]
log: enable dlog by default to debug client error
Change-Id: Id3c2a1b7fc7089efb6d62fdb1832fcd48fd4f688
Boram Park [Fri, 7 Apr 2017 07:51:02 +0000 (16:51 +0900)]
client: allow set-fps during vblank running
Change-Id: I8139d220d7938b5b5001e68c066c066cf2e49f61
Boram Park [Thu, 23 Mar 2017 10:15:17 +0000 (19:15 +0900)]
package version up to 1.6.13
Change-Id: I622f6d65a5d106d7f8ac86e6f92eb8441d8f8d55
Boram Park [Thu, 23 Mar 2017 09:18:50 +0000 (18:18 +0900)]
log: add debugging logs for dump
Change-Id: If8d84e12c2ece5cd46379d97c42f45ffaa80cc36
Boram Park [Thu, 23 Mar 2017 07:59:32 +0000 (16:59 +0900)]
test: remove sig handler to avoid deadlock
Change-Id: I4db7accacebca43bca85751d18918a94dfb43d94
Boram Park [Thu, 23 Mar 2017 06:51:33 +0000 (15:51 +0900)]
event_loop: set the user func and data before calling wayland API.
The user func can be called at the line of wl api by the backend implementation
Change-Id: Idfc19afa17f584531ef37834c592f59f803d2823
SooChan Lim [Wed, 22 Mar 2017 07:13:05 +0000 (16:13 +0900)]
use %license macro to copy the COPYING file.
Change-Id: I66b44ad1d92bf2db69cd7215ae16d5eca309e46e
Boram Park [Thu, 9 Mar 2017 04:17:11 +0000 (13:17 +0900)]
package version up to 1.6.12
to upload patch to server again
Change-Id: I62aceb2224fa19e41849123d6ede17c0f4726f42
Boram Park [Thu, 9 Mar 2017 03:58:58 +0000 (12:58 +0900)]
package version up to 1.6.11
Change-Id: I33a8efdb08ce79a280fc52476b3b7999f52c188c
Boram Park [Thu, 9 Mar 2017 03:58:11 +0000 (12:58 +0900)]
output: don't refresh current_dpms_value in case of commit-per-vblank disabled
Change-Id: I76bef3fa002e1112faa3a1ad17a23d2dc5ea624e
Boram Park [Wed, 8 Mar 2017 08:48:37 +0000 (17:48 +0900)]
output: don't call output_get_dpms in case of commit-per-vblank disabled
Change-Id: I3e1b57d58b6a71586a247b7611dd592baa2ad73e
Boram Park [Wed, 8 Mar 2017 01:05:40 +0000 (10:05 +0900)]
layer: init local variable
Change-Id: I73bb6e3f2ae443b4d571395e13b5eae39d2d9c94
Boram Park [Tue, 7 Mar 2017 10:57:11 +0000 (19:57 +0900)]
package version up to 1.6.10
Change-Id: I3e0e98825a48f5ab2ac9d1ee1330e64beb3b3b56
Boram Park [Tue, 7 Mar 2017 09:43:18 +0000 (18:43 +0900)]
layer: support to remove the commit handler
Change-Id: I732e0ffbe44b47d195fcec3ecbff3b2221e6de09
Boram Park [Tue, 7 Mar 2017 09:42:31 +0000 (18:42 +0900)]
layer: remove the commit handler when all resource are freed
Change-Id: I0f8afee8189a806cf4014faace4c09cdde8d51f1
Boram Park [Tue, 7 Mar 2017 08:49:33 +0000 (17:49 +0900)]
package version up to 1.6.9
Change-Id: Ic0b49e444558d4fb643a765af7ddc1bc274c4b80
Boram Park [Tue, 7 Mar 2017 08:36:43 +0000 (17:36 +0900)]
vblank: remove the vblank handler when wait_info freed
If not removed, it makes the crash when the vblank handler is called
for the freed wait_info.
Change-Id: I07b168da39d1ff9f4e5effe69b99dd249d976027
Boram Park [Tue, 7 Mar 2017 07:56:25 +0000 (16:56 +0900)]
output: support to remove the commit & vblank handler
Change-Id: I36a569d4e6fdc018fb188444c3ca10f082c4c672
Boram Park [Sat, 4 Mar 2017 14:11:09 +0000 (23:11 +0900)]
log: enhance debugging log for DPMS change
Change-Id: I77ad1ebcc5b9f2b6434970446d429cdd26640fe5
Boram Park [Sat, 4 Mar 2017 14:09:47 +0000 (23:09 +0900)]
layer: call the layer commit handlers once tdm_layer_commit returns success
Once _tdm_layer_commit returns success, the layer commit handler MUST be called always.
That is, even if we get error in _tdm_layer_got_output_vblank() function for some reasons,
the layer commit handler MUST be called.
Change-Id: Ia251061c965a9dec89ed655266bb23667a097e5e
Boram Park [Sat, 4 Mar 2017 14:07:12 +0000 (23:07 +0900)]
output: use tdm_output_get_dpms_internal to get the DPMS value.
To make sure that the backend's output_get_dpms is called inside of a function
because it can change the current_dpms_value variable.
Change-Id: I207213776aa90033c2e03068ef86ff7d1986ce31
Boram Park [Fri, 3 Mar 2017 10:54:54 +0000 (19:54 +0900)]
package version up to 1.6.8
Change-Id: I98d1bba2549bb099b4bc220d392df3cf920f3d5b
Boram Park [Fri, 3 Mar 2017 10:50:46 +0000 (19:50 +0900)]
log: enhance debug log
Change-Id: Idf32a49c6fb5380f0b01837d91fc28f196839bfc
Boram Park [Fri, 3 Mar 2017 08:20:36 +0000 (17:20 +0900)]
output: call the output commit handler immediately when dpms off
Change-Id: I33264947381669d3104c37c99f41b88b961b4c3f
Junkyeong Kim [Tue, 21 Feb 2017 05:08:09 +0000 (14:08 +0900)]
set null init for tdm_private_vblank *v
Change-Id: Iac60a6f0330a28b7bc82248748967bdc8f5e9441
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
Boram Park [Wed, 15 Feb 2017 12:45:38 +0000 (21:45 +0900)]
package version up to 1.6.7
Change-Id: Iee6a3cb8506ac95b5d94eaadef9cfe6cba6f847c
Boram Park [Wed, 15 Feb 2017 12:09:46 +0000 (21:09 +0900)]
vblank: move the set-client-vblank-fps function to server function
Change-Id: Iaca45f4daa29c1d070f976f011633a10f2e3483d
Boram Park [Wed, 15 Feb 2017 07:29:05 +0000 (16:29 +0900)]
mutex: don't use the tdm macros for gLock variable.
When _pthread_mutex_unlock macro, tdm_mutex_locked becomes 0. Then, TDM_MUTEX_IS_LOCKED
return 0 even though display->lock is locked. TDM_MUTEX_IS_LOCKED actually is for
display->lock.
Change-Id: Idd4f638b84c0d244de61404e08ee4dfcf81921a2
Boram Park [Wed, 15 Feb 2017 07:26:24 +0000 (16:26 +0900)]
debug: enhance debug information for mutex lock/unlock
Change-Id: I0ec99252d2a71d5f770fe3ecb8ce803df74c1c75
Boram Park [Fri, 10 Feb 2017 05:43:05 +0000 (14:43 +0900)]
package version up to 1.6.6
Change-Id: If839d522bcc6a67723cc2eafd5941634d8bfda9c
Boram Park [Fri, 10 Feb 2017 05:32:35 +0000 (14:32 +0900)]
display: separate output & layer part from display
tdm_display.c had more than 2000 lines. To increase readability, separate
output & layer part from display
Change-Id: I06493e50fbd931a006bef0cf402f02fb7f3d4a0e
Boram Park [Fri, 10 Feb 2017 00:09:35 +0000 (09:09 +0900)]
buffer: correct the buffer management
Change-Id: Ica59998a4739b95727e0cf19bad8a5387c795d3a
Boram Park [Thu, 9 Feb 2017 11:25:38 +0000 (20:25 +0900)]
buffer: use tdm_private_layer_buffer structure for layer buffers
Change-Id: I45b5e8842328da77e9fd78bce811d018f3229431
Boram Park [Thu, 9 Feb 2017 05:19:50 +0000 (14:19 +0900)]
display: correct fps count
Change-Id: I0cbe1789db617f4c8ffc81735b33628048f2d6a7
Boram Park [Wed, 8 Feb 2017 03:39:16 +0000 (12:39 +0900)]
vblank: add set_vblank_fps functionality for the given PID
Change-Id: I28a8b5ca1e585f68817da6f887aed13f188b64f0
Boram Park [Wed, 8 Feb 2017 11:23:06 +0000 (20:23 +0900)]
package version up to 1.6.5
Change-Id: I41c28ddc3a78c58e8914ab86530f0c1f526c63c2
Boram Park [Wed, 8 Feb 2017 10:51:39 +0000 (19:51 +0900)]
commit: fix the double registration for layer vblank handler
Change-Id: I5154539f0b6f0f7656035aff9d54d6178be058e2
Boram Park [Wed, 8 Feb 2017 10:19:32 +0000 (19:19 +0900)]
list: add a new item in the end of a list
Change-Id: Id2606821f49de083ab698f201cc9b01bae18328b
Boram Park [Fri, 3 Feb 2017 06:46:46 +0000 (15:46 +0900)]
package version up to 1.6.4
Change-Id: I4977e0ec9ca0a2e4726ee2c7f9b0f8850466fabc
Boram Park [Fri, 3 Feb 2017 06:41:16 +0000 (15:41 +0900)]
commit: enhance debug log
Change-Id: Ifd020ef0723b4d7d2121e77aa6be5682aaeeaa2d
Boram Park [Thu, 2 Feb 2017 05:39:53 +0000 (14:39 +0900)]
package version up to 1.6.3
Change-Id: I8bf469b2dd657964faa8bf1406f47512d97080e8
Boram Park [Thu, 2 Feb 2017 04:00:18 +0000 (13:00 +0900)]
commit: use _tdm_output_commit in case of non commit-per-vblank
Change-Id: If83c02ab7a6801dbae64f14337bf0baf364a7df8
Boram Park [Thu, 2 Feb 2017 01:31:54 +0000 (10:31 +0900)]
commit: add function to check whether commit-per-vblank is enabled
Change-Id: Ib5b58f06c4fe11d81c0cfc61343e0b9ea676c6cb
Boram Park [Wed, 1 Feb 2017 12:07:02 +0000 (21:07 +0900)]
vblank: use mutex to protect the vblank lists for multi-thread
Change-Id: I332407aeb258b7b51165db87bfa47405d3c82efa
Boram Park [Wed, 18 Jan 2017 12:25:12 +0000 (21:25 +0900)]
package version up to 1.6.2
Change-Id: Ib975943b530c3e159a049aa8db68f8c8f3ae2c96
Boram Park [Tue, 17 Jan 2017 11:51:31 +0000 (20:51 +0900)]
use vblank instead of the output commit handler in case of tdm_layer_commit
Change-Id: Ib2a29cc331b8243922d43325265891119c809510
Boram Park [Mon, 16 Jan 2017 12:35:44 +0000 (21:35 +0900)]
package version up to 1.6.1
Change-Id: I20a1eb1fc3fe4bfc07b7c58fed36be848b39b33e
Boram Park [Mon, 16 Jan 2017 06:43:11 +0000 (15:43 +0900)]
enhance the debugging information
Change-Id: I637f7ff180eceefa821ef66e45513ea46f62df09
Boram Park [Mon, 16 Jan 2017 06:33:28 +0000 (15:33 +0900)]
unlock mutex before return
Change-Id: I7f31a7a6f2eded7ba07af8b6cb33e5ca68e6c592
Boram Park [Thu, 12 Jan 2017 05:03:05 +0000 (14:03 +0900)]
packaging version up to 1.6.0
Change-Id: I1662dbb355ac039eacd612efad423c3f2ef58698
Anamika Singh [Tue, 10 Jan 2017 12:58:12 +0000 (18:28 +0530)]
Add return value check.
Change-Id: If2bebc87b5ba75c286bae6c7215055938d506c7b
Signed-off-by: Anamika Singh <anamika.sd@samsung.com>
Signed-off-by: Boram Park <boram1288.park@samsung.com>
Boram Park [Tue, 29 Nov 2016 03:23:07 +0000 (12:23 +0900)]
support the commit-per-vblank
If TDM_COMMIT_PER_VBLANK enviroment is set to 1, tdm frontend will
call the backend's output_commit function once per a vblank.
Change-Id: I9df27288fd9318a64305491e4dc96d686a223baf
Boram Park [Wed, 11 Jan 2017 10:38:22 +0000 (19:38 +0900)]
apply tizen coding rule
Change-Id: I22de70e36d516c2c4dce32642945e46c64477573
Junkyeong Kim [Mon, 9 Jan 2017 02:38:33 +0000 (11:38 +0900)]
change capture destroy eina_list element structure
Change-Id: Ifc52fd72ae0b484d01e0f4533d8439c961b92eb7
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
Boram Park [Fri, 6 Jan 2017 13:15:11 +0000 (22:15 +0900)]
package version up to 1.5.3
Change-Id: I9647ce823de2d4e110425a09a28a9829415f16c6
Junkyeong Kim [Fri, 6 Jan 2017 13:07:19 +0000 (22:07 +0900)]
change capture destroy eina_list element structure
Change-Id: Ide6c78700e72ab6831027dccbd43d6321bfd6b9a
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
Boram Park [Thu, 5 Jan 2017 04:03:59 +0000 (13:03 +0900)]
package version up to 1.5.2
Change-Id: I6da09389f211179d474bcbaf5c86b71fe62adc44
Boram Park [Tue, 27 Dec 2016 05:32:15 +0000 (14:32 +0900)]
fix ATOMICITY issue
Change-Id: I08cf135d0a5511c312c3b5f4c2e40857099c714d
Boram Park [Fri, 9 Dec 2016 01:16:30 +0000 (10:16 +0900)]
set not-usable when setting properties also
All tdm_layer_set_xxx functions means that the display server is
using this layer.
Change-Id: Ia99c57b11fe275ae941b7108432f1c0e8bdfc869
SooChan Lim [Mon, 28 Nov 2016 08:57:25 +0000 (17:57 +0900)]
package version up to 1.5.1
Change-Id: Ifd48d3143fcf5d8c086ee0b1fe4fca57154c0ba2
Boram Park [Mon, 28 Nov 2016 10:38:37 +0000 (19:38 +0900)]
remove unreachable code
Change-Id: I1042b3994f431b7bb327f9906c7de22aeca22b1c
YoungJun Cho [Mon, 28 Nov 2016 09:08:21 +0000 (18:08 +0900)]
tdm_helper: clean up tdm_helper_get_display_information()
This patch cleans up tdm_helper_get_display_information()
to use %u when TDM_SNPRINTF() uses unsigned integer.
Change-Id: I43c50dcced98fc9993dd228a229c575d4c195d7b
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
YoungJun Cho [Mon, 28 Nov 2016 09:04:58 +0000 (18:04 +0900)]
tdm_helper: clean up _tdm_helper_dump_png()
This patch cleans up _tdm_helper_dump_png() not to skip resources release.
Change-Id: Ic2384c0e5cc1335428f455760efb5c691e3600f9
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Boram Park [Mon, 28 Nov 2016 08:49:49 +0000 (17:49 +0900)]
fix error handling
Change-Id: I19915a6f59a219efa701d629a88863c66ca4dd75
YoungJun Cho [Mon, 28 Nov 2016 07:23:08 +0000 (16:23 +0900)]
tdm_buffer: clean up tdm_buffer_unref_backend()
This patch cleans up tdm_buffer_unref_backend().
The 'buffer' is not changed in buf_info->release_funcs list loop,
so does not need to call ref & unref inside.
Change-Id: I924bc4abde130be37ee800534e161beee56ae09a
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
YoungJun Cho [Mon, 28 Nov 2016 07:21:30 +0000 (16:21 +0900)]
tdm_buffer: clean up tdm_buffer_get_info()
This patch cleans up tdm_buffer_get_info() not to skip free(buf_info).
Change-Id: If2f3cbc4c72aa084d2f10827a14161a0adf68889
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
YoungJun Cho [Mon, 28 Nov 2016 07:19:57 +0000 (16:19 +0900)]
tdm_server: clean up tdm_server_init()
This patch cleans up tdm_server_init() not to dereference when private_loop is NULL.
Change-Id: I846c47130992264ff39d194e7ca4299e4970bc2c
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Boram Park [Sun, 27 Nov 2016 06:56:05 +0000 (15:56 +0900)]
Revert "remove unused helper function"
This reverts commit
1f6a03a7b0e0ebc0c3d620f43b27f74adfbcdfc3.
Change-Id: I1831a0aff0c9df9a4006cd352943ea0cac3a34f3
Boram Park [Thu, 24 Nov 2016 10:42:18 +0000 (19:42 +0900)]
correct capture behavior
Change-Id: I9e3a7b4f8f612f7a507f1ceaecf05465d210676e
Boram Park [Thu, 24 Nov 2016 10:40:35 +0000 (19:40 +0900)]
change tdm capture capbility
scale & transform seem the default capability. remove it.
tdm backend might support both oneshot and stream dump. And it's possible for
backend to support stream dump only.
Change-Id: I46b534c432dd15117658296d3eb427a9f004f3d9
Boram Park [Thu, 24 Nov 2016 10:41:46 +0000 (19:41 +0900)]
fix memory leak
Change-Id: Ia9795dc72428e976af48f789ab288abf7a0149c2
Boram Park [Thu, 24 Nov 2016 10:10:42 +0000 (19:10 +0900)]
fix wrong format
Change-Id: I401e6642b25f8f7b5abfaed046fa1154071ec489
Boram Park [Thu, 24 Nov 2016 10:10:13 +0000 (19:10 +0900)]
use mutex for printf output in multithread
Change-Id: I6f903828f1e22f7c3dfed074173f9e5e78636011
Boram Park [Thu, 24 Nov 2016 03:19:30 +0000 (12:19 +0900)]
add tdm_helper_convert_buffer function
Change-Id: I4c63d1e3546194229daf19f4a59444b96a33f46c
Boram Park [Thu, 24 Nov 2016 03:16:37 +0000 (12:16 +0900)]
add punch option to tdm-monitor
Change-Id: Ib70965942ed775a421a9465ab3e9f2b38ff40a3e
Boram Park [Thu, 24 Nov 2016 03:15:05 +0000 (12:15 +0900)]
test the only connected output
Change-Id: I482ee9f9dd0e92094cf2e9998adf9ff381f1721f
Boram Park [Wed, 23 Nov 2016 06:56:00 +0000 (15:56 +0900)]
remove unused helper function
Change-Id: I4e996c26aaab61adb0ae10969b39c8871f28296c
Boram Park [Wed, 23 Nov 2016 04:16:44 +0000 (13:16 +0900)]
check capture capability
Change-Id: If3db8bd96f960ddf5ddd8d22f9e9a8ea20ecdc58
Boram Park [Wed, 23 Nov 2016 02:45:38 +0000 (11:45 +0900)]
treat 0 also as a "not-defined" value
Change-Id: I208c7bb8a151433dd808ccb4ccafe84315577318
Boram Park [Wed, 23 Nov 2016 02:44:19 +0000 (11:44 +0900)]
add tdm_display_get_capture_available_size & tdm_display_get_max_layer_count
Change-Id: I3d3507ef1e3a590422032c35ee1f5c3adc7f2a44
Boram Park [Wed, 23 Nov 2016 01:20:58 +0000 (10:20 +0900)]
add capture type enum
Change-Id: I7d9b8f148f703128619b45a29128979708d15861
YoungJun Cho [Thu, 24 Nov 2016 05:20:18 +0000 (14:20 +0900)]
tdm_backend: change _check_abi_version() return value
This patch changes _check_abi_version() return value
as 0 for success, -1 for failure.
The caller only checks the result is less than 0 or not, so it is dead code.
Change-Id: I194817bcd0fd928f0b66cdd0154c3669c95548f5
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Boram Park [Mon, 21 Nov 2016 10:51:11 +0000 (19:51 +0900)]
version up to 1.5.0
Change-Id: I3dd1ea8b28871046d474e814a75ad97f7e2fa74e
Boram Park [Tue, 22 Nov 2016 03:58:42 +0000 (12:58 +0900)]
fix syntax error
Change-Id: I990affce73424c66ea40962efd85398b34d74767
Changyeon Lee [Tue, 15 Nov 2016 05:33:53 +0000 (14:33 +0900)]
Added cursor available size in caps output
Change-Id: Ief1b42e61b51ba4710430f68b40e48bc3b189844
SooChan Lim [Fri, 11 Nov 2016 04:25:43 +0000 (13:25 +0900)]
pakcage version up to 1.4.6
Change-Id: I6030b818f3755ffa860f3d21f87bf184deff64b9
SooChan Lim [Wed, 9 Nov 2016 11:03:42 +0000 (20:03 +0900)]
remove the profile condition at spec file
make the symbolic link of tdm-socket-user.path to
basic.target.want
Change-Id: I47da65873b0cf94001300f06c78b72d28aecd335
YoungJun Cho [Wed, 2 Nov 2016 14:01:16 +0000 (23:01 +0900)]
ut: stubs: synchronize tbm_surface_internal.h modification
This patch synchronizes tbm_surface_internal.h modification
with libtbm one.
Change-Id: Ie134209554a88e872bb7871add0269c110ed1abe
Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Boram Park [Tue, 25 Oct 2016 06:44:03 +0000 (15:44 +0900)]
implementation for SCREEN_PREROTATION_HINT
Change-Id: I8c5e90ac2a4f2119af380c405e31cf9645ea7a25
Boram Park [Wed, 2 Nov 2016 03:33:52 +0000 (12:33 +0900)]
packaging: version up to 1.4.5
Change-Id: Ib1d172f94ee28466a6bbe14f8bfe931dacf1960f
Changyeon Lee [Tue, 11 Oct 2016 06:01:08 +0000 (15:01 +0900)]
applied ui_fw uid, gid and removed chsmack in tdm-socket.service
Change-Id: Idc15c5f86ddb1ce794d174fabe9bd6e381e1a8fc
Boram Park [Tue, 18 Oct 2016 00:55:47 +0000 (09:55 +0900)]
allow only superuser
Change-Id: I9dcc7750e8832f1e3667ea0027dd6500af22082d
Boram Park [Tue, 18 Oct 2016 00:55:30 +0000 (09:55 +0900)]
print time for debugging init time
Change-Id: Id67f9fbbc90074e5163872b6ce699b3911d10e59
Boram Park [Fri, 7 Oct 2016 10:53:04 +0000 (19:53 +0900)]
print the time of tdm_display_init
Change-Id: I16caafb6a146ebe4758dca04fff2d79558444705