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
SooChan Lim [Tue, 11 Oct 2016 06:05:43 +0000 (15:05 +0900)]
Revert "put gtest framework source code"
This reverts commit
32a2d7c2c20505164f85d5d4fb5f960c69fc2ccf.
Change-Id: I5b3f74a3267adcdb515379c1807d894f74c9254b
SooChan Lim [Tue, 4 Oct 2016 23:25:02 +0000 (08:25 +0900)]
Revert "check the size limitation"
This reverts commit
e5db3b0bef603c5e16fec1d2444e859169135ee2.
Change-Id: Ic3915255185014c04735367936e7bb2652ec16ee
SooChan Lim [Tue, 4 Oct 2016 07:19:17 +0000 (16:19 +0900)]
package version up to 1.4.4
Change-Id: Ib141bb70f7c31c7e84c76c9199bb44cf7972dd56
Boram Park [Fri, 30 Sep 2016 09:11:51 +0000 (18:11 +0900)]
check the size limitation
Change-Id: I0018eae284e776f4bc97b97d320ab7b1f2d7c178
Konstantin Drabeniuk [Wed, 28 Sep 2016 14:04:42 +0000 (17:04 +0300)]
put gtest framework source code
I suppressed all warnings by using a flag -w.
This is a temporary solution. Warnings occur because
we build project with g++. In C++ we need to use explicit
types conversion. I will fix warnings in unit test sources,
in next commit. But I can't fix warnings in libtdm sources.
Change-Id: I2be66976b0a5f543c41ee6d5049de94f89d9aba4
Signed-off-by: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
Konstantin Drabeniuk [Wed, 28 Sep 2016 13:37:30 +0000 (16:37 +0300)]
check if the path is null.
fix build error
Change-Id: I9c1f8554c90443a16a877f7c06d1ea9f7bf21bfc
Signed-off-by: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
Boram Park [Wed, 28 Sep 2016 09:18:16 +0000 (18:18 +0900)]
remove display_get_capabilitiy
Change-Id: I6002d5c6f83da77cd9bb0885000208fb9c8b8694
Boram Park [Wed, 28 Sep 2016 06:17:51 +0000 (15:17 +0900)]
not create the reduntant directory when done
Change-Id: I09e9540baff6b232b45f2770070f824faeca2ef4
SooChan Lim [Mon, 26 Sep 2016 08:34:33 +0000 (17:34 +0900)]
package version 1.4.3
Change-Id: I7b70c46cd52572598fbb2d08d025cb3d2fbc2f3e
Boram Park [Mon, 26 Sep 2016 02:13:13 +0000 (11:13 +0900)]
fix the wrong operation of SW timer
skip variable should be unsigned int to correct the prev time
Change-Id: Iea57ca5fbe7783c2b50cad6435d35f1fee0ba9f5
Boram Park [Mon, 5 Sep 2016 11:18:35 +0000 (20:18 +0900)]
export tdm vblank functions
Change-Id: I3ec641732606e5f682a69b6207444da93c055bad
Boram Park [Sat, 24 Sep 2016 05:20:25 +0000 (14:20 +0900)]
use double instead of unsigned long to avoid overflow
Change-Id: I7001e10230cc57dc59df178b10d1a8b18f328a50
Boram Park [Wed, 21 Sep 2016 03:44:34 +0000 (12:44 +0900)]
fix wrong log
Change-Id: I6825c3ac71de5b963832566715335e8ceceab92f
Boram Park [Tue, 20 Sep 2016 10:01:59 +0000 (19:01 +0900)]
not dump a video layer
Change-Id: I209b81bc6852b6469d5719e35129232adee3a342
SooChan Lim [Tue, 20 Sep 2016 02:45:00 +0000 (11:45 +0900)]
packaging: version up to 1.4.2
Change-Id: I9f9cba704ee410252cfef77a80e6366d96732e37
Boram Park [Mon, 19 Sep 2016 04:21:53 +0000 (13:21 +0900)]
fix dereference issue after null
Change-Id: Icb79b4231ddacf9c8c2b183e3e535c3456a79a26
Konstantin Drabeniuk [Mon, 12 Sep 2016 14:25:31 +0000 (17:25 +0300)]
[libtdm] Move unit tests from ws-testcase and change test framework
1) change unit testing framework (Check to gtest);
2) move unit test from the ws-testcase project to the project libtdm.
Change-Id: If3548b87c8e39108ec2ff7050f6c6324ec8cfaeb
Signed-off-by: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
Boram Park [Tue, 6 Sep 2016 02:53:21 +0000 (11:53 +0900)]
enhance debugging log
Change-Id: Ie4b0ec51db5defc266b76d352176ecc368593d33
Boram Park [Tue, 6 Sep 2016 02:49:25 +0000 (11:49 +0900)]
set request time to current time if 0
Change-Id: Ib1a02d1863e108f36dc402427d988de134d129f5
Boram Park [Mon, 5 Sep 2016 00:36:04 +0000 (09:36 +0900)]
packaging: version up to 1.4.1
Change-Id: I1ce41b74b145cd04645aad4cf135209787ce136f
Boram Park [Fri, 2 Sep 2016 07:47:27 +0000 (16:47 +0900)]
correct the wrong behavior when the sequence value reaches the MAX(4,294,967,295)
- The sequence value of tdm client vblank will start 1 always.
- When the sequence reaches MAX, then it will become 0 at the next vblank.
Change-Id: Ie66cf5ac717246e309e6e2d86eb5c0b1fc2e71c7
Boram Park [Fri, 2 Sep 2016 06:55:42 +0000 (15:55 +0900)]
Revert "fix the layer's crop rect"
we can set the layer's crop rect with -l option. we don't need this patch.
This reverts commit
c7a1e27882423a5c106cb0c0f7ed653959563648.
Change-Id: Iabbb4458c003005e583fd587bf5ba84aed860a4e
Boram Park [Fri, 2 Sep 2016 01:08:53 +0000 (10:08 +0900)]
fix the layer's crop rect
Change-Id: Id618bbbb7a026a631d1db0f72f4ae8472a471c42
Boram Park [Thu, 1 Sep 2016 03:30:59 +0000 (12:30 +0900)]
add wait_vblank_seq to request a vblank with the target sequence
Change-Id: I8ee758b154df1290f6d4f8a0dd353c6cc0ffcecb
Boram Park [Tue, 30 Aug 2016 07:02:54 +0000 (16:02 +0900)]
refactoring tdm vblank
Change-Id: Id688bf2108f54cff797c96f67a8f5ed31ab23ba2
Boram Park [Wed, 31 Aug 2016 10:22:16 +0000 (19:22 +0900)]
use traceMark for ttrace_vblank
Change-Id: Id0f9767dc9315e13778287c0f47fc9a54749e933
Boram Park [Wed, 31 Aug 2016 05:00:29 +0000 (14:00 +0900)]
add ttrace for vblank debugging
Change-Id: I030304241a4983e176e5052899006efabcca34c3
Boram Park [Mon, 29 Aug 2016 08:42:45 +0000 (17:42 +0900)]
fix syntax error
Change-Id: If6463e9661c94d3c6332855e4af8a5eba0b96d78
Boram Park [Mon, 29 Aug 2016 08:29:18 +0000 (17:29 +0900)]
remove no effective code
Change-Id: Id043e59eef996ad74e7d63f5f704b454d549b8be
Boram Park [Mon, 29 Aug 2016 08:17:09 +0000 (17:17 +0900)]
destroy a vblank object when failed
Change-Id: I699b81b18efc3d9323dcea3d605f7247f3abb742
Boram Park [Mon, 29 Aug 2016 05:37:02 +0000 (14:37 +0900)]
add -ttrace_vblank option to tdm-monitor
Change-Id: I9939c5bd2cca6f2fed1a9cc1f9d518cc5bf068c0
Boram Park [Tue, 23 Aug 2016 09:51:41 +0000 (18:51 +0900)]
fix reallocation-free issue of output modes
Change-Id: I76fb49f0d00906ff380531e5ab021da9ecc122a1
Boram Park [Tue, 23 Aug 2016 04:49:34 +0000 (13:49 +0900)]
make sure the directory path is not null for dump
Change-Id: I87849dc858ad5011e4fc1d10b7f811a38cc513c0
Boram Park [Tue, 23 Aug 2016 02:32:06 +0000 (11:32 +0900)]
fix memory leak
Change-Id: I28934b0ddcbf1df4e6d079db9ca2dbc7ba79216c
Junkyeong Kim [Mon, 22 Aug 2016 12:32:48 +0000 (21:32 +0900)]
avoid dereference null, fix memory leak
Change-Id: I8981af9e4b1dd888382cd52d9cc5e17c536329d2
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
SooChan Lim [Fri, 19 Aug 2016 04:44:23 +0000 (13:44 +0900)]
systemd: support for lazy mount of user data
Change-Id: Ib328791d52f6c8a107984c88611842a39c2ebc19
Boram Park [Fri, 19 Aug 2016 01:43:40 +0000 (10:43 +0900)]
enhance log during loading backend module
Change-Id: I362f196ac7d5e3acf040f6a38448d4c742cb9dc2
Boram Park [Thu, 18 Aug 2016 07:30:01 +0000 (16:30 +0900)]
enhance the log information
Change-Id: Idefad691b51b7b309d0ceb1cabe77a487085387f
Boram Park [Thu, 18 Aug 2016 07:29:30 +0000 (16:29 +0900)]
fix function description
Change-Id: Ida3819b5e4873e1cac136831f72f24dbcd9b76d1
Boram Park [Wed, 10 Aug 2016 07:07:15 +0000 (16:07 +0900)]
version up to 1.4.0
Change-Id: I4d31b84a1a99fc8d793724b0ac75fe15f232ae05
Boram Park [Wed, 10 Aug 2016 01:33:58 +0000 (10:33 +0900)]
support the asynchronous DPMS operation
Change-Id: Ie7f43fc8abb8f93d3fa6472b34525ca2c7f34982
Boram Park [Tue, 9 Aug 2016 03:59:19 +0000 (12:59 +0900)]
first implementation for the output capability
Change-Id: I87f8321f3fc0475ee926ca69b2fae09c75f62f3c
Boram Park [Mon, 8 Aug 2016 01:59:34 +0000 (10:59 +0900)]
apply tizen coding style
Change-Id: I67736c86ad6b2e11feeaa697d7b4dd721794fcc3
Boram Park [Mon, 8 Aug 2016 01:34:31 +0000 (10:34 +0900)]
fix syntax error
Change-Id: I7050f9426ee4cfd62d3affae21416e2021791b82
Boram Park [Fri, 5 Aug 2016 09:33:08 +0000 (18:33 +0900)]
impl for using dump path
Change-Id: I8b0f5a5812b79330fe7c6f0a6f861f5c95dc333f
Gwanglim Lee [Thu, 4 Aug 2016 01:44:51 +0000 (10:44 +0900)]
Packaging: update version to 1.3.1
Change-Id: I891bcb5318ea9c3e8cfc59f7cdaba38f3aa6d41d
Boram Park [Tue, 26 Jul 2016 12:41:14 +0000 (21:41 +0900)]
rename tdm-dbg to tdm-monitor
Change-Id: I72ab616f6b0c6365708160633eedd9ab74085d98
Boram Park [Tue, 26 Jul 2016 11:01:00 +0000 (20:01 +0900)]
Use the user done handler instead of the buffer release handler
Change-Id: Id44228ee21e648fddc0249f32c80f8178ac4ac94
Boram Park [Tue, 26 Jul 2016 09:31:07 +0000 (18:31 +0900)]
add tdm_pp_set_done_handler and tdm_capture_set_done_handler
Change-Id: Id6231d28be18540fe82fd1e6f8d22795539ac4b7
Boram Park [Mon, 25 Jul 2016 23:53:46 +0000 (08:53 +0900)]
unlock mutex before unref a buffer
The frontend user release handler can be called when tdm_buffer_unref_backend
is called. We have to unlock/lock the mutex before/after calling
tdm_buffer_unref_backend function.
Change-Id: Idd97a9286c9d7083d5a77ec23595686a81b61d8e
Boram Park [Mon, 25 Jul 2016 23:38:26 +0000 (08:38 +0900)]
remove release handler when commit failed
This is the temporary solution(kismo.kim@samsung.com) to avoid the release
handler is called when commit failed. It looks we need something like the
pp_done handler to let the display server know if the pp operation is done
successfully or not.
Change-Id: I1513a99c89102431fd3b74b656d1f1243528d28a
Boram Park [Fri, 22 Jul 2016 08:13:00 +0000 (17:13 +0900)]
correct the format information log
Change-Id: I4331cd771a6b05cb497cab5029e54633dee68153
Boram Park [Thu, 21 Jul 2016 01:30:23 +0000 (10:30 +0900)]
correct the wrong behavior of tdm-test-server
Change-Id: I5cba2ec5dbb8e8d42fda82f9d5a7b17b04ed49dd
Boram Park [Thu, 21 Jul 2016 05:39:08 +0000 (14:39 +0900)]
add the buffer clear helper function
Change-Id: Id9b20d38b3d1558d0a59db30b7ec302775f2f943
Boram Park [Wed, 20 Jul 2016 04:43:45 +0000 (13:43 +0900)]
enhance the display information
Change-Id: Ie6a52cda9734137d9a76b4f0f1605869e108d454
Boram Park [Wed, 20 Jul 2016 04:41:33 +0000 (13:41 +0900)]
code clean-up (macro, structure)
Change-Id: I88124bbca87fe5206c6da5e2faa2adfaa949fb44
Boram Park [Wed, 20 Jul 2016 04:38:57 +0000 (13:38 +0900)]
set index to output, layer objects
Change-Id: Ic430c677b0749d4cfca762f285d0e9401cf69a90
Boram Park [Wed, 20 Jul 2016 02:15:14 +0000 (11:15 +0900)]
set 750 permission to tdm-dbg and tdm-test-server
Change-Id: I461bacf02d9f6353d5cd9866c8f40f1429308554
Yunjin Lee [Wed, 20 Jul 2016 11:52:03 +0000 (20:52 +0900)]
Set SmackProcessLabel to System
Change-Id: Iae2e0a397bf1c333b101dc399e60f0a6be1548cb
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Boram Park [Mon, 18 Jul 2016 00:35:49 +0000 (09:35 +0900)]
add the libtdm dependency
Change-Id: I3b4846c913de5334a8d300b965ac3a0c0ebdaf1f
Boram Park [Tue, 12 Jul 2016 07:22:40 +0000 (16:22 +0900)]
support TDM_DEBUG_PATH
Change-Id: Ibc25d75ad797d1815987a2acceccb9b15d7723f3
Boram Park [Mon, 11 Jul 2016 07:25:24 +0000 (16:25 +0900)]
fix seg.fault of tdm-test-server
Change-Id: I09aa654347fd72b46e264a68b4e935f30b63f8af
Boram Park [Mon, 11 Jul 2016 07:24:56 +0000 (16:24 +0900)]
fix the too many logs when enabled
Change-Id: I155b5fc09cc38d0786b5e66867b7565de51cf53e