I just wanted to show off with contributing to your open source product and be like, this is the meme with him? So it looks like Tenu loved any of these. He wants you to merge this.  And then, oh he updated it. This board request is updated. And then merge this or else. And then he applied it. And then he sees the board request and he drops it. So, anyway. Open source can be fun too. Not really boring. I'm not talking about open source. I am going to do this instead. Today I'm talking about Venice. Going behind the keys. I don't know what that means. I was trying to make a lean joke. If you want to get a hold of me, I am Qlush on Twitter.  So I work at Thoughtbot. We make web apps for everyone. We have everything from big companies to start us going off the ground in Boston, Massachusetts. Yes, I know I came to the wrong city for St. Patrick's Day. And we use Redis a lot for stuff like, we use Rescueton. We use it in a lot of our clients and a lot of our internal products which you may have heard of. Hot Toad, which is our app error app and plus errors. And you may have heard of this thing but that uses Redis a ton. So Redis can be used to make your site faster but we're going to go a little bit off on the tangent there. So what is Redis? If you haven't heard of it, it's one of those NoSQL data stores. It's actually termed as an advanced key value store. So other key value stores when our memcache, the good cabinet, is one that I'm missing. Well, the keys are basically strings. The values are strings, usually. So there's no tables, there's no relations, there's no graphs, there's no documents. All you have is a string that maps to another string and your database figures it out. Except for Redis, there's more than just strings at the value portion. There's many data structures. So there's actually six. Technically there's five, I really think there's six. There's actually strings, counters, lists, there's kind of arrays, sets, which are like our Ruby sets, which are named terribly, and hashes, just like our Ruby hashes. So Redis knows about all of those and can speak about those at the database level. So you don't have to bang your data into a table. You just store it in that same data structure that we're all used to messing around with. Right now, Redis stores everything in memory. So it's seen as, it's used very much like a cache, like memcache. So if it goes down, well, you're mostly screwed. But you can kind of get more or less parallel with Redis, depending on how dependent your app is on it. So you can basically save the disk every so often. It's not full asset compliancy, but you know how it goes. By everything in memory for now, that means there's a branch being worked on by Redis guys that will allow Redis to write the disk by default instead of the memory all the time, which has a serious performance loss, but also makes Redis a lot more useful in other cases. So what does Redis use for? It's a whole huge array of what Redis has used for a while. I think the three big ones are smart caching. So for example, instead of just storing stuff by strings, let's say you've got a user's timeline on the site, that's a list. You model it as a list inside our Redis, and it's a hack-a-lot history. So we use that for a ton on the little pop code and RubyGems.org. It's also used a lot for job use, so that same list data type can also be used to basically push and pop jobs onto a queue, and then you can have tons of burgers, hundreds of them, and they will all contain over the same resources. Redis is inherently single-freddit, so each command is going to be executed one after another, so that kind of atomic action is really necessary for a job use. If you've ever looked at the internals of a delayed job, you'll see half of it is like just trying to make sure that workers aren't fighting over the same job. Redis kind of just blows that all the way at the protocol. It's also used for a lot of high-speed analytics, so if you need to count a lot of things really, really fast, Redis can do that. A good example of this is on RubyGems.org, every time that you ever download a jam, so when you type jam install, we're bumping around. It's four different counters now. Pretty much everything you would ever want to know about who's downloading a jam, or... So that's really fast because Redis had to deal with role-locking as you try to increment a column and my SQL table will cross-press it. This is a lot faster. So however, Redis is a lot more than get and set, and that's kind of what I'm talking about today. I'm kind of skipping over the basics of Redis. I'm glad to talk to you about that, but I'm going to talk about some of the newer features that are in Redis and some of the oddball things that are really, really useful in your apps. That's a binary operation which we turned to as of Redis 2.2, just a few weeks ago. StatAlgebra, and what you can do with the Redis set data types sorted and then transactions which are also very convenient, really, really important. So a binary operation. So Redis has strings as one of the data types. In those strings, they're encoded as a binary as a UTF-8 string, and you can now twiddle with the individual bits in those strings. I want an example to show this off, and I think one thing that we're all used to is the file permission bits in Unix. So if I make a file and then I run stack with this wonderful command, I don't even know if that does any more. I had to read through the whole man page to figure that out. It pulls out the permission bits. So WRRR, so I can read and write to it, the group can read, and the world can read. That's all for this. And those are basically implemented as bits somewhere deep within the bottles of your system. So I'll only get that out and store that in Redis. Now, mind you, this is terrible for production systems. Probably don't blame me when your system goes down because you use this. This is just an example. I think in practice, using Redis for permission bits could be really useful. For example, if you want to make sure you have millions of users that, let's say, you want to make sure that a user can make a blog post or not. And then you store that in Redis. Instead of a string that might be many bytes, you store it, which is going to save you a lot of memory over those two things. But for right now, we're just doing this example. So here's some binary operation. So I'm going to pull this out using Ruby. Since I love Ruby, I wanted to do that. I'm not a computer engineer. I think I'm a programmer. So I need to write out all the bits I need. I couldn't do binary math in my head, so I'm still at the point where I need to write out the 2, 8, 2, 7, and so on. So for kind of models, it's a binary number, right? So we've got WR. Those bits are flipped on. So we've got a 1. Each little column of 3 is a couple that can be boiled down to an optimal number. So we've got a 7, 7, 7, 7, 7, all these bits are on. Everyone can read and write and execute that file. But for right now, all I care about is that row, the third row. So the binary number. So I've got that 1, 10, 100, and 100. I know that's a base 2. I'm just going to say that. So I need that number in Ruby. Getting that out wasn't immediately obvious. But you can get it out with file.stat. File.stat It basically returns a file.stat object. And you can call it on a file. And then if you choose a mode. That mode, however, is not the binary number you were looking for. It was wrong. It's actually a fixed number. Which is base 10, not base 2. So in order to kind of force it back, I used printf. I could have done and with some crazy hex number. But I'm not that good at it. So I just used printf. So printf with %b binary number. So I get this guy. Which has a 1 in the front of it. I still haven't learned what that does. But at the end there, there it is. This is Unix. I know this. And the wrapping didn't show up. So there it is. I've got those 9 bits at the end. And it worked. So I want in the script as I was running it, I wanted to get those bits out. But a little bit of a trick that I learned that if you haven't seen it, I think it's really going to help you. So I need to then store that binary string and that binary printout to standard out to a string. So I use sprintf. So I now store that in the mode string. And then I'm using this little method on the string called scan. Scan is kind of like the really awesome cousin of spring split. Because it cannot own split strings, so you can just lock and do all sorts of crazy stuff with it. So I'm going to use that more than split, then split when I'm doing the strings.  And then that gives me an array of all the bits I need. So those last 9 are it. And then those last 9 I can shove into Redis. I'm going to spare you the really tedious free code of looping over all those numbers, which ended up so visually this is what I want inside of Redis. I want at my Redis key which is at perms, calling normal. This is kind of a common pattern with Redis we'll see a lot is that there's a delimiter. So kind of at my perms name space I've got this file name. I could have used a underscore I could have used a dash or slash, whatever your heart desires you can use. Redis doesn't care. At that I have this binary thing. And it's going to represent my file functions. So basically at a certain offset I'm going to set a value and Redis basically works in this way. So I'm going to bring in the Redis fiber which is you bring in the Redis Ruby gem I'm going to create a new instance of it that connects to the Redis server that's running at your local post and then you set it. So I'm going to set it for the key at perms, normal, sxt my offset's 2 and it's value is 1 simple and done. And if I want to retrieve that back out it's get. So if I want to get the bit that's at offset 8 I'm going to it's going to seep there and then yank that out. So that's pretty much all there is to binary operations within Redis. Like I said if you're doing a ton of user permissions or really flipping you might be actually storing Booleans inside Redis. You might want to check this out but it will save you a ton of memory instead of just straight up storing strings or even storing an entire object, serial objects inside Redis. Because believe me there's it's really hard with Redis to save memory and you probably want to do that as your app's lifetime goes on. Set Algebra. So there's two set data structures in Redis. There's one that's a normal set. In Ruby and our standard library we have a set which works like we would expect to set this. It's got set math in it. It can only hold unique things if you want to look up. If something's in a set that's in order that's a big old book of one. So it's got basically a little hash table to figure out hey, this thing's in the set or not. And Redis's set works pretty much just like that. There's also this other weird child of Redis called a sorted set. Which is the worst thing that is structured I think in history. Really I think it should be called a high score list. Because that's what it is. It's a high score list and that means it's a hash of strings to floats. So I really consider both of these in the set math part of Redis. So we're going to see how we can use both of those. Just like this last example I need an interesting use case for it. I figured I would watch people's tweets. My emotional intentions were a little more nefarious than I ended up being. I wanted to basically watch or stalk all the speakers' tweets and see what they said over the past few weeks. I was hoping maybe we would reveal some secrets but it didn't work out that well. However, I ended up doing this anyway. I used a really cool tweet stream by Michael Blank sorry for butchering your name that basically influenced the new Twitter streaming API. So whenever someone tweets with a given user ID it will send me a bad message.  I found all those speakers' user IDs with the Twitter API. It's really simple and scary how easy that is. And then I started a new tweet stream Damian. This all this code by the way will be up on my GitHub after I had a chance to read it because I didn't read it prior to this presentation. So you basically started Damian with your user password. My user password is not in the script I'm sorry.  So I'm going to splat that big array into the follow method and then that basically makes a vent machine start up and says hey every time I get something from Twitter I'm going to yield a status object to this blog. And that status object has all sorts of junk about that tweet as the last time anything you want to know about that tweet. The only thing I care about right now is that hanging. That Twitter user's name was. So now that we've got my handle from all my speakers oh by the way it's not only just the speakers which is one of the reasons this experiment failed it ended up being everyone who ever mentioned the speakers so I ended up tracking a lot more users than I wanted to so my statistics were a little off. So the redest part finally comes in when I'm going to do a Z anchor file. So first of all we've got this Z thing. Like I said the sorted set is the worst name based structure in history. Every Z command in red deals with sorted sets. I don't know why. But this means that the count sorted set I'm going to bump up handle by one. So every time someone tweets I'm bumping them up in the high score list. So it ends up looking like something like this and this is the results from I think yesterday which I had more sets as well if you're curious. So for example to the life year I had 353 tweets Mr. Timberman 340 and so on and so on.  If you think of a set you think of a set kind of early you think of oh there's all these different elements but sorted sets are really kind of vertical. You kind of see the string of their score which is a float internally but it can be an integer for our purposes right now. So red is basically stacks it up and you can then query it based on either the score or the rank in the list. So E light at the bottom is rank number 3 I think. But you can then query it from the bottom or the top no matter how you want to do it and we're going to see how it's done. So we also want to actually use sets in this set. I'll show you an example. So that status text, the status from a tweet is in the status text I'm going to split each word and then add each word everyone has ever said in the last few weeks to a set for their user. So I've got this words and then so I have words and then a handle I add in the set and I'm using the most depressing command ever set. So that will basically add that word into a set. The set just like our Ruby set is it will reject duplicates. So that's the first time it's ever seen that word. It will return true otherwise false. So with that we basically get these big blobs of things. These are randomly chosen. This is really randomly chosen from these two offerings and I did ask them for permission. So you basically get these as arrays of unique elements as a set. So then you can do all sorts of math. For example, we can see the words that they both said by doing an S-inter. This is actually I kind of looked over this S-inter. So there's a command line up there that's using Redis CLI and not the Redis Ruby driver. Redis itself comes with a little command line to help her that you don't even need Ruby to start with. As soon as you compile Redis you get this little almost IRB tool to start messing around with it. So if I did S-inter and then with Wacats and Zed then I get the intersection of both of the words they ever said. So not as similar as I thought. So another cool thing is that you can also, so there's other set operations, but you can also store them into a completely new key. And this is a really common pattern I assume with Redis. Where you basically take the result of a calculation dump it into a different key and then those original keys there's actions still going on the whole time. But you never have to worry about stopping the whole system to do that analysis. You just kind of bring it over to the new key do the analysis you need to do while your system is still running into other keys. So here's an example of that. So I'm going to use S-union store which will do an union of all the sets I get into this new key. So into all words I'm going to store the union of these three sets. It can take as many sets as you get it but I just want to free so I've got a bunch of a bunch of words that they didn't say this time and then I'm going to store them into the all words set. The only repeating word is bar so bar only shows up once in a new set because it's a union. So in Ruby that's actually really easy. So this example was actually I was trying to figure out how many unique words everyone was saying. So start on my reds driver and then I'm going to get this array of all the word sets that everyone has. So I have this big useless array that had everyone's actual Twitter in it. And then I'm going to slap that big array into S union store. I really like to slap by the way if you've got a place. And then in order to get the amount of things in a set it's not as straightforward as one would think. So in real math land we wouldn't get the length or size of the set we would get the card amount. So the equivalent of the length of a set is S card. So if I get the S card of that all word set right it was around 9000 I'm sure by now it's more. So that's doing some analysis on a different key and you'll see that all time if you're dealing with reds a lot. So back to that high score list thing. So here's an example of what that high score list might look like. So this is our sword set or a C set and it's basically like I said it's a hash of strings so reds allows you to do queries on ranges on basically either the keys or the scores in the sword set here. So to do that we would basically do Z range. I want the top three scores here I want to see who tweeted the most so I won't use Z rev range because for some reason it puts the highest thing on the bottom of the high score list I don't know why. So it's kind of a low score list so Z rev range will give me the last it will go basically from the bottom up. So from 0 to 2 that will give me the last three things. However that only gets me the keys it doesn't give me the scores.  In order to have it tell you that you have to give it with scores. I don't know why I need to beg it to give it the data I want but that's what happens. So hopefully you're using 1.9 right? Anybody? There we go. So that will work otherwise bring out our front of your hash draw game. So with scores we'll pull out both the key and the sword. So using this is pretty easy. I'm going to do z rev range from the bottom to 2 up so I'm going to top three and then I'm going to splat that array once again into hash brackets. The hash brackets method is really, really neat if you haven't messed around with that yet. So if you ever have an array that has an even amount of things to it which this does it's basically key score, key score, key score so it's an even thing. That hash bracket method will basically create a hash out of that array. So if I splat that array into it it knows what to do it gives you a hash tab. So that's a really neat method that I don't think enough folks use because it's just not, no one's that documented about number two. It's kind of like intention hiding because it's a good way. But it's still kind of neat. So there's a lot more stuff that's available. There's intersect and difference on the normal sets. There's also the store version I think with both of those. The z sets also have z union and z inter store. Or z inter there's just the store equivalent mostly because the reds commands are kind of waiting. There's a lot more of those reds commands along with the really neat interactive tutorial on reds.io slash command. So you can actually go in there on each different command it gives you a little tutorial and examples and you can type around and mess with it. We'll buy reds instance if you're acting right there. And believe me you can try to delete it So as an example of things that aren't kind of normal with reds is sorting keys. A lot of the questions I get when folks are trying to figure out okay how do I take this accurate record thing and model in reds the first thing I say is no and then I say well maybe you should look at this to kind of understand how to model your data. So reds has a store function that is pretty obvious in the way it works and then it kind of throws a curve like you. So let's say I have a set of user entities so I've got a set of five things it just has a bunch of numbers that I've tossed in it that represent users in my set and yes it's an order that I don't know why it just is. So if I want to sort that I just do reds.sort So you can sort that you can do it descending or ascending you can also do it with alpha so you can sort it by another index so you can kind of treat it as a separate index to pull out. So if I want to basically sort things by you can call it as the index I really don't think it is but you can basically say okay for user ID 133 I've got 300 tweets so he's the first one to come up and user ID 42 has 200 tweets so he's the second one to come up so you can basically treat these other keys as this kind of separate thing so you can sort by and that's really neat however it also gets even crazier because you can toss in a get option. So instead of just returning that original user ID list you can also retrieve an entirely different key all together it's going to just like it does with a buy option is going to replace that wildcard with the values so user ID 42 has 300 tweets he's first in the list and chat is the first result to get back since I'm doing a get with handle star and so on and so forth for Joe and Matt. So it looks like he's got a few minutes left right? So I'm going to I have another example here but I think I'm going to skip it and get interested in questions if you want to learn more about various transactions which are not at all I think at all like SQL transactions which you guys have any questions for me? No those are a bit fast if you want to learn about how this works and how to deal with the single friend of nature of us Thanks guys


Namaste. In our last session, we had started a detailed case on Hindalco Ltd. We have already prepared their profit and loss account. And if you remember, in the last session, we had done a discussion on balance sheet and you were to prepare a complete balance sheet and we were to discuss the solution today. Those of you who have missed the session, once again I will request you to download that case, take that problem, try to complete it and then have a look at the solution. Because today we will be discussing the solution of balance sheet. Are you prepared? Let us go there. Okay. So now the marks, items which were marked under NCA or CA, you have to put in a proper format and have a look at the solution. So under assets NCA, non-current assets, first fixed assets are shown. So the, we always follow the order of permanence. So most permanent asset is perhaps property, plant and equipment. And this is the note number. Those of you who really want to know more details, you can go to Hindalco annual report. Check the note number 2 for more details. The total amount is also very big, it is 39,999 crore. Next is capital work in progress, they have not given any note for it. The total amount is also relatively small, it is 736. Financial property, perhaps in our earlier balance sheets, this was not there. That is 9. Then intangible assets, there are also intangible assets under development. So these items together actually form the fixed assets of the company. Then under NCA, the next category is financial assets. So these are long-term financial assets, mainly the investments. So investment in subsidiary, you can see is the biggest amount, 16,000 crores. Investment in associates, other investments, then loans given and other financial asset. This is more refined and more latest terminology used in by the bigger companies. So have a look at this balance sheet carefully. Then non-current tax assets. So these are mainly deferred tax assets for which they have not given any note, but the total amount is given and then other non-current assets which is 861. So at this stage you get the total of total NCA's. Now let us go to current assets, inventory. After inventory, other assets have been nomenclature used for them is financial assets. So you have got other investment short-term, which is also a substantial amount, 3700 crores. Investment receivables, cash and cash equivalent, bank balances other than cash and cash equivalent. See this is also a current asset, this is also a current asset. Then why it is classified separately? It is classified because it will make difference in the cash flow statement. That is why you have to note that all bank balances may not be C and Cs. Normally we say that bank balance is a cash equivalent, which is true. But if there is some exception, it needs to be separately shown. That is how they have shown it. Then loans given short-term, other financial assets. So this is the total of financial assets from this item to this item. Then next you get current tax assets and other current assets. So this is a total of Cs and 82000 crore is a total of both 60 plus 21. That is non-current plus current getting it. So this is the asset side. Now let us go to the liability side. In liability side, the first item written is authorize share capital, although keep in mind that this is not to be taken in the total. It is just written there by way of a note, do not mistake it to take it in the total. It is the breakup of it is given like this, share capital which is paid up 222.89 which should be taken in total and other equity which is 49.227. So you get 49, 450 as the total of equity. So other equity the note is given which mainly consists of reserves and surplus. But they have used a different nomenclature. Then next is liabilities. Within liabilities you have got non-current liabilities in that again financial liabilities. So financial liabilities you can see the liabilities how they are separated here within NCL financial liabilities are given separately and provisions and tax liabilities are given separately. Because they arise from business whereas financial liabilities are in the nature of raising of funds. Now we have learned cash flow statements. So something coming from financial liability will go in the cash flow statement as a which item as not as a operating item it will be treated as a financing item that is how it has been properly classified. For smaller companies often you may not see this classification but since it is a very big company it has used more latest format. So borrowings that is the loans is the biggest amount note number 18a trade payables which is relatively very small that means they do not have much of credit purchases got it because their purchases are big but trade payables are very small. If you go for comparison with assets they have got substantial amount of trade receivables but trade payables are very small are you getting it please note this because these are non-current in nature that is very small regular trade payables are is a very big amount but we will come to it but so this is a non-current trade payables which is a small amount then other financial liabilities then we go to long term provisions deferred tax liabilities and other current other non-current liabilities. So total NCL is 2328 then we will go to current liabilities borrowings current liabilities in that financial liabilities borrowings trade payables and other current financial liabilities. Now provisions and other current liabilities current tax liabilities so total CLs are 12 whereas total NCL was 20 plus equity so both the liabilities taken together first is taken total and then the total is 80 to 728 at this stage they are disclosing the current liabilities a contingent liabilities as well as contingent asset note number one is a note for contingent liabilities are you getting me so this is about the balance sheet it looks very simple here but compare it with the answer which you have made if you are able to solve it correctly that is very good. Now let us go to the third part of the case that is for preparation of cash flow statement. So take your sheet once again and we will go for discussion of cash flow statement. It is a very long statement so be very attentive we know that there are three sections in cash flow what are the three sections first is operating investing and financing in that also operating is complicated because we have to go in a how why because we have to go in which method do we use direct or indirect we use indirect method starting from profit we do adjustments anyway right now the figures are given to you you have to just arrange them properly and there are several items which do not form part of cash flow they also you have to be careful then unrealized loss on derivative transactions where will it go next is unrealized forex loss these are unrealized items so they have no impact so we will not consider them short term liquid investment in mutual fund it is already given that it is cash equivalent so we will mark it as C C is a marking we make here for cash equivalent sale of shares in subsidiaries for this year it is dash but where will it go sale of shares so it is an investment which has been sold so we will write it as I sale of property plant equipment and intangible assets again it is I return of capital from subsidiary it is I its dash but earlier years there was some figure so what is meant by this return of capital we have invested in capital in subsidiary the subsidiary company might have returned the same but it is an investment coming back repayment of non-current borrowings so loans we have taken and we have repaid so it is a F type of transaction repayment of loans and deposits where will it go so perhaps we have taken loans and deposits and we are repaying it so we will treat it as F repayment of financial lease liability financial lease is one of the it is a type of loan it is one of the way of financing the company so it is F realized gain of cash flow on hedges in OCI this is other comprehensive income related item and it is related to cash flow hedges so we will not consider it right now sale of investment others as the name suggests it is related to sale of investment so I you can see here the amount is substantial 5000 crores purchase of property plant equipment and intangible assets is the purchase of investment so it is I profit before tax do we require it yes because in cash flow statement we are going to start with PBT and making the adjustments so we will go it mark it as O payment of current borrowings repayment of current borrowings normally borrowings we treat as F but since these are current borrowings we will treat it as O then proceeds from issue of equity shares it is F type of transaction it is a financing transaction 3 you can just read it full including share application money so share application money received or returned both will be also part of financing transaction pre payment of non current borrowings this is a big amount company had taken some loan but it is non current in nature it has been prepaid that means if the loan is taken for 10 years they have repaid it within 8 years still since it is non current in nature it is for raising of funds so we will mark it as F payment of direct taxes net of refund this is O because taxes is treated as a operating item if you remember the format we will calculate first all items and at the end we write the payment of taxes non other non operating income or expenses where will it go since it is non operating many times we feel that it may not be O but since it is income or expense it should be treated as O right now since it is dash we can ignore it. Novation and restructuring of long term borrowings where will it go what is meant by novation first of all that means existing loans the terms of loan are changed suppose the loan is taken for 5 years maybe it is changed to 8 years some type of obligation or some mortgage under it might have changed the loan terms have changed that is called as novation and restructuring of long term loans where will it be marked as should it be an F item there is neither any repayment nor any new loan taken so this is a non cash item it should not come in the cash flow statement so we will mark it as NC loans and deposits given we have given loans we are not sure whether as investment or as a borrowing but since the word given is used we will treat it as I liabilities no longer required return back that means some liabilities existed those liabilities have exhausted now so we will have to write it back that means they would be taken back to P&L account they are no longer existing as a liability so under which head we will put it as it is a non cash item so we will put it as NC see we have not repaired the loan it is just written back investment in subsidiary it is I interest received is a simple it is when we make in investment we receive income as in so we will put it as I interest income that is also I increase in non financial liabilities this is only increase in liability so should we ignore it or we should take it increase in trade and other payables increase in inventory should we take it we should because it is a part of operating item we know we start with PBT do adjustments for non operating items then do adjustments for working capital items so working capital items like trade daters and creditors they should be considered under O either you mark it as working capital or you can mark it as O right now I am just marking it as O increase in inventory also is O increase in financial liabilities also is O finance cost finance cost is of course F item but this is again tricky you can see finance cost finance cost paid so we will consider basically the finance cost paid not just the finance cost now fair value gain on modification of borrowings so they have obtained some loans those loans have been restructured and there is some fair value go again on it it is a non cash transaction so we will not take it we will just mark it as NC employee share option expenses what is employee share option employees are issued shares either as free or at a discount which they can convert into equity shares this is to incentivize the employees but for us right now it is a finance item or it is a O type of item it can go either way but we will mark it as O dividend received we have received dividend so it is an investment income we will mark it as I dividend paid including dividend distribution taxes this is a F dividend income we have received the dividend so we will mark it as I you can see the amount is coming two times dividend received dividend income so do not take it twice we should only take the amount which is actually received so I will just cut it to avoid the confusion same way here we had interest income and interest received so we should go for interest received so I will just cut it otherwise later on there will be a confusion then dividend income so we have then depreciation and amortization should it be considered yes because it is a non cash expense we add it to PBT so mark it as O deposit with bank with less than 3 months of initial maturity this is a deposit with bank so insignificant risk the maturity is also very small so we can consider it as a cash equivalent so we are marking it as C decrease in trade and other receivables this is a working capital item let us mark it as O decrease in non financial assets again let us mark it as O decrease in financial assets this is also O checks and drafts in hand checks and drafts being a day to day item as a part of bank balance this is a cash and cash equivalent so we will mark it as C cash on hand again it is C balances with current accounts in banks again it is C bad dates and provisions for doubtful dates should we consider it it is a non cash item but it will have impact on P&L so we will mark it as O acquisition of property plant and equipment by means of non cash government grant this is the acquisition of property so it looks like I but since it is by means of non cash government grants we will not consider it as a cash flow item we are marking it as NC acquisition of property by means of financial lease acquisition is being made by lease but still it is a acquisition in cash terms so we will mark it as I loss of PPE PPE refers to property plant and equipment and intangibles sold or discarded that means old fixed assets are being sold or discarded we have received some small amount of cash so it is a I gain on investments measured at FV TPL that is by fair value calculation the investment shows some gain but not a cash transaction because it is not a sale of investment so we will ignore it cash on assets held for sale sorry loss on assets held for sale shall we consider or ignore it we will need to consider it because we are following indirect method so this is a non operating type of losses so we will mark it as O we will add it to PBT now cash and cash equivalents as at the beginning net cash generated or used in operation so you are required to calculate all these figures opening cash the cash generated from operating activities then cash generated from investing activities cash generated from financing activities total decrease of cash operating profit before working capital changes and cash and cash equivalent at the end of the year now how will you do all the things it is possible because cash at the end of the year is you can take it from balance sheet then do all other calculations and by reverse working you can calculate the cash at the beginning of the year so are you ready now to prepare the cash flow statement so you can pause the video here complete the calculation and right away we will discuss talk about the solution okay I hope you are ready with the solution so I will show the solution to you just try to understand each and every term it is a very long cash flow statement so we start with PBT then adjust for lot of items remember we are going to adjust for non cash and non operating both types of items so we are adjusting for finance cost depreciation employee share option expenses mark this is a very peculiar item because it is a share related item but since it is a employee related item we show it under O not under F then bad dates long term provisions no longer required return back see mark the sign also it is a negative because it is a profit to us we are now reducing it then unrealized forex losses unrealized gains these are not directly cash flow items but since they have an impact on P and L we are considering them here then fair value gain on modification of borrowings again it is a non cash item but since that gain was included in P and L we have included it here as a negative item gain or loss on assets held for sale gain or loss on PPE interest income dividend income market the items were given two times earlier there was interest received which will be an investment item but interest income it is a operating item then dividend income non operating income or expenses realized gain on cash flow edges in OCI now this is again not directly impacting our cash but it has a impact on our P and L and it is a gain so right now we are showing it here then loss on investment held at FVTPL that is also in a way a non cash item but has an impact on P and L so we are considering it under O now after all this we get operating profit before working capital changes then we will consider all the working capital changes like increasing inventory trade and other receivable financial assets non financial assets increasing trade and other payables financial liabilities non financial liabilities so we at this stage get cash generation from operations then payment of direct taxes net of refund this is the actual tax paid we get net cash generated or used in operating activities I know it is bit longish but read it 2 3 times so that you understand how it is for a large company if your own company is also large one compare it with the cash flow of your own company next one is very simple now cash flow from investing activities but bit longish purchase of plant sale of plant investment in subsidiary sale of shares in subsidiary return of capital from subsidiary purchase or investments purchase or sale of investment repayment of loan and deposits loan and deposits given interest and received and dividend received mark here the term received here there it was interest income now it is interest actually received so we get net cash generated or used in investing activity next is financing activities proceeds from issue of shares prepayment of non current borrowing this is the biggest amount since company had lot of cash you can see here they had good cash generation they have used it for repaying their loans then repayment of non current borrowings repayment of finance lease proceeds from current borrowings which is also negative because they have repaid it then dividend paid finance cost paid so you get net cash generated or used in financial activities which is a substantial amount it is a negative amount thus company has repaid their old liabilities the net increase in cash and cash equivalent which is 2490 then you get net cash and cash flow as reported which is 1809 there is some supplementary information also regarding non cash transactions so just note it acquisition of property by means of financial lease acquisition of property of by means of non cash government grants novation and restructuring so these three are treated as non cash transactions then you get the reconciliation of cash and cash equivalent which is cash in hand cash and drafts in bank under bank there are two items current account balances and short-term deposits and short-term investments in mutual funds so here you get total so are you getting it it is big longish but the study will be very much useful to you to understand the terminology particularly the cash flow statement so we will stop here namaste then never


This paper proposes a new approach to automatically reconstruct water regions from oblique photographs taken with unmanned aerial vehicles, UAV. First, it uses an algorithm to identify the edges of water regions in the photos. Then, it constructs a triangulated irregular network, TIN, of these identified edges. Next, it selects and processes textures from the photos to match them to the TIN. Finally, the textured TIN is mapped back onto the photo, resulting in a more accurate representation of the water region. This technique has been tested on real-world data and has proven successful at quickly and accurately reconstructing water regions in 3D models of oblique photography. This article was authored by Ingo Chio, Yakin Zhao, Jiuhua Luo, and others.


What's up, everyone? It's your girl Kenzie here from Lean Sports Cards and I'm ripping up some personals for Asp and we've got to 2122 Panini mosaic basketball choice boxes best of luck here as See a nebula. How would that how would that be to end the daytime? Personals with a one-of-one nebula or a nice rookie peacock.  I would definitely add some insurance to that package Absolutely would let me drop the link for insurance real quick for you That is a really big card All right Up first we have silver rookie Franz Wagner This one here Nikky logs under Walker mosaic He's got three of eight on the black and gold Auto of Kelvin Johnson for the spurs Love the black and gold autos beautiful hit there Kelvin Johnson to eight And we've got our exclusives here. Luca Donchich on the NBA all NBA 25 of 88 Zach Levine for the bowls 44 out of 88 Wow to black and golds in one box at Wendell Carter, Jr. 7 of 8 Magic Black and gold auto and a black and gold base There you go, Asp and Our Christmas exclusives Isaiah Jackson rookie Pacers and a Davion Mitchell for the Kings Very solid first box. Wow All right last one up first. We have silver or Sean Holmes and A deer and Fox mosaic spurs magnet here. You got a Joshua primo rookie auto On the red and yellow fusion not numbered on this one and our exclusives to 88 We've got rookie of I don't soon move for the bowls 70 of 88 Bobby Portis for the bucks that one is 44 of 88 and a Robert Williams the third 50 of 88 and then our red and green exclusives as well We've got rookie Jeremiah Robinson Earl and a nice a Josh giddy Two solid boxes there for you asked congrats again. Thanks so much for your order. We'll get these right out to you