0:00:26
what is going on guys welcome back to
0:00:30
another session of feel breaking fix
0:00:33
i'm always in a shop look at that yeah
0:00:36
we are in beta testing fixing issues now
0:00:42
hey gekko thanks for joining
0:00:47
i love explain punctuality
0:00:52
yeah i hope you all had a really good
0:00:55
weekend as in long weekend although it
0:00:59
wasn't really long
0:01:06
no no no no no but hey another one and
0:01:11
then this weekend will be a long weekend
0:01:14
as well because monday is anzac day
0:01:24
i just know there's a public holiday
0:01:26
that's over oh that's nice
0:01:33
there'll be i think it's something to do
0:01:35
with australia and new zealand as a
0:01:43
first and foremost
0:01:45
let's do the acknowledgement of the
0:01:46
country and pay our respects to the
0:01:48
elders so here we go
0:01:51
i begin today by acknowledging the
0:01:53
traditional custodians of the land on
0:01:55
which we gather today and pay my
0:01:57
respects to the elders past present and
0:01:59
future i extend their respect to
0:02:02
aboriginal and torres strait islander
0:02:09
that was brilliant smurf ass sand
0:02:15
now i should probably just smooth that
0:02:17
silk that makes a lot more sense isn't
0:02:25
this project is as it's as smooth as
0:02:33
oh hilarious hilarious
0:02:38
yeah um so today how about you choose a
0:02:48
how about we let the uh viewers hate
0:02:51
khan var how about we let the viewers
0:02:52
choose the background noise today
0:02:56
ah that would be a great idea
0:02:59
yeah convo you're up
0:03:10
by the way i looked at an sac day it's
0:03:12
like a memorial day for veterans
0:03:17
yeah it's coming back to me now slowly
0:03:26
oh rock here we go
0:03:29
got all the rock one
0:03:35
is our next project going to be the
0:03:37
stream yard spotify integration
0:03:43
maybe if they pair if they pass 5
0:03:45
million bucks why not
0:03:48
all right i'll do it for five
0:03:55
all right um so yeah today we're going
0:03:58
to be focusing on the rest of the fixes
0:04:02
to do so first of all we're gonna open
0:04:08
do you wanna go through tory
0:04:11
you want me to share my screen yeah
0:04:14
because i'm still having problems with
0:04:16
sharing the screen this oh really
0:04:21
it's chrome is it mac it's
0:04:24
not allowing me to do it as in chrome
0:04:43
finishes a new intro is still hopefully
0:04:46
a work in progress and he'll be you will
0:04:50
be here so we're going to heart once he
0:04:54
he's going all in i mean so
0:04:56
all in hundred percent yeah
0:04:59
that's actually why he wasn't able to
0:05:01
make this show yesterday he's working so
0:05:05
he pulled up oven overnighter and then
0:05:11
for two slides in a row like wow
0:05:14
i love your dedication
0:05:27
put the do the websocket thing
0:05:33
as in um extend the web socket timings
0:05:39
as a websocket time needs to be extended
0:05:52
wait is somebody having an issue
0:05:59
so we basically discussed this
0:06:03
and um you actually said that it's
0:06:06
disconnecting the person if they're not
0:06:09
active for probably a few minutes
0:06:14
gosh that's where i thought why that
0:06:22
uh yeah there's also the maximum limit
0:06:25
set by aws which i think is like two
0:06:28
hours or something
0:06:34
yeah it should be fine
0:06:36
okay cool then that's fine then we don't
0:06:39
really need to worry about that
0:06:40
for this i think they get disconnected
0:06:44
after 10 minutes if they're idle
0:06:47
uh if that's i think that's what you're
0:06:49
referring to yeah yeah
0:06:55
so i'm not great with web sockets
0:06:58
but i think typically
0:07:04
uh i think they call it like a heartbeat
0:07:07
so you send this like ping pong
0:07:10
every so often just to keep the
0:07:12
connection from going idle and then
0:07:20
it's almost like polling
0:07:22
i would say it's kind of similar to
0:07:26
right you just want to say hey i'm not
0:07:29
gone like i'm still around like don't
0:07:34
yeah we can probably do that one do you
0:07:36
know how easy or hard that is
0:07:43
let's take a look i don't think it's too
0:08:03
that's a new concept
0:08:07
just fish just fish
0:08:12
that's exactly what we're doing jack dab
0:08:15
fishing basking blushing
0:08:19
client handshake server response keeping
0:08:26
blah blah blah blah blah blah blah blah
0:08:31
okay maybe it's in here
0:08:59
they said that's your definition as well
0:09:08
oh pings and pongs
0:09:10
there we go oh um yeah
0:09:13
does that thing's important the
0:09:14
heartbeat all works okay
0:09:18
either the clown or something should
0:09:42
so how do we implement
0:09:44
we know what that is now
0:09:49
how do you think google
0:09:51
you use that you can use this to make
0:09:53
sure the client is still connected for
0:10:03
why did i say complete socket ping pong
0:10:10
sending frame to a server
0:10:30
back to the mdm because i think it
0:10:35
might be there in the api
0:10:40
or they might have an example
0:10:56
i've done it i did it before it's just
0:10:59
been a long it's like more than a year
0:11:11
this is what i probably
0:11:12
go uh and type in google i implement
0:11:16
websocket ping pong that's so it might
0:11:37
and i wonder if it's under if i if you
0:11:39
don't mind i'm just gonna see if it's
0:11:48
that's sending a message of course
0:11:55
message open close error
0:12:08
check that we're not reading them
0:12:15
raised this issue a while ago that when
0:12:19
the user is i mean when the users are
0:12:22
connected to a socket to a board
0:12:30
if anyone's idle then the websocket
0:12:33
connection terminates itself
0:12:36
so we're just basically
0:12:42
probably a websocket ping pong
0:12:46
eliminate their bug
0:12:50
because if touring tests today
0:12:53
it happened it will happen in prague as
0:12:59
right i didn't test it
0:13:05
i thought you said that oh by the way if
0:13:08
the user stays idle it does disconnect
0:13:12
oh yeah i think i think that
0:13:15
is what will happen yeah
0:13:18
okay so they just basically
0:13:21
implementing the fix for that right
0:13:26
the websockets do they work in prod
0:13:30
do they work are they all fixed
0:13:33
websocket currently looks broken
0:13:58
do we wanna test the
0:14:00
sockets first now because i don't
0:14:03
remember it's broken it's fixed
0:14:14
so if you want to create a board and
0:14:16
then send me the link of that
0:14:20
because what was the board we're using
0:14:24
i'm gonna tell you
0:14:26
being my approachmen
0:14:29
yeah it might be the wrong api gateway
0:14:35
that's probably the problem
0:14:38
but i made sure i changed it
0:14:42
it interesting well i uploaded still
0:14:48
i uploaded the still front-end js to s3
0:14:54
but maybe i didn't have the right
0:14:58
i see if that makes sense yeah because
0:15:01
when i did it i mainly had to copy and
0:15:05
paste it and then upload it yeah that
0:15:07
would make sense it's broken
0:15:11
uh do you want to try
0:15:17
um it's test one to oh you're already
0:15:23
give me the url for that one
0:15:28
for uh the link yeah words sure exactly
0:15:33
yeah when you open the dev tools it is
0:15:37
same must be that thing that we probably
0:15:40
have to change there you
0:15:50
upload the file again we just have to
0:15:55
invalidate the cache
0:15:57
yeah that's fine no problem
0:16:04
all right do you have the url for the
0:16:07
yeah i'm just gonna
0:16:09
i was navigating to that
0:16:13
yeah that's all one
0:16:16
actually i can just go into my project
0:16:22
oh i don't want to be your studio
0:16:25
to retest it since probably
0:16:28
oh yeah it would have impacted people's
0:16:30
testing for sure although i don't know
0:16:32
if they used it together
0:16:35
then they might not have noticed
0:16:41
i can't try this one
0:16:46
why don't why don't we use the github
0:16:51
the deployments for s3
0:16:57
because we would have set that up
0:17:05
okay i'm missing something now i am
0:17:08
missing i have a guest i remember i set
0:17:12
set up the github actions
0:17:14
so that it would copy to s3
0:17:18
and then invalidate the cache
0:17:20
whenever you push to
0:17:27
but i think it just
0:17:29
after you after you deleted the stack
0:17:33
it needed it needed to be it needed a
0:17:37
environment variables changed
0:17:42
in order for it to work again ah
0:17:45
so that was the i don't i don't i don't
0:17:47
have access to that you do
0:17:52
or maybe i do now because it's like uh
0:17:54
it's not a personal repo anymore but i
0:17:58
don't know if i have the permissions
0:18:01
yeah you can have okay so let's do
0:18:05
first thing first is
0:18:09
uh i don't have it in my code
0:18:14
uh do you know do you remember the
0:18:27
the file you want to
0:18:29
copy from and then the s3
0:18:36
so that would be in your current
0:18:47
forward slash forward slash
0:18:49
scrambler front end
0:18:51
and then with a hyphen in between
0:18:59
yeah there we go all right
0:19:04
do you know the command to invalidate
0:19:11
it's fine you can invalidate it manually
0:19:18
i think it's in the github actions
0:19:20
actually but i you need the distribution
0:19:24
yeah that's what i was thinking about
0:19:41
gekko said is this a rerun special
0:19:49
he's on to us again
0:19:56
all right cool so i am i know for us
0:19:59
from my own account wow interesting
0:20:05
these are we're just re-running clips of
0:20:19
okay um so i'm gonna invalidate the
0:20:29
all right it's in progress
0:20:46
okay that that's completed
0:20:54
yes so you want to give me the board
0:20:57
uh you already understand yeah
0:21:02
okay i'm gonna go into the board and
0:21:08
can you see my one
0:21:11
um mine's still loading
0:21:29
right now i think it's
0:21:39
failed to load reserves
0:21:41
oh call them names
0:21:46
uh what's happening there
0:22:08
to beta testing we started from one
0:22:13
led to another issue that led to a
0:22:16
second issue and which led to the third
0:22:25
they got this story so
0:22:33
well why am i getting
0:22:36
so does the dev board not exist
0:22:40
you just created isn't it
0:22:43
i just went to a url
0:22:48
okay try to create the board properly
0:22:50
tory that's weird though it should kick
0:22:52
me if it's not a real board it should
0:22:55
kick me to the home page
0:23:01
that's another bug then
0:23:03
but it was it was doing that before
0:23:06
it wasn't no like before we deleted the
0:23:10
stack like weeks ago
0:23:14
at least just yeah it was yeah it was
0:23:19
what's up we're going to
0:23:30
uh hang on a minute i'll just check in
0:23:42
the dev board interesting
0:23:48
is someone going in there deleting
0:23:53
that would be funny
0:23:57
honestly that'll be hilarious if they're
0:24:02
no no there is a board
0:24:05
no it's not then a dev board no let's
0:24:08
just create a new one then are there any
0:24:13
there are million boards
0:24:16
oh really i don't know so someone's
0:24:22
someone's been creating boards
0:24:30
okay chad there are no um
0:24:40
looks like there's some error
0:24:45
what kind of error
0:24:47
it's your front end board name
0:24:49
because you can't find it yeah that
0:24:57
need to make the still front end public
0:25:05
so i'm gonna do that that's my fault i
0:25:07
should have remembered it
0:25:09
how do you do how do you um
0:25:12
shouldn't that just automatically
0:25:14
no it doesn't matter automatically
0:25:17
unless it's on the
0:25:21
by default all the objects in s3 are
0:25:24
private unless you
0:25:37
mr tory that's your favorite all right
0:25:39
let's see if that works now that was
0:25:41
probably the problem then
0:25:46
but if that was that in the console you
0:25:49
should have said that con access is
0:25:59
well yeah now now it brought me to the
0:26:02
there you go yeah so that was a problem
0:26:04
then because it wasn't able to access
0:26:08
yeah and now the websocket is connected
0:26:14
okay so now i'm gonna go into the dev
0:26:18
i don't know if the name matters but
0:26:37
there you go perfect all right
0:26:41
okay cool so websockets are working back
0:26:56
huh how come it's not saving you
0:27:04
it's nice it's not saving it
0:27:11
how many times are you pressing it
0:27:23
i'm not getting well it could have saved
0:27:25
it but i'm not seeing a pop-up
0:27:30
this is getting very interesting
0:27:34
i am not seeing i'm not seeing a
0:27:36
confirmation yeah because it's not
0:27:40
saving the notes for some reason
0:27:44
um but why the let's hit in a console
0:27:55
i think it's the viewer
0:27:59
how did they get the url
0:28:03
just to lock down the screen
0:28:11
hide the url tori hide it
0:28:31
you played that noise that's funny no i
0:28:33
didn't i didn't honestly i didn't
0:28:40
who else is on the street
0:28:56
i don't believe you
0:28:58
you don't need to because you're playing
0:29:01
i didn't play that noise
0:29:04
i didn't know you actually fought it no
0:29:10
it wasn't that loud
0:29:48
i muted you for a second and and the
0:29:51
voice stops coming
0:29:54
you will find tory
0:30:03
let's focus i know four practices you
0:30:06
because you know you know how i'm
0:30:08
meeting you and the voice stopped coming
0:30:11
oh that was it that was me
0:30:20
that was a bit much
0:30:24
how much did you eat tori
0:30:33
oh man my my cheeks are from laughing
0:30:45
try and save the boy
0:31:04
this is gonna be the
0:31:09
so somebody put this fart sound inside
0:31:28
yeah look at that that's why it was
0:31:43
did they inject this
0:31:48
look it i keep getting more parsley
0:31:57
oh yeah playing okay i muted it i muted
0:32:01
the bra the window okay so now we have
0:32:09
all right i'm gonna take this off
0:32:12
all right i'm gonna take this project
0:32:15
all public now hang on a minute
0:32:17
no this is not happening
0:32:21
that is hilarious honestly
0:32:37
i know who it might be to be honest
0:32:46
how did he how did he get those like did
0:32:48
he use the websocket connection
0:32:54
let's let's find out how i did this
0:32:59
let me check let me take a look here
0:33:05
oh no did my dev tools freeze
0:33:08
no because i've just taken this eye off
0:33:20
that was fun i was like
0:33:22
are you playing i thought you were
0:33:23
playing a practical joke on me
0:33:36
to what url um the pride question mark
0:33:40
yes this is the one
0:33:46
yeah so this is what might have happened
0:33:57
either so he might
0:34:10
okay hang on i'm gonna go and delete the
0:34:12
board as well it's true it's chewing up
0:34:16
it's chewing up all the resources on my
0:34:24
we're going to delete
0:34:35
he attached the the wave file
0:34:41
the the sound file to a note
0:34:46
or just sent it via websocket
0:34:49
but it'd be funny if he could attach it
0:34:51
to the note but i don't know it i feel
0:34:53
like maybe i think he
0:34:55
might not be through that he can't no it
0:34:59
with the websocket because
0:35:02
the board is up through the websocket
0:35:10
almost under the website
0:35:25
it was so loud in my headphones too like
0:35:28
i couldn't hear anything else i heard
0:35:36
to be honest i might know who this is
0:35:39
but they're not coming on the comments
0:36:01
i think he's created so
0:36:04
just based on the pattern here it looks
0:36:06
like creating a card and then
0:36:19
i think it's that simple actually
0:36:26
that's really genius of him to be honest
0:36:37
yellow card and then that file and then
0:36:40
blue card and then that file ah so he's
0:36:43
doing with every card
0:36:48
i'm wondering if he's attaching it as a
0:37:08
so here's the card
0:37:15
maybe he's not attaching them to cards
0:37:17
he's just sending them
0:37:19
through the websocket connection
0:37:29
this is hilarious to be honest
0:37:39
um yeah i don't see any content on the
0:37:42
actual cards here but
0:37:47
i thought there was a way to look at
0:37:51
what gets sent through the network
0:37:58
is there any way to upload the file
0:38:02
console well he could just do it in the
0:38:07
okay i didn't know that
0:38:19
let's go back to our um websocket ping
0:38:25
that was really hilarious though
0:38:29
i made my day yeah
0:38:34
i honestly thought that it was you but
0:38:36
then i was i wish man i wish i could
0:38:44
that's a lot too yeah i thought you were
0:38:47
playing like a practical joke on me
0:38:53
you're just playing some sound in the
0:38:59
yeah but no i wasn't i wasn't it was
0:39:05
oh here we go here we go here so zayn
0:39:08
i'm looking in the
0:39:31
okay and oh yeah so yeah he just
0:39:37
so he just injected like uh
0:39:42
um what do you call that
0:39:46
whatever like he injected some
0:39:47
javascript with the new audio
0:39:51
play script so we should
0:39:53
so i guess that means that
0:39:57
when you're adding a card
0:40:01
and it's getting sent through the
0:40:05
there's no um there's no
0:40:11
sanit uh there's no we're not sanitizing
0:40:14
the cards in the back end making sure
0:40:17
something like this could happen i need
0:40:19
to do that it would be bad because if it
0:40:21
was a malicious person they could
0:40:25
like attach a malicious link or
0:40:30
yeah that's a really
0:40:31
good point we need to do that and um
0:40:34
good to learn this through farting
0:40:40
and to be honest i know who exactly as
0:40:43
and i can basically confirm who exactly
0:40:47
that has happened once
0:40:50
before in my personal website
0:40:56
and as soon as well not the um
0:41:01
sounds but a kind of a picture
0:41:05
which was even hilarious to be honest
0:41:14
who can this be and
0:41:17
then i found a heart that did it
0:41:21
oh so it is offline now okay yeah well
0:41:28
basically all the all he needed to do
0:41:39
all i needed to do was just add this
0:41:45
sorry i went kind of dark there but um
0:41:48
add this script to the
0:41:51
to the um as the text or even through
0:41:55
the dev tools and then when this
0:41:58
script gets injected then it's it's
0:42:01
gonna automatically
0:42:05
yeah yeah that's basically it
0:42:15
yeah so if we if we just
0:42:23
we should get a part sound
0:42:35
oh wow what's going on
0:42:38
all right let's see what
0:42:40
uh i think is because um it's not online
0:42:48
i think it's just so full
0:42:55
oh i muted the browser that's why ah
0:43:20
didn't play our sound
0:43:29
there you go that's how we did it oh
0:43:32
that's how we did it
0:43:34
all right so he just injected a script
0:43:36
so yeah it just needs to be sanitized on
0:43:38
the back end so that you can't
0:43:52
but that was raining genius
0:44:01
it was a lot did you hear as much as i
0:44:06
it was basically constantly going off
0:44:12
like hang on as tori really had that
0:44:16
and the parts are that loud
0:44:25
that's basically the highlight of the
0:44:36
oh so he's also trying to clear the
0:44:46
so that you can't open the console but
0:44:49
too bad for you geckdev i turn that off
0:44:57
that's my contact them he isn't talking
0:45:05
i preserve my console so you can't clear
0:45:21
this is hilarious be honest
0:45:24
as in i i kept thinking hang on tori
0:45:28
would never do this kind of a thing as
0:45:30
in far on the mic on the shelf
0:45:38
keep a straight face
0:45:59
to go to a doctor to get your air
0:46:02
checked i don't need nothing
0:46:05
yeah what if i said that
0:46:07
i don't hear anything wayne what are you
0:46:12
but eventually the kind of laugh you
0:46:14
would kill me i could tell there's a bit
0:46:19
yeah boy i'm warning you now what you
0:46:25
anyway yeah back to the
0:46:33
i thought you were watching fought beat
0:46:56
i actually thought that it was you
0:46:59
when i basically muted you
0:47:07
but then i unmuted you and then muted
0:47:12
but then it kept on coming
0:47:16
ah but anyway i'm the heart of the
0:47:21
let's go to this one
0:47:23
and check how to implement ping pong
0:47:27
i thought there was a
0:47:32
but maybe not anymore
0:47:37
yeah we already read this
0:48:02
so it tells us what is a ping pong and
0:48:05
what does it do but that's all it
0:48:07
doesn't really tell us how to implement
0:48:10
yeah is it something that's done
0:48:22
do you wanna maybe
0:48:24
google as in implement websockets ping
0:48:27
pong i i yeah i did and i didn't really
0:48:43
okay let me go back to google
0:48:48
i wonder if the aws
0:49:12
well i guess keep alive is if you get
0:49:14
disconnected it will automatically
0:49:16
reconnect so maybe that's different
0:49:25
i wonder if this log rocket article has
0:49:31
their articles are usually decent
0:49:40
well if we can't find the answer then
0:49:44
uh here i would say we should
0:49:48
aws documentation again
0:49:52
see if they make mention of it
0:49:55
all right i will have a look
0:50:27
so it's saying that um
0:50:32
i will share this link with you
0:51:03
so apparently for the service side it
0:51:06
only responds with pong
0:51:14
yeah so if we ping from the client to
0:51:17
say hey i'm still around
0:51:19
then we'll get out we'll get a pong but
0:51:21
uh what it's saying is the
0:51:24
the lambda or the aw whatever the aw i
0:51:28
guess it's not a lambda but the aws
0:51:30
api websockets will not send a ping
0:51:40
the only thing upon that okay yeah so
0:51:43
you start you say ping
0:51:45
and then you get back upon you don't
0:51:52
a pong you send a ping then you get a
0:51:58
the server would send the pawn back
0:52:01
in response to the ping so
0:52:04
it's always in that order it's always
0:52:07
ping-pong ping-pong
0:52:18
well that's good to know though but yeah
0:52:20
i was thinking just like from the client
0:52:22
side we just need to send a few pings
0:52:48
i use the ping-pong id and it works
0:52:50
nicely here's an implementation but it's
0:53:15
yeah i've seen it called the heartbeat
0:53:28
oh so it's got a 10 minute idle
0:53:31
connection timeout yep that's what i was
0:53:34
talking about yeah so if
0:53:36
you don't get up if you don't send any
0:53:39
data with intent or don't get any data
0:53:43
then the server will think you're
0:53:46
you're not there right so it'll just
0:53:57
i've got a tutorial i'm
0:54:00
gonna check how that is just bear with
0:54:17
this does not use a ping pong strategy
0:54:25
well here's some code for
0:54:30
re-establishing a connection after it is
0:54:34
after a connection is lost
0:54:47
if this that reconnect clear time
0:54:57
connection times out in 10 minutes
0:55:00
how about after us
0:55:03
we set timer on in in the background and
0:55:07
as soon as he's about to be say
0:55:11
nine nine minutes we
0:55:19
cursor um if you don't want to be
0:55:21
disconnected from the back of yeah
0:55:26
well the cursor doesn't send a websocket
0:55:33
no so the whole point is there for the
0:55:37
idle more than a certain amount of time
0:55:42
yeah but they have they have to send uh
0:55:46
i think i think receiving is fine
0:55:50
but they have to either send or receive
0:55:52
a websocket message in order to
0:55:58
to know that they're still connected to
0:56:05
but i thought that um
0:56:08
aws will automatically disconnect after
0:56:12
the user has been idle for
0:56:17
that is that is right but
0:56:21
it means they haven't sent or received a
0:56:24
websocket message in the last 10 minutes
0:56:28
so i do so basically they are defining
0:56:33
sending or receiving messages
0:56:36
i believe i'm definitely sending i
0:56:38
believe receiving would also be included
0:56:42
if it's in the spec great if not i would
0:56:45
assume receiving would also count
0:56:56
just thinking about this solution
0:57:03
they define idle by
0:57:05
a message being received or not so as
0:57:08
soon as the messages
0:57:10
stop from both sides
0:57:13
for more than 10 minutes
0:57:15
the websocket will disconnect
0:57:38
all right we will probably have to come
0:57:40
back to it tomorrow then
0:57:42
because sure yeah i'll take i'll try to
0:57:44
take another look at it
0:57:52
that'd be awesome man
0:57:54
a lot of like like socket i o is a very
0:57:58
um websocket library and
0:58:02
i'm pretty sure that type of thing would
0:58:03
just come baked into the api
0:58:12
had a heartbeat example in their
0:58:14
documentation but i don't know if they
0:58:20
know i'll probably have to check that
0:58:24
if they have it then that would be i
0:58:26
will probably then
0:58:30
the go-to way isn't it
0:58:33
yeah i think well all it really is is
0:58:36
you're just sending a message
0:58:42
the server just needs to know that
0:58:48
that you're there so i believe that's
0:58:56
yep all right cool
0:58:58
revisit a tomorrow
0:59:03
yeah been a good session um yeah good
0:59:11
yeah really hilarious
0:59:14
which was fun um yeah thanks for joining
0:59:17
guys and for the really
0:59:21
what should i say a genius surprise
0:59:35
today we basically we looked into
0:59:38
webster um made the websocket connection
0:59:41
and we're gonna we're just
0:59:47
increase the websocket timeout time from
0:59:51
uh to be more than 10 minutes
0:59:55
yeah that's basically it um if you want
0:59:58
to join us tomorrow um feel
1:00:01
free to on um because
1:00:03
we're gonna be doing some really cool
1:00:08
thanks for joining and um i will see you
1:00:13
thanks everybody have a great day