2003 FIBA Europe Under-16 Championship

The 2003 FIBA Europe Under-16 Championship (known at that time as 2003 European Championship for Cadets) was the 17th edition of the FIBA Europe Under-16 Championship. The city of Madrid, in Spain, hosted the tournament. Serbia and Montenegro won the trophy for the fourth time in a row.

2003 EuroBasket Under-16
17th FIBA Europe Under-16 Championship
Tournament details
Host nationSpain
Dates18–27 July 2003
Teams12 
(from 1 federations)
Champions Serbia and Montenegro
(4th title)
MVP Nemanja Aleksandrov
Tournament leaders
PlayersTeams
Points Luigi Da Tome (21.1)  Serbia and Montenegro (89.6)
Rebounds José Ángel Antelo (13.8)  Italy (42.0)
Assists Cenk Akyol (3.0)  Serbia and Montenegro (10.4)
Official website
< 2001
2004 >

Teams

  •  Bulgaria
  •  France
  •  Macedonia
  •  Greece
  •  Israel
  •  Italy
  •  Lithuania
  •  Russia
  •  Serbia and Montenegro
  •  Slovenia
  •  Spain
  •  Turkey

Qualification

There were two qualifying rounds for this tournament. Twenty-four national teams entered the qualifying round. Fifteen teams advanced to the Challenge Round, where they joined Lithuania, Greece and France. The remaining eighteen teams were allocated in three groups of six teams each. The three top teams of each group joined Serbia and Montenegro (title holder), Russia (runner-up) and Spain (host) in the final tournament.

Preliminary round

The twelve teams were allocated in two groups of six teams each.

     Team advanced to Quarterfinals
     Team competed in 9th–12th playoffs

Group A

Team Pld W L PF PA Pts
 Turkey 55041732110
 Russia 5413983669
 France 5324203788
 Macedonia 5233693457
 Lithuania 5143354266
 Bulgaria 5053154185

Group B

Team Pld W L PF PA Pts
 Serbia and Montenegro 55045932910
 Spain 5323493658
 Slovenia 5233293347
 Greece 5233153637
 Italy 5233273347
 Israel 5143213756

Knockout stage

9th–12th playoffs

 
PlayoffsNinth place
 
      
 
 
 
 
 Lithuania63
 
 
 
 Israel68
 
 Israel52
 
 
 
 Italy69
 
 Bulgaria88
 
 
 Italy97
 
Eleventh place
 
 
 
 
 
 Lithuania101
 
 
 Bulgaria54

Championship

 
QuarterfinalsSemifinalsFinal
 
          
 
 
 
 
 France66
 
 
 
 Spain71
 
 Spain74
 
 
 
 Turkey76
 
 Turkey79
 
 
 
 Greece71
 
 Turkey68
 
 
 
 Serbia and Montenegro83
 
 Slovenia68
 
 
 
 Russia104
 
 Russia63
 
 
 
 Serbia and Montenegro89 Third place
 
 Serbia and Montenegro86
 
 
 
 Macedonia58
 
 Spain70
 
 
 Russia92
 

5th–8th playoffs

 
PlayoffsFifth place
 
      
 
 
 
 
 France80
 
 
 
 Greece60
 
 France60
 
 
 
 Slovenia54
 
 Slovenia58
 
 
 Macedonia55
 
Seventh place
 
 
 
 
 
 Greece59
 
 
 Macedonia70

Final standings

gollark: I can come up with a thing to transmit ubqmachine™ details to osmarks.net or whatever which people can embed in their code.
gollark: It's an x86-64 system using debian or something.
gollark: > `import hashlib`Hashlib is still important!> `for entry, ubq323 in {**globals(), **__builtins__, **sys.__dict__, **locals(), CONSTANT: Entry()}.items():`Iterate over a bunch of things. I think only the builtins and globals are actually used.The stuff under here using `blake2s` stuff is actually written to be ridiculously unportable, to hinder analysis. This caused issues when trying to run it, so I had to hackily patch in the `/local` thing a few minutes before the deadline.> `for PyObject in gc.get_objects():`When I found out that you could iterate over all objects ever, this had to be incorporated somehow. This actually just looks for some random `os` function, and when it finds it loads the obfuscated code.> `F, G, H, I = typing(lookup[7]), typing(lookup[8]), __import__("functools"), lambda h, i, *a: F(G(h, i))`This is just a convoluted way to define `enumerate(range))` in one nice function.> `print(len(lookup), lookup[3], typing(lookup[3])) #`This is what actually loads the obfuscated stuff. I think.> `class int(typing(lookup[0])):`Here we subclass `complex`. `complex` is used for 2D coordinates within the thing, so I added some helper methods, such as `__iter__`, allowing unpacking of complex numbers into real and imaginary parts, `abs`, which generates a complex number a+ai, and `ℝ`, which provvides the floored real parts of two things.> `class Mаtrix:`This is where the magic happens. It actually uses unicode homoglyphs again, for purposes.> `self = typing("dab7d4733079c8be454e64192ce9d20a91571da25fc443249fc0be859b227e5d")`> `rows = gc`I forgot what exactly the `typing` call is looking up, but these aren't used for anything but making the fake type annotations work.> `def __init__(rows: self, self: rows):`This slightly nonidiomatic function simply initializes the matrix's internals from the 2D array used for inputs.> `if 1 > (typing(lookup[1]) in dir(self)):`A convoluted way to get whether something has `__iter__` or not.
gollark: If you guess randomly the chance of getting none right is 35%ish.
gollark: Anyway, going through #12 in order:> `import math, collections, random, gc, hashlib, sys, hashlib, smtplib, importlib, os.path, itertools, hashlib`> `import hashlib`We need some libraries to work with. Hashlib is very important, so to be sure we have hashlib we make sure to keep importing it.> `ℤ = int`> `ℝ = float`> `Row = "__iter__"`Create some aliases for int and float to make it mildly more obfuscated. `Row` is not used directly in anywhere significant.> `lookup = [...]`These are a bunch of hashes used to look up globals/objects. Some of them are not actually used. There is deliberately a comma missing, because of weird python string concattey things.```pythondef aes256(x, X): import hashlib A = bytearray() for Α, Ҙ in zip(x, hashlib.shake_128(X).digest(x.__len__())): A.append(Α ^ Ҙ) import zlib, marshal, hashlib exec(marshal.loads(zlib.decompress(A)))```Obviously, this is not actual AES-256. It is abusing SHAKE-128's variable length digests to implement what is almost certainly an awful stream cipher. The arbitrary-length hash of our key, X, is XORed with the data. Finally, the result of this is decompressed, loaded (as a marshalled function, which is extremely unportable bytecode I believe), and executed. This is only used to load one piece of obfuscated code, which I may explain later.> `class Entry(ℝ):`This is also only used once, in `typing` below. Its `__init__` function implements Rule 110 in a weird and vaguely golfy way involving some sets and bit manipulation. It inherits from float, but I don't think this does much.> `#raise SystemExit(0)`I did this while debugging the rule 110 but I thought it would be fun to leave it in.> `def typing(CONSTANT: __import__("urllib3")):`This is an obfuscated way to look up objects and load our obfuscated code.> `return getattr(Entry, CONSTANT)`I had significant performance problems, so this incorporates a cache. This was cooler™️ than dicts.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.