--------------------------------------------------------------------------------------------------------------- INITIALIZING VIDBOT, v1.7.0... --------------------------------------------------------------------------------------------------------------- [08:39:34.174] Vidbot :: start() [08:39:34.175] Vidbot :: _next(), _stepIndex:0 of 4 [08:39:34.176] index :: _onStepStarted_vidbot(), step: 1 [08:39:34.177] Vidbot :: step[0], label:Initializing Core [08:39:34.186] index :: _onStepProgress_vidbot(), percent: 20 [08:39:34.186] Vidbot :: _parse() [08:39:34.187] index :: _onStepProgress_vidbot(), percent: 40 [08:39:34.188] Vidbot :: _validate() [08:39:34.189] index :: _onStepProgress_vidbot(), percent: 60 [08:39:34.189] Vidbot :: _fonts() [08:39:34.189] FabricFontManager :: add(), id: SourceSansPro-Bold [08:39:34.189] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Bold.ttf [08:39:34.198] FabricFontManager :: add(), id: SourceSansPro-Light [08:39:34.198] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Light.ttf [08:39:34.199] FabricFontManager :: add(), id: DINOT-Bold [08:39:34.200] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Bold.otf [08:39:34.200] FabricFontManager :: add(), id: DINOT-Light [08:39:34.200] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Light.otf [08:39:34.201] FabricFontManager :: add(), id: TradeGothicLTStd-Regular [08:39:34.202] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Regular.otf [08:39:34.203] FabricFontManager :: add(), id: TradeGothicLTStd-Bold [08:39:34.203] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Bold.otf [08:39:34.204] index :: _onStepProgress_vidbot(), percent: 80 [08:39:34.204] Vidbot :: _clips() [08:39:34.205] StreamManager :: add(), id:audio_vo, type:audio [08:39:34.205] AudioClip[audio_vo] :: constructor() [08:39:34.206] InputStream[audio_vo] :: constructor() [08:39:34.206] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'audio_vo', clipId: null } [08:39:34.209] StreamManager :: add(), id:bg_music, type:audio [08:39:34.209] AudioClip[bg_music] :: constructor() [08:39:34.209] InputStream[bg_music] :: constructor() [08:39:34.210] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'bg_music', clipId: null } [08:39:34.210] StreamManager :: add(), id:simplefadedisplay, type:canvas [08:39:34.210] CanvasStream[canvas_430101348639] :: constructor() [08:39:34.210] InputStream[canvas_430101348639] :: constructor() [08:39:34.301] KenBurnsSlideshow[simplefadedisplay] :: constructor() [08:39:34.301] Overlay[simplefadedisplay] :: constructor() [08:39:34.301] CanvasClip[simplefadedisplay] :: constructor() [08:39:34.301] Clip[simplefadedisplay] :: constructor() [08:39:34.301] clip:"simplefadedisplay" added to stream:"canvas_430101348639" [08:39:34.302] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_430101348639', clipId: 'simplefadedisplay' } [08:39:34.302] StreamManager :: add(), id:caption, type:canvas [08:39:34.302] RenCaption[caption] :: constructor() [08:39:34.302] Ren[caption] :: constructor() [08:39:34.302] Overlay[caption] :: constructor() [08:39:34.302] CanvasClip[caption] :: constructor() [08:39:34.302] Clip[caption] :: constructor() [08:39:34.302] clip:"caption" added to stream:"canvas_430101348639" [08:39:34.302] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_430101348639', clipId: 'caption' } [08:39:34.303] all added... [08:39:34.303] Vidbot :: _next(), _stepIndex:1 of 4 [08:39:34.303] index :: _onStepCompleted_vidbot(), step: 1 [08:39:34.303] index :: _onStepStarted_vidbot(), step: 2 [08:39:34.303] Vidbot :: step[1], label:Initializing Input Streams [08:39:34.304] StreamManager :: init() [08:39:34.304] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'audio_vo', progress: 0.3333333333333333 } [08:39:34.304] index :: _onStepProgress_vidbot(), percent: 33 [08:39:34.305] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'bg_music', progress: 0.6666666666666666 } [08:39:34.305] index :: _onStepProgress_vidbot(), percent: 67 [08:39:34.305] CanvasStream[canvas_430101348639] :: _init(), BEGIN [08:39:34.305] i:0, c.id:simplefadedisplay [08:39:34.306] KenBurnsSlideshow[simplefadedisplay] :: _init(), BEGIN [08:39:34.306] KenBurnsSlideshow[simplefadedisplay] :: _validate() [08:39:34.307] KenBurnsSlideshow[undefined] :: _validateAnim() [08:39:34.307] KenBurnsSlideshow[undefined] :: _validateTheme() [08:39:34.308] i:1, c.id:caption [08:39:34.308] RenCaption[caption] :: _init() [08:39:34.309] RenCaption[caption] :: _validate() [08:39:34.310] KenBurnsSlideshow[simplefadedisplay] :: _build() [08:39:34.316] AnimatedImageFrame[aif] :: constructor() [08:39:34.317] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.318] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_1.jpg [08:39:34.331] RenCaption[caption] :: _build() [08:39:34.351] Overlay[caption] :: _animate() [08:39:34.354] CanvasStream[caption] :: _init(), p.then() [08:39:34.419] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.422] AnimatedImageFrame[aif] :: _init(), END [08:39:34.423] AnimatedImageFrame[aif] :: constructor() [08:39:34.424] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.424] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_2.jpg [08:39:34.479] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.480] AnimatedImageFrame[aif] :: _init(), END [08:39:34.481] AnimatedImageFrame[aif] :: constructor() [08:39:34.481] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.482] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_3.jpg [08:39:34.541] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.542] AnimatedImageFrame[aif] :: _init(), END [08:39:34.543] AnimatedImageFrame[aif] :: constructor() [08:39:34.543] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.543] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_4.jpg [08:39:34.602] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.603] AnimatedImageFrame[aif] :: _init(), END [08:39:34.604] AnimatedImageFrame[aif] :: constructor() [08:39:34.604] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.604] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_5.jpg [08:39:34.651] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.652] AnimatedImageFrame[aif] :: _init(), END [08:39:34.653] AnimatedImageFrame[aif] :: constructor() [08:39:34.653] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.653] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_6.jpg [08:39:34.713] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.714] AnimatedImageFrame[aif] :: _init(), END [08:39:34.714] AnimatedImageFrame[aif] :: constructor() [08:39:34.714] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.715] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_7.jpg [08:39:34.760] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.761] AnimatedImageFrame[aif] :: _init(), END [08:39:34.762] AnimatedImageFrame[aif] :: constructor() [08:39:34.762] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.762] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_8.jpg [08:39:34.810] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.811] AnimatedImageFrame[aif] :: _init(), END [08:39:34.811] AnimatedImageFrame[aif] :: constructor() [08:39:34.811] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.811] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_9.jpg [08:39:34.863] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.865] AnimatedImageFrame[aif] :: _init(), END [08:39:34.866] AnimatedImageFrame[aif] :: constructor() [08:39:34.866] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.866] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_10.jpg [08:39:34.932] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.934] AnimatedImageFrame[aif] :: _init(), END [08:39:34.934] AnimatedImageFrame[aif] :: constructor() [08:39:34.935] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.935] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_11.jpg [08:39:34.981] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:34.982] AnimatedImageFrame[aif] :: _init(), END [08:39:34.982] AnimatedImageFrame[aif] :: constructor() [08:39:34.982] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:34.982] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_12.jpg [08:39:35.037] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.038] AnimatedImageFrame[aif] :: _init(), END [08:39:35.039] AnimatedImageFrame[aif] :: constructor() [08:39:35.039] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.039] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_13.jpg [08:39:35.090] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.091] AnimatedImageFrame[aif] :: _init(), END [08:39:35.092] AnimatedImageFrame[aif] :: constructor() [08:39:35.092] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.092] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_14.jpg [08:39:35.140] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.141] AnimatedImageFrame[aif] :: _init(), END [08:39:35.142] AnimatedImageFrame[aif] :: constructor() [08:39:35.142] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.142] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_15.jpg [08:39:35.210] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.211] AnimatedImageFrame[aif] :: _init(), END [08:39:35.211] AnimatedImageFrame[aif] :: constructor() [08:39:35.212] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.212] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_16.jpg [08:39:35.266] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.267] AnimatedImageFrame[aif] :: _init(), END [08:39:35.267] AnimatedImageFrame[aif] :: constructor() [08:39:35.267] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.267] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_17.jpg [08:39:35.321] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.322] AnimatedImageFrame[aif] :: _init(), END [08:39:35.323] AnimatedImageFrame[aif] :: constructor() [08:39:35.323] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.323] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_18.jpg [08:39:35.386] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.387] AnimatedImageFrame[aif] :: _init(), END [08:39:35.388] AnimatedImageFrame[aif] :: constructor() [08:39:35.388] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.388] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_19.jpg [08:39:35.443] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.444] AnimatedImageFrame[aif] :: _init(), END [08:39:35.444] AnimatedImageFrame[aif] :: constructor() [08:39:35.445] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.445] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_20.jpg [08:39:35.507] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.508] AnimatedImageFrame[aif] :: _init(), END [08:39:35.508] AnimatedImageFrame[aif] :: constructor() [08:39:35.509] AnimatedImageFrame[aif] :: _init(), BEGIN [08:39:35.509] CanvasClip :: LoadImageWithPromise(), src: 4D8A1E9C-B818-1010-76F9-D9C6154B3E71_1.jpg [08:39:35.565] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [08:39:35.567] AnimatedImageFrame[aif] :: _init(), END [08:39:35.567] Overlay[simplefadedisplay] :: _animate() [08:39:35.568] KenBurnsSlideshow[simplefadedisplay] :: _init(), END [08:39:35.568] CanvasStream[simplefadedisplay] :: _init(), p.then() [08:39:35.568] CanvasStream[canvas_430101348639] :: _init(), promise.all.then() [08:39:35.571] CanvasStream[canvas_430101348639] :: _init(), END [08:39:35.571] StreamMangaer :: init(), stream[canvas_430101348639].then() [08:39:35.571] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'canvas_430101348639', progress: 1 } [08:39:35.572] index :: _onStepProgress_vidbot(), percent: 100 [08:39:35.572] StreamManager :: init(), promise.all.then... [08:39:35.572] Vidbot :: StreamMgr.on( 'INITED' ) [08:39:35.572] Vidbot :: _next(), _stepIndex:2 of 4 [08:39:35.573] index :: _onStepCompleted_vidbot(), step: 2 [08:39:35.573] index :: _onStepStarted_vidbot(), step: 3 [08:39:35.573] Vidbot :: step[2], label:Rendering Canvas Streams [08:39:35.573] Vidbot :: StreamMgr.on( 'RENDER_STARTED' ), data: undefined [08:39:35.573] StreamManager :: render() [08:39:35.574] CanvasStream[canvas_430101348639] :: render() [08:39:35.711] index :: _onStepProgress_vidbot(), percent: 0 [08:40:33.865] index :: _onStepProgress_vidbot(), percent: 5 [08:41:38.316] index :: _onStepProgress_vidbot(), percent: 10 [08:42:53.986] index :: _onStepProgress_vidbot(), percent: 15 [08:43:57.359] index :: _onStepProgress_vidbot(), percent: 20 [08:44:54.074] index :: _onStepProgress_vidbot(), percent: 25 [08:46:10.850] index :: _onStepProgress_vidbot(), percent: 30 [08:47:12.428] index :: _onStepProgress_vidbot(), percent: 35 [08:48:25.039] index :: _onStepProgress_vidbot(), percent: 40 [08:49:27.856] index :: _onStepProgress_vidbot(), percent: 45 [08:50:39.338] index :: _onStepProgress_vidbot(), percent: 50 [08:51:45.586] index :: _onStepProgress_vidbot(), percent: 55 [08:52:59.269] index :: _onStepProgress_vidbot(), percent: 60 [08:54:12.158] index :: _onStepProgress_vidbot(), percent: 65 [08:55:22.715] index :: _onStepProgress_vidbot(), percent: 70 [08:56:36.108] index :: _onStepProgress_vidbot(), percent: 75 [08:57:45.037] index :: _onStepProgress_vidbot(), percent: 80 [08:58:55.806] index :: _onStepProgress_vidbot(), percent: 85 [09:00:10.102] index :: _onStepProgress_vidbot(), percent: 90 [09:01:35.488] index :: _onStepProgress_vidbot(), percent: 95 [09:02:49.453] index :: _onStepProgress_vidbot(), percent: 100 [09:02:55.823] StreamManager :: render(), Promise.all.then... [09:02:55.823] Vidbot :: StreamMgr.on( 'RENDER_COMPLETED' ), data: undefined [09:02:55.824] Vidbot :: _next(), _stepIndex:3 of 4 [09:02:55.824] index :: _onStepCompleted_vidbot(), step: 3 [09:02:55.825] index :: _onStepStarted_vidbot(), step: 4 [09:02:55.826] Vidbot :: step[3], label:Encoding Media [09:02:55.830] CanvasFilters :: Overlay() [09:02:55.830] AudioStream[audio_vo] :: inputOptions() [09:02:55.830] AudioFilters :: Volume() [09:02:55.831] filter: [2:a]volume=1[2_vol] [09:02:55.831] AudioFilters :: Delay() [09:02:55.831] filter: [2_vol]adelay=0|0[2_del] [09:02:55.831] AudioStream[bg_music] :: inputOptions() [09:02:55.831] AudioFilters :: Volume() [09:02:55.831] filter: [3:a]volume=0.25[3_vol] [09:02:55.832] AudioFilters :: FadeOut() [09:02:55.832] filter: [3_vol]afade=t=out:st=60.82:d=1[3_fadeout] [09:02:55.832] AudioFilters :: Delay() [09:02:55.832] filter: [3_fadeout]adelay=0|0[3_del] [09:02:55.832] AudioFilters :: Mix() [09:02:55.832] filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [09:02:55.832] mixed filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [09:02:55.840] hang.time: 60 [09:02:56.044] Vidbot :: ffmpeg.on( 'start' ) [09:02:56.045] ffmpeg -f lavfi -i color=c=000000:s=1280x720:r=30:duration=60.82 -r 30 -i ./tmp/canvas_430101348639_%05d.png -to 00:01:00.820 -i file:///var/www/html/ [09:02:56.045] clients/20508/audio/4D8A1E9C-B818-1010-76F9-D9C6154B3E71.mp3 -to 00:01:00.820 -i file:///var/app/video_pre_processor/assets/vidbot/_files/audio/RF2_So [09:02:56.045] ft_Acoustic.mp3 -y -filter_complex [0:v][1:v]overlay=x=0:y=0[1_out];[2:a]volume=1[2_vol];[2_vol]adelay=0|0[2_del];[3:a]volume=0.25[3_vol];[3_vol]afade [09:02:56.045] =t=out:st=60.82:d=1[3_fadeout];[3_fadeout]adelay=0|0[3_del];[2_del][3_del]amix=inputs=2:duration=longest[a_out] -acodec aac -vcodec libx264 -r 30 -f m [09:02:56.045] p4 -map [a_out] -map [1_out] -preset veryfast -crf 18 -movflags frag_keyframe+empty_moov -pix_fmt yuv420p /var/www/html/clients/20508/video/4D8A1E9C-B [09:02:56.045] 818-1010-76F9-D9C6154B3E71.mp4 [09:02:56.442] index :: _onStepProgress_vidbot(), percent: -3415403580 [09:02:56.813] index :: _onStepProgress_vidbot(), percent: 1 [09:02:58.335] index :: _onStepProgress_vidbot(), percent: 5 [09:02:59.852] index :: _onStepProgress_vidbot(), percent: 10 [09:03:01.372] index :: _onStepProgress_vidbot(), percent: 15 [09:03:02.903] index :: _onStepProgress_vidbot(), percent: 20 [09:03:04.930] index :: _onStepProgress_vidbot(), percent: 26 [09:03:05.934] index :: _onStepProgress_vidbot(), percent: 30 [09:03:07.463] index :: _onStepProgress_vidbot(), percent: 35 [09:03:08.998] index :: _onStepProgress_vidbot(), percent: 40 [09:03:10.487] index :: _onStepProgress_vidbot(), percent: 46 [09:03:11.492] index :: _onStepProgress_vidbot(), percent: 50 [09:03:13.041] index :: _onStepProgress_vidbot(), percent: 55 [09:03:14.578] index :: _onStepProgress_vidbot(), percent: 61 [09:03:15.584] index :: _onStepProgress_vidbot(), percent: 65 [09:03:17.092] index :: _onStepProgress_vidbot(), percent: 70 [09:03:18.599] index :: _onStepProgress_vidbot(), percent: 76 [09:03:20.101] index :: _onStepProgress_vidbot(), percent: 81 [09:03:21.614] index :: _onStepProgress_vidbot(), percent: 86 [09:03:22.632] index :: _onStepProgress_vidbot(), percent: 90 [09:03:24.162] index :: _onStepProgress_vidbot(), percent: 96 [09:03:25.522] index :: _onStepProgress_vidbot(), percent: 100 [09:03:25.577] Vidbot :: ffmpeg.on( 'end' ), Done! [09:03:25.578] StreamManager :: dispose() [09:03:25.578] CanvasStream[canvas_430101348639] :: dispose() [09:03:25.583] Vidbot :: fflog.on( 'finish' ) [09:03:25.583] fflog.path: /var/www/html/clients/20508/video/4D8A1E9C-B818-1010-76F9-D9C6154B3E71.mp4.fflog [09:03:25.583] Vidbot :: _next(), _stepIndex:4 of 4 [09:03:25.583] index :: _onStepCompleted_vidbot(), step: 4 [09:03:25.584] index :: _onComplete_vidbot(), data: { stepTime: 0.001, appTime: 1431.43, output: '/var/www/html/clients/20508/video/4D8A1E9C-B818-1010-76F9-D9C6154B3E71.mp4', duration: 60.82 } --------------------------------------------------------------------------------------------------------------- Output File : /var/app/video_pre_processor/jobs/postp//var/www/html/clients/20508/video/4D8A1E9C-B818-1010-76F9-D9C6154B3E71.mp4 Media Duration : 00:01:00.820 Generation Time : 00:23:51.430 ---------------------------------------------------------------------------------------------------------------