--------------------------------------------------------------------------------------------------------------- INITIALIZING VIDBOT, v1.7.0... --------------------------------------------------------------------------------------------------------------- [06:18:38.562] Vidbot :: start() [06:18:38.562] Vidbot :: _next(), _stepIndex:0 of 4 [06:18:38.563] index :: _onStepStarted_vidbot(), step: 1 [06:18:38.564] Vidbot :: step[0], label:Initializing Core [06:18:38.572] index :: _onStepProgress_vidbot(), percent: 20 [06:18:38.572] Vidbot :: _parse() [06:18:38.573] index :: _onStepProgress_vidbot(), percent: 40 [06:18:38.573] Vidbot :: _validate() [06:18:38.574] index :: _onStepProgress_vidbot(), percent: 60 [06:18:38.574] Vidbot :: _fonts() [06:18:38.574] FabricFontManager :: add(), id: SourceSansPro-Bold [06:18:38.575] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Bold.ttf [06:18:38.582] FabricFontManager :: add(), id: SourceSansPro-Light [06:18:38.583] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Light.ttf [06:18:38.583] FabricFontManager :: add(), id: DINOT-Bold [06:18:38.583] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Bold.otf [06:18:38.584] FabricFontManager :: add(), id: DINOT-Light [06:18:38.584] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Light.otf [06:18:38.585] FabricFontManager :: add(), id: TradeGothicLTStd-Regular [06:18:38.585] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Regular.otf [06:18:38.586] FabricFontManager :: add(), id: TradeGothicLTStd-Bold [06:18:38.586] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Bold.otf [06:18:38.587] index :: _onStepProgress_vidbot(), percent: 80 [06:18:38.587] Vidbot :: _clips() [06:18:38.588] StreamManager :: add(), id:audio_vo, type:audio [06:18:38.588] AudioClip[audio_vo] :: constructor() [06:18:38.588] InputStream[audio_vo] :: constructor() [06:18:38.588] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'audio_vo', clipId: null } [06:18:38.591] StreamManager :: add(), id:bg_music, type:audio [06:18:38.591] AudioClip[bg_music] :: constructor() [06:18:38.591] InputStream[bg_music] :: constructor() [06:18:38.591] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'bg_music', clipId: null } [06:18:38.591] StreamManager :: add(), id:simplefadedisplay, type:canvas [06:18:38.592] CanvasStream[canvas_69704888012] :: constructor() [06:18:38.592] InputStream[canvas_69704888012] :: constructor() [06:18:38.668] KenBurnsSlideshow[simplefadedisplay] :: constructor() [06:18:38.668] Overlay[simplefadedisplay] :: constructor() [06:18:38.668] CanvasClip[simplefadedisplay] :: constructor() [06:18:38.668] Clip[simplefadedisplay] :: constructor() [06:18:38.668] clip:"simplefadedisplay" added to stream:"canvas_69704888012" [06:18:38.668] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_69704888012', clipId: 'simplefadedisplay' } [06:18:38.669] StreamManager :: add(), id:caption, type:canvas [06:18:38.669] RenCaption[caption] :: constructor() [06:18:38.669] Ren[caption] :: constructor() [06:18:38.669] Overlay[caption] :: constructor() [06:18:38.669] CanvasClip[caption] :: constructor() [06:18:38.669] Clip[caption] :: constructor() [06:18:38.669] clip:"caption" added to stream:"canvas_69704888012" [06:18:38.669] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_69704888012', clipId: 'caption' } [06:18:38.669] all added... [06:18:38.669] Vidbot :: _next(), _stepIndex:1 of 4 [06:18:38.670] index :: _onStepCompleted_vidbot(), step: 1 [06:18:38.670] index :: _onStepStarted_vidbot(), step: 2 [06:18:38.670] Vidbot :: step[1], label:Initializing Input Streams [06:18:38.671] StreamManager :: init() [06:18:38.671] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'audio_vo', progress: 0.3333333333333333 } [06:18:38.671] index :: _onStepProgress_vidbot(), percent: 33 [06:18:38.671] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'bg_music', progress: 0.6666666666666666 } [06:18:38.671] index :: _onStepProgress_vidbot(), percent: 67 [06:18:38.672] CanvasStream[canvas_69704888012] :: _init(), BEGIN [06:18:38.672] i:0, c.id:simplefadedisplay [06:18:38.672] KenBurnsSlideshow[simplefadedisplay] :: _init(), BEGIN [06:18:38.673] KenBurnsSlideshow[simplefadedisplay] :: _validate() [06:18:38.673] KenBurnsSlideshow[undefined] :: _validateAnim() [06:18:38.673] KenBurnsSlideshow[undefined] :: _validateTheme() [06:18:38.674] i:1, c.id:caption [06:18:38.675] RenCaption[caption] :: _init() [06:18:38.675] RenCaption[caption] :: _validate() [06:18:38.676] KenBurnsSlideshow[simplefadedisplay] :: _build() [06:18:38.682] AnimatedImageFrame[aif] :: constructor() [06:18:38.683] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.683] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_1.jpg [06:18:38.694] RenCaption[caption] :: _build() [06:18:38.710] Overlay[caption] :: _animate() [06:18:38.713] CanvasStream[caption] :: _init(), p.then() [06:18:38.729] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.731] AnimatedImageFrame[aif] :: _init(), END [06:18:38.733] AnimatedImageFrame[aif] :: constructor() [06:18:38.733] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.733] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_2.jpg [06:18:38.745] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.747] AnimatedImageFrame[aif] :: _init(), END [06:18:38.747] AnimatedImageFrame[aif] :: constructor() [06:18:38.747] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.747] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_3.jpg [06:18:38.758] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.759] AnimatedImageFrame[aif] :: _init(), END [06:18:38.759] AnimatedImageFrame[aif] :: constructor() [06:18:38.760] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.760] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_4.jpg [06:18:38.770] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.771] AnimatedImageFrame[aif] :: _init(), END [06:18:38.771] AnimatedImageFrame[aif] :: constructor() [06:18:38.771] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.771] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_5.jpg [06:18:38.781] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.782] AnimatedImageFrame[aif] :: _init(), END [06:18:38.783] AnimatedImageFrame[aif] :: constructor() [06:18:38.783] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.783] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_6.jpg [06:18:38.793] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.794] AnimatedImageFrame[aif] :: _init(), END [06:18:38.795] AnimatedImageFrame[aif] :: constructor() [06:18:38.795] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.795] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_7.jpg [06:18:38.806] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.807] AnimatedImageFrame[aif] :: _init(), END [06:18:38.808] AnimatedImageFrame[aif] :: constructor() [06:18:38.808] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.808] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_8.jpg [06:18:38.819] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.820] AnimatedImageFrame[aif] :: _init(), END [06:18:38.820] AnimatedImageFrame[aif] :: constructor() [06:18:38.821] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.821] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_9.jpg [06:18:38.832] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.833] AnimatedImageFrame[aif] :: _init(), END [06:18:38.834] AnimatedImageFrame[aif] :: constructor() [06:18:38.834] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.834] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_10.jpg [06:18:38.845] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.846] AnimatedImageFrame[aif] :: _init(), END [06:18:38.846] AnimatedImageFrame[aif] :: constructor() [06:18:38.847] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.847] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_11.jpg [06:18:38.857] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.858] AnimatedImageFrame[aif] :: _init(), END [06:18:38.859] AnimatedImageFrame[aif] :: constructor() [06:18:38.859] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.859] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_12.jpg [06:18:38.870] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.871] AnimatedImageFrame[aif] :: _init(), END [06:18:38.871] AnimatedImageFrame[aif] :: constructor() [06:18:38.871] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.871] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_13.jpg [06:18:38.884] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.885] AnimatedImageFrame[aif] :: _init(), END [06:18:38.885] AnimatedImageFrame[aif] :: constructor() [06:18:38.885] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.885] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_14.jpg [06:18:38.898] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.899] AnimatedImageFrame[aif] :: _init(), END [06:18:38.899] AnimatedImageFrame[aif] :: constructor() [06:18:38.899] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.899] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_15.jpg [06:18:38.911] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.912] AnimatedImageFrame[aif] :: _init(), END [06:18:38.913] AnimatedImageFrame[aif] :: constructor() [06:18:38.913] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.913] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_16.jpg [06:18:38.924] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.925] AnimatedImageFrame[aif] :: _init(), END [06:18:38.925] AnimatedImageFrame[aif] :: constructor() [06:18:38.925] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.926] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_1.jpg [06:18:38.936] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.937] AnimatedImageFrame[aif] :: _init(), END [06:18:38.937] AnimatedImageFrame[aif] :: constructor() [06:18:38.937] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.937] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_2.jpg [06:18:38.966] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.967] AnimatedImageFrame[aif] :: _init(), END [06:18:38.967] AnimatedImageFrame[aif] :: constructor() [06:18:38.967] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.967] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_3.jpg [06:18:38.988] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:38.989] AnimatedImageFrame[aif] :: _init(), END [06:18:38.990] AnimatedImageFrame[aif] :: constructor() [06:18:38.990] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:38.990] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_4.jpg [06:18:39.000] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:39.001] AnimatedImageFrame[aif] :: _init(), END [06:18:39.001] AnimatedImageFrame[aif] :: constructor() [06:18:39.001] AnimatedImageFrame[aif] :: _init(), BEGIN [06:18:39.001] CanvasClip :: LoadImageWithPromise(), src: 5F88C9C2-3A44-23F4-7098-66DC57A1D92C_5.jpg [06:18:39.011] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [06:18:39.011] AnimatedImageFrame[aif] :: _init(), END [06:18:39.012] Overlay[simplefadedisplay] :: _animate() [06:18:39.012] KenBurnsSlideshow[simplefadedisplay] :: _init(), END [06:18:39.012] CanvasStream[simplefadedisplay] :: _init(), p.then() [06:18:39.012] CanvasStream[canvas_69704888012] :: _init(), promise.all.then() [06:18:39.014] CanvasStream[canvas_69704888012] :: _init(), END [06:18:39.014] StreamMangaer :: init(), stream[canvas_69704888012].then() [06:18:39.015] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'canvas_69704888012', progress: 1 } [06:18:39.015] index :: _onStepProgress_vidbot(), percent: 100 [06:18:39.015] StreamManager :: init(), promise.all.then... [06:18:39.015] Vidbot :: StreamMgr.on( 'INITED' ) [06:18:39.015] Vidbot :: _next(), _stepIndex:2 of 4 [06:18:39.015] index :: _onStepCompleted_vidbot(), step: 2 [06:18:39.015] index :: _onStepStarted_vidbot(), step: 3 [06:18:39.016] Vidbot :: step[2], label:Rendering Canvas Streams [06:18:39.016] Vidbot :: StreamMgr.on( 'RENDER_STARTED' ), data: undefined [06:18:39.016] StreamManager :: render() [06:18:39.017] CanvasStream[canvas_69704888012] :: render() [06:18:39.052] index :: _onStepProgress_vidbot(), percent: 0 [06:18:46.981] index :: _onStepProgress_vidbot(), percent: 5 [06:18:56.320] index :: _onStepProgress_vidbot(), percent: 10 [06:19:04.307] index :: _onStepProgress_vidbot(), percent: 15 [06:19:11.132] index :: _onStepProgress_vidbot(), percent: 20 [06:19:18.058] index :: _onStepProgress_vidbot(), percent: 25 [06:19:26.469] index :: _onStepProgress_vidbot(), percent: 30 [06:19:36.152] index :: _onStepProgress_vidbot(), percent: 35 [06:19:46.280] index :: _onStepProgress_vidbot(), percent: 40 [06:19:58.773] index :: _onStepProgress_vidbot(), percent: 45 [06:20:11.172] index :: _onStepProgress_vidbot(), percent: 50 [06:20:21.330] index :: _onStepProgress_vidbot(), percent: 55 [06:20:29.225] index :: _onStepProgress_vidbot(), percent: 60 [06:20:38.915] index :: _onStepProgress_vidbot(), percent: 65 [06:20:52.245] index :: _onStepProgress_vidbot(), percent: 70 [06:21:04.074] index :: _onStepProgress_vidbot(), percent: 75 [06:21:14.589] index :: _onStepProgress_vidbot(), percent: 80 [06:21:23.451] index :: _onStepProgress_vidbot(), percent: 85 [06:21:33.001] index :: _onStepProgress_vidbot(), percent: 90 [06:21:41.315] index :: _onStepProgress_vidbot(), percent: 95 [06:21:49.174] index :: _onStepProgress_vidbot(), percent: 100 [06:21:50.071] StreamManager :: render(), Promise.all.then... [06:21:50.071] Vidbot :: StreamMgr.on( 'RENDER_COMPLETED' ), data: undefined [06:21:50.071] Vidbot :: _next(), _stepIndex:3 of 4 [06:21:50.071] index :: _onStepCompleted_vidbot(), step: 3 [06:21:50.072] index :: _onStepStarted_vidbot(), step: 4 [06:21:50.073] Vidbot :: step[3], label:Encoding Media [06:21:50.075] CanvasFilters :: Overlay() [06:21:50.076] AudioStream[audio_vo] :: inputOptions() [06:21:50.076] AudioFilters :: Volume() [06:21:50.076] filter: [2:a]volume=1[2_vol] [06:21:50.076] AudioFilters :: Delay() [06:21:50.077] filter: [2_vol]adelay=0|0[2_del] [06:21:50.077] AudioStream[bg_music] :: inputOptions() [06:21:50.077] AudioFilters :: Volume() [06:21:50.077] filter: [3:a]volume=0.25[3_vol] [06:21:50.077] AudioFilters :: FadeOut() [06:21:50.077] filter: [3_vol]afade=t=out:st=60.3:d=1[3_fadeout] [06:21:50.077] AudioFilters :: Delay() [06:21:50.077] filter: [3_fadeout]adelay=0|0[3_del] [06:21:50.077] AudioFilters :: Mix() [06:21:50.078] filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [06:21:50.078] mixed filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [06:21:50.080] hang.time: 60 [06:21:50.190] Vidbot :: ffmpeg.on( 'start' ) [06:21:50.190] ffmpeg -f lavfi -i color=c=000000:s=640x360:r=30:duration=60.3 -r 30 -i ./tmp/canvas_69704888012_%05d.png -to 00:01:00.299 -i file:///var/www/html/cli [06:21:50.190] ents/10231/audio/5F88C9C2-3A44-23F4-7098-66DC57A1D92C.mp3 -to 00:01:00.299 -i file:///var/app/video_pre_processor/assets/vidbot/_files/audio/RF8_EDM_1 [06:21:50.190] .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=t=out:st=6 [06:21:50.190] 0.3: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 mp4 -map [a_o [06:21:50.190] ut] -map [1_out] -preset veryfast -crf 18 -movflags frag_keyframe+empty_moov -pix_fmt yuv420p /var/www/html/clients/10231/video/5F88C9C2-3A44-23F4-709 [06:21:50.190] 8-66DC57A1D92C.mp4 [06:21:50.340] index :: _onStepProgress_vidbot(), percent: -3444856480 [06:21:50.788] index :: _onStepProgress_vidbot(), percent: 2 [06:21:51.295] index :: _onStepProgress_vidbot(), percent: 6 [06:21:52.305] index :: _onStepProgress_vidbot(), percent: 12 [06:21:52.809] index :: _onStepProgress_vidbot(), percent: 16 [06:21:53.810] index :: _onStepProgress_vidbot(), percent: 24 [06:21:54.310] index :: _onStepProgress_vidbot(), percent: 28 [06:21:54.812] index :: _onStepProgress_vidbot(), percent: 31 [06:21:55.319] index :: _onStepProgress_vidbot(), percent: 35 [06:21:56.326] index :: _onStepProgress_vidbot(), percent: 42 [06:21:56.827] index :: _onStepProgress_vidbot(), percent: 45 [06:21:57.829] index :: _onStepProgress_vidbot(), percent: 53 [06:21:58.331] index :: _onStepProgress_vidbot(), percent: 56 [06:21:58.832] index :: _onStepProgress_vidbot(), percent: 60 [06:21:59.833] index :: _onStepProgress_vidbot(), percent: 67 [06:22:00.335] index :: _onStepProgress_vidbot(), percent: 71 [06:22:00.842] index :: _onStepProgress_vidbot(), percent: 75 [06:22:01.343] index :: _onStepProgress_vidbot(), percent: 80 [06:22:02.355] index :: _onStepProgress_vidbot(), percent: 87 [06:22:02.858] index :: _onStepProgress_vidbot(), percent: 91 [06:22:03.358] index :: _onStepProgress_vidbot(), percent: 95 [06:22:03.774] index :: _onStepProgress_vidbot(), percent: 100 [06:22:03.793] Vidbot :: ffmpeg.on( 'end' ), Done! [06:22:03.794] StreamManager :: dispose() [06:22:03.794] CanvasStream[canvas_69704888012] :: dispose() [06:22:03.799] Vidbot :: fflog.on( 'finish' ) [06:22:03.800] fflog.path: /var/www/html/clients/10231/video/5F88C9C2-3A44-23F4-7098-66DC57A1D92C.mp4.fflog [06:22:03.800] Vidbot :: _next(), _stepIndex:4 of 4 [06:22:03.800] index :: _onStepCompleted_vidbot(), step: 4 [06:22:03.800] index :: _onComplete_vidbot(), data: { stepTime: 0, appTime: 205.257, output: '/var/www/html/clients/10231/video/5F88C9C2-3A44-23F4-7098-66DC57A1D92C.mp4', duration: 60.3 } --------------------------------------------------------------------------------------------------------------- Output File : /var/app/video_pre_processor/jobs/postp//var/www/html/clients/10231/video/5F88C9C2-3A44-23F4-7098-66DC57A1D92C.mp4 Media Duration : 00:01:00.299 Generation Time : 00:03:25.257 ---------------------------------------------------------------------------------------------------------------