Collection of themes/skins for the Fossil SCM. Public write access, just make an account.

⌈⌋ branch:  Fossil Skins Extra


Hex Artifact Content

Artifact f02b7ea13bab666dc43f6d915c2f30d9380e2de1:

  • File github.txt — part of check-in [2cc887f0ca] at 2018-06-04 05:19:42 on branch trunk — Fix for /tree lacking parameters [926d2b80d8] (user: mario size: 32270)

0000: 23 20 46 6f 73 73 69 6c 20 73 6b 69 6e 20 63 6f  # Fossil skin co
0010: 6e 66 69 67 75 72 61 74 69 6f 6e 20 22 67 69 74  nfiguration "git
0020: 68 75 62 22 20 66 6f 72 20 73 69 6d 70 6c 65 20  hub" for simple 
0030: 60 66 6f 73 73 69 6c 20 69 6d 70 6f 72 74 20 73  `fossil import s
0040: 6b 69 6e 2e 74 78 74 60 0a 23 20 32 30 31 36 2d  kin.txt`.# 2016-
0050: 30 39 2d 30 34 54 31 32 2d 32 38 2d 32 39 5a 0a  09-04T12-28-29Z.
0060: 23 0a 63 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67  #.config /config
0070: 20 31 30 36 35 32 0a 31 34 37 32 39 39 32 31 30   10652.147299210
0080: 39 20 27 63 73 73 27 20 76 61 6c 75 65 20 27 2f  9 'css' value '/
0090: 2a 20 66 6f 6e 74 73 20 2a 2f 0a 40 69 6d 70 6f  * fonts */.@impo
00a0: 72 74 20 75 72 6c 28 68 74 74 70 3a 2f 2f 66 6f  rt url(http://fo
00b0: 6e 74 73 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63  nts.googleapis.c
00c0: 6f 6d 2f 63 73 73 3f 66 61 6d 69 6c 79 3d 56 69  om/css?family=Vi
00d0: 67 61 29 3b 0a 0a 2f 2a 20 6e 6f 20 62 6f 64 79  ga);../* no body
00e0: 20 73 70 61 63 69 6e 67 20 2a 2f 0a 68 74 6d 6c   spacing */.html
00f0: 2c 20 62 6f 64 79 20 7b 0a 20 20 20 62 6f 72 64  , body {.   bord
0100: 65 72 3a 20 30 3b 20 70 61 64 64 69 6e 67 3a 20  er: 0; padding: 
0110: 30 3b 20 6d 61 72 67 69 6e 3a 20 30 3b 0a 20 20  0; margin: 0;.  
0120: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 66 65   background: #fe
0130: 66 65 66 65 3b 0a 20 20 20 66 6f 6e 74 3a 20 6e  fefe;.   font: n
0140: 6f 72 6d 61 6c 20 6e 6f 72 6d 61 6c 20 34 30 30  ormal normal 400
0150: 20 31 30 70 74 2f 31 36 70 74 20 41 72 69 61 6c   10pt/16pt Arial
0160: 2c 73 61 6e 73 2d 73 65 72 69 66 3b 0a 20 20 20  ,sans-serif;.   
0170: 6d 61 78 2d 77 69 64 74 68 3a 20 31 36 30 30 70  max-width: 1600p
0180: 78 3b 0a 7d 0a 68 74 6d 6c 2c 20 2a 20 7b 0a 20  x;.}.html, * {. 
0190: 20 20 62 6f 78 2d 73 69 7a 69 6e 67 3a 20 62 6f    box-sizing: bo
01a0: 72 64 65 72 2d 62 6f 78 3b 20 0a 7d 0a 2f 2a 20  rder-box; .}./* 
01b0: 67 65 6e 65 72 61 6c 20 74 65 78 74 20 73 65 74  general text set
01c0: 74 69 6e 67 73 20 2a 2f 0a 62 6f 64 79 2c 20 61  tings */.body, a
01d0: 72 74 69 63 6c 65 2c 20 70 20 7b 0a 20 20 20 63  rticle, p {.   c
01e0: 6f 6c 6f 72 3a 20 23 33 33 33 3b 0a 20 20 20 6c  olor: #333;.   l
01f0: 69 6e 65 2d 68 65 69 67 68 74 3a 20 31 34 35 25  ine-height: 145%
0200: 3b 0a 7d 0a 0a 2f 2a 20 6c 61 79 6f 75 74 20 66  ;.}../* layout f
0210: 65 61 74 75 72 65 73 20 2a 2f 0a 2e 77 69 64 74  eatures */..widt
0220: 68 2d 63 6f 6e 74 61 69 6e 65 72 20 7b 0a 20 20  h-container {.  
0230: 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a 20 31   padding-left: 1
0240: 35 25 20 21 69 6d 70 6f 72 74 61 6e 74 3b 0a 20  5% !important;. 
0250: 20 20 70 61 64 64 69 6e 67 2d 72 69 67 68 74 3a    padding-right:
0260: 20 31 35 25 20 21 69 6d 70 6f 72 74 61 6e 74 3b   15% !important;
0270: 20 0a 7d 0a 2e 74 65 78 74 2d 73 68 61 64 6f 77   .}..text-shadow
0280: 20 7b 0a 20 20 20 74 65 78 74 2d 73 68 61 64 6f   {.   text-shado
0290: 77 3a 20 30 70 78 20 31 70 78 20 30 70 78 20 23  w: 0px 1px 0px #
02a0: 38 38 38 3b 0a 7d 0a 2e 67 6c 79 70 68 20 7b 0a  888;.}..glyph {.
02b0: 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20     font-family: 
02c0: 22 53 79 6d 62 6f 6c 61 22 2c 20 22 41 72 69 61  "Symbola", "Aria
02d0: 6c 20 55 6e 69 63 6f 64 65 20 4d 53 22 2c 20 22  l Unicode MS", "
02e0: 51 75 69 76 69 72 61 22 2c 20 22 43 6f 64 65 32  Quivira", "Code2
02f0: 30 30 22 2c 20 20 73 61 6e 73 2d 73 65 72 69 66  00",  sans-serif
0300: 3b 0a 7d 0a 0a 2f 2a 20 6d 65 6e 75 20 6c 61 79  ;.}../* menu lay
0310: 6f 75 74 20 2a 2f 0a 23 6d 65 6e 75 2d 68 65 61  out */.#menu-hea
0320: 64 65 72 20 7b 0a 20 20 20 62 61 63 6b 67 72 6f  der {.   backgro
0330: 75 6e 64 3a 20 23 66 37 66 37 66 37 3b 0a 7d 0a  und: #f7f7f7;.}.
0340: 23 6d 65 6e 75 2d 68 65 61 64 65 72 2c 20 23 73  #menu-header, #s
0350: 75 62 6d 65 6e 75 2d 68 65 61 64 65 72 2c 20 23  ubmenu-header, #
0360: 70 72 6f 6a 65 63 74 2d 68 65 61 64 65 72 2c 20  project-header, 
0370: 23 66 6f 73 73 69 6c 2d 66 6f 6f 74 65 72 20 7b  #fossil-footer {
0380: 0a 20 20 20 77 69 64 74 68 3a 20 31 30 30 25 3b  .   width: 100%;
0390: 0a 20 20 20 68 65 69 67 68 74 3a 20 35 30 70 74  .   height: 50pt
03a0: 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 31 30  ;.   padding: 10
03b0: 70 74 3b 0a 20 20 20 70 61 64 64 69 6e 67 2d 74  pt;.   padding-t
03c0: 6f 70 3a 20 31 34 70 74 3b 0a 20 20 20 62 6f 72  op: 14pt;.   bor
03d0: 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 70 78 20  der-bottom: 1px 
03e0: 73 6f 6c 69 64 20 23 64 66 64 66 64 66 3b 0a 20  solid #dfdfdf;. 
03f0: 20 20 64 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b    display: block
0400: 3b 0a 20 20 20 63 6c 65 61 72 3a 20 62 6f 74 68  ;.   clear: both
0410: 3b 0a 20 20 20 76 65 72 74 69 63 61 6c 2d 61 6c  ;.   vertical-al
0420: 69 67 6e 3a 20 6d 69 64 64 6c 65 3b 0a 7d 0a 23  ign: middle;.}.#
0430: 6d 65 6e 75 2d 68 65 61 64 65 72 20 68 31 20 7b  menu-header h1 {
0440: 0a 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a  .   font-family:
0450: 20 56 69 67 61 3b 0a 20 20 20 66 6f 6e 74 2d 77   Viga;.   font-w
0460: 65 69 67 68 74 3a 20 37 30 30 3b 0a 20 20 20 64  eight: 700;.   d
0470: 69 73 70 6c 61 79 3a 20 69 6e 6c 69 6e 65 3b 0a  isplay: inline;.
0480: 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 32 33     font-size: 23
0490: 70 74 3b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 33  pt;.   color: #3
04a0: 33 33 3b 0a 20 20 20 6d 61 72 67 69 6e 3a 20 33  33;.   margin: 3
04b0: 70 74 20 31 38 70 74 20 30 20 30 3b 0a 20 20 20  pt 18pt 0 0;.   
04c0: 66 6c 6f 61 74 3a 20 6c 65 66 74 3b 0a 7d 0a 0a  float: left;.}..
04d0: 2f 2a 20 73 65 61 72 63 68 20 62 61 72 20 2a 2f  /* search bar */
04e0: 0a 23 73 65 61 72 63 68 5f 66 6f 72 6d 20 7b 0a  .#search_form {.
04f0: 20 20 20 64 69 73 70 6c 61 79 3a 20 69 6e 6c 69     display: inli
0500: 6e 65 3b 0a 7d 0a 23 73 65 61 72 63 68 5f 66 6f  ne;.}.#search_fo
0510: 72 6d 20 7b 0a 20 20 20 64 69 73 70 6c 61 79 3a  rm {.   display:
0520: 20 69 6e 6c 69 6e 65 2d 62 6f 78 3b 0a 20 20 20   inline-box;.   
0530: 70 61 64 64 69 6e 67 3a 20 30 3b 0a 20 20 20 68  padding: 0;.   h
0540: 65 69 67 68 74 3a 20 33 30 70 78 3b 0a 20 20 20  eight: 30px;.   
0550: 6c 69 6e 65 2d 68 65 69 67 68 74 3a 20 33 30 70  line-height: 30p
0560: 78 3b 0a 7d 0a 23 73 65 61 72 63 68 5f 66 6f 72  x;.}.#search_for
0570: 6d 20 69 6e 70 75 74 2c 20 23 73 65 61 72 63 68  m input, #search
0580: 5f 66 6f 72 6d 20 73 65 6c 65 63 74 20 7b 0a 20  _form select {. 
0590: 20 20 70 61 64 64 69 6e 67 3a 20 33 70 78 3b 0a    padding: 3px;.
05a0: 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73     border: 1px s
05b0: 6f 6c 69 64 20 23 63 63 63 3b 0a 7d 0a 23 73 65  olid #ccc;.}.#se
05c0: 61 72 63 68 5f 66 6f 72 6d 20 73 65 6c 65 63 74  arch_form select
05d0: 2c 20 23 73 65 61 72 63 68 5f 66 6f 72 6d 20 6f  , #search_form o
05e0: 70 74 69 6f 6e 20 7b 0a 20 20 20 62 61 63 6b 67  ption {.   backg
05f0: 72 6f 75 6e 64 3a 20 23 65 65 65 3b 0a 7d 0a 23  round: #eee;.}.#
0600: 73 65 61 72 63 68 5f 66 6f 72 6d 20 69 6e 70 75  search_form inpu
0610: 74 3a 66 6f 63 75 73 2c 20 23 73 65 61 72 63 68  t:focus, #search
0620: 5f 66 6f 72 6d 20 73 65 6c 65 63 74 3a 66 6f 63  _form select:foc
0630: 75 73 20 7b 0a 20 20 62 6f 78 2d 73 68 61 64 6f  us {.  box-shado
0640: 77 3a 20 30 20 30 20 35 70 78 20 72 67 62 61 28  w: 0 0 5px rgba(
0650: 38 31 2c 20 32 30 33 2c 20 32 33 38 2c 20 31 29  81, 203, 238, 1)
0660: 3b 0a 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20  ;.  border: 1px 
0670: 73 6f 6c 69 64 20 72 67 62 61 28 38 31 2c 20 32  solid rgba(81, 2
0680: 30 33 2c 20 32 33 38 2c 20 31 29 3b 20 20 0a 7d  03, 238, 1);  .}
0690: 0a 0a 0a 2f 2a 20 6d 65 6e 75 20 6c 69 6e 6b 73  .../* menu links
06a0: 20 2a 2f 0a 23 6d 65 6e 75 2d 68 65 61 64 65 72   */.#menu-header
06b0: 20 61 20 7b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23   a {.   color: #
06c0: 34 34 34 3b 0a 20 20 20 66 6f 6e 74 2d 73 69 7a  444;.   font-siz
06d0: 65 3a 20 31 31 70 74 3b 0a 20 20 20 66 6f 6e 74  e: 11pt;.   font
06e0: 2d 77 65 69 67 68 74 3a 20 36 30 30 3b 0a 20 20  -weight: 600;.  
06f0: 20 70 61 64 64 69 6e 67 3a 20 37 70 74 3b 0a 7d   padding: 7pt;.}
0700: 0a 0a 2f 2a 20 62 75 74 74 6f 6e 73 20 2a 2f 0a  ../* buttons */.
0710: 23 6d 65 6e 75 2d 68 65 61 64 65 72 20 61 2e 62  #menu-header a.b
0720: 75 74 74 6f 6e 20 7b 0a 20 20 20 74 6f 70 3a 20  utton {.   top: 
0730: 32 70 74 3b 0a 20 20 20 62 6f 72 64 65 72 2d 72  2pt;.   border-r
0740: 61 64 69 75 73 3a 20 35 70 78 3b 0a 20 20 20 66  adius: 5px;.   f
0750: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 37 30 30 3b  ont-weight: 700;
0760: 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 36 70 74  .   padding: 6pt
0770: 20 31 30 70 74 3b 0a 20 20 20 70 6f 73 69 74 69   10pt;.   positi
0780: 6f 6e 3a 20 72 65 6c 61 74 69 76 65 3b 0a 7d 0a  on: relative;.}.
0790: 2e 62 75 74 74 6f 6e 2e 67 72 65 65 6e 20 7b 0a  .button.green {.
07a0: 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73     border: 1px s
07b0: 6f 6c 69 64 20 23 34 39 33 3b 0a 20 20 20 62 61  olid #493;.   ba
07c0: 63 6b 67 72 6f 75 6e 64 3a 20 23 37 65 35 20 6c  ckground: #7e5 l
07d0: 69 6e 65 61 72 2d 67 72 61 64 69 65 6e 74 28 31  inear-gradient(1
07e0: 38 30 64 65 67 2c 23 38 65 37 2c 23 35 39 33 29  80deg,#8e7,#593)
07f0: 3b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 66 66 66  ;.   color: #fff
0800: 20 21 69 6d 70 6f 72 74 61 6e 74 3b 0a 7d 0a 2e   !important;.}..
0810: 62 75 74 74 6f 6e 2e 67 72 65 65 6e 3a 68 6f 76  button.green:hov
0820: 65 72 20 7b 0a 20 20 20 62 61 63 6b 67 72 6f 75  er {.   backgrou
0830: 6e 64 3a 20 23 35 63 33 20 6c 69 6e 65 61 72 2d  nd: #5c3 linear-
0840: 67 72 61 64 69 65 6e 74 28 31 38 30 64 65 67 2c  gradient(180deg,
0850: 23 36 64 35 2c 23 34 38 32 29 3b 0a 7d 0a 2e 62  #6d5,#482);.}..b
0860: 75 74 74 6f 6e 2e 77 68 69 74 65 20 7b 0a 20 20  utton.white {.  
0870: 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c   border: 1px sol
0880: 69 64 20 23 64 64 64 3b 0a 20 20 20 62 61 63 6b  id #ddd;.   back
0890: 67 72 6f 75 6e 64 3a 20 23 65 65 65 3b 0a 20 20  ground: #eee;.  
08a0: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 6c 69 6e   background: lin
08b0: 65 61 72 2d 67 72 61 64 69 65 6e 74 28 31 38 30  ear-gradient(180
08c0: 64 65 67 2c 23 66 66 66 2c 23 64 64 64 29 3b 0a  deg,#fff,#ddd);.
08d0: 20 20 20 63 6f 6c 6f 72 3a 20 23 33 33 33 3b 0a     color: #333;.
08e0: 7d 0a 2e 62 75 74 74 6f 6e 2e 77 68 69 74 65 3a  }..button.white:
08f0: 68 6f 76 65 72 2c 20 2e 73 75 62 6d 65 6e 75 20  hover, .submenu 
0900: 2e 6c 61 62 65 6c 3a 68 6f 76 65 72 20 7b 0a 20  .label:hover {. 
0910: 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 63    background: #c
0920: 63 63 20 6c 69 6e 65 61 72 2d 67 72 61 64 69 65  cc linear-gradie
0930: 6e 74 28 31 38 30 64 65 67 2c 23 65 65 65 2c 23  nt(180deg,#eee,#
0940: 63 63 63 29 3b 0a 7d 0a 2e 62 75 74 74 6f 6e 2e  ccc);.}..button.
0950: 72 65 64 20 7b 0a 20 20 20 62 6f 72 64 65 72 3a  red {.   border:
0960: 20 31 70 78 20 73 6f 6c 69 64 20 23 64 39 37 3b   1px solid #d97;
0970: 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20  .   background: 
0980: 23 66 64 63 3b 0a 20 20 20 62 61 63 6b 67 72 6f  #fdc;.   backgro
0990: 75 6e 64 3a 20 6c 69 6e 65 61 72 2d 67 72 61 64  und: linear-grad
09a0: 69 65 6e 74 28 31 38 30 64 65 67 2c 23 66 64 63  ient(180deg,#fdc
09b0: 2c 23 65 62 61 29 3b 0a 20 20 20 63 6f 6c 6f 72  ,#eba);.   color
09c0: 3a 20 23 33 33 33 3b 0a 7d 0a 2e 62 75 74 74 6f  : #333;.}..butto
09d0: 6e 2e 72 65 64 3a 68 6f 76 65 72 20 7b 0a 20 20  n.red:hover {.  
09e0: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 65 62   background: #eb
09f0: 61 20 6c 69 6e 65 61 72 2d 67 72 61 64 69 65 6e  a linear-gradien
0a00: 74 28 31 38 30 64 65 67 2c 23 65 63 62 2c 23 63  t(180deg,#ecb,#c
0a10: 39 37 29 3b 0a 7d 0a 2e 64 6f 77 6e 6c 6f 61 64  97);.}..download
0a20: 2e 62 75 74 74 6f 6e 20 7b 0a 20 20 20 64 69 73  .button {.   dis
0a30: 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a 20 20 20  play: block;.   
0a40: 70 61 64 64 69 6e 67 3a 20 34 70 74 20 31 30 70  padding: 4pt 10p
0a50: 74 3b 0a 20 20 20 62 6f 72 64 65 72 2d 72 61 64  t;.   border-rad
0a60: 69 75 73 3a 20 34 70 78 3b 0a 20 20 20 6d 61 72  ius: 4px;.   mar
0a70: 67 69 6e 2d 74 6f 70 3a 20 31 30 70 74 3b 0a 7d  gin-top: 10pt;.}
0a80: 0a 2e 62 72 61 6e 63 68 2e 62 75 74 74 6f 6e 20  ..branch.button 
0a90: 7b 0a 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79  {.   font-family
0aa0: 3a 20 73 61 6e 73 2d 73 65 72 69 66 3b 0a 20 20  : sans-serif;.  
0ab0: 20 70 61 64 64 69 6e 67 3a 20 32 70 74 20 36 70   padding: 2pt 6p
0ac0: 74 3b 0a 20 20 20 62 6f 72 64 65 72 2d 72 61 64  t;.   border-rad
0ad0: 69 75 73 3a 20 34 70 78 3b 0a 7d 0a 2e 62 72 61  ius: 4px;.}..bra
0ae0: 6e 63 68 2e 62 75 74 74 6f 6e 20 73 65 6c 65 63  nch.button selec
0af0: 74 20 7b 0a 20 20 20 62 6f 72 64 65 72 3a 20 30  t {.   border: 0
0b00: 20 21 69 6d 70 6f 72 74 61 6e 74 3b 0a 20 20 20   !important;.   
0b10: 62 61 63 6b 67 72 6f 75 6e 64 3a 20 69 6e 68 65  background: inhe
0b20: 72 69 74 3b 0a 20 20 20 66 6f 6e 74 2d 73 69 7a  rit;.   font-siz
0b30: 65 3a 20 31 30 33 25 3b 0a 20 20 20 66 6f 6e 74  e: 103%;.   font
0b40: 2d 77 65 69 67 68 74 3a 20 37 30 30 3b 0a 20 20  -weight: 700;.  
0b50: 20 2d 77 65 62 6b 69 74 2d 61 70 70 65 61 72 61   -webkit-appeara
0b60: 6e 63 65 3a 20 6e 6f 6e 65 3b 0a 20 20 20 2d 6d  nce: none;.   -m
0b70: 6f 7a 2d 61 70 70 65 61 72 61 6e 63 65 3a 20 6e  oz-appearance: n
0b80: 6f 6e 65 3b 0a 20 20 20 61 70 70 65 61 72 61 6e  one;.   appearan
0b90: 63 65 3a 20 6e 6f 6e 65 3b 0a 7d 0a 2e 62 72 61  ce: none;.}..bra
0ba0: 6e 63 68 2e 62 75 74 74 6f 6e 20 6f 70 74 69 6f  nch.button optio
0bb0: 6e 20 7b 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67  n {.   font-weig
0bc0: 68 74 3a 20 37 30 30 3b 0a 20 20 20 62 61 63 6b  ht: 700;.   back
0bd0: 67 72 6f 75 6e 64 3a 20 23 65 65 65 3b 0a 7d 0a  ground: #eee;.}.
0be0: 0a 2f 2a 20 66 6f 73 73 69 6c 20 61 63 74 69 6f  ./* fossil actio
0bf0: 6e 20 62 75 74 74 6f 6e 73 20 2a 2f 0a 2e 73 75  n buttons */..su
0c00: 62 6d 65 6e 75 20 61 2e 6c 61 62 65 6c 2c 20 2e  bmenu a.label, .
0c10: 73 75 62 6d 65 6e 75 20 73 65 6c 65 63 74 2c 20  submenu select, 
0c20: 2e 73 75 62 6d 65 6e 75 20 69 6e 70 75 74 20 7b  .submenu input {
0c30: 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 32 70 78  .   padding: 2px
0c40: 20 33 70 74 3b 0a 20 20 20 62 6f 72 64 65 72 2d   3pt;.   border-
0c50: 72 61 64 69 75 73 3a 20 33 70 78 3b 0a 20 20 20  radius: 3px;.   
0c60: 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c 69  border: 1px soli
0c70: 64 20 23 64 37 64 37 64 37 3b 0a 20 20 20 62 61  d #d7d7d7;.   ba
0c80: 63 6b 67 72 6f 75 6e 64 3a 20 23 66 66 66 20 6c  ckground: #fff l
0c90: 69 6e 65 61 72 2d 67 72 61 64 69 65 6e 74 28 30  inear-gradient(0
0ca0: 64 65 67 2c 20 23 65 65 65 20 30 25 2c 20 23 66  deg, #eee 0%, #f
0cb0: 66 66 20 32 30 25 29 3b 0a 20 20 20 63 6f 6c 6f  ff 20%);.   colo
0cc0: 72 3a 20 23 33 33 33 3b 0a 20 20 20 66 6f 6e 74  r: #333;.   font
0cd0: 2d 73 69 7a 65 3a 20 31 32 70 74 3b 0a 7d 0a 2e  -size: 12pt;.}..
0ce0: 73 75 62 6d 65 6e 75 20 69 6e 70 75 74 20 7b 20  submenu input { 
0cf0: 77 69 64 74 68 3a 20 34 30 70 78 3b 20 7d 0a 2e  width: 40px; }..
0d00: 73 75 62 6d 65 6e 75 20 73 65 6c 65 63 74 20 7b  submenu select {
0d10: 20 20 70 61 64 64 69 6e 67 3a 20 31 70 78 20 33    padding: 1px 3
0d20: 70 74 3b 20 7d 0a 2e 73 75 62 6d 65 6e 75 20 73  pt; }..submenu s
0d30: 65 6c 65 63 74 20 6f 70 74 69 6f 6e 20 7b 0a 20  elect option {. 
0d40: 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 6c 69    background: li
0d50: 6e 65 61 72 2d 67 72 61 64 69 65 6e 74 28 30 64  near-gradient(0d
0d60: 65 67 2c 20 23 64 64 64 20 30 25 2c 20 23 66 66  eg, #ddd 0%, #ff
0d70: 66 20 32 30 25 29 3b 0a 20 20 20 66 6f 6e 74 2d  f 20%);.   font-
0d80: 73 69 7a 65 3a 20 31 31 70 74 3b 0a 7d 0a 6d 61  size: 11pt;.}.ma
0d90: 69 6e 20 2e 73 75 62 6d 65 6e 75 20 7b 0a 20 20  in .submenu {.  
0da0: 20 66 6c 6f 61 74 3a 20 72 69 67 68 74 3b 0a 20   float: right;. 
0db0: 20 20 70 6f 73 69 74 69 6f 6e 3a 20 72 65 6c 61    position: rela
0dc0: 74 69 76 65 3b 0a 20 20 20 74 6f 70 3a 20 2d 34  tive;.   top: -4
0dd0: 30 70 78 3b 0a 7d 0a 0a 2f 2a 20 6c 69 6e 6b 73  0px;.}../* links
0de0: 20 2a 2f 0a 61 20 7b 0a 20 20 20 74 65 78 74 2d   */.a {.   text-
0df0: 64 65 63 6f 72 61 74 69 6f 6e 3a 20 6e 6f 6e 65  decoration: none
0e00: 3b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 35 37 63  ;.   color: #57c
0e10: 3b 0a 7d 0a 0a 2f 2a 20 70 72 6f 6a 65 63 74 20  ;.}../* project 
0e20: 69 6e 66 6f 20 2a 2f 0a 23 70 72 6f 6a 65 63 74  info */.#project
0e30: 2d 68 65 61 64 65 72 20 61 20 7b 0a 20 20 20 66  -header a {.   f
0e40: 6f 6e 74 2d 73 69 7a 65 3a 20 31 36 70 74 3b 0a  ont-size: 16pt;.
0e50: 20 20 20 63 6f 6c 6f 72 3a 20 23 34 38 63 3b 0a     color: #48c;.
0e60: 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20     font-weight: 
0e70: 31 30 30 3b 0a 7d 0a 23 70 75 62 6c 69 63 2d 70  100;.}.#public-p
0e80: 72 65 66 69 78 20 7b 0a 20 20 20 66 6f 6e 74 2d  refix {.   font-
0e90: 73 69 7a 65 3a 20 31 33 70 74 3b 0a 20 20 20 66  size: 13pt;.   f
0ea0: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 31 30 30 3b  ont-weight: 100;
0eb0: 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 63 63 63 3b  .   color: #ccc;
0ec0: 0a 20 20 20 70 6f 73 69 74 69 6f 6e 3a 20 72 65  .   position: re
0ed0: 6c 61 74 69 76 65 3b 0a 20 20 20 6c 65 66 74 3a  lative;.   left:
0ee0: 20 2d 35 33 70 74 3b 0a 20 20 20 74 6f 70 3a 20   -53pt;.   top: 
0ef0: 35 70 74 3b 0a 7d 0a 23 70 72 6f 6a 65 63 74 2d  5pt;.}.#project-
0f00: 68 65 61 64 65 72 20 2e 73 68 61 72 65 2d 62 75  header .share-bu
0f10: 74 74 6f 6e 20 7b 0a 20 20 20 70 61 64 64 69 6e  tton {.   paddin
0f20: 67 3a 20 33 70 74 20 36 70 74 3b 0a 20 20 20 66  g: 3pt 6pt;.   f
0f30: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 36 30 30 3b  ont-weight: 600;
0f40: 0a 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20  .   border: 1px 
0f50: 73 6f 6c 69 64 20 23 64 64 64 3b 0a 20 20 20 62  solid #ddd;.   b
0f60: 6f 72 64 65 72 2d 72 61 64 69 75 73 3a 20 34 70  order-radius: 4p
0f70: 78 20 30 20 30 20 34 70 78 3b 0a 20 20 20 62 61  x 0 0 4px;.   ba
0f80: 63 6b 67 72 6f 75 6e 64 3a 20 23 65 65 65 3b 0a  ckground: #eee;.
0f90: 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 6c 69     background:li
0fa0: 6e 65 61 72 2d 67 72 61 64 69 65 6e 74 28 31 38  near-gradient(18
0fb0: 30 64 65 67 2c 23 66 66 66 2c 23 65 37 65 37 65  0deg,#fff,#e7e7e
0fc0: 37 29 3b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 32  7);.   color: #2
0fd0: 32 32 3b 0a 7d 0a 23 70 72 6f 6a 65 63 74 2d 68  22;.}.#project-h
0fe0: 65 61 64 65 72 20 2e 73 68 61 72 65 2d 62 75 74  eader .share-but
0ff0: 74 6f 6e 20 61 20 7b 0a 20 20 20 66 6f 6e 74 2d  ton a {.   font-
1000: 73 69 7a 65 3a 20 31 32 70 74 3b 0a 7d 0a 23 70  size: 12pt;.}.#p
1010: 72 6f 6a 65 63 74 2d 68 65 61 64 65 72 20 2e 73  roject-header .s
1020: 68 61 72 65 2d 62 75 74 74 6f 6e 2d 6e 75 6d 62  hare-button-numb
1030: 65 72 20 7b 0a 20 20 20 70 61 64 64 69 6e 67 3a  er {.   padding:
1040: 20 33 70 74 20 36 70 74 3b 0a 20 20 20 62 6f 72   3pt 6pt;.   bor
1050: 64 65 72 3a 20 31 70 78 20 73 6f 6c 69 64 20 23  der: 1px solid #
1060: 64 64 64 3b 0a 20 20 20 62 6f 72 64 65 72 2d 6c  ddd;.   border-l
1070: 65 66 74 3a 20 30 3b 0a 20 20 20 62 6f 72 64 65  eft: 0;.   borde
1080: 72 2d 72 61 64 69 75 73 3a 20 30 20 34 70 78 20  r-radius: 0 4px 
1090: 34 70 78 20 30 3b 0a 20 20 20 62 61 63 6b 67 72  4px 0;.   backgr
10a0: 6f 75 6e 64 3a 20 23 66 63 66 63 66 63 3b 0a 20  ound: #fcfcfc;. 
10b0: 20 20 63 6f 6c 6f 72 3a 20 23 34 34 34 3b 0a 7d    color: #444;.}
10c0: 0a 0a 2f 2a 20 70 72 6f 6a 65 63 74 20 6d 61 69  ../* project mai
10d0: 6e 20 70 61 6e 65 20 2a 2f 0a 23 70 72 6f 6a 65  n pane */.#proje
10e0: 63 74 2d 63 6f 6e 74 65 6e 74 20 7b 0a 20 20 20  ct-content {.   
10f0: 66 6f 6e 74 2d 73 69 7a 65 3a 20 31 32 2e 32 35  font-size: 12.25
1100: 70 74 3b 0a 20 20 20 70 61 64 64 69 6e 67 2d 74  pt;.   padding-t
1110: 6f 70 3a 20 31 36 70 74 3b 0a 20 20 20 63 6f 6c  op: 16pt;.   col
1120: 6f 72 3a 20 23 36 36 36 3b 0a 20 20 20 77 69 64  or: #666;.   wid
1130: 74 68 3a 20 38 32 25 3b 20 20 2f 2a 2a 2a 2a 2a  th: 82%;  /*****
1140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 6c 61 79 6f 75 74  ********* layout
1150: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a   *************/.
1160: 7d 0a 0a 2f 2a 20 63 6f 64 65 20 73 74 61 74 69  }../* code stati
1170: 73 74 69 63 73 20 62 6f 78 20 2a 2f 0a 23 70 72  stics box */.#pr
1180: 6f 6a 65 63 74 2d 73 74 61 74 73 20 7b 0a 20 20  oject-stats {.  
1190: 20 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 31 30 70   margin-top: 10p
11a0: 74 3b 0a 20 20 20 62 6f 72 64 65 72 3a 20 31 70  t;.   border: 1p
11b0: 78 20 73 6f 6c 69 64 20 23 63 63 63 3b 0a 20 20  x solid #ccc;.  
11c0: 20 62 6f 72 64 65 72 2d 72 61 64 69 75 73 3a 20   border-radius: 
11d0: 34 70 74 3b 0a 20 20 20 68 65 69 67 68 74 3a 20  4pt;.   height: 
11e0: 34 38 70 78 3b 0a 20 20 20 70 61 64 64 69 6e 67  48px;.   padding
11f0: 3a 20 30 3b 0a 20 20 20 6f 76 65 72 66 6c 6f 77  : 0;.   overflow
1200: 3a 20 68 69 64 64 65 6e 3b 0a 20 20 20 62 61 63  : hidden;.   bac
1210: 6b 67 72 6f 75 6e 64 3a 20 23 66 63 66 63 66 63  kground: #fcfcfc
1220: 3b 0a 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79  ;.   font-family
1230: 3a 20 73 61 6e 73 2d 73 65 72 69 66 3b 0a 20 20  : sans-serif;.  
1240: 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 39 30 25 3b   font-size: 90%;
1250: 0a 7d 0a 23 70 72 6f 6a 65 63 74 2d 73 74 61 74  .}.#project-stat
1260: 73 2d 61 6c 74 65 72 6e 61 74 65 20 7b 0a 20 20  s-alternate {.  
1270: 20 68 65 69 67 68 74 3a 20 33 34 70 78 3b 0a 20   height: 34px;. 
1280: 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65    text-align: ce
1290: 6e 74 65 72 3b 0a 20 20 20 6f 76 65 72 66 6c 6f  nter;.   overflo
12a0: 77 3a 20 68 69 64 64 65 6e 3b 0a 20 20 20 70 61  w: hidden;.   pa
12b0: 64 64 69 6e 67 3a 20 31 70 74 20 32 30 70 74 3b  dding: 1pt 20pt;
12c0: 0a 0a 7d 0a 23 70 72 6f 6a 65 63 74 2d 73 74 61  ..}.#project-sta
12d0: 74 73 2d 61 6c 74 65 72 6e 61 74 65 20 64 69 76  ts-alternate div
12e0: 20 7b 0a 20 20 20 68 65 69 67 68 74 3a 20 33 34   {.   height: 34
12f0: 70 78 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20  px;.   padding: 
1300: 38 70 78 3b 0a 7d 0a 23 70 72 6f 6a 65 63 74 2d  8px;.}.#project-
1310: 73 74 61 74 73 2d 61 6c 74 65 72 6e 61 74 65 20  stats-alternate 
1320: 61 20 7b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20  a {.   padding: 
1330: 31 70 74 20 32 35 70 74 3b 0a 20 20 20 63 6f 6c  1pt 25pt;.   col
1340: 6f 72 3a 20 23 39 39 39 3b 0a 7d 0a 23 70 72 6f  or: #999;.}.#pro
1350: 6a 65 63 74 2d 73 74 61 74 73 2d 61 6c 74 65 72  ject-stats-alter
1360: 6e 61 74 65 20 61 20 62 20 7b 0a 20 20 20 63 6f  nate a b {.   co
1370: 6c 6f 72 3a 20 23 31 31 31 3b 0a 7d 0a 0a 2f 2a  lor: #111;.}../*
1380: 20 6c 61 6e 67 75 61 67 65 20 63 6f 6c 6f 72 20   language color 
1390: 67 72 61 70 68 20 2a 2f 0a 23 6c 61 6e 67 75 61  graph */.#langua
13a0: 67 65 2d 62 61 72 20 7b 0a 20 20 20 6f 76 65 72  ge-bar {.   over
13b0: 66 6c 6f 77 3a 20 68 69 64 64 65 6e 3b 0a 20 20  flow: hidden;.  
13c0: 20 77 69 64 74 68 3a 20 31 30 31 25 3b 0a 20 20   width: 101%;.  
13d0: 20 68 65 69 67 68 74 3a 20 31 36 70 78 3b 0a 20   height: 16px;. 
13e0: 20 20 62 6f 72 64 65 72 2d 72 61 64 69 75 73 3a    border-radius:
13f0: 20 30 20 30 20 34 70 74 20 34 70 74 3b 0a 20 20   0 0 4pt 4pt;.  
1400: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 39 39   background: #99
1410: 39 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 30  9;.   padding: 0
1420: 3b 0a 20 20 20 6d 61 72 67 69 6e 3a 20 30 3b 0a  ;.   margin: 0;.
1430: 7d 0a 23 6c 61 6e 67 75 61 67 65 2d 62 61 72 20  }.#language-bar 
1440: 73 70 61 6e 3a 66 69 72 73 74 2d 63 68 69 6c 64  span:first-child
1450: 20 7b 0a 20 20 20 62 6f 72 64 65 72 2d 72 61 64   {.   border-rad
1460: 69 75 73 3a 20 30 20 30 20 30 20 38 70 74 3b 0a  ius: 0 0 0 8pt;.
1470: 7d 0a 23 6c 61 6e 67 75 61 67 65 2d 62 61 72 20  }.#language-bar 
1480: 73 70 61 6e 3a 6c 61 73 74 2d 63 68 69 6c 64 20  span:last-child 
1490: 7b 0a 20 20 20 62 6f 72 64 65 72 2d 72 61 64 69  {.   border-radi
14a0: 75 73 3a 20 30 20 30 20 38 70 74 20 30 3b 0a 7d  us: 0 0 8pt 0;.}
14b0: 0a 0a 0a 2f 2a 20 64 65 66 61 75 6c 74 20 75 73  .../* default us
14c0: 65 72 20 70 69 63 20 69 6e 20 66 69 6c 65 62 6f  er pic in filebo
14d0: 78 20 2a 2f 0a 2e 75 73 65 72 20 7b 0a 20 20 20  x */..user {.   
14e0: 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 37 30 30  font-weight: 700
14f0: 3b 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 35 35 37  ;.   color: #557
1500: 3b 0a 20 20 20 70 61 64 64 69 6e 67 2d 6c 65 66  ;.   padding-lef
1510: 74 3a 20 32 36 70 78 3b 0a 20 20 20 62 61 63 6b  t: 26px;.   back
1520: 67 72 6f 75 6e 64 3a 20 75 72 6c 28 22 64 61 74  ground: url("dat
1530: 61 3a 69 6d 61 67 65 2f 6a 70 65 67 3b 62 61 73  a:image/jpeg;bas
1540: 65 36 34 2c 2f 39 6a 2f 34 41 41 51 53 6b 5a 4a  e64,/9j/4AAQSkZJ
1550: 52 67 41 42 41 51 49 41 48 41 41 63 41 41 44 2f  RgABAQIAHAAcAAD/
1560: 32 77 42 44 41 41 4d 43 41 67 49 43 41 67 4d 43  2wBDAAMCAgICAgMC
1570: 41 67 49 44 41 77 4d 44 42 41 59 45 42 41 51 45  AgIDAwMDBAYEBAQE
1580: 42 41 67 47 42 67 55 47 43 51 67 4b 43 67 6b 49  BAgGBgUGCQgKCgkI
1590: 43 51 6b 4b 44 41 38 4d 43 67 73 4f 43 77 6b 4a  CQkKDA8MCgsOCwkJ
15a0: 44 52 45 4e 44 67 38 51 45 42 45 51 43 67 77 53  DRENDg8QEBEQCgwS
15b0: 45 78 49 51 45 77 38 51 45 42 44 2f 32 77 42 44  ExIQEw8QEBD/2wBD
15c0: 41 51 4d 44 41 77 51 44 42 41 67 45 42 41 67 51  AQMDAwQDBAgEBAgQ
15d0: 43 77 6b 4c 45 42 41 51 45 42 41 51 45 42 41 51  CwkLEBAQEBAQEBAQ
15e0: 45 42 41 51 45 42 41 51 45 42 41 51 45 42 41 51  EBAQEBAQEBAQEBAQ
15f0: 45 42 41 51 45 42 41 51 45 42 41 51 45 42 41 51  EBAQEBAQEBAQEBAQ
1600: 45 42 41 51 45 42 41 51 45 42 41 51 45 42 41 51  EBAQEBAQEBAQEBAQ
1610: 45 42 41 51 45 42 44 2f 77 41 41 52 43 41 41 57  EBAQEBD/wAARCAAW
1620: 41 42 59 44 41 53 49 41 41 68 45 42 41 78 45 42  ABYDASIAAhEBAxEB
1630: 2f 38 51 41 47 51 41 42 41 51 45 41 41 77 41 41  /8QAGQABAQEAAwAA
1640: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 59 46  AAAAAAAAAAAAAAYF
1650: 42 41 67 4a 2f 38 51 41 4a 68 41 41 41 51 4d 45  BAgJ/8QAJhAAAQME
1660: 41 67 45 45 41 77 45 41 41 41 41 41 41 41 41 41  AgEEAwEAAAAAAAAA
1670: 41 51 49 44 42 41 41 46 42 68 45 53 49 51 63 54  AQIDBAAFBhESIQcT
1680: 4d 54 4a 42 4d 32 46 78 6b 66 2f 45 41 42 63 42  MTJBM2Fxkf/EABcB
1690: 41 51 41 44 41 41 41 41 41 41 41 41 41 41 41 41  AQADAAAAAAAAAAAA
16a0: 41 41 41 41 41 41 55 41 41 51 50 2f 78 41 41 6e  AAAAAAUAAQP/xAAn
16b0: 45 51 41 42 41 77 4d 43 42 41 63 41 41 41 41 41  EQABAwMCBAcAAAAA
16c0: 41 41 41 41 41 41 41 42 41 67 4d 45 41 42 45 78  AAAAAAABAgMEABEx
16d0: 45 69 45 46 42 67 64 42 45 79 49 79 51 6c 47 42  EiEFBgdBEyIyQlGB
16e0: 77 66 2f 61 41 41 77 44 41 51 41 43 45 51 4d 52  wf/aAAwDAQACEQMR
16f0: 41 44 38 41 37 67 35 52 4b 79 36 31 59 76 63 41  AD8A7g5RKy61YvcA
1700: 77 34 49 38 31 39 43 49 73 4b 42 77 42 45 6c 39  w4I819CIsKBwBEl9
1710: 5a 34 6f 53 56 41 6e 51 43 6c 41 71 4f 78 31 76  Z4oSVAnQClAqOx1v
1720: 75 6f 5a 72 44 66 4f 65 4c 58 61 4c 6b 55 66 49  uoZrDfOeLXaLkUfI
1730: 59 75 54 57 5a 4b 55 4b 75 63 64 78 6c 44 4b 77  YuTWZKUKucdxlDKw
1740: 42 2b 52 4c 61 51 4f 52 30 4f 30 6c 4b 74 6b 39  B+RLaQOR0O0lKtk9
1750: 45 48 37 6f 38 6a 38 76 34 68 62 72 6e 47 5a 76  EH7o8j8v4hbrnGZv
1760: 47 62 57 5a 6c 78 4f 33 6c 43 52 4a 62 5a 53 4f  GbWZlxO3lCRJbZSO
1770: 4b 2f 69 4e 36 49 41 49 31 33 73 31 59 7a 38 70  K/iN6IAI13s1Yz8p
1780: 74 6c 6a 78 36 54 49 76 4e 32 5a 73 38 45 42 49  tljx6TIvN2Zs8EBI
1790: 64 6e 53 31 68 44 55 66 6d 64 4a 4b 6c 65 32 2b  dnS1hDUfmdJKle2+
17a0: 52 41 47 6a 37 6b 66 32 6a 2b 62 5a 55 31 4d 2b  RAGj7kf2j+bZU1M+
17b0: 49 68 44 35 62 43 75 7a 61 72 44 56 71 41 38 77  IhD5bCuzarDVqA8w
17c0: 47 62 67 6a 31 58 32 78 6b 30 70 77 51 52 6e 59  Gbgj1X2xk0pwQRnY
17d0: 72 79 69 6b 4b 4b 63 6b 37 37 57 37 66 47 44 69  ryikKKck77W7fGDi
17e0: 75 52 64 47 70 39 76 57 36 70 4d 79 32 65 6a 36  uRdGp9vW6pMy2ej6
17f0: 69 51 32 37 49 6c 63 43 73 4b 53 46 48 72 58 30  iQ27IlcCsKSFHrX0
1800: 65 76 32 4b 56 48 51 73 72 77 50 49 55 79 5a 46  ev2KVHQsrwPIUyZF
1810: 6f 79 61 33 58 4b 4e 48 55 30 30 46 69 57 6c 30  oya3XKNHU00FiWl0
1820: 70 58 77 50 50 66 79 53 4f 77 43 4e 48 32 70 57  pXwPPfySOwCNH2pW
1830: 30 72 70 76 79 68 4f 66 58 4a 66 61 42 57 73 6b  0rpvyhOfXJfaBWsk
1840: 6b 36 73 6b 37 6e 33 55 45 6e 69 62 69 51 45 68  k6sk7n3UEnibiQEh
1850: 59 32 72 79 58 38 69 7a 76 49 6a 2f 41 4a 50 79  Y2ryX8izvIj/AJPy
1860: 79 4d 5a 73 41 4f 49 76 45 76 6c 75 53 34 6f 41  yMZsAOIvEvluS4oA
1870: 65 6f 65 4b 51 53 6a 5a 41 54 6f 44 66 30 4b 7a  eoeKQSjZAToDf0Kz
1880: 72 76 6e 66 6d 6d 52 42 6a 34 78 64 63 79 66 6c  rvnfmmRBj4xdcyfl
1890: 32 2b 4d 6c 4a 59 68 75 58 4f 51 35 48 61 41 32  2+MlJYhuXOQ5HaA2
18a0: 6c 50 46 43 68 78 54 72 52 31 6f 64 43 6c 4b 74  lPFChxTrR1odClKt
18b0: 49 42 51 6d 34 78 69 6f 79 74 53 47 67 45 6d 77  IBQm4xioytSGgEmw
18c0: 74 61 74 54 78 4e 6b 47 65 54 62 6c 50 53 4c 67  tatTxNkGeTblPSLg
18d0: 77 6c 68 4c 49 43 30 43 51 70 4a 55 73 4b 48 45  wlhLIC0CQpJUsKHE
18e0: 2f 41 39 41 4b 56 2f 74 4b 55 6f 71 5a 45 5a 66  /A9AKV/tKUoqZEZf
18f0: 64 31 75 4a 75 61 44 6e 51 59 38 6c 37 78 48 55  d1uJuaDnQY8l7xHU
1900: 33 50 33 2b 56 2f 2f 5a 22 29 20 6e 6f 2d 72 65  3P3+V//Z") no-re
1910: 70 65 61 74 3b 0a 7d 0a 0a 0a 2f 2a 20 73 69 64  peat;.}.../* sid
1920: 65 62 61 72 20 2a 2f 0a 23 66 75 6e 63 74 69 6f  ebar */.#functio
1930: 6e 2d 73 69 64 65 62 61 72 20 7b 0a 20 20 20 77  n-sidebar {.   w
1940: 69 64 74 68 3a 20 31 35 25 3b 0a 20 20 20 66 6c  idth: 15%;.   fl
1950: 6f 61 74 3a 20 72 69 67 68 74 3b 20 20 20 2f 2a  oat: right;   /*
1960: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 6c 61  ************* la
1970: 79 6f 75 74 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  yout ***********
1980: 2a 2a 2f 0a 20 20 20 6f 76 65 72 66 6c 6f 77 3a  **/.   overflow:
1990: 20 68 69 64 64 65 6e 3b 0a 7d 0a 23 66 75 6e 63   hidden;.}.#func
19a0: 74 69 6f 6e 2d 73 69 64 65 62 61 72 20 75 6c 20  tion-sidebar ul 
19b0: 7b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 30 3b  {.   padding: 0;
19c0: 0a 20 20 20 6d 61 72 67 69 6e 3a 20 32 30 70 74  .   margin: 20pt
19d0: 20 30 20 30 20 30 3b 0a 7d 0a 23 66 75 6e 63 74   0 0 0;.}.#funct
19e0: 69 6f 6e 2d 73 69 64 65 62 61 72 20 6c 69 20 7b  ion-sidebar li {
19f0: 0a 20 20 20 62 6f 72 64 65 72 2d 6c 65 66 74 3a  .   border-left:
1a00: 20 31 70 78 20 73 6f 6c 69 64 20 23 65 63 65 63   1px solid #ecec
1a10: 65 63 3b 0a 20 20 20 62 6f 78 2d 73 68 61 64 6f  ec;.   box-shado
1a20: 77 3a 20 23 66 34 66 34 66 34 20 34 70 78 20 30  w: #f4f4f4 4px 0
1a30: 20 30 20 30 20 69 6e 73 65 74 3b 0a 20 20 20 64   0 0 inset;.   d
1a40: 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a 20  isplay: block;. 
1a50: 20 20 62 6f 72 64 65 72 2d 62 6f 74 74 6f 6d 3a    border-bottom:
1a60: 20 31 70 78 20 73 6f 6c 69 64 20 23 66 63 66 63   1px solid #fcfc
1a70: 66 63 3b 0a 20 20 20 6c 69 73 74 2d 73 74 79 6c  fc;.   list-styl
1a80: 65 2d 74 79 70 65 3a 20 6e 6f 6e 65 3b 0a 20 20  e-type: none;.  
1a90: 20 6d 61 72 67 69 6e 3a 20 30 3b 0a 7d 0a 23 66   margin: 0;.}.#f
1aa0: 75 6e 63 74 69 6f 6e 2d 73 69 64 65 62 61 72 20  unction-sidebar 
1ab0: 6c 69 20 61 20 7b 0a 20 20 20 64 69 73 70 6c 61  li a {.   displa
1ac0: 79 3a 20 62 6c 6f 63 6b 3b 0a 20 20 20 77 68 69  y: block;.   whi
1ad0: 74 65 2d 73 70 61 63 65 3a 20 6e 6f 77 72 61 70  te-space: nowrap
1ae0: 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 38 70  ;.   padding: 8p
1af0: 74 20 32 30 70 74 3b 0a 7d 0a 23 66 75 6e 63 74  t 20pt;.}.#funct
1b00: 69 6f 6e 2d 73 69 64 65 62 61 72 20 6c 69 2e 63  ion-sidebar li.c
1b10: 75 72 72 65 6e 74 2c 20 23 66 75 6e 63 74 69 6f  urrent, #functio
1b20: 6e 2d 73 69 64 65 62 61 72 20 6c 69 20 61 5b 68  n-sidebar li a[h
1b30: 72 65 66 3d 22 63 75 72 72 65 6e 74 5f 70 61 67  ref="current_pag
1b40: 65 22 5d 20 7b 0a 20 20 20 62 6f 72 64 65 72 3a  e"] {.   border:
1b50: 20 30 3b 0a 20 20 20 62 6f 72 64 65 72 2d 74 6f   0;.   border-to
1b60: 70 3a 20 31 70 78 20 73 6f 6c 69 64 20 23 65 65  p: 1px solid #ee
1b70: 65 3b 0a 20 20 20 62 6f 72 64 65 72 2d 62 6f 74  e;.   border-bot
1b80: 74 6f 6d 3a 20 31 70 78 20 73 6f 6c 69 64 20 23  tom: 1px solid #
1b90: 65 65 65 3b 0a 20 20 20 62 6f 72 64 65 72 2d 72  eee;.   border-r
1ba0: 69 67 68 74 3a 20 33 70 78 20 73 6f 6c 69 64 20  ight: 3px solid 
1bb0: 23 62 35 33 3b 0a 20 20 20 62 6f 78 2d 73 68 61  #b53;.   box-sha
1bc0: 64 6f 77 3a 20 23 66 37 66 37 66 37 20 30 20 33  dow: #f7f7f7 0 3
1bd0: 70 78 20 30 20 30 20 69 6e 73 65 74 3b 0a 7d 0a  px 0 0 inset;.}.
1be0: 23 66 75 6e 63 74 69 6f 6e 2d 73 69 64 65 62 61  #function-sideba
1bf0: 72 20 6c 69 3a 68 6f 76 65 72 20 7b 0a 20 20 20  r li:hover {.   
1c00: 62 61 63 6b 67 72 6f 75 6e 64 3a 20 6c 69 6e 65  background: line
1c10: 61 72 2d 67 72 61 64 69 65 6e 74 28 39 30 64 65  ar-gradient(90de
1c20: 67 2c 20 23 62 62 62 20 30 25 2c 20 23 65 65 65  g, #bbb 0%, #eee
1c30: 20 32 25 2c 20 23 66 37 66 37 66 37 20 31 35 25   2%, #f7f7f7 15%
1c40: 2c 20 23 66 66 66 20 35 30 25 29 3b 0a 7d 0a 23  , #fff 50%);.}.#
1c50: 66 75 6e 63 74 69 6f 6e 2d 73 69 64 65 62 61 72  function-sidebar
1c60: 20 6c 69 20 61 20 62 20 7b 0a 20 20 20 63 6f 6c   li a b {.   col
1c70: 6f 72 3a 20 23 33 33 33 3b 0a 20 20 20 66 6f 6e  or: #333;.   fon
1c80: 74 2d 77 65 69 67 68 74 3a 20 35 30 30 3b 0a 7d  t-weight: 500;.}
1c90: 0a 0a 2f 2a 20 66 69 6c 65 20 6c 69 73 74 20 62  ../* file list b
1ca0: 6f 78 20 2a 2f 0a 23 72 65 63 65 6e 74 2d 66 69  ox */.#recent-fi
1cb0: 6c 65 73 20 7b 0a 20 20 20 62 6f 72 64 65 72 3a  les {.   border:
1cc0: 20 31 70 78 20 73 6f 6c 69 64 20 23 65 64 66 3b   1px solid #edf;
1cd0: 0a 20 20 20 62 6f 72 64 65 72 2d 72 61 64 69 75  .   border-radiu
1ce0: 73 3a 20 33 70 74 3b 0a 20 20 20 62 6f 78 2d 73  s: 3pt;.   box-s
1cf0: 68 61 64 6f 77 3a 20 23 66 30 66 34 66 38 20 30  hadow: #f0f4f8 0
1d00: 20 30 20 36 70 78 20 34 70 78 3b 0a 20 20 20 70   0 6px 4px;.   p
1d10: 61 64 64 69 6e 67 3a 20 30 3b 0a 7d 0a 23 72 65  adding: 0;.}.#re
1d20: 63 65 6e 74 2d 66 69 6c 65 73 20 74 61 62 6c 65  cent-files table
1d30: 20 7b 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64   {.   background
1d40: 3a 20 23 66 37 66 38 66 39 3b 0a 20 20 20 77 69  : #f7f8f9;.   wi
1d50: 64 74 68 3a 20 31 30 30 25 3b 0a 20 20 20 6d 61  dth: 100%;.   ma
1d60: 72 67 69 6e 3a 20 30 3b 20 70 61 64 64 69 6e 67  rgin: 0; padding
1d70: 3a 20 30 3b 20 62 6f 72 64 65 72 2d 73 70 61 63  : 0; border-spac
1d80: 69 6e 67 3a 20 30 3b 0a 20 20 20 62 6f 72 64 65  ing: 0;.   borde
1d90: 72 2d 63 6f 6c 6c 61 70 73 65 3a 20 63 6f 6c 6c  r-collapse: coll
1da0: 61 70 73 65 3b 0a 7d 0a 23 72 65 63 65 6e 74 2d  apse;.}.#recent-
1db0: 66 69 6c 65 73 20 74 72 20 7b 0a 20 20 20 77 69  files tr {.   wi
1dc0: 64 74 68 3a 20 31 30 30 25 3b 0a 20 20 20 62 6f  dth: 100%;.   bo
1dd0: 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 70 78  rder-bottom: 1px
1de0: 20 73 6f 6c 69 64 20 23 65 34 65 38 65 61 3b 0a   solid #e4e8ea;.
1df0: 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 38 39     font-size: 89
1e00: 25 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 30  %;.   padding: 0
1e10: 20 21 69 6d 70 6f 72 74 61 6e 74 3b 20 6d 61 72   !important; mar
1e20: 67 69 6e 3a 20 30 20 21 69 6d 70 6f 72 74 61 6e  gin: 0 !importan
1e30: 74 3b 0a 7d 0a 23 72 65 63 65 6e 74 2d 66 69 6c  t;.}.#recent-fil
1e40: 65 73 20 74 68 20 7b 0a 20 20 20 70 61 64 64 69  es th {.   paddi
1e50: 6e 67 3a 20 35 70 74 3b 0a 20 20 20 74 65 78 74  ng: 5pt;.   text
1e60: 2d 61 6c 69 67 6e 3a 20 6c 65 66 74 3b 0a 20 20  -align: left;.  
1e70: 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 33 30   font-weight: 30
1e80: 30 3b 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64  0;.   background
1e90: 3a 20 23 65 30 65 37 66 37 3b 0a 20 20 20 62 6f  : #e0e7f7;.   bo
1ea0: 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 70 78  rder-bottom: 1px
1eb0: 20 73 6f 6c 69 64 20 23 66 33 66 35 66 37 3b 0a   solid #f3f5f7;.
1ec0: 7d 0a 23 72 65 63 65 6e 74 2d 66 69 6c 65 73 20  }.#recent-files 
1ed0: 74 64 20 7b 0a 20 20 20 70 61 64 64 69 6e 67 3a  td {.   padding:
1ee0: 20 35 70 74 3b 0a 20 20 20 74 65 78 74 2d 61 6c   5pt;.   text-al
1ef0: 69 67 6e 3a 20 6c 65 66 74 3b 0a 20 20 20 66 6f  ign: left;.   fo
1f00: 6e 74 2d 73 69 7a 65 3a 20 38 39 25 3b 0a 7d 0a  nt-size: 89%;.}.
1f10: 23 72 65 63 65 6e 74 2d 66 69 6c 65 73 20 61 20  #recent-files a 
1f20: 62 20 7b 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67  b {.   font-weig
1f30: 68 74 3a 20 36 30 30 3b 0a 20 20 20 66 6f 6e 74  ht: 600;.   font
1f40: 2d 73 69 7a 65 3a 20 31 31 35 25 3b 0a 7d 0a 23  -size: 115%;.}.#
1f50: 72 65 63 65 6e 74 2d 66 69 6c 65 73 20 61 2e 64  recent-files a.d
1f60: 69 72 20 62 20 7b 20 63 6f 6c 6f 72 3a 20 23 33  ir b { color: #3
1f70: 33 63 3b 20 7d 0a 23 72 65 63 65 6e 74 2d 66 69  3c; }.#recent-fi
1f80: 6c 65 73 20 61 2e 66 69 6c 65 20 62 20 7b 20 63  les a.file b { c
1f90: 6f 6c 6f 72 3a 20 23 64 63 62 3b 20 7d 0a 0a 2f  olor: #dcb; }../
1fa0: 2a 20 61 63 74 75 61 6c 20 66 6f 73 73 69 6c 20  * actual fossil 
1fb0: 63 6f 6e 74 65 6e 74 20 28 77 69 6b 69 2f 74 69  content (wiki/ti
1fc0: 6d 65 6c 69 6e 65 2f 66 69 6c 65 73 2f 65 74 63  meline/files/etc
1fd0: 2e 29 20 2a 2f 0a 6d 61 69 6e 20 7b 0a 20 20 20  .) */.main {.   
1fe0: 64 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a  display: block;.
1ff0: 20 20 20 6d 69 6e 2d 68 65 69 67 68 74 3a 20 35     min-height: 5
2000: 30 30 70 74 3b 0a 20 20 20 62 6f 72 64 65 72 3a  00pt;.   border:
2010: 20 31 70 78 20 73 6f 6c 69 64 20 23 65 65 65 3b   1px solid #eee;
2020: 0a 20 20 20 62 6f 78 2d 73 68 61 64 6f 77 3a 20  .   box-shadow: 
2030: 23 66 37 66 37 66 37 20 30 20 30 20 35 70 78 20  #f7f7f7 0 0 5px 
2040: 33 70 78 3b 0a 7d 0a 6d 61 69 6e 20 68 32 2e 70  3px;.}.main h2.p
2050: 61 67 65 2d 74 69 74 6c 65 20 7b 0a 20 20 20 64  age-title {.   d
2060: 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a 20  isplay: block;. 
2070: 20 20 6d 61 72 67 69 6e 3a 20 30 3b 0a 20 20 20    margin: 0;.   
2080: 70 61 64 64 69 6e 67 3a 20 39 70 74 3b 0a 20 20  padding: 9pt;.  
2090: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 65 65   background: #ee
20a0: 65 3b 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64  e;.   background
20b0: 3a 20 6c 69 6e 65 61 72 2d 67 72 61 64 69 65 6e  : linear-gradien
20c0: 74 28 31 38 30 64 65 67 2c 20 23 66 66 66 20 30  t(180deg, #fff 0
20d0: 25 2c 20 23 66 63 66 63 66 63 20 33 33 25 2c 20  %, #fcfcfc 33%, 
20e0: 23 66 37 66 37 66 37 20 37 35 25 2c 20 23 65 62  #f7f7f7 75%, #eb
20f0: 65 62 65 62 20 31 30 30 25 29 3b 0a 7d 0a 0a 2f  ebeb 100%);.}../
2100: 2a 20 65 6e 64 20 2a 2f 0a 23 66 6f 73 73 69 6c  * end */.#fossil
2110: 2d 66 6f 6f 74 65 72 20 7b 0a 20 20 20 6d 61 72  -footer {.   mar
2120: 67 69 6e 2d 74 6f 70 3a 20 33 30 70 74 3b 0a 20  gin-top: 30pt;. 
2130: 20 20 62 6f 72 64 65 72 2d 74 6f 70 3a 20 31 70    border-top: 1p
2140: 78 20 73 6f 6c 69 64 20 23 65 65 65 3b 0a 20 20  x solid #eee;.  
2150: 20 68 65 69 67 68 74 3a 20 31 37 35 70 74 3b 0a   height: 175pt;.
2160: 7d 0a 23 66 6f 73 73 69 6c 2d 66 6f 6f 74 65 72  }.#fossil-footer
2170: 20 2e 62 75 74 74 6f 6e 20 7b 0a 20 20 20 70 61   .button {.   pa
2180: 64 64 69 6e 67 3a 20 33 70 74 20 36 70 74 3b 0a  dding: 3pt 6pt;.
2190: 20 20 20 62 6f 72 64 65 72 2d 72 61 64 69 75 73     border-radius
21a0: 3a 20 32 70 74 3b 0a 7d 0a 0a 0a 2f 2a 20 68 61  : 2pt;.}.../* ha
21b0: 76 65 20 64 69 66 66 65 72 65 6e 74 20 6c 61 79  ve different lay
21c0: 6f 75 74 20 6f 6e 20 66 72 6f 6e 74 70 61 67 65  out on frontpage
21d0: 20 74 68 61 6e 20 65 6c 73 65 77 68 65 72 65 20   than elsewhere 
21e0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  */.             
21f0: 20 20 20 2e 6f 70 74 69 6f 6e 61 6c 20 7b 20 64     .optional { d
2200: 69 73 70 6c 61 79 3a 20 6e 6f 6e 65 3b 20 7d 0a  isplay: none; }.
2210: 62 6f 64 79 2e 70 61 67 65 2d 69 6e 64 65 78 20  body.page-index 
2220: 2e 6f 70 74 69 6f 6e 61 6c 20 7b 20 64 69 73 70  .optional { disp
2230: 6c 61 79 3a 20 69 6e 68 65 72 69 74 3b 20 7d 0a  lay: inherit; }.
2240: 62 6f 64 79 2e 70 61 67 65 2d 69 6e 64 65 78 20  body.page-index 
2250: 73 70 61 6e 2e 6f 70 74 69 6f 6e 61 6c 20 7b 20  span.optional { 
2260: 64 69 73 70 6c 61 79 3a 20 69 6e 6c 69 6e 65 3b  display: inline;
2270: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
2280: 20 20 20 23 66 75 6e 63 74 69 6f 6e 2d 73 69 64     #function-sid
2290: 65 62 61 72 20 7b 20 77 69 64 74 68 3a 20 36 25  ebar { width: 6%
22a0: 3b 20 7d 0a 62 6f 64 79 2e 70 61 67 65 2d 69 6e  ; }.body.page-in
22b0: 64 65 78 20 23 66 75 6e 63 74 69 6f 6e 2d 73 69  dex #function-si
22c0: 64 65 62 61 72 20 7b 20 77 69 64 74 68 3a 20 31  debar { width: 1
22d0: 35 25 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 20  5%; }.          
22e0: 20 20 20 20 20 20 23 70 72 6f 6a 65 63 74 2d 63        #project-c
22f0: 6f 6e 74 65 6e 74 20 7b 20 77 69 64 74 68 3a 20  ontent { width: 
2300: 39 31 25 3b 20 7d 0a 62 6f 64 79 2e 70 61 67 65  91%; }.body.page
2310: 2d 69 6e 64 65 78 20 23 70 72 6f 6a 65 63 74 2d  -index #project-
2320: 63 6f 6e 74 65 6e 74 20 7b 20 77 69 64 74 68 3a  content { width:
2330: 20 38 32 25 3b 20 7d 0a 0a 0a 2f 2a 20 75 69 3a   82%; }.../* ui:
2340: 3a 73 65 61 72 63 68 20 64 65 63 6f 72 61 74 69  :search decorati
2350: 6f 6e 20 2a 2f 0a 2e 73 65 61 72 63 68 52 65 73  on */..searchRes
2360: 75 6c 74 20 6c 69 20 7b 0a 7d 0a 2e 73 65 61 72  ult li {.}..sear
2370: 63 68 52 65 73 75 6c 74 20 6c 69 20 61 20 7b 0a  chResult li a {.
2380: 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 31 32     font-size: 12
2390: 30 25 3b 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67  0%;.   font-weig
23a0: 68 74 3a 20 33 30 30 3b 0a 7d 0a 2e 73 65 61 72  ht: 300;.}..sear
23b0: 63 68 52 65 73 75 6c 74 20 6c 69 20 61 2e 73 65  chResult li a.se
23c0: 61 72 63 68 2d 6c 69 6e 6b 20 7b 0a 20 20 20 64  arch-link {.   d
23d0: 69 73 70 6c 61 79 3a 20 62 6c 6f 63 6b 3b 0a 20  isplay: block;. 
23e0: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 31    font-weight: 1
23f0: 30 30 3b 0a 20 20 20 66 6f 6e 74 2d 73 69 7a 65  00;.   font-size
2400: 3a 20 37 30 25 3b 0a 20 20 20 63 6f 6c 6f 72 3a  : 70%;.   color:
2410: 20 23 33 33 37 37 33 33 3b 0a 20 20 20 6c 69 6e   #337733;.   lin
2420: 65 2d 68 65 69 67 68 74 3a 20 31 32 35 25 3b 0a  e-height: 125%;.
2430: 7d 0a 2e 73 65 61 72 63 68 52 65 73 75 6c 74 20  }..searchResult 
2440: 6c 69 20 2e 73 6e 69 70 70 65 74 20 7b 0a 20 20  li .snippet {.  
2450: 20 63 6f 6c 6f 72 3a 20 23 33 33 33 3b 0a 7d 0a   color: #333;.}.
2460: 2e 73 65 61 72 63 68 52 65 73 75 6c 74 20 6c 69  .searchResult li
2470: 20 2e 73 6e 69 70 70 65 74 20 6d 61 72 6b 20 7b   .snippet mark {
2480: 0a 20 20 20 74 65 78 74 2d 64 65 63 6f 72 61 74  .   text-decorat
2490: 69 6f 6e 3a 20 6e 6f 6e 65 3b 0a 20 20 20 66 6f  ion: none;.   fo
24a0: 6e 74 2d 73 74 79 6c 65 3a 20 69 74 61 6c 69 63  nt-style: italic
24b0: 3b 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74  ;.   font-weight
24c0: 3a 20 37 30 30 3b 0a 20 20 20 63 6f 6c 6f 72 3a  : 700;.   color:
24d0: 20 23 61 61 33 33 32 32 3b 0a 20 20 20 62 61 63   #aa3322;.   bac
24e0: 6b 67 72 6f 75 6e 64 3a 20 23 66 37 66 33 63 63  kground: #f7f3cc
24f0: 3b 0a 7d 0a 0a 0a 0a 2f 2a 20 61 63 74 75 61 6c  ;.}..../* actual
2500: 20 48 54 4d 4c 20 63 6f 6e 74 65 6e 74 20 64 65   HTML content de
2510: 63 6f 72 61 74 69 6f 6e 20 2a 2f 0a 6b 62 64 20  coration */.kbd 
2520: 7b 0a 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78  {.   border: 1px
2530: 20 64 6f 74 74 65 64 20 23 62 62 62 3b 0a 20 20   dotted #bbb;.  
2540: 20 62 6f 72 64 65 72 2d 72 61 64 69 75 73 3a 20   border-radius: 
2550: 33 70 78 3b 0a 20 20 20 70 61 64 64 69 6e 67 3a  3px;.   padding:
2560: 20 31 70 78 20 33 70 78 3b 0a 20 20 20 62 61 63   1px 3px;.   bac
2570: 6b 67 72 6f 75 6e 64 3a 20 23 65 65 65 20 6c 69  kground: #eee li
2580: 6e 65 61 72 2d 67 72 61 64 69 65 6e 74 28 23 66  near-gradient(#f
2590: 61 66 63 66 66 2c 23 65 37 65 39 65 63 29 3b 0a  afcff,#e7e9ec);.
25a0: 7d 0a 0a 63 6f 64 65 20 7b 0a 20 20 20 62 61 63  }..code {.   bac
25b0: 6b 67 72 6f 75 6e 64 3a 20 23 66 35 66 36 66 37  kground: #f5f6f7
25c0: 3b 0a 7d 0a 0a 70 72 65 2e 70 72 65 74 74 79 70  ;.}..pre.prettyp
25d0: 72 69 6e 74 20 7b 0a 20 20 20 62 6f 72 64 65 72  rint {.   border
25e0: 3a 20 31 70 78 20 64 61 73 68 65 64 20 23 65 65  : 1px dashed #ee
25f0: 65 20 21 69 6d 70 6f 72 74 61 6e 74 3b 0a 20 20  e !important;.  
2600: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 66 37   background: #f7
2610: 66 37 66 37 3b 0a 7d 0a 0a 6d 61 69 6e 20 74 61  f7f7;.}..main ta
2620: 62 6c 65 20 7b 0a 20 20 20 62 6f 72 64 65 72 3a  ble {.   border:
2630: 20 31 70 78 20 73 6f 6c 69 64 20 23 65 64 66 3b   1px solid #edf;
2640: 0a 20 20 20 62 6f 78 2d 73 68 61 64 6f 77 3a 20  .   box-shadow: 
2650: 23 66 30 66 34 66 38 20 30 20 30 20 36 70 78 20  #f0f4f8 0 0 6px 
2660: 34 70 78 3b 0a 20 20 20 62 61 63 6b 67 72 6f 75  4px;.   backgrou
2670: 6e 64 3a 20 23 64 64 64 20 6c 69 6e 65 61 72 2d  nd: #ddd linear-
2680: 67 72 61 64 69 65 6e 74 28 31 38 30 64 65 67 2c  gradient(180deg,
2690: 23 66 66 66 2c 23 66 37 66 37 66 37 29 3b 0a 7d  #fff,#f7f7f7);.}
26a0: 0a 6d 61 69 6e 20 74 61 62 6c 65 20 74 68 20 7b  .main table th {
26b0: 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20  .   background: 
26c0: 23 65 65 65 20 6c 69 6e 65 61 72 2d 67 72 61 64  #eee linear-grad
26d0: 69 65 6e 74 28 31 38 30 64 65 67 2c 23 66 66 66  ient(180deg,#fff
26e0: 2c 23 64 64 64 29 3b 0a 20 20 20 62 6f 72 64 65  ,#ddd);.   borde
26f0: 72 2d 63 6f 6c 6c 61 70 73 65 3a 20 63 6f 6c 6c  r-collapse: coll
2700: 61 70 73 65 3b 0a 20 20 20 70 61 64 64 69 6e 67  apse;.   padding
2710: 3a 20 35 70 74 3b 0a 20 20 20 74 65 78 74 2d 61  : 5pt;.   text-a
2720: 6c 69 67 6e 3a 20 6c 65 66 74 3b 0a 7d 0a 6d 61  lign: left;.}.ma
2730: 69 6e 20 74 61 62 6c 65 20 74 72 20 7b 0a 20 20  in table tr {.  
2740: 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c   border: 1px sol
2750: 69 64 20 23 66 37 66 37 66 37 3b 0a 7d 0a 23 74  id #f7f7f7;.}.#t
2760: 69 6d 65 6c 69 6e 65 54 61 62 6c 65 20 74 72 20  imelineTable tr 
2770: 7b 0a 20 20 20 62 6f 72 64 65 72 3a 20 30 3b 0a  {.   border: 0;.
2780: 7d 0a 6d 61 69 6e 20 74 61 62 6c 65 20 74 64 20  }.main table td 
2790: 7b 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 33 70  {.   padding: 3p
27a0: 74 3b 0a 7d 0a 0a 6d 61 69 6e 20 63 6f 64 65 2c  t;.}..main code,
27b0: 20 6d 61 69 6e 20 70 72 65 20 7b 0a 20 20 20 2f   main pre {.   /
27c0: 2a 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20 22 53  *font-family: "S
27d0: 6f 75 72 63 65 20 53 61 6e 73 20 50 72 6f 22 2c  ource Sans Pro",
27e0: 20 73 61 6e 73 2d 73 65 72 69 66 3b 0a 20 20 20   sans-serif;.   
27f0: 66 6f 6e 74 2d 73 69 7a 65 3a 20 31 31 30 25 3b  font-size: 110%;
2800: 2a 2f 0a 7d 0a 0a 6d 61 69 6e 20 68 32 2c 20 6d  */.}..main h2, m
2810: 61 69 6e 20 68 33 2c 20 6d 61 69 6e 20 68 34 2c  ain h3, main h4,
2820: 20 6d 61 69 6e 20 68 35 2c 20 6d 61 69 6e 20 68   main h5, main h
2830: 36 20 7b 0a 20 20 20 6d 61 72 67 69 6e 2d 74 6f  6 {.   margin-to
2840: 70 3a 20 32 32 70 74 3b 0a 7d 0a 0a 6d 61 69 6e  p: 22pt;.}..main
2850: 20 6c 69 20 7b 0a 20 20 20 6d 61 72 67 69 6e 2d   li {.   margin-
2860: 74 6f 70 3a 20 35 2e 35 70 74 3b 0a 7d 0a 0a 6d  top: 5.5pt;.}..m
2870: 61 69 6e 20 65 6d 20 7b 0a 20 20 20 63 6f 6c 6f  ain em {.   colo
2880: 72 3a 20 23 35 32 32 3b 0a 7d 0a 0a 6d 61 69 6e  r: #522;.}..main
2890: 20 2e 63 6f 6e 74 65 6e 74 20 70 2c 20 6d 61 69   .content p, mai
28a0: 6e 20 2e 63 6f 6e 74 65 6e 74 20 74 72 2c 20 6d  n .content tr, m
28b0: 61 69 6e 20 2e 63 6f 6e 74 65 6e 74 20 6c 69 20  ain .content li 
28c0: 7b 0a 20 20 20 6c 69 6e 65 2d 68 65 69 67 68 74  {.   line-height
28d0: 3a 20 31 35 35 25 3b 0a 7d 0a 0a 6d 61 69 6e 20  : 155%;.}..main 
28e0: 74 64 2e 74 6b 74 44 73 70 56 61 6c 75 65 20 7b  td.tktDspValue {
28f0: 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20  .   background: 
2900: 23 66 33 66 33 66 33 20 6c 69 6e 65 61 72 2d 67  #f3f3f3 linear-g
2910: 72 61 64 69 65 6e 74 28 34 35 64 65 67 2c 23 65  radient(45deg,#e
2920: 62 65 62 66 35 2c 23 66 66 66 29 3b 0a 7d 0a 6d  bebf5,#fff);.}.m
2930: 61 69 6e 20 74 64 2e 74 6b 74 44 73 70 4c 61 62  ain td.tktDspLab
2940: 65 6c 20 7b 0a 20 20 20 62 61 63 6b 67 72 6f 75  el {.   backgrou
2950: 6e 64 3a 20 6c 69 6e 65 61 72 2d 67 72 61 64 69  nd: linear-gradi
2960: 65 6e 74 28 31 31 35 64 65 67 2c 23 66 66 66 20  ent(115deg,#fff 
2970: 37 30 25 2c 23 66 66 66 39 66 37 20 31 30 30 25  70%,#fff9f7 100%
2980: 29 3b 0a 20 20 20 74 65 78 74 2d 61 6c 69 67 6e  );.   text-align
2990: 3a 20 72 69 67 68 74 3b 0a 20 20 20 66 6f 6e 74  : right;.   font
29a0: 2d 73 69 7a 65 3a 20 39 30 25 3b 0a 20 20 20 63  -size: 90%;.   c
29b0: 6f 6c 6f 72 3a 20 23 36 36 36 3b 0a 7d 0a 0a 2f  olor: #666;.}../
29c0: 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  * --------------
29d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 46 6f 73 73 69  ---------- Fossi
29e0: 6c 20 69 6e 74 65 72 6e 61 6c 20 73 74 79 6c 65  l internal style
29f0: 73 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  s --------------
2a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 2a 2f 0a 0a 0a  ---------- */...
2a10: 0a 0a 27 0a 63 6f 6e 66 69 67 20 2f 63 6f 6e 66  ..'.config /conf
2a20: 69 67 20 38 32 33 32 0a 31 35 32 38 30 39 31 31  ig 8232.15280911
2a30: 31 31 20 27 68 65 61 64 65 72 27 20 76 61 6c 75  11 'header' valu
2a40: 65 20 27 3c 74 68 31 3e 0d 0a 0d 0a 20 23 2d 2d  e '<th1>.... #--
2a50: 20 44 65 74 65 72 6d 69 6e 65 20 63 75 72 72 65   Determine curre
2a60: 6e 74 20 70 61 67 65 20 74 79 70 65 0d 0a 20 73  nt page type.. s
2a70: 65 74 20 70 61 67 65 6e 61 6d 65 20 22 22 0d 0a  et pagename ""..
2a80: 20 69 66 20 7b 5b 72 65 67 65 78 70 20 7b 5e 28   if {[regexp {^(
2a90: 69 6e 64 65 78 7c 68 6f 6d 65 29 5b 3f 5d 3f 7d  index|home)[?]?}
2aa0: 20 24 63 75 72 72 65 6e 74 5f 70 61 67 65 5d 7d   $current_page]}
2ab0: 20 7b 0d 0a 20 20 20 20 73 65 74 20 70 61 67 65   {..    set page
2ac0: 63 61 74 20 22 69 6e 64 65 78 22 0d 0a 20 7d 20  cat "index".. } 
2ad0: 65 6c 73 65 20 7b 20 69 66 20 7b 5b 72 65 67 65  else { if {[rege
2ae0: 78 70 20 7b 5e 77 69 6b 69 5c 3f 6e 61 6d 65 3d  xp {^wiki\?name=
2af0: 7d 20 24 63 75 72 72 65 6e 74 5f 70 61 67 65 5d  } $current_page]
2b00: 7d 20 7b 0d 0a 20 20 20 20 20 20 20 73 65 74 20  } {..       set 
2b10: 70 61 67 65 63 61 74 20 22 77 69 6b 69 22 0d 0a  pagecat "wiki"..
2b20: 20 20 20 20 20 20 20 73 65 74 20 70 61 67 65 6e         set pagen
2b30: 61 6d 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  ame [string rang
2b40: 65 20 24 63 75 72 72 65 6e 74 5f 70 61 67 65 20  e $current_page 
2b50: 31 30 20 32 30 34 38 5d 0d 0a 20 7d 20 65 6c 73  10 2048].. } els
2b60: 65 20 7b 0d 0a 20 20 20 20 73 65 74 20 70 61 67  e {..    set pag
2b70: 65 63 61 74 20 24 63 75 72 72 65 6e 74 5f 70 61  ecat $current_pa
2b80: 67 65 0d 0a 20 7d 20 7d 0d 0a 0d 0a 20 23 2d 2d  ge.. } }.... #--
2b90: 20 46 6f 72 20 6f 75 74 70 75 74 74 69 6e 67 20   For outputting 
2ba0: 63 6c 61 73 73 3d 63 75 72 72 65 6e 74 20 69 6e  class=current in
2bb0: 20 23 73 69 64 65 62 61 72 0d 0a 20 70 72 6f 63   #sidebar.. proc
2bc0: 20 63 75 72 72 65 6e 74 20 7b 6e 61 6d 65 7d 20   current {name} 
2bd0: 7b 0d 0a 20 20 20 20 75 70 76 61 72 20 31 20 70  {..    upvar 1 p
2be0: 61 67 65 63 61 74 20 70 61 67 65 63 61 74 0d 0a  agecat pagecat..
2bf0: 20 20 20 20 69 66 20 5b 72 65 67 65 78 70 20 22      if [regexp "
2c00: 5e 28 24 6e 61 6d 65 29 22 20 24 70 61 67 65 63  ^($name)" $pagec
2c10: 61 74 5d 20 7b 20 70 75 74 73 20 7b 20 63 6c 61  at] { puts { cla
2c20: 73 73 3d 63 75 72 72 65 6e 74 7d 20 7d 0d 0a 20  ss=current} }.. 
2c30: 7d 0d 0a 0d 0a 20 23 2d 2d 20 53 70 6c 69 74 20  }.... #-- Split 
2c40: 64 6f 6d 61 69 6e 20 6e 61 6d 65 20 66 72 6f 6d  domain name from
2c50: 20 62 61 73 65 75 72 6c 0d 0a 20 73 65 74 20 62   baseurl.. set b
2c60: 61 73 65 64 6f 6d 61 69 6e 20 5b 73 74 72 69 6e  asedomain [strin
2c70: 67 20 72 61 6e 67 65 20 24 62 61 73 65 75 72 6c  g range $baseurl
2c80: 20 5b 65 78 70 72 20 37 2b 5b 65 78 70 72 20 7b   [expr 7+[expr {
2c90: 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 62  [string range $b
2ca0: 61 73 65 75 72 6c 20 34 20 34 5d 20 65 71 20 22  aseurl 4 4] eq "
2cb0: 73 22 7d 5d 5d 20 5b 65 78 70 72 20 37 2b 5b 73  s"}]] [expr 7+[s
2cc0: 74 72 69 6e 67 20 66 69 72 73 74 20 22 2f 22 20  tring first "/" 
2cd0: 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 22 24  [string range "$
2ce0: 62 61 73 65 75 72 6c 2f 22 20 38 20 35 30 5d 5d  baseurl/" 8 50]]
2cf0: 5d 5d 0d 0a 0d 0a 20 23 2d 2d 20 50 72 6f 6a 65  ]].... #-- Proje
2d00: 63 74 20 73 74 61 74 73 0d 0a 20 73 65 74 20 73  ct stats.. set s
2d10: 74 61 74 73 5f 64 65 73 63 72 69 70 74 69 6f 6e  tats_description
2d20: 20 5b 73 65 74 74 69 6e 67 20 70 72 6f 6a 65 63   [setting projec
2d30: 74 2d 64 65 73 63 72 69 70 74 69 6f 6e 5d 0d 0a  t-description]..
2d40: 20 73 65 74 20 73 74 61 74 73 5f 73 6f 63 69 61   set stats_socia
2d50: 6c 20 30 0d 0a 20 73 65 74 20 73 74 61 74 73 5f  l 0.. set stats_
2d60: 66 6f 72 6b 73 20 31 0d 0a 20 63 61 74 63 68 20  forks 1.. catch 
2d70: 7b 20 71 75 65 72 79 20 7b 20 53 45 4c 45 43 54  { query { SELECT
2d80: 20 6e 61 6d 65 2c 76 61 6c 75 65 20 46 52 4f 4d   name,value FROM
2d90: 20 66 78 5f 73 74 61 74 73 20 57 48 45 52 45 20   fx_stats WHERE 
2da0: 6e 61 6d 65 20 47 4c 4f 42 20 27 27 73 74 61 74  name GLOB ''stat
2db0: 73 5f 2a 27 27 20 7d 20 7b 0d 0a 20 20 20 20 73  s_*'' } {..    s
2dc0: 65 74 20 22 24 6e 61 6d 65 22 20 22 24 76 61 6c  et "$name" "$val
2dd0: 75 65 22 0d 0a 20 7d 20 7d 0d 0a 0d 0a 20 23 2d  ue".. } }.... #-
2de0: 2d 20 65 6e 64 20 73 65 74 75 70 0d 0a 0d 0a 3c  - end setup....<
2df0: 2f 74 68 31 3e 0d 0a 0d 0a 3c 68 74 6d 6c 3e 0d  /th1>....<html>.
2e00: 0a 3c 68 65 61 64 3e 0d 0a 0d 0a 20 20 3c 74 69  .<head>....  <ti
2e10: 74 6c 65 3e 24 3c 70 72 6f 6a 65 63 74 5f 6e 61  tle>$<project_na
2e20: 6d 65 3e 3a 20 24 3c 74 69 74 6c 65 3e 3c 2f 74  me>: $<title></t
2e30: 69 74 6c 65 3e 0d 0a 20 20 3c 62 61 73 65 20 68  itle>..  <base h
2e40: 72 65 66 3d 22 24 3c 62 61 73 65 75 72 6c 3e 2f  ref="$<baseurl>/
2e50: 24 63 75 72 72 65 6e 74 5f 70 61 67 65 22 20 2f  $current_page" /
2e60: 3e 0d 0a 20 20 3c 6d 65 74 61 20 68 74 74 70 2d  >..  <meta http-
2e70: 65 71 75 69 76 3d 43 6f 6e 74 65 6e 74 2d 54 79  equiv=Content-Ty
2e80: 70 65 20 63 6f 6e 74 65 6e 74 3d 22 74 65 78 74  pe content="text
2e90: 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55  /html; charset=U
2ea0: 54 46 2d 38 3b 20 76 65 72 73 69 6f 6e 3d 35 22  TF-8; version=5"
2eb0: 3e 0d 0a 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 61  >..  <link rel=a
2ec0: 6c 74 65 72 6e 61 74 65 20 74 79 70 65 3d 22 61  lternate type="a
2ed0: 70 70 6c 69 63 61 74 69 6f 6e 2f 72 73 73 2b 78  pplication/rss+x
2ee0: 6d 6c 22 20 74 69 74 6c 65 3d 54 69 6d 65 6c 69  ml" title=Timeli
2ef0: 6e 65 20 68 72 65 66 3d 22 24 3c 62 61 73 65 75  ne href="$<baseu
2f00: 72 6c 3e 2f 74 69 6d 65 6c 69 6e 65 2e 72 73 73  rl>/timeline.rss
2f10: 22 3e 0d 0a 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d  ">..  <link rel=
2f20: 73 74 79 6c 65 73 68 65 65 74 20 68 72 65 66 3d  stylesheet href=
2f30: 22 24 3c 62 61 73 65 75 72 6c 3e 2f 73 74 79 6c  "$<baseurl>/styl
2f40: 65 2e 63 73 73 3f 67 69 74 6c 69 6b 65 22 20 74  e.css?gitlike" t
2f50: 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20 6d  ype="text/css" m
2f60: 65 64 69 61 3d 73 63 72 65 65 6e 3e 0d 0a 0d 0a  edia=screen>....
2f70: 20 20 3c 73 63 72 69 70 74 20 73 72 63 3d 22 2f    <script src="/
2f80: 2f 61 6a 61 78 2e 67 6f 6f 67 6c 65 61 70 69 73  /ajax.googleapis
2f90: 2e 63 6f 6d 2f 61 6a 61 78 2f 6c 69 62 73 2f 6a  .com/ajax/libs/j
2fa0: 71 75 65 72 79 2f 32 2e 31 2e 30 2f 6a 71 75 65  query/2.1.0/jque
2fb0: 72 79 2e 6d 69 6e 2e 6a 73 22 3e 3c 2f 73 63 72  ry.min.js"></scr
2fc0: 69 70 74 3e 0d 0a 20 20 3c 6c 69 6e 6b 20 72 65  ipt>..  <link re
2fd0: 6c 3d 73 74 79 6c 65 73 68 65 65 74 20 68 72 65  l=stylesheet hre
2fe0: 66 3d 22 2f 2f 63 64 6e 2e 72 61 77 67 69 74 2e  f="//cdn.rawgit.
2ff0: 63 6f 6d 2f 67 6f 6f 67 6c 65 2f 63 6f 64 65 2d  com/google/code-
3000: 70 72 65 74 74 69 66 79 2f 6d 61 73 74 65 72 2f  prettify/master/
3010: 6c 6f 61 64 65 72 2f 70 72 65 74 74 69 66 79 2e  loader/prettify.
3020: 63 73 73 22 20 74 79 70 65 3d 22 74 65 78 74 2f  css" type="text/
3030: 63 73 73 22 20 6d 65 64 69 61 3d 22 73 63 72 65  css" media="scre
3040: 65 6e 22 3e 0d 0a 0d 0a 20 20 3c 73 63 72 69 70  en">....  <scrip
3050: 74 20 6c 61 6e 67 75 61 67 65 3d 4a 61 76 61 53  t language=JavaS
3060: 63 72 69 70 74 3e 0d 0a 0d 0a 20 20 20 20 20 76  cript>....     v
3070: 61 72 20 62 61 73 65 75 72 6c 20 3d 20 22 24 3c  ar baseurl = "$<
3080: 62 61 73 65 75 72 6c 3e 22 3b 0d 0a 20 20 20 20  baseurl>";..    
3090: 20 76 61 72 20 63 75 72 72 65 6e 74 5f 62 72 61   var current_bra
30a0: 6e 63 68 20 3d 20 22 74 72 75 6e 6b 22 3b 0d 0a  nch = "trunk";..
30b0: 0d 0a 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ..     function 
30c0: 6a 73 6f 6e 5f 61 70 69 28 77 68 61 74 2c 20 63  json_api(what, c
30d0: 61 6c 6c 62 61 63 6b 29 20 7b 0d 0a 20 20 20 20  allback) {..    
30e0: 20 20 20 20 20 24 2e 67 65 74 4a 53 4f 4e 28 62       $.getJSON(b
30f0: 61 73 65 75 72 6c 20 2b 20 22 2f 6a 73 6f 6e 2f  aseurl + "/json/
3100: 22 20 2b 20 77 68 61 74 2c 20 7b 7d 2c 20 66 75  " + what, {}, fu
3110: 6e 63 74 69 6f 6e 28 64 61 74 61 29 20 7b 0d 0a  nction(data) {..
3120: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c               cal
3130: 6c 62 61 63 6b 28 64 61 74 61 2e 70 61 79 6c 6f  lback(data.paylo
3140: 61 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 7d  ad);..         }
3150: 29 3b 0d 0a 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  );..     }....  
3160: 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77     function show
3170: 5f 62 72 61 6e 63 68 65 73 28 70 61 79 6c 6f 61  _branches(payloa
3180: 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 63  d) {..         c
3190: 75 72 72 65 6e 74 5f 62 72 61 6e 63 68 20 3d 20  urrent_branch = 
31a0: 70 61 79 6c 6f 61 64 2e 63 75 72 72 65 6e 74 0d  payload.current.
31b0: 0a 20 20 20 20 20 20 20 20 20 76 61 72 20 62 72  .         var br
31c0: 62 20 3d 20 24 28 22 23 62 72 61 6e 63 68 2d 62  b = $("#branch-b
31d0: 75 74 74 6f 6e 20 73 65 6c 65 63 74 22 29 3b 0d  utton select");.
31e0: 0a 20 20 20 20 20 20 20 20 20 62 72 62 2e 65 6d  .         brb.em
31f0: 70 74 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  pty();..        
3200: 20 70 61 79 6c 6f 61 64 2e 62 72 61 6e 63 68 65   payload.branche
3210: 73 2e 70 75 73 68 28 22 74 69 70 22 29 3b 0d 0a  s.push("tip");..
3220: 20 20 20 20 20 20 20 20 20 24 2e 65 61 63 68 28           $.each(
3230: 70 61 79 6c 6f 61 64 2e 62 72 61 6e 63 68 65 73  payload.branches
3240: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 69 2c 76 29  , function (i,v)
3250: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3260: 62 72 62 2e 61 70 70 65 6e 64 28 22 3c 6f 70 74  brb.append("<opt
3270: 69 6f 6e 20 63 6c 61 73 73 3d 62 72 61 6e 63 68  ion class=branch
3280: 2d 6e 61 6d 65 3e 22 2b 76 29 3b 0d 0a 20 20 20  -name>"+v);..   
3290: 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20        });..     
32a0: 7d 0d 0a 0d 0a 0d 0a 20 20 3c 2f 73 63 72 69 70  }......  </scrip
32b0: 74 3e 0d 0a 0d 0a 3c 2f 68 65 61 64 3e 0d 0a 3c  t>....</head>..<
32c0: 62 6f 64 79 0d 0a 20 20 20 63 6c 61 73 73 3d 22  body..   class="
32d0: 70 61 67 65 2d 24 70 61 67 65 63 61 74 22 0d 0a  page-$pagecat"..
32e0: 20 20 20 6f 6e 4c 6f 61 64 3d 22 0d 0a 20 20 20     onLoad="..   
32f0: 20 20 20 24 28 27 27 63 6f 64 65 2c 70 72 65 27     $(''code,pre'
3300: 27 29 2e 61 64 64 43 6c 61 73 73 28 27 27 70 72  ').addClass(''pr
3310: 65 74 74 79 70 72 69 6e 74 27 27 29 3b 0d 0a 20  ettyprint'');.. 
3320: 20 20 20 20 20 24 2e 67 65 74 53 63 72 69 70 74       $.getScript
3330: 28 27 27 2f 2f 63 64 6e 2e 72 61 77 67 69 74 2e  (''//cdn.rawgit.
3340: 63 6f 6d 2f 67 6f 6f 67 6c 65 2f 63 6f 64 65 2d  com/google/code-
3350: 70 72 65 74 74 69 66 79 2f 6d 61 73 74 65 72 2f  prettify/master/
3360: 6c 6f 61 64 65 72 2f 72 75 6e 5f 70 72 65 74 74  loader/run_prett
3370: 69 66 79 2e 6a 73 3f 61 75 74 6f 6c 6f 61 64 3d  ify.js?autoload=
3380: 74 72 75 65 27 27 29 0d 0a 20 20 20 22 0d 0a 3e  true'')..   "..>
3390: 0d 0a 0d 0a 0d 0a 0d 0a 20 20 3c 66 6f 6f 74 65  ........  <foote
33a0: 72 20 69 64 3d 6d 65 6e 75 2d 68 65 61 64 65 72  r id=menu-header
33b0: 3e 3c 64 69 76 20 63 6c 61 73 73 3d 77 69 64 74  ><div class=widt
33c0: 68 2d 63 6f 6e 74 61 69 6e 65 72 3e 0d 0a 20 20  h-container>..  
33d0: 20 20 20 20 3c 68 31 3e 46 6f 73 73 69 6c 3c 2f      <h1>Fossil</
33e0: 68 31 3e 0d 0a 20 20 20 20 20 20 3c 66 6f 72 6d  h1>..      <form
33f0: 20 69 64 3d 73 65 61 72 63 68 5f 66 6f 72 6d 20   id=search_form 
3400: 61 63 74 69 6f 6e 3d 73 65 61 72 63 68 20 6d 65  action=search me
3410: 74 68 6f 64 3d 67 65 74 20 73 74 79 6c 65 3d 64  thod=get style=d
3420: 69 73 70 6c 61 79 3a 69 6e 6c 69 6e 65 3e 3c 73  isplay:inline><s
3430: 70 61 6e 3e 0d 0a 20 20 20 20 20 20 20 20 3c 73  pan>..        <s
3440: 65 6c 65 63 74 3e 0d 0a 20 20 20 20 20 20 20 20  elect>..        
3450: 20 20 20 3c 6f 70 74 69 6f 6e 3e 54 68 69 73 20     <option>This 
3460: 72 65 70 6f 73 69 74 6f 72 79 0d 0a 20 20 20 20  repository..    
3470: 20 20 20 20 3c 2f 73 65 6c 65 63 74 3e 3c 69 6e      </select><in
3480: 70 75 74 20 74 79 70 65 3d 73 65 61 72 63 68 20  put type=search 
3490: 6e 61 6d 65 3d 73 20 70 6c 61 63 65 68 6f 6c 64  name=s placehold
34a0: 65 72 3d 22 53 65 61 72 63 68 20 74 68 72 6f 75  er="Search throu
34b0: 67 68 20 66 69 6c 65 73 20 61 6e 64 20 77 69 6b  gh files and wik
34c0: 69 22 20 73 69 7a 65 3d 33 30 3e 0d 0a 20 20 20  i" size=30>..   
34d0: 20 20 20 3c 2f 73 70 61 6e 3e 3c 2f 66 6f 72 6d     </span></form
34e0: 3e 0d 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66  >..      <a href
34f0: 3d 22 68 74 74 70 3a 2f 2f 63 68 69 73 65 6c 61  ="http://chisela
3500: 70 70 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72  pp.com/repositor
3510: 69 65 73 2f 22 3e 45 78 70 6c 6f 72 65 3c 2f 61  ies/">Explore</a
3520: 3e 0d 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66  >..      <a href
3530: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 66 6f 73  ="http://www.fos
3540: 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 22 3e 46 65  sil-scm.org/">Fe
3550: 61 74 75 72 65 73 3c 2f 61 3e 0d 0a 20 20 20 20  atures</a>..    
3560: 20 20 3c 61 20 68 72 65 66 3d 22 74 69 6d 65 6c    <a href="timel
3570: 69 6e 65 3f 79 3d 77 22 3e 57 69 6b 69 3c 2f 61  ine?y=w">Wiki</a
3580: 3e 0d 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66  >..      <a href
3590: 3d 22 74 69 6d 65 6c 69 6e 65 3f 6e 3d 32 30 26  ="timeline?n=20&
35a0: 79 3d 65 22 3e 42 6c 6f 67 3c 2f 61 3e 0d 0a 20  y=e">Blog</a>.. 
35b0: 20 20 20 20 20 3c 73 70 61 6e 20 73 74 79 6c 65       <span style
35c0: 3d 66 6c 6f 61 74 3a 72 69 67 68 74 3e 0d 0a 20  =float:right>.. 
35d0: 20 20 20 20 20 20 20 3c 74 68 31 3e 0d 0a 20 20         <th1>..  
35e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 68            if {[h
35f0: 61 73 63 61 70 20 73 5d 7d 20 7b 20 68 74 6d 6c  ascap s]} { html
3600: 20 7b 3c 61 20 68 72 65 66 3d 73 65 74 75 70 20   {<a href=setup 
3610: 63 6c 61 73 73 3d 22 62 75 74 74 6f 6e 20 72 65  class="button re
3620: 64 20 74 65 78 74 2d 73 68 61 64 6f 77 22 3e 41  d text-shadow">A
3630: 64 6d 69 6e 3c 2f 61 3e 7d 0d 0a 20 20 20 20 20  dmin</a>}..     
3640: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20         } else { 
3650: 68 74 6d 6c 20 7b 3c 61 20 68 72 65 66 3d 73 65  html {<a href=se
3660: 74 75 70 20 63 6c 61 73 73 3d 22 62 75 74 74 6f  tup class="butto
3670: 6e 20 67 72 65 65 6e 20 74 65 78 74 2d 73 68 61  n green text-sha
3680: 64 6f 77 22 3e 53 69 67 6e 20 75 70 3c 2f 61 3e  dow">Sign up</a>
3690: 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 3c 2f 74  } }..        </t
36a0: 68 31 3e 0d 0a 20 20 20 20 20 20 20 20 3c 61 20  h1>..        <a 
36b0: 68 72 65 66 3d 6c 6f 67 69 6e 20 63 6c 61 73 73  href=login class
36c0: 3d 22 62 75 74 74 6f 6e 20 77 68 69 74 65 20 74  ="button white t
36d0: 65 78 74 2d 73 68 61 64 6f 77 22 3e 3c 74 68 31  ext-shadow"><th1
36e0: 3e 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  >if {[info exist
36f0: 73 20 6c 6f 67 69 6e 5d 7d 20 7b 20 70 75 74 73  s login]} { puts
3700: 20 24 6c 6f 67 69 6e 20 7d 20 65 6c 73 65 20 7b   $login } else {
3710: 20 70 75 74 73 20 22 53 69 67 6e 20 69 6e 22 20   puts "Sign in" 
3720: 7d 3c 2f 74 68 31 3e 3c 2f 61 3e 0d 0a 20 20 20  }</th1></a>..   
3730: 20 20 20 3c 2f 73 70 61 6e 3e 0d 0a 20 20 3c 2f     </span>..  </
3740: 64 69 76 3e 3c 2f 66 6f 6f 74 65 72 3e 0d 0a 0d  div></footer>...
3750: 0a 0d 0a 0d 0a 20 20 3c 66 6f 6f 74 65 72 20 69  .....  <footer i
3760: 64 3d 70 72 6f 6a 65 63 74 2d 68 65 61 64 65 72  d=project-header
3770: 3e 3c 64 69 76 20 63 6c 61 73 73 3d 77 69 64 74  ><div class=widt
3780: 68 2d 63 6f 6e 74 61 69 6e 65 72 3e 0d 0a 20 20  h-container>..  
3790: 20 20 20 20 3c 73 70 61 6e 20 73 74 79 6c 65 3d      <span style=
37a0: 70 6f 73 69 74 69 6f 6e 3a 61 62 73 6f 6c 75 74  position:absolut
37b0: 65 3e 3c 73 70 61 6e 20 69 64 3d 70 75 62 6c 69  e><span id=publi
37c0: 63 2d 70 72 65 66 69 78 3e 50 55 42 4c 49 43 26  c-prefix>PUBLIC&
37d0: 6e 62 73 70 3b 3c 2f 73 70 61 6e 3e 3c 2f 73 70  nbsp;</span></sp
37e0: 61 6e 3e 0d 0a 20 20 20 20 20 20 3c 69 6d 67 20  an>..      <img 
37f0: 73 72 63 3d 22 2f 66 6f 73 73 69 6c 2d 69 63 6f  src="/fossil-ico
3800: 6e 2e 70 6e 67 22 20 61 6c 69 67 6e 3d 6d 69 64  n.png" align=mid
3810: 64 6c 65 20 68 65 69 67 68 74 3d 33 32 20 77 69  dle height=32 wi
3820: 64 74 68 3d 33 32 3e 0d 0a 20 20 20 20 20 20 3c  dth=32>..      <
3830: 61 20 68 72 65 66 3d 22 2e 2e 2f 2e 2e 22 3e 24  a href="../..">$
3840: 62 61 73 65 64 6f 6d 61 69 6e 3c 2f 61 3e 20 2f  basedomain</a> /
3850: 20 3c 61 20 68 72 65 66 3d 69 6e 64 65 78 3e 3c   <a href=index><
3860: 62 3e 24 70 72 6f 6a 65 63 74 5f 6e 61 6d 65 3c  b>$project_name<
3870: 2f 62 3e 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 3c  /b></a>..      <
3880: 73 70 61 6e 20 73 74 79 6c 65 3d 22 66 6c 6f 61  span style="floa
3890: 74 3a 72 69 67 68 74 3b 22 3e 0d 0a 20 20 20 20  t:right;">..    
38a0: 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73       <span class
38b0: 3d 73 68 61 72 65 2d 62 75 74 74 6f 6e 20 69 64  =share-button id
38c0: 3d 73 68 61 72 65 2d 62 75 74 74 6f 6e 20 6f 6e  =share-button on
38d0: 63 6c 69 63 6b 3d 22 24 28 27 27 23 73 68 61 72  click="$(''#shar
38e0: 65 2d 62 75 74 74 6f 6e 3e 73 70 61 6e 27 27 29  e-button>span'')
38f0: 2e 74 6f 67 67 6c 65 28 27 27 37 35 27 27 29 22  .toggle(''75'')"
3900: 3e 26 23 39 37 33 33 3b 20 53 74 61 72 0d 0a 20  >&#9733; Star.. 
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73                <s
3920: 70 61 6e 20 63 6c 61 73 73 3d 73 6f 63 69 61 6c  pan class=social
3930: 2d 6c 69 6e 6b 73 20 73 74 79 6c 65 3d 64 69 73  -links style=dis
3940: 70 6c 61 79 3a 6e 6f 6e 65 3e 3c 74 68 31 3e 63  play:none><th1>c
3950: 61 74 63 68 20 7b 20 75 69 3a 3a 73 6f 63 69 61  atch { ui::socia
3960: 6c 5f 6c 69 6e 6b 73 20 24 62 61 73 65 75 72 6c  l_links $baseurl
3970: 20 7d 3c 2f 74 68 31 3e 3c 2f 73 70 61 6e 3e 3c   }</th1></span><
3980: 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73  /span><span clas
3990: 73 3d 73 68 61 72 65 2d 62 75 74 74 6f 6e 2d 6e  s=share-button-n
39a0: 75 6d 62 65 72 3e 24 73 74 61 74 73 5f 73 6f 63  umber>$stats_soc
39b0: 69 61 6c 3c 2f 73 70 61 6e 3e 0d 0a 20 20 20 20  ial</span>..    
39c0: 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73       <span class
39d0: 3d 73 68 61 72 65 2d 62 75 74 74 6f 6e 20 67 6c  =share-button gl
39e0: 79 70 68 3e 26 23 39 39 38 38 3b 20 46 6f 72 6b  yph>&#9988; Fork
39f0: 3c 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61  </span><span cla
3a00: 73 73 3d 73 68 61 72 65 2d 62 75 74 74 6f 6e 2d  ss=share-button-
3a10: 6e 75 6d 62 65 72 3e 24 73 74 61 74 73 5f 66 6f  number>$stats_fo
3a20: 72 6b 73 3c 2f 73 70 61 6e 3e 0d 0a 20 20 20 20  rks</span>..    
3a30: 20 20 3c 2f 73 70 61 6e 3e 0d 0a 20 20 3c 2f 64    </span>..  </d
3a40: 69 76 3e 3c 2f 66 6f 6f 74 65 72 3e 0d 0a 20 20  iv></footer>..  
3a50: 0d 0a 0d 0a 0d 0a 0d 0a 20 20 3c 73 65 63 74 69  ........  <secti
3a60: 6f 6e 20 69 64 3d 6d 61 69 6e 2d 63 6f 6e 74 65  on id=main-conte
3a70: 6e 74 3e 3c 64 69 76 20 63 6c 61 73 73 3d 77 69  nt><div class=wi
3a80: 64 74 68 2d 63 6f 6e 74 61 69 6e 65 72 3e 0d 0a  dth-container>..
3a90: 20 20 0d 0a 20 20 20 20 3c 61 73 69 64 65 20 69    ..    <aside i
3aa0: 64 3d 66 75 6e 63 74 69 6f 6e 2d 73 69 64 65 62  d=function-sideb
3ab0: 61 72 3e 0d 0a 20 20 20 20 20 20 20 3c 75 6c 3e  ar>..       <ul>
3ac0: 0d 0a 20 20 20 20 20 20 20 20 20 3c 6c 69 20 73  ..         <li s
3ad0: 74 79 6c 65 3d 70 61 64 64 69 6e 67 3a 35 70 74  tyle=padding:5pt
3ae0: 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69  >..          <li
3af0: 3c 74 68 31 3e 63 75 72 72 65 6e 74 20 69 6e 64  <th1>current ind
3b00: 65 78 7c 74 72 65 65 7c 64 69 72 7c 66 69 6e 66  ex|tree|dir|finf
3b10: 6f 7c 61 72 74 69 66 61 63 74 7c 72 61 77 7c 68  o|artifact|raw|h
3b20: 65 78 3c 2f 74 68 31 3e 3e 3c 61 20 68 72 65 66  ex</th1>><a href
3b30: 3d 74 72 65 65 3f 74 79 70 65 3d 74 72 65 65 26  =tree?type=tree&
3b40: 63 69 3d 74 72 75 6e 6b 3e 20 20 3c 62 20 63 6c  ci=trunk>  <b cl
3b50: 61 73 73 3d 67 6c 79 70 68 3e 26 6c 74 3b 26 67  ass=glyph>&lt;&g
3b60: 74 3b 3c 2f 62 3e 20 20 3c 73 70 61 6e 20 63 6c  t;</b>  <span cl
3b70: 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 20 43 6f  ass=optional> Co
3b80: 64 65 20 3c 2f 73 70 61 6e 3e 3c 2f 61 3e 3c 2f  de </span></a></
3b90: 6c 69 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c  li>..          <
3ba0: 6c 69 3c 74 68 31 3e 63 75 72 72 65 6e 74 20 72  li<th1>current r
3bb0: 65 70 6f 72 74 6c 69 73 74 7c 74 6b 74 7c 72 70  eportlist|tkt|rp
3bc0: 74 3c 2f 74 68 31 3e 3e 3c 61 20 68 72 65 66 3d  t</th1>><a href=
3bd0: 72 65 70 6f 72 74 6c 69 73 74 20 74 69 74 6c 65  reportlist title
3be0: 3d 54 69 63 6b 65 74 73 3e 20 20 3c 62 20 63 6c  =Tickets>  <b cl
3bf0: 61 73 73 3d 67 6c 79 70 68 3e f0 9f 93 8c 3c 2f  ass=glyph>....</
3c00: 62 3e 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73  b>   <span class
3c10: 3d 6f 70 74 69 6f 6e 61 6c 3e 20 49 73 73 75 65  =optional> Issue
3c20: 73 20 3c 2f 73 70 61 6e 3e 3c 2f 61 3e 3c 2f 6c  s </span></a></l
3c30: 69 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c 6c  i>..          <l
3c40: 69 3c 74 68 31 3e 63 75 72 72 65 6e 74 20 77 69  i<th1>current wi
3c50: 6b 69 7c 77 63 6f 6e 74 65 6e 74 7c 77 68 69 73  ki|wcontent|whis
3c60: 74 7c 61 74 74 61 63 68 7c 77 64 69 66 66 3c 2f  t|attach|wdiff</
3c70: 74 68 31 3e 3e 3c 61 20 68 72 65 66 3d 77 63 6f  th1>><a href=wco
3c80: 6e 74 65 6e 74 20 74 69 74 6c 65 3d 57 69 6b 69  ntent title=Wiki
3c90: 3e 20 20 20 20 20 20 20 3c 62 20 63 6c 61 73 73  >       <b class
3ca0: 3d 67 6c 79 70 68 3e f0 9f 93 96 3c 2f 62 3e 20  =glyph>....</b> 
3cb0: 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6f 70    <span class=op
3cc0: 74 69 6f 6e 61 6c 3e 20 57 69 6b 69 20 3c 2f 73  tional> Wiki </s
3cd0: 70 61 6e 3e 3c 2f 61 3e 3c 2f 6c 69 3e 0d 0a 20  pan></a></li>.. 
3ce0: 20 20 20 20 20 20 20 20 20 3c 6c 69 3c 74 68 31           <li<th1
3cf0: 3e 63 75 72 72 65 6e 74 20 74 69 6d 65 6c 69 6e  >current timelin
3d00: 65 3c 2f 74 68 31 3e 3e 3c 61 20 68 72 65 66 3d  e</th1>><a href=
3d10: 74 69 6d 65 6c 69 6e 65 20 74 69 74 6c 65 3d 54  timeline title=T
3d20: 69 6d 65 3e 20 20 20 20 20 20 20 3c 62 20 63 6c  ime>       <b cl
3d30: 61 73 73 3d 67 6c 79 70 68 3e f0 9f 93 b0 3c 2f  ass=glyph>....</
3d40: 62 3e 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73  b>   <span class
3d50: 3d 6f 70 74 69 6f 6e 61 6c 3e 20 50 75 6c 73 65  =optional> Pulse
3d60: 20 3c 2f 73 70 61 6e 3e 3c 2f 61 3e 3c 2f 6c 69   </span></a></li
3d70: 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69  >..          <li
3d80: 3c 74 68 31 3e 63 75 72 72 65 6e 74 20 72 65 70  <th1>current rep
3d90: 6f 72 74 73 3c 2f 74 68 31 3e 3e 3c 61 20 68 72  orts</th1>><a hr
3da0: 65 66 3d 72 65 70 6f 72 74 73 20 74 69 74 6c 65  ef=reports title
3db0: 3d 47 72 61 70 68 73 3e 20 20 20 20 20 20 3c 62  =Graphs>      <b
3dc0: 20 63 6c 61 73 73 3d 67 6c 79 70 68 3e f0 9f 93   class=glyph>...
3dd0: 8a 3c 2f 62 3e 20 20 20 3c 73 70 61 6e 20 63 6c  .</b>   <span cl
3de0: 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 20 47 72  ass=optional> Gr
3df0: 61 70 68 73 20 3c 2f 73 70 61 6e 3e 3c 2f 61 3e  aphs </span></a>
3e00: 3c 2f 6c 69 3e 0d 0a 20 20 20 20 20 20 20 20 20  </li>..         
3e10: 20 3c 6c 69 3c 74 68 31 3e 63 75 72 72 65 6e 74   <li<th1>current
3e20: 20 74 61 67 3c 2f 74 68 31 3e 3e 3c 61 20 68 72   tag</th1>><a hr
3e30: 65 66 3d 74 61 67 6c 69 73 74 20 74 69 74 6c 65  ef=taglist title
3e40: 3d 54 61 67 73 3e 20 20 20 20 20 20 20 20 3c 62  =Tags>        <b
3e50: 20 63 6c 61 73 73 3d 67 6c 79 70 68 3e f0 9f 93   class=glyph>...
3e60: 9b 3c 2f 62 3e 20 20 20 3c 73 70 61 6e 20 63 6c  .</b>   <span cl
3e70: 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 20 54 61  ass=optional> Ta
3e80: 67 73 20 3c 2f 73 70 61 6e 3e 3c 2f 61 3e 3c 2f  gs </span></a></
3e90: 6c 69 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c  li>..          <
3ea0: 6c 69 20 73 74 79 6c 65 3d 70 61 64 64 69 6e 67  li style=padding
3eb0: 3a 33 70 74 3e 0d 0a 20 20 20 20 20 20 20 3c 2f  :3pt>..       </
3ec0: 75 6c 3e 0d 0a 20 20 20 20 20 20 20 3c 70 20 63  ul>..       <p c
3ed0: 6c 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 0d 0a  lass=optional>..
3ee0: 20 20 20 20 20 20 20 20 20 20 3c 62 3e 48 54 54            <b>HTT
3ef0: 50 3c 2f 62 3e 53 20 73 79 6e 63 20 55 52 4c 3c  P</b>S sync URL<
3f00: 62 72 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c  br>..          <
3f10: 69 6e 70 75 74 20 74 79 70 65 3d 75 72 6c 20 73  input type=url s
3f20: 69 7a 65 3d 31 35 20 76 61 6c 75 65 3d 22 24 3c  ize=15 value="$<
3f30: 62 61 73 65 75 72 6c 3e 2f 78 66 65 72 22 20 73  baseurl>/xfer" s
3f40: 74 79 6c 65 3d 22 62 6f 72 64 65 72 3a 20 31 70  tyle="border: 1p
3f50: 78 20 73 6f 6c 69 64 20 23 64 64 64 3b 20 62 6f  x solid #ddd; bo
3f60: 72 64 65 72 2d 72 61 64 69 75 73 3a 20 33 70 78  rder-radius: 3px
3f70: 22 20 6f 6e 43 6c 69 63 6b 3d 22 73 65 6c 65 63  " onClick="selec
3f80: 74 28 29 22 3e 3c 62 72 3e 0d 0a 20 20 20 20 20  t()"><br>..     
3f90: 20 20 20 20 20 3c 61 20 63 6c 61 73 73 3d 22 64       <a class="d
3fa0: 6f 77 6e 6c 6f 61 64 20 62 75 74 74 6f 6e 20 77  ownload button w
3fb0: 68 69 74 65 20 74 65 78 74 2d 73 68 61 64 6f 77  hite text-shadow
3fc0: 22 20 68 72 65 66 3d 22 24 3c 62 61 73 65 75 72  " href="$<baseur
3fd0: 6c 3e 2f 7a 69 70 2f 24 3c 70 72 6f 6a 65 63 74  l>/zip/$<project
3fe0: 5f 6e 61 6d 65 3e 2e 7a 69 70 3f 75 75 69 64 3d  _name>.zip?uuid=
3ff0: 74 72 75 6e 6b 22 3e e2 9e b1 26 6e 62 73 70 3b  trunk">...&nbsp;
4000: 44 6f 77 6e 6c 6f 61 64 20 5a 49 50 3c 2f 61 3e  Download ZIP</a>
4010: 0d 0a 20 20 20 20 20 20 20 20 20 20 3c 61 20 63  ..          <a c
4020: 6c 61 73 73 3d 22 64 6f 77 6e 6c 6f 61 64 20 62  lass="download b
4030: 75 74 74 6f 6e 20 77 68 69 74 65 20 74 65 78 74  utton white text
4040: 2d 73 68 61 64 6f 77 22 20 68 72 65 66 3d 22 24  -shadow" href="$
4050: 3c 62 61 73 65 75 72 6c 3e 2f 74 61 72 62 61 6c  <baseurl>/tarbal
4060: 6c 2f 24 3c 70 72 6f 6a 65 63 74 5f 6e 61 6d 65  l/$<project_name
4070: 3e 2e 74 67 7a 3f 75 75 69 64 3d 74 72 75 6e 6b  >.tgz?uuid=trunk
4080: 22 3e e2 9e b1 26 6e 62 73 70 3b 44 6f 77 6e 6c  ">...&nbsp;Downl
4090: 6f 61 64 20 54 47 5a 3c 2f 61 3e 0d 0a 20 20 20  oad TGZ</a>..   
40a0: 20 20 20 20 3c 2f 70 3e 0d 0a 20 20 20 20 3c 2f      </p>..    </
40b0: 61 73 69 64 65 3e 0d 0a 0d 0a 0d 0a 0d 0a 20 20  aside>........  
40c0: 20 20 3c 73 65 63 74 69 6f 6e 20 69 64 3d 70 72    <section id=pr
40d0: 6f 6a 65 63 74 2d 63 6f 6e 74 65 6e 74 3e 0d 0a  oject-content>..
40e0: 20 20 20 20 20 20 20 3c 61 72 74 69 63 6c 65 20         <article 
40f0: 63 6c 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 0d  class=optional>.
4100: 0a 20 20 20 20 20 20 20 20 20 20 24 73 74 61 74  .          $stat
4110: 73 5f 64 65 73 63 72 69 70 74 69 6f 6e 0d 0a 20  s_description.. 
4120: 20 20 20 20 20 20 3c 2f 61 72 74 69 63 6c 65 3e        </article>
4130: 0d 0a 0d 0a 0d 0a 20 20 20 20 20 20 20 0d 0a 20  ......       .. 
4140: 20 20 20 20 20 20 3c 73 65 63 74 69 6f 6e 20 69        <section i
4150: 64 3d 70 72 6f 6a 65 63 74 2d 73 74 61 74 73 20  d=project-stats 
4160: 63 6c 61 73 73 3d 6f 70 74 69 6f 6e 61 6c 3e 0d  class=optional>.
4170: 0a 20 20 20 20 20 20 20 3c 74 68 31 3e 0d 0a 20  .       <th1>.. 
4180: 20 20 20 20 20 20 69 66 20 7b 24 70 61 67 65 63        if {$pagec
4190: 61 74 20 65 71 20 22 69 6e 64 65 78 22 7d 20 7b  at eq "index"} {
41a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20  ..          set 
41b0: 73 74 61 74 73 5f 63 68 65 63 6b 69 6e 73 20 5b  stats_checkins [
41c0: 73 65 74 20 73 74 61 74 73 5f 62 72 61 6e 63 68  set stats_branch
41d0: 65 73 20 5b 73 65 74 20 73 74 61 74 73 5f 72 65  es [set stats_re
41e0: 6c 65 61 73 65 73 20 5b 73 65 74 20 73 74 61 74  leases [set stat
41f0: 73 5f 64 65 76 65 6c 6f 70 65 72 73 20 30 5d 5d  s_developers 0]]
4200: 5d 20 3b 20 63 61 74 63 68 20 7b 20 75 69 3a 3a  ] ; catch { ui::
4210: 73 74 61 74 73 20 7d 0d 0a 20 20 20 20 20 20 20  stats }..       
4220: 20 20 20 68 74 6d 6c 20 22 0d 0a 20 20 20 20 20     html "..     
4230: 20 20 20 20 20 20 3c 64 69 76 20 69 64 3d 70 72        <div id=pr
4240: 6f 6a 65 63 74 2d 73 74 61 74 73 2d 61 6c 74 65  oject-stats-alte
4250: 72 6e 61 74 65 3e 0d 0a 20 20 20 20 20 20 20 20  rnate>..        
4260: 20 20 20 3c 64 69 76 3e 0d 0a 20 20 20 20 20 20     <div>..      
4270: 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 27 27        <a href=''
4280: 74 69 6d 65 6c 69 6e 65 3f 79 3d 63 69 27 27 3e  timeline?y=ci''>
4290: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 67 6c 79 70  <span class=glyp
42a0: 68 3e e2 97 b6 3c 2f 73 70 61 6e 3e 20 3c 62 3e  h>...</span> <b>
42b0: 24 73 74 61 74 73 5f 63 68 65 63 6b 69 6e 73 3c  $stats_checkins<
42c0: 2f 62 3e 20 63 6f 6d 6d 69 74 73 3c 2f 61 3e 0d  /b> commits</a>.
42d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20  .            <a 
42e0: 68 72 65 66 3d 62 72 6c 69 73 74 3e 20 20 20 20  href=brlist>    
42f0: 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73       <span class
4300: 3d 67 6c 79 70 68 3e e2 8e 87 3c 2f 73 70 61 6e  =glyph>...</span
4310: 3e 20 20 3c 62 3e 24 73 74 61 74 73 5f 62 72 61  >  <b>$stats_bra
4320: 6e 63 68 65 73 3c 2f 62 3e 20 62 72 61 6e 63 68  nches</b> branch
4330: 65 73 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 20 20  es</a>..        
4340: 20 20 20 20 3c 61 20 68 72 65 66 3d 74 61 67 6c      <a href=tagl
4350: 69 73 74 3e 20 20 20 20 20 20 20 20 3c 73 70 61  ist>        <spa
4360: 6e 20 63 6c 61 73 73 3d 67 6c 79 70 68 3e e2 8c  n class=glyph>..
4370: ab 3c 2f 73 70 61 6e 3e 20 20 3c 62 3e 24 73 74  .</span>  <b>$st
4380: 61 74 73 5f 72 65 6c 65 61 73 65 73 3c 2f 62 3e  ats_releases</b>
4390: 20 72 65 6c 65 61 73 65 73 3c 2f 61 3e 0d 0a 20   releases</a>.. 
43a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43b0: 20 3c 61 20 68 72 65 66 3d 27 27 74 69 6d 65 6c   <a href=''timel
43c0: 69 6e 65 3f 75 3d 2a 27 27 3e 20 3c 73 70 61 6e  ine?u=*''> <span
43d0: 20 63 6c 61 73 73 3d 67 6c 79 70 68 3e e2 99 99   class=glyph>...
43e0: 3c 2f 73 70 61 6e 3e 20 3c 62 3e 24 73 74 61 74  </span> <b>$stat
43f0: 73 5f 64 65 76 65 6c 6f 70 65 72 73 3c 2f 62 3e  s_developers</b>
4400: 20 64 65 76 65 6c 6f 70 65 72 73 3c 2f 61 3e 0d   developers</a>.
4410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4420: 3c 2f 64 69 76 3e 0d 0a 20 20 20 20 20 20 20 20  </div>..        
4430: 20 20 20 20 20 20 20 3c 64 69 76 3e 0d 0a 20 20         <div>..  
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4450: 3c 61 20 68 72 65 66 3d 23 3e 3c 62 3e 31 30 30  <a href=#><b>100
4460: 25 3c 2f 62 3e 20 6f 70 65 6e 20 73 6f 75 72 63  %</b> open sourc
4470: 65 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 20 20 20  e</a>..         
4480: 20 20 20 20 20 20 3c 2f 64 69 76 3e 0d 0a 20 20        </div>..  
4490: 20 20 20 20 20 20 20 20 20 3c 2f 64 69 76 3e 0d           </div>.
44a0: 0a 20 20 20 20 20 20 20 20 20 20 20 22 0d 0a 20  .           ".. 
44b0: 20 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 7b            html {
44c0: 20 3c 64 69 76 20 6f 6e 63 6c 69 63 6b 3d 22 24   <div onclick="$
44d0: 28 27 27 23 70 72 6f 6a 65 63 74 2d 73 74 61 74  (''#project-stat
44e0: 73 2d 61 6c 74 65 72 6e 61 74 65 20 64 69 76 3a  s-alternate div:
44f0: 65 71 28 30 29 27 27 29 2e 74 6f 67 67 6c 65 28  eq(0)'').toggle(
4500: 27 27 73 6c 6f 77 27 27 29 22 20 69 64 3d 6c 61  ''slow'')" id=la
4510: 6e 67 75 61 67 65 2d 62 61 72 3e 20 7d 0d 0a 20  nguage-bar> }.. 
4520: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
4530: 7b 20 75 69 3a 3a 6c 61 6e 67 5f 73 74 61 74 73  { ui::lang_stats
4540: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 68   }..           h
4550: 74 6d 6c 20 7b 20 3c 2f 64 69 76 3e 20 7d 0d 0a  tml { </div> }..
4560: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4570: 20 3c 2f 74 68 31 3e 0d 0a 20 20 20 20 20 20 20   </th1>..       
4580: 3c 2f 73 65 63 74 69 6f 6e 3e 0d 0a 0d 0a 0d 0a  </section>......
4590: 0d 0a 20 20 20 20 20 20 20 3c 62 72 3e 0d 0a 20  ..       <br>.. 
45a0: 20 20 20 20 20 20 3c 73 65 63 74 69 6f 6e 20 69        <section i
45b0: 64 3d 62 72 61 6e 63 68 2d 69 6e 66 6f 3e 0d 0a  d=branch-info>..
45c0: 20 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61 73           <a clas
45d0: 73 3d 22 62 72 61 6e 63 68 20 62 75 74 74 6f 6e  s="branch button
45e0: 20 67 72 65 65 6e 22 20 69 64 3d 64 69 66 66 2d   green" id=diff-
45f0: 62 75 74 74 6f 6e 20 68 72 65 66 3d 63 69 2f 74  button href=ci/t
4600: 69 70 3e e2 8c 88 e2 8c 8b 3c 2f 61 3e 0d 0a 20  ip>......</a>.. 
4610: 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61 73 73          <a class
4620: 3d 22 62 72 61 6e 63 68 20 62 75 74 74 6f 6e 20  ="branch button 
4630: 77 68 69 74 65 22 20 69 64 3d 62 72 61 6e 63 68  white" id=branch
4640: 2d 62 75 74 74 6f 6e 20 68 72 65 66 3d 62 72 6c  -button href=brl
4650: 69 73 74 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d  ist><span class=
4660: 67 6c 79 70 68 3e e2 8e 87 3c 2f 73 70 61 6e 3e  glyph>...</span>
4670: 20 20 3c 73 6d 61 6c 6c 3e 62 72 61 6e 63 68 3a    <small>branch:
4680: 3c 2f 73 6d 61 6c 6c 3e 0d 0a 20 20 20 20 20 20  </small>..      
4690: 20 20 20 20 20 20 20 3c 73 65 6c 65 63 74 20 6e         <select n
46a0: 61 6d 65 3d 62 72 61 6e 63 68 20 6f 6e 63 6c 69  ame=branch oncli
46b0: 63 6b 3d 22 6a 73 6f 6e 5f 61 70 69 28 27 27 62  ck="json_api(''b
46c0: 72 61 6e 63 68 2f 6c 69 73 74 27 27 2c 20 73 68  ranch/list'', sh
46d0: 6f 77 5f 62 72 61 6e 63 68 65 73 29 3b 20 65 76  ow_branches); ev
46e0: 65 6e 74 2e 70 72 65 76 65 6e 74 44 65 66 61 75  ent.preventDefau
46f0: 6c 74 28 29 3b 22 20 6f 6e 43 68 61 6e 67 65 3d  lt();" onChange=
4700: 22 6c 6f 63 61 74 69 6f 6e 2e 72 65 70 6c 61 63  "location.replac
4710: 65 28 27 27 74 69 6d 65 6c 69 6e 65 3f 72 3d 27  e(''timeline?r='
4720: 27 2b 74 68 69 73 2e 76 61 6c 75 65 29 22 3e 3c  '+this.value)"><
4730: 6f 70 74 69 6f 6e 20 73 74 79 6c 65 3d 22 66 6f  option style="fo
4740: 6e 74 2d 77 65 69 67 68 74 3a 39 30 30 3b 63 6f  nt-weight:900;co
4750: 6c 6f 72 3a 72 65 64 3b 22 3e 74 72 75 6e 6b 3c  lor:red;">trunk<
4760: 2f 73 65 6c 65 63 74 3e 3c 2f 61 3e 0d 0a 20 20  /select></a>..  
4770: 20 20 20 20 20 20 20 26 6e 62 73 70 3b 3c 61 20         &nbsp;<a 
4780: 68 72 65 66 3d 69 6e 64 65 78 3e 3c 62 3e 24 70  href=index><b>$p
4790: 72 6f 6a 65 63 74 5f 6e 61 6d 65 3c 2f 62 3e 3c  roject_name</b><
47a0: 2f 61 3e 0d 0a 20 20 20 20 20 20 20 3c 2f 73 65  /a>..       </se
47b0: 63 74 69 6f 6e 3e 0d 0a 0d 0a 0d 0a 0d 0a 20 20  ction>........  
47c0: 20 20 20 20 20 3c 62 72 3e 0d 0a 20 20 20 20 20       <br>..     
47d0: 3c 74 68 31 3e 0d 0a 20 20 20 20 20 63 61 74 63  <th1>..     catc
47e0: 68 20 7b 0d 0a 20 20 20 20 20 20 20 69 66 20 7b  h {..       if {
47f0: 24 70 61 67 65 63 61 74 20 65 71 20 22 69 6e 64  $pagecat eq "ind
4800: 65 78 22 20 7c 7c 20 5b 73 74 72 69 6e 67 20 6c  ex" || [string l
4810: 65 6e 67 74 68 20 24 70 61 67 65 6e 61 6d 65 5d  ength $pagename]
4820: 20 26 26 20 5b 73 71 6c 3a 3a 64 69 72 5f 65 78   && [sql::dir_ex
4830: 69 73 74 73 20 24 70 61 67 65 6e 61 6d 65 5d 7d  ists $pagename]}
4840: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 68 74 6d   {..         htm
4850: 6c 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 3c  l {..          <
4860: 73 65 63 74 69 6f 6e 20 69 64 3d 72 65 63 65 6e  section id=recen
4870: 74 2d 66 69 6c 65 73 3e 0d 0a 20 20 20 20 20 20  t-files>..      
4880: 20 20 20 20 3c 74 61 62 6c 65 3e 3c 63 6f 6c 67      <table><colg
4890: 72 6f 75 70 3e 3c 63 6f 6c 20 73 74 79 6c 65 3d  roup><col style=
48a0: 22 77 69 64 74 68 3a 32 35 25 22 3e 3c 63 6f 6c  "width:25%"><col
48b0: 20 73 74 79 6c 65 3d 22 77 69 64 74 68 3a 36 30   style="width:60
48c0: 25 22 3e 3c 63 6f 6c 20 73 74 79 6c 65 3d 22 77  %"><col style="w
48d0: 69 64 74 68 3a 31 35 25 22 3e 3c 2f 63 6f 6c 67  idth:15%"></colg
48e0: 72 6f 75 70 3e 3c 74 62 6f 64 79 3e 0d 0a 20 20  roup><tbody>..  
48f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
4900: 20 20 20 20 20 75 69 3a 3a 6c 61 73 74 5f 63 6f       ui::last_co
4910: 6d 6d 69 74 20 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit ;....      
4920: 20 20 20 75 69 3a 3a 72 65 63 65 6e 74 5f 66 69     ui::recent_fi
4930: 6c 65 73 20 5b 3f 3a 20 7b 24 70 61 67 65 63 61  les [?: {$pageca
4940: 74 20 65 71 20 22 69 6e 64 65 78 22 7d 20 22 22  t eq "index"} ""
4950: 20 22 24 70 61 67 65 6e 61 6d 65 22 5d 0d 0a 0d   "$pagename"]...
4960: 0a 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 7b  .         html {
4970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 3c 2f 74  ..           </t
4980: 62 6f 64 79 3e 3c 2f 74 61 62 6c 65 3e 0d 0a 20  body></table>.. 
4990: 20 20 20 20 20 20 20 20 20 20 3c 2f 73 65 63 74            </sect
49a0: 69 6f 6e 3e 0d 0a 20 20 20 20 20 20 20 20 20 7d  ion>..         }
49b0: 0d 0a 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ..       }..    
49c0: 20 7d 0d 0a 20 20 20 20 20 3c 2f 74 68 31 3e 0d   }..     </th1>.
49d0: 0a 0d 0a 0d 0a 20 0d 0a 20 20 20 20 20 20 20 3c  ..... ..       <
49e0: 62 72 3e 0d 0a 20 20 20 20 20 20 20 3c 6d 61 69  br>..       <mai
49f0: 6e 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 3c 68  n>..          <h
4a00: 32 20 63 6c 61 73 73 3d 70 61 67 65 2d 74 69 74  2 class=page-tit
4a10: 6c 65 3e 24 74 69 74 6c 65 3c 2f 68 32 3e 0d 0a  le>$title</h2>..
4a20: 20 20 20 20 20 20 20 20 20 20 3c 61 72 74 69 63            <artic
4a30: 6c 65 20 73 74 79 6c 65 3d 70 61 64 64 69 6e 67  le style=padding
4a40: 3a 37 70 74 3e 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 27  :7pt>..........'
4a50: 0a 63 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67 20  .config /config 
4a60: 31 39 39 38 0a 31 34 37 32 39 39 32 31 30 39 20  1998.1472992109 
4a70: 27 66 6f 6f 74 65 72 27 20 76 61 6c 75 65 20 27  'footer' value '
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 62 72               <br
4a90: 3e 3c 62 72 3e 3c 62 72 3e 0a 0a 0a 20 20 20 20  ><br><br>...    
4aa0: 20 20 20 20 20 20 3c 2f 61 72 74 69 63 6c 65 3e        </article>
4ab0: 0a 20 20 20 20 20 20 20 3c 2f 6d 61 69 6e 3e 0a  .       </main>.
4ac0: 0a 20 20 20 20 3c 2f 73 65 63 74 69 6f 6e 3e 0a  .    </section>.
4ad0: 0a 20 20 3c 2f 64 69 76 3e 3c 2f 73 65 63 74 69  .  </div></secti
4ae0: 6f 6e 3e 0a 0a 0a 0a 0a 20 20 3c 64 69 76 20 63  on>.....  <div c
4af0: 6c 61 73 73 3d 77 69 64 74 68 2d 63 6f 6e 74 61  lass=width-conta
4b00: 69 6e 65 72 3e 0a 20 20 20 20 3c 66 6f 6f 74 65  iner>.    <foote
4b10: 72 20 69 64 3d 66 6f 73 73 69 6c 2d 66 6f 6f 74  r id=fossil-foot
4b20: 65 72 3e 0a 20 20 20 20 20 20 20 20 3c 70 3e 3c  er>.        <p><
4b30: 61 20 68 72 65 66 3d 68 74 74 70 3a 2f 2f 66 6f  a href=http://fo
4b40: 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 3e 46 6f  ssil-scm.org/>Fo
4b50: 73 73 69 6c 3c 2f 61 3e 20 76 65 72 73 69 6f 6e  ssil</a> version
4b60: 20 3c 74 74 3e 24 72 65 6c 65 61 73 65 5f 76 65   <tt>$release_ve
4b70: 72 73 69 6f 6e 3c 2f 74 74 3e 20 7c 20 4d 61 6e  rsion</tt> | Man
4b80: 69 66 65 73 74 3a 20 24 6d 61 6e 69 66 65 73 74  ifest: $manifest
4b90: 5f 76 65 72 73 69 6f 6e 20 7c 20 4d 61 6e 69 66  _version | Manif
4ba0: 65 73 74 20 64 61 74 65 3a 20 24 6d 61 6e 69 66  est date: $manif
4bb0: 65 73 74 5f 64 61 74 65 0a 20 20 20 20 20 20 20  est_date.       
4bc0: 20 3c 2f 70 3e 0a 20 20 20 20 20 20 20 20 3c 70   </p>.        <p
4bd0: 3e 0a 20 20 20 20 20 20 20 20 20 20 20 3c 61 20  >.           <a 
4be0: 63 6c 61 73 73 3d 22 62 75 74 74 6f 6e 20 67 72  class="button gr
4bf0: 65 65 6e 22 20 68 72 65 66 3d 6c 6f 67 69 6e 3e  een" href=login>
4c00: 41 63 63 6f 75 6e 74 3c 2f 61 3e 0a 20 20 20 20  Account</a>.    
4c10: 20 20 20 20 20 20 20 3c 61 20 63 6c 61 73 73 3d         <a class=
4c20: 22 62 75 74 74 6f 6e 20 77 68 69 74 65 22 20 68  "button white" h
4c30: 72 65 66 3d 49 6e 64 65 78 3e 49 6e 64 65 78 3c  ref=Index>Index<
4c40: 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 3c  /a>.           <
4c50: 61 20 63 6c 61 73 73 3d 22 62 75 74 74 6f 6e 20  a class="button 
4c60: 77 68 69 74 65 22 20 68 72 65 66 3d 73 69 74 65  white" href=site
4c70: 6d 61 70 3e 53 69 74 65 6d 61 70 3c 2f 61 3e 0a  map>Sitemap</a>.
4c80: 20 20 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20          </p>.   
4c90: 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61 73 73          <a class
4ca0: 3d 22 62 75 74 74 6f 6e 20 72 65 64 22 20 68 72  ="button red" hr
4cb0: 65 66 3d 73 65 74 75 70 3e 53 65 74 75 70 3c 2f  ef=setup>Setup</
4cc0: 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 3c 61  a>.           <a
4cd0: 20 68 72 65 66 3d 73 65 74 75 70 5f 75 6c 69 73   href=setup_ulis
4ce0: 74 3e 55 73 65 72 73 3c 2f 61 3e 20 2f 0a 20 20  t>Users</a> /.  
4cf0: 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66           <a href
4d00: 3d 73 65 74 75 70 5f 61 63 63 65 73 73 3e 41 63  =setup_access>Ac
4d10: 63 65 73 73 3c 2f 61 3e 20 2f 0a 20 20 20 20 20  cess</a> /.     
4d20: 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 73 65        <a href=se
4d30: 74 75 70 5f 63 6f 6e 66 69 67 3e 43 6f 6e 66 69  tup_config>Confi
4d40: 67 3c 2f 61 3e 20 2f 0a 20 20 20 20 20 20 20 20  g</a> /.        
4d50: 20 20 20 3c 61 20 68 72 65 66 3d 73 65 74 75 70     <a href=setup
4d60: 5f 74 69 6d 65 6c 69 6e 65 3e 54 69 6d 65 6c 69  _timeline>Timeli
4d70: 6e 65 3c 2f 61 3e 20 2f 0a 20 20 20 20 20 20 20  ne</a> /.       
4d80: 20 20 20 20 3c 61 20 68 72 65 66 3d 73 65 74 75      <a href=setu
4d90: 70 5f 65 64 69 74 63 73 73 3e 43 53 53 3c 2f 61  p_editcss>CSS</a
4da0: 3e 20 2f 0a 20 20 20 20 20 20 20 20 20 20 20 3c  > /.           <
4db0: 61 20 68 72 65 66 3d 73 65 74 75 70 5f 68 65 61  a href=setup_hea
4dc0: 64 65 72 3e 48 65 61 64 65 72 3c 2f 61 3e 20 2f  der>Header</a> /
4dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68  .           <a h
4de0: 72 65 66 3d 73 65 74 75 70 5f 66 6f 6f 74 65 72  ref=setup_footer
4df0: 3e 46 6f 6f 74 65 72 3c 2f 61 3e 20 2f 0a 20 20  >Footer</a> /.  
4e00: 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66           <a href
4e10: 3d 72 63 76 66 72 6f 6d 6c 69 73 74 3e 4c 6f 67  =rcvfromlist>Log
4e20: 3c 2f 61 3e 20 2f 0a 20 20 20 20 20 20 20 20 20  </a> /.         
4e30: 20 20 3c 61 20 68 72 65 66 3d 61 64 6d 69 6e 5f    <a href=admin_
4e40: 73 71 6c 3e 53 51 4c 3c 2f 61 3e 20 2f 0a 20 20  sql>SQL</a> /.  
4e50: 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66           <a href
4e60: 3d 73 74 61 74 3e 53 74 61 74 73 3c 2f 61 3e 0a  =stat>Stats</a>.
4e70: 20 20 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20          </p>.   
4e80: 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20       <p>.       
4e90: 20 20 20 20 3c 61 20 63 6c 61 73 73 3d 22 62 75      <a class="bu
4ea0: 74 74 6f 6e 20 77 68 69 74 65 22 20 68 72 65 66  tton white" href
4eb0: 3d 77 69 6b 69 3e 57 69 6b 69 3c 2f 61 3e 0a 20  =wiki>Wiki</a>. 
4ec0: 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65            <a hre
4ed0: 66 3d 77 63 6f 6e 74 65 6e 74 3e 41 6c 6c 20 50  f=wcontent>All P
4ee0: 61 67 65 73 3c 2f 61 3e 20 2f 0a 20 20 20 20 20  ages</a> /.     
4ef0: 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 74 69        <a href=ti
4f00: 6d 65 6c 69 6e 65 3f 79 3d 77 3e 52 65 63 65 6e  meline?y=w>Recen
4f10: 74 20 43 68 61 6e 67 65 73 3c 2f 61 3e 20 2f 0a  t Changes</a> /.
4f20: 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72             <a hr
4f30: 65 66 3d 77 69 6b 69 6e 65 77 3e 4e 65 77 20 50  ef=wikinew>New P
4f40: 61 67 65 3c 2f 61 3e 20 2f 0a 20 20 20 20 20 20  age</a> /.      
4f50: 20 20 20 20 20 3c 61 20 68 72 65 66 3d 65 76 65       <a href=eve
4f60: 6e 74 65 64 69 74 3e 4e 65 77 20 45 76 65 6e 74  ntedit>New Event
4f70: 3c 2f 61 3e 20 2f 0a 20 20 20 20 20 20 20 20 20  </a> /.         
4f80: 20 20 3c 61 20 68 72 65 66 3d 6d 6f 64 72 65 71    <a href=modreq
4f90: 3e 4d 6f 64 65 72 61 74 69 6f 6e 3c 2f 61 3e 0a  >Moderation</a>.
4fa0: 20 20 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20          </p>.   
4fb0: 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20       <p>.       
4fc0: 20 20 20 20 3c 61 20 63 6c 61 73 73 3d 22 62 75      <a class="bu
4fd0: 74 74 6f 6e 20 67 72 65 65 6e 22 20 68 72 65 66  tton green" href
4fe0: 3d 68 65 6c 70 3e 48 65 6c 70 3c 2f 61 3e 0a 20  =help>Help</a>. 
4ff0: 20 20 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61            <a cla
5000: 73 73 3d 22 62 75 74 74 6f 6e 20 77 68 69 74 65  ss="button white
5010: 22 20 68 72 65 66 3d 22 74 72 65 65 3f 63 69 3d  " href="tree?ci=
5020: 74 69 70 22 3e 46 69 6c 65 73 3c 2f 61 3e 0a 20  tip">Files</a>. 
5030: 20 20 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61            <a cla
5040: 73 73 3d 22 62 75 74 74 6f 6e 20 77 68 69 74 65  ss="button white
5050: 22 20 68 72 65 66 3d 7a 69 70 2f 74 72 75 6e 6b  " href=zip/trunk
5060: 2e 7a 69 70 3f 75 75 69 64 3d 74 72 75 6e 6b 3e  .zip?uuid=trunk>
5070: 5a 49 50 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20  ZIP</a>.        
5080: 20 20 20 3c 61 20 63 6c 61 73 73 3d 22 62 75 74     <a class="but
5090: 74 6f 6e 20 77 68 69 74 65 22 20 68 72 65 66 3d  ton white" href=
50a0: 74 61 72 62 61 6c 6c 2f 74 72 75 6e 6b 2e 74 67  tarball/trunk.tg
50b0: 7a 3f 75 75 69 64 3d 74 72 75 6e 6b 3e 54 47 5a  z?uuid=trunk>TGZ
50c0: 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20  </a>.           
50d0: 3c 61 20 63 6c 61 73 73 3d 22 62 75 74 74 6f 6e  <a class="button
50e0: 20 77 68 69 74 65 22 20 68 72 65 66 3d 74 69 6d   white" href=tim
50f0: 65 6c 69 6e 65 3e 54 69 6d 65 6c 69 6e 65 3c 2f  eline>Timeline</
5100: 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 3c 61  a>.           <a
5110: 20 63 6c 61 73 73 3d 22 62 75 74 74 6f 6e 20 77   class="button w
5120: 68 69 74 65 22 20 68 72 65 66 3d 62 72 6c 69 73  hite" href=brlis
5130: 74 3e 42 72 61 6e 63 68 65 73 3c 2f 61 3e 0a 20  t>Branches</a>. 
5140: 20 20 20 20 20 20 20 20 20 20 3c 61 20 63 6c 61            <a cla
5150: 73 73 3d 22 62 75 74 74 6f 6e 20 77 68 69 74 65  ss="button white
5160: 22 20 68 72 65 66 3d 74 61 67 6c 69 73 74 3e 54  " href=taglist>T
5170: 61 67 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20  ags</a>.        
5180: 20 20 20 3c 61 20 63 6c 61 73 73 3d 22 62 75 74     <a class="but
5190: 74 6f 6e 20 77 68 69 74 65 22 20 68 72 65 66 3d  ton white" href=
51a0: 72 65 70 6f 72 74 6c 69 73 74 3e 54 69 63 6b 65  reportlist>Ticke
51b0: 74 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20  ts</a>.         
51c0: 20 20 3c 61 20 63 6c 61 73 73 3d 22 62 75 74 74    <a class="butt
51d0: 6f 6e 20 77 68 69 74 65 22 20 68 72 65 66 3d 72  on white" href=r
51e0: 65 70 6f 72 74 73 3e 52 65 70 6f 72 74 73 3c 2f  eports>Reports</
51f0: 61 3e 0a 20 20 20 20 20 20 20 20 3c 2f 70 3e 0a  a>.        </p>.
5200: 20 20 20 20 20 20 20 20 0a 20 20 20 20 3c 2f 66          .    </f
5210: 6f 6f 74 65 72 3e 0a 20 20 3c 2f 64 69 76 3e 0a  ooter>.  </div>.
5220: 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e  .</body>.</html>
5230: 0a 0a 27 0a 63 6f 6e 66 69 67 20 2f 63 6f 6e 66  ..'.config /conf
5240: 69 67 20 34 31 0a 31 33 39 34 33 33 30 35 37 38  ig 41.1394330578
5250: 20 27 74 69 6d 65 6c 69 6e 65 2d 70 6c 61 69 6e   'timeline-plain
5260: 74 65 78 74 27 20 76 61 6c 75 65 20 27 31 27 0a  text' value '1'.
5270: 63 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67 20 31  config /config 1
5280: 31 31 34 34 0a 31 34 37 32 39 39 32 31 30 39 20  1144.1472992109 
5290: 27 74 68 31 2d 73 65 74 75 70 27 20 76 61 6c 75  'th1-setup' valu
52a0: 65 20 27 0a 23 2d 2d 20 50 72 65 2d 69 6e 63 72  e '.#-- Pre-incr
52b0: 65 6d 65 6e 74 20 20 5b 2b 2b 20 76 61 72 6e 61  ement  [++ varna
52c0: 6d 65 5d 0a 70 72 6f 63 20 2b 2b 20 7b 76 61 72  me].proc ++ {var
52d0: 6e 61 6d 65 7d 20 7b 0a 20 20 20 75 70 76 61 72  name} {.   upvar
52e0: 20 31 20 24 76 61 72 6e 61 6d 65 20 69 0a 20 20   1 $varname i.  
52f0: 20 72 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c   return [uplevel
5300: 20 31 20 22 73 65 74 20 7b 24 76 61 72 6e 61 6d   1 "set {$varnam
5310: 65 7d 20 5b 65 78 70 72 20 31 2b 24 69 5d 22 5d  e} [expr 1+$i]"]
5320: 0a 7d 0a 0a 23 2d 2d 20 74 65 72 6e 61 72 79 20  .}..#-- ternary 
5330: 2f 20 69 66 2d 73 68 6f 72 74 68 61 6e 64 20 28  / if-shorthand (
5340: 63 6f 6e 64 2f 74 68 65 6e 2f 65 6c 73 65 20 6d  cond/then/else m
5350: 61 79 20 62 65 20 6c 69 74 65 72 61 6c 73 2c 20  ay be literals, 
5360: 6f 72 20 7b 5b 65 78 70 72 65 73 73 69 6f 6e 73  or {[expressions
5370: 5d 7d 20 74 68 65 6d 73 65 6c 76 65 73 29 0a 70  ]} themselves).p
5380: 72 6f 63 20 3f 3a 20 7b 63 6f 6e 64 20 74 68 65  roc ?: {cond the
5390: 6e 20 65 6c 73 65 7d 20 7b 0a 20 20 20 75 70 6c  n else} {.   upl
53a0: 65 76 65 6c 20 31 20 22 69 66 20 7b 24 63 6f 6e  evel 1 "if {$con
53b0: 64 7d 20 7b 20 72 65 74 75 72 6e 20 24 74 68 65  d} { return $the
53c0: 6e 3b 20 7d 20 65 6c 73 65 20 7b 20 72 65 74 75  n; } else { retu
53d0: 72 6e 20 24 65 6c 73 65 3b 20 7d 22 0a 7d 0a 0a  rn $else; }".}..
53e0: 23 2d 2d 20 69 6e 66 6f 20 65 78 69 73 74 73 20  #-- info exists 
53f0: 73 68 6f 72 74 68 61 6e 64 0a 70 72 6f 63 20 69  shorthand.proc i
5400: 73 73 65 74 20 7b 76 61 72 6e 61 6d 65 7d 20 7b  sset {varname} {
5410: 0a 20 20 20 72 65 74 75 72 6e 20 5b 75 70 6c 65  .   return [uple
5420: 76 65 6c 20 31 20 22 69 6e 66 6f 20 65 78 69 73  vel 1 "info exis
5430: 74 73 20 7b 24 76 61 72 6e 61 6d 65 7d 22 5d 0a  ts {$varname}"].
5440: 7d 0a 0a 23 2d 2d 20 73 74 72 69 6e 67 20 65 71  }..#-- string eq
5450: 75 61 6c 69 74 79 20 73 68 6f 72 74 68 61 6e 64  uality shorthand
5460: 0a 70 72 6f 63 20 65 71 20 7b 73 74 72 31 20 73  .proc eq {str1 s
5470: 74 72 32 7d 20 7b 0a 20 20 20 72 65 74 75 72 6e  tr2} {.   return
5480: 20 5b 65 78 70 72 20 7b 24 73 74 72 31 20 65 71   [expr {$str1 eq
5490: 20 24 73 74 72 32 7d 5d 0a 7d 0a 0a 23 2d 2d 20   $str2}].}..#-- 
54a0: 77 68 69 6c 65 20 6c 6f 6f 70 0a 70 72 6f 63 20  while loop.proc 
54b0: 77 68 69 6c 65 20 7b 63 6f 6e 64 69 74 69 6f 6e  while {condition
54c0: 20 63 6f 64 65 7d 20 7b 0a 20 20 20 72 65 74 75   code} {.   retu
54d0: 72 6e 20 5b 75 70 6c 65 76 65 6c 20 31 20 22 66  rn [uplevel 1 "f
54e0: 6f 72 20 7b 7d 20 7b 24 63 6f 6e 64 69 74 69 6f  or {} {$conditio
54f0: 6e 7d 20 7b 7d 20 7b 24 63 6f 64 65 7d 22 5d 0a  n} {} {$code}"].
5500: 7d 0a 0a 23 2d 2d 20 66 6f 72 65 61 63 68 20 56  }..#-- foreach V
5510: 41 52 20 22 61 62 63 20 78 79 7a 20 31 32 33 22  AR "abc xyz 123"
5520: 20 7b 20 70 75 74 73 20 22 28 24 56 41 52 29 20   { puts "($VAR) 
5530: 22 20 7d 0a 70 72 6f 63 20 66 6f 72 65 61 63 68  " }.proc foreach
5540: 20 7b 76 61 72 6e 61 6d 65 20 6c 69 73 74 20 63   {varname list c
5550: 6f 64 65 7d 20 7b 0a 20 20 20 75 70 76 61 72 20  ode} {.   upvar 
5560: 31 20 24 76 61 72 6e 61 6d 65 20 76 61 6c 0a 20  1 $varname val. 
5570: 20 20 66 6f 72 20 7b 73 65 74 20 69 20 30 7d 20    for {set i 0} 
5580: 20 7b 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20   {$i < [llength 
5590: 24 6c 69 73 74 5d 7d 20 20 7b 2b 2b 20 69 7d 20  $list]}  {++ i} 
55a0: 7b 0a 20 20 20 20 20 20 73 65 74 20 76 61 6c 20  {.      set val 
55b0: 5b 6c 69 6e 64 65 78 20 24 6c 69 73 74 20 24 69  [lindex $list $i
55c0: 5d 0a 20 20 20 20 20 20 75 70 6c 65 76 65 6c 20  ].      uplevel 
55d0: 31 20 22 24 63 6f 64 65 22 0a 20 20 20 7d 0a 7d  1 "$code".   }.}
55e0: 0a 0a 23 2d 2d 20 41 20 73 77 69 74 63 68 20 73  ..#-- A switch s
55f0: 74 61 74 65 6d 65 6e 74 2e 0a 23 0a 23 20 73 77  tatement..#.# sw
5600: 69 74 63 68 20 22 76 61 6c 22 20 7b 0a 23 20 20  itch "val" {.#  
5610: 20 20 20 20 20 20 22 63 6d 70 31 22 20 7b 63 6f        "cmp1" {co
5620: 64 65 31 7d 0a 23 20 20 20 20 20 20 20 20 22 63  de1}.#        "c
5630: 6d 70 32 22 20 7b 63 6f 64 65 32 7d 0a 23 20 20  mp2" {code2}.#  
5640: 20 20 20 20 20 20 22 63 6d 70 33 22 20 7b 63 6f        "cmp3" {co
5650: 64 65 33 7d 0a 23 20 20 20 7b 7b 64 65 66 61 75  de3}.#   {{defau
5660: 6c 74 7d 7d 20 7b 63 6f 64 65 4e 7d 0a 23 20 7d  lt}} {codeN}.# }
5670: 0a 23 0a 70 72 6f 63 20 73 77 69 74 63 68 20 7b  .#.proc switch {
5680: 63 6f 6d 70 61 72 65 5f 76 61 6c 75 65 20 76 61  compare_value va
5690: 6c 5f 63 6f 64 65 5f 70 61 69 72 73 7d 20 7b 0a  l_code_pairs} {.
56a0: 20 20 20 73 65 74 20 6c 65 6e 20 5b 6c 6c 65 6e     set len [llen
56b0: 67 74 68 20 24 76 61 6c 5f 63 6f 64 65 5f 70 61  gth $val_code_pa
56c0: 69 72 73 5d 0a 20 20 20 23 20 6c 6f 6f 70 20 6f  irs].   # loop o
56d0: 76 65 72 20 63 6f 6d 70 61 72 65 20 76 61 6c 75  ver compare valu
56e0: 65 73 20 2b 20 63 6f 64 65 20 70 61 69 72 73 0a  es + code pairs.
56f0: 20 20 20 66 6f 72 20 20 7b 73 65 74 20 6e 20 30     for  {set n 0
5700: 7d 20 20 7b 24 6e 20 3c 20 24 6c 65 6e 7d 20 20  }  {$n < $len}  
5710: 7b 2b 2b 20 6e 7d 20 7b 0a 20 20 20 20 20 20 73  {++ n} {.      s
5720: 65 74 20 63 6d 70 20 5b 6c 69 6e 64 65 78 20 24  et cmp [lindex $
5730: 76 61 6c 5f 63 6f 64 65 5f 70 61 69 72 73 20 24  val_code_pairs $
5740: 6e 5d 3b 0a 20 20 20 20 20 20 69 66 20 7b 5b 65  n];.      if {[e
5750: 78 70 72 20 24 63 6d 70 20 65 71 20 24 63 6f 6d  xpr $cmp eq $com
5760: 70 61 72 65 5f 76 61 6c 75 65 20 7c 7c 20 24 63  pare_value || $c
5770: 6d 70 20 65 71 20 7b 7b 64 65 66 61 75 6c 74 7d  mp eq {{default}
5780: 7d 20 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20  } ]} {.         
5790: 72 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c 20  return [uplevel 
57a0: 31 20 5b 6c 69 6e 64 65 78 20 24 76 61 6c 5f 63  1 [lindex $val_c
57b0: 6f 64 65 5f 70 61 69 72 73 20 5b 2b 2b 20 6e 5d  ode_pairs [++ n]
57c0: 5d 5d 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 7d  ]];.      }.   }
57d0: 0a 7d 0a 0a 0a 23 2d 2d 20 4f 72 64 65 72 65 64  .}...#-- Ordered
57e0: 20 6c 69 73 74 20 6f 66 20 70 72 6f 6a 65 63 74   list of project
57f0: 20 73 74 61 74 69 73 74 69 63 73 20 28 77 69 6c   statistics (wil
5800: 6c 20 70 6f 70 75 6c 61 74 65 20 67 6c 6f 62 61  l populate globa
5810: 6c 20 24 73 74 61 74 73 28 29 20 61 72 72 61 79  l $stats() array
5820: 29 0a 70 72 6f 63 20 75 69 3a 3a 73 74 61 74 73  ).proc ui::stats
5830: 20 7b 7d 20 7b 0a 20 20 20 75 70 6c 65 76 65 6c   {} {.   uplevel
5840: 20 31 20 7b 20 71 75 65 72 79 20 7b 53 45 4c 45   1 { query {SELE
5850: 43 54 0a 20 20 20 20 20 28 53 45 4c 45 43 54 20  CT.     (SELECT 
5860: 63 6f 75 6e 74 28 6f 62 6a 69 64 29 20 46 52 4f  count(objid) FRO
5870: 4d 20 65 76 65 6e 74 20 57 48 45 52 45 20 74 79  M event WHERE ty
5880: 70 65 3d 27 27 63 69 27 27 20 4c 49 4d 49 54 20  pe=''ci'' LIMIT 
5890: 31 29 20 41 53 20 60 73 74 61 74 73 5f 63 68 65  1) AS `stats_che
58a0: 63 6b 69 6e 73 60 2c 0a 20 20 20 20 20 28 53 45  ckins`,.     (SE
58b0: 4c 45 43 54 20 63 6f 75 6e 74 28 6e 61 6d 65 29  LECT count(name)
58c0: 20 46 52 4f 4d 20 66 69 6c 65 6e 61 6d 65 20 4c   FROM filename L
58d0: 49 4d 49 54 20 31 29 20 41 53 20 60 73 74 61 74  IMIT 1) AS `stat
58e0: 73 5f 66 69 6c 65 73 60 2c 0a 20 20 20 20 20 28  s_files`,.     (
58f0: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 73 74 61  SELECT count(sta
5900: 74 75 73 29 20 46 52 4f 4d 20 74 69 63 6b 65 74  tus) FROM ticket
5910: 20 4c 49 4d 49 54 20 31 29 20 41 53 20 60 73 74   LIMIT 1) AS `st
5920: 61 74 73 5f 74 69 63 6b 65 74 73 60 2c 0a 20 20  ats_tickets`,.  
5930: 20 20 20 28 53 45 4c 45 43 54 20 63 6f 75 6e 74     (SELECT count
5940: 28 44 49 53 54 49 4e 43 54 20 75 73 65 72 29 20  (DISTINCT user) 
5950: 46 52 4f 4d 20 65 76 65 6e 74 20 4c 49 4d 49 54  FROM event LIMIT
5960: 20 31 29 20 41 53 20 60 73 74 61 74 73 5f 64 65   1) AS `stats_de
5970: 76 65 6c 6f 70 65 72 73 60 2c 0a 20 20 20 20 20  velopers`,.     
5980: 28 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 44 49  (SELECT count(DI
5990: 53 54 49 4e 43 54 20 76 61 6c 75 65 29 20 46 52  STINCT value) FR
59a0: 4f 4d 20 74 61 67 78 72 65 66 20 57 48 45 52 45  OM tagxref WHERE
59b0: 20 74 61 67 69 64 3d 38 29 20 41 53 20 60 73 74   tagid=8) AS `st
59c0: 61 74 73 5f 62 72 61 6e 63 68 65 73 60 2c 0a 20  ats_branches`,. 
59d0: 20 20 20 20 28 53 45 4c 45 43 54 20 63 6f 75 6e      (SELECT coun
59e0: 74 28 74 61 67 6e 61 6d 65 29 20 46 52 4f 4d 20  t(tagname) FROM 
59f0: 74 61 67 20 57 48 45 52 45 20 74 61 67 6e 61 6d  tag WHERE tagnam
5a00: 65 20 4c 49 4b 45 20 27 27 73 79 6d 2d 25 27 27  e LIKE ''sym-%''
5a10: 29 20 41 53 20 60 73 74 61 74 73 5f 74 61 67 73  ) AS `stats_tags
5a20: 60 2c 0a 20 20 20 20 20 28 53 45 4c 45 43 54 20  `,.     (SELECT 
5a30: 63 6f 75 6e 74 28 74 61 67 6e 61 6d 65 29 20 46  count(tagname) F
5a40: 52 4f 4d 20 74 61 67 20 57 48 45 52 45 20 74 61  ROM tag WHERE ta
5a50: 67 6e 61 6d 65 20 52 45 47 45 58 50 20 27 27 5e  gname REGEXP ''^
5a60: 73 79 6d 5b 2d 61 2d 7a 30 2d 39 5f 2e 5d 2b 5c  sym[-a-z0-9_.]+\
5a70: 64 2b 5c 2e 5c 64 2b 27 27 29 20 41 53 20 60 73  d+\.\d+'') AS `s
5a80: 74 61 74 73 5f 72 65 6c 65 61 73 65 73 60 0a 20  tats_releases`. 
5a90: 20 20 7d 20 7b 7d 20 7d 0a 7d 0a 0a 23 2d 2d 20    } {} }.}..#-- 
5aa0: 4c 61 6e 67 75 61 67 65 2f 43 6f 6e 74 65 6e 74  Language/Content
5ab0: 20 73 74 61 74 69 73 74 69 63 73 20 28 6f 75 74   statistics (out
5ac0: 70 75 74 73 20 63 6f 6c 6f 72 65 64 20 62 61 72  puts colored bar
5ad0: 20 67 72 61 70 68 29 0a 70 72 6f 63 20 75 69 3a   graph).proc ui:
5ae0: 3a 6c 61 6e 67 5f 73 74 61 74 73 20 7b 7d 20 7b  :lang_stats {} {
5af0: 0a 20 20 20 23 20 66 65 74 63 68 20 24 6c 61 6e  .   # fetch $lan
5b00: 67 28 6a 73 2f 2e 2e 2e 29 2c 20 24 6c 61 6e 67  g(js/...), $lang
5b10: 5f 63 6f 6c 6f 72 28 6a 73 29 2c 20 24 6c 61 6e  _color(js), $lan
5b20: 67 5f 6c 69 73 74 2c 20 24 74 6f 74 61 6c 5f 73  g_list, $total_s
5b30: 69 7a 65 0a 20 20 20 71 75 65 72 79 20 7b 53 45  ize.   query {SE
5b40: 4c 45 43 54 20 6e 61 6d 65 2c 20 76 61 6c 75 65  LECT name, value
5b50: 20 46 52 4f 4d 20 66 78 5f 73 74 61 74 73 20 4f   FROM fx_stats O
5b60: 52 44 45 52 20 62 79 20 56 41 4c 55 45 20 44 45  RDER by VALUE DE
5b70: 53 43 7d 20 7b 0a 20 20 20 20 20 20 73 65 74 20  SC} {.      set 
5b80: 24 6e 61 6d 65 20 24 76 61 6c 75 65 0a 20 20 20  $name $value.   
5b90: 7d 0a 20 20 20 23 20 6f 75 74 70 75 74 20 63 6f  }.   # output co
5ba0: 6c 6f 72 20 62 61 72 20 66 6f 72 20 6c 61 6e 67  lor bar for lang
5bb0: 75 61 67 65 20 70 72 6f 70 6f 72 74 69 6f 6e 73  uage proportions
5bc0: 0a 20 20 20 23 68 74 6d 6c 20 22 3c 64 69 76 20  .   #html "<div 
5bd0: 63 6c 61 73 73 3d 6c 61 6e 67 75 61 67 65 2d 62  class=language-b
5be0: 61 72 20 73 74 79 6c 65 3d 27 27 77 69 64 74 68  ar style=''width
5bf0: 3a 31 30 30 25 3b 20 68 65 69 67 68 74 3a 33 70  :100%; height:3p
5c00: 74 3b 20 62 6f 78 2d 73 69 7a 69 6e 67 3a 62 6f  t; box-sizing:bo
5c10: 72 64 65 72 2d 62 6f 78 3b 27 27 3e 22 0a 20 20  rder-box;''>".  
5c20: 20 66 6f 72 65 61 63 68 20 6e 61 6d 65 20 24 6c   foreach name $l
5c30: 61 6e 67 5f 6c 69 73 74 20 7b 0a 20 20 20 20 20  ang_list {.     
5c40: 20 73 65 74 20 70 65 72 63 65 6e 74 20 22 5b 65   set percent "[e
5c50: 78 70 72 20 24 6c 61 6e 67 28 24 6e 61 6d 65 29  xpr $lang($name)
5c60: 2a 31 30 30 5d 25 22 0a 20 20 20 20 20 20 68 74  *100]%".      ht
5c70: 6d 6c 20 22 3c 73 70 61 6e 20 63 6c 61 73 73 3d  ml "<span class=
5c80: 63 6f 64 65 2d 72 61 74 65 2d 24 6e 61 6d 65 20  code-rate-$name 
5c90: 73 74 79 6c 65 3d 27 27 68 65 69 67 68 74 3a 31  style=''height:1
5ca0: 30 30 25 3b 20 77 69 64 74 68 3a 24 70 65 72 63  00%; width:$perc
5cb0: 65 6e 74 3b 20 64 69 73 70 6c 61 79 3a 69 6e 6c  ent; display:inl
5cc0: 69 6e 65 2d 62 6c 6f 63 6b 3b 20 62 61 63 6b 67  ine-block; backg
5cd0: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 23 24 6c 61  round-color:#$la
5ce0: 6e 67 5f 63 6f 6c 6f 72 28 24 6e 61 6d 65 29 27  ng_color($name)'
5cf0: 27 20 74 69 74 6c 65 3d 27 27 24 70 65 72 63 65  ' title=''$perce
5d00: 6e 74 20 24 6e 61 6d 65 27 27 3e 3c 2f 73 70 61  nt $name''></spa
5d10: 6e 3e 22 3b 0a 20 20 20 7d 0a 20 20 20 23 68 74  n>";.   }.   #ht
5d20: 6d 6c 20 22 3c 2f 64 69 76 3e 22 3b 0a 7d 0a 0a  ml "</div>";.}..
5d30: 23 2d 2d 20 70 72 69 6e 74 20 74 77 6f 20 74 61  #-- print two ta
5d40: 62 6c 65 20 72 6f 77 73 20 66 6f 72 20 6c 61 73  ble rows for las
5d50: 74 20 63 6f 6d 6d 69 74 0a 70 72 6f 63 20 75 69  t commit.proc ui
5d60: 3a 3a 6c 61 73 74 5f 63 6f 6d 6d 69 74 20 7b 7d  ::last_commit {}
5d70: 20 7b 0a 20 20 20 71 75 65 72 79 20 7b 0a 20 20   {.   query {.  
5d80: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 2c 20 43       SELECT *, C
5d90: 41 53 54 28 6a 75 6c 69 61 6e 64 61 79 28 27 27  AST(julianday(''
5da0: 6e 6f 77 27 27 29 2d 6d 74 69 6d 65 20 41 53 20  now'')-mtime AS 
5db0: 49 4e 54 29 20 41 53 20 61 67 65 2c 20 73 75 62  INT) AS age, sub
5dc0: 73 74 72 28 63 6f 6d 6d 65 6e 74 2c 30 2c 31 39  str(comment,0,19
5dd0: 39 29 20 41 53 20 6d 73 67 2c 20 73 75 62 73 74  9) AS msg, subst
5de0: 72 28 75 75 69 64 2c 20 30 2c 20 31 30 29 20 41  r(uuid, 0, 10) A
5df0: 53 20 73 68 6f 72 74 5f 75 75 69 64 0a 20 20 20  S short_uuid.   
5e00: 20 20 20 20 46 52 4f 4d 20 65 76 65 6e 74 20 4a      FROM event J
5e10: 4f 49 4e 20 62 6c 6f 62 20 4f 4e 20 62 6c 6f 62  OIN blob ON blob
5e20: 2e 72 69 64 3d 65 76 65 6e 74 2e 6f 62 6a 69 64  .rid=event.objid
5e30: 0a 20 20 20 20 20 20 20 57 48 45 52 45 20 74 79  .       WHERE ty
5e40: 70 65 3d 27 27 63 69 27 27 20 4f 52 44 45 52 20  pe=''ci'' ORDER 
5e50: 42 59 20 6d 74 69 6d 65 20 44 45 53 43 20 4c 49  BY mtime DESC LI
5e60: 4d 49 54 20 31 0a 20 20 20 7d 20 7b 0a 20 20 20  MIT 1.   } {.   
5e70: 20 20 20 68 74 6d 6c 20 22 20 20 3c 74 72 3e 3c     html "  <tr><
5e80: 74 68 20 63 6f 6c 73 70 61 6e 3d 33 3e 24 6d 73  th colspan=3>$ms
5e90: 67 3c 2f 74 68 3e 3c 2f 74 72 3e 22 3b 0a 20 20  g</th></tr>";.  
5ea0: 20 20 20 20 68 74 6d 6c 20 22 20 20 3c 74 72 3e      html "  <tr>
5eb0: 3c 74 68 20 63 6f 6c 73 70 61 6e 3d 33 20 73 74  <th colspan=3 st
5ec0: 79 6c 65 3d 62 61 63 6b 67 72 6f 75 6e 64 3a 23  yle=background:#
5ed0: 66 66 66 3e 3c 61 20 68 72 65 66 3d 27 27 74 69  fff><a href=''ti
5ee0: 6d 65 6c 69 6e 65 3f 75 3d 24 75 73 65 72 27 27  meline?u=$user''
5ef0: 20 63 6c 61 73 73 3d 75 73 65 72 3e 24 75 73 65   class=user>$use
5f00: 72 3c 2f 61 3e 20 61 75 74 68 6f 72 65 64 20 24  r</a> authored $
5f10: 61 67 65 20 64 61 79 73 20 61 67 6f 0a 20 20 20  age days ago.   
5f20: 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 73           <span s
5f30: 74 79 6c 65 3d 66 6c 6f 61 74 3a 72 69 67 68 74  tyle=float:right
5f40: 3e 6c 61 73 74 20 63 68 65 63 6b 69 6e 20 3c 61  >last checkin <a
5f50: 20 68 72 65 66 3d 27 27 63 69 2f 24 75 75 69 64   href=''ci/$uuid
5f60: 27 27 3e 24 73 68 6f 72 74 5f 75 75 69 64 20 3c  ''>$short_uuid <
5f70: 73 70 61 6e 20 63 6c 61 73 73 3d 67 6c 79 70 68  span class=glyph
5f80: 3e 26 23 78 32 33 39 38 3b 3c 2f 73 70 61 6e 3e  >&#x2398;</span>
5f90: 3c 2f 61 3e 3c 2f 73 70 61 6e 3e 3c 2f 74 68 3e  </a></span></th>
5fa0: 3c 2f 74 72 3e 22 3b 0a 20 20 20 7d 0a 7d 0a 0a  </tr>";.   }.}..
5fb0: 23 2d 2d 20 6f 75 74 70 75 74 73 20 74 61 62 6c  #-- outputs tabl
5fc0: 65 20 72 6f 77 73 20 63 6f 6e 74 61 69 6e 69 6e  e rows containin
5fd0: 67 20 74 6f 70 2d 6c 65 76 65 6c 20 66 69 6c 65  g top-level file
5fe0: 6e 61 6d 65 73 20 61 6e 64 20 72 65 63 65 6e 74  names and recent
5ff0: 20 63 68 65 63 6b 69 6e 20 63 6f 6d 6d 65 6e 74   checkin comment
6000: 73 0a 70 72 6f 63 20 75 69 3a 3a 72 65 63 65 6e  s.proc ui::recen
6010: 74 5f 66 69 6c 65 73 20 7b 64 69 72 6e 61 6d 65  t_files {dirname
6020: 7d 20 7b 0a 20 20 20 73 65 74 20 73 65 65 6e 20  } {.   set seen 
6030: 22 28 2e 67 69 74 69 67 6e 6f 72 65 29 22 0a 20  "(.gitignore)". 
6040: 20 20 0a 20 20 20 23 20 73 65 61 72 63 68 20 66    .   # search f
6050: 69 6c 65 73 20 75 73 69 6e 67 20 64 69 72 65 63  iles using direc
6060: 74 6f 72 79 20 61 73 20 62 61 73 65 20 70 61 74  tory as base pat
6070: 68 0a 20 20 20 73 65 74 20 62 72 61 6e 63 68 20  h.   set branch 
6080: 22 74 72 75 6e 6b 22 0a 20 20 20 73 65 74 20 63  "trunk".   set c
6090: 75 74 6e 61 6d 65 20 30 0a 20 20 20 73 65 74 20  utname 0.   set 
60a0: 41 4e 44 5f 44 49 52 20 22 22 0a 20 20 20 69 66  AND_DIR "".   if
60b0: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
60c0: 20 24 64 69 72 6e 61 6d 65 5d 7d 20 7b 0a 20 20   $dirname]} {.  
60d0: 20 20 20 20 20 73 65 74 20 64 69 72 6e 61 6d 65       set dirname
60e0: 20 22 24 64 69 72 6e 61 6d 65 2f 22 0a 20 20 20   "$dirname/".   
60f0: 20 20 20 20 73 65 74 20 63 75 74 6e 61 6d 65 20      set cutname 
6100: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
6110: 64 69 72 6e 61 6d 65 5d 0a 20 20 20 20 20 20 20  dirname].       
6120: 73 65 74 20 41 4e 44 5f 44 49 52 20 22 20 41 4e  set AND_DIR " AN
6130: 44 20 73 75 62 73 74 72 28 6e 61 6d 65 2c 20 30  D substr(name, 0
6140: 2c 20 5c 24 63 75 74 6e 61 6d 65 2b 31 29 20 3d  , \$cutname+1) =
6150: 20 5c 24 64 69 72 6e 61 6d 65 20 22 0a 20 20 20   \$dirname ".   
6160: 7d 0a 0a 20 20 20 23 20 66 69 6c 65 73 20 20 20  }..   # files   
6170: 2f 2f 20 76 63 61 63 68 65 2e 72 69 64 3d 6d 6c  // vcache.rid=ml
6180: 69 6e 6b 2e 66 69 64 20 77 6f 75 6c 64 20 62 65  ink.fid would be
6190: 20 65 61 73 69 65 72 20 74 6f 20 73 6b 69 70 20   easier to skip 
61a0: 64 65 6c 65 74 65 64 20 66 69 6c 65 73 2c 20 62  deleted files, b
61b0: 75 74 20 61 63 63 65 73 73 20 69 73 20 70 72 6f  ut access is pro
61c0: 68 69 62 69 74 65 64 28 3f 29 0a 20 20 20 71 75  hibited(?).   qu
61d0: 65 72 79 20 22 0a 20 20 20 20 20 20 20 53 45 4c  ery ".       SEL
61e0: 45 43 54 20 44 49 53 54 49 4e 43 54 0a 20 20 20  ECT DISTINCT.   
61f0: 20 20 20 20 20 20 20 6d 2e 66 6e 69 64 2c 0a 20         m.fnid,. 
6200: 20 20 20 20 20 20 20 20 20 49 4e 53 54 52 28 53           INSTR(S
6210: 55 42 53 54 52 28 6e 61 6d 65 2c 5c 24 63 75 74  UBSTR(name,\$cut
6220: 6e 61 6d 65 2b 31 29 2c 27 27 2f 27 27 29 3e 30  name+1),''/'')>0
6230: 20 20 41 53 20 20 69 73 5f 64 69 72 2c 0a 20 20    AS  is_dir,.  
6240: 20 20 20 20 20 20 20 20 6e 61 6d 65 20 20 20 20          name    
6250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6260: 20 20 20 20 20 20 20 20 20 20 20 20 41 53 20 20              AS  
6270: 70 61 74 68 6e 61 6d 65 2c 0a 20 20 20 20 20 20  pathname,.      
6280: 20 20 20 20 62 66 2e 72 69 64 20 20 20 41 53 20      bf.rid   AS 
6290: 20 66 6e 5f 72 69 64 2c 20 20 20 20 20 62 66 2e   fn_rid,     bf.
62a0: 75 75 69 64 20 20 20 20 41 53 20 20 66 6e 5f 75  uuid    AS  fn_u
62b0: 75 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 62  uid,.          b
62c0: 6d 2e 72 69 64 20 20 20 41 53 20 20 63 69 5f 72  m.rid   AS  ci_r
62d0: 69 64 2c 20 20 20 20 20 62 6d 2e 75 75 69 64 20  id,     bm.uuid 
62e0: 20 20 20 41 53 20 20 63 69 5f 75 75 69 64 2c 0a     AS  ci_uuid,.
62f0: 20 20 20 20 20 20 20 20 20 20 53 55 42 53 54 52            SUBSTR
6300: 28 63 6f 6d 6d 65 6e 74 2c 20 30 2c 20 37 30 29  (comment, 0, 70)
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 53                AS
6320: 20 20 63 6f 6d 6d 65 6e 74 2c 0a 20 20 20 20 20    comment,.     
6330: 20 20 20 20 20 43 41 53 54 28 4a 55 4c 49 41 4e       CAST(JULIAN
6340: 44 41 59 28 27 27 6e 6f 77 27 27 29 2d 65 2e 6d  DAY(''now'')-e.m
6350: 74 69 6d 65 20 41 53 20 49 4e 54 29 20 41 53 20  time AS INT) AS 
6360: 20 61 67 65 0a 20 20 20 20 20 20 20 46 52 4f 4d   age.       FROM
6370: 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 6e  .          filen
6380: 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 4c 45  ame.          LE
6390: 46 54 20 4a 4f 49 4e 20 6d 6c 69 6e 6b 20 6d 20  FT JOIN mlink m 
63a0: 4f 4e 20 6d 2e 66 6e 69 64 20 3d 20 66 69 6c 65  ON m.fnid = file
63b0: 6e 61 6d 65 2e 66 6e 69 64 0a 20 20 20 20 20 20  name.fnid.      
63c0: 20 20 20 20 4c 45 46 54 20 4a 4f 49 4e 20 74 61      LEFT JOIN ta
63d0: 67 78 72 65 66 20 4f 4e 20 6d 2e 6d 69 64 20 3d  gxref ON m.mid =
63e0: 20 74 61 67 78 72 65 66 2e 72 69 64 0a 20 20 20   tagxref.rid.   
63f0: 20 20 20 20 20 20 20 4c 45 46 54 20 4a 4f 49 4e         LEFT JOIN
6400: 20 62 6c 6f 62 20 62 66 20 4f 4e 20 62 66 2e 72   blob bf ON bf.r
6410: 69 64 20 3d 20 6d 2e 66 69 64 0a 20 20 20 20 20  id = m.fid.     
6420: 20 20 20 20 20 4c 45 46 54 20 4a 4f 49 4e 20 62       LEFT JOIN b
6430: 6c 6f 62 20 62 6d 20 4f 4e 20 62 6d 2e 72 69 64  lob bm ON bm.rid
6440: 20 3d 20 6d 2e 6d 69 64 0a 20 20 20 20 20 20 20   = m.mid.       
6450: 20 20 20 4c 45 46 54 20 4a 4f 49 4e 20 65 76 65     LEFT JOIN eve
6460: 6e 74 20 65 20 4f 4e 20 65 2e 6f 62 6a 69 64 20  nt e ON e.objid 
6470: 3d 20 6d 2e 6d 69 64 0a 20 20 20 20 20 20 20 57  = m.mid.       W
6480: 48 45 52 45 0a 20 20 20 20 20 20 20 20 20 20 2d  HERE.          -
6490: 2d 74 61 67 78 72 65 66 2e 76 61 6c 75 65 20 3d  -tagxref.value =
64a0: 20 5c 24 62 72 61 6e 63 68 20 20 41 4e 44 0a 20   \$branch  AND. 
64b0: 20 20 20 20 20 20 20 20 20 6d 2e 66 6e 69 64 20           m.fnid 
64c0: 4e 4f 54 20 49 4e 20 28 53 45 4c 45 43 54 20 66  NOT IN (SELECT f
64d0: 6e 69 64 20 46 52 4f 4d 20 6d 6c 69 6e 6b 20 6d  nid FROM mlink m
64e0: 20 4c 45 46 54 20 4a 4f 49 4e 20 74 61 67 78 72   LEFT JOIN tagxr
64f0: 65 66 20 78 20 4f 4e 20 6d 2e 6d 69 64 3d 78 2e  ef x ON m.mid=x.
6500: 72 69 64 20 57 48 45 52 45 20 66 69 64 3d 30 20  rid WHERE fid=0 
6510: 41 4e 44 20 78 2e 76 61 6c 75 65 3d 5c 24 62 72  AND x.value=\$br
6520: 61 6e 63 68 29 0a 20 20 20 20 20 20 20 20 20 20  anch).          
6530: 24 41 4e 44 5f 44 49 52 0a 20 20 20 20 20 20 20  $AND_DIR.       
6540: 47 52 4f 55 50 20 42 59 0a 20 20 20 20 20 20 20  GROUP BY.       
6550: 20 20 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 4f     name.       O
6560: 52 44 45 52 20 42 59 0a 20 20 20 20 20 20 20 20  RDER BY.        
6570: 20 20 69 73 5f 64 69 72 20 44 45 53 43 2c 20 6e    is_dir DESC, n
6580: 61 6d 65 20 41 53 43 2c 20 65 2e 6d 74 69 6d 65  ame ASC, e.mtime
6590: 20 44 45 53 43 0a 20 20 20 22 20 7b 0a 0a 20 20   DESC.   " {..  
65a0: 20 20 20 20 23 20 73 65 70 61 72 61 74 65 20 64      # separate d
65b0: 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 66  irectories and f
65c0: 69 6c 65 73 0a 20 20 20 20 20 20 73 65 74 20 6e  iles.      set n
65d0: 61 6d 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  ame [string rang
65e0: 65 20 24 70 61 74 68 6e 61 6d 65 20 24 63 75 74  e $pathname $cut
65f0: 6e 61 6d 65 20 32 30 34 38 5d 0a 20 20 20 20 20  name 2048].     
6600: 20 73 65 74 20 64 69 72 20 5b 73 74 72 69 6e 67   set dir [string
6610: 20 66 69 72 73 74 20 22 2f 22 20 24 6e 61 6d 65   first "/" $name
6620: 5d 0a 20 20 20 20 20 20 69 66 20 7b 24 64 69 72  ].      if {$dir
6630: 3e 30 7d 20 7b 20 73 65 74 20 6e 61 6d 65 20 5b  >0} { set name [
6640: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 6e 61  string range $na
6650: 6d 65 20 30 20 5b 65 78 70 72 20 24 64 69 72 2d  me 0 [expr $dir-
6660: 31 5d 5d 20 7d 0a 0a 20 20 20 20 20 20 23 20 73  1]] }..      # s
6670: 6b 69 70 20 73 65 65 6e 20 66 69 6c 65 73 0a 20  kip seen files. 
6680: 20 20 20 20 20 69 66 20 5b 73 74 72 3a 3a 63 6f       if [str::co
6690: 6e 74 61 69 6e 73 20 22 28 24 6e 61 6d 65 29 22  ntains "($name)"
66a0: 20 24 73 65 65 6e 5d 20 7b 20 63 6f 6e 74 69 6e   $seen] { contin
66b0: 75 65 20 7d 20 65 6c 73 65 20 7b 20 73 65 74 20  ue } else { set 
66c0: 73 65 65 6e 20 22 28 24 6e 61 6d 65 29 2c 24 73  seen "($name),$s
66d0: 65 65 6e 22 20 7d 0a 20 20 20 20 20 20 0a 20 20  een" }.      .  
66e0: 20 20 20 20 23 20 6f 75 74 70 75 74 20 74 61 62      # output tab
66f0: 6c 65 20 65 6e 74 72 69 65 73 0a 20 20 20 20 20  le entries.     
6700: 20 68 74 6d 6c 20 22 20 20 20 20 20 20 20 20 20   html "         
6710: 20 20 20 20 20 20 3c 74 72 3e 3c 74 64 3e 22 3b        <tr><td>";
6720: 0a 20 20 20 20 20 20 69 66 20 7b 24 64 69 72 3e  .      if {$dir>
6730: 30 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 23  0} {.          #
6740: 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20   if there is an 
6750: 65 71 75 69 76 61 6c 65 6e 74 20 77 69 6b 69 20  equivalent wiki 
6760: 70 61 67 65 20 66 6f 72 20 61 20 64 69 72 65 63  page for a direc
6770: 74 6f 72 79 2c 20 74 68 65 6e 20 77 65 20 6d 69  tory, then we mi
6780: 78 20 66 69 6c 65 62 6f 78 20 2b 20 77 69 6b 69  x filebox + wiki
6790: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20 64  .          set d
67a0: 69 73 70 6c 61 79 20 22 77 69 6b 69 22 0a 20 20  isplay "wiki".  
67b0: 20 20 20 20 20 20 20 20 23 73 65 74 20 64 69 73          #set dis
67c0: 70 6c 61 79 20 5b 3f 3a 20 5b 73 71 6c 3a 3a 70  play [?: [sql::p
67d0: 61 67 65 5f 65 78 69 73 74 73 20 22 24 64 69 72  age_exists "$dir
67e0: 6e 61 6d 65 24 6e 61 6d 65 22 5d 20 22 77 69 6b  name$name"] "wik
67f0: 69 22 20 22 74 72 65 65 22 5d 0a 20 20 20 20 20  i" "tree"].     
6800: 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 63 6c       html "<a cl
6810: 61 73 73 3d 64 69 72 20 68 72 65 66 3d 27 27 24  ass=dir href=''$
6820: 64 69 73 70 6c 61 79 3f 6e 61 6d 65 3d 5b 68 74  display?name=[ht
6830: 6d 6c 69 7a 65 20 24 64 69 72 6e 61 6d 65 24 6e  mlize $dirname$n
6840: 61 6d 65 5d 27 27 3e 3c 62 20 63 6c 61 73 73 3d  ame]''><b class=
6850: 67 6c 79 70 68 3e f0 9f 93 82 3c 2f 62 3e 20 5b  glyph>....</b> [
6860: 68 74 6d 6c 69 7a 65 20 24 6e 61 6d 65 5d 3c 2f  htmlize $name]</
6870: 61 3e 22 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73  a>";.      } els
6880: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 68 74  e {.          ht
6890: 6d 6c 20 22 3c 61 20 63 6c 61 73 73 3d 66 69 6c  ml "<a class=fil
68a0: 65 20 68 72 65 66 3d 27 27 61 72 74 69 66 61 63  e href=''artifac
68b0: 74 2f 24 66 6e 5f 75 75 69 64 27 27 3e 3c 62 20  t/$fn_uuid''><b 
68c0: 63 6c 61 73 73 3d 67 6c 79 70 68 3e f0 9f 93 84  class=glyph>....
68d0: 3c 2f 62 3e 20 5b 68 74 6d 6c 69 7a 65 20 24 6e  </b> [htmlize $n
68e0: 61 6d 65 5d 3c 2f 61 3e 22 3b 0a 20 20 20 20 20  ame]</a>";.     
68f0: 20 7d 0a 20 20 20 20 20 20 68 74 6d 6c 20 22 3c   }.      html "<
6900: 2f 74 64 3e 20 3c 74 64 3e 5b 68 74 6d 6c 69 7a  /td> <td>[htmliz
6910: 65 20 24 63 6f 6d 6d 65 6e 74 5d 3c 61 20 68 72  e $comment]<a hr
6920: 65 66 3d 27 27 63 69 2f 24 63 69 5f 75 75 69 64  ef=''ci/$ci_uuid
6930: 27 27 3e e2 80 b9 e2 80 ba 3c 2f 61 3e 3c 2f 74  ''>......</a></t
6940: 64 3e 20 3c 74 64 3e 5b 68 74 6d 6c 69 7a 65 20  d> <td>[htmlize 
6950: 24 61 67 65 5d 20 64 61 79 73 20 61 67 6f 3c 2f  $age] days ago</
6960: 74 64 3e 3c 2f 74 72 3e 5c 6e 22 3b 0a 20 20 20  td></tr>\n";.   
6970: 7d 0a 7d 0a 0a 23 2d 2d 20 73 6f 63 69 61 6c 20  }.}..#-- social 
6980: 6d 65 64 69 61 20 73 68 61 72 65 20 6c 69 6e 6b  media share link
6990: 73 0a 70 72 6f 63 20 75 69 3a 3a 73 6f 63 69 61  s.proc ui::socia
69a0: 6c 5f 6c 69 6e 6b 73 20 7b 62 61 73 65 75 72 6c  l_links {baseurl
69b0: 7d 20 7b 0a 20 20 68 74 6d 6c 20 22 0a 20 20 20  } {.  html ".   
69c0: 3c 61 20 63 6c 61 73 73 3d 73 6d 6c 2d 67 6f 20  <a class=sml-go 
69d0: 68 72 65 66 3d 27 27 68 74 74 70 73 3a 2f 2f 70  href=''https://p
69e0: 6c 75 73 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 73  lus.google.com/s
69f0: 68 61 72 65 3f 75 72 6c 3d 24 62 61 73 65 75 72  hare?url=$baseur
6a00: 6c 27 27 20 74 69 74 6c 65 3d 67 6f 6f 67 6c 65  l'' title=google
6a10: 2b 3e 67 2b 3c 2f 61 3e 20 26 6d 69 64 64 6f 74  +>g+</a> &middot
6a20: 3b 0a 20 20 20 3c 61 20 63 6c 61 73 73 3d 73 6d  ;.   <a class=sm
6a30: 6c 2d 66 62 20 68 72 65 66 3d 27 27 68 74 74 70  l-fb href=''http
6a40: 73 3a 2f 2f 77 77 77 2e 66 61 63 65 62 6f 6f 6b  s://www.facebook
6a50: 2e 63 6f 6d 2f 73 68 61 72 65 72 2f 73 68 61 72  .com/sharer/shar
6a60: 65 72 2e 70 68 70 3f 75 3d 24 62 61 73 65 75 72  er.php?u=$baseur
6a70: 6c 27 27 20 74 69 74 6c 65 3d 66 61 63 65 62 6f  l'' title=facebo
6a80: 6f 6b 3e 66 62 3c 2f 61 3e 20 26 6d 69 64 64 6f  ok>fb</a> &middo
6a90: 74 3b 0a 20 20 20 3c 61 20 63 6c 61 73 73 3d 73  t;.   <a class=s
6aa0: 6d 6c 2d 74 77 20 68 72 65 66 3d 27 27 68 74 74  ml-tw href=''htt
6ab0: 70 73 3a 2f 2f 74 77 69 74 74 65 72 2e 63 6f 6d  ps://twitter.com
6ac0: 2f 69 6e 74 65 6e 74 2f 74 77 65 65 74 3f 75 72  /intent/tweet?ur
6ad0: 6c 3d 24 62 61 73 65 75 72 6c 27 27 20 74 69 74  l=$baseurl'' tit
6ae0: 6c 65 3d 74 77 69 74 74 65 72 3e 74 77 3c 2f 61  le=twitter>tw</a
6af0: 3e 20 26 6d 69 64 64 6f 74 3b 0a 20 20 20 3c 61  > &middot;.   <a
6b00: 20 63 6c 61 73 73 3d 73 6d 6c 2d 72 64 20 68 72   class=sml-rd hr
6b10: 65 66 3d 27 27 68 74 74 70 3a 2f 2f 72 65 64 64  ef=''http://redd
6b20: 69 74 2e 63 6f 6d 2f 73 75 62 6d 69 74 3f 75 72  it.com/submit?ur
6b30: 6c 3d 24 62 61 73 65 75 72 6c 27 27 20 74 69 74  l=$baseurl'' tit
6b40: 6c 65 3d 72 65 64 64 69 74 3e 72 64 3c 2f 61 3e  le=reddit>rd</a>
6b50: 20 26 6d 69 64 64 6f 74 3b 0a 20 20 20 3c 61 20   &middot;.   <a 
6b60: 63 6c 61 73 73 3d 73 6d 6c 2d 69 6e 20 68 72 65  class=sml-in hre
6b70: 66 3d 27 27 68 74 74 70 73 3a 2f 2f 77 77 77 2e  f=''https://www.
6b80: 6c 69 6e 6b 65 64 69 6e 2e 63 6f 6d 2f 73 68 61  linkedin.com/sha
6b90: 72 65 41 72 74 69 63 6c 65 3f 6d 69 6e 69 3d 74  reArticle?mini=t
6ba0: 72 75 65 26 61 6d 70 3b 75 72 6c 3d 24 62 61 73  rue&amp;url=$bas
6bb0: 65 75 72 6c 27 27 20 74 69 74 6c 65 3d 6c 69 6e  eurl'' title=lin
6bc0: 6b 65 64 69 6e 3e 69 6e 3c 2f 61 3e 20 26 6d 69  kedin>in</a> &mi
6bd0: 64 64 6f 74 3b 0a 20 20 20 3c 61 20 63 6c 61 73  ddot;.   <a clas
6be0: 73 3d 73 6d 6c 2d 73 75 20 68 72 65 66 3d 27 27  s=sml-su href=''
6bf0: 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 74 75 6d  https://www.stum
6c00: 62 6c 65 75 70 6f 6e 2e 63 6f 6d 2f 73 75 62 6d  bleupon.com/subm
6c10: 69 74 3f 75 72 6c 3d 24 62 61 73 65 75 72 6c 27  it?url=$baseurl'
6c20: 27 20 74 69 74 6c 65 3d 73 74 75 6d 62 6c 65 75  ' title=stumbleu
6c30: 70 6f 6e 3e 73 75 3c 2f 61 3e 20 26 6d 69 64 64  pon>su</a> &midd
6c40: 6f 74 3b 0a 20 20 20 3c 61 20 63 6c 61 73 73 3d  ot;.   <a class=
6c50: 73 6d 6c 2d 64 6c 20 68 72 65 66 3d 27 27 68 74  sml-dl href=''ht
6c60: 74 70 73 3a 2f 2f 64 65 6c 2e 69 63 69 6f 2e 75  tps://del.icio.u
6c70: 73 2f 70 6f 73 74 3f 75 72 6c 3d 24 62 61 73 65  s/post?url=$base
6c80: 75 72 6c 27 27 20 74 69 74 6c 65 3d 64 65 6c 69  url'' title=deli
6c90: 63 69 6f 75 73 3e 64 6c 3c 2f 61 3e 0a 20 20 22  cious>dl</a>.  "
6ca0: 3b 0a 7d 0a 0a 0a 23 20 4f 75 74 70 75 74 73 20  ;.}...# Outputs 
6cb0: 61 20 74 65 78 74 75 61 6c 20 2f 63 68 61 6e 67  a textual /chang
6cc0: 65 6c 6f 67 0a 70 72 6f 63 20 77 65 62 70 61 67  elog.proc webpag
6cd0: 65 5f 63 68 61 6e 67 65 6c 6f 67 20 7b 7d 20 7b  e_changelog {} {
6ce0: 0a 20 20 68 74 6d 6c 20 22 3c 21 2d 2d 20 4e 45  .  html "<!-- NE
6cf0: 57 53 2d 73 74 79 6c 65 20 74 69 6d 65 6c 69 6e  WS-style timelin
6d00: 65 20 2d 2d 3e 20 3c 6d 65 74 61 20 68 74 74 70  e --> <meta http
6d10: 2d 65 71 75 69 76 3d 5c 22 43 6f 6e 74 65 6e 74  -equiv=\"Content
6d20: 2d 54 79 70 65 5c 22 20 63 6f 6e 74 65 6e 74 3d  -Type\" content=
6d30: 5c 22 74 65 78 74 2f 70 6c 61 69 6e 5c 22 3e 20  \"text/plain\"> 
6d40: 3c 70 72 65 3e 5c 6e 5c 6e 22 3b 0a 20 20 73 65  <pre>\n\n";.  se
6d50: 74 20 76 65 72 73 69 6f 6e 20 22 74 72 75 6e 6b  t version "trunk
6d60: 22 0a 20 20 70 75 74 73 20 22 24 76 65 72 73 69  ".  puts "$versi
6d70: 6f 6e 20 28 75 6e 72 65 6c 65 61 73 65 64 29 5c  on (unreleased)\
6d80: 6e 22 3b 0a 20 20 71 75 65 72 79 20 7b 0a 20 20  n";.  query {.  
6d90: 20 20 20 53 45 4c 45 43 54 20 65 76 65 6e 74 2e     SELECT event.
6da0: 6d 74 69 6d 65 2c 20 74 61 67 2e 74 61 67 6e 61  mtime, tag.tagna
6db0: 6d 65 2c 20 4d 41 58 28 74 61 67 2e 74 61 67 69  me, MAX(tag.tagi
6dc0: 64 29 2c 20 44 41 54 45 28 65 76 65 6e 74 2e 6d  d), DATE(event.m
6dd0: 74 69 6d 65 29 20 41 53 20 64 2c 0a 20 20 20 20  time) AS d,.    
6de0: 20 20 20 20 20 20 20 20 52 45 50 4c 41 43 45 28          REPLACE(
6df0: 54 52 49 4d 28 52 45 50 4c 41 43 45 28 65 76 65  TRIM(REPLACE(eve
6e00: 6e 74 2e 63 6f 6d 6d 65 6e 74 2c 20 63 68 61 72  nt.comment, char
6e10: 28 31 30 2c 31 30 29 2c 20 63 68 61 72 28 31 30  (10,10), char(10
6e20: 29 29 2c 20 63 68 61 72 28 38 2c 31 30 2c 31 33  )), char(8,10,13
6e30: 2c 33 32 29 29 2c 20 63 68 61 72 28 31 30 29 2c  ,32)), char(10),
6e40: 20 63 68 61 72 28 31 30 2c 33 32 2c 33 32 2c 33   char(10,32,32,3
6e50: 32 29 29 20 41 53 20 63 6f 6d 6d 65 6e 74 0a 20  2)) AS comment. 
6e60: 20 20 20 20 46 52 4f 4d 20 65 76 65 6e 74 0a 20      FROM event. 
6e70: 20 20 20 20 20 4c 45 46 54 20 4a 4f 49 4e 20 74       LEFT JOIN t
6e80: 61 67 78 72 65 66 20 4f 4e 20 65 76 65 6e 74 2e  agxref ON event.
6e90: 6f 62 6a 69 64 3d 74 61 67 78 72 65 66 2e 72 69  objid=tagxref.ri
6ea0: 64 0a 20 20 20 20 20 20 4c 45 46 54 20 4a 4f 49  d.      LEFT JOI
6eb0: 4e 20 74 61 67 20 4f 4e 20 74 61 67 78 72 65 66  N tag ON tagxref
6ec0: 2e 74 61 67 69 64 3d 74 61 67 2e 74 61 67 69 64  .tagid=tag.tagid
6ed0: 0a 20 20 20 20 20 57 48 45 52 45 20 74 79 70 65  .     WHERE type
6ee0: 3d 27 27 63 69 27 27 0a 20 20 20 20 20 47 52 4f  =''ci''.     GRO
6ef0: 55 50 20 42 59 20 6f 62 6a 69 64 0a 20 20 20 20  UP BY objid.    
6f00: 20 4f 52 44 45 52 20 42 59 20 65 76 65 6e 74 2e   ORDER BY event.
6f10: 6d 74 69 6d 65 20 44 45 53 43 0a 20 20 20 20 20  mtime DESC.     
6f20: 4c 49 4d 49 54 20 37 35 30 0a 20 20 7d 20 7b 0a  LIMIT 750.  } {.
6f30: 20 20 20 20 20 69 66 20 7b 5b 72 65 67 65 78 70       if {[regexp
6f40: 20 7b 5e 73 79 6d 2d 2e 2a 5c 64 2b 5c 2e 5c 64   {^sym-.*\d+\.\d
6f50: 2b 7d 20 24 74 61 67 6e 61 6d 65 5d 7d 20 7b 0a  +} $tagname]} {.
6f60: 20 20 20 20 20 20 20 20 66 6f 72 20 7b 7d 20 7b          for {} {
6f70: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
6f80: 74 61 67 6e 61 6d 65 5d 20 3e 3d 20 33 20 26 26  tagname] >= 3 &&
6f90: 20 5b 72 65 67 65 78 70 20 7b 5e 5c 64 2b 5c 2e   [regexp {^\d+\.
6fa0: 7d 20 24 74 61 67 6e 61 6d 65 5d 20 3d 3d 20 30  } $tagname] == 0
6fb0: 7d 20 7b 7d 20 7b 0a 20 20 20 20 20 20 20 20 20  } {} {.         
6fc0: 20 73 65 74 20 74 61 67 6e 61 6d 65 20 5b 73 74   set tagname [st
6fd0: 72 69 6e 67 20 72 61 6e 67 65 20 24 74 61 67 6e  ring range $tagn
6fe0: 61 6d 65 20 31 20 31 30 30 5d 0a 20 20 20 20 20  ame 1 100].     
6ff0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 70 75 74     }.        put
7000: 73 20 22 5c 6e 24 74 61 67 6e 61 6d 65 20 28 24  s "\n$tagname ($
7010: 64 29 5c 6e 22 3b 0a 20 20 20 20 20 7d 0a 20 20  d)\n";.     }.  
7020: 20 20 20 70 75 74 73 20 22 20 2a 20 24 63 6f 6d     puts " * $com
7030: 6d 65 6e 74 5c 6e 22 3b 0a 20 20 7d 0a 20 20 70  ment\n";.  }.  p
7040: 75 74 73 20 22 5c 6e 5c 6e 22 3b 0a 7d 0a 0a 23  uts "\n\n";.}..#
7050: 20 41 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20   Alternative to 
7060: 2f 72 61 77 20 74 72 75 6e 6b 20 66 69 6c 65 20  /raw trunk file 
7070: 61 63 63 65 73 73 20 77 69 74 68 6f 75 74 20 3f  access without ?
7080: 6e 61 6d 65 3d 75 75 69 64 2c 0a 23 20 44 6f 65  name=uuid,.# Doe
7090: 73 6e 27 27 74 20 77 6f 72 6b 20 77 69 74 68 20  sn''t work with 
70a0: 43 4f 4e 54 45 4e 54 28 29 20 79 65 74 2e 0a 70  CONTENT() yet..p
70b0: 72 6f 63 20 77 65 62 70 61 67 65 5f 63 61 74 20  roc webpage_cat 
70c0: 7b 7d 20 7b 0a 20 20 73 65 74 20 6e 61 6d 65 20  {} {.  set name 
70d0: 5b 67 65 74 50 61 72 61 6d 65 74 65 72 20 6e 61  [getParameter na
70e0: 6d 65 20 22 22 5d 0a 20 20 69 66 20 7b 21 5b 73  me ""].  if {![s
70f0: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6e 61  tring length $na
7100: 6d 65 5d 7d 20 7b 20 70 75 74 73 20 22 4e 6f 20  me]} { puts "No 
7110: 66 69 6c 65 6e 61 6d 65 20 67 69 76 65 6e 2e 22  filename given."
7120: 3b 20 62 72 65 61 6b 3b 20 7d 0a 20 20 71 75 65  ; break; }.  que
7130: 72 79 20 7b 0a 20 20 20 20 20 53 45 4c 45 43 54  ry {.     SELECT
7140: 20 75 75 69 64 0a 20 20 20 20 20 46 52 4f 4d 20   uuid.     FROM 
7150: 62 6c 6f 62 20 4c 45 46 54 20 4a 4f 49 4e 20 6d  blob LEFT JOIN m
7160: 6c 69 6e 6b 20 4f 4e 20 62 6c 6f 62 2e 72 69 64  link ON blob.rid
7170: 3d 6d 6c 69 6e 6b 2e 66 69 64 0a 20 20 20 20 20  =mlink.fid.     
7180: 20 20 20 20 20 20 20 20 20 20 4c 45 46 54 20 4a            LEFT J
7190: 4f 49 4e 20 66 69 6c 65 6e 61 6d 65 20 4f 4e 20  OIN filename ON 
71a0: 6d 6c 69 6e 6b 2e 66 6e 69 64 3d 66 69 6c 65 6e  mlink.fnid=filen
71b0: 61 6d 65 2e 66 6e 69 64 0a 20 20 20 20 20 57 48  ame.fnid.     WH
71c0: 45 52 45 20 6e 61 6d 65 20 3d 20 24 6e 61 6d 65  ERE name = $name
71d0: 0a 20 20 20 20 20 4f 52 44 45 52 20 42 59 20 72  .     ORDER BY r
71e0: 69 64 20 44 45 53 43 20 4c 49 4d 49 54 20 31 0a  id DESC LIMIT 1.
71f0: 20 20 7d 20 7b 20 68 74 6d 6c 20 5b 61 72 74 69    } { html [arti
7200: 66 61 63 74 20 22 24 75 75 69 64 22 5d 3b 20 7d  fact "$uuid"]; }
7210: 0a 7d 0a 0a 23 20 47 65 6e 65 72 61 74 65 20 61  .}..# Generate a
7220: 20 74 65 78 74 2f 75 72 69 2d 6c 69 73 74 20 66   text/uri-list f
7230: 6f 72 20 61 76 61 69 6c 61 62 6c 65 20 66 69 6c  or available fil
7240: 65 73 0a 70 72 6f 63 20 77 65 62 70 61 67 65 5f  es.proc webpage_
7250: 75 72 69 2d 6c 69 73 74 20 7b 7d 20 7b 0a 20 20  uri-list {} {.  
7260: 71 75 65 72 79 20 7b 0a 20 20 20 20 20 53 45 4c  query {.     SEL
7270: 45 43 54 20 66 69 6c 65 6e 61 6d 65 2e 6e 61 6d  ECT filename.nam
7280: 65 2c 20 75 75 69 64 0a 20 20 20 20 20 46 52 4f  e, uuid.     FRO
7290: 4d 20 62 6c 6f 62 20 4c 45 46 54 20 4a 4f 49 4e  M blob LEFT JOIN
72a0: 20 6d 6c 69 6e 6b 20 4f 4e 20 62 6c 6f 62 2e 72   mlink ON blob.r
72b0: 69 64 3d 6d 6c 69 6e 6b 2e 66 69 64 20 4c 45 46  id=mlink.fid LEF
72c0: 54 20 4a 4f 49 4e 20 66 69 6c 65 6e 61 6d 65 20  T JOIN filename 
72d0: 4f 4e 20 6d 6c 69 6e 6b 2e 66 6e 69 64 3d 66 69  ON mlink.fnid=fi
72e0: 6c 65 6e 61 6d 65 2e 66 6e 69 64 0a 20 20 20 20  lename.fnid.    
72f0: 20 47 52 4f 55 50 20 42 59 20 66 69 6c 65 6e 61   GROUP BY filena
7300: 6d 65 2e 6e 61 6d 65 20 20 4f 52 44 45 52 20 42  me.name  ORDER B
7310: 59 20 72 69 64 20 44 45 53 43 0a 20 20 7d 20 7b  Y rid DESC.  } {
7320: 20 70 75 74 73 20 22 24 6e 61 6d 65 3f 6e 61 6d   puts "$name?nam
7330: 65 3d 24 75 75 69 64 5c 6e 22 20 7d 0a 7d 0a 0a  e=$uuid\n" }.}..
7340: 23 20 49 6e 76 6f 6b 65 73 20 77 65 62 20 72 65  # Invokes web re
7350: 71 75 65 73 74 20 70 61 67 65 20 70 72 6f 63 73  quest page procs
7360: 0a 70 72 6f 63 20 77 65 62 70 61 67 65 5f 68 6f  .proc webpage_ho
7370: 6f 6b 20 7b 7d 20 7b 0a 20 20 23 69 66 20 7b 21  ok {} {.  #if {!
7380: 20 5b 61 6e 79 63 61 70 20 72 6f 5d 7d 20 7b 20   [anycap ro]} { 
7390: 62 72 65 61 6b 20 7d 0a 20 20 63 61 74 63 68 20  break }.  catch 
73a0: 7b 20 22 77 65 62 70 61 67 65 5f 24 3a 3a 77 65  { "webpage_$::we
73b0: 62 5f 6e 61 6d 65 22 3b 20 72 65 74 75 72 6e 20  b_name"; return 
73c0: 2d 63 6f 64 65 20 32 20 66 6f 75 6e 64 3b 20 7d  -code 2 found; }
73d0: 20 72 63 0a 20 20 69 66 20 7b 22 24 72 63 22 20   rc.  if {"$rc" 
73e0: 65 71 20 22 66 6f 75 6e 64 22 7d 20 7b 20 62 72  eq "found"} { br
73f0: 65 61 6b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 7d  eak continue }.}
7400: 0a 0a 0a 23 2d 2d 20 57 68 69 74 65 6c 69 73 74  ...#-- Whitelist
7410: 20 66 6f 72 20 53 51 4c 20 70 61 72 61 6d 73 0a   for SQL params.
7420: 23 20 4a 75 73 74 20 72 65 61 6c 69 7a 65 64 20  # Just realized 
7430: 74 68 69 73 20 69 73 20 72 65 64 75 6e 64 61 6e  this is redundan
7440: 74 3b 20 62 65 63 61 75 73 65 20 71 75 65 72 79  t; because query
7450: 20 7b 7d 20 61 63 63 65 70 74 73 0a 23 20 75 6e   {} accepts.# un
7460: 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 5c 24 76  interpolated \$v
7470: 61 72 6e 61 6d 65 73 20 61 73 20 70 61 72 61 6d  arnames as param
7480: 65 74 65 72 20 70 6c 61 63 65 68 6f 6c 64 65 72  eter placeholder
7490: 73 2e 0a 70 72 6f 63 20 73 71 6c 3a 3a 61 6c 6c  s..proc sql::all
74a0: 6f 77 65 64 20 7b 73 74 72 7d 20 7b 0a 20 20 20  owed {str} {.   
74b0: 72 65 74 75 72 6e 20 5b 72 65 67 65 78 70 20 7b  return [regexp {
74c0: 5e 5b 2d 61 2d 7a 41 2d 5a 30 2d 39 20 21 24 26  ^[-a-zA-Z0-9 !$&
74d0: 2f 28 29 7b 7d 3d 3c 3e 2c 2e 3b 3a 5f 2b 23 2a  /(){}=<>,.;:_+#*
74e0: 40 5d 2b 24 7d 20 24 73 74 72 5d 0a 7d 0a 23 2d  @]+$} $str].}.#-
74f0: 2d 20 41 6c 73 6f 20 70 72 6f 68 69 62 69 74 20  - Also prohibit 
7500: 72 65 67 65 78 20 73 70 65 63 69 61 6c 20 63 68  regex special ch
7510: 61 72 73 0a 70 72 6f 63 20 73 71 6c 3a 3a 61 6c  ars.proc sql::al
7520: 6c 6f 77 65 64 5f 72 65 67 65 78 70 20 7b 73 74  lowed_regexp {st
7530: 72 7d 20 7b 0a 20 20 20 72 65 74 75 72 6e 20 5b  r} {.   return [
7540: 72 65 67 65 78 70 20 7b 5e 5b 2d 61 2d 7a 41 2d  regexp {^[-a-zA-
7550: 5a 30 2d 39 20 21 24 26 2f 20 20 20 20 3d 3c 3e  Z0-9 !$&/    =<>
7560: 2c 2e 3b 3a 5f 20 23 20 40 5d 2b 24 7d 20 24 73  ,.;:_ # @]+$} $s
7570: 74 72 5d 0a 7d 0a 0a 0a 23 2d 2d 20 43 68 65 63  tr].}...#-- Chec
7580: 6b 20 66 6f 72 20 65 78 69 73 74 65 6e 63 65 20  k for existence 
7590: 6f 66 20 77 69 6b 69 20 70 61 67 65 0a 70 72 6f  of wiki page.pro
75a0: 63 20 73 71 6c 3a 3a 70 61 67 65 5f 65 78 69 73  c sql::page_exis
75b0: 74 73 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 20 71  ts {name} {.   q
75c0: 75 65 72 79 20 7b 53 45 4c 45 43 54 20 31 20 46  uery {SELECT 1 F
75d0: 52 4f 4d 20 74 61 67 20 57 48 45 52 45 20 74 61  ROM tag WHERE ta
75e0: 67 6e 61 6d 65 20 3d 20 28 27 27 77 69 6b 69 2d  gname = (''wiki-
75f0: 27 27 20 7c 7c 20 24 6e 61 6d 65 29 7d 20 7b 20  '' || $name)} { 
7600: 72 65 74 75 72 6e 20 31 20 7d 0a 20 20 20 72 65  return 1 }.   re
7610: 74 75 72 6e 20 30 0a 7d 0a 0a 0a 23 2d 2d 20 43  turn 0.}...#-- C
7620: 68 65 63 6b 20 69 66 20 65 78 61 63 74 20 66 69  heck if exact fi
7630: 6c 65 20 6e 61 6d 65 20 28 69 6e 63 6c 75 64 69  le name (includi
7640: 6e 67 20 70 61 74 68 29 20 65 78 69 73 74 73 20  ng path) exists 
7650: 69 6e 20 72 65 70 6f 73 69 74 6f 72 79 0a 70 72  in repository.pr
7660: 6f 63 20 73 71 6c 3a 3a 66 69 6c 65 5f 65 78 69  oc sql::file_exi
7670: 73 74 73 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 20  sts {name} {.   
7680: 71 75 65 72 79 20 7b 53 45 4c 45 43 54 20 31 20  query {SELECT 1 
7690: 46 52 4f 4d 20 66 69 6c 65 6e 61 6d 65 20 57 48  FROM filename WH
76a0: 45 52 45 20 6e 61 6d 65 20 3d 20 24 6e 61 6d 65  ERE name = $name
76b0: 7d 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 0a 20  } { return 1 }. 
76c0: 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 0a 23    return 0.}...#
76d0: 2d 2d 20 46 69 6e 64 20 66 69 6c 65 20 62 79 20  -- Find file by 
76e0: 62 61 73 65 6e 61 6d 65 0a 70 72 6f 63 20 73 71  basename.proc sq
76f0: 6c 3a 3a 66 69 6e 64 5f 66 69 6c 65 20 7b 70 61  l::find_file {pa
7700: 74 68 7d 20 7b 0a 20 20 20 69 66 20 7b 21 5b 73  th} {.   if {![s
7710: 71 6c 3a 3a 61 6c 6c 6f 77 65 64 5f 72 65 67 65  ql::allowed_rege
7720: 78 70 20 24 70 61 74 68 5d 7d 20 7b 20 72 65 74  xp $path]} { ret
7730: 75 72 6e 20 30 20 7d 0a 20 20 20 71 75 65 72 79  urn 0 }.   query
7740: 20 7b 53 45 4c 45 43 54 20 6e 61 6d 65 20 46 52   {SELECT name FR
7750: 4f 4d 20 66 69 6c 65 6e 61 6d 65 20 57 48 45 52  OM filename WHER
7760: 45 20 6e 61 6d 65 20 52 45 47 45 58 50 20 28 27  E name REGEXP ('
7770: 27 28 5e 7c 2f 29 27 27 20 7c 7c 20 24 70 61 74  '(^|/)'' || $pat
7780: 68 20 7c 7c 20 27 27 5c 24 27 27 29 7d 20 7b 20  h || ''\$'')} { 
7790: 72 65 74 75 72 6e 20 24 6e 61 6d 65 20 7d 0a 20  return $name }. 
77a0: 20 20 72 65 74 75 72 6e 20 22 22 0a 7d 0a 0a 0a    return "".}...
77b0: 23 2d 2d 20 43 68 65 63 6b 20 69 66 20 64 69 72  #-- Check if dir
77c0: 65 63 74 6f 72 79 20 65 78 69 73 74 73 0a 70 72  ectory exists.pr
77d0: 6f 63 20 73 71 6c 3a 3a 64 69 72 5f 65 78 69 73  oc sql::dir_exis
77e0: 74 73 20 7b 70 61 74 68 7d 20 7b 0a 20 20 20 69  ts {path} {.   i
77f0: 66 20 7b 21 5b 73 71 6c 3a 3a 61 6c 6c 6f 77 65  f {![sql::allowe
7800: 64 5f 72 65 67 65 78 70 20 24 70 61 74 68 5d 7d  d_regexp $path]}
7810: 20 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a 20 20   { return 0 }.  
7820: 20 71 75 65 72 79 20 7b 53 45 4c 45 43 54 20 6e   query {SELECT n
7830: 61 6d 65 20 46 52 4f 4d 20 66 69 6c 65 6e 61 6d  ame FROM filenam
7840: 65 20 57 48 45 52 45 20 6e 61 6d 65 20 52 45 47  e WHERE name REG
7850: 45 58 50 20 28 27 27 5e 27 27 20 7c 7c 20 24 70  EXP (''^'' || $p
7860: 61 74 68 20 7c 7c 20 27 27 2f 2e 2b 27 27 29 7d  ath || ''/.+'')}
7870: 20 7b 20 72 65 74 75 72 6e 20 31 20 7d 0a 20 20   { return 1 }.  
7880: 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 20 20 20   return 0.}..   
7890: 0a 23 2d 2d 20 72 65 74 75 72 6e 73 20 74 72 75  .#-- returns tru
78a0: 65 20 69 66 20 73 74 72 69 6e 67 20 63 6f 6e 74  e if string cont
78b0: 61 69 6e 65 64 20 69 6e 20 61 6e 6f 74 68 65 72  ained in another
78c0: 20 73 74 72 69 6e 67 0a 70 72 6f 63 20 73 74 72   string.proc str
78d0: 3a 3a 63 6f 6e 74 61 69 6e 73 20 7b 6e 65 65 64  ::contains {need
78e0: 6c 65 20 68 61 79 73 74 61 63 6b 7d 20 7b 0a 20  le haystack} {. 
78f0: 20 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b    return [expr {
7900: 2d 31 20 21 3d 20 5b 73 74 72 69 6e 67 20 66 69  -1 != [string fi
7910: 72 73 74 20 24 6e 65 65 64 6c 65 20 24 68 61 79  rst $needle $hay
7920: 73 74 61 63 6b 5d 7d 5d 0a 7d 0a 0a 23 2d 2d 20  stack]}].}..#-- 
7930: 77 72 61 70 70 65 72 20 66 6f 72 20 5b 73 74 72  wrapper for [str
7940: 69 6e 67 20 66 69 72 73 74 20 2e 2e 2e 5d 20 74  ing first ...] t
7950: 6f 20 73 75 70 70 6f 72 74 20 73 74 61 72 74 69  o support starti
7960: 6e 64 65 78 0a 70 72 6f 63 20 73 74 72 3a 3a 6e  ndex.proc str::n
7970: 65 78 74 20 7b 73 65 61 72 63 68 20 63 6f 6e 74  ext {search cont
7980: 65 6e 74 20 73 74 61 72 74 7d 20 7b 0a 20 20 20  ent start} {.   
7990: 23 20 63 75 74 20 6f 75 74 20 24 63 6f 6e 74 65  # cut out $conte
79a0: 6e 74 20 61 74 20 24 73 74 61 72 74 20 62 65 66  nt at $start bef
79b0: 6f 72 65 20 73 65 61 72 63 68 69 6e 67 0a 20 20  ore searching.  
79c0: 20 73 65 74 20 70 20 5b 73 74 72 69 6e 67 20 66   set p [string f
79d0: 69 72 73 74 20 24 73 65 61 72 63 68 20 5b 73 74  irst $search [st
79e0: 72 69 6e 67 20 72 61 6e 67 65 20 24 63 6f 6e 74  ring range $cont
79f0: 65 6e 74 20 24 73 74 61 72 74 20 5b 73 74 72 69  ent $start [stri
7a00: 6e 67 20 6c 65 6e 67 74 68 20 24 63 6f 6e 74 65  ng length $conte
7a10: 6e 74 5d 5d 5d 0a 20 20 20 69 66 20 5b 65 78 70  nt]]].   if [exp
7a20: 72 20 24 70 3e 3d 30 5d 20 7b 0a 20 20 20 20 20  r $p>=0] {.     
7a30: 20 73 65 74 20 70 20 5b 65 78 70 72 20 24 73 74   set p [expr $st
7a40: 61 72 74 2b 24 70 5d 0a 20 20 20 7d 0a 20 20 20  art+$p].   }.   
7a50: 72 65 74 75 72 6e 20 24 70 0a 7d 0a 0a 23 2d 2d  return $p.}..#--
7a60: 20 65 6e 63 6c 6f 73 65 20 73 74 72 69 6e 67 20   enclose string 
7a70: 69 6e 20 65 2e 67 2e 20 68 74 6d 6c 20 74 61 67  in e.g. html tag
7a80: 73 0a 70 72 6f 63 20 73 74 72 3a 3a 77 72 61 70  s.proc str::wrap
7a90: 20 7b 63 6f 6e 74 65 6e 74 20 73 65 61 72 63 68   {content search
7aa0: 20 62 65 66 6f 72 65 20 61 66 74 65 72 7d 20 7b   before after} {
7ab0: 0a 20 20 20 73 65 74 20 6c 65 6e 20 5b 73 74 72  .   set len [str
7ac0: 69 6e 67 20 6c 65 6e 67 74 68 20 24 73 65 61 72  ing length $sear
7ad0: 63 68 5d 0a 20 20 20 73 65 74 20 70 20 30 0a 20  ch].   set p 0. 
7ae0: 20 20 77 68 69 6c 65 20 7b 5b 65 78 70 72 20 5b    while {[expr [
7af0: 73 65 74 20 70 20 5b 73 74 72 3a 3a 6e 65 78 74  set p [str::next
7b00: 20 24 73 65 61 72 63 68 20 24 63 6f 6e 74 65 6e   $search $conten
7b10: 74 20 24 70 5d 5d 3e 3d 30 5d 7d 20 7b 0a 20 20  t $p]]>=0]} {.  
7b20: 20 20 20 20 73 65 74 20 63 6f 6e 74 65 6e 74 20      set content 
7b30: 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24  "[string range $
7b40: 63 6f 6e 74 65 6e 74 20 30 20 5b 65 78 70 72 20  content 0 [expr 
7b50: 24 70 2d 31 5d 5d 24 62 65 66 6f 72 65 24 73 65  $p-1]]$before$se
7b60: 61 72 63 68 24 61 66 74 65 72 5b 73 74 72 69 6e  arch$after[strin
7b70: 67 20 72 61 6e 67 65 20 24 63 6f 6e 74 65 6e 74  g range $content
7b80: 20 5b 65 78 70 72 20 24 70 2b 24 6c 65 6e 5d 20   [expr $p+$len] 
7b90: 32 30 30 30 5d 22 3b 0a 20 20 20 20 20 20 73 65  2000]";.      se
7ba0: 74 20 70 20 5b 65 78 70 72 20 24 70 2b 5b 73 74  t p [expr $p+[st
7bb0: 72 69 6e 67 20 6c 65 6e 67 74 68 20 22 24 62 65  ring length "$be
7bc0: 66 6f 72 65 2b 24 73 65 61 72 63 68 2b 24 61 66  fore+$search+$af
7bd0: 74 65 72 22 5d 5d 3b 20 23 20 73 6b 69 70 20 61  ter"]]; # skip a
7be0: 20 6c 69 74 74 6c 65 20 66 75 72 74 68 65 72 0a   little further.
7bf0: 20 20 20 7d 0a 20 20 20 72 65 74 75 72 6e 20 24     }.   return $
7c00: 63 6f 6e 74 65 6e 74 0a 7d 0a 0a 23 2d 2d 20 53  content.}..#-- S
7c10: 70 6c 69 74 20 73 74 72 69 6e 67 20 69 6e 74 6f  plit string into
7c20: 20 6c 69 73 74 20 6f 6e 20 64 65 6c 69 6d 69 74   list on delimit
7c30: 65 72 20 63 68 61 72 61 63 74 65 72 0a 23 20 28  er character.# (
7c40: 62 61 73 69 63 61 6c 6c 79 20 6a 75 73 74 20 74  basically just t
7c50: 75 72 6e 73 20 64 65 6c 69 6d 69 74 65 72 20 69  urns delimiter i
7c60: 6e 74 6f 20 73 70 61 63 65 29 0a 23 0a 70 72 6f  nto space).#.pro
7c70: 63 20 73 74 72 3a 3a 65 78 70 6c 6f 64 65 20 7b  c str::explode {
7c80: 64 65 6c 69 6d 20 73 74 72 7d 20 7b 0a 20 20 20  delim str} {.   
7c90: 73 65 74 20 72 20 22 22 0a 20 20 20 73 65 74 20  set r "".   set 
7ca0: 6c 65 6e 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67  len [string leng
7cb0: 74 68 20 24 73 74 72 5d 0a 20 20 20 77 68 69 6c  th $str].   whil
7cc0: 65 20 7b 2d 31 20 21 3d 20 5b 73 65 74 20 70 20  e {-1 != [set p 
7cd0: 5b 73 74 72 69 6e 67 20 66 69 72 73 74 20 24 64  [string first $d
7ce0: 65 6c 69 6d 20 24 73 74 72 5d 5d 7d 20 7b 0a 20  elim $str]]} {. 
7cf0: 20 20 20 20 20 73 65 74 20 72 20 22 24 72 20 5b       set r "$r [
7d00: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 73 74  string range $st
7d10: 72 20 30 20 5b 65 78 70 72 20 24 70 2d 31 5d 5d  r 0 [expr $p-1]]
7d20: 22 0a 20 20 20 20 20 20 73 65 74 20 73 74 72 20  ".      set str 
7d30: 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 73  [string range $s
7d40: 74 72 20 5b 2b 2b 20 70 5d 20 24 6c 65 6e 5d 0a  tr [++ p] $len].
7d50: 20 20 20 7d 0a 20 20 20 72 65 74 75 72 6e 20 5b     }.   return [
7d60: 6c 69 73 74 20 5b 73 74 72 69 6e 67 20 74 72 69  list [string tri
7d70: 6d 20 22 24 72 20 24 73 74 72 22 5d 5d 0a 7d 20  m "$r $str"]].} 
7d80: 20 20 0a 0a 23 2d 2d 20 45 78 74 72 61 63 74 20    ..#-- Extract 
7d90: 64 69 72 6e 61 6d 65 20 66 72 6f 6d 20 70 61 74  dirname from pat
7da0: 68 2f 66 69 6c 65 2f 6e 61 6d 65 0a 70 72 6f 63  h/file/name.proc
7db0: 20 73 74 72 3a 3a 64 69 72 6e 61 6d 65 20 7b 70   str::dirname {p
7dc0: 61 74 68 7d 20 7b 0a 20 20 20 72 65 74 75 72 6e  ath} {.   return
7dd0: 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24   [string range $
7de0: 70 61 74 68 20 30 20 5b 65 78 70 72 20 5b 73 74  path 0 [expr [st
7df0: 72 69 6e 67 20 6c 61 73 74 20 22 2f 22 20 24 70  ring last "/" $p
7e00: 61 74 68 5d 2d 31 5d 5d 0a 7d 0a 0a 27 0a        ath]-1]].}..'.