Browse Source

Merge branch 'master' of https://github.com/savetheinternet/Tinyboard

Conflicts:
	inc/config.php
	inc/display.php
	inc/functions.php
pull/40/head
czaks 11 years ago
parent
commit
146243c473
  1. 5
      README.md
  2. 18
      inc/config.php
  3. 77
      inc/display.php
  4. 90
      inc/functions.php
  5. 30
      inc/mod/pages.php
  6. 5
      js/inline-expanding.js
  7. 11
      post.php
  8. BIN
      static/flags/ad.png
  9. BIN
      static/flags/ae.png
  10. BIN
      static/flags/af.png
  11. BIN
      static/flags/ag.png
  12. BIN
      static/flags/ai.png
  13. BIN
      static/flags/al.png
  14. BIN
      static/flags/am.png
  15. BIN
      static/flags/an.png
  16. BIN
      static/flags/ao.png
  17. BIN
      static/flags/ar.png
  18. BIN
      static/flags/as.png
  19. BIN
      static/flags/at.png
  20. BIN
      static/flags/au.png
  21. BIN
      static/flags/aw.png
  22. BIN
      static/flags/ax.png
  23. BIN
      static/flags/az.png
  24. BIN
      static/flags/ba.png
  25. BIN
      static/flags/bb.png
  26. BIN
      static/flags/bd.png
  27. BIN
      static/flags/be.png
  28. BIN
      static/flags/bf.png
  29. BIN
      static/flags/bg.png
  30. BIN
      static/flags/bh.png
  31. BIN
      static/flags/bi.png
  32. BIN
      static/flags/bj.png
  33. BIN
      static/flags/bm.png
  34. BIN
      static/flags/bn.png
  35. BIN
      static/flags/bo.png
  36. BIN
      static/flags/br.png
  37. BIN
      static/flags/bs.png
  38. BIN
      static/flags/bt.png
  39. BIN
      static/flags/bv.png
  40. BIN
      static/flags/bw.png
  41. BIN
      static/flags/by.png
  42. BIN
      static/flags/bz.png
  43. BIN
      static/flags/ca.png
  44. BIN
      static/flags/cc.png
  45. BIN
      static/flags/cd.png
  46. BIN
      static/flags/cf.png
  47. BIN
      static/flags/cg.png
  48. BIN
      static/flags/ch.png
  49. BIN
      static/flags/ci.png
  50. BIN
      static/flags/ck.png
  51. BIN
      static/flags/cl.png
  52. BIN
      static/flags/cm.png
  53. BIN
      static/flags/cn.png
  54. BIN
      static/flags/co.png
  55. BIN
      static/flags/cr.png
  56. BIN
      static/flags/cs.png
  57. BIN
      static/flags/cu.png
  58. BIN
      static/flags/cv.png
  59. BIN
      static/flags/cx.png
  60. BIN
      static/flags/cy.png
  61. BIN
      static/flags/cz.png
  62. BIN
      static/flags/de.png
  63. BIN
      static/flags/dj.png
  64. BIN
      static/flags/dk.png
  65. BIN
      static/flags/dm.png
  66. BIN
      static/flags/do.png
  67. BIN
      static/flags/dz.png
  68. BIN
      static/flags/ec.png
  69. BIN
      static/flags/ee.png
  70. BIN
      static/flags/eg.png
  71. BIN
      static/flags/eh.png
  72. BIN
      static/flags/er.png
  73. BIN
      static/flags/es.png
  74. BIN
      static/flags/et.png
  75. BIN
      static/flags/fi.png
  76. BIN
      static/flags/fj.png
  77. BIN
      static/flags/fk.png
  78. BIN
      static/flags/fm.png
  79. BIN
      static/flags/fo.png
  80. BIN
      static/flags/fr.png
  81. BIN
      static/flags/ga.png
  82. BIN
      static/flags/gb.png
  83. BIN
      static/flags/gd.png
  84. BIN
      static/flags/ge.png
  85. BIN
      static/flags/gh.png
  86. BIN
      static/flags/gi.png
  87. BIN
      static/flags/gl.png
  88. BIN
      static/flags/gm.png
  89. BIN
      static/flags/gn.png
  90. BIN
      static/flags/gp.png
  91. BIN
      static/flags/gq.png
  92. BIN
      static/flags/gr.png
  93. BIN
      static/flags/gs.png
  94. BIN
      static/flags/gt.png
  95. BIN
      static/flags/gu.png
  96. BIN
      static/flags/gw.png
  97. BIN
      static/flags/gy.png
  98. BIN
      static/flags/hk.png
  99. BIN
      static/flags/hn.png
  100. BIN
      static/flags/hr.png

5
README.md

@ -10,9 +10,8 @@ It contains many changes from original Tinyboard, mainly in frontend area.
About
------------
Tinyboard is a light-weight, fast, highly configurable and user-friendly
imageboard software package released under a non-restrictive open-source
license. It is written in PHP and has few dependencies.
Tinyboard is a free light-weight, fast, highly configurable and user-friendly
imageboard software package. It is written in PHP and has few dependencies.
Requirements
------------

18
inc/config.php

@ -391,6 +391,11 @@
// When true, users are instead presented a selectbox for email. Contains, blank, noko and sage.
$config['field_email_selectbox'] = false;
// Attach country flags to posts. Requires the PHP "geoip" extension to be installed:
// http://www.php.net/manual/en/intro.geoip.php. In the future, maybe I will find and include a proper
// pure-PHP geolocation library.
$config['country_flags'] = false;
// Require users to see the ban page at least once for a ban even if it has since expired.
$config['require_ban_view'] = true;
@ -760,6 +765,17 @@
// Optional HTML to append to "You are banned" pages. For example, you could include instructions and/or
// a link to an email address or IRC chat room to appeal the ban.
$config['ban_page_extra'] = '';
// Display flags (when available). This config option has no effect unless poster flags are enabled (see
// $config['country_flags']). Disable this if you want all previously-assigned flags to be hidden.
$config['display_flags'] = true;
// Location of post flags/icons (where "%s" is the flag name). Defaults to static/flags/%s.png.
// $config['uri_flags'] = 'http://static.example.org/flags/%s.png';
// Width and height (and more?) of post flags. Can be overridden with the Tinyboard post modifier:
// <tinyboard flag style>.
$config['flag_style'] = 'width:16px;height:11px;';
/*
* ====================
@ -970,7 +986,7 @@
// $config['url_favicon'] = '/favicon.gif';
// EXPERIMENTAL: Try not to build pages when we shouldn't have to.
$config['try_smarter'] = false;
$config['try_smarter'] = true;
/*
* ====================

77
inc/display.php

@ -271,36 +271,25 @@ function embed_html($link) {
}
class Post {
public function __construct($id, $thread, $subject, $email, $name, $trip, $capcode, $body, $time, $thumb, $thumbx, $thumby, $file, $filex, $filey, $filesize, $filename, $ip, $embed, $root=null, $mod=false) {
public function __construct($post, $root=null, $mod=false) {
global $config;
if (!isset($root))
$root = &$config['root'];
$this->id = $id;
$this->thread = $thread;
$this->subject = utf8tohtml($subject);
$this->email = $email;
$this->name = utf8tohtml($name);
$this->trip = $trip;
$this->capcode = $capcode;
$this->body = $body;
$this->time = $time;
$this->thumb = $thumb;
$this->thumbx = $thumbx;
$this->thumby = $thumby;
$this->file = $file;
$this->filex = $filex;
$this->filey = $filey;
$this->filesize = $filesize;
$this->filename = $filename;
$this->ip = $ip;
$this->embed = $embed;
$this->root = $root;
foreach ($post as $key => $value) {
$this->{$key} = $value;
}
$this->subject = utf8tohtml($this->subject);
$this->name = utf8tohtml($this->name);
$this->mod = $mod;
$this->root = $root;
if ($this->embed)
$this->embed = embed_html($this->embed);
$this->modifiers = extract_modifiers($this->body_nomarkup);
if ($this->mod)
// Fix internal links
// Very complicated regex
@ -373,42 +362,30 @@ class Post {
};
class Thread {
public function __construct($id, $subject, $email, $name, $trip, $capcode, $body, $time, $thumb, $thumbx, $thumby, $file, $filex, $filey, $filesize, $filename, $ip, $sticky, $locked, $bumplocked, $embed, $root=null, $mod=false, $hr=true) {
public function __construct($post, $root = null, $mod = false, $hr = true) {
global $config;
if (!isset($root))
$root = &$config['root'];
$this->id = $id;
$this->subject = utf8tohtml($subject);
$this->email = $email;
$this->name = utf8tohtml($name);
$this->trip = $trip;
$this->capcode = $capcode;
$this->body = $body;
$this->time = $time;
$this->thumb = $thumb;
$this->thumbx = $thumbx;
$this->thumby = $thumby;
$this->file = $file;
$this->filex = $filex;
$this->filey = $filey;
$this->filesize = $filesize;
$this->filename = $filename;
$this->omitted = 0;
$this->omitted_images = 0;
$this->posts = array();
$this->ip = $ip;
$this->sticky = $sticky;
$this->locked = $locked;
$this->bumplocked = $bumplocked;
$this->embed = $embed;
$this->root = $root;
foreach ($post as $key => $value) {
$this->{$key} = $value;
}
$this->subject = utf8tohtml($this->subject);
$this->name = utf8tohtml($this->name);
$this->mod = $mod;
$this->root = $root;
$this->hr = $hr;
$this->posts = array();
$this->omitted = 0;
$this->omitted_images = 0;
if ($this->embed)
$this->embed = embed_html($this->embed);
$this->modifiers = extract_modifiers($this->body_nomarkup);
if ($this->mod)
// Fix internal links
// Very complicated regex
@ -471,7 +448,7 @@ class Thread {
$built .= ' <a title="'._('Make thread sticky').'" href="?/' . secure_link($board['dir'] . 'sticky/' . $this->id) . '">' . $config['mod']['link_sticky'] . '</a>';
if (hasPermission($config['mod']['bumplock'], $board['uri'], $this->mod))
if ($this->bumplocked)
if ($this->sage)
$built .= ' <a title="'._('Allow thread to be bumped').'" href="?/' . secure_link($board['dir'] . 'bumpunlock/' . $this->id) . '">' . $config['mod']['link_bumpunlock'] . '</a>';
else
$built .= ' <a title="'._('Prevent thread from being bumped').'" href="?/' . secure_link($board['dir'] . 'bumplock/' . $this->id) . '">' . $config['mod']['link_bumplock'] . '</a>';
@ -496,10 +473,6 @@ class Thread {
return $built;
}
public function ratio() {
return fraction($this->filex, $this->filey, ':');
}
public function build($index=false, $isnoko50=false) {
global $board, $config, $debug;

90
inc/functions.php

@ -153,6 +153,8 @@ function loadConfig() {
$config['url_javascript'] = $config['root'] . $config['file_script'];
if (!isset($config['additional_javascript_url']))
$config['additional_javascript_url'] = $config['root'];
if (!isset($config['uri_flags']))
$config['uri_flags'] = $config['root'] . 'static/flags/%s.png';
if ($config['root_file']) {
chdir($config['root_file']);
@ -1052,11 +1054,7 @@ function index($page, $mod=false) {
$threads = array();
while ($th = $query->fetch(PDO::FETCH_ASSOC)) {
$thread = new Thread(
$th['id'], $th['subject'], $th['email'], $th['name'], $th['trip'], $th['capcode'], $th['body'], $th['time'], $th['thumb'],
$th['thumbwidth'], $th['thumbheight'], $th['file'], $th['filewidth'], $th['fileheight'], $th['filesize'], $th['filename'], $th['ip'],
$th['sticky'], $th['locked'], $th['sage'], $th['embed'], $mod ? '?/' : $config['root'], $mod
);
$thread = new Thread($th, $mod ? '?/' : $config['root'], $mod);
if ($config['cache']['enabled'] && $cached = cache::get("thread_index_{$board['uri']}_{$th['id']}")) {
$replies = $cached['replies'];
@ -1088,11 +1086,7 @@ function index($page, $mod=false) {
if ($po['file'])
$num_images++;
$thread->add(new Post(
$po['id'], $th['id'], $po['subject'], $po['email'], $po['name'], $po['trip'], $po['capcode'], $po['body'], $po['time'],
$po['thumb'], $po['thumbwidth'], $po['thumbheight'], $po['file'], $po['filewidth'], $po['fileheight'], $po['filesize'],
$po['filename'], $po['ip'], $po['embed'], $mod ? '?/' : $config['root'], $mod)
);
$thread->add(new Post($po, $mod ? '?/' : $config['root'], $mod));
}
if ($omitted) {
@ -1496,55 +1490,33 @@ function unicodify($body) {
return $body;
}
function extract_modifiers($body) {
$modifiers = array();
if (preg_match_all('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@us', $body, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
if (preg_match('/^escape /', $match[1]))
continue;
$modifiers[$match[1]] = html_entity_decode($match[2]);
}
}
return $modifiers;
}
function markup(&$body, $track_cites = false) {
global $board, $config, $markup_urls;
$modifiers = extract_modifiers($body);
$body = preg_replace('@<tinyboard ([\w\s]+)>(.+?)</tinyboard>@us', '', $body);
if (isset($modifiers['raw html']) && $modifiers['raw html'] == '1')
return $body;
$body = str_replace("\r", '', $body);
$body = utf8tohtml($body);
if (preg_match_all('@&lt;tinyboard ([\w\s]+)&gt;(.+?)&lt;/tinyboard&gt;@us', $body, $modifiers, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) {
$skip_chars = 0;
$body_tmp = $body;
$end_markup = false;
foreach ($modifiers as $modifier) {
// preg_match_all is not multibyte-safe
foreach ($modifier as &$match) {
$match[1] = mb_strlen(substr($body_tmp, 0, $match[1]));
}
$modifier['type'] = $modifier[1][0];
$modifier['content'] = $modifier[2][0];
if ($modifier['type'] == 'ban message') {
// Public ban message
$replacement = sprintf($config['mod']['ban_message'], html_entity_decode($modifier['content']));
if ($end_markup) {
$body .= $replacement;
}
} elseif ($modifier['type'] == 'raw html') {
$body = html_entity_decode($modifier['content']);
$replacement = '';
$end_markup = true;
} elseif (preg_match('/^escape /', $modifier['type'])) {
// Escaped (not a real modifier)
$replacement = '&lt;tinyboard ' . substr($modifier['type'], strlen('escape ')) . '&gt;' . $modifier['content'] . '&lt;/tinyboard&gt;';
} else {
// Unknown
$replacement = '';
}
if (!$end_markup) {
$body = mb_substr_replace($body, $replacement, $modifier[0][1] + $skip_chars, mb_strlen($modifier[0][0]));
$skip_chars += mb_strlen($replacement) - mb_strlen($modifier[0][0]);
}
}
if ($end_markup) {
return array();
}
}
if (mysql_version() < 50503)
$body = mb_encode_numericentity($body, array(0x010000, 0xffffff, 0, 0xffffff), 'UTF-8');
@ -1759,17 +1731,9 @@ function buildThread($id, $return = false, $mod = false) {
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
if (!isset($thread)) {
$thread = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'], $post['time'],
$post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'], $post['fileheight'], $post['filesize'],
$post['filename'], $post['ip'], $post['sticky'], $post['locked'], $post['sage'], $post['embed'], $mod ? '?/' : $config['root'], $mod
);
$thread = new Thread($post, $mod ? '?/' : $config['root'], $mod);
} else {
$thread->add(new Post(
$post['id'], $thread->id, $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'],
$post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'], $post['fileheight'],
$post['filesize'], $post['filename'], $post['ip'], $post['embed'], $mod ? '?/' : $config['root'], $mod)
);
$thread->add(new Post($post, $mod ? '?/' : $config['root'], $mod));
}
}

30
inc/mod/pages.php

@ -790,19 +790,9 @@ function mod_page_ip($ip) {
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
if (!$post['thread']) {
// TODO: There is no reason why this should be such a fucking mess.
$po = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'],
$post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['sticky'], $post['locked'],
$post['sage'], $post['embed'], '?/', $mod, false
);
$po = new Thread($post, '?/', $mod, false);
} else {
$po = new Post(
$post['id'], $post['thread'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'],
$post['body'], $post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['embed'], '?/', $mod
);
$po = new Post($post, '?/', $mod);
}
if (!isset($args['posts'][$board['uri']]))
@ -1398,7 +1388,7 @@ function mod_edit_post($board, $edit_raw_html, $postID) {
$query->bindValue(':subject', $_POST['subject']);
$query->bindValue(':body', $_POST['body']);
if ($edit_raw_html) {
$body_nomarkup = '<tinyboard raw html>' . $_POST['body'] . '</tinyboard>';
$body_nomarkup = $_POST['body'] . '<tinyboard raw html>1</tinyboard>';
$query->bindValue(':body_nomarkup', $body_nomarkup);
}
$query->execute() or error(db_error($query));
@ -2012,19 +2002,9 @@ function mod_reports() {
if (!$post['thread']) {
// Still need to fix this:
$po = new Thread(
$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'],
$post['capcode'], $post['body'], $post['time'], $post['thumb'],
$post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['sticky'],
$post['locked'], $post['sage'], $post['embed'], '?/', $mod, false
);
$po = new Thread($post, '?/', $mod, false);
} else {
$po = new Post(
$post['id'], $post['thread'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'],
$post['body'], $post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'],
$post['fileheight'], $post['filesize'], $post['filename'], $post['ip'], $post['embed'], '?/', $mod
);
$po = new Post($post, '?/', $mod);
}
// a little messy and inefficient

5
js/inline-expanding.js

@ -16,10 +16,7 @@ onready(function(){
var link = this.getElementsByTagName('a');
for (var i = 0; i < link.length; i++) {
if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') {
if (window.jQuery && !$(link).prev().hasClass('fileinfo')) {
continue;
}
if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].childNodes[0].className.match(/post-image/)) {
link[i].childNodes[0].style.maxWidth = '95%';
link[i].onclick = function(e) {
if (this.childNodes[0].className == 'hidden')

11
post.php

@ -424,7 +424,16 @@ if (isset($_POST['delete'])) {
$post['body'] = escape_markup_modifiers($post['body']);
if ($mod && isset($post['raw']) && $post['raw']) {
$post['body'] = '<tinyboard raw html>' . $post['body'] . '</tinyboard>';
$post['body'] .= '<tinyboard raw html>1</tinyboard>';
}
if ($config['country_flags']) {
if (!geoip_db_avail(GEOIP_COUNTRY_EDITION)) {
error('GeoIP not available: ' . geoip_db_filename(GEOIP_COUNTRY_EDITION));
}
if ($country_code = @geoip_country_code_by_name($_SERVER['REMOTE_ADDR'])) {
$post['body'] .= '<tinyboard flag>' . strtolower($country_code) . '</tinyboard>';
}
}
if (mysql_version() >= 50503) {

BIN
static/flags/ad.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
static/flags/ae.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

BIN
static/flags/af.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

BIN
static/flags/ag.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
static/flags/ai.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
static/flags/al.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
static/flags/am.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
static/flags/an.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

BIN
static/flags/ao.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
static/flags/ar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

BIN
static/flags/as.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

BIN
static/flags/at.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
static/flags/au.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
static/flags/aw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

BIN
static/flags/ax.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

BIN
static/flags/az.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
static/flags/ba.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
static/flags/bb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

BIN
static/flags/bd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

BIN
static/flags/be.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

BIN
static/flags/bf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
static/flags/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

BIN
static/flags/bh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

BIN
static/flags/bi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

BIN
static/flags/bj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

BIN
static/flags/bm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
static/flags/bn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

BIN
static/flags/bo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
static/flags/br.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
static/flags/bs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

BIN
static/flags/bt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
static/flags/bv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

BIN
static/flags/bw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

BIN
static/flags/by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

BIN
static/flags/bz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
static/flags/ca.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

BIN
static/flags/cc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
static/flags/cd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

BIN
static/flags/cf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

BIN
static/flags/cg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

BIN
static/flags/ch.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

BIN
static/flags/ci.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
static/flags/ck.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

BIN
static/flags/cl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

BIN
static/flags/cm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

BIN
static/flags/cn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

BIN
static/flags/co.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

BIN
static/flags/cr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

BIN
static/flags/cs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

BIN
static/flags/cu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

BIN
static/flags/cv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

BIN
static/flags/cx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

BIN
static/flags/cy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

BIN
static/flags/cz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

BIN
static/flags/de.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/dj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

BIN
static/flags/dk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

BIN
static/flags/dm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

BIN
static/flags/do.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

BIN
static/flags/dz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

BIN
static/flags/ec.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
static/flags/ee.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

BIN
static/flags/eg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

BIN
static/flags/eh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

BIN
static/flags/er.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
static/flags/es.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

BIN
static/flags/et.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

BIN
static/flags/fi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
static/flags/fj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

BIN
static/flags/fk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

BIN
static/flags/fm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

BIN
static/flags/fo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

BIN
static/flags/fr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/ga.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
static/flags/gb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

BIN
static/flags/gd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

BIN
static/flags/ge.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

BIN
static/flags/gh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

BIN
static/flags/gi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

BIN
static/flags/gl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

BIN
static/flags/gm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

BIN
static/flags/gn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

BIN
static/flags/gp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

BIN
static/flags/gq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

BIN
static/flags/gr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

BIN
static/flags/gs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

BIN
static/flags/gt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

BIN
static/flags/gu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

BIN
static/flags/gw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

BIN
static/flags/gy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
static/flags/hk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

BIN
static/flags/hn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

BIN
static/flags/hr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save